From 69864da878202cdee4302d9c8c752d2c90bbf7eb Mon Sep 17 00:00:00 2001 From: MLGTASTICa Date: Tue, 21 Nov 2023 23:54:44 +0200 Subject: [PATCH 01/48] p1 --- .../modules/mechs/interface/screen_objects.dm | 84 ++++++++++++++---- icons/mechs/mech_hud.dmi | Bin 9206 -> 9837 bytes 2 files changed, 69 insertions(+), 15 deletions(-) diff --git a/code/modules/mechs/interface/screen_objects.dm b/code/modules/mechs/interface/screen_objects.dm index 48acaff5c43..88e26ba20ad 100644 --- a/code/modules/mechs/interface/screen_objects.dm +++ b/code/modules/mechs/interface/screen_objects.dm @@ -1,8 +1,10 @@ // Screen objects hereon out. + +#define MECH_UI_STYLE(X) "" + X + "" /obj/screen/movable/exosuit name = "hardpoint" icon = MECH_HUD_ICON - icon_state = "hardpoint" + icon_state = "base" var/mob/living/exosuit/owner /obj/screen/movable/exosuit/proc/on_handle_hud(var/mob/living/exosuit/E) @@ -13,7 +15,10 @@ /obj/screen/movable/exosuit/radio name = "radio" - icon_state = "radio" + //icon_state = "radio" + maptext = MECH_UI_STYLE("RADIO") + maptext.x = 5 + maptext_y = 12 /obj/screen/movable/exosuit/radio/Click() if(..()) @@ -22,6 +27,7 @@ /obj/screen/movable/exosuit/hardpoint name = "hardpoint" + icon_state = "hardpoint" desc = "To activate additional hardpoint's options click on it with shift-button." var/hardpoint_tag var/obj/item/holding @@ -130,14 +136,20 @@ /obj/screen/movable/exosuit/eject name = "eject" - icon_state = "eject" + //icon_state = "eject" + maptext = MECH_UI_STYLE("EJECT") + maptext_x = 5 + maptext_y = 12 /obj/screen/movable/exosuit/eject/Click() if(..()) owner.eject(usr) /obj/screen/movable/exosuit/rename name = "rename" - icon_state = "rename" + //icon_state = "rename" + maptext = MECH_UI_STYLE("RENAME") + maptext_x = 1 + maptext_y = 12 /obj/screen/movable/exosuit/power name = "power" @@ -146,33 +158,47 @@ maptext_width = 64 maptext_x = 2 maptext_y = 20 - maptext = "power" + /obj/screen/movable/exosuit/power/on_handle_hud(var/mob/living/exosuit/E) . = ..() if(owner) var/obj/item/cell/C = owner.get_cell() - if(C && istype(C)) maptext = "[round(C.charge)]/[round(C.maxcharge)]" - else maptext = "CHECK POWER" + if(C && istype(C)) maptext = MECH_UI_STYLE("[round(C.charge)]/[round(C.maxcharge))]" + else maptext = MECH_UI_STYLE("CHECK POWER") /obj/screen/movable/exosuit/rename/Click() if(..()) owner.rename(usr) /obj/screen/movable/exosuit/toggle name = "toggle" - var/toggled + var/toggled = FALSE + +/obj/screen/movable/exosuit/toggle/LateInitialize() + . = ..() + update_icon() + +/obj/screen/movable/exosuit/toggle/update_icon() + . = ..() + icon_state = "[initial(icon_state)][toggled ? "_enabled" : ""]" + maptext = FONT_COLORED(toggled ? COLOR_WHITE : COLOR_GRAY, initial(maptext)) /obj/screen/movable/exosuit/toggle/Click() if(..()) toggled() /obj/screen/movable/exosuit/toggle/proc/toggled() toggled = !toggled - icon_state = "[initial(icon_state)][toggled ? "_enabled" : ""]" + update_icon() return toggled /obj/screen/movable/exosuit/toggle/air name = "air" - icon_state = "air" + //icon_state = "air" + icon_state = "small_important" + maptext = MECH_UI_STYLE("AIR") + maptext_x = 9 + maptext_y = 13 + height = 12 /obj/screen/movable/exosuit/toggle/air/toggled() owner.use_air = ..() @@ -180,7 +206,12 @@ /obj/screen/movable/exosuit/toggle/maint name = "toggle maintenance protocol" - icon_state = "maint" + //icon_state = "maint" + icon_state = "small" + maptext = MECH_UI_STYLE("MAINT") + maptext_x = 5 + maptext_y = 13 + height = 12 /obj/screen/movable/exosuit/toggle/maint/toggled() owner.maintenance_protocols = ..() @@ -188,7 +219,10 @@ /obj/screen/movable/exosuit/toggle/hardpoint name = "toggle hardpoint lock" - icon_state = "hardpoint_lock" + //icon_state = "hardpoint_lock" + maptext = MECH_UI_STYLE("GEAR") + maptext_x = 5 + maptext_y = 12 /obj/screen/movable/exosuit/toggle/hardpoint/toggled() owner.hardpoints_locked = ..() @@ -196,7 +230,10 @@ /obj/screen/movable/exosuit/toggle/hatch name = "toggle hatch lock" - icon_state = "hatch_lock" + //icon_state = "hatch_lock" + maptext = MECH_UI_STYLE("LOCK") + maptext_x = 5 + maptext_y = 12 /obj/screen/movable/exosuit/toggle/hatch/toggled() if(!owner.hatch_locked && !owner.hatch_closed) @@ -210,7 +247,10 @@ /obj/screen/movable/exosuit/toggle/hatch_open name = "open or close hatch" - icon_state = "hatch_status" + //icon_state = "hatch_status" + maptext = MECH_UI_STYLE("CLOSE") + maptext_x = 4 + maptext_y = 12 /obj/screen/movable/exosuit/toggle/hatch_open/toggled() if(owner.hatch_locked && owner.hatch_closed) @@ -220,6 +260,15 @@ to_chat(usr, SPAN_NOTICE("The [owner.body.hatch_descriptor] is now [owner.hatch_closed ? "closed" : "open" ].")) owner.update_icon() +/obj/screen/exosuit/toggle/hatch_open/update_icon() + . = ..() + if(owner.hatch_closed) + maptext = MECH_UI_STYLE("OPEN") + maptext_x = 5 + else + maptext = MECH_UI_STYLE("CLOSE") + maptext_x = 4 + // This is basically just a holder for the updates the exosuit does. /obj/screen/movable/exosuit/health name = "exosuit integrity" @@ -268,7 +317,12 @@ //Controls if cameras set the vision flags /obj/screen/movable/exosuit/toggle/camera name = "toggle camera matrix" - icon_state = "camera" + //icon_state = "camera" + icon_state = "small_important" + maptext = MECH_UI_STYLE("SENSOR") + maptext_x = 1 + maptext_y = 13 + height = 12 /obj/screen/movable/exosuit/toggle/camera/toggled() if(!owner.head) diff --git a/icons/mechs/mech_hud.dmi b/icons/mechs/mech_hud.dmi index 029be31e2e4087d2e3f3afc2c68296bdd84ff934..2d86a4aaef961ab80e2f5f2714456c557eff8202 100644 GIT binary patch literal 9837 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 literal 9206 zcmZvCWk8eB+xJF;Qc?=i2#ADA4;URHsUS!Rf|Rtxh`|J;VIUyg${0vV_XLBGuCdYK zsL`G8{6FvWydU1@!_MyA=eo~zcCP+iceH_?CN&i+6#xLBexjxJjPO1G??XXG7+FP} z7XSdDc7Tzox7wR`wq8yi-cIgr001OAC%Mn9^C6x3s?3O^PO{aZ8dr=HL1mF+6e#y+^5QHW^uNjLOIF3=#&qz0O{|e}rc74KMFLI)5M2rD~xo(LU!O27SN45LS8b2vTy;;-KM@za-St`_^3?f$Fc7BQw~y%ppa1|az!NoPBS_96xwU^L(uO0shE#%gSRWGI?iT81QH^pf6pYJcr8M&*B|#4Jh>4mh zJ@}=b#U(_4@PVvG&+rGElJY!P8M%AfLpxGNB^5WjlAXu*@7(#c8S{x=4NE?7C$}kZ zd-Koc*7QsKDUjrNwoTl@-ghATT=FL5|B1FG-RNV+++I4s{92IV0V3XxKWK}XJ;SBz_Xm|g!Ir$n+uf9+;Z_-5goyo zAm=(W;iLDK0?TOmkOFB>_A0aT#qK0t_72(7aiP+2=dc{J@(9&PnuR1yjB!FJEv z+rbxC#~r`h0*^tjJ1Q$_p-^c1oZ|8HJ9dTZjEszg&6dfNRZT^+kjul#miDtPPgHgF zqt?qKtQKOFT^urx0=Ay5mtnTS2L-eXZO5}+?}^Dl_95G|Z6`C^!H7#Y4-dLE@8%+$ zqKpi>8hU&SF26@%6>{l=jU0Z=LB45szeSa-}b))Q@8_k)hDTPRiu)3n}%>XGek$jl-%oqh~na}y5U^EYn&8I8LV1- zsrBV|)mmup``)4lI+5vQyDH6mWy88EVHtofSlTWIefi--RXUiO60H;#CPB|bllI#^mI*p}2(b3?VParlFtxNK1?cGLG@i=q8u0lNqa8+qAt3; z!6FI(*gH5>H#SC1O}zx578eV%21iL!O&W~*`UeNu@W(t8yz>MN@?0I_2JC90unq2k zv!AMFZZx;IZ-KaE2QV1cVgzF5@jpgZR!7TXVq(%R;*TD^CmddcSFmK_;i1p5_Rux|lcj7l z%!-fb@kd7Bn#{@WiMkYfxtdZAw4-~1=DaORO-bV;510Gz5Am?zf6vV(@Dj!juUo)2 z!VdTpi1y^IX0mg0eFHUhvCo=QDZ2L|+xB0cc?N2lSN~_1eB4BP-#siDM^=z?r%*R$ zpg)`+>h=i{j5~hGlg~ofCoS<0cHlT^mWu{Thu_wRKgRXEO`C^jesxuFHejRNbS~mH zJG*P+f{UgSR=Sul8Ffg}9sPhPb6{A5M3_1DKGvNVT|d{y$3t|>h9|!n@_dLzA{k9q z3+2TSZhO0u81Whp;Xg71Kg<@t<;`bB*4Nh)xu*S~5Ihj2rl(W-UC34LYaat^vY;7v zmNbxvy#+kpnu*on5Bu`v9{xBiEUeq^F}p%YG>qu?671>Ir!u~qroZD{U0iPGY;Vo9 zG(vWHz!wX&{fGayyI*Li4(_O)YmsHMv$A=q}j~+h`H7mEz z{!&;7nx1L#BgS&xx#I-k1t<5+U!3m0KOUwUnGvJQrEom|MNuQ%+FTnX7jEg2*D)0M z`6HM95mFy2R15WCj@8TjdZ**$r;VmzbVnk|k%ZXDOBa#8$=;8U z&>_*Ua$EulJ*bfZhL38m?>?k~sw7JlaG`m=5&Np-l_!VI*IwH{U9=pu-zZw~>P>NT zxRc|W%OR5XTpnIOxstJ``{sik-4sx+U~pm$>CtaR)|T5pF-X+7DifPYAZBow!u4r$ z%vtsGvQZdJ9P?0Ae@qt=96Ifp@BgHFo3IW`Mol)U2mNgKaK+sY@04o+gPVmNcj31Tmu zDl}>294v}mtbVDRH1LE zr)7usmqJUt8G^mLuLLV;o{@#cHAjq&j{fs0tFLw*qbht0OOuq}WKD72zCEO&Y$l-9 z#^K!_Jo%)JzZAMbLlGs;M>_g&=;TC(;Lq4nK0-+H1==cZ4!$kcwfWZ3+>FU*{8_|? z1a9=!cD3Ix4}LLdB2t9W4=1MTK}pB}Mt#3<=kBcWW0R7vFh;XJ($lXiJL*?KIV z0Rfog;&1rc%G|O51wqVikR;K-z(6y0W7C{7f^M@jl6!HB)F=`dFx+mWOv-|78)|cW z#gjiYDsJe4Wg%xIiPaK_<1$sdYd|N=LnBDRO#km*6fsq(`VS!Kcb-L9s5QN(l5$m) zO#Xk9C0CPvS4Q+JpC$t;R60=KwgPjH&A_w(2*LnGTip_Hs;))CNJ8r{#R*8!{sJlo zful79NPSK2A-2a|6PT$gF3uhdfSq>j2#4?dH!T~$?XcBqh%l3F5o~6%lgR! z;L6c!@qZ=6I6e4`l!?``nAcD!wYGA5*-LgwYUZkr9`oFJA^@dFaU-bezI`J?1@e~eu)#~++;w%E@JJKut!^!% zW!R6t8#mIkv&UjSdzsN2rV5qJKQk85l$9x<>Yd2gg*OO4mCK>=_$IeR zV&BTM%9Z`b7|ZIx8dxB4d|X`qi!%SKZf;Hz9PddwmjXnvKPP(c4ENUpCs(#yhD{FJ z1_lHgm-3Fj;u2e@1^5!m!Co0>Qc-5uy-|$dNR^D zCk7%peSgd4u!62)bD8bz^QIsU&FXh>FMHr`r zN)QaiEQeDc?Kp=9HC?`BVJpAVfQ!}HA5^YoR~dK^qUX3Cn5>@uAr%H3vKaGDR7?)v zkQ7gC@qJ+I+Y@Vqed1u?-uxKNM76mO;+mJ2cNU+MYd8t?IdhDp5Q11@zBz5_|iRr z?caKJAN4h4{$QfB(_S)7FaV9A5?)Hr{0t8F9l+^&Vd zvN8aEACARIg>H6ayr#p)ayI0FXf>s&g|wypYQBM{*Abxul$7xO>dT#Ln=1b+5>AHc zN?CF+hxYIl!Mf0qlz#~Xga z7T-1c**G{RFq8Ld&vMEJiU+I=pr8a0=Pr}P0K#bB+m-hDOT{ry@ZgxxPfDk`<)9#{ zPfnc51fHmY^nB1yml6v-5ki1@iMyy|q{>IWy&PzFlIph|2(BQy-M{iIC=+YwdzXX! zVASFHXz`#k$ugGsI}gBwZ^cl3-0AuL#KZ(^in(zcNYVSugI`3(_;k$u+GZdR!-3t@ z7_MXY_E)mScGb4cJsL|vNLI-mppFq3t_2aWj&c%r$^I1hdSl83ibe7~OEL4r)TpYe z0$P&{S5lTf%j5mpb3K)k!K_Zz$N*PHJfxi!XkubAgU?#4F*HX$Lps(?2+rx3#rM)R z<8^oTrSWG!(a4ztw!tXUwVV6wUdd<2m2Qo^iInL zH~~SOr!=q)Nb_a-?B}5z)oC2xD zTb50Kh8**NHOpIq^~>hgKwRDJ0XJdoy^g)KA8`&H?B_Tq%TxO3@X^UY7WS+)pXK(PEWSBBa{lOqBv3KwI!A~G*nuTaup>JH?{#thQ-bMDqHN2wr@m)e(Iq?L;Q&X7+ zNA61K?6rL$)fX_jp3Zhy5x>f-FZy<&OXaEbT~##gX$B@p8RJRtE^@9a0{uA;*9OQp zeLvkLI55Q-f5l(+%|kmxArBRbTSb&xzqURhgjxs$oK?QT!^vrC(lYfv$C;TEHmTl; zQ`I4^`T251ylwDzjtBkUQXz$)ReejecDX_~+iqy=z-g`>p6N=e)y?>!k21eCf>(pR zFzPXwg~i<5+{gNu8qSg}y>L489+ZJf*^ZREIb6@n(wzHzz~a}FO%NyN?D8#r=(Eh1UB z=vm?6)Xxq=8lZfevIE);N{IEypGskOcy@2N1Q{G>jy46&vX{yPUo^I4|Gd%LSm@nJ zLBzW%!&QFxI^bT6AI2axyR^2|R)dhE+-AJgbr&0wnU{5trOG#yTw~fi@Ewt{E`PC~ zvf`@d^e=DWBl_>;C3=%|B_6})JghFuuRN60D8&_DlRa7z@73uz{4Z-?PstY?P)V5F zOy?lc98<6h%{6&|Jz|ZHfqmB3JaHNZI;NlfV2N6}u~TxRCv&+jlfC3NcZ<9-2m^*~EIHIaVdnHXt#|%Z-qZxO!UC%;l|}HS{ekbuPhj)^{kd_xCbu z^5OSKNQMj9-mEyS$ydCkd*f^*n)Y^x#srRJD^-}$sTr@w;tz6u`6yX!n>?EFc8iRJ zhZ!Pz)pa!~@;hv1#u3@1hU2li{>pW$-ithG^zrtUpXDir!irO!vzuF?a+UBo1$xq~ zSg$4;bOjArf?{KgUT%P$leMP_B?; z3rLG=3CeLpSBi=WOD(U-)1VV*Xql23GC?YiRLuMT%R^G3#kX~Cg znA#-km&E16rs78<9|CowNv6yKrto2meO%Nz4an;>ooobsR+W!;sJqV2n$KS%NRfZb zoJ22F*I%yJmx4ZRz%;RA3k6}NlFphG+wn#rd?O~YJb*&5mNyaa4AHi0{9`6z?NogP zo~8J#WPN=YTnOUfyegRcWRw<_`RqZA*Q`a8HbNcQH3i<{zAkDGBLENPi42 z@uh(6Wa(SF)SDZ)TLjFPNK0GV*10m0&D=G(vP4s$*Mp6^Dc2N3toOGIH`#VHlq&Gu zhNI11OG`_p78VC3_nx;uB9hXXBx22miw#Z)eU^4xM>!z?QF_*Vaa-BcIt;ue%8_2h{cV zs4JfVgD3%1A3&4$(0PNl*ruUMLJWI^n7!63K>0Lnd^R*8=&wF=>}|sNxZ2|E~*rJ6F}9aDs#HsDO_giz#f+Y7|8oyB)LvY#lQYoBFNN&O9%5`OYM?XMgE zfMbBTlI6rX6?VeN5693T$4xcTBl#MnoS3EfXJp6bH{EHwxqq^y!mrPI-SsvNrozRw zZ#zlKsn*>9rI{6S#>!mjLIeAR1dBPqknYfg>Szg&5$r2 zIx5%pbw1wZOg{WXE%fl|1|i2GxeTxabyNA zdBpL__~KBWqt!P7DX`Ulv>wFzV!BQ&R`r9pK_J%5Xq!|5!rU7;`L;@vo&<+ zX_Qp>e;2d=Q}c$KWr9~za$Z*pw&jGSP% zZef5)w6sjqScpkKmy6Vc34tEKwi&W{^d{SKx^#PlFqFl zh$BUoxp@>Xbjn}O-r2d7BTYA#{~S&T!!mo5(G8&LWstoqAf@!#L? z*CHBhLf*Z-kymZ^DxRtha>+1E#z#g*=CL+%Pr5ugxKLh{^h@99$~ko!fuD<;8xeZg zgLpoAZ-0Nk@n1zGH{+1|qK}SHDPcT~vS_*3j*M}!*sGl(Islh#4|qt0Ez!}0gyf)$ zZQW}w1@Qo3&T28^8yq})th_t+Tz_HY%hQVeQr8&*RNUxKKzvfQf3}eYUpvhO?~o^M zEhw+Ox;~qP91LqJVBQ&N99u7*@5+&}9Ysb)D8WM;@uS2rXMiV`lY=z|Ors@zadOhg z1~mU*0@RvMykW7bCbqhd!I-JGS6I|6e0-WF>OXNw z!-7x!`y9ut9y|GFV!{@n&fv4vB0#J09ZUqmi48M&aS;>-jUlSv+!u800t>jE6T~yj zJD(%xM`VoeL>(7s(B}SLcyr>HqK`Fbp7Jd9^*Qq}ipVz8&AK9Q({nZt=a5g)KZ2Nj z&~(m4bYfwiSd)K)G(CbK7DAy_`Pmp<@dEH;<`kt@#BhTa6Floi$QZ+|?$r|8KfXgy?K>R|B-}DdJoz%2 zT(yw~dv@O**K^gf4F3nWl8ODlc6|%Upy4Q1kLaX4q9d=>x%KHy?Q07F7frgLOC=Tm z54eoAO38~d$kCJo0ahL{l&dqN9+cmYld(~uBiErL^n)N7|)qR9D*DgBor=a!(YA=f;G{;IkP1vGK*sl`^UDWdbiQGIH{n zhNn8hqM`v4A}g!Rq7zeeAH!sl16)NiUYm_8Sb7>_M zO>PE<1uJ}>j-UaBSevMYOVCi}PONe7x$0txciOHzu?TV)^?3%A)?d!XWn*+W1`GPv z@EQEChR-hyCNry}wRJOCb8T(SNjfjjmht?eRSOiKSIO$5)0Px`WF8Gu4$$g}pseuI zIzbv`c+>ez@=&xn&Mm=8!L0sbEDa=`Yeh)?c!K%cKp?kaCRsG-m#+O{M8Fn9J!o&) zzlFb6R7fqKm(Mc)0IN6IA34d3#$A@sKh#=YlG3qzd}naGI9PM&I7O3|TT=JjV3g2b zqdTX`mExjL17~8$4q}xUr&bl!sh&5_&?gQ>hp&%#s-yCg;Mj)+SM5O^7r8?UyO&#$ z59v!LH(OkltW9!dqaN~Wno#fGnBngvbctq*qBKh|L27cmT<+UQaf3oMoE6yRGAc~8 zhlxSdsO>jRh4AQ*tV^CFK?eGv;Jel)oI~}O&UG;=1+eXq>+^ymCMhED<-uq-Zr=>r z$*Y;*9rR&e&Tnh}S3Fxqf8O>bZ@b)SI@9@F+u37)Y29``&~>#4NeDgLB~$h8;zUP< zV9qKzLAS2p!x=>g!8gsp_=fEQ`8A#$P!=79Moj&xq;^~a{`kGHSU>2Bt)c}4#{7I8 zQ(Oq#)zd6OI@V9#t9H$+q6a4D!=us>g}X>=JI*QzCTg?~2|$pj@eh?BNM!TYJ)#Jw z>m+I>ENwnPkJINUvwP=_G+3jBuiFbbh8N$mc1ktK@A1c@G zyHY5!sd)V}Q+yBs6a26FAM^8Ek27>er(_IeJ?3F*sBmtA{Z&}DMEvu9)Bi=J!k_&8 zbRTD1bB~XhV6xl^!+}vMZbVgJ2KA~48EbfQzr8D`iasw@)Bg{8|4*Lq|FH4LOd@;^ zdU@glW~aj)d2k>5o>$O)_YK99w2;IpVaq=p1kvbfmfaXHd7$rU1g&rMWLcp^WsKt1 zIj>KC2g{w0BLe|vTi3hrEx+x+>vQ0I+jh`7r@On`ENc{&{=?RrK@5xD#1q0Inv$c8 z(0cS~XHS55e7Vvk06=8^?_B_a&r!$ah>ktIt(v^6og_HBRO;OMA)=%Hco}hhG2qvJ zsox+i9U_(>DDm?-Xin+G0j={dRAU%mrTytFKLJK zfuPg1A#KPJ>6R7|3Ky-x6y$_2dQ<3Yx47`rScAW7B2kt{y1a=h~rxiYM>Ga#FKz zHGhhrK)*e6`LDlr6+77G_jl7I?#%_{)m+}<&WDW?Jnq*HXWj`(`_YJ4bz9raWVE25 zEo??#m1NARabNyydb7jL9MFCiR*!EPt3JNEJn!#2-D$aABL_@(gea0)yFZm<;4uBV zPF(8$;ug+=_%8&jgC#wILo(C83xf^-#b`vZDWLN61-C z+SOO$^Gn^9A7m!2s~%{Oq@JnjJW Date: Thu, 23 Nov 2023 03:07:04 +0200 Subject: [PATCH 02/48] p2 --- code/modules/mechs/_mech_defines.dm | 4 +++ .../modules/mechs/interface/screen_objects.dm | 21 +++++++++++++++ code/modules/mechs/mech.dm | 22 +++++++++++++++ code/modules/mechs/mech_interaction.dm | 5 ++++ code/modules/mechs/mech_life.dm | 27 ++++++++++++++----- 5 files changed, 72 insertions(+), 7 deletions(-) diff --git a/code/modules/mechs/_mech_defines.dm b/code/modules/mechs/_mech_defines.dm index 1bde101c220..5f6ccd7b0a6 100644 --- a/code/modules/mechs/_mech_defines.dm +++ b/code/modules/mechs/_mech_defines.dm @@ -51,3 +51,7 @@ GLOBAL_LIST_INIT(mech_damage_overlay_cache, new) GLOBAL_LIST_INIT(mech_image_cache, new) GLOBAL_LIST_INIT(mech_icon_cache, new) GLOBAL_LIST_INIT(mech_weapon_overlays, icon_states(MECH_WEAPON_OVERLAYS_ICON)) + +#define MECH_POWER_OFF 0 +#define MECH_POWER_TRANSITION 1 +#define MECH_POWER_ON 2 diff --git a/code/modules/mechs/interface/screen_objects.dm b/code/modules/mechs/interface/screen_objects.dm index 88e26ba20ad..79de5e02360 100644 --- a/code/modules/mechs/interface/screen_objects.dm +++ b/code/modules/mechs/interface/screen_objects.dm @@ -134,6 +134,23 @@ owner.clear_selected_hardpoint() else if(owner.set_hardpoint(hardpoint_tag)) icon_state = "hardpoint_selected" + +/obj/screen/exosuit/toggle/power_control + name = "Power control" + icon_state = "small_important" + maptext = MECH_UI_STYLE("POWER") + maptext_x = 3 + maptext_y = 13 + height = 12 + +/obj/screen/exosuit/toggle/power_control/toggled() + . = ..() + owner.toggle_power(usr) + +/obj/screen/exosuit/toggle/power_control/update_icon() + toggled = (owner.power == MECH_POWER_ON) + . = ..() + /obj/screen/movable/exosuit/eject name = "eject" //icon_state = "eject" @@ -334,6 +351,10 @@ owner.head.active_sensors = ..() to_chat(usr, SPAN_NOTICE("[owner.head.name] advanced sensor mode is [owner.head.active_sensors ? "now" : "no longer" ] active.")) +/obj/screen/movable/exosuit/toggle/camera/update_icon() + toggled = owner.head.active_sensors + . = ..() + /obj/screen/movable/exosuit/needle vis_flags = VIS_INHERIT_ID icon_state = "heatprobe_needle" diff --git a/code/modules/mechs/mech.dm b/code/modules/mechs/mech.dm index 8fa752ca3bf..f91721ad405 100644 --- a/code/modules/mechs/mech.dm +++ b/code/modules/mechs/mech.dm @@ -73,6 +73,8 @@ var/obj/screen/movable/exosuit/toggle/power_control/hud_power_control var/obj/screen/movable/exosuit/toggle/camera/hud_camera + var/power = MECH_POWER_OFF + // Strafing - Is the mech currently strafing? var/strafing = FALSE @@ -80,6 +82,26 @@ for(var/mob/i in pilots) to_chat(i, msg) +/mob/living/exosuit/proc/toggle_power(mob/living/user) + if(power == MECH_POWER_TRANSITION) + to_chat(user, SPAN_NOTICE("Power transition in progress. Please wait.")) + else if(power == MECH_POWER_ON) //Turning it off is instant + playsound(src, 'sound/mecha/mech-shutdown.ogg', 100, 0) + power = MECH_POWER_OFF + else if(get_cell()) + //Start power up sequence + power = MECH_POWER_TRANSITION + playsound(src, 'sound/mecha/powerup.ogg', 50, 0) + if(do_after(user, 1.5 SECONDS, src) && power == MECH_POWER_TRANSITION) + playsound(src, 'sound/mecha/nominal.ogg', 50, 0) + power = MECH_POWER_ON + else + to_chat(user, SPAN_WARNING("You abort the powerup sequence.")) + power = MECH_POWER_OFF + hud_power_control?.queue_icon_update() + else + to_chat(user, SPAN_WARNING("Error: No power cell was detected.")) + /* diff --git a/code/modules/mechs/mech_interaction.dm b/code/modules/mechs/mech_interaction.dm index aee217d58ed..b1c0d18cdb6 100644 --- a/code/modules/mechs/mech_interaction.dm +++ b/code/modules/mechs/mech_interaction.dm @@ -49,6 +49,10 @@ if(A.loc != src && !(get_dir(src, A) & dir)) return + if(!get_cell()?.checked_use(arms.power_use * CELLRATE)) + to_chat(user, power == MECH_POWER_ON ? SPAN_WARNING("Error: Power levels insufficient.") : SPAN_WARNING("\The [src] is powered off.")) + return + if(!arms) to_chat(user, SPAN_WARNING("\The [src] has no manipulators!")) setClickCooldown(3) @@ -452,6 +456,7 @@ return TRUE to_chat(user, SPAN_NOTICE("You start removing [cell] from \the [src].")) if(do_mob(user, src, 30) && cell == body.cell && body.eject_item(cell, user)) + power = MECH_POWER_OFF body.cell = null return diff --git a/code/modules/mechs/mech_life.dm b/code/modules/mechs/mech_life.dm index 74cb759ce44..5b16a75e480 100644 --- a/code/modules/mechs/mech_life.dm +++ b/code/modules/mechs/mech_life.dm @@ -13,13 +13,22 @@ update_pilots() if(radio) - radio.on = (head && head.radio && head.radio.is_functional()) + radio.on = (head && head.radio && head.radio.is_functional() && get_cell()) - body.update_air(hatch_closed && use_air) + var/powered = FALSE + if(get_cell()) + powered = get_cell().drain_power(0, 0, calc_power_draw()) > 0 + + if(!powered) + //Shut down all systems + if(head) + head.active_sensors = FALSE + for(var/hardpoint in hardpoints) + var/obj/item/mech_equipment/M = hardpoints[hardpoint] + if(istype(M) && M.active && M.passive_power_use) + M.deactivate() - if((client || LAZYLEN(pilots)) && get_cell()) - var/obj/item/cell/c = get_cell() - c.drain_power(0, 0, calc_power_draw()) + body.update_air(hatch_closed && use_air) updatehealth() if(health <= 0 && stat != DEAD) @@ -28,8 +37,12 @@ lying = FALSE // Fuck off, carp. handle_vision() -/mob/living/exosuit/get_cell() - return body?.get_cell() +/mob/living/exosuit/get_cell(force) + RETURN_TYPE(/obj/item/cell) + if(power == MECH_POWER_ON || force) //For most intents we can assume that a powered off exosuit acts as if it lacked a cell + return body ? body.cell : null + return null + /mob/living/exosuit/proc/calc_power_draw() //Passive power stuff here. You can also recharge cells or hardpoints if those make sense From 9b6c0cccfc0ed587455e806331acfb91d069c2c8 Mon Sep 17 00:00:00 2001 From: MLGTASTICa Date: Thu, 23 Nov 2023 03:29:04 +0200 Subject: [PATCH 03/48] sisyphus struggle --- code/modules/mechs/equipment/_equipment.dm | 7 +++++++ code/modules/mechs/interface/screen_objects.dm | 13 +++++++------ code/modules/mechs/mech.dm | 4 ++-- 3 files changed, 16 insertions(+), 8 deletions(-) diff --git a/code/modules/mechs/equipment/_equipment.dm b/code/modules/mechs/equipment/_equipment.dm index d7dc768d600..4ac73044b50 100644 --- a/code/modules/mechs/equipment/_equipment.dm +++ b/code/modules/mechs/equipment/_equipment.dm @@ -19,6 +19,13 @@ var/active_power_use = 1 KILOWATTS // How much does it consume to perform and accomplish usage var/passive_power_use = 0 // For gear that for some reason takes up power even if it's supposedly doing nothing (mech will idly consume power) var/mech_layer = MECH_COCKPIT_LAYER //For the part where it's rendered as mech gear + var/active = FALSE + +/obj/item/mech_equipment/proc/activate() + active = TRUE + +/obj/item/mech_equipment/proc/deactivate() + active = FALSE /obj/item/mech_equipment/attack() //Generally it's not desired to be able to attack with items return 0 diff --git a/code/modules/mechs/interface/screen_objects.dm b/code/modules/mechs/interface/screen_objects.dm index 79de5e02360..0c9729bda02 100644 --- a/code/modules/mechs/interface/screen_objects.dm +++ b/code/modules/mechs/interface/screen_objects.dm @@ -6,6 +6,7 @@ icon = MECH_HUD_ICON icon_state = "base" var/mob/living/exosuit/owner + var/height = 20 /obj/screen/movable/exosuit/proc/on_handle_hud(var/mob/living/exosuit/E) if(E) owner = E @@ -17,7 +18,7 @@ name = "radio" //icon_state = "radio" maptext = MECH_UI_STYLE("RADIO") - maptext.x = 5 + maptext_x = 5 maptext_y = 12 /obj/screen/movable/exosuit/radio/Click() @@ -135,7 +136,7 @@ else if(owner.set_hardpoint(hardpoint_tag)) icon_state = "hardpoint_selected" -/obj/screen/exosuit/toggle/power_control +/obj/screen/movable/exosuit/toggle/power_control name = "Power control" icon_state = "small_important" maptext = MECH_UI_STYLE("POWER") @@ -143,11 +144,11 @@ maptext_y = 13 height = 12 -/obj/screen/exosuit/toggle/power_control/toggled() +/obj/screen/movable/exosuit/toggle/power_control/toggled() . = ..() owner.toggle_power(usr) -/obj/screen/exosuit/toggle/power_control/update_icon() +/obj/screen/movable/exosuit/toggle/power_control/update_icon() toggled = (owner.power == MECH_POWER_ON) . = ..() @@ -181,7 +182,7 @@ . = ..() if(owner) var/obj/item/cell/C = owner.get_cell() - if(C && istype(C)) maptext = MECH_UI_STYLE("[round(C.charge)]/[round(C.maxcharge))]" + if(C && istype(C)) maptext = MECH_UI_STYLE("[round(C.charge)]/[round(C.maxcharge)]") else maptext = MECH_UI_STYLE("CHECK POWER") /obj/screen/movable/exosuit/rename/Click() @@ -277,7 +278,7 @@ to_chat(usr, SPAN_NOTICE("The [owner.body.hatch_descriptor] is now [owner.hatch_closed ? "closed" : "open" ].")) owner.update_icon() -/obj/screen/exosuit/toggle/hatch_open/update_icon() +/obj/screen/movable/exosuit/toggle/hatch_open/update_icon() . = ..() if(owner.hatch_closed) maptext = MECH_UI_STYLE("OPEN") diff --git a/code/modules/mechs/mech.dm b/code/modules/mechs/mech.dm index f91721ad405..a4051d7863a 100644 --- a/code/modules/mechs/mech.dm +++ b/code/modules/mechs/mech.dm @@ -88,7 +88,7 @@ else if(power == MECH_POWER_ON) //Turning it off is instant playsound(src, 'sound/mecha/mech-shutdown.ogg', 100, 0) power = MECH_POWER_OFF - else if(get_cell()) + else if(get_cell(TRUE)) //Start power up sequence power = MECH_POWER_TRANSITION playsound(src, 'sound/mecha/powerup.ogg', 50, 0) @@ -98,7 +98,7 @@ else to_chat(user, SPAN_WARNING("You abort the powerup sequence.")) power = MECH_POWER_OFF - hud_power_control?.queue_icon_update() + //hud_power_control?.queue_icon_update() else to_chat(user, SPAN_WARNING("Error: No power cell was detected.")) From 1d0517e6543ac2894a025863bd36d64cfa3a9632 Mon Sep 17 00:00:00 2001 From: MLGTASTICa Date: Thu, 23 Nov 2023 04:47:32 +0200 Subject: [PATCH 04/48] Fixes and HUD additions --- code/modules/mechs/components/head.dm | 9 ++++--- code/modules/mechs/interface/_mech_HUD.dm | 8 ++++-- code/modules/mechs/interface/datum_HUD.dm | 1 + .../modules/mechs/interface/screen_objects.dm | 16 ++++++++---- code/modules/mechs/mech_interaction.dm | 26 +++++++++++++++++++ code/modules/mechs/mech_life.dm | 11 ++++---- 6 files changed, 55 insertions(+), 16 deletions(-) diff --git a/code/modules/mechs/components/head.dm b/code/modules/mechs/components/head.dm index d18ebd0684c..76581ec7cca 100644 --- a/code/modules/mechs/components/head.dm +++ b/code/modules/mechs/components/head.dm @@ -32,18 +32,19 @@ radio = locate() in src camera = locate() in src -/obj/item/mech_component/sensors/proc/get_sight() +/obj/item/mech_component/sensors/proc/get_sight(powered) var/flags = 0 - if(total_damage >= 0.8 * max_damage) + var/mob/living/exosuit/mech = loc + if(total_damage >= 0.8 * max_damage || (!powered && mech.hatch_closed)) flags |= BLIND else if(active_sensors) flags |= vision_flags return flags -/obj/item/mech_component/sensors/proc/get_invisible() +/obj/item/mech_component/sensors/proc/get_invisible(powered) var/invisible = 0 - if((total_damage <= 0.8 * max_damage) && active_sensors) + if((total_damage <= 0.8 * max_damage) && active_sensors && powered) invisible = see_invisible return invisible diff --git a/code/modules/mechs/interface/_mech_HUD.dm b/code/modules/mechs/interface/_mech_HUD.dm index 37f919e9b92..6c292a158ed 100644 --- a/code/modules/mechs/interface/_mech_HUD.dm +++ b/code/modules/mechs/interface/_mech_HUD.dm @@ -55,9 +55,13 @@ /mob/living/exosuit/proc/update_mech_hud_4(var/mob/living/M) if(M.client && M != src && HUDneed.len) if(M in pilots) - for(var/i in HUDneed) if(HUDneed[i]) M.client.screen |= HUDneed[i] + for(var/i in HUDneed) + if(HUDneed[i]) + M.client.screen |= HUDneed[i] + var/obj/screen/movable/exosuit/thing = HUDneed[i] + thing.update_icon() M.reset_view(src) else for(var/i in HUDneed) if(HUDneed[i]) M.client.screen -= HUDneed[i] M.update_hud() - M.check_HUD() \ No newline at end of file + M.check_HUD() diff --git a/code/modules/mechs/interface/datum_HUD.dm b/code/modules/mechs/interface/datum_HUD.dm index f6a6f3c1909..c22a0096cda 100644 --- a/code/modules/mechs/interface/datum_HUD.dm +++ b/code/modules/mechs/interface/datum_HUD.dm @@ -9,6 +9,7 @@ "mech radio" = list("type" = /obj/screen/movable/exosuit/radio, "loc" = "WEST:4,CENTER-3:58"), "rename mech" = list("type" = /obj/screen/movable/exosuit/rename, "loc" = "WEST:4,CENTER-3:69"), "mech camera" = list("type" = /obj/screen/movable/exosuit/toggle/camera, "loc" = "WEST:4,CENTER-3:80"), + "mech power switch" = list("type" = /obj/screen/movable/exosuit/toggle/power_control, "loc" = "WEST:4,CENTER-3:-12"), "mech health" = list("type" = /obj/screen/movable/exosuit/health, "loc" = "WEST:4,BOTTOM+3"), "mech power" = list("type" = /obj/screen/movable/exosuit/power, "loc" = "WEST+1:4,BOTTOM+3"), "strafe" = list("type" = /obj/screen/movable/exosuit/toggle/strafe, "loc" = "WEST:4,CENTER-3:92"), diff --git a/code/modules/mechs/interface/screen_objects.dm b/code/modules/mechs/interface/screen_objects.dm index 0c9729bda02..605f72ebbe1 100644 --- a/code/modules/mechs/interface/screen_objects.dm +++ b/code/modules/mechs/interface/screen_objects.dm @@ -6,7 +6,6 @@ icon = MECH_HUD_ICON icon_state = "base" var/mob/living/exosuit/owner - var/height = 20 /obj/screen/movable/exosuit/proc/on_handle_hud(var/mob/living/exosuit/E) if(E) owner = E @@ -260,8 +259,13 @@ if(owner.body && owner.body.total_damage >= owner.body.max_damage) to_chat(usr, SPAN_WARNING("\The body of [owner] is far too damaged to close its hatch!")) return - owner.hatch_locked = ..() + owner.hatch_locked = owner.toggle_hatch_lock() to_chat(usr, SPAN_NOTICE("The [owner.body.hatch_descriptor] is [owner.hatch_locked ? "now" : "no longer" ] locked.")) + update_icon() + +/obj/screen/movable/exosuit/toggle/hatch/update_icon() + toggled = owner.hatch_locked + . = ..() /obj/screen/movable/exosuit/toggle/hatch_open name = "open or close hatch" @@ -274,13 +278,14 @@ if(owner.hatch_locked && owner.hatch_closed) to_chat(usr, SPAN_WARNING("You cannot open the hatch while it is locked.")) return - owner.hatch_closed = ..() + owner.hatch_closed = owner.toggle_hatch() to_chat(usr, SPAN_NOTICE("The [owner.body.hatch_descriptor] is now [owner.hatch_closed ? "closed" : "open" ].")) owner.update_icon() /obj/screen/movable/exosuit/toggle/hatch_open/update_icon() + toggled = owner.hatch_closed . = ..() - if(owner.hatch_closed) + if(toggled) maptext = MECH_UI_STYLE("OPEN") maptext_x = 5 else @@ -349,8 +354,9 @@ if(!owner.head.vision_flags) to_chat(usr, SPAN_WARNING("Alternative sensor configurations not found. Contact manufacturer for more details.")) return - owner.head.active_sensors = ..() + owner.head.active_sensors = owner.toggle_sensors() to_chat(usr, SPAN_NOTICE("[owner.head.name] advanced sensor mode is [owner.head.active_sensors ? "now" : "no longer" ] active.")) + update_icon() /obj/screen/movable/exosuit/toggle/camera/update_icon() toggled = owner.head.active_sensors diff --git a/code/modules/mechs/mech_interaction.dm b/code/modules/mechs/mech_interaction.dm index b1c0d18cdb6..476b3cd0c83 100644 --- a/code/modules/mechs/mech_interaction.dm +++ b/code/modules/mechs/mech_interaction.dm @@ -474,6 +474,32 @@ if(ABORT_CHECK) return +/// Used by hatch lock UI button +/mob/living/exosuit/proc/toggle_hatch_lock() + if(hatch_locked) + hatch_locked = FALSE + else + if(body && body.total_damage >= body.max_damage) + return FALSE + hatch_locked = TRUE + return hatch_locked + +/// Used by hatch toggle mech UI button +/mob/living/exosuit/proc/toggle_hatch() + if(hatch_locked) + return hatch_closed + else + hatch_closed = !hatch_closed + return hatch_closed + +/// Used by camera toglge UI button +/mob/living/exosuit/proc/toggle_sensors() + if(head) + if(get_cell().calc_power_draw(0,0,head.power_use)) + head.active_sensors = TRUE + return TRUE + head.active_sensors = FALSE + return FALSE /mob/living/exosuit/attack_hand(mob/living/user) // Drag the pilot out if possible. diff --git a/code/modules/mechs/mech_life.dm b/code/modules/mechs/mech_life.dm index 5b16a75e480..9ed0bbecbde 100644 --- a/code/modules/mechs/mech_life.dm +++ b/code/modules/mechs/mech_life.dm @@ -35,7 +35,7 @@ death() . = ..() //Handles stuff like environment lying = FALSE // Fuck off, carp. - handle_vision() + handle_vision(powered) /mob/living/exosuit/get_cell(force) RETURN_TYPE(/obj/item/cell) @@ -51,7 +51,8 @@ var/obj/item/mech_equipment/I = hardpoints[hardpoint] if(!istype(I)) continue - total_draw += I.passive_power_use + + total_draw += I.active ? I.active_power_use : I.passive_power_use if(head && head.active_sensors) total_draw += head.power_use @@ -129,10 +130,10 @@ qdel(src) return -/mob/living/exosuit/handle_vision() +/mob/living/exosuit/handle_vision(powered) if(head) - sight = head.get_sight() - see_invisible = head.get_invisible() + sight = head.get_sight(powered) + see_invisible = head.get_invisible(powered) if(body && (body.pilot_coverage < 100 || body.transparent_cabin) || !hatch_closed) sight &= ~BLIND From b782a0f42ceeb45ff22d66f7849e0f6afc3ec29f Mon Sep 17 00:00:00 2001 From: MLGTASTICa Date: Thu, 23 Nov 2023 05:18:31 +0200 Subject: [PATCH 05/48] final fixes to mech huds. --- code/modules/mechs/interface/_mech_HUD.dm | 6 +++--- code/modules/mechs/interface/screen_objects.dm | 5 +---- code/modules/mechs/mech.dm | 6 +++--- code/modules/mechs/mech_interaction.dm | 12 ++++++++---- sound/mechs/mech-shutdown.ogg | Bin 0 -> 117896 bytes 5 files changed, 15 insertions(+), 14 deletions(-) create mode 100644 sound/mechs/mech-shutdown.ogg diff --git a/code/modules/mechs/interface/_mech_HUD.dm b/code/modules/mechs/interface/_mech_HUD.dm index 6c292a158ed..fbaea551813 100644 --- a/code/modules/mechs/interface/_mech_HUD.dm +++ b/code/modules/mechs/interface/_mech_HUD.dm @@ -57,9 +57,9 @@ if(M in pilots) for(var/i in HUDneed) if(HUDneed[i]) - M.client.screen |= HUDneed[i] - var/obj/screen/movable/exosuit/thing = HUDneed[i] - thing.update_icon() + M.client.screen |= HUDneed[i] + var/obj/screen/movable/exosuit/thing = HUDneed[i] + thing.update_icon() M.reset_view(src) else for(var/i in HUDneed) if(HUDneed[i]) M.client.screen -= HUDneed[i] diff --git a/code/modules/mechs/interface/screen_objects.dm b/code/modules/mechs/interface/screen_objects.dm index 605f72ebbe1..2d0c0b19a97 100644 --- a/code/modules/mechs/interface/screen_objects.dm +++ b/code/modules/mechs/interface/screen_objects.dm @@ -141,7 +141,6 @@ maptext = MECH_UI_STYLE("POWER") maptext_x = 3 maptext_y = 13 - height = 12 /obj/screen/movable/exosuit/toggle/power_control/toggled() . = ..() @@ -215,7 +214,6 @@ maptext = MECH_UI_STYLE("AIR") maptext_x = 9 maptext_y = 13 - height = 12 /obj/screen/movable/exosuit/toggle/air/toggled() owner.use_air = ..() @@ -228,7 +226,6 @@ maptext = MECH_UI_STYLE("MAINT") maptext_x = 5 maptext_y = 13 - height = 12 /obj/screen/movable/exosuit/toggle/maint/toggled() owner.maintenance_protocols = ..() @@ -281,6 +278,7 @@ owner.hatch_closed = owner.toggle_hatch() to_chat(usr, SPAN_NOTICE("The [owner.body.hatch_descriptor] is now [owner.hatch_closed ? "closed" : "open" ].")) owner.update_icon() + update_icon() /obj/screen/movable/exosuit/toggle/hatch_open/update_icon() toggled = owner.hatch_closed @@ -345,7 +343,6 @@ maptext = MECH_UI_STYLE("SENSOR") maptext_x = 1 maptext_y = 13 - height = 12 /obj/screen/movable/exosuit/toggle/camera/toggled() if(!owner.head) diff --git a/code/modules/mechs/mech.dm b/code/modules/mechs/mech.dm index a4051d7863a..a250f61e517 100644 --- a/code/modules/mechs/mech.dm +++ b/code/modules/mechs/mech.dm @@ -86,14 +86,14 @@ if(power == MECH_POWER_TRANSITION) to_chat(user, SPAN_NOTICE("Power transition in progress. Please wait.")) else if(power == MECH_POWER_ON) //Turning it off is instant - playsound(src, 'sound/mecha/mech-shutdown.ogg', 100, 0) + playsound(src, 'sound/mechs/mech-shutdown.ogg', 100, 0) power = MECH_POWER_OFF else if(get_cell(TRUE)) //Start power up sequence power = MECH_POWER_TRANSITION - playsound(src, 'sound/mecha/powerup.ogg', 50, 0) + playsound(src, 'sound/mechs/powerup.ogg', 50, 0) if(do_after(user, 1.5 SECONDS, src) && power == MECH_POWER_TRANSITION) - playsound(src, 'sound/mecha/nominal.ogg', 50, 0) + playsound(src, 'sound/mechs/nominal.ogg', 50, 0) power = MECH_POWER_ON else to_chat(user, SPAN_WARNING("You abort the powerup sequence.")) diff --git a/code/modules/mechs/mech_interaction.dm b/code/modules/mechs/mech_interaction.dm index 476b3cd0c83..285eeb9b3c1 100644 --- a/code/modules/mechs/mech_interaction.dm +++ b/code/modules/mechs/mech_interaction.dm @@ -495,10 +495,14 @@ /// Used by camera toglge UI button /mob/living/exosuit/proc/toggle_sensors() if(head) - if(get_cell().calc_power_draw(0,0,head.power_use)) - head.active_sensors = TRUE - return TRUE - head.active_sensors = FALSE + if(!head.active_sensors) + if(get_cell().drain_power(0,0,head.power_use)) + head.active_sensors = TRUE + return TRUE + return FALSE + else + head.active_sensors = FALSE + return FALSE return FALSE /mob/living/exosuit/attack_hand(mob/living/user) diff --git a/sound/mechs/mech-shutdown.ogg b/sound/mechs/mech-shutdown.ogg new file mode 100644 index 0000000000000000000000000000000000000000..9733bb26df542621c16f6fba71290aac03cba833 GIT binary patch literal 117896 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⁡ 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 Date: Sat, 25 Nov 2023 03:22:06 +0200 Subject: [PATCH 06/48] ssa --- code/modules/materials/materials.dm | 357 ++++++++++++++++++ code/modules/mechs/components/_components.dm | 25 +- code/modules/mechs/equipment/medical.dm | 109 ++++++ code/modules/mechs/equipment/utility.dm | 76 ++++ .../modules/mechs/interface/screen_objects.dm | 1 + 5 files changed, 567 insertions(+), 1 deletion(-) diff --git a/code/modules/materials/materials.dm b/code/modules/materials/materials.dm index e42111baf92..3d0b90fecc2 100644 --- a/code/modules/materials/materials.dm +++ b/code/modules/materials/materials.dm @@ -113,6 +113,15 @@ var/list/name_to_material var/explosion_resistance = 5 // Only used by walls currently. var/conductive = 1 // Objects with this var add CONDUCTS to flags on spawn. var/list/composite_material // If set, object matter var will be a list containing these values. + /// Armor values for this material whenever its applied on something. + var/datum/armor/armor = list( + melee = 1, + bullet = 1, + energy = 1, + bomb = 1, + bio = 1, + rad = 1 + ) // Placeholder vars for the time being, todo properly integrate windows/light tiles/rods. var/created_window @@ -258,6 +267,16 @@ var/list/name_to_material hardness = 80 stack_origin_tech = list(TECH_MATERIAL = 5) door_icon_base = "stone" + // it is a metal and it does conduct , but it does very poorly + conductive = FALSE + armor = list( + melee = 6, + bullet = 6, + energy = 10, + bomb = 25, + bio = 25, + rad = 0 + ) /material/diamond name = MATERIAL_DIAMOND @@ -271,6 +290,14 @@ var/list/name_to_material hardness = 100 weight = 50 stack_origin_tech = list(TECH_MATERIAL = 6) + armor = list( + melee = 15, + bullet = 15, + energy = 0, + bomb = 80, + bio = 0, + rad = 0 + ) /material/gold name = MATERIAL_GOLD @@ -281,10 +308,28 @@ var/list/name_to_material stack_origin_tech = list(TECH_MATERIAL = 4) sheet_singular_name = "ingot" sheet_plural_name = "ingots" + conductive = TRUE + armor = list( + melee = 1, + bullet = 1, + energy = 1, + bomb = 1, + bio = 45, + rad = 1 + ) /material/gold/bronze //placeholder for ashtrays name = "bronze" icon_colour = "#EDD12F" + conductive = TRUE + armor = list( + melee = 2, + bullet = 2, + energy = 3, + bomb = 10, + bio = 30, + rad = 0 + ) /material/silver name = MATERIAL_SILVER @@ -295,6 +340,15 @@ var/list/name_to_material stack_origin_tech = list(TECH_MATERIAL = 3) sheet_singular_name = "ingot" sheet_plural_name = "ingots" + conductive = TRUE + armor = list( + melee = 2, + bullet = 2, + energy = 2, + bomb = 10, + bio = 80, + rad = 0 + ) /material/plasma name = MATERIAL_PLASMA @@ -309,6 +363,15 @@ var/list/name_to_material door_icon_base = "stone" sheet_singular_name = "crystal" sheet_plural_name = "crystals" + conductive = TRUE + armor = list( + melee = 1, + bullet = 1, + energy = 6, + bomb = 1, + bio = 80, + rad = 45 + ) /* // Commenting this out while fires are so spectacularly lethal, as I can't seem to get this balanced appropriately. @@ -339,6 +402,15 @@ var/list/name_to_material door_icon_base = "stone" sheet_singular_name = "brick" sheet_plural_name = "bricks" + conductive = FALSE + armor = list( + melee = 2, + bullet = 0, + energy = 1, + bomb = 25, + bio = 0, + rad = 0 + ) /material/stone/marble name = MATERIAL_MARBLE @@ -358,12 +430,30 @@ var/list/name_to_material icon_reinf = "reinf_over" icon_colour = PLASTEEL_COLOUR hitsound = 'sound/weapons/genhit.ogg' + conductive = TRUE + armor = list( + melee = 5, + bullet = 5, + energy = 5, + bomb = 35, + bio = 0, + rad = 0 + ) /material/steel/holographic name = "holo" + MATERIAL_STEEL display_name = MATERIAL_STEEL stack_type = null shard_type = SHARD_NONE + // wish.com steel + armor = list( + melee = 0, + bullet = 0, + energy = 0, + bomb = 0, + bio = 0, + rad = 0 + ) /material/plasteel name = MATERIAL_PLASTEEL @@ -377,7 +467,16 @@ var/list/name_to_material hardness = 80 weight = 23 stack_origin_tech = list(TECH_MATERIAL = 2) + conductive = TRUE hitsound = 'sound/weapons/genhit.ogg' + armor = list( + melee = 8, + bullet = 8, + energy = 4, + bomb = 75, + bio = 35, + rad = 25 + ) /material/plasteel/titanium name = "titanium" @@ -388,6 +487,15 @@ var/list/name_to_material door_icon_base = "metal" icon_colour = "#D1E6E3" icon_reinf = "reinf_metal" + conductive = TRUE + armor = list( + melee = 16, + bullet = 10, + energy = 6, + bomb = 125, + bio = 35, + rad = 0 + ) /material/glass name = MATERIAL_GLASS @@ -406,7 +514,16 @@ var/list/name_to_material created_window = /obj/structure/window/basic created_window_full = /obj/structure/window/basic/full rod_product = /obj/item/stack/material/glass/reinforced + conductive = FALSE hitsound = 'sound/effects/Glasshit.ogg' + armor = list( + melee = 1, + bullet = 1, + energy = 0, + bomb = 0, + bio = 0, + rad = 0 + ) /material/glass/build_windows(var/mob/living/user, var/obj/item/stack/used_stack) @@ -522,8 +639,17 @@ var/list/name_to_material window_options = list("One Direction" = 1, "Full Window" = 6, "Windoor" = 5) created_window = /obj/structure/window/reinforced created_window_full = /obj/structure/window/reinforced/full + conductive = FALSE wire_product = null rod_product = null + armor = list( + melee = 4, + bullet = 4, + energy = 0, + bomb = 35, + bio = 0, + rad = 0 + ) /material/glass/plasma name = MATERIAL_PLASMAGLASS @@ -539,6 +665,15 @@ var/list/name_to_material created_window_full = /obj/structure/window/plasmabasic/full wire_product = null rod_product = /obj/item/stack/material/glass/plasmarglass + conductive = FALSE + armor = list( + melee = 6, + bullet = 6, + energy = 0, + bomb = 45, + bio = 0, + rad = 0 + ) /material/glass/plasma/reinforced name = MATERIAL_RPLASMAGLASS @@ -550,8 +685,17 @@ var/list/name_to_material created_window_full = /obj/structure/window/reinforced/plasma/full hardness = 60 weight = 50 + conductive = FALSE //composite_material = list() //todo rod_product = null + armor = list( + melee = 8, + bullet = 8, + energy = 0, + bomb = 50, + bio = 0, + rad = 0 + ) /material/plastic name = MATERIAL_PLASTIC @@ -563,13 +707,31 @@ var/list/name_to_material hardness = 10 weight = 12 melting_point = T0C+371 //assuming heat resistant plastic + conductive = FALSE stack_origin_tech = list(TECH_MATERIAL = 3) + armor = list( + melee = 3, + bullet = 3, + energy = 3, + bomb = 20, + bio = 5, + rad = 0 + ) /material/plastic/holographic name = "holoplastic" display_name = "plastic" stack_type = null shard_type = SHARD_NONE + conductive = FALSE + armor = list( + melee = 0, + bullet = 0, + energy = 0, + bomb = 0, + bio = 0, + rad = 0 + ) /material/osmium name = MATERIAL_OSMIUM @@ -580,6 +742,15 @@ var/list/name_to_material hardness = 90 sheet_singular_name = "ingot" sheet_plural_name = "ingots" + conductive = TRUE + armor = list( + melee = 20, + bullet = 14, + energy = 7, + bomb = 200, + bio = 0, + rad = 25 + ) /material/tritium name = MATERIAL_TRITIUM @@ -588,6 +759,15 @@ var/list/name_to_material stack_origin_tech = list(TECH_MATERIAL = 5) sheet_singular_name = "ingot" sheet_plural_name = "ingots" + conductive = FALSE + armor = list( + melee = 0, + bullet = 0, + energy = 10, + bomb = 0, + bio = 100, + rad = 50 + ) /material/mhydrogen name = MATERIAL_MHYDROGEN @@ -596,7 +776,16 @@ var/list/name_to_material stack_origin_tech = list(TECH_MATERIAL = 6, TECH_POWER = 6, TECH_MAGNET = 5) weight = 10 hardness = 200 + conductive = TRUE display_name = "metallic hydrogen" + armor = list( + melee = 35, + bullet = 18, + energy = 8, + bomb = 350, + bio = 0, + rad = 35 + ) /material/platinum name = MATERIAL_PLATINUM @@ -607,6 +796,14 @@ var/list/name_to_material stack_origin_tech = list(TECH_MATERIAL = 2) sheet_singular_name = "ingot" sheet_plural_name = "ingots" + armor = list( + melee = 3, + bullet = 3, + energy = 15, + bomb = 25, + bio = 55, + rad = 25 + ) /material/iron name = MATERIAL_IRON @@ -617,6 +814,15 @@ var/list/name_to_material sheet_singular_name = "ingot" sheet_plural_name = "ingots" hitsound = 'sound/weapons/smash.ogg' + conductive = TRUE + armor = list( + melee = 3, + bullet = 3, + energy = 3, + bomb = 35, + bio = 0, + rad = 0 + ) // Adminspawn only, do not let anyone get this. /material/voxalloy @@ -629,6 +835,14 @@ var/list/name_to_material explosion_resistance = 200 // Hull plating. hardness = 500 weight = 500 + armor = list( + melee = 50, + bullet = 35, + energy = 25, + bomb = 500, + bio = 0, + rad = 85 + ) /material/wood name = MATERIAL_WOOD @@ -650,12 +864,30 @@ var/list/name_to_material sheet_singular_name = "plank" sheet_plural_name = "planks" hitsound = 'sound/effects/woodhit.ogg' + conductive = FALSE + armor = list( + melee = 1, + bullet = 1, + energy = 5, + bomb = 10, + bio = 0, + rad = 0 + ) /material/wood/holographic name = "holowood" display_name = "wood" stack_type = null shard_type = SHARD_NONE + conductive = FALSE + armor = list( + melee = 0, + bullet = 0, + energy = 0, + bomb = 0, + bio = 0, + rad = 0 + ) /material/cardboard name = MATERIAL_CARDBOARD @@ -672,6 +904,15 @@ var/list/name_to_material stack_origin_tech = list(TECH_MATERIAL = 1) door_icon_base = "wood" destruction_desc = "crumples" + conductive = FALSE + armor = list( + melee = 0, + bullet = 0, + energy = 0, + bomb = 5, + bio = 0, + rad = 0 + ) /material/cloth //todo name = MATERIAL_CLOTH @@ -680,6 +921,16 @@ var/list/name_to_material ignition_point = T0C+232 melting_point = T0C+300 flags = MATERIAL_PADDING + conductive = FALSE + armor = list( + melee = 1, + bullet = 1, + energy = 1, + bomb = 5, + bio = 0, + rad = 0 + ) + /material/biomatter name = MATERIAL_BIOMATTER @@ -688,6 +939,14 @@ var/list/name_to_material stack_origin_tech = list(TECH_MATERIAL = 2, TECH_BIO = 2) sheet_singular_name = "sheet" sheet_plural_name = "sheets" + armor = list( + melee = 2, + bullet = 2, + energy = 2, + bomb = 15, + bio = 100, + rad = 0 + ) /material/compressed name = MATERIAL_COMPRESSED @@ -695,6 +954,15 @@ var/list/name_to_material icon_colour = "#00E1FF" sheet_singular_name = "cartrigde" sheet_plural_name = "cartridges" + conductive = TRUE + armor = list( + melee = 18, + bullet = 10, + energy = 10, + bomb = 150, + bio = 0, + rad = 100 + ) //TODO PLACEHOLDERS: /material/leather @@ -704,6 +972,14 @@ var/list/name_to_material flags = MATERIAL_PADDING ignition_point = T0C+300 melting_point = T0C+300 + armor = list( + melee = 4, + bullet = 2, + energy = 2, + bomb = 10, + bio = 10, + rad = 0 + ) /material/carpet name = "carpet" @@ -715,6 +991,15 @@ var/list/name_to_material melting_point = T0C+300 sheet_singular_name = "tile" sheet_plural_name = "tiles" + conductive = FALSE + armor = list( + melee = 0, + bullet = 0, + energy = 0, + bomb = 5, + bio = 0, + rad = 0 + ) /material/cotton name = "cotton" @@ -723,6 +1008,15 @@ var/list/name_to_material flags = MATERIAL_PADDING ignition_point = T0C+232 melting_point = T0C+300 + conductive = FALSE + armor = list( + melee = 0, + bullet = 0, + energy = 0, + bomb = 0, + bio = 0, + rad = 0 + ) /material/cloth_teal name = "teal" @@ -732,6 +1026,15 @@ var/list/name_to_material flags = MATERIAL_PADDING ignition_point = T0C+232 melting_point = T0C+300 + conductive = FALSE + armor = list( + melee = 1, + bullet = 1, + energy = 1, + bomb = 5, + bio = 0, + rad = 0 + ) /material/cloth_black name = "black" @@ -741,6 +1044,15 @@ var/list/name_to_material flags = MATERIAL_PADDING ignition_point = T0C+232 melting_point = T0C+300 + conductive = FALSE + armor = list( + melee = 1, + bullet = 1, + energy = 1, + bomb = 5, + bio = 0, + rad = 0 + ) /material/cloth_green name = "green" @@ -750,6 +1062,15 @@ var/list/name_to_material flags = MATERIAL_PADDING ignition_point = T0C+232 melting_point = T0C+300 + conductive = FALSE + armor = list( + melee = 1, + bullet = 1, + energy = 1, + bomb = 5, + bio = 0, + rad = 0 + ) /material/cloth_puple name = "purple" @@ -759,6 +1080,15 @@ var/list/name_to_material flags = MATERIAL_PADDING ignition_point = T0C+232 melting_point = T0C+300 + conductive = FALSE + armor = list( + melee = 1, + bullet = 1, + energy = 1, + bomb = 5, + bio = 0, + rad = 0 + ) /material/cloth_blue name = "blue" @@ -768,6 +1098,15 @@ var/list/name_to_material flags = MATERIAL_PADDING ignition_point = T0C+232 melting_point = T0C+300 + conductive = FALSE + armor = list( + melee = 1, + bullet = 1, + energy = 1, + bomb = 5, + bio = 0, + rad = 0 + ) /material/cloth_beige name = "beige" @@ -777,6 +1116,15 @@ var/list/name_to_material flags = MATERIAL_PADDING ignition_point = T0C+232 melting_point = T0C+300 + conductive = FALSE + armor = list( + melee = 1, + bullet = 1, + energy = 1, + bomb = 5, + bio = 0, + rad = 0 + ) /material/cloth_lime name = "lime" @@ -786,3 +1134,12 @@ var/list/name_to_material flags = MATERIAL_PADDING ignition_point = T0C+232 melting_point = T0C+300 + conductive = FALSE + armor = list( + melee = 1, + bullet = 1, + energy = 1, + bomb = 5, + bio = 0, + rad = 0 + ) diff --git a/code/modules/mechs/components/_components.dm b/code/modules/mechs/components/_components.dm index efcd5483133..f48be00aed0 100644 --- a/code/modules/mechs/components/_components.dm +++ b/code/modules/mechs/components/_components.dm @@ -17,6 +17,7 @@ var/max_damage = 60 var/damage_state = 1 var/list/has_hardpoints = list() + //var/material/reinforcement = null var/decal var/power_use = 0 @@ -35,13 +36,35 @@ if(.) if(ready_to_install()) - to_chat(usr, SPAN_NOTICE("It is ready for installation.")) + to_chat(user, SPAN_NOTICE("It is ready for installation.")) else show_missing_parts(usr) + /* + if(reinforcement) + to_chat(user, SPAN_NOTICE("It is reinforced with sheets of [reinforcement.material_display_name].")) + else + to_chat(user, SPAN_NOTICE("It can be reinforced with 5 sheets of a material for additional protection.")) + */ var/damage_string = src.get_damage_string() to_chat(user, "The [src.name] [src.gender == PLURAL ? "are" : "is"] [damage_string].") +/* + +/obj/item/mech_component/attackby(obj/item/I, mob/living/user) + . = ..() + + if(!reinforcement && istype(I, /obj/item/stack/material)) + var/obj/item/stack/material/mat = I + if(!mat.can_use(5)) + to_chat(user, SPAN_NOTICE("You need 5 sheets of reinforcing material!")) + return + to_chat(user, SPAN_NOTICE("You start reinforcing \the src.")) +*/ + + + + //These icons have multiple directions but before they're attached we only want south. /obj/item/mech_component/set_dir() diff --git a/code/modules/mechs/equipment/medical.dm b/code/modules/mechs/equipment/medical.dm index 7371290f795..9a40e766128 100644 --- a/code/modules/mechs/equipment/medical.dm +++ b/code/modules/mechs/equipment/medical.dm @@ -77,3 +77,112 @@ user.visible_message("\The [user] removes \the [beaker] from \the [src].", "You remove \the [beaker] from \the [src].") beaker = I user.visible_message("\The [user] adds \a [I] to \the [src].", "You add \a [I] to \the [src].") + +/obj/item/mech_equipment/auto_mender + name = "\improper exosuit auto-mender" + desc = "A mech-designed and equipped medical system for fast and automatic application of advanced trauma treatments to pacients. Makes use of medical gear found in trauma kits." + icon_state = "mech_mender" + restricted_hardpoints = list(HARDPOINT_BACK) + restricted_software = list(MECH_SOFTWARE_MEDICAL) + equipment_delay = 30 //don't spam it on people pls + active_power_use = 0 //Usage doesn't really require power. We don't want people stuck inside + origin_tech = list(TECH_DATA = 2, TECH_BIO = 3) + passive_power_use = 1.5 KILOWATTS + var/mob/living/carbon/human/mending_target = null + var/mob/living/exosuit/mech = null + var/obj/item/organ/external/affecting = null + var/trauma_charges_stored = 0 + var/trauma_storage_max = 10 + +/obj/item/mech_equipment/auto_mender/afterattack(atom/target, mob/living/user, inrange, params) + . = ..() + if(. && ishuman(target)) + if(mending_target == target) + mending_target = null + to_chat(user, SPAN_NOTICE("You cancel \the [src]'s mending on [target].")) + return + if(mending_target) + to_chat(user, SPAN_NOTICE("\The [src] is already mending someone,you can stop it by clicking the person again!")) + return + if(!target.Adjaecent(mech)) + to_chat(user, SPAN_NOTICE("You need to be next to \the [target] to start mending them!")) + mending_target = target + +/obj/item/mech_equipment/auto_mender/attackby(obj/item/I, mob/living/user, params) + . = ..() + if(istype(I, /obj/item/stack/medical/advanced/bruise_pack)) + var/obj/item/stack/medical/advanced/bruise_pack/pack = I + var/substract = clamp(I.amount, 0, trauma_storage_max - trauma_charges_stored) + if(substract && I.use(substract)) + trauma_charges_stored += substract + to_chat(user, SPAN_NOTICE("You restock \the [src]'s internal medicine storage with \the [I].")) + + +/obj/item/mech_equipment/auto_mender/installed(mob/living/exosuit/_owner, hardpoint) + . = ..() + mech = _owner + +/obj/item/mech_equipment/auto_mender/uninstalled() + . = ..() + mech = null + +/obj/item/mech_equipment/auto_mender/proc/mending_loop() + if(!mending_target || !mech) + return + if(!mech.Adjaecent(mending_target)) + mending_target = null + affecting = null + return + var/obj/item/organ/external/checking + if(!affecting || (affecting && affecting.is_bandaged)) + for(var/zone in BP_ALL_LIMBS) + checking = mending_target.organs_by_name[zone] + if(checking.is_bandaged()) + continue + if(checking.damage > affecting.damage) + affecting = checking + + for(var/datum/wound/W in affecting.wounds) + if(!mech.Adjaecent(mending_target)) + mending_target = null + affecting = null + return + if(W.internal) + continue + if(W.bandaged) + continue + if(!trauma_charges_stored) + break + if(!do_mob(mech, mending_target, W.damage/5)) + to_chat(mech.get_mob(), SPAN_NOTICE("You must stand still to bandage wounds.")) + mending_target = null + affecting = null + break + if(W.internal) + continue + if(W.bandaged) + continue + if (W.current_stage <= W.max_bleeding_stage) + user.visible_message( + SPAN_NOTICE("\The [mech] cleans \a [W.desc] on [mending_target]'s [affecting.name] and seals the edges with bioglue."), + SPAN_NOTICE("You clean and seal \a [W.desc] on [mending_target]'s [affecting.name].") + ) + else if (W.damage_type == BRUISE) + user.visible_message( + SPAN_NOTICE("\The [user] places a medical patch over \a [W.desc] on [mending_target]'s [affecting.name]."), + SPAN_NOTICE("You place a medical patch over \a [W.desc] on [mending_target]'s [affecting.name].") + ) + else + user.visible_message( + SPAN_NOTICE("\The [user] smears some bioglue over \a [W.desc] on [mending_target]'s [affecting.name]."), + SPAN_NOTICE("You smear some bioglue over \a [W.desc] on [mending_target]'s [affecting.name].") + ) + W.bandage() + W.heal_damage(10) + // If it doesn't cancel or run out of kits just repeat for every external organ. + if(W.is_bandaged()) + affecting = null + mending_loop() + + + diff --git a/code/modules/mechs/equipment/utility.dm b/code/modules/mechs/equipment/utility.dm index a1d4ee83dd9..cf6665274e4 100644 --- a/code/modules/mechs/equipment/utility.dm +++ b/code/modules/mechs/equipment/utility.dm @@ -465,3 +465,79 @@ /obj/item/extinguisher/mech/get_hardpoint_status_value() return reagents.total_volume/max_water + +/obj/item/mech_equipment/power_generator + name = "debug power generator" + desc = "If you see this tell coders to fix code.!" + icon_state = "mech_power" + restricted_hardpoints = list(HARDPOINT_LEFT_SHOULDER, HARDPOINT_RIGHT_SHOULDER) + restricted_software = list(MECH_SOFTWARE_UTILITY) + var/obj/item/cell/internal_cell + /// 50 power per mech life tick + var/generation_rate = 50 + +/obj/item/mech_equipment/power_generator/Initialize() + . = ..() + internal_cell = new /obj/item/cell/small + +/obj/item/mech_equipment/power_generator/attackby(obj/item/I, mob/living/user, params) + . = ..() + if(istype(I, /obj/item/cell) && !internal_cell) + user.drop_from_inventory(I) + I.forceMove(src) + internal_cell = I + to_chat(user, SPAN_NOTICE("You replace [src]'s cell!")) + return + +/obj/item/mech_equipment/power_generator/proc/onMechTick() + var/ungiven_power = internal_cell?.give(generation_rate) + return ungiven_power + +/obj/item/mech_equipment/power_generator/fueled + name = "fueled debug power generator" + var/fuel_amount = 0 + var/fuel_max = 1000 + var/fuel_usage_per_tick = 5 + +/obj/item/mech_equipment/power_generator/fueled/onMechTick() + if(fuel_amount > fuel_usage_per_tick) + . = ..() + if(. == generation_rate || . == null) + return + else + fuel_amount -= fuel_usage_per_tick + +/obj/item/mech_equipment/power_generator/fueled/plasma + name = "plasma powered mech-mountable power generator" + desc = "a plasma-fueled mech power generator , creates 1000 energy out of 1 sheet of plasma at a rate of 75" + generation_rate = 75 + fuel_usage_per_tick = 1 + // 10 sheets, enough for 10000 power + fuel_max = 133 + +/obj/item/mech_equipment/power_generator/fueled/plasma/attackby(obj/item/I, mob/living/user, params) + . = ..() + if(istype(I, /obj/item/stack/material/plasma)) + var/obj/item/stack/material/plasma/stck = I + var/amount_to_use = round((fuel_max - fuel_amount)/13) + amount_to_use = clamp(stck.amount, 0, amount_to_use) + if(amount_to_use && stck.use(amount_to_use)) + fuel_amount += round(amount_to_use * 13) + +/obj/item/mech_equipment/power_generator/fueled/welding + name ="welding fuel powered mech-mountable power generator" + desc = "a mech mounted generator that runs off welding fuel , each unit generates 25 charge" + generation_rate = 25 + fuel_usage_per_tick = 1 + /// can generate 6250 power + fuel_max = 250 + +/obj/item/mech_equipment/power_generator/fueled/welding/attackby(obj/item/I, mob/living/user, params) + . = ..() + if(istype(I, /obj/item/stack/material/plasma)) + var/obj/item/stack/material/plasma/stck = I + var/amount_to_use = round((fuel_max - fuel_amount)/13) + amount_to_use = clamp(stck.amount, 0, amount_to_use) + if(amount_to_use && stck.use(amount_to_use)) + fuel_amount += round(amount_to_use * 13) + diff --git a/code/modules/mechs/interface/screen_objects.dm b/code/modules/mechs/interface/screen_objects.dm index 2d0c0b19a97..0afee02ac8d 100644 --- a/code/modules/mechs/interface/screen_objects.dm +++ b/code/modules/mechs/interface/screen_objects.dm @@ -1,6 +1,7 @@ // Screen objects hereon out. #define MECH_UI_STYLE(X) "" + X + "" + /obj/screen/movable/exosuit name = "hardpoint" icon = MECH_HUD_ICON From d6188a3e71a002df40d1effa497dd99fa033e025 Mon Sep 17 00:00:00 2001 From: MLGTASTICa Date: Tue, 28 Nov 2023 00:37:50 +0200 Subject: [PATCH 07/48] the pulling , the medical and the ugly framework --- code/__DEFINES/dcs/signals.dm | 3 ++ code/modules/mechs/equipment/medical.dm | 19 ++++---- code/modules/mechs/equipment/utility.dm | 62 ++++++++++++++++++++++++- code/modules/mob/mob.dm | 9 +++- 4 files changed, 82 insertions(+), 11 deletions(-) diff --git a/code/__DEFINES/dcs/signals.dm b/code/__DEFINES/dcs/signals.dm index 7f229590013..6a7ed02f7bf 100644 --- a/code/__DEFINES/dcs/signals.dm +++ b/code/__DEFINES/dcs/signals.dm @@ -67,6 +67,9 @@ #define COMSIG_MOVABLE_Z_CHANGED "movable_z_moved" //from atom/movable/Move and forceMove): (oldz, newz) #define COMSIG_MOVABLE_PREMOVE "moveable_boutta_move" +#define COMSIG_ATTEMPT_PULLING "attempt_pulling" + #define COMSIG_PULL_CANCEL (1<<0) + // /mob signals #define COMSIG_MOB_LIFE "mob_life" //from mob/Life() #define COMSIG_MOB_LOGIN "mob_login" //from mob/Login() diff --git a/code/modules/mechs/equipment/medical.dm b/code/modules/mechs/equipment/medical.dm index 9a40e766128..e14b22d68b6 100644 --- a/code/modules/mechs/equipment/medical.dm +++ b/code/modules/mechs/equipment/medical.dm @@ -104,7 +104,7 @@ if(mending_target) to_chat(user, SPAN_NOTICE("\The [src] is already mending someone,you can stop it by clicking the person again!")) return - if(!target.Adjaecent(mech)) + if(!target.Adjacent(mech)) to_chat(user, SPAN_NOTICE("You need to be next to \the [target] to start mending them!")) mending_target = target @@ -129,12 +129,12 @@ /obj/item/mech_equipment/auto_mender/proc/mending_loop() if(!mending_target || !mech) return - if(!mech.Adjaecent(mending_target)) + if(!mech.Adjacent(mending_target)) mending_target = null affecting = null return var/obj/item/organ/external/checking - if(!affecting || (affecting && affecting.is_bandaged)) + if(!affecting || (affecting && affecting.is_bandaged())) for(var/zone in BP_ALL_LIMBS) checking = mending_target.organs_by_name[zone] if(checking.is_bandaged()) @@ -142,8 +142,11 @@ if(checking.damage > affecting.damage) affecting = checking + if(!affecting) + return + for(var/datum/wound/W in affecting.wounds) - if(!mech.Adjaecent(mending_target)) + if(!mech.Adjacent(mending_target)) mending_target = null affecting = null return @@ -163,24 +166,24 @@ if(W.bandaged) continue if (W.current_stage <= W.max_bleeding_stage) - user.visible_message( + mech.visible_message( SPAN_NOTICE("\The [mech] cleans \a [W.desc] on [mending_target]'s [affecting.name] and seals the edges with bioglue."), SPAN_NOTICE("You clean and seal \a [W.desc] on [mending_target]'s [affecting.name].") ) else if (W.damage_type == BRUISE) - user.visible_message( + mech.visible_message( SPAN_NOTICE("\The [user] places a medical patch over \a [W.desc] on [mending_target]'s [affecting.name]."), SPAN_NOTICE("You place a medical patch over \a [W.desc] on [mending_target]'s [affecting.name].") ) else - user.visible_message( + mech.visible_message( SPAN_NOTICE("\The [user] smears some bioglue over \a [W.desc] on [mending_target]'s [affecting.name]."), SPAN_NOTICE("You smear some bioglue over \a [W.desc] on [mending_target]'s [affecting.name].") ) W.bandage() W.heal_damage(10) // If it doesn't cancel or run out of kits just repeat for every external organ. - if(W.is_bandaged()) + if(affecting.is_bandaged()) affecting = null mending_loop() diff --git a/code/modules/mechs/equipment/utility.dm b/code/modules/mechs/equipment/utility.dm index cf6665274e4..28136a2d6bd 100644 --- a/code/modules/mechs/equipment/utility.dm +++ b/code/modules/mechs/equipment/utility.dm @@ -483,7 +483,7 @@ /obj/item/mech_equipment/power_generator/attackby(obj/item/I, mob/living/user, params) . = ..() if(istype(I, /obj/item/cell) && !internal_cell) - user.drop_from_inventory(I) + user.drop_from_inventory(I) I.forceMove(src) internal_cell = I to_chat(user, SPAN_NOTICE("You replace [src]'s cell!")) @@ -541,3 +541,63 @@ if(amount_to_use && stck.use(amount_to_use)) fuel_amount += round(amount_to_use * 13) +/obj/item/mech_equipment/towing_hook + name = "mounted towing hook" + desc = "A mech mounted towing hook, usually found in cars. Can hook to anything that isn't anchored down." + icon_state = "mech_clamp" + restricted_hardpoints = list(HARDPOINT_BACK) + restricted_software = list(MECH_SOFTWARE_UTILITY) + origin_tech = list(TECH_MATERIAL = 2, TECH_ENGINEERING = 2) + var/atom/movable/currentlyTowing = null + +/obj/item/mech_equipment/towing_hook/installed(mob/living/exosuit/_owner, hardpoint) + . = ..() + RegisterSignal(_owner, COMSIG_MOVABLE_MOVED, PROC_REF(onMechMove)) + +/obj/item/mech_equipment/towing_hook/uninstalled() + . = ..() + UnregisterSignal(_owner, COMSIG_MOVABLE_MOVED) + +/obj/item/mech_equipment/towing_hook/proc/onTowingMove(atom/movable/mover, oldLocation, newLocation) + SIGNAL_HANDLER + if(newLocation.Adjacent(src)) + return + UnregisterSignal(mover, COMSIG_MOVABLE_MOVED,COMSIG_ATTEMPT_PULLING) + currentlyTowing = null + +/obj/item/mech_equipment/towing_hook/proc/onMechMove(atom/movable/mover, oldLocation, newLocation) + SIGNAL_HANDLER + if(!currentlyTowing) + return + if(!oldLocation.Adjacent(currentlyTowing)) + UnregisterSignal(currentlyTowing, COMSIG_MOVABLE_MOVED,COMSIG_ATTEMPT_PULLING) + currentlyTowing = null + return + // If we move up a z-level we want to instantly pull it up with us as to prevent possible abuse. + if(oldLocation.z != newLocation.z) + currentlyTowing.forceMove(newLocation) + else + currentlyTowing.Move(oldLocation) + +/// We get supreme priority on pulling +/obj/item/mech_equipment/towing_hook/proc/onTowingPullAttempt() + SIGNAL_HANDLER + return COMSIG_PULL_CANCEL + +/obj/item/mech_equipment/towing_hook/afterattack(atom/movable/target, mob/living/user, inrange, params) + . = ..() + if(!istype(target)) + return + if(!currentlyTowing) + if(target.Adjacent(src.owner) && !target.anchored) + to_chat(user, SPAN_NOTICE("You hook \the [src] onto \the [target]!")) + currentlyTowing = target + RegisterSignal(target, COMSIG_MOVABLE_MOVED, PROC_REF(onTowingMove)) + RegisterSignal(target, COMSIG_ATTEMPT_PULLING, PROC_REF(onTowingPullAttempt)) + + + + + + + diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 68d451ddc45..30b67f081e2 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -91,8 +91,8 @@ messageturfs += turf - - + + for(var/mob/M in getMobsInRangeChunked(get_turf(src), range, FALSE, TRUE)) if(!M.client) continue @@ -610,6 +610,11 @@ to_chat(src, "It won't budge!") return + if(SEND_SIGNAL(AM, COMSIG_ATTEMPT_PULLING) == COMSIG_PULL_CANCEL) + to_chat(src, SPAN_WARNING("It won't budge!")) + return + + var/mob/M = AM if(ismob(AM)) From 130daacf177c12741872890c794d014891f3776b Mon Sep 17 00:00:00 2001 From: MLGTASTICa Date: Tue, 28 Nov 2023 22:52:48 +0200 Subject: [PATCH 08/48] fixes --- code/modules/mechs/equipment/medical.dm | 8 ++++---- code/modules/mechs/equipment/utility.dm | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/code/modules/mechs/equipment/medical.dm b/code/modules/mechs/equipment/medical.dm index e14b22d68b6..828a283d435 100644 --- a/code/modules/mechs/equipment/medical.dm +++ b/code/modules/mechs/equipment/medical.dm @@ -112,8 +112,8 @@ . = ..() if(istype(I, /obj/item/stack/medical/advanced/bruise_pack)) var/obj/item/stack/medical/advanced/bruise_pack/pack = I - var/substract = clamp(I.amount, 0, trauma_storage_max - trauma_charges_stored) - if(substract && I.use(substract)) + var/substract = clamp(pack.amount, 0, trauma_storage_max - trauma_charges_stored) + if(substract && pack.use(substract)) trauma_charges_stored += substract to_chat(user, SPAN_NOTICE("You restock \the [src]'s internal medicine storage with \the [I].")) @@ -172,12 +172,12 @@ ) else if (W.damage_type == BRUISE) mech.visible_message( - SPAN_NOTICE("\The [user] places a medical patch over \a [W.desc] on [mending_target]'s [affecting.name]."), + SPAN_NOTICE("\The [mech] places a medical patch over \a [W.desc] on [mending_target]'s [affecting.name]."), SPAN_NOTICE("You place a medical patch over \a [W.desc] on [mending_target]'s [affecting.name].") ) else mech.visible_message( - SPAN_NOTICE("\The [user] smears some bioglue over \a [W.desc] on [mending_target]'s [affecting.name]."), + SPAN_NOTICE("\The [mech] smears some bioglue over \a [W.desc] on [mending_target]'s [affecting.name]."), SPAN_NOTICE("You smear some bioglue over \a [W.desc] on [mending_target]'s [affecting.name].") ) W.bandage() diff --git a/code/modules/mechs/equipment/utility.dm b/code/modules/mechs/equipment/utility.dm index 28136a2d6bd..25c0c2106d7 100644 --- a/code/modules/mechs/equipment/utility.dm +++ b/code/modules/mechs/equipment/utility.dm @@ -556,7 +556,7 @@ /obj/item/mech_equipment/towing_hook/uninstalled() . = ..() - UnregisterSignal(_owner, COMSIG_MOVABLE_MOVED) + UnregisterSignal(owner, COMSIG_MOVABLE_MOVED) /obj/item/mech_equipment/towing_hook/proc/onTowingMove(atom/movable/mover, oldLocation, newLocation) SIGNAL_HANDLER From 3cb524f585ad5db0a1b3b8f97249c0d4494a659f Mon Sep 17 00:00:00 2001 From: MLGTASTICa Date: Tue, 28 Nov 2023 22:55:00 +0200 Subject: [PATCH 09/48] fix 2 --- code/modules/mechs/equipment/utility.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/mechs/equipment/utility.dm b/code/modules/mechs/equipment/utility.dm index 25c0c2106d7..941888d6197 100644 --- a/code/modules/mechs/equipment/utility.dm +++ b/code/modules/mechs/equipment/utility.dm @@ -558,14 +558,14 @@ . = ..() UnregisterSignal(owner, COMSIG_MOVABLE_MOVED) -/obj/item/mech_equipment/towing_hook/proc/onTowingMove(atom/movable/mover, oldLocation, newLocation) +/obj/item/mech_equipment/towing_hook/proc/onTowingMove(atom/movable/mover, atom/oldLocation, atom/newLocation) SIGNAL_HANDLER if(newLocation.Adjacent(src)) return UnregisterSignal(mover, COMSIG_MOVABLE_MOVED,COMSIG_ATTEMPT_PULLING) currentlyTowing = null -/obj/item/mech_equipment/towing_hook/proc/onMechMove(atom/movable/mover, oldLocation, newLocation) +/obj/item/mech_equipment/towing_hook/proc/onMechMove(atom/movable/mover, atom/oldLocation, atom/newLocation) SIGNAL_HANDLER if(!currentlyTowing) return From e28a29ae22acf31f0ea39962230c624588f25cae Mon Sep 17 00:00:00 2001 From: MLGTASTICa Date: Wed, 29 Nov 2023 01:53:17 +0200 Subject: [PATCH 10/48] more code , more fuel , more modules , more stuff. --- code/modules/mechs/equipment/medical.dm | 2 +- code/modules/mechs/equipment/utility.dm | 109 +++++++++++++++--- .../modules/mechs/interface/screen_objects.dm | 4 +- code/modules/mechs/mech_construction.dm | 3 +- code/modules/mechs/mech_interaction.dm | 44 +++++-- 5 files changed, 128 insertions(+), 34 deletions(-) diff --git a/code/modules/mechs/equipment/medical.dm b/code/modules/mechs/equipment/medical.dm index 828a283d435..556b2fc1a8a 100644 --- a/code/modules/mechs/equipment/medical.dm +++ b/code/modules/mechs/equipment/medical.dm @@ -115,7 +115,7 @@ var/substract = clamp(pack.amount, 0, trauma_storage_max - trauma_charges_stored) if(substract && pack.use(substract)) trauma_charges_stored += substract - to_chat(user, SPAN_NOTICE("You restock \the [src]'s internal medicine storage with \the [I].")) + to_chat(user, SPAN_NOTICE("You restock \the [src]'s internal medicine storage with \the [I], using [substract] charges.")) /obj/item/mech_equipment/auto_mender/installed(mob/living/exosuit/_owner, hardpoint) diff --git a/code/modules/mechs/equipment/utility.dm b/code/modules/mechs/equipment/utility.dm index 941888d6197..9d39bf6eca4 100644 --- a/code/modules/mechs/equipment/utility.dm +++ b/code/modules/mechs/equipment/utility.dm @@ -507,44 +507,77 @@ else fuel_amount -= fuel_usage_per_tick +/obj/item/mech_equipment/power_generator/fueled/get_hardpoint_maptext() + return "[fuel_amount]/[fuel_max]" + /obj/item/mech_equipment/power_generator/fueled/plasma name = "plasma powered mech-mountable power generator" - desc = "a plasma-fueled mech power generator , creates 1000 energy out of 1 sheet of plasma at a rate of 75" - generation_rate = 75 - fuel_usage_per_tick = 1 - // 10 sheets, enough for 10000 power - fuel_max = 133 + desc = "a plasma-fueled mech power generator, creates 5 KW out of 1 sheet of plasma at a rate of 0.25 KW." + generation_rate = 250 + // each sheet is 5000 watts + fuel_usage_per_tick = 50 + // 1 sheet = 1000 fuel + // 35000 max power out of a fully loaded generator + fuel_max = 7000 /obj/item/mech_equipment/power_generator/fueled/plasma/attackby(obj/item/I, mob/living/user, params) . = ..() if(istype(I, /obj/item/stack/material/plasma)) var/obj/item/stack/material/plasma/stck = I - var/amount_to_use = round((fuel_max - fuel_amount)/13) + var/amount_to_use = round((fuel_max - fuel_amount)/1000) amount_to_use = clamp(stck.amount, 0, amount_to_use) if(amount_to_use && stck.use(amount_to_use)) - fuel_amount += round(amount_to_use * 13) + fuel_amount += amount_to_use * 1000 /obj/item/mech_equipment/power_generator/fueled/welding name ="welding fuel powered mech-mountable power generator" - desc = "a mech mounted generator that runs off welding fuel , each unit generates 25 charge" - generation_rate = 25 + desc = "a mech mounted generator that runs off welding fuel, creates 1 KW out of 10 units of welding fuel, at a rate of 0.1 KW" + generation_rate = 100 fuel_usage_per_tick = 1 - /// can generate 6250 power - fuel_max = 250 + /// can generate 20000 power + fuel_max = 200 + /// The "explosion" chamber , used for when the fuel is mixed with something else + var/datum/reagents/chamberReagent = null + +/obj/item/mech_equipment/power_generator/fueled/welding/Initialize() + . = ..() + // max volume + create_reagents(200) + chamberReagent = new(1, src) /obj/item/mech_equipment/power_generator/fueled/welding/attackby(obj/item/I, mob/living/user, params) . = ..() - if(istype(I, /obj/item/stack/material/plasma)) - var/obj/item/stack/material/plasma/stck = I - var/amount_to_use = round((fuel_max - fuel_amount)/13) - amount_to_use = clamp(stck.amount, 0, amount_to_use) - if(amount_to_use && stck.use(amount_to_use)) - fuel_amount += round(amount_to_use * 13) + if(is_drainable(I) && I.reagents.total_volume) + I.reagents.trans_to_holder(reagents, 10, 1, FALSE) + else if(I.reagents && I.reagent_flags & REFILLABLE) + reagents.trans_to_holder(I.reagents, 10, 1 FALSE) + +/obj/item/mech_equipment/power_generator/fueled/welding/onMechTick() + chamberReagent.clear_reagents() + reagents.trans_to_holder(chamberReagent, 1, 1, FALSE) + if(chamberReagent.has_reagent("fuel")) + var/fuel = chamberReagent.get_reagent_amount("fuel") + // for the future just add any other reagent here with + * explosion_power_multiplier + var/explosives = chamberReagent.get_reagent_amount("plasma") * 3 + if(explosives > 0.5) + // if its full plasma if just fucking blows instantly + health -= maxHealth * (explosives / 3) + if(health < 1) + owner.remove_system(src, null, TRUE) + qdel(src) + return + // min needed for combustion + if(fuel > 0.25) + var/amountReturned = internal_cell?.give(round(generation_rate * fuel)) + // refund if none of it gets turned into power for qol reasons + if(amountReturned == generation_rate) + chamberReagent.trans_to_holder(reagents, 1, 1, FALSE) + fuel_amount = reagents.total_volume /obj/item/mech_equipment/towing_hook name = "mounted towing hook" desc = "A mech mounted towing hook, usually found in cars. Can hook to anything that isn't anchored down." - icon_state = "mech_clamp" + icon_state = "mech_tow" restricted_hardpoints = list(HARDPOINT_BACK) restricted_software = list(MECH_SOFTWARE_UTILITY) origin_tech = list(TECH_MATERIAL = 2, TECH_ENGINEERING = 2) @@ -587,6 +620,7 @@ /obj/item/mech_equipment/towing_hook/afterattack(atom/movable/target, mob/living/user, inrange, params) . = ..() if(!istype(target)) + to_chat(user, SPAN_NOTICE("You cannot hook onto this!")) return if(!currentlyTowing) if(target.Adjacent(src.owner) && !target.anchored) @@ -594,6 +628,45 @@ currentlyTowing = target RegisterSignal(target, COMSIG_MOVABLE_MOVED, PROC_REF(onTowingMove)) RegisterSignal(target, COMSIG_ATTEMPT_PULLING, PROC_REF(onTowingPullAttempt)) + else if(currentlyTowing == target) + to_chat(user, SPAN_NOTICE("You unhook \the [src] from \the [target].")) + UnregisterSignal(currentlyTowing,list(COMSIG_MOVABLE_MOVED,COMSIG_ATTEMPT_PULLING)) + currentlyTowing = null + else + to_chat(user, SPAN_NOTICE("You are already towing \the [currentlyTowing]. Unhook from it first by attacking it again!")) + +/obj/item/mech_equipment/mounted_system/toolkit + name = "mounted toolkit" + desc = "A automatic suite of tools suited for installation on a mech." + icon_state = "mech_tools" + holding_type = /obj/item/tool/mech_kit + restricted_hardpoints = list(HARDPOINT_LEFT_HAND, HARDPOINT_RIGHT_HAND) + restricted_software = list(MECH_SOFTWARE_UTILITY) + origin_tech = list(TECH_ENGINEERING = 5, TECH_MAGNET = 2, TECH_MATERIAL = 2) + matter = list(MATERIAL_PLASTEEL = 25, MATERIAL_PLASTIC = 10, MATERIAL_SILVER = 5) + +/obj/item/tool/mech_kit + name = "mech toolkit" + desc = "A robust selection of mech-sized tools." + icon_state = "engimplant=" + force = WEAPON_FORCE_DANGEROUS + worksound = WORKSOUND_DRIVER_TOOL + flags = CONDUCT + tool_qualities = list( + QUALITY_SCREW_DRIVING = 70, + QUALITY_BOLT_TURNING = 70, + QUALITY_DRILLING = 10, + QUALITY_WELDING = 100, + QUALITY_CAUTERIZING = 5, + QUALITY_PRYING = 100, + QUALITY_DIGGING = 50, + QUALITY_PULSING = 50, + QUALITY_WIRE_CUTTING = 100, + QUALITY_HAMMERING = 75) + degradation = 0 + workspeed = 1 + max_upgrades = 1 + spawn_blacklisted = TRUE diff --git a/code/modules/mechs/interface/screen_objects.dm b/code/modules/mechs/interface/screen_objects.dm index 0afee02ac8d..f5af403c526 100644 --- a/code/modules/mechs/interface/screen_objects.dm +++ b/code/modules/mechs/interface/screen_objects.dm @@ -127,7 +127,9 @@ var/modifiers = params2list(params) if(modifiers["ctrl"]) if(owner.hardpoints_locked) to_chat(usr, SPAN_WARNING("Hardpoint ejection system is locked.")) - else if(owner.remove_system(hardpoint_tag)) to_chat(usr, SPAN_NOTICE("You disengage and discard the system mounted to your [hardpoint_tag] hardpoint.")) + else if(owner.remove_system(hardpoint_tag)) + icon_state = "hardpoint" + to_chat(usr, SPAN_NOTICE("You disengage and discard the system mounted to your [hardpoint_tag] hardpoint.")) else to_chat(usr, SPAN_DANGER("You fail to remove the system mounted to your [hardpoint_tag] hardpoint.")) else if(modifiers["shift"] && holding) holding.attack_self(usr) else if(owner.selected_hardpoint == hardpoint_tag) diff --git a/code/modules/mechs/mech_construction.dm b/code/modules/mechs/mech_construction.dm index 900a9690d75..0d4ba1e9679 100644 --- a/code/modules/mechs/mech_construction.dm +++ b/code/modules/mechs/mech_construction.dm @@ -128,9 +128,8 @@ user.visible_message(SPAN_NOTICE("\The [user] begins trying to remove \the [system] from \the [src].")) if(!do_after(user, delay, src) || hardpoints[system_hardpoint] != system) return 0 - hardpoints[system_hardpoint] = null - if(system_hardpoint == selected_hardpoint) clear_selected_hardpoint() + hardpoints[system_hardpoint] = null var/obj/item/mech_equipment/ME = system if(istype(ME)) ME.uninstalled() diff --git a/code/modules/mechs/mech_interaction.dm b/code/modules/mechs/mech_interaction.dm index 285eeb9b3c1..1f6fe1a7d8c 100644 --- a/code/modules/mechs/mech_interaction.dm +++ b/code/modules/mechs/mech_interaction.dm @@ -285,21 +285,41 @@ chosen = loadable_guns[chosen] else chosen = loadable_guns[loadable_guns[1]] - switch(chosen.loadMagazine(I,user)) - if(-1) - to_chat(user, SPAN_NOTICE("\The [chosen] does not accept this type of magazine.")) - if(0) - to_chat(user, SPAN_NOTICE("\The [chosen] has no slots left in its ammunition storage.")) - if(1) - to_chat(user, SPAN_NOTICE("You load \the [I] into \the [chosen].")) - if(2) - to_chat(user, SPAN_NOTICE("You partially reload one of the existing ammo magazines inside of \the [chosen].")) - - else if(user.a_intent != I_HURT) + if(chosen) + switch(chosen.loadMagazine(I,user)) + if(-1) + to_chat(user, SPAN_NOTICE("\The [chosen] does not accept this type of magazine.")) + if(0) + to_chat(user, SPAN_NOTICE("\The [chosen] has no slots left in its ammunition storage.")) + if(1) + to_chat(user, SPAN_NOTICE("You load \the [I] into \the [chosen].")) + if(2) + to_chat(user, SPAN_NOTICE("You partially reload one of the existing ammo magazines inside of \the [chosen].")) + + if(istype(I, /obj/item/stack/medical/advanced/bruise_pack)) + var/list/choices = list() + for(var/hardpoint in hardpoints) + if(istype(hardpoints[hardpoint], /obj/item/mech_equipment/auto_mender)) + var/obj/item/mech_equipment/auto_mender/mend = hardpoints[hardpoint] + choices["[hardpoin] - [mend.trauma_charges_stored]/[mend.trauma_storage_max] charges"] = mend + var/obj/item/mech_equipment/auto_mender/choice = null + if(!length(choices)) + return + if(length(choices) == 1) + choice = choices[choices[1]] + else + var/chosenMender = input("Select mech mender to refill") as null|anything in choices + if(chosenMender) + choice = choices[chosenMender] + if(choice) + choice.attackby(I, user) + return + + else if(user.a_intent != I_HELP) if(attack_tool(I, user)) return // we use BP_CHEST cause we dont need to convert targeted organ to mech format def zoning - else if(user.a_intent == I_HURT && !hatch_closed && get_dir(user, src) == reverse_dir[dir] && get_mob() && !(user in pilots) && user.targeted_organ == BP_CHEST) + else if(user.a_intent != I_HELP && !hatch_closed && get_dir(user, src) == reverse_dir[dir] && get_mob() && !(user in pilots) && user.targeted_organ == BP_CHEST) var/mob/living/target = get_mob() target.attackby(I, user) return From 464030f4301f9ab2dae5f084631661e33a69b846 Mon Sep 17 00:00:00 2001 From: MLGTASTICa Date: Thu, 30 Nov 2023 16:43:38 +0200 Subject: [PATCH 11/48] content --- code/modules/mechs/components/arms.dm | 4 + code/modules/mechs/components/body.dm | 2 + code/modules/mechs/equipment/medical.dm | 26 +++++- code/modules/mechs/equipment/utility.dm | 84 +++++++++++++++++- .../modules/mechs/interface/screen_objects.dm | 2 +- code/modules/mechs/mech.dm | 2 + code/modules/mechs/mech_interaction.dm | 7 +- code/modules/mechs/mech_life.dm | 25 +++++- icons/mechs/mech_equipment.dmi | Bin 26228 -> 27431 bytes icons/mechs/mech_weapon_overlays.dmi | Bin 27064 -> 30576 bytes sound/mechs/mech_generator.ogg | Bin 0 -> 28805 bytes 11 files changed, 141 insertions(+), 11 deletions(-) create mode 100644 sound/mechs/mech_generator.ogg diff --git a/code/modules/mechs/components/arms.dm b/code/modules/mechs/components/arms.dm index 3f7918ffbfe..31e312a6505 100644 --- a/code/modules/mechs/components/arms.dm +++ b/code/modules/mechs/components/arms.dm @@ -9,6 +9,10 @@ var/melee_damage = WEAPON_FORCE_PAINFUL var/action_delay = 15 var/obj/item/robot_parts/robot_component/actuator/motivator + tool_qualities = list( + QUALITY_HAMMERING = 30, + QUALITY_PRYING = 20 + ) var/punch_sound = ('sound/mechs/mech_punch.ogg') /obj/item/mech_component/manipulators/Destroy() diff --git a/code/modules/mechs/components/body.dm b/code/modules/mechs/components/body.dm index be7214a9543..7168d5992f0 100644 --- a/code/modules/mechs/components/body.dm +++ b/code/modules/mechs/components/body.dm @@ -40,6 +40,8 @@ var/min_pilot_size = MOB_SMALL var/max_pilot_size = MOB_LARGE var/climb_time = 25 + /// does this mech chassis have support for charging all cells inside of its storage? if its 0 it doesnt + var/cell_charge_rate = 200 /obj/item/mech_component/chassis/New() ..() diff --git a/code/modules/mechs/equipment/medical.dm b/code/modules/mechs/equipment/medical.dm index 556b2fc1a8a..19479366606 100644 --- a/code/modules/mechs/equipment/medical.dm +++ b/code/modules/mechs/equipment/medical.dm @@ -78,6 +78,28 @@ beaker = I user.visible_message("\The [user] adds \a [I] to \the [src].", "You add \a [I] to \the [src].") +/obj/item/mech_equipment/sleeper/upgraded + name = "\improper MK2 mounted sleeper" + desc = "An exosuit-mounted sleeper designed to heal patients" + +/obj/item/mech_equipment/sleeper/upgraded/Initialize() + . = ..() + // delete old one + qdel(sleeper) + sleeper = new /obj/machinery/sleeper/mounted/upgraded(src) + sleeper.forceMove(src) + +/obj/machinery/sleeper/mounted/upgraded + name = "\improper MK2 mounted sleeper" + available_chemicals = list("inaprovaline2" = "Synth-Inaprovaline", + "quickclot" = "Quick-Clot", + "stoxin" = "Soporific", + "tramadol" = "Tramadol", + "anti_toxin" = "Dylovene", + "dexalin" = "Dexalin", + "tricordrazine" = "Tricordrazine", + "polystem" = "PolyStem") + /obj/item/mech_equipment/auto_mender name = "\improper exosuit auto-mender" desc = "A mech-designed and equipped medical system for fast and automatic application of advanced trauma treatments to pacients. Makes use of medical gear found in trauma kits." @@ -85,14 +107,14 @@ restricted_hardpoints = list(HARDPOINT_BACK) restricted_software = list(MECH_SOFTWARE_MEDICAL) equipment_delay = 30 //don't spam it on people pls - active_power_use = 0 //Usage doesn't really require power. We don't want people stuck inside + active_power_use = 0 //Usage doesn't really require power. origin_tech = list(TECH_DATA = 2, TECH_BIO = 3) passive_power_use = 1.5 KILOWATTS var/mob/living/carbon/human/mending_target = null var/mob/living/exosuit/mech = null var/obj/item/organ/external/affecting = null var/trauma_charges_stored = 0 - var/trauma_storage_max = 10 + var/trauma_storage_max = 30 /obj/item/mech_equipment/auto_mender/afterattack(atom/target, mob/living/user, inrange, params) . = ..() diff --git a/code/modules/mechs/equipment/utility.dm b/code/modules/mechs/equipment/utility.dm index 9d39bf6eca4..8d16f7dbdf8 100644 --- a/code/modules/mechs/equipment/utility.dm +++ b/code/modules/mechs/equipment/utility.dm @@ -493,26 +493,88 @@ var/ungiven_power = internal_cell?.give(generation_rate) return ungiven_power +/obj/item/mech_equipment/power_generator/installed(mob/living/exosuit/_owner, hardpoint) + . = ..() + + /obj/item/mech_equipment/power_generator/fueled name = "fueled debug power generator" var/fuel_amount = 0 var/fuel_max = 1000 var/fuel_usage_per_tick = 5 + var/mode = 0 + var/datum/repeating_sound/sound_loop = null /obj/item/mech_equipment/power_generator/fueled/onMechTick() + // for when we arenÈ›t on + if(!mode) + sound_loop?.stop() + return if(fuel_amount > fuel_usage_per_tick) . = ..() if(. == generation_rate || . == null) return else fuel_amount -= fuel_usage_per_tick + if(QDELETED(sound_loop)) + sound_loop = new(_interval = 2 SECONDS, duration = 10 SECONDS, interval_variance = 0, + _source = owner, _soundin = 'sound/mechs/mech_generator.ogg' , _vol = 25 * mode, _vary = 0, _extrarange = mode * 3, + _falloff = 0, _is_global = FALSE, _use_pressure = TRUE) + else + // extend it artificially. + sound_loop.end_time = world.time + 10 SECONDS + + + +/obj/item/mech_equipment/power_generator/fueled/attack_self(mob/user) + . = ..() + if(. && owner) + switch(mode) + /// Eco mode , very slow generation but doubled power output ( 20% of power production at cost of 10% of fuel usage) + if(0) + mode = 1 + fuel_usage_per_tick = initial(fuel_usage_per_tick) * 0.1 + generation_Rate = initial(generation_rate) * 0.2 + to_chat(user, SPAN_NOTICE("You switch \the [src]'s power production mode to ECO. 10% Fuel usage, 20% power output")) + icon_state = "[initial(icon_state)]_on" + if(owner) + owner.update_icon() + /// Default + if(1) + mode = 2 + fuel_usage_per_tick = initial(fuel_usage_per_tick) + generation_rate = initial(generation_rate) + to_chat(user, SPAN_NOTICE("You switch \the [src]'s power production mode to NORMAL. 100% Fuel usage, 100% power output")) + icon_state = "[initial(icon_state)]_on" + if(owner) + owner.update_icon() + /// Turbo mode, 2x fuel usage at 1.6x power output + if(2) + mode = 3 + fuel_usage_per_tick = initial(fuel_usage_per_tick) * 2 + generation_rate = initial(generation_rate) * 1.6 + to_chat(user, SPAN_NOTICE("You switch \the [src]'s power production mode to TURBO. 200% Fuel usage, 160% power output")) + icon_state = "[initial(icon_state)]_on" + if(owner) + owner.update_icon() + /// back to eco. + if(3) + mode = 0 + fuel_usage_per_tick = initial(fuel_usage_per_tick) + generation_Rate = initial(generation_rate) + to_chat(user, SPAN_NOTICE("You switch \the [src]'s power production mode to ECO. 0% Fuel usage, 0% power output")) + icon_state = "[initial(icon_state)]" + if(owner) + owner.update_icon() + /obj/item/mech_equipment/power_generator/fueled/get_hardpoint_maptext() - return "[fuel_amount]/[fuel_max]" + return "[fuel_amount]/[fuel_max] - [fuel_usage_per_tick]" /obj/item/mech_equipment/power_generator/fueled/plasma name = "plasma powered mech-mountable power generator" - desc = "a plasma-fueled mech power generator, creates 5 KW out of 1 sheet of plasma at a rate of 0.25 KW." + desc = "a plasma-fueled mech power generator, creates 5 KW out of 1 sheet of plasma at a rate of 0.25 KW. Fully stocked it generates 35 KW in total." + icon_state = "mech_generator_plasma" generation_rate = 250 // each sheet is 5000 watts fuel_usage_per_tick = 50 @@ -531,7 +593,8 @@ /obj/item/mech_equipment/power_generator/fueled/welding name ="welding fuel powered mech-mountable power generator" - desc = "a mech mounted generator that runs off welding fuel, creates 1 KW out of 10 units of welding fuel, at a rate of 0.1 KW" + desc = "a mech mounted generator that runs off welding fuel, creates 1 KW out of 10 units of welding fuel, at a rate of 0.1 KW. Fully stocked it generates 20 KW in total." + icon_state = "mech_generator_welding" generation_rate = 100 fuel_usage_per_tick = 1 /// can generate 20000 power @@ -550,9 +613,13 @@ if(is_drainable(I) && I.reagents.total_volume) I.reagents.trans_to_holder(reagents, 10, 1, FALSE) else if(I.reagents && I.reagent_flags & REFILLABLE) - reagents.trans_to_holder(I.reagents, 10, 1 FALSE) + reagents.trans_to_holder(I.reagents, 10, 1, FALSE) /obj/item/mech_equipment/power_generator/fueled/welding/onMechTick() + // dont run if we aren't on + if(!mode) + sound_loop?.stop() + return chamberReagent.clear_reagents() reagents.trans_to_holder(chamberReagent, 1, 1, FALSE) if(chamberReagent.has_reagent("fuel")) @@ -572,6 +639,15 @@ // refund if none of it gets turned into power for qol reasons if(amountReturned == generation_rate) chamberReagent.trans_to_holder(reagents, 1, 1, FALSE) + if(fuel > fuel_usage_per_tick) + chamberReagent.trans_id_to(reagents, "fuel", chamberReagent.total_volume - fuel_usage_per_tick, TRUE) + if(QDELETED(sound_loop)) + sound_loop = new(_interval = 2 SECONDS, duration = 10 SECONDS, interval_variance = 0, + _source = owner, _soundin = 'sound/mechs/mech_generator.ogg' , _vol = 25 * mode, _vary = 0, _extrarange = mode * 3, + _falloff = 0, _is_global = FALSE, _use_pressure = TRUE) + else + // extend it artificially. + sound_loop.end_time = world.time + 10 SECONDS fuel_amount = reagents.total_volume /obj/item/mech_equipment/towing_hook diff --git a/code/modules/mechs/interface/screen_objects.dm b/code/modules/mechs/interface/screen_objects.dm index f5af403c526..0926f28654c 100644 --- a/code/modules/mechs/interface/screen_objects.dm +++ b/code/modules/mechs/interface/screen_objects.dm @@ -128,7 +128,7 @@ if(modifiers["ctrl"]) if(owner.hardpoints_locked) to_chat(usr, SPAN_WARNING("Hardpoint ejection system is locked.")) else if(owner.remove_system(hardpoint_tag)) - icon_state = "hardpoint" + update_system_info() to_chat(usr, SPAN_NOTICE("You disengage and discard the system mounted to your [hardpoint_tag] hardpoint.")) else to_chat(usr, SPAN_DANGER("You fail to remove the system mounted to your [hardpoint_tag] hardpoint.")) else if(modifiers["shift"] && holding) holding.attack_self(usr) diff --git a/code/modules/mechs/mech.dm b/code/modules/mechs/mech.dm index a250f61e517..c5527fcde7b 100644 --- a/code/modules/mechs/mech.dm +++ b/code/modules/mechs/mech.dm @@ -50,6 +50,8 @@ var/list/hardpoints = list() var/hardpoints_locked var/maintenance_protocols + /// For equipment that has a process based on mech Life tick + var/list/obj/item/mech_equipment/tickers = list() // Material var/material/material = MATERIAL_STEEL diff --git a/code/modules/mechs/mech_interaction.dm b/code/modules/mechs/mech_interaction.dm index 1f6fe1a7d8c..45e9b4f06b7 100644 --- a/code/modules/mechs/mech_interaction.dm +++ b/code/modules/mechs/mech_interaction.dm @@ -132,7 +132,10 @@ setClickCooldown(arms_action_delay()) playsound(src.loc, arms.punch_sound, 45 + 25 * (arms.melee_damage / 50), -1) if(arms) - return A.attack_generic(src, arms.melee_damage, "attacked") + if(user.a_intent == I_HURT) + return A.attack_generic(src, arms.melee_damage, "attacked") + else + return A.attackby(arms, user, params) /// Checks the mech for places to store the ore. /mob/living/exosuit/proc/getOreCarrier() @@ -301,7 +304,7 @@ for(var/hardpoint in hardpoints) if(istype(hardpoints[hardpoint], /obj/item/mech_equipment/auto_mender)) var/obj/item/mech_equipment/auto_mender/mend = hardpoints[hardpoint] - choices["[hardpoin] - [mend.trauma_charges_stored]/[mend.trauma_storage_max] charges"] = mend + choices["[hardpoint] - [mend.trauma_charges_stored]/[mend.trauma_storage_max] charges"] = mend var/obj/item/mech_equipment/auto_mender/choice = null if(!length(choices)) return diff --git a/code/modules/mechs/mech_life.dm b/code/modules/mechs/mech_life.dm index 9ed0bbecbde..c6047feb4f6 100644 --- a/code/modules/mechs/mech_life.dm +++ b/code/modules/mechs/mech_life.dm @@ -16,8 +16,19 @@ radio.on = (head && head.radio && head.radio.is_functional() && get_cell()) var/powered = FALSE - if(get_cell()) - powered = get_cell().drain_power(0, 0, calc_power_draw()) > 0 + var/obj/item/cell/mech_cell = get_cell(TRUE) + for(var/obj/item/mech_equipment/ticker in tickers) + if(istype(ticker, /obj/item/mech_equipment/power_generator)) + var/obj/item/mech_equipment/power_generator/gen = ticker + gen.onMechTick() + if(!mech_cell && gen.internal_cell) + mech_cell = gen.internal_cell + else if(mech_cell.charge < mech_cell.maxcharge) + var/diff = mech_cell.maxcharge - mech_cell.charge + mech_cell.give(internal_cell.drain_power(0,0, diff)) + + if(mech_cell) + powered = mech_cell.drain_power(0, 0, calc_power_draw()) > 0 if(!powered) //Shut down all systems @@ -27,6 +38,16 @@ var/obj/item/mech_equipment/M = hardpoints[hardpoint] if(istype(M) && M.active && M.passive_power_use) M.deactivate() + // for chassis charging cells + else if(body && body.cell_charge_rate && mech_cell.charge > 1000) + for(var/obj/item/cell/to_charge in body.storage_compartment) + if(mech_cell.charge < 1000) + break + var/chargeNeeded = to_charge.maxcharge - to_charge.charge + if(!chargeNeeded) + continue + to_charge.give(mech_cell.drain_power(0,0, chargeNeeded)) + body.update_air(hatch_closed && use_air) diff --git a/icons/mechs/mech_equipment.dmi b/icons/mechs/mech_equipment.dmi index 78cddcd85c416ebce12dccdef511b734735120be..16f768c37c2013aed54288ef9bfa72af397f984a 100644 GIT binary patch literal 27431 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 z zjg~2_T>TGne{x+M3`OWZc}t(3RY-i(+u7ozIN?|LeiLOF8>nvs%v6Nlp|qNm6VCh3 zVK#OHyvtmQu`zslxlLNb`PYk;TC=QGYRy2RVj3`jX};WKx%U~bs|^Ghx=rw#f^e-ndvBjU3+2Vtl%2|MLPFcqEHqYikLW+D_-A)>bc6b@=?&*|jnKe7SKninYRm&K^&o zZG}VR8%5vGL#oR3C;_>np@~0y--z^Qi z9Po&0Ha6zbRPyU*E7imM^>={V3p*|#g62djy>s^4v;`uu|FD!MS|aA)`!-6Y1w*f} za-=}@Wi<5k@_23I(l>XrxwaX{FNrwgfC*O9gd(179gqdY;&>`Pxeu9CTpjOiqgWRj+*Ksk(mf*0Y-R;Jfrtr?2OYUu`|D~yZjQA2{18M3-=&kf z3njNOACs3zFXxZE>#-WPRo9x(Dcpg6b+i#KY#^(o=-n1H$!4(n_B}DN@Ag9L>yvrn z&}{bSe!yem;^6E}7WN_uxG9v~mb^Z}l)HZMQP!aq1VG!sb`2LK*ssFaFWQ2-9mna0 zk6MhNao-y3lN-QBMKD?J=|5Rrz~ApH05@g#2snBmvoJ7*+mQi%VG3OIg<*U}EV}m4 zm@{eeALU`5wx}8`sp?e7tgIPL9J z$dV~z_SaQZ4@p-y_ZwFY(D?i-fnzkfQ^bAt(n^v(0;luFn;^A z!aLfWV`EC1uW#J(f=s_-piE;RNlgS1G3F)FFb5zOTmD{VD${Y)Mf~)GDtFkaNzxPf zkN77<#>pggF*_PT-B;FxRYS?zjvp9327^Acb6W8WGR9(4i1sa~|B$+V+#ER>5w`d{ zlIgsSZw|94FH7gMu<(Vz`0iW$?j2!lOmwkiuJrdQ=Zy8yp7;`P)SjyA@`Jtd$7B)n zVJ>;)H-lAUl}H7Hgf)<}ZrV!<%1k4vxT?`2k zI=`2+jVF9Hw_Mv9*xSQhR--vo8YtLqDtHGDg5uNSA5HO#`VL}%MqT|u|6HoIQDsj_ zUj}JgDkzx{Eksc+gjJ;>>cxT2{lalNigL67)=qj=5Ok+m<}R*S=TnXr34^)y-E8{V zm&nM-pz`zc<3ZP-t}!jQ*}jumpI?M(MJaSn&z5!2wTg&(_#-0G^ej23~2cgWp93)6FT~gxq3SyZ(FxZUVMZ`c}!76w4H~)c# z6~Jvwph>wKGJc-%gmj0(V*XRFXhz=T=3*cI(fx!A52zr}?j>80sOX``SPY@SRRR%} z_c}Hr1C}n*FG5opad3`s5C|PPuue)L5d3@r{}82=)#>FI6_bpL5y3WoBR9T+ZQ@U- z>D$+nePk;iIW%gIY?!3x!zdod55^ovo>R9+%noOrAO0=dn57K%mB9=6(L#;P{$hFS z5fhes<^Jwq?^KCqcL6PUQU=%%N-4{2jMGcGG|ZS*x9Q~H+9Z^iL>eH9^{N|*)4#Aa zf~;dA;*iuC4;N{nK|ZI?L*t=(=_pDZf#&V&I?C#ickj&n&lk_<1nC6~;)NHpEELdw z%+~X+*kZh4l%?dx@B6IZ_vNL(vB3HAvhJnBEGyEH_y3)pZ#R4ErXqBR;3y85QctxU&f(P-mr_ z-_M6o9cdHAkMA%D>9}+mKzihq9er0T`4Rt2f~F>DC^U*<@&BPAJSju?5zl+&9#Ra> zs@9*d!a31SZOz{Oth{^Gy2NT?FbL}V*Xg^&Ht#WJpVuBgAEKUe{piRGMP+X_74GC> z2aTT&h^|8KLt)Ao3*$rM|05&=3_OAEB^wp84(G14A0hC4K=dz{hZPb!AQh@8fg| zoQLEt%!F|LzWTaXLm${{`+33?k046acGQcz*s>;5So?-j(BA+AdKo&&L3<V}>@DZ>WtS$MBGU227PW%9IYV&7YtJlxr!}3S3@ad`8eY4)ZqTcy zfm^9ShFI%d=*+db|iUoj4Oo@5^D^h%FDq*7B!gVeMB8y*wh(->O zvwKW>bsb`|-A~92c@$f-!Xi?B@u!^-fz6@2qQOxf^IaO3`Z&

oKiHmX`A-%~WgD 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 diff --git a/icons/mechs/mech_weapon_overlays.dmi b/icons/mechs/mech_weapon_overlays.dmi index 28f0eb261bc6a542d53240dc1a126ebea75f823e..9e794934c74d69830e495e4770e9ab202897c3a5 100644 GIT binary patch literal 30576 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 WW4qTnYR7-yOHo$sWySN?LH`G_pnvfI literal 27064 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 diff --git a/sound/mechs/mech_generator.ogg b/sound/mechs/mech_generator.ogg new file mode 100644 index 0000000000000000000000000000000000000000..16b178d05ceae8079570a6bbfc640fc7f0243953 GIT binary patch literal 28805 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 @-o-k2=@ytPtd=8v1 z6z_Ua%Dhl&aF}k~T(ydh^FP9BM!*C1_k61Z#9PKU7n@e`!6t9es2n#1J(Mh&WGQOp)3$djC#q4kqQnkOWMBuL zUp`)5KHhD&?VbNzC=p;v)D>Q7ja=CN&j-~VUddx4yW;B9758D>2xn*X?3@cV?$sE-jA|J;>SFuq`%GI)zA=-Y(F8 E0r4bSX#fBK literal 0 HcmV?d00001 From bd537a6b20a7d9faa621306b614fce56732197cd Mon Sep 17 00:00:00 2001 From: MLGTASTICa Date: Thu, 30 Nov 2023 16:48:05 +0200 Subject: [PATCH 12/48] fix --- code/modules/mechs/equipment/utility.dm | 4 ++-- code/modules/mechs/mech_life.dm | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/code/modules/mechs/equipment/utility.dm b/code/modules/mechs/equipment/utility.dm index 8d16f7dbdf8..eb0049c72b1 100644 --- a/code/modules/mechs/equipment/utility.dm +++ b/code/modules/mechs/equipment/utility.dm @@ -534,7 +534,7 @@ if(0) mode = 1 fuel_usage_per_tick = initial(fuel_usage_per_tick) * 0.1 - generation_Rate = initial(generation_rate) * 0.2 + generation_rate = initial(generation_rate) * 0.2 to_chat(user, SPAN_NOTICE("You switch \the [src]'s power production mode to ECO. 10% Fuel usage, 20% power output")) icon_state = "[initial(icon_state)]_on" if(owner) @@ -561,7 +561,7 @@ if(3) mode = 0 fuel_usage_per_tick = initial(fuel_usage_per_tick) - generation_Rate = initial(generation_rate) + generation_rate = initial(generation_rate) to_chat(user, SPAN_NOTICE("You switch \the [src]'s power production mode to ECO. 0% Fuel usage, 0% power output")) icon_state = "[initial(icon_state)]" if(owner) diff --git a/code/modules/mechs/mech_life.dm b/code/modules/mechs/mech_life.dm index c6047feb4f6..083216bbd19 100644 --- a/code/modules/mechs/mech_life.dm +++ b/code/modules/mechs/mech_life.dm @@ -25,7 +25,7 @@ mech_cell = gen.internal_cell else if(mech_cell.charge < mech_cell.maxcharge) var/diff = mech_cell.maxcharge - mech_cell.charge - mech_cell.give(internal_cell.drain_power(0,0, diff)) + mech_cell.give(gen.internal_cell.drain_power(0,0, diff)) if(mech_cell) powered = mech_cell.drain_power(0, 0, calc_power_draw()) > 0 From cae206b0a14ba306bfbb9448e3939e556f2f1194 Mon Sep 17 00:00:00 2001 From: MLGTASTICa Date: Thu, 30 Nov 2023 17:11:56 +0200 Subject: [PATCH 13/48] fixes for multiple bugs --- code/modules/mechs/equipment/medical.dm | 3 ++- code/modules/mechs/equipment/utility.dm | 14 +++++++++++++- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/code/modules/mechs/equipment/medical.dm b/code/modules/mechs/equipment/medical.dm index 19479366606..dd6909d6dc2 100644 --- a/code/modules/mechs/equipment/medical.dm +++ b/code/modules/mechs/equipment/medical.dm @@ -104,7 +104,7 @@ name = "\improper exosuit auto-mender" desc = "A mech-designed and equipped medical system for fast and automatic application of advanced trauma treatments to pacients. Makes use of medical gear found in trauma kits." icon_state = "mech_mender" - restricted_hardpoints = list(HARDPOINT_BACK) + restricted_hardpoints = list(HARDPOINT_LEFT_HAND, HARDPOINT_RIGHT_HAND) restricted_software = list(MECH_SOFTWARE_MEDICAL) equipment_delay = 30 //don't spam it on people pls active_power_use = 0 //Usage doesn't really require power. @@ -129,6 +129,7 @@ if(!target.Adjacent(mech)) to_chat(user, SPAN_NOTICE("You need to be next to \the [target] to start mending them!")) mending_target = target + mending_loop() /obj/item/mech_equipment/auto_mender/attackby(obj/item/I, mob/living/user, params) . = ..() diff --git a/code/modules/mechs/equipment/utility.dm b/code/modules/mechs/equipment/utility.dm index eb0049c72b1..03c460517a8 100644 --- a/code/modules/mechs/equipment/utility.dm +++ b/code/modules/mechs/equipment/utility.dm @@ -523,6 +523,16 @@ else // extend it artificially. sound_loop.end_time = world.time + 10 SECONDS + sound_loop.vol = mode * 25 + sound_loop.extrarange = mode * 3 + +/obj/item/mech_equipment/power_generator/fueled/installed(mob/living/exosuit/_owner, hardpoint) + . = ..() + _owner.tickers.Add(src) + +/obj/item/mech_equipment/power_generator/fueled/uninstalled() + . = ..() + owner.tickers.Remove(src) @@ -562,7 +572,7 @@ mode = 0 fuel_usage_per_tick = initial(fuel_usage_per_tick) generation_rate = initial(generation_rate) - to_chat(user, SPAN_NOTICE("You switch \the [src]'s power production mode to ECO. 0% Fuel usage, 0% power output")) + to_chat(user, SPAN_NOTICE("You switch \the [src]'s power production mode to OFF. 0% Fuel usage, 0% power output")) icon_state = "[initial(icon_state)]" if(owner) owner.update_icon() @@ -648,6 +658,8 @@ else // extend it artificially. sound_loop.end_time = world.time + 10 SECONDS + sound_loop.vol = mode * 25 + sound_loop.extrarange = mode * 3 fuel_amount = reagents.total_volume /obj/item/mech_equipment/towing_hook From 2444641255b2d0cb6df36edaa7535284b604b1f2 Mon Sep 17 00:00:00 2001 From: MLGTASTICa Date: Fri, 1 Dec 2023 01:08:10 +0200 Subject: [PATCH 14/48] Fixes mech breathing , lts mechs be built without arms/head, Additional handlign for no head / arms , component gibbing , mech interaction for generators./ --- code/modules/mechs/components/_components.dm | 25 ++++++++++++ code/modules/mechs/components/arms.dm | 2 + code/modules/mechs/components/body.dm | 2 +- code/modules/mechs/components/frame.dm | 2 +- code/modules/mechs/components/head.dm | 2 + code/modules/mechs/equipment/utility.dm | 10 ++--- code/modules/mechs/mech_construction.dm | 2 + code/modules/mechs/mech_interaction.dm | 43 ++++++++++++++++++++ code/modules/mechs/mech_life.dm | 13 ++++-- 9 files changed, 90 insertions(+), 11 deletions(-) diff --git a/code/modules/mechs/components/_components.dm b/code/modules/mechs/components/_components.dm index f48be00aed0..a3cc5e4fbdd 100644 --- a/code/modules/mechs/components/_components.dm +++ b/code/modules/mechs/components/_components.dm @@ -20,6 +20,11 @@ //var/material/reinforcement = null var/decal var/power_use = 0 + /// how many hits do we have to get to gib once we hit max damage + var/gib_hits_needed = 7 + var/gib_hits = 0 + /// wheter or not this component can just blow up + var/can_gib = FALSE /obj/item/mech_component/proc/set_colour(new_colour) var/last_colour = color @@ -93,6 +98,26 @@ if(damage_state == MECH_COMPONENT_DAMAGE_DAMAGED_TOTAL) playsound(loc, 'sound/mechs/critdestr.ogg', 50) + if(total_damage == max_damage) + gib_hits++ + if(gib_hits > gib_hits_needed && can_gib) + var/mob/living/exosuit/owner = loc + if(!istype(owner)) + return + forceMove(NULLSPACE) + switch(type) + if(/obj/item/mech_component/manipulators) + owner.arms = null + if(/obj/item/mech_component/sensors) + owner.head = null + if(/obj/item/mech_component/propulsion) + owner.legs = null + if(/obj/item/mech_component/chassis) + owner.body = null + for(var/hardpoint in has_hardpoints) + owner.remove_system(hardpoint, null, TRUE) + qdel(src) + /obj/item/mech_component/proc/ready_to_install() return TRUE diff --git a/code/modules/mechs/components/arms.dm b/code/modules/mechs/components/arms.dm index 31e312a6505..f219ac126d4 100644 --- a/code/modules/mechs/components/arms.dm +++ b/code/modules/mechs/components/arms.dm @@ -6,6 +6,8 @@ power_use = 10 matter = list(MATERIAL_STEEL = 10) + can_gib = TRUE + gib_hits_needed = 10 var/melee_damage = WEAPON_FORCE_PAINFUL var/action_delay = 15 var/obj/item/robot_parts/robot_component/actuator/motivator diff --git a/code/modules/mechs/components/body.dm b/code/modules/mechs/components/body.dm index 7168d5992f0..b3176b924aa 100644 --- a/code/modules/mechs/components/body.dm +++ b/code/modules/mechs/components/body.dm @@ -105,7 +105,7 @@ . = ..() air_supply = new /obj/machinery/portable_atmospherics/canister/air(src) storage_compartment = new(src) - cockpit = new(20) + cockpit = new(800) if(loc) cockpit.equalize(loc.return_air()) diff --git a/code/modules/mechs/components/frame.dm b/code/modules/mechs/components/frame.dm index c972ff5f4b1..c6c89bbe60e 100644 --- a/code/modules/mechs/components/frame.dm +++ b/code/modules/mechs/components/frame.dm @@ -225,7 +225,7 @@ // Final construction step if(QUALITY_SCREW_DRIVING) // Check for basic components. - if(!(arms && legs && head && body)) + if(!(legs && body)) to_chat(user, SPAN_WARNING("There are still parts missing from \the [src].")) return diff --git a/code/modules/mechs/components/head.dm b/code/modules/mechs/components/head.dm index 76581ec7cca..eb1d7d55a9c 100644 --- a/code/modules/mechs/components/head.dm +++ b/code/modules/mechs/components/head.dm @@ -6,6 +6,8 @@ has_hardpoints = list(HARDPOINT_HEAD) power_use = 15 matter = list(MATERIAL_STEEL = 5, MATERIAL_GLASS = 4) + can_gib = TRUE + gib_hits_needed = 5 var/vision_flags = NONE var/see_invisible = 0 var/active_sensors = FALSE diff --git a/code/modules/mechs/equipment/utility.dm b/code/modules/mechs/equipment/utility.dm index 03c460517a8..9954fc6c041 100644 --- a/code/modules/mechs/equipment/utility.dm +++ b/code/modules/mechs/equipment/utility.dm @@ -473,8 +473,8 @@ restricted_hardpoints = list(HARDPOINT_LEFT_SHOULDER, HARDPOINT_RIGHT_SHOULDER) restricted_software = list(MECH_SOFTWARE_UTILITY) var/obj/item/cell/internal_cell - /// 50 power per mech life tick - var/generation_rate = 50 + /// 50 power per mech life tick , adjust for cell RATE + var/generation_rate = 50 * CELLRATE /obj/item/mech_equipment/power_generator/Initialize() . = ..() @@ -534,8 +534,6 @@ . = ..() owner.tickers.Remove(src) - - /obj/item/mech_equipment/power_generator/fueled/attack_self(mob/user) . = ..() if(. && owner) @@ -621,8 +619,10 @@ /obj/item/mech_equipment/power_generator/fueled/welding/attackby(obj/item/I, mob/living/user, params) . = ..() if(is_drainable(I) && I.reagents.total_volume) + to_chat(user, SPAN_NOTICE("You transfer 10 units of substance from \the [I] to \the [src]'s internal fuel storage.")) I.reagents.trans_to_holder(reagents, 10, 1, FALSE) else if(I.reagents && I.reagent_flags & REFILLABLE) + to_chat(user, SPAN_NOTICE("You drain 10 units of substance from \the [src] to \the [I].")) reagents.trans_to_holder(I.reagents, 10, 1, FALSE) /obj/item/mech_equipment/power_generator/fueled/welding/onMechTick() @@ -645,7 +645,7 @@ return // min needed for combustion if(fuel > 0.25) - var/amountReturned = internal_cell?.give(round(generation_rate * fuel)) + var/amountReturned = internal_cell?.give(generation_rate * fuel) // refund if none of it gets turned into power for qol reasons if(amountReturned == generation_rate) chamberReagent.trans_to_holder(reagents, 1, 1, FALSE) diff --git a/code/modules/mechs/mech_construction.dm b/code/modules/mechs/mech_construction.dm index 0d4ba1e9679..600780d1690 100644 --- a/code/modules/mechs/mech_construction.dm +++ b/code/modules/mechs/mech_construction.dm @@ -130,6 +130,8 @@ if(system_hardpoint == selected_hardpoint) clear_selected_hardpoint() hardpoints[system_hardpoint] = null + // Remove this from screens. Would just be left on a player screen before , SPCR - 2023 + system.screen_loc = null var/obj/item/mech_equipment/ME = system if(istype(ME)) ME.uninstalled() diff --git a/code/modules/mechs/mech_interaction.dm b/code/modules/mechs/mech_interaction.dm index 45e9b4f06b7..54764564338 100644 --- a/code/modules/mechs/mech_interaction.dm +++ b/code/modules/mechs/mech_interaction.dm @@ -273,6 +273,7 @@ to_chat(user, SPAN_WARNING("\The [I] could not be installed in that hardpoint.")) return + /// Gun reloading handling if(istype(I, /obj/item/ammo_magazine)|| istype(I, /obj/item/ammo_casing)) if(!maintenance_protocols) to_chat(user, SPAN_NOTICE("\The [src] needs to be in maintenance mode to reload its guns!")) @@ -299,6 +300,7 @@ if(2) to_chat(user, SPAN_NOTICE("You partially reload one of the existing ammo magazines inside of \the [chosen].")) + /// Medical mender handling if(istype(I, /obj/item/stack/medical/advanced/bruise_pack)) var/list/choices = list() for(var/hardpoint in hardpoints) @@ -318,6 +320,47 @@ choice.attackby(I, user) return + /// Plasma generator handling + if(istype(I, /obj/item/stack/material/plasma)) + var/list/choices = list() + for(var/hardpoint in hardpoints) + if(istype(hardpoints[hardpoint], /obj/item/mech_equipment/power_generator/fueled/plasma)) + var/obj/item/mech_equipment/power_generator/fueled/plasma/gen = hardpoints[hardpoint] + choices["[hardpoint] - [gen.fuel_amount]/[gen.fuel_max]"] = gen + var/obj/item/mech_equipment/power_generator/fueled/plasma/chosen = null + if(!length(choices)) + return + if(length(choices)==1) + chosen = choices[choices[1]] + else + var/chosenGen = input("Select generator to refill") as null|anything in choices + if(chosenGen) + chosen = choices[chosenGen] + if(chosen) + chosen.attackby(I, user) + return + + /// Welding generator handling + if(is_drainable(I)) + var/list/choices = list() + for(var/hardpoint in hardpoints) + if(istype(hardpoints[hardpoint], /obj/item/mech_equipment/power_generator/fueled/welding)) + var/obj/item/mech_equipment/power_generator/fueled/welding/gen = hardpoints[hardpoint] + choices["[hardpoint] - [gen.fuel_amount]/[gen.fuel_max]"] = gen + var/obj/item/mech_equipment/power_generator/fueled/welding/chosen = null + if(!length(choices)) + return + if(length(choices)==1) + chosen = choices[choices[1]] + else + var/chosenGen = input("Select generator to refill") as null|anything in choices + if(chosenGen) + chosen = choices[chosenGen] + if(chosen) + chosen.attackby(I, user) + return + + else if(user.a_intent != I_HELP) if(attack_tool(I, user)) return diff --git a/code/modules/mechs/mech_life.dm b/code/modules/mechs/mech_life.dm index 083216bbd19..5988b586f2b 100644 --- a/code/modules/mechs/mech_life.dm +++ b/code/modules/mechs/mech_life.dm @@ -25,7 +25,7 @@ mech_cell = gen.internal_cell else if(mech_cell.charge < mech_cell.maxcharge) var/diff = mech_cell.maxcharge - mech_cell.charge - mech_cell.give(gen.internal_cell.drain_power(0,0, diff)) + mech_cell.give(gen.internal_cell.use(diff)) if(mech_cell) powered = mech_cell.drain_power(0, 0, calc_power_draw()) > 0 @@ -39,14 +39,17 @@ if(istype(M) && M.active && M.passive_power_use) M.deactivate() // for chassis charging cells - else if(body && body.cell_charge_rate && mech_cell.charge > 1000) + var/chargeUsed = 0 + if(powered && body && body.cell_charge_rate && mech_cell.charge > 1000) for(var/obj/item/cell/to_charge in body.storage_compartment) if(mech_cell.charge < 1000) break - var/chargeNeeded = to_charge.maxcharge - to_charge.charge + if(chargeUsed > body.cell_charge_rate) + break + var/chargeNeeded = min(to_charge.maxcharge - to_charge.charge, body.cell_charge_rate) if(!chargeNeeded) continue - to_charge.give(mech_cell.drain_power(0,0, chargeNeeded)) + chargeUsed += to_charge.give(mech_cell.drain_power(0,0, chargeNeeded)) body.update_air(hatch_closed && use_air) @@ -155,6 +158,8 @@ if(head) sight = head.get_sight(powered) see_invisible = head.get_invisible(powered) + else if(hatch_closed) + sight &= BLIND if(body && (body.pilot_coverage < 100 || body.transparent_cabin) || !hatch_closed) sight &= ~BLIND From 38310383e49da10e447a376a147d00a593fe424d Mon Sep 17 00:00:00 2001 From: MLGTASTICa Date: Fri, 1 Dec 2023 02:10:49 +0200 Subject: [PATCH 15/48] fixes + the beginning of the forklifts. --- code/modules/mechs/components/_components.dm | 1 + code/modules/mechs/components/arms.dm | 2 ++ code/modules/mechs/components/body.dm | 10 ++++++++- code/modules/mechs/equipment/_equipment.dm | 2 +- code/modules/mechs/equipment/medical.dm | 22 +++++++++---------- .../modules/mechs/interface/screen_objects.dm | 1 + code/modules/mechs/mech_damage.dm | 3 +++ code/modules/mechs/mech_interaction.dm | 7 ++++++ code/modules/mechs/mech_life.dm | 13 +++++++---- 9 files changed, 44 insertions(+), 17 deletions(-) diff --git a/code/modules/mechs/components/_components.dm b/code/modules/mechs/components/_components.dm index a3cc5e4fbdd..092c4406a4b 100644 --- a/code/modules/mechs/components/_components.dm +++ b/code/modules/mechs/components/_components.dm @@ -116,6 +116,7 @@ owner.body = null for(var/hardpoint in has_hardpoints) owner.remove_system(hardpoint, null, TRUE) + owner.update_icon() qdel(src) /obj/item/mech_component/proc/ready_to_install() diff --git a/code/modules/mechs/components/arms.dm b/code/modules/mechs/components/arms.dm index f219ac126d4..a49ccbe499e 100644 --- a/code/modules/mechs/components/arms.dm +++ b/code/modules/mechs/components/arms.dm @@ -10,6 +10,8 @@ gib_hits_needed = 10 var/melee_damage = WEAPON_FORCE_PAINFUL var/action_delay = 15 + /// if they can force open powered doors + var/can_force_doors = TRUE var/obj/item/robot_parts/robot_component/actuator/motivator tool_qualities = list( QUALITY_HAMMERING = 30, diff --git a/code/modules/mechs/components/body.dm b/code/modules/mechs/components/body.dm index b3176b924aa..a8fcc7256dd 100644 --- a/code/modules/mechs/components/body.dm +++ b/code/modules/mechs/components/body.dm @@ -105,7 +105,7 @@ . = ..() air_supply = new /obj/machinery/portable_atmospherics/canister/air(src) storage_compartment = new(src) - cockpit = new(800) + cockpit = new(500) if(loc) cockpit.equalize(loc.return_air()) @@ -283,3 +283,11 @@ power_use = 50 climb_time = 35 //Takes longer to climb into, but is beefy as HELL. matter = list(MATERIAL_STEEL = 50, MATERIAL_URANIUM = 20, MATERIAL_PLASTEEL = 20) + +/obj/item/mech_component/chassis/forklift + name = "forklift chassis" + desc = "Has an integrated clamp for the industrial relocation of resources. Are you ready to lift?" + pilot_coverage = 30 + max_damage = 100 + mech_health = 200 + matter = list(MATERIAL_STEEL = 20, MATERIAL_PLASTIC = 10) diff --git a/code/modules/mechs/equipment/_equipment.dm b/code/modules/mechs/equipment/_equipment.dm index 4ac73044b50..9c984671118 100644 --- a/code/modules/mechs/equipment/_equipment.dm +++ b/code/modules/mechs/equipment/_equipment.dm @@ -137,7 +137,7 @@ /obj/item/mech_equipment/mounted_system/resolve_attackby(atom/A, mob/user, params) // foward attackbys only when we are installed . if(ismech(loc)) - return holding.attackby(A, user, params) + return A.attackby(holding, user, params) else ..() /obj/item/mech_equipment/mounted_system/Destroy() diff --git a/code/modules/mechs/equipment/medical.dm b/code/modules/mechs/equipment/medical.dm index dd6909d6dc2..9b0422d534d 100644 --- a/code/modules/mechs/equipment/medical.dm +++ b/code/modules/mechs/equipment/medical.dm @@ -160,12 +160,14 @@ if(!affecting || (affecting && affecting.is_bandaged())) for(var/zone in BP_ALL_LIMBS) checking = mending_target.organs_by_name[zone] - if(checking.is_bandaged()) + if(checking.is_bandaged() && checking.damage < 1) continue - if(checking.damage > affecting.damage) + if(checking.damage > affecting?.damage) affecting = checking if(!affecting) + mending_target = null + return for(var/datum/wound/W in affecting.wounds) @@ -173,21 +175,19 @@ mending_target = null affecting = null return - if(W.internal) - continue - if(W.bandaged) + //if(W.internal || W.bandaged) + // continue + if(W.damage < 1) continue if(!trauma_charges_stored) break - if(!do_mob(mech, mending_target, W.damage/5)) + if(!do_mob(mech.get_mob(), mending_target, W.damage/5)) to_chat(mech.get_mob(), SPAN_NOTICE("You must stand still to bandage wounds.")) mending_target = null affecting = null break - if(W.internal) - continue - if(W.bandaged) - continue + //if(W.internal || W.bandaged) + // continue if (W.current_stage <= W.max_bleeding_stage) mech.visible_message( SPAN_NOTICE("\The [mech] cleans \a [W.desc] on [mending_target]'s [affecting.name] and seals the edges with bioglue."), @@ -206,7 +206,7 @@ W.bandage() W.heal_damage(10) // If it doesn't cancel or run out of kits just repeat for every external organ. - if(affecting.is_bandaged()) + if(affecting.is_bandaged() && affecting.damage < 1) affecting = null mending_loop() diff --git a/code/modules/mechs/interface/screen_objects.dm b/code/modules/mechs/interface/screen_objects.dm index 0926f28654c..71853856cbb 100644 --- a/code/modules/mechs/interface/screen_objects.dm +++ b/code/modules/mechs/interface/screen_objects.dm @@ -51,6 +51,7 @@ if(holding) holding.screen_loc = screen_loc /obj/screen/movable/exosuit/hardpoint/proc/update_system_info() + maptext = null // No point drawing it if we have no item to use or nobody to see it. if(!holding || !owner) diff --git a/code/modules/mechs/mech_damage.dm b/code/modules/mechs/mech_damage.dm index 4ac5b950af8..3b99c7add3f 100644 --- a/code/modules/mechs/mech_damage.dm +++ b/code/modules/mechs/mech_damage.dm @@ -124,6 +124,9 @@ /mob/living/exosuit/bullet_act(obj/item/projectile/P, var/def_zone) var/hit_dir = get_dir(P.starting, src) def_zone = zoneToComponent(def_zone) + /// aiming for soemthing the mech doesnt have + if(!def_zone) + return PROJECTILE_FORCE_MISS if (P.is_hot() >= HEAT_MOBIGNITE_THRESHOLD) IgniteMob() diff --git a/code/modules/mechs/mech_interaction.dm b/code/modules/mechs/mech_interaction.dm index 54764564338..71ff4d20208 100644 --- a/code/modules/mechs/mech_interaction.dm +++ b/code/modules/mechs/mech_interaction.dm @@ -135,6 +135,13 @@ if(user.a_intent == I_HURT) return A.attack_generic(src, arms.melee_damage, "attacked") else + if(istype(A, /obj/machinery/door/airlock)) + var/obj/machinery/door/airlock/door = A + if(door.powered && !door.locked && arms.can_force_doors) + to_chat(user, SPAN_NOTICE("You start forcing \the [door] open!")) + playsound(src, 'sound/machines/airlock_creaking.ogg', 100, 1, 5,5) + if(do_after(user, 3 SECONDS, A, FALSE)) + door.open(TRUE) return A.attackby(arms, user, params) /// Checks the mech for places to store the ore. diff --git a/code/modules/mechs/mech_life.dm b/code/modules/mechs/mech_life.dm index 5988b586f2b..80d1fa68c91 100644 --- a/code/modules/mechs/mech_life.dm +++ b/code/modules/mechs/mech_life.dm @@ -16,13 +16,13 @@ radio.on = (head && head.radio && head.radio.is_functional() && get_cell()) var/powered = FALSE - var/obj/item/cell/mech_cell = get_cell(TRUE) + var/obj/item/cell/mech_cell = get_cell() for(var/obj/item/mech_equipment/ticker in tickers) if(istype(ticker, /obj/item/mech_equipment/power_generator)) var/obj/item/mech_equipment/power_generator/gen = ticker gen.onMechTick() - if(!mech_cell && gen.internal_cell) - mech_cell = gen.internal_cell + if(mech_cell == gen.internal_cell) + continue else if(mech_cell.charge < mech_cell.maxcharge) var/diff = mech_cell.maxcharge - mech_cell.charge mech_cell.give(gen.internal_cell.use(diff)) @@ -63,8 +63,13 @@ /mob/living/exosuit/get_cell(force) RETURN_TYPE(/obj/item/cell) + if(power == MECH_POWER_ON || force) //For most intents we can assume that a powered off exosuit acts as if it lacked a cell - return body ? body.cell : null + . = body ? body.cell : null + if(!.) + for(var/obj/item/mech_equipment/power_generator/gen in tickers) + if(!. && gen.internal_cell) + . = gen.internal_cell return null From 3d15be7734fcb6a9686095308b16a269f1c3ce65 Mon Sep 17 00:00:00 2001 From: MLGTASTICa Date: Fri, 1 Dec 2023 10:28:14 +0200 Subject: [PATCH 16/48] forklifting championship part 1 --- code/modules/mechs/_mech_defines.dm | 1 + code/modules/mechs/components/body.dm | 3 +++ code/modules/mechs/components/frame.dm | 13 +++++++++++++ code/modules/mechs/components/legs.dm | 13 +++++++++++++ code/modules/mechs/equipment/utility.dm | 7 ++++++- icons/mechs/mech_equipment.dmi | Bin 27431 -> 27849 bytes icons/mechs/mech_parts.dmi | Bin 17901 -> 22515 bytes icons/mechs/mech_weapon_overlays.dmi | Bin 30576 -> 31188 bytes 8 files changed, 36 insertions(+), 1 deletion(-) diff --git a/code/modules/mechs/_mech_defines.dm b/code/modules/mechs/_mech_defines.dm index 5f6ccd7b0a6..eba15bba639 100644 --- a/code/modules/mechs/_mech_defines.dm +++ b/code/modules/mechs/_mech_defines.dm @@ -7,6 +7,7 @@ #define MECH_HUD_ICON 'icons/mechs/mech_hud.dmi' #define HARDPOINT_BACK "back" +#define HARDPOINT_FRONT "front" #define HARDPOINT_LEFT_HAND "left hand" #define HARDPOINT_RIGHT_HAND "right hand" #define HARDPOINT_LEFT_SHOULDER "left shoulder" diff --git a/code/modules/mechs/components/body.dm b/code/modules/mechs/components/body.dm index a8fcc7256dd..5ed1f15f738 100644 --- a/code/modules/mechs/components/body.dm +++ b/code/modules/mechs/components/body.dm @@ -287,6 +287,9 @@ /obj/item/mech_component/chassis/forklift name = "forklift chassis" desc = "Has an integrated clamp for the industrial relocation of resources. Are you ready to lift?" + icon_state = "seat-cockpit" + has_hardpoints = list(HARDPOINT_FRONT) + exosuit_desc_string = "a forklifting chassis" pilot_coverage = 30 max_damage = 100 mech_health = 200 diff --git a/code/modules/mechs/components/frame.dm b/code/modules/mechs/components/frame.dm index c6c89bbe60e..d075dd9a9b4 100644 --- a/code/modules/mechs/components/frame.dm +++ b/code/modules/mechs/components/frame.dm @@ -318,6 +318,9 @@ // Installing basic components. if(istype(I, /obj/item/mech_component/manipulators)) + if(istype(body), /obj/item/mech_component/forklift) + to_chat(user, SPAN_WARNING("\The [src]'s chassis can not support manipulators!")) + return if(arms) to_chat(user, SPAN_WARNING("\The [src] already has manipulators installed.")) return @@ -336,6 +339,9 @@ return legs = I else if(istype(I, /obj/item/mech_component/sensors)) + if(istype(body), /obj/item/mech_component/forklift) + to_chat(user, SPAN_WARNING("\The [src]'s chassis can not support sensors!")) + return if(head) to_chat(user, SPAN_WARNING("\The [src] already has a sensor array installed.")) return @@ -369,6 +375,13 @@ if(!user.unEquip(I)) return I.forceMove(src) + if(istype(MC, /obj/item/mech_component/chassis/forklift)) + if(arms) + arms.forcemove(get_turf(src)) + arms = null + if(head) + head.forceMove(get_turf(src)) + head = null visible_message(SPAN_NOTICE("\The [user] installs \the [I] into \the [src].")) playsound(user.loc, 'sound/machines/click.ogg', 50, 1) return 1 diff --git a/code/modules/mechs/components/legs.dm b/code/modules/mechs/components/legs.dm index 6e987ab8c5a..f9ecf5e48e6 100644 --- a/code/modules/mechs/components/legs.dm +++ b/code/modules/mechs/components/legs.dm @@ -106,3 +106,16 @@ power_use = 100 matter = list(MATERIAL_STEEL = 20, MATERIAL_URANIUM = 8) can_climb = FALSE + +/obj/item/mech_component/propulsion/wheels + name = "wheels" + exosuit_desc_string = "wheels" + desc = "A pair of wheels for any mobile vehicle" + icon_state = "wheels" + move_delay = 2 + turn_delay = 4 + max_damage = 70 + stomp_damage = 15 + power_use = 10 + matter = list(MATERIAL_STEEL = 4, MATERIAL_PLASTIC = 16) + can_climb = FALSE diff --git a/code/modules/mechs/equipment/utility.dm b/code/modules/mechs/equipment/utility.dm index 9954fc6c041..1c599803963 100644 --- a/code/modules/mechs/equipment/utility.dm +++ b/code/modules/mechs/equipment/utility.dm @@ -736,7 +736,7 @@ /obj/item/tool/mech_kit name = "mech toolkit" desc = "A robust selection of mech-sized tools." - icon_state = "engimplant=" + icon_state = "engimplant" force = WEAPON_FORCE_DANGEROUS worksound = WORKSOUND_DRIVER_TOOL flags = CONDUCT @@ -756,6 +756,11 @@ max_upgrades = 1 spawn_blacklisted = TRUE +/obj/item/mech_equipment/forklifting_system + name = "forklifting bars" + desc = "a set of forklifts bars. Can be used to elevate crates above by a level.. or impale someone at high enough speeds..." + icon_state = "forklift" + diff --git a/icons/mechs/mech_equipment.dmi b/icons/mechs/mech_equipment.dmi index 16f768c37c2013aed54288ef9bfa72af397f984a..4e2cdda919149c507dc2b0aef97bef6b69f4c23a 100644 GIT binary patch delta 8642 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 LEBP|nw?Y34xUJvY delta 8221 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 BXh;A6 From 136df4ee6bd736b755ba0eccf92506844ed7c562 Mon Sep 17 00:00:00 2001 From: MLGTASTICa Date: Fri, 1 Dec 2023 11:54:53 +0200 Subject: [PATCH 17/48] Sacrifices in the name of forklifting championships.. --- code/game/atoms.dm | 2 +- code/game/machinery/doors/door.dm | 4 +- code/game/objects/structures/catwalk.dm | 4 +- .../structures/crates_lockers/closets.dm | 4 +- code/game/objects/structures/lattice.dm | 4 +- code/game/objects/structures/window.dm | 4 +- code/modules/mechs/_mech_defines.dm | 5 ++ code/modules/mechs/components/frame.dm | 6 +- code/modules/mechs/equipment/_equipment.dm | 4 + code/modules/mechs/equipment/combat.dm | 57 ++++++------- code/modules/mechs/equipment/utility.dm | 79 +++++++++++++++++- code/modules/mechs/mech.dm | 8 -- code/modules/mechs/mech_interaction.dm | 3 +- code/modules/mechs/mech_life.dm | 16 ++-- code/modules/mechs/mech_movement.dm | 19 +++++ code/modules/multiz/structures.dm | 4 + code/modules/multiz/turf.dm | 16 ++-- icons/mechs/mech_equipment.dmi | Bin 27849 -> 28409 bytes icons/mechs/mech_parts.dmi | Bin 22515 -> 23082 bytes icons/mechs/mech_weapon_overlays.dmi | Bin 31188 -> 31414 bytes 20 files changed, 168 insertions(+), 71 deletions(-) diff --git a/code/game/atoms.dm b/code/game/atoms.dm index fe7d94739c7..043ba3acf83 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -649,7 +649,7 @@ its easier to just keep the beam vertical. /atom/movable/proc/fall_impact(turf/from, turf/dest) //If atom stands under open space, it can prevent fall, or not -/atom/proc/can_prevent_fall() +/atom/proc/can_prevent_fall(above, atom/movable/thing) return FALSE // Show a message to all mobs and objects in sight of this atom diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm index 6946ff4d385..b3cd1833cc3 100644 --- a/code/game/machinery/doors/door.dm +++ b/code/game/machinery/doors/door.dm @@ -53,8 +53,8 @@ GLOB.all_doors -= src ..() -/obj/machinery/door/can_prevent_fall() - return density +/obj/machinery/door/can_prevent_fall(above) + return above ? density : null /obj/machinery/door/attack_generic(mob/user, var/damage) if(damage >= resistance) diff --git a/code/game/objects/structures/catwalk.dm b/code/game/objects/structures/catwalk.dm index c920cc018de..f55105c31fb 100644 --- a/code/game/objects/structures/catwalk.dm +++ b/code/game/objects/structures/catwalk.dm @@ -91,5 +91,5 @@ return -/obj/structure/catwalk/can_prevent_fall() - return FALSE +/obj/structure/catwalk/can_prevent_fall(above) + return above ? FALSE : TRUE diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm index 5236cf9b3b7..ba0dcbe4661 100644 --- a/code/game/objects/structures/crates_lockers/closets.dm +++ b/code/game/objects/structures/crates_lockers/closets.dm @@ -42,8 +42,8 @@ var/store_mobs = 1 var/old_chance = 0 //Chance to have rusted closet content in it, from 0 to 100. Keep in mind that chance increases in maints -/obj/structure/closet/can_prevent_fall() - return TRUE +/obj/structure/closet/can_prevent_fall(above) + return above ? TRUE : FALSE /obj/structure/closet/Initialize(mapload) ..() diff --git a/code/game/objects/structures/lattice.dm b/code/game/objects/structures/lattice.dm index 11b79502719..469fdd9493b 100644 --- a/code/game/objects/structures/lattice.dm +++ b/code/game/objects/structures/lattice.dm @@ -81,5 +81,5 @@ return -/obj/structure/lattice/can_prevent_fall() - return TRUE +/obj/structure/lattice/can_prevent_fall(above) + return above ? FALSE : TRUE diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm index 3c8f5da4ce5..94ab6f04046 100644 --- a/code/game/objects/structures/window.dm +++ b/code/game/objects/structures/window.dm @@ -24,8 +24,8 @@ atmos_canpass = CANPASS_PROC -/obj/structure/window/can_prevent_fall() - return !is_fulltile() +/obj/structure/window/can_prevent_fall(above) + return above ? !is_fulltile() : FALSE /obj/structure/window/get_fall_damage(var/turf/from, var/turf/dest) var/damage = health * 0.4 * get_health_ratio() diff --git a/code/modules/mechs/_mech_defines.dm b/code/modules/mechs/_mech_defines.dm index eba15bba639..d1217122fa1 100644 --- a/code/modules/mechs/_mech_defines.dm +++ b/code/modules/mechs/_mech_defines.dm @@ -56,3 +56,8 @@ GLOBAL_LIST_INIT(mech_weapon_overlays, icon_states(MECH_WEAPON_OVERLAYS_ICON)) #define MECH_POWER_OFF 0 #define MECH_POWER_TRANSITION 1 #define MECH_POWER_ON 2 + +/// It will make update_icon be called on the equipment after every move +#define EQUIPFLAG_UPDTMOVE 1 +/// It will have pretick() called on it before the mech checks wheter or not is powered +#define EQUIPFLAG_PRETICK 2 diff --git a/code/modules/mechs/components/frame.dm b/code/modules/mechs/components/frame.dm index d075dd9a9b4..f8bddaa3390 100644 --- a/code/modules/mechs/components/frame.dm +++ b/code/modules/mechs/components/frame.dm @@ -318,7 +318,7 @@ // Installing basic components. if(istype(I, /obj/item/mech_component/manipulators)) - if(istype(body), /obj/item/mech_component/forklift) + if(istype(body, /obj/item/mech_component/chassis/forklift)) to_chat(user, SPAN_WARNING("\The [src]'s chassis can not support manipulators!")) return if(arms) @@ -339,7 +339,7 @@ return legs = I else if(istype(I, /obj/item/mech_component/sensors)) - if(istype(body), /obj/item/mech_component/forklift) + if(istype(body, /obj/item/mech_component/chassis/forklift)) to_chat(user, SPAN_WARNING("\The [src]'s chassis can not support sensors!")) return if(head) @@ -377,7 +377,7 @@ I.forceMove(src) if(istype(MC, /obj/item/mech_component/chassis/forklift)) if(arms) - arms.forcemove(get_turf(src)) + arms.forceMove(get_turf(src)) arms = null if(head) head.forceMove(get_turf(src)) diff --git a/code/modules/mechs/equipment/_equipment.dm b/code/modules/mechs/equipment/_equipment.dm index 9c984671118..3d1c281939d 100644 --- a/code/modules/mechs/equipment/_equipment.dm +++ b/code/modules/mechs/equipment/_equipment.dm @@ -20,6 +20,7 @@ var/passive_power_use = 0 // For gear that for some reason takes up power even if it's supposedly doing nothing (mech will idly consume power) var/mech_layer = MECH_COCKPIT_LAYER //For the part where it's rendered as mech gear var/active = FALSE + var/equipment_flags = 0 /obj/item/mech_equipment/proc/activate() active = TRUE @@ -27,6 +28,9 @@ /obj/item/mech_equipment/proc/deactivate() active = FALSE +/obj/item/mech_equipment/proc/pretick() + return FALSE + /obj/item/mech_equipment/attack() //Generally it's not desired to be able to attack with items return 0 diff --git a/code/modules/mechs/equipment/combat.dm b/code/modules/mechs/equipment/combat.dm index 950bb31934e..09207ac866f 100644 --- a/code/modules/mechs/equipment/combat.dm +++ b/code/modules/mechs/equipment/combat.dm @@ -813,6 +813,8 @@ icon_state = "mech_atmoshield" restricted_hardpoints = list(HARDPOINT_BACK) origin_tech = list(TECH_MATERIAL = 3, TECH_ENGINEERING = 6, TECH_PLASMA = 5) + // so it has update icon called everytime it moves + equipment_flags = EQUIPFLAG_UPDTMOVE /// Defines the amount of power drained per hit thats blocked var/damage_to_power_drain = 30 /// Are we toggled on ? @@ -848,13 +850,6 @@ last_toggle = world.time update_icon() -/obj/item/mech_equipment/shield_generator/proc/updateVisualBluff(targetDir) - visual_bluff.dir = targetDir - if(targetDir == NORTH) - visual_bluff.layer = MECH_UNDER_LAYER - else - visual_bluff.layer = MECH_ABOVE_LAYER - // Used to tell how effective we are against damage, /obj/item/mech_equipment/shield_generator/proc/getEffectiveness() return on @@ -870,6 +865,11 @@ return if(!(visual_bluff in mech.vis_contents)) mech.vis_contents.Add(visual_bluff) + visual_bluff.dir = mech.dir + if(visual_bluff.dir == NORTH) + visual_bluff.layer = MECH_UNDER_LAYER + else + visual_bluff.layer = MECH_ABOVE_LAYER if(last_toggle > world.time - 1 SECOND) if(on) flick("shield_raise", visual_bluff) @@ -918,7 +918,7 @@ if(!(visual_bluff in _owner.vis_contents)) _owner.vis_contents.Add(visual_bluff) visual_bluff.icon_state = "mech_shield_[hardpoint]" - updateVisualBluff(_owner.dir) + update_icon() /obj/item/mech_equipment/shield_generator/ballistic/uninstalled() owner.vis_contents.Remove(visual_bluff) @@ -937,42 +937,39 @@ playsound(get_turf(src), 'sound/weapons/shield/shieldblock.ogg', 50, 8) return damages -/obj/item/mech_equipment/shield_generator/ballistic/updateVisualBluff(targetDir) - visual_bluff.dir = targetDir +/obj/item/mech_equipment/shield_generator/ballistic/update_icon() + /// Not needed since we already have handling for visual bluffs layering + /// and since we dont use a shield. + + ..(skip = TRUE) + var/mob/living/exosuit/mech = loc + if(!istype(mech)) + return + if(!(visual_bluff in mech.vis_contents)) + mech.vis_contents.Add(visual_bluff) + visual_bluff.dir = mech.dir switch(get_hardpoint()) if(HARDPOINT_RIGHT_HAND) // i used a switch before and it doesnt work as intended for some fucking reason FOR EAST AND WEST >:( -SPCR - if(targetDir == NORTH) + if(visual_bluff.dir == NORTH) visual_bluff.layer = MECH_UNDER_LAYER - if(targetDir == EAST) + if(visual_bluff.dir == EAST) visual_bluff.layer = MECH_ABOVE_LAYER - if(targetDir == SOUTH) + if(visual_bluff.dir == SOUTH) visual_bluff.layer = MECH_ABOVE_LAYER - if(targetDir == WEST) + if(visual_bluff.dir == WEST) visual_bluff.layer = MECH_UNDER_LAYER return if(HARDPOINT_LEFT_HAND) - if(targetDir == NORTH) + if(visual_bluff.dir == NORTH) visual_bluff.layer = MECH_UNDER_LAYER - if(targetDir == EAST) + if(visual_bluff.dir == EAST) visual_bluff.layer = MECH_UNDER_LAYER - if(targetDir == SOUTH) + if(visual_bluff.dir == SOUTH) visual_bluff.layer = MECH_ABOVE_LAYER - if(targetDir == WEST) + if(visual_bluff.dir == WEST) visual_bluff.layer = MECH_ABOVE_LAYER return - - -/obj/item/mech_equipment/shield_generator/ballistic/update_icon() - /// Not needed since we already have handling for visual bluffs layering - /// and since we dont use a shield. - - ..(skip = TRUE) - var/mob/living/exosuit/mech = loc - if(!istype(mech)) - return - if(!(visual_bluff in mech.vis_contents)) - mech.vis_contents.Add(visual_bluff) visual_bluff.icon_state = "mech_shield_[get_hardpoint()]" /obj/item/mech_equipment/shield_generator/ballistic/attack_self(mob/user) diff --git a/code/modules/mechs/equipment/utility.dm b/code/modules/mechs/equipment/utility.dm index 1c599803963..0816d2b3319 100644 --- a/code/modules/mechs/equipment/utility.dm +++ b/code/modules/mechs/equipment/utility.dm @@ -472,6 +472,7 @@ icon_state = "mech_power" restricted_hardpoints = list(HARDPOINT_LEFT_SHOULDER, HARDPOINT_RIGHT_SHOULDER) restricted_software = list(MECH_SOFTWARE_UTILITY) + equipment_flags = EQUIPFLAG_PRETICK var/obj/item/cell/internal_cell /// 50 power per mech life tick , adjust for cell RATE var/generation_rate = 50 * CELLRATE @@ -489,8 +490,13 @@ to_chat(user, SPAN_NOTICE("You replace [src]'s cell!")) return -/obj/item/mech_equipment/power_generator/proc/onMechTick() +/obj/item/mech_equipment/power_generator/pretick() var/ungiven_power = internal_cell?.give(generation_rate) + if(owner && internal_cell) + var/obj/item/cell/batt = owner.get_cell(TRUE) + if(batt) + batt.give(internal_cell.use(batt.maxcharge - batt.charge)) + return ungiven_power /obj/item/mech_equipment/power_generator/installed(mob/living/exosuit/_owner, hardpoint) @@ -505,7 +511,7 @@ var/mode = 0 var/datum/repeating_sound/sound_loop = null -/obj/item/mech_equipment/power_generator/fueled/onMechTick() +/obj/item/mech_equipment/power_generator/fueled/pretick() // for when we arențt on if(!mode) sound_loop?.stop() @@ -625,7 +631,7 @@ to_chat(user, SPAN_NOTICE("You drain 10 units of substance from \the [src] to \the [I].")) reagents.trans_to_holder(I.reagents, 10, 1, FALSE) -/obj/item/mech_equipment/power_generator/fueled/welding/onMechTick() +/obj/item/mech_equipment/power_generator/fueled/welding/pretick() // dont run if we aren't on if(!mode) sound_loop?.stop() @@ -651,6 +657,10 @@ chamberReagent.trans_to_holder(reagents, 1, 1, FALSE) if(fuel > fuel_usage_per_tick) chamberReagent.trans_id_to(reagents, "fuel", chamberReagent.total_volume - fuel_usage_per_tick, TRUE) + if(internal_cell && owner) + var/obj/item/cell/batt = owner.get_cell(TRUE) + if(batt) + batt.give(internal_cell.use(batt.maxcharge - batt.charge)) if(QDELETED(sound_loop)) sound_loop = new(_interval = 2 SECONDS, duration = 10 SECONDS, interval_variance = 0, _source = owner, _soundin = 'sound/mechs/mech_generator.ogg' , _vol = 25 * mode, _vary = 0, _extrarange = mode * 3, @@ -756,10 +766,73 @@ max_upgrades = 1 spawn_blacklisted = TRUE +/// Fancy way to move someone up a z-level if you think about it.. /obj/item/mech_equipment/forklifting_system name = "forklifting bars" desc = "a set of forklifts bars. Can be used to elevate crates above by a level.. or impale someone at high enough speeds..." icon_state = "forklift" + restricted_hardpoints = list(HARDPOINT_FRONT) + origin_tech = list(TECH_ENGINEERING = 3, TECH_MATERIAL = 2) + var/atom/movable/currentlyLifting = null + var/obj/structure/forklift_platform/platform = null + var/lifted = FALSE + +/obj/item/mech_equipment/forklifting_system/Initialize() + . = ..() + platform = new(NULLSPACE) + platform.master = src + platform.forceMove(src) + +/obj/structure/forklift_platform + layer = TURF_LAYER + 0.5 + icon = MECH_EQUIPMENT_ICON + icon_state = "forklift_platform" + name = "forklift platform" + desc = "A fun way to reach new horizons. Mind the gap between.. small things fall through." + density = FALSE + anchored = TRUE + health = 200 + var/obj/item/mech_equipment/forklifting_system/master = null + +/obj/structure/forklift_platform/Destroy() + if(master) + master.platform = null + master = null + . = ..() + +/// We can prevent the fall of humans and structures , but everything else will just fall down +/obj/structure/forklift_platform/can_prevent_fall(above, atom/movable/mover) + if(!above) + if(ishuman(mover)) + return TRUE + if(isstructure(mover)) + return TRUE + return FALSE + +/obj/item/mech_equipment/forklifting_system/update_icon() + . = ..() + if(owner) + if(lifted) + icon_state = "forklift_lifted" + else + icon_state = "forklift" + + + +/obj/item/mech_equipment/forklifting_system/attack_self(mob/user) + . = ..() + + +/obj/item/mech_equipment/forklifting_system/afterattack(atom/target, mob/living/user, inrange, params) + . = ..() + if(. && inrange) + if(currentlyLifting) + currentlyLifting.forceMove(get_turf(target)) + to_chat(user, SPAN_NOTICE("You drop \the [currentlyLifting].")) + else if(ismovable(target)) + to_chat(user, SPAN_NOTICE("You start lifting \the [target] onto the hooks.")) + if(do_after(user, 2 SECONDS, target)) + currentlyLifting = target diff --git a/code/modules/mechs/mech.dm b/code/modules/mechs/mech.dm index c5527fcde7b..3bd5734cd6f 100644 --- a/code/modules/mechs/mech.dm +++ b/code/modules/mechs/mech.dm @@ -236,14 +236,6 @@ /mob/living/exosuit/GetIdCard() return access_card -/mob/living/exosuit/set_dir() - . = ..() - if(.) - update_pilots() - for(var/obj/item/mech_equipment/shield_generator/gen in contents) - if(gen && gen.visual_bluff) - gen.updateVisualBluff(dir) - /mob/living/exosuit/proc/return_temperature() return bodytemperature diff --git a/code/modules/mechs/mech_interaction.dm b/code/modules/mechs/mech_interaction.dm index 71ff4d20208..df850867e9e 100644 --- a/code/modules/mechs/mech_interaction.dm +++ b/code/modules/mechs/mech_interaction.dm @@ -137,8 +137,9 @@ else if(istype(A, /obj/machinery/door/airlock)) var/obj/machinery/door/airlock/door = A - if(door.powered && !door.locked && arms.can_force_doors) + if(door.stat & NOPOWER && !door.locked && arms.can_force_doors) to_chat(user, SPAN_NOTICE("You start forcing \the [door] open!")) + visible_message(SPAN_WARNING("\The [src] starts forcing \the [door] open!")) playsound(src, 'sound/machines/airlock_creaking.ogg', 100, 1, 5,5) if(do_after(user, 3 SECONDS, A, FALSE)) door.open(TRUE) diff --git a/code/modules/mechs/mech_life.dm b/code/modules/mechs/mech_life.dm index 80d1fa68c91..c695a4b7ad8 100644 --- a/code/modules/mechs/mech_life.dm +++ b/code/modules/mechs/mech_life.dm @@ -17,15 +17,13 @@ var/powered = FALSE var/obj/item/cell/mech_cell = get_cell() - for(var/obj/item/mech_equipment/ticker in tickers) - if(istype(ticker, /obj/item/mech_equipment/power_generator)) - var/obj/item/mech_equipment/power_generator/gen = ticker - gen.onMechTick() - if(mech_cell == gen.internal_cell) - continue - else if(mech_cell.charge < mech_cell.maxcharge) - var/diff = mech_cell.maxcharge - mech_cell.charge - mech_cell.give(gen.internal_cell.use(diff)) + for(var/hardpoint in hardpoints) + if(QDELETED(hardpoints[hardpoint])) + continue + var/obj/item/mech_equipment/equip = hardpoints[hardpoint] + if(!(equip.equipment_flags & EQUIPFLAG_PRETICK)) + continue + equip.pretick() if(mech_cell) powered = mech_cell.drain_power(0, 0, calc_power_draw()) > 0 diff --git a/code/modules/mechs/mech_movement.dm b/code/modules/mechs/mech_movement.dm index dac935b20b4..cc07858aec8 100644 --- a/code/modules/mechs/mech_movement.dm +++ b/code/modules/mechs/mech_movement.dm @@ -40,6 +40,25 @@ victim.forceMove(theDepths) visible_message("The [src] pushes [victim] downwards.") occupant_message("You can feel \the [src] step onto something.") + for(var/hardpoint in hardpoints) + if(!hardpoints[hardpoint]) + continue + var/obj/item/mech_equipment/thing = hardpoints[hardpoint] + if(!(thing.equipment_flags & EQUIPFLAG_UPDTMOVE)) + continue + thing.update_icon() + +/mob/living/exosuit/set_dir() + . = ..() + if(.) + update_pilots() + for(var/hardpoint in hardpoints) + if(!hardpoints[hardpoint]) + continue + var/obj/item/mech_equipment/thing = hardpoints[hardpoint] + if(!(thing.equipment_flags & EQUIPFLAG_UPDTMOVE)) + continue + thing.update_icon() /mob/living/exosuit/get_jetpack() for(var/hardpoint_thing in hardpoints) diff --git a/code/modules/multiz/structures.dm b/code/modules/multiz/structures.dm index 17377ed1302..59ad0902313 100644 --- a/code/modules/multiz/structures.dm +++ b/code/modules/multiz/structures.dm @@ -242,6 +242,10 @@ icon_state = "ramptop" layer = 2.4 +/obj/structure/multiz/stairs/can_prevent_fall(above) + return above ? FALSE : TRUE + + /obj/structure/multiz/stairs/enter icon_state = "ramptop" diff --git a/code/modules/multiz/turf.dm b/code/modules/multiz/turf.dm index 57f1b12bc1f..da01d672368 100755 --- a/code/modules/multiz/turf.dm +++ b/code/modules/multiz/turf.dm @@ -90,14 +90,14 @@ see multiz/movement.dm for some info. if(!below) return - if(catwalk != (locate(/obj/structure/catwalk) in src)) - return - - if(locate(/obj/structure/multiz/stairs) in src) - return + /// If anything on our turf stops falls downwards + for(var/atom/A in contents) + if(A.can_prevent_fall(FALSE, null)) + return + /// If anything below stops falls from above for(var/atom/A in below) - if(A.can_prevent_fall()) + if(A.can_prevent_fall(TRUE,null)) return return TRUE @@ -117,6 +117,10 @@ see multiz/movement.dm for some info. P.height = HEIGHT_LOW // We are shooting from above, this protects windows from damage return // We are done here + for(var/atom/A in contents) + if(A.can_prevent_fall(FALSE, mover)) + return + if(!mover.can_fall()) return diff --git a/icons/mechs/mech_equipment.dmi b/icons/mechs/mech_equipment.dmi index 4e2cdda919149c507dc2b0aef97bef6b69f4c23a..9f71d76432c3e0bbf06141170d23e4c73994eb4e 100644 GIT binary patch delta 9216 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 W(GyS)g#NPuJb(65zC`v-;Qs=0_2DZ3 diff --git a/icons/mechs/mech_parts.dmi b/icons/mechs/mech_parts.dmi index 52a045a1ff1d4c10c7ef4e7b991ae56081a89c2d..8f9998f2151c373d3413e63a1fedc37e529f8e8c 100644 GIT binary patch literal 23082 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 COSX9c literal 22515 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 yNA5=0Bi4*`?B}PqWu0umA;9U`SP>`E&Q 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 F`G4si$#wt$ delta 5881 zcmVfFDZ*Bkpc$~GF%Wm5+5JlJaR~X5* zF6y9*Zn`NF6j?OCAkgB-VoZ?&NmupXS1&uVA~n1t6xqm*&fIy5q(?ym*(UH zDif9E+lb;zDU~R!k%@Fl>t!(7MTPQSX-Y~fIfWnMdyyV-3anzw?}gUN2bC_Q83B_a zcR0go?lG{mr7)y9e_nPVCpo39@JSw!3}-WKt<;TTl9Px`%^S3}2H;99d?9!NPN7L5 zd}P=6Jg1x!Bp{sD-#cE+lPE6DhP)q`6$pQEzE)A+#mWi=bDaEt5CFmh>M z#_UweHHl(%{xl1W-NnEHzqu3d$Sd9|*O3gDMJTM#RbA%9W*Knam;ixDhqPg;8dNmc z3XpoG0H$O}e*kW^7?Okm0LXYvRMzbnuQMc&{izm337_W16f6jy14j^k=78TVjWOmi z2Ug_7IDGjOFF2-PK`_7(1Z`|LQpU_)I8cuMgzKqde+dTEvS)dYvYJN=iBHLxf(6lT zyM+Kb-rMal1q-6@;%_15b~;{fu$2a&RN_LZL}dyxk}=~whOVyGYLD*$S_+h^tSfTM zSdu0{`d-v|Ca5O68KEXORJ~QoxdK;|sb{mzA0Wf#( z{pRWA4YBwv2Mn&lAz+U=+G zhywNeB|bkt-+y!Z1HeN=37*P3T>sfYs!~r(7ip4J#wGyZ&Y6~ujC0PJw23(o0N}S% zDjPW~lR^#z0ANZbBl@gsiI4*U0IrA1y!H{3v1?R+;Qpzv?Z7p-p-SJ7D<^m(uI)h&o8Gs*hKumvf07 z=4=0As_-^e(%akUF6A(Wr&`Bztq_~GZM0T@5>8NmHI#1!d*sFhPPdg{6He+eYG=Zj zOiN1ZNDTCgr_eWsS~JtqL=yEH_p>N8d<;c?di=!bUS3~cT+C}0s*;P_x6^w#Zhz9` zW}Ri|m~sPpf&f)w69}U<3s4M)AB2WcDmP-L!1_Z+jtiHZPPeC|0BtP|ncKFr)|u^p zX_Vrr@ld~z{wOV_K&g67@UtMSKUx`1P7*Ah-1_x(?Vc7{h89n;=6cmJSx`;-(=@@o z7FM8NDnN>kVANbkt35t8az`){z{Yrctb&uc3jx};voV?NsdfQBP!8!22}09KC{U_i zQ~WGOY)OB})PUG6p1MhX$QGbbvyjz)0|n9Hbg>`>D%}2J0<`^1D1P_|Mgu5DzrUT* zks<*z1=6~vrOY***A8-Z0s68uU~t>c*%=T8JRgCF`Xy5Kp(*ufB@`%CuL*t@Bew0f z%IOL}(=nF(X~J`sspsclcq(VYbE=>~(e(U83dHSSum=hbXf9_&fZn76NG+Ft)KZ~6 zoc;JPjz#(~M#R$oMky-?Ln{q_qcDA<37a$UBJHA}+c?l+(+!d#B z()F6;X9*8ea6S3EI1hR=EjuLTKg}hsVi(D!D0%G{3c8xu8|1lFWeS zo`OA4{sREGH5Bv*ld)@5f8h60U)zCiZpalmZm7~XqpVCA24uq}`OgiU1dE%Xu@gs&n7Ja(?tq-maK6!wciuInlI$aLA zK((fWU#_9a{)F0{s2BO^>H$9sLlsW9|Hf3NT>JBQ8*l$gsOG!&rz&m^wh#JQ*o$hY z{kQ&<8vh*EBkdo8f7JM=dcVBBzPN*cOE5vp?GCOj|~AIm)CbS)@OzuBDE^ zi>JN=jsz&we=JP(;Rmx2ThgD!A`av?u~~44{FmD-EG+a|Gy{Q6xSd;U&-1OW@X}p7!Z=2v%gPm6w=>z3l3>x0RgR`I%YY zDcH&@ZMoLTU211dq`bt~Tmjl;Km*G>q(9m@9{=ejfAL~GhhFK!^Zw@NV0da~!t-tf46{Y}4 zR#;W)l@Ca-*)u|~IkW4g06yVPh(R06rZ%VdD9Km7e$Ku*_nYi<6FZU$Fhj!AO~BRz>F#sGiAl&_8>7PvmlNVZ zVn_QtcUf6G{|Zdp)$34zc7D$8LEs4(^}_RzEoHRn(79_szB{|5jPc3*CeSf>t@ z2$1jBfc#-+lloX2j;@X<4F!4=+b#$Pr`w#LvQ}j;LWjg@r$b{b3M4{#)+YFqsMjPv z%Xq*&(A9Uql%kBlYkHa7H6X9J97=Kge}GGo!cpsiQ#HkS+10DsGsX+Cou6J{4MnRD6i;61rF>KDE`&#f7y4( zSH1R((LZ}X|B-Nks!EDH*w-$^_m9nI%oZTq$F&{4zK=3MYu+~!JrI&dKZ(O{#cN(X z4H;i=4~?}&Rz#-Mi?ct@R126JHI=HDQ2SSXP3@qqSBjF2Qvc+SNV5~5;kle81u_z+ z!3Js8x_+(1XInFLbUktF)xJlSx83Z2{?lN-uh;PhQ~WFeSCR6K;foGP z4VLQjlisogX#eNHo+T@ah3 zKdJ3A!1rGbSC`bFJAIx%2cGJZ#0vDSa32Bq==eebNpqb)qdVD3N`aE~`csWe6N@pS zvZMyxflB1s1jgFO(I0RZ$OR;0t0_8Ff=PlnCv08nregrWBqYv1-3$*^SpWb400000 z007)Hg)Z0FK8{SDd-orJe@BHwZpHV8gjJOhe%+tOwtLRWela1G4D0SDmaxC!uKfq# zq2Y%R@PkYFsVx}~B#0EbvAgg+cE5kYH{NkvXJ;3E2~^bn#r5~@KL8I6Kd+$aBCiSY z^5?Ws?DONFx<{S<)Pb)%|M|Y$ya3+b*?Vw#|GoPUz(dmqFdyS{e*-u)-At(Y`D7>C zB@j*bRFcidD#y{)$EJI}Nz7LsdHXoai^-#*Lm=A01M?AfN%qmzz|IyFyMb=IK9cUbOc9k2zD;u}*ON#Sb z{0HE%p>U(HTXE>+oSorfHdM@Jub9<}XEj~i6>znGz7$WCeu%-n`wzfF!|}Fas@woR zUChdqyOO5AipK0k@4fpEz(doW6JF7ORo2X!068*dji5yU?uobVC1mSO%9Qn?cEKMd9@cx( zpX2Q_5kqj^`%CmkvR~3ph;pc#+8W9|qOopIfodm~0a;tcwsB6^7ph&VU*rS``UCEWvB21U*b4Z<8IaZV zGPV1;*~w)<)>zxtwRR*xMZTDBhhPS@>ni9Fn2UZeml)Ec0wjMqj7S< z>=#g;YY9*%K{{W6004JPDFHJ20^86Z03MrC0wi^ZHUQukfmslf0Sps=z)i7Q9sgEx z|Dh7bw*mluHRlS7{oen=JI)|L0Dzv=_nq_BOwfSUPXW3}GghbX)t_V?0Pw4T00985 z2FZan9acmFNVSpzbeW(50PYr&gVh!p0a~R62+KeKJQ$dQ0RXNBXF#??Cwd0Dq$UefL{d!=xmEIhQsOB z%JNnT>j3;JAV6nZ45tMMQ!oI|MqYr}(6nt+=v0Sqh8GhcmY~(%vw!$skRJdp;8zIH z%J4aGK>;$>{Jf=u{s{pB-~#Smfa13RNv*;_fB-1OH3X<6y#RF=;fM)PNB-CQ008b@ zfC66v*u7-0#DM^R0dUu}dp|B@MbjVKKMzs*W{9}=0|0PWv|F+YS@E~>@L4c^mldEU z#t>p`M2!Lf%1}mtq@M}>P1Cj^v@HY(fQ$K7fNU+e#B{b%z6Wc?-%Gd>zZ)y|0)#0T z06WyVe{lB#MDw7n07>5r5&J0^1PFj0Wz4yMay)GDFF(neixwGEkZ+p zz{5lGL+YcnKJU-kLje+0pb`SaYrx+E#H+$3Jex+`Eka`v2;34TAp*;@7l@~uyi9%$ zlb*X2ppg21*WAS2A~XaD+!AVedi#t5v}E~NChQK-9t)710u>OTy#z=)1;QdUxJj-d zK>8B-IZk=5vI>+@z+uWGn*vq+BDA1E0LDoPkUskq`E)LlpW}>2`b1bJ2MLh)Di8oS zNJ@az*()@2b1XM^CqQ9r3jhzs^5%pl#oY_g(WQqVcr-i!cLM|nfUEL Date: Fri, 1 Dec 2023 12:12:27 +0200 Subject: [PATCH 18/48] fixes --- code/modules/mechs/equipment/_equipment.dm | 2 ++ code/modules/mechs/mech_life.dm | 1 + 2 files changed, 3 insertions(+) diff --git a/code/modules/mechs/equipment/_equipment.dm b/code/modules/mechs/equipment/_equipment.dm index 3d1c281939d..05bfdc6935a 100644 --- a/code/modules/mechs/equipment/_equipment.dm +++ b/code/modules/mechs/equipment/_equipment.dm @@ -49,6 +49,8 @@ if(target in owner.contents) return FALSE var/obj/item/cell/C = owner.get_cell() + if(!C && active_power_use == 0) + return TRUE if(!(C && C.check_charge(active_power_use * CELLRATE))) to_chat(user, SPAN_WARNING("The power indicator flashes briefly as you attempt to use \the [src]")) return FALSE diff --git a/code/modules/mechs/mech_life.dm b/code/modules/mechs/mech_life.dm index c695a4b7ad8..9f31c6fd6a1 100644 --- a/code/modules/mechs/mech_life.dm +++ b/code/modules/mechs/mech_life.dm @@ -68,6 +68,7 @@ for(var/obj/item/mech_equipment/power_generator/gen in tickers) if(!. && gen.internal_cell) . = gen.internal_cell + return . return null From e20501b0e5429aeccfb7ab1a28eeb348b53add15 Mon Sep 17 00:00:00 2001 From: MLGTASTICa Date: Fri, 1 Dec 2023 15:21:07 +0200 Subject: [PATCH 19/48] more mech fixes --- code/datums/components/_component.dm | 1 + code/game/objects/structures/window.dm | 2 +- code/modules/mechs/components/_components.dm | 3 +- code/modules/mechs/components/body.dm | 2 +- code/modules/mechs/equipment/_equipment.dm | 2 + code/modules/mechs/equipment/combat.dm | 10 ++++- code/modules/mechs/equipment/medical.dm | 5 ++- code/modules/mechs/equipment/utility.dm | 43 ++++++++++++++++---- code/modules/mechs/mech_interaction.dm | 2 +- code/modules/power/cell.dm | 1 - 10 files changed, 54 insertions(+), 17 deletions(-) diff --git a/code/datums/components/_component.dm b/code/datums/components/_component.dm index bf0fa7a49b8..b999aee03c6 100644 --- a/code/datums/components/_component.dm +++ b/code/datums/components/_component.dm @@ -200,6 +200,7 @@ var/list/target_procs = (procs[target] ||= list()) var/list/lookup = (target.comp_lookup ||= list()) + if(!override && target_procs[signal_type]) var/override_message = "[signal_type] overridden. Use override = TRUE to suppress this warning.\nTarget: [target] ([target.type]) Proc: [proctype]" //log_signal(override_message) diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm index 94ab6f04046..10502621d96 100644 --- a/code/game/objects/structures/window.dm +++ b/code/game/objects/structures/window.dm @@ -357,7 +357,7 @@ proc/end_grab_onto(mob/living/user, mob/living/target) usable_qualities.Add(QUALITY_SEALING) //If you set intent to harm, you can hit the window with tools to break it. Set to any other intent to use tools on it - if (usr.a_intent != I_HURT) + if (user.a_intent != I_HURT) var/tool_type = I.get_tool_type(user, usable_qualities, src) switch(tool_type) if(QUALITY_SEALING) diff --git a/code/modules/mechs/components/_components.dm b/code/modules/mechs/components/_components.dm index 092c4406a4b..0f3d0d78ca0 100644 --- a/code/modules/mechs/components/_components.dm +++ b/code/modules/mechs/components/_components.dm @@ -99,7 +99,6 @@ playsound(loc, 'sound/mechs/critdestr.ogg', 50) if(total_damage == max_damage) - gib_hits++ if(gib_hits > gib_hits_needed && can_gib) var/mob/living/exosuit/owner = loc if(!istype(owner)) @@ -138,6 +137,7 @@ update_health() if(total_damage >= max_damage) take_component_damage(amt,0) + gib_hits += (total_damage / 10) return /obj/item/mech_component/proc/take_burn_damage(amt) @@ -145,6 +145,7 @@ update_health() if(total_damage >= max_damage) take_component_damage(0,amt) + gib_hits += (total_damage / 10) return /obj/item/mech_component/proc/take_component_damage(brute, burn) diff --git a/code/modules/mechs/components/body.dm b/code/modules/mechs/components/body.dm index 5ed1f15f738..0a43447da19 100644 --- a/code/modules/mechs/components/body.dm +++ b/code/modules/mechs/components/body.dm @@ -105,7 +105,7 @@ . = ..() air_supply = new /obj/machinery/portable_atmospherics/canister/air(src) storage_compartment = new(src) - cockpit = new(500) + cockpit = new(250) if(loc) cockpit.equalize(loc.return_air()) diff --git a/code/modules/mechs/equipment/_equipment.dm b/code/modules/mechs/equipment/_equipment.dm index 05bfdc6935a..cb598ce4555 100644 --- a/code/modules/mechs/equipment/_equipment.dm +++ b/code/modules/mechs/equipment/_equipment.dm @@ -68,6 +68,8 @@ /obj/item/mech_equipment/attack_self(var/mob/user) if (owner && loc == owner && ((user in owner.pilots) || user == owner)) var/obj/item/cell/C = owner.get_cell() + if(C && C.active_power_use == 0) + return TRUE if(!(C && C.check_charge(active_power_use * CELLRATE))) to_chat(user, SPAN_WARNING("The power indicator flashes briefly as you attempt to use \the [src]")) return FALSE diff --git a/code/modules/mechs/equipment/combat.dm b/code/modules/mechs/equipment/combat.dm index 09207ac866f..e299e7531b3 100644 --- a/code/modules/mechs/equipment/combat.dm +++ b/code/modules/mechs/equipment/combat.dm @@ -842,6 +842,14 @@ mech.vis_contents.Remove(visual_bluff) QDEL_NULL(visual_bluff) +/obj/item/mech_equipment/shield_generator/uninstalled() + owner.vis_contents.Remove(visual_bluff) + if(on) + on = FALSE + update_icon() + . = ..() + + /obj/item/mech_equipment/shield_generator/attack_self(mob/user) . = ..() if(.) @@ -947,7 +955,7 @@ return if(!(visual_bluff in mech.vis_contents)) mech.vis_contents.Add(visual_bluff) - visual_bluff.dir = mech.dir + visual_bluff.dir = mech.dir switch(get_hardpoint()) if(HARDPOINT_RIGHT_HAND) // i used a switch before and it doesnt work as intended for some fucking reason FOR EAST AND WEST >:( -SPCR diff --git a/code/modules/mechs/equipment/medical.dm b/code/modules/mechs/equipment/medical.dm index 9b0422d534d..4c1d9dea50f 100644 --- a/code/modules/mechs/equipment/medical.dm +++ b/code/modules/mechs/equipment/medical.dm @@ -162,8 +162,9 @@ checking = mending_target.organs_by_name[zone] if(checking.is_bandaged() && checking.damage < 1) continue - if(checking.damage > affecting?.damage) - affecting = checking + if(affecting) + if(checking.damage > affecting.damage) + affecting = checking if(!affecting) mending_target = null diff --git a/code/modules/mechs/equipment/utility.dm b/code/modules/mechs/equipment/utility.dm index 0816d2b3319..167dc67ed36 100644 --- a/code/modules/mechs/equipment/utility.dm +++ b/code/modules/mechs/equipment/utility.dm @@ -475,7 +475,7 @@ equipment_flags = EQUIPFLAG_PRETICK var/obj/item/cell/internal_cell /// 50 power per mech life tick , adjust for cell RATE - var/generation_rate = 50 * CELLRATE + var/generation_rate = 50 /obj/item/mech_equipment/power_generator/Initialize() . = ..() @@ -494,7 +494,7 @@ var/ungiven_power = internal_cell?.give(generation_rate) if(owner && internal_cell) var/obj/item/cell/batt = owner.get_cell(TRUE) - if(batt) + if(batt && batt != internal_cell) batt.give(internal_cell.use(batt.maxcharge - batt.charge)) return ungiven_power @@ -518,7 +518,8 @@ return if(fuel_amount > fuel_usage_per_tick) . = ..() - if(. == generation_rate || . == null) + /// if we had a extremely minimal use + if(. > generation_rate - generation_rate * 0.01 || . == null) return else fuel_amount -= fuel_usage_per_tick @@ -652,14 +653,14 @@ // min needed for combustion if(fuel > 0.25) var/amountReturned = internal_cell?.give(generation_rate * fuel) - // refund if none of it gets turned into power for qol reasons - if(amountReturned == generation_rate) + // refund if none of it gets turned into power for qol reasons (its never exact returnal due to float errors) + if(amountReturned > generation_rate - generation_rate * 0.01) chamberReagent.trans_to_holder(reagents, 1, 1, FALSE) if(fuel > fuel_usage_per_tick) chamberReagent.trans_id_to(reagents, "fuel", chamberReagent.total_volume - fuel_usage_per_tick, TRUE) if(internal_cell && owner) var/obj/item/cell/batt = owner.get_cell(TRUE) - if(batt) + if(batt && batt != internal_cell) batt.give(internal_cell.use(batt.maxcharge - batt.charge)) if(QDELETED(sound_loop)) sound_loop = new(_interval = 2 SECONDS, duration = 10 SECONDS, interval_variance = 0, @@ -686,14 +687,19 @@ RegisterSignal(_owner, COMSIG_MOVABLE_MOVED, PROC_REF(onMechMove)) /obj/item/mech_equipment/towing_hook/uninstalled() - . = ..() UnregisterSignal(owner, COMSIG_MOVABLE_MOVED) + if(currentlyTowing) + UnregisterSignal(currentlyTowing, list(COMSIG_MOVABLE_MOVED,COMSIG_ATTEMPT_PULLING)) + currentlyTowing = null + . = ..() +/// Yes you can hook onto other mechs that are hooked onto you, and yes it won't break anything , SPCR-2023 /obj/item/mech_equipment/towing_hook/proc/onTowingMove(atom/movable/mover, atom/oldLocation, atom/newLocation) SIGNAL_HANDLER if(newLocation.Adjacent(src)) return - UnregisterSignal(mover, COMSIG_MOVABLE_MOVED,COMSIG_ATTEMPT_PULLING) + UnregisterSignal(mover, list(COMSIG_MOVABLE_MOVED,COMSIG_ATTEMPT_PULLING)) + to_chat(owner.get_mob(), SPAN_NOTICE("You lose your hook ono \the [currentlyTowing]!")) currentlyTowing = null /obj/item/mech_equipment/towing_hook/proc/onMechMove(atom/movable/mover, atom/oldLocation, atom/newLocation) @@ -701,10 +707,27 @@ if(!currentlyTowing) return if(!oldLocation.Adjacent(currentlyTowing)) - UnregisterSignal(currentlyTowing, COMSIG_MOVABLE_MOVED,COMSIG_ATTEMPT_PULLING) + UnregisterSignal(currentlyTowing, list(COMSIG_MOVABLE_MOVED,COMSIG_ATTEMPT_PULLING)) + to_chat(owner.get_mob(), SPAN_NOTICE("You lose your hook ono \the [currentlyTowing]!")) + currentlyTowing = null + return + // Protection against move loops caused by 2 mechs towing eachother. + if(COMSIG_PULL_CANCEL == SEND_SIGNAL(src, COMSIG_ATTEMPT_PULLING)) + UnregisterSignal(currentlyTowing, list(COMSIG_MOVABLE_MOVED,COMSIG_ATTEMPT_PULLING)) + to_chat(owner.get_mob(), SPAN_NOTICE("You lose your hook ono \the [currentlyTowing]!")) currentlyTowing = null return // If we move up a z-level we want to instantly pull it up with us as to prevent possible abuse. + // Protection against move loops caused by 2 mechs towing eachother walking diagonally + // this gets triggered by z-moves too ,so inbuilt check for that + /* + if(lastMove > world.time - 0.1 SECONDS) + UnregisterSignal(currentlyTowing, list(COMSIG_MOVABLE_MOVED,COMSIG_ATTEMPT_PULLING)) + currentlyTowing = null + return + */ + if(oldLocatin == newLocation) + return if(oldLocation.z != newLocation.z) currentlyTowing.forceMove(newLocation) else @@ -717,6 +740,8 @@ /obj/item/mech_equipment/towing_hook/afterattack(atom/movable/target, mob/living/user, inrange, params) . = ..() + if(!owner || target == owner) + return if(!istype(target)) to_chat(user, SPAN_NOTICE("You cannot hook onto this!")) return diff --git a/code/modules/mechs/mech_interaction.dm b/code/modules/mechs/mech_interaction.dm index df850867e9e..2d85d31436f 100644 --- a/code/modules/mechs/mech_interaction.dm +++ b/code/modules/mechs/mech_interaction.dm @@ -114,7 +114,7 @@ var/resolved if(adj) - resolved = selected_system.resolve_attackby(A, src, params) + resolved = selected_system.resolve_attackby(A, user, params) if(!resolved && A && selected_system) selected_system.afterattack(A,user,adj,params) diff --git a/code/modules/power/cell.dm b/code/modules/power/cell.dm index d47f4372d37..70987683fec 100644 --- a/code/modules/power/cell.dm +++ b/code/modules/power/cell.dm @@ -135,7 +135,6 @@ explode() return FALSE - if(maxcharge < amount) return FALSE var/amount_used = min(maxcharge-charge,amount) charge += amount_used update_icon() From e875f3becc535e0b666907606914c685a8e67978 Mon Sep 17 00:00:00 2001 From: MLGTASTICa Date: Fri, 1 Dec 2023 16:33:16 +0200 Subject: [PATCH 20/48] more fixes --- code/datums/wires/wires.dm | 6 +++++- code/game/turfs/simulated/wall_attacks.dm | 5 ++++- code/modules/mechs/components/frame.dm | 2 +- code/modules/mechs/equipment/_equipment.dm | 2 +- code/modules/mechs/equipment/medical.dm | 2 ++ code/modules/mechs/equipment/utility.dm | 22 +++++++++++++++++---- icons/mechs/mech_parts_held.dmi | Bin 2816 -> 3192 bytes icons/mechs/mech_weapon_overlays.dmi | Bin 31414 -> 32109 bytes 8 files changed, 31 insertions(+), 8 deletions(-) diff --git a/code/datums/wires/wires.dm b/code/datums/wires/wires.dm index 85110919d66..cfe262016f2 100644 --- a/code/datums/wires/wires.dm +++ b/code/datums/wires/wires.dm @@ -145,7 +145,11 @@ var/list/wireColours = list("red", "blue", "green", "darkred", "orange", "brown" var/mob/living/L = usr if(CanUse(L) && href_list["action"]) var/obj/item/I = L.get_active_hand() - holder.add_hiddenprint(L) + if(!ismech(L.loc)) + holder.add_hiddenprint(L) + else + var/mob/living/exosuit/mech = L.loc + I = mech.get_active_hand() if(href_list["cut"]) // Toggles the cut/mend status if (!istype(I)) return diff --git a/code/game/turfs/simulated/wall_attacks.dm b/code/game/turfs/simulated/wall_attacks.dm index 397b0b21bac..db56d09824c 100644 --- a/code/game/turfs/simulated/wall_attacks.dm +++ b/code/game/turfs/simulated/wall_attacks.dm @@ -97,7 +97,10 @@ return //get the user's location - if(!istype(user.loc, /turf)) return //can't do this stuff whilst inside objects and such + if(!istype(user.loc, /turf)) + if(!(ismech(user.loc) && istype(I, /obj/item/mech_equipment))) + return + if(I) radiate() diff --git a/code/modules/mechs/components/frame.dm b/code/modules/mechs/components/frame.dm index f8bddaa3390..51a8e68c92f 100644 --- a/code/modules/mechs/components/frame.dm +++ b/code/modules/mechs/components/frame.dm @@ -98,7 +98,7 @@ if(is_wired) usable_qualities += QUALITY_WIRE_CUTTING - if(is_wired == FRAME_WIRED_ADJUSTED && is_reinforced == FRAME_REINFORCED_WELDED && arms && legs && head && body) + if(is_wired == FRAME_WIRED_ADJUSTED && is_reinforced == FRAME_REINFORCED_WELDED && head && body) usable_qualities += QUALITY_SCREW_DRIVING var/tool_type = I.get_tool_type(user, usable_qualities, src) diff --git a/code/modules/mechs/equipment/_equipment.dm b/code/modules/mechs/equipment/_equipment.dm index cb598ce4555..aec638bad08 100644 --- a/code/modules/mechs/equipment/_equipment.dm +++ b/code/modules/mechs/equipment/_equipment.dm @@ -68,7 +68,7 @@ /obj/item/mech_equipment/attack_self(var/mob/user) if (owner && loc == owner && ((user in owner.pilots) || user == owner)) var/obj/item/cell/C = owner.get_cell() - if(C && C.active_power_use == 0) + if(C && active_power_use == 0) return TRUE if(!(C && C.check_charge(active_power_use * CELLRATE))) to_chat(user, SPAN_WARNING("The power indicator flashes briefly as you attempt to use \the [src]")) diff --git a/code/modules/mechs/equipment/medical.dm b/code/modules/mechs/equipment/medical.dm index 4c1d9dea50f..2c1001b4837 100644 --- a/code/modules/mechs/equipment/medical.dm +++ b/code/modules/mechs/equipment/medical.dm @@ -165,6 +165,8 @@ if(affecting) if(checking.damage > affecting.damage) affecting = checking + else + affecting = checking if(!affecting) mending_target = null diff --git a/code/modules/mechs/equipment/utility.dm b/code/modules/mechs/equipment/utility.dm index 167dc67ed36..e6772b83ef8 100644 --- a/code/modules/mechs/equipment/utility.dm +++ b/code/modules/mechs/equipment/utility.dm @@ -726,7 +726,7 @@ currentlyTowing = null return */ - if(oldLocatin == newLocation) + if(oldLocation == newLocation) return if(oldLocation.z != newLocation.z) currentlyTowing.forceMove(newLocation) @@ -841,23 +841,37 @@ icon_state = "forklift_lifted" else icon_state = "forklift" - + if(currentlyLifting && !locate(currentlyLifting) in owner.vis_contents) + var/matrix/the_matrix = new() + the_matrix.Scale(0.6, 0.6) + currentlyLifting.transform = the_matrix + owner.vis_contents.Add(currentlyLifting) /obj/item/mech_equipment/forklifting_system/attack_self(mob/user) . = ..() -/obj/item/mech_equipment/forklifting_system/afterattack(atom/target, mob/living/user, inrange, params) +/obj/item/mech_equipment/forklifting_system/afterattack(atom/movable/target, mob/living/user, inrange, params) . = ..() - if(. && inrange) + if(. && inrange && istype(target)) if(currentlyLifting) currentlyLifting.forceMove(get_turf(target)) to_chat(user, SPAN_NOTICE("You drop \the [currentlyLifting].")) + var/mob/targ = target + if(ismob(targ) && targ.client) + targ.client.perspective = MOB_PERSPECTIVE + targ.client.eye = target else if(ismovable(target)) to_chat(user, SPAN_NOTICE("You start lifting \the [target] onto the hooks.")) if(do_after(user, 2 SECONDS, target)) currentlyLifting = target + target.forceMove(src) + var/mob/targ = target + if(ismob(targ) && targ.client) + targ.client.perspective = EYE_PERSPECTIVE + targ.client.eye = src + update_icon() diff --git a/icons/mechs/mech_parts_held.dmi b/icons/mechs/mech_parts_held.dmi index 0276b3fb0aa6c132b83a60dd473e847dcf126dcf..f278850b3862a56943a9008dd71b50a8565ec1db 100644 GIT binary patch delta 3184 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 delta 29574 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%0A+{7zK@`JU zd7Cm`-C?+B6xytR?XqgpGIbDZSUoXV*VOETFV30w$g1f`Ujkhx*k!4Rz8Tqc8*jUo zhuEHOD7Gry~qzFu36bGE)N=gq^o zh`h?}wE5PN2Q9LEZhqV*sn+NLFJYK{cgttf2R1k^BX725`|hpBH=MhWpYhhIV7)DN zjXE9M(7rg#iwzeexKS6(u?$L7!nyJ`P4Cpqo8QLR>3r1(@{ z_nP*v2Tw>WYXk*(yh%pTBs>jQZAY5{-@rmN!;)kipXIBK7%R!^$;2atbB8_&TGF{U zGie|1b_HTe>}W{;-K)pj;oSsQN&s1+cab3W98+J51>SCb^9j&2#pDz9cw)9A#;^hm z6a+TB>iRMX-@9gm{&c9aG5>>x(66F#)1AZuw8`ndgy)Kck0!E;ejZ6azn-D8b5LNiInE?4g7*H|11)Txmi+^>?7U2WcrCq z)Nv^0VPAg!^#L_~F@5n^Kc$3DF515S`ij21?eI85sc1IFTkDVX0~WBjzQ7mibr}Kn z(bE2%`iB!OA*9ic4$}9-UEI4CVAgpfJ;8=gvVCw z6l#9`C{_hN(b9E*igf>ghAc$x7%+V1)>zNcN`u?@zf&OTvyjP?XzuhpkC(1b_QaIF z3fnJ~i0X*+y(b}$Xzxni;TED8nJwkqRc-LTSlDlDi+$!6gX+SVs}HmTDkUZDP%6yc zSG?uy>&qzvKnFgjP9)zY6SVH`)F7IK)i9fJ3OmOBZc8nSLUp9gWd%TU#$Hlc;VK=y zm%s*$b_d>DnGDZ>acsEsvxbzudr6BI<<=X9b1NDSmLp#{w^7HkXAXRKT+DzXIA{1WA)jx zeC>42mA3y@o}I9rz_CLO7TvSn@kVG0mCO{mApL1^=$nd_MJoZ^6Jq$DJ-A()bt|JWFT`zP?l{Au zR?4db;_>?I;Bf6Tg{TR!M!g8O3A=oL^uya0yt13^v4A& z*y&Cko~IYC>y3Dwwr|VdOBkJ6A;rVbGq}>b)`l^*;beiqRoL}c8^yS+w(GXCwj8E+ z((cVuFBBRzeu?r~8PU;KRuXg670+B&=TC*KwP8gKQ;xdpq6F&X8pyjASU0==ES7hf zZ*(1UBiE{^T4$!&oP>pB$(yAl0kUhV9L^|>1f&I zg+YGGm%e29_!gi$aWV$%tT|_GHtM@*NZygNfrOs9#gk}f_X1l*23?Nkb}Wk;u0NuS z9%;)~a!pXi?bFPAQjb#_MJ>A1mf z7=8U1luAkDwPcA}7;XlgSLgb7veG_V*wW_%ne^-ZG82C4+5#(NaX&K%ov@go zi9NCu>mw)09E_9Y*F8z}j$>7jv@!v1@Atg~)P1H87WQ`cknV=h8Xc=@YvW&1+lyJU zW)d_Bv2e0h}?0_49mDn5>ocg;Up@2=Wud|oQ*N3z=&IZkAgniCfpyt|vM zdpU6h{6g1#egBD4&BKc$H3~Jc#u2)W%Wx(M7?mp_P}cS+pp25ho8vS~Zw-H4^BmC~~@xAgWZBF49{hxK2y)*gXL`EI>o1^+zUeeWgN+)@tL zmMey8twTNepDf5bWKNb9zkARHjhh?hU5(Ud2!759JZh>QfvE8y+&8*cudBTglyj46 z5RHd6Z)S}aT+CB#AjxwW2VQV)ut+?B%KlU9ShL^1HIYr>fp*r@&DRoF8PLGl^25-v zkG3;ujj40lO*=ck=E83;VtZo%(p-= zNkhkp;j0dt?mx55H9X4hwts4tK?nSblp{4?K?iD1uJ|ON)sI(XAZ0K;GtO{@fh3|o z8?lz+>I`ySPW}kSZ1`}|e`AHOs@JXQGsD#^gdHI)_E(;}e`uHp(|*Ki4pGrD49Q@x zTbX2V`H`utm6fR@WCR)W&T*n|c)>E!Btz{us^fSks{O9-H|+M6lE@&mn#hkN>2HZv zK!b63y$AAYY2QVnHC26A6#$u0$(-*miAvqS%94Pd|HHrwV?thQ^>b}y6}&@9+9Ofw)D00y$aEb;b0znl+n{%5ahs+!#j@uOs`A28L{ zFOHP0T>%p#JD77;`C+nm*Cx~Vmar@585S1IOV|_Nn28ww9qNI{KzJ_m4C^&+AYXlV z$NBF!wbXJ<0PC}eGudR;1s5}y*qk7P00GCN=suJLY4W-|L#~{ho0LJOu~}4COi6FI zj?ppKkCC$EYpfsh;uz`RHh?{E!?qX&&X`bi89F-QJdXWvqJq_O_dS4{%evo(z$uE7 z*eW4NFiM%xgbWy3lwzsxEoB zOU%Nk-27l$un-Pb`HE#yn{j(Q)3b|JUHPLL(}M}4`x(ueY3B@?J(H};e68^O_Sga* zH`BLY2~-Q<+SHsTZ$VcIDKW3Mk|w>bw@>P$%~wcDG~0ndp$eVz+ng$h&6~)t_Ohv) z;4E!m}1kv7Z<_KCT{ zoS(x%^xLpX3(k3MIj`v)ar^(VS~s zH9kxtu}b#>c7+nR-+qQmQ44jO`kMA53HA5;zITkb6E^l5w+F{KtW7+I3kP&`ZqG9K z*uHFL>--B;!LycB-Lg;9Joi>5b19-`!Hh;Az|RQUlix@&(!&Yf9MnS-asJY4s*N7y z{U8URq};wf!T31%EX-XF zv_1n2DMrw$q>&B)`@N0xf#&T-6lrx?o#guut9Bu2l>Mb92&)n;O8G zJ7V1MPI?Hum9 zTgjr!4eTZ4*_fBkpUqX44`WM~fj7zsZoJx+Kwj#;B8`~>Azb;TsU7dUE=y_1)xf^D z+re%~b@vU1&edn)C3JIe${y*n*)(p{T>tcK8ka=GiJcf}b9n!J8PF_d%r%A0@GaV- zuB&65s9zwegNwjht7G#ruLHDK&v-}7suwhtk2dqK+c2AMBQxpf`UiawLOit9tmDe) zQvC1V;qR;8_|E21M&ZVjH{BBaWhoJM)W_Q^TWK2O=Xc(FourocC%sjvoDnSM;*D78;FgWW)G#GC zcvJTcpB~cq7>?s@^Q%bE-g+=*WXvx;3Ui>)bRq4*h=bS)=CDN%FyCNhrS zB?&kojN>cK9&G+|yF<;By=I6+0~uox$6`#Amu6$AY3CHoRxboF3Wh7af;Ukc3;%fGSE+HK3N7gO4iR7AAi+$Mox{Xl z`MG+KWOV9md}m$OpU}{e;w)C)GkKt7Lk$I#_@uP*iX=+9uQItIx7GH3s&z6bo7R0+uPvoRsrjV_C z7ocd7$^3~G{R4-oONaGJaygPSBctJLnShQC-GrxOHhW_ZzLG|u{NGnd9C6EFsQV=wn!_mvZ2>-;xk%?#G&>(JpkIdr4CgxRhZe6C~ z6s1Aw-P$)eE)|IGZz=V7tMsPM$CZVYBeQGjALGuEi96dns8kM%nz|LiijGSg9g2}R zNJwa1c4?`#&w>+d1?I=MOp#Qs!>PDc>mn;2ohm=xr**%o)PALcop~JiwsKa@!+o6dpl7Pq+toP+b!7uw z`F58*iAPN^N*+t8xjH43#obpqT5GFsEgKuo&rrnRrinM4&>$nejVR9M4R3pn$={gz zHPY3bM1n7?J)4FtTWd|t{??DcxiC_`&UeNAmUOtVc_+{yA^Ls=cRk`9=mLSLpZ}}f z4xrvV1g{$Ta$x~4tEPF*vOu%Fso37FPVF*(xMVS>zt}y;B6fGr#&+auda$gt-XEVS zCBY>5(uAvAw(o1P53luuUlC~TJUW_+s_rY|)}Kg;-lO#DO+G#cek@_pXv3G&8NvR? zJA^-L5{2acW{K|*9DK>J+@%v zMJ)JmS_*8GR@Hb5EY6_c>u0Ckaf6&BuB>~U6RROBmb0ni9zOE?^dy~Wi(tXeSHE}o z{O@j}+>x__coY@y#k0)pCaVuGQA6EC;@JpBAS5y}vOXgf1FEp$Y^U_whFi&Nixh=y zK2)jtJ3$2MNwwMR5j!_hNJ+v2gM1|_tD>6(xmFM$5W9}x!~MoYLh(BwQ>mA~TOwn# z^weWV@S(t^W~tqGx~FPinR?>xzY3|fy9m0RH`=Wq!r`k@R;^9_D6zK~T-P!qW1la7 zW4AnF3dlv$fb%$u7Y~mc6kg=^zqY=)*lE6Z+_1^gg56*L1Npjfk6CxR%nGYvZHY{g zf0~-12}P+>f%BBP5$F!vXQDO*ib7((VVpdFd;oWeHRti`J%3E(lT5kKA5>^0XZ1Sf zQ^jhsL;A1g|!-$YA}wdOmi=O*M{$vd@_pR{=L9 zv$V8Ub~XfEs@e+o&8mpwf~t0AwG-0u5{?03Z4XAC%~RKtC=bq`nx%6M39hc=6B?mZ zvVa;e8RwwyW8MY5@`)e$80#5!qs&RI7aKK3j)#8Dc@qE7fnZ9QT(zldH;kB+NhW%q z2|g6xmXQG@@(w(n$Qes}f|iTh0mfFY*b1@@|B`MHL9|#?5S(24sMHqU&Z)3FS>!_a zQ%n-h14d3;=T?efiAiCth2CKef-6lTpj~r0%l84ATreJTIV;jW^r-?PpCu-KSaGf0 z`V`(4*XH(|de^rhbWU5`;W_oDs`1>BcohV#2BvT!U~yk4Iiu0dmkfvoP4#UUQm4MW z3voHB*6_nnt)rMYgHM8?S@s&7QRT*(J7Ga@<$;1CaOE7@mgDk?9_rmsX&q94>Sg}; zLIf3O6*iV=WV7YvVW$;89b)K9KRPbrB~cPr)YK%YWf`W~Eou^fqdL!zSk?FT5Q_8n zCCSqXzKAL^g+jSlX+Q7XWK%0)qw&<_9ft$TH1po{*=P9LrzaNFs;hB6N7NQvIN~fC zQi)|bL;L^_u7(kgye$GzTuT8T`kqWzGntE!KFU2k;u2mrP|*|-c1RboJ0Kj1VtBc# zh272srQI|y!3bDS39atFKugc$s5!N9;3p+&EC!StQ|^S}D}0{aXA|)>z4%oP`q&US zT{$-}bam@Wi@96qbLLiStQP9kFr>zVu-Be^cBZ%(FTT_oAO<^;x@!T(;)b_Rwm>|$ zMjF1pg1vousn12LLl1jGEi%C;jBiZ|Ne_HnhG=zDsSu(_;4n4D2=RMEds)q2sDh-O znh5f}+DsZ1XcW|bJQ7Z4ZoYj>?c|C;J(&*?4KXHCQ-Dw{7Y&L%MQ!}h(uv>iTjRek z*OF%-lQN}l1&6^b=qCXdv^2Ww@RwNaH_(SUk)K1Hzv{9k7Tc>6`4{M-h|(yKHq#Ds z=@ay=Q4B)(q0Uyl!p0v|Y6xHA6(smOofdEKeLizqJ`(q?%qLgI`{lV`LeoCSS9sU& zReq}auVI7fKaiLHrQM0!q;>&)WVIeTNoB4r7#xcb=j@sshf8z^X%W6O5CvF+p z1MMsoCwiwNw}s4n6++{u;AC0%w{}IdM_nAkuQM{YN;k;DdxSM-CsxMF>`6JzeDpn5 zA4J{H(tpKJ7mKCZ%wsLQEZil=fAu9)6wknuxGw7k20E}N+#vghY5muFa)9j2Tv;D~jPB?=xJkc&}{rjU_z$KELG{ z=pYUBx5k|tCqdEWPRAM>OFD=bUz!*zjZ~x^Du`k}`+Y<1VT)oCq9(QDEp15jU-t=y zGY%OPjb5P3!yog!ZRYq?Xl-6lj9!f*ny{6){HP;5bKfvtYWJaJzwP&-9<=~823{on z^B5jk?})t@V&HoQ7diB(1xAK?bf{in;4_qOZ=8*Q$cv>}t>uha^!4SX`v>axPwy|- z#CC)wCbzt;IowK@3;iq}}4RgG}$0#JUm zdU=_9Q`bc@&ak!C6m*Z-Uk7vG}wh?PbQ|J(-xD<;(dp9?H<_G%n~T7rFPkWEX83F}u-< z1XH=tM3y)pM&^p8htB+tj3L^Pw$q(lE=Zu%39E1{0X zZ@+Xn~)izR1G$BV2`v6NwzO);2wL>!M!Z|wnqj<)PwUTR~# zAI>qy)#B4QkH(?kV4RQV(T(LJhHz}q-`#0SHpn9H`z9R}WGTp&L%`2?CE5Bf*MhXWir>%VEUqElyTH9^Y)-4Zy$Ehh z;-{)W`d(gb-_u-e?(2Fo<2lu4yIU5<-OZ|1sR-`6@7(gMkdsF{^l1E}%I|R!B2`JS z7p=T|hAmS0-N7tP+M90-+XNJn5^IHneaWl3rt=NP(-4a|(c5wd6sa{#`GkngP zMj#L%Kgou`ZdXxZUmxx?tyUY~iywtcN@5kvAR_TpA1ca~wig#8nRxY3F88KAFEG#g zK((Hdc^lwusq0)Z^xfvQpW{)7r*4LC87*Zj6r04Zmz71NUB7By&c^p(Wu`Tx^rnSm zdeuJx9dbDmw?+<(kgF6G5k-db-46h!%GuGS-Hy?o+ci>6E}2q=FfQ6(IFd(7 zhlDZeHGTmNMW)s_&lTeLa@k=!h94D9IDDGyM`8oZ40#0FYq=zv&YpU@+NhhkNM4&@ z1d}#rU9Y>SB+b98RAER$09k7stW8Ka{HW6#SjNoCv{N%XT_*d#ZETH;`5UMEQ z=}RHcC|(V&sCr`{G}`91FuQQVM5dHF8!q8$)Kl^buZr0iA=sFdttpVi`bnvyHs5oD z2E-piHJx!kNJZrC|82370V+9jB1k5=g!K7cm}&9*9>$BAJ6@cSj&ii-bWMh{lYUsO zKxd=Rr=PF(dS-n=Pe=hmFz}uWuvPjFqYw)jtzG@= zZ2VxIdctmHa%vEp`Xtl`bCG}c71_4^eLWU?V`Q%f%1Ga7X#`r}?$_X7!p5Lu@n^y) zyM>{^t^JIhoH=N=Jv@Hp!k19sCbA6RMI6-CBJWI1nRDQRL=+j=t3jrnjsR24hOv ztLL~%-X!uor71-*Y(#2te0h?w{CE=X)GmaNWJHt9NjB91u%dWaeC;E|)S?94^pBX#>Ca5h*`(Bp%4&0IN7RYDPDuju+zHeEjuNt++<4xgkK}y`=w%dR zn8{`QU%^G;grz@Ud3%qn$)b1x-jJyJ^XJHQd%3e)dLUXGspmWUMW?LK|HNZ^goVtWgbLwKmlH^J%r(gOI7noqKmO zYM}-3%(T1+5GpK$4WT$xK!1hzy$<)WFnxpobi>Sl3xZ1>q69oRZwJpUy}l3E>bO|E zID49mo21EJcp3mB{5YiA6@O!N2WHyO(3+k)Z7WT}*a|x+Ns>H)7sCtB+Q+JDa8?}a z1zNX-T9A&zxd-K7R`<#!+_GO!(#p!K=OP(f5RNv_q;zO z()Fx;0P|nf_Nuyn-FOmflBk%iQ6)C~=MeJwmu?@u{L3ifNt~{4kZ^`qVdF&h`#&bP za{v2(x@ZtZeVw{UdkLYs4JAZb|L0hF#H&a7P7Qpp(%&$eyt8*lG>H0KV z$Xj4<8CIgahu1Szhx=aXYFF++_l&_~zj^Ga4t{=!r^9{@u8{^wT9xPXzy`gn;u9Ls z4UtS0f(>Mu)R13iu!8|Ey|uITXTIP2a+nZCqcuL7)?X8t0Cv^8-x)fBKMxQ60S1lR zdKWPB-DG-S=3#2|wXmPlQIrG~V_VlO8oPA%ec&-E5FhYNy{0wSS7`n^ow)*E&y0=)$ORcaVp|64#bO z4y6I)9o=&s*P9degTytUc_82`BJWevqt-A%)CFxG9#Fnywl}U^?Pv@NRyC8jX3=wD z8r?A=A{@bcxQ7nd!T+>I&H)CJFZtWw8Hs-E)kVFYX`{H48T^9Nbw8to1EE4`4y}bu z_?GI}g8%;B#gIKNtcC}voZlJ7xPB7yMLd=F9cZCdbLK*DT?_Vss$9`*2qC78bfU>A z4H#c`2@B$I#{@<=Vm{gznZ$zdY2#o{0L`>6QL1I!a}*-QO{HLv6hOfW&v_=@ca14& zxSJW6Mr#f_q}xga9TwS=^ymE<`uyz+Z}y5k9NH6b^yxch5C89`_E2obb`FOUxT+O+ z94^WC_YK{@=?FezK0{yMqso-(A70el2Mv~ja<>Nw@ircU71JQAt)Ehw(07>0-V#Qo zvcT)PhPjIoV0;s&wkJ_A( Date: Sun, 3 Dec 2023 16:07:57 +0200 Subject: [PATCH 21/48] Unleahs the forklift upon this universe --- code/modules/mechs/components/body.dm | 12 ++ code/modules/mechs/components/frame.dm | 4 +- code/modules/mechs/equipment/utility.dm | 141 +++++++++++++++--- .../modules/mechs/interface/screen_objects.dm | 4 +- code/modules/mechs/mech_interaction.dm | 60 ++++---- code/modules/mechs/mech_life.dm | 4 +- icons/mechs/mech_parts.dmi | Bin 23082 -> 23087 bytes icons/mechs/mech_parts_held.dmi | Bin 3192 -> 3192 bytes icons/mechs/mech_weapon_overlays.dmi | Bin 32109 -> 32107 bytes 9 files changed, 165 insertions(+), 60 deletions(-) diff --git a/code/modules/mechs/components/body.dm b/code/modules/mechs/components/body.dm index 0a43447da19..969ccaf2902 100644 --- a/code/modules/mechs/components/body.dm +++ b/code/modules/mechs/components/body.dm @@ -294,3 +294,15 @@ max_damage = 100 mech_health = 200 matter = list(MATERIAL_STEEL = 20, MATERIAL_PLASTIC = 10) + + +/obj/item/mech_component/chassis/forklift/Initialize() + pilot_positions = list( + list( + "[NORTH]" = list("x" = 9, "y" = 5), + "[SOUTH]" = list("x" = 9, "y" = 5), + "[EAST]" = list("x" = 6, "y" = 5), + "[WEST]" = list("x" = 8, "y" = 5) + ) + ) + . = ..() diff --git a/code/modules/mechs/components/frame.dm b/code/modules/mechs/components/frame.dm index 51a8e68c92f..430a73b5b58 100644 --- a/code/modules/mechs/components/frame.dm +++ b/code/modules/mechs/components/frame.dm @@ -98,7 +98,7 @@ if(is_wired) usable_qualities += QUALITY_WIRE_CUTTING - if(is_wired == FRAME_WIRED_ADJUSTED && is_reinforced == FRAME_REINFORCED_WELDED && head && body) + if(is_wired == FRAME_WIRED_ADJUSTED && is_reinforced == FRAME_REINFORCED_WELDED && legs && body) usable_qualities += QUALITY_SCREW_DRIVING var/tool_type = I.get_tool_type(user, usable_qualities, src) @@ -251,7 +251,7 @@ if(!I.use_tool(user, src, WORKTIME_INSTANT, tool_type, FAILCHANCE_ZERO)) return - if(is_reinforced < FRAME_REINFORCED_WELDED || is_wired < FRAME_WIRED_ADJUSTED || !(arms && legs && head && body)) + if(is_reinforced < FRAME_REINFORCED_WELDED || is_wired < FRAME_WIRED_ADJUSTED || !(legs && body)) return // We're all done. Finalize the exosuit and pass the frame to the new system. diff --git a/code/modules/mechs/equipment/utility.dm b/code/modules/mechs/equipment/utility.dm index e6772b83ef8..0bc36becd97 100644 --- a/code/modules/mechs/equipment/utility.dm +++ b/code/modules/mechs/equipment/utility.dm @@ -794,12 +794,15 @@ /// Fancy way to move someone up a z-level if you think about it.. /obj/item/mech_equipment/forklifting_system name = "forklifting bars" - desc = "a set of forklifts bars. Can be used to elevate crates above by a level.. or impale someone at high enough speeds..." + desc = "a set of forklifts bars. Can be used to elevate crates above by a level.. or people!" icon_state = "forklift" restricted_hardpoints = list(HARDPOINT_FRONT) origin_tech = list(TECH_ENGINEERING = 3, TECH_MATERIAL = 2) + equipment_flags = EQUIPFLAG_UPDTMOVE var/atom/movable/currentlyLifting = null var/obj/structure/forklift_platform/platform = null + var/lastZ = null + var/lastDir = null var/lifted = FALSE /obj/item/mech_equipment/forklifting_system/Initialize() @@ -808,6 +811,35 @@ platform.master = src platform.forceMove(src) +/obj/item/mech_equipment/forklifting_system/proc/ejectLifting(atom/target) + currentlyLifting.forceMove(target) + currentlyLifting.transform = null + currentlyLifting.pixel_x = initial(currentlyLifting.pixel_x) + currentlyLifting.pixel_y = initial(currentlyLifting.pixel_y) + currentlyLifting.mouse_opacity = initial(currentlyLifting.mouse_opacity) + owner.vis_contents.Remove(currentlyLifting) + var/mob/targ = currentlyLifting + targ.update_icon() + if(ismob(targ) && targ.client) + targ.client.perspective = MOB_PERSPECTIVE + targ.client.eye = src + currentlyLifting = null + +/obj/item/mech_equipment/forklifting_system/proc/startLifting(atom/movable/target) + currentlyLifting = target + // No clicking this whilst lifted + currentlyLifting.mouse_opacity = MOUSE_OPACITY_TRANSPARENT + currentlyLifting.forceMove(src) + var/mob/targ = currentlyLifting + if(ismob(targ) && targ.client) + targ.client.perspective = EYE_PERSPECTIVE + targ.client.eye = src + +/obj/item/mech_equipment/forklifting_system/uninstalled() + . = ..() + ejectLifting(get_turf(owner)) + + /obj/structure/forklift_platform layer = TURF_LAYER + 0.5 icon = MECH_EQUIPMENT_ICON @@ -834,44 +866,107 @@ return TRUE return FALSE + /obj/item/mech_equipment/forklifting_system/update_icon() . = ..() if(owner) + if(!platform) + icon_state = "forklift_platformless" + return if(lifted) icon_state = "forklift_lifted" else icon_state = "forklift" - if(currentlyLifting && !locate(currentlyLifting) in owner.vis_contents) - var/matrix/the_matrix = new() - the_matrix.Scale(0.6, 0.6) - currentlyLifting.transform = the_matrix - owner.vis_contents.Add(currentlyLifting) - + if(currentlyLifting) + if(!locate(currentlyLifting) in owner.vis_contents) + var/matrix/the_matrix = new() + the_matrix.Scale(0.9, 0.9) + currentlyLifting.transform = the_matrix + owner.vis_contents.Add(currentlyLifting) + if(owner.dir != lastDir) + lastDir = owner.dir + currentlyLifting.dir = owner.dir + if(lastDir == NORTH) + currentlyLifting.pixel_x = 8 + currentlyLifting.pixel_y = 10 + currentlyLifting.layer = MECH_UNDER_LAYER + if(lastDir == EAST) + currentlyLifting.pixel_x = 33 + currentlyLifting.pixel_y = 8 + currentlyLifting.layer = MECH_ABOVE_LAYER + if(lastDir == SOUTH) + currentlyLifting.pixel_x = 8 + currentlyLifting.pixel_y = 6 + currentlyLifting.layer = MECH_ABOVE_LAYER + if(lastDir == WEST) + currentlyLifting.pixel_x = -15 + currentlyLifting.pixel_y = 8 + currentlyLifting.layer = MECH_ABOVE_LAYER + if(owner.z != lastZ) + lastZ = owner.z + currentlyLifting.z = owner.z + currentlyLifting.update_plane() /obj/item/mech_equipment/forklifting_system/attack_self(mob/user) . = ..() - + if(!owner) + return + if(platform) + if(!lifted) + var/turf/aboveSpace = GetAbove(get_turf(owner)) + if(!aboveSpace) + to_chat(user, SPAN_NOTICE("The universe runs out of fabric here! You cannot possibly elevate something here.")) + return + if(!istype(aboveSpace, /turf/simulated/open) || locate(/obj/structure/catwalk) in aboveSpace) + to_chat(user, SPAN_NOTICE("Something dense prevents lifting up.")) + return + to_chat(user, SPAN_NOTICE("You start elevating \the [src] platform.")) + if(do_after(user, 2 SECONDS, owner, TRUE)) + to_chat(user, SPAN_NOTICE("You elevate \the [src]'s platform")) + platform.forcemove(aboveSpace) + ejectLifting(aboveSpace) + else + to_chat(user, SPAN_NOTICE("You start retracting the forklift!")) + var/turf/targ = get_turf(platform) + if(do_after(user, 2 SECONDS, owner, TRUE)) + if(!platform) + return + to_chat(user, SPAN_NOTICE("You retract the forklift!")) + var/atom/whoWeBringingBack + /// Pick up the first mob , else just get the last atom returned + for(var/atom/A in targ) + if(A == platform) + continue + if(ismob(A)) + whoWeBringingBack = A + break + whoWeBringingBack = A + startLifting(whoWeBringingBack) /obj/item/mech_equipment/forklifting_system/afterattack(atom/movable/target, mob/living/user, inrange, params) . = ..() - if(. && inrange && istype(target)) + if(.) + if(currentlyLifting && isturf(target)) + for(var/atom/A in target) + if(A.density) + to_chat(user, SPAN_NOTICE("[A] is taking up space, preventing you from dropping \the [currentlyLifting] here!")) + return + ejectLifting(target) + return if(currentlyLifting) - currentlyLifting.forceMove(get_turf(target)) - to_chat(user, SPAN_NOTICE("You drop \the [currentlyLifting].")) - var/mob/targ = target - if(ismob(targ) && targ.client) - targ.client.perspective = MOB_PERSPECTIVE - targ.client.eye = target - else if(ismovable(target)) + to_chat(user, SPAN_NOTICE("You are already lifting something!")) + return + if(!platform) + to_chat(user, SPAN_NOTICE("There is no forklift platform to lift on! You should get it replaced")) + return + if(lifted) + to_chat(user, SPAN_NOTICE("You can't lift someone whilst the forklift is lifted!")) + return + if(inrange && istype(target) ) to_chat(user, SPAN_NOTICE("You start lifting \the [target] onto the hooks.")) if(do_after(user, 2 SECONDS, target)) - currentlyLifting = target - target.forceMove(src) - var/mob/targ = target - if(ismob(targ) && targ.client) - targ.client.perspective = EYE_PERSPECTIVE - targ.client.eye = src - update_icon() + startLifting(target) + update_icon() diff --git a/code/modules/mechs/interface/screen_objects.dm b/code/modules/mechs/interface/screen_objects.dm index 71853856cbb..ceffb89b6e6 100644 --- a/code/modules/mechs/interface/screen_objects.dm +++ b/code/modules/mechs/interface/screen_objects.dm @@ -360,7 +360,9 @@ update_icon() /obj/screen/movable/exosuit/toggle/camera/update_icon() - toggled = owner.head.active_sensors + if(owner.head) + toggled = owner.head.active_sensors + else toggled = FALSE . = ..() /obj/screen/movable/exosuit/needle diff --git a/code/modules/mechs/mech_interaction.dm b/code/modules/mechs/mech_interaction.dm index 2d85d31436f..2411745adda 100644 --- a/code/modules/mechs/mech_interaction.dm +++ b/code/modules/mechs/mech_interaction.dm @@ -49,19 +49,19 @@ if(A.loc != src && !(get_dir(src, A) & dir)) return - if(!get_cell()?.checked_use(arms.power_use * CELLRATE)) - to_chat(user, power == MECH_POWER_ON ? SPAN_WARNING("Error: Power levels insufficient.") : SPAN_WARNING("\The [src] is powered off.")) - return - - if(!arms) - to_chat(user, SPAN_WARNING("\The [src] has no manipulators!")) - setClickCooldown(3) - return - - if(!arms.motivator || !arms.motivator.is_functional()) - to_chat(user, SPAN_WARNING("Your motivators are damaged! You can't use your manipulators!")) - setClickCooldown(15) - return + if(!selected_system) + if(arms) + if(!get_cell()?.checked_use(arms.power_use * CELLRATE)) + to_chat(user, power == MECH_POWER_ON ? SPAN_WARNING("Error: Power levels insufficient.") : SPAN_WARNING("\The [src] is powered off.")) + return + if(!arms.motivator || !arms.motivator.is_functional()) + to_chat(user, SPAN_WARNING("Your motivators are damaged! You can't use your manipulators!")) + setClickCooldown(15) + return + else + to_chat(user, SPAN_WARNING("\The [src] has no manipulators!")) + setClickCooldown(3) + return var/obj/item/cell/cell = get_cell() if(!cell) @@ -69,11 +69,6 @@ setClickCooldown(3) return - if(!cell.checked_use(arms.power_use * CELLRATE)) - to_chat(user, SPAN_WARNING("Error: Power levels insufficient.")) - setClickCooldown(3) - return - if(istype(selected_system, /obj/item/mech_equipment) && !check_equipment_software(selected_system)) to_chat(user, SPAN_WARNING("Error: No control software was found for [selected_system].")) setClickCooldown(3) @@ -128,22 +123,23 @@ if(A == src) setClickCooldown(5) return attack_self(user) - else if(adj) + else if(adj && arms) setClickCooldown(arms_action_delay()) playsound(src.loc, arms.punch_sound, 45 + 25 * (arms.melee_damage / 50), -1) - if(arms) - if(user.a_intent == I_HURT) - return A.attack_generic(src, arms.melee_damage, "attacked") - else - if(istype(A, /obj/machinery/door/airlock)) - var/obj/machinery/door/airlock/door = A - if(door.stat & NOPOWER && !door.locked && arms.can_force_doors) - to_chat(user, SPAN_NOTICE("You start forcing \the [door] open!")) - visible_message(SPAN_WARNING("\The [src] starts forcing \the [door] open!")) - playsound(src, 'sound/machines/airlock_creaking.ogg', 100, 1, 5,5) - if(do_after(user, 3 SECONDS, A, FALSE)) - door.open(TRUE) - return A.attackby(arms, user, params) + if(user.a_intent == I_HURT) + return A.attack_generic(src, arms.melee_damage, "attacked") + else if(user.a_intent == I_DISARM && arms.can_force_doors) + if(istype(A, /obj/machinery/door/airlock)) + var/obj/machinery/door/airlock/door = A + if(door.stat & NOPOWER && !door.locked) + to_chat(user, SPAN_NOTICE("You start forcing \the [door] open!")) + visible_message(SPAN_WARNING("\The [src] starts forcing \the [door] open!")) + playsound(src, 'sound/machines/airlock_creaking.ogg', 100, 1, 5,5) + if(do_after(user, 3 SECONDS, A, FALSE)) + door.open(TRUE) + return + else + return A.attackby(arms, user, params) /// Checks the mech for places to store the ore. /mob/living/exosuit/proc/getOreCarrier() diff --git a/code/modules/mechs/mech_life.dm b/code/modules/mechs/mech_life.dm index 9f31c6fd6a1..0a7b8305cd4 100644 --- a/code/modules/mechs/mech_life.dm +++ b/code/modules/mechs/mech_life.dm @@ -18,9 +18,9 @@ var/powered = FALSE var/obj/item/cell/mech_cell = get_cell() for(var/hardpoint in hardpoints) - if(QDELETED(hardpoints[hardpoint])) - continue var/obj/item/mech_equipment/equip = hardpoints[hardpoint] + if(QDELETED(equip)) + continue if(!(equip.equipment_flags & EQUIPFLAG_PRETICK)) continue equip.pretick() diff --git a/icons/mechs/mech_parts.dmi b/icons/mechs/mech_parts.dmi index 8f9998f2151c373d3413e63a1fedc37e529f8e8c..218142a2e95837451dd4fe9b9dbda22b3a100343 100644 GIT binary patch delta 529 zcmV+s0`C2)v;nWQ0g#RX&XJE5e_wBcFcig~;ZqQOoy*MrWG{PJG>Z@OE06+Jh%F_w z(fIAxA_L|Mo@;y%%B_ zZCSzhFzcp?m9;`J`(5!873Q2}6gHMjA5ejtmLzZ^lLXD&WWmrVOl?O$o+r$Dv%hj% z(y1Q0&$S*}{R;}kvqx!b-(L-7dfe-g>!OJ9B=kIC6|vH~Dl&WdNa-HMN}Jj~IY!Dp zUxg_Qq_t7<()emj_8U=Fe=5Tg_6yST)u|vWyglxd(tAN|gkpAavD>$0A$JEXJb_1p zElMkd(%iDp%VA&+$xS>UzLD=1;^7(?MiSu97vZ)ipvw)4C9pxU0Cp&zzkd=ievJ-G zUuO%&MnVAl5vV*ZetxScV#0<y-`6HZaIFHubRr5dX2b{b% z98veLOS5JI8$bb?vw}ib6%ok$sq5>z0|2|Sck}gZ-b!4Pp%5Gbz@@VSSQG*jv=-tp TeDr|=00000NkvXXu0mjfg-!X+ delta 524 zcmV+n0`vW^v;nHL0g#RX&ykN6e@kzIKoo`7@GFRJOH_srqpGWgtlZFj-?d+VQgsWX)aAHmDxlkc6g#H8-z-S<+S z{iLQo(S{jr4;QhL5i|QpC6|ToC0VH*;CqLXN$!qU9oqq`VIX4hF;Y37e+8Satdx4T zYr_iu1G8?Ly|PvaX1@!bqr#N4gu?D6(??X`rX>m7$Rt5EH(Ag(3RBzBPnQX^-t4d3 zmUOCz_H(U=cE3iUcy=gl@4MAdrpLV=SrFPdGRCPuhuMiE8%5Gc3YN6RE6|i;yic^;Y=G4Xzvn1 z%vd6nb)mXp$LYsC9Iy~7SR9sO*`ze)&-^}W+7U$! zTj(lh4!7`$MM;?0EgDc;RK01C{uof4Jq8r#jsZn!b%qt?`ir)f-ft+KwdT0i7W_gB iU6i$St8gm-)ME39CRsdu<{x%uACnbQ()6=!0SgO=oo(p= diff --git a/icons/mechs/mech_weapon_overlays.dmi b/icons/mechs/mech_weapon_overlays.dmi index 4f55f1fe705def65ed105374febe7ab1f4dbd9bf..c5f97e07556f8e07a4a6e033253cdc321c544e17 100644 GIT binary patch delta 816 zcmV-01JC^J`T^_u0k9?le-e6BSad{Xb7OL8aCB*JZU6vyoVA(Dj@mF3hS%^EXl7fg zGU}q6ZmJnov*^4+Wa1Oz;@FXGn)3F|4G1Aj{hzc#8YM%%^Ph`PeBp8R?dALH+v@qp z>+%;ludG>pU48!eX}PGB40&_&Wx2>n?efsw_#gt+mk$M{c~b5Zf7gDO3nL$v3#puM zo?9+5Ckkq=H@AqUERwi9uzAO15T0CT)#vu0CAm0XIGaR?R^JY!tBG$$WW znW!vZM-*R5sYGFoOr%p<&x6rXR4DJ2rlhozQ}`ji73m(Qz$&)( zBS(GDbILhE0>Wwif5(e?62+w%F;9_za8{=*XNBC6v&L~VBze;3PMC)`4$SLB23=2m zrk-1QZ;v}LQ1P>cIj(bu+hJDl_h^;_jPUQkfc#d3K<>zje}30Yjv`o>RHUUcyMJUQ zvI*;JNm?8mn;+WGUCaG@_Tr&*xwP6lT9&Fy$cUh!tRj%2tjLScQb>M|!b%YgmH1PDYrqzzNmprXN6fYeV4 zU`mDr;8u$ve@PesfQ;8fWj!3@b%q48KGmWq;oaPrf(5~S;0VI^9PruF7-Md8U`0-h z!^5X|!7&93f&q>oXklBEsc>6m2oCcO%#{a&o@N1YWsOsr#^as3F@tQW}6#i3_C?l_|(bMvwOxI=fn{J-!BLDNw4iuE;H8N}2$X zt=@^|x(klVe&-^cRgpjKToD3TyLWGey-^wW4c4*onaQl%Yn6p{=Bx?psDzxDq-EkC uuUEFAA-*Xzc@MJdAq#rh{2}?i;N$A$?YaHY`VU-9*^j>pDyp+X1uA${ZIC4Z delta 818 zcmV-21I_&F`T_0w0k9?le-wIDSad{Xb7OL8aCB*JZU6vyoVA(Da@sHyhS%^EOtLMV zlIfzGZaT?yvS?nxBdlYrB1;}gl=AkKFA(FHME~)0vN6Qp`Onpo%>C-e)6eIZ)#I<{ zkjnYy zzU88DqN3({^A^!mBoePTY~C>$geTWo^`$*%NiNNo4(uXGCY?}P9D)S}FBn%YFUbc~ zCMnC;5v7+>Dp6S@GwGDp^I)`#D&@V>l+{*p3O~fRBH!Z_SjCp#3ayn7DxXO+0wzOl zcY@R0V_<1(VMuelf9ya`a%y|TCwV|JoGrAqQa6fONg^>duh7~WfUC9emEZ+9g=UrT ziCy3GoN`W(fN&nacf6P$_{G8;*SYO>m=*jjn&ki^{2MSJzZD^nJF%kQe>IDv2-ams(o&gSXC<3! zd`Dv^X_3Kec~1E%(pi|7o}>0B&~?2e)oMCuN1F@qzF2YBpHmX4joz1R%p|ZYIvCNq*3gEmk0RoW@X~R@CsA#Z9 zKsfp@wg{Ijw~4OTMpVo z_wS`PaI^yy^!P$P@I@csG#Pow88dt4KsovwE~kn)e;829p5-~pY91{lJ|$xc7DT)4 z8Uo~aZ@0%3EQr2~zlNCG>2$rpRvLhEi3{Ztm8r-`#*FtEy1H7cJ-!EMDNyQYT~%7f zk~9G#N4+!6br%v(R)=AmucHk|L wcyHX$BZea8UX%9-xE_Ltb6ORF Date: Sun, 3 Dec 2023 16:15:48 +0200 Subject: [PATCH 22/48] fix --- code/modules/mechs/equipment/utility.dm | 3 ++- code/modules/mechs/premade/_premade.dm | 12 ++++++++---- code/modules/mechs/premade/powerloader.dm | 18 ++++++++++++++++++ 3 files changed, 28 insertions(+), 5 deletions(-) diff --git a/code/modules/mechs/equipment/utility.dm b/code/modules/mechs/equipment/utility.dm index 0bc36becd97..1487fc28a00 100644 --- a/code/modules/mechs/equipment/utility.dm +++ b/code/modules/mechs/equipment/utility.dm @@ -854,6 +854,7 @@ /obj/structure/forklift_platform/Destroy() if(master) master.platform = null + master.update_icon() master = null . = ..() @@ -923,7 +924,7 @@ to_chat(user, SPAN_NOTICE("You start elevating \the [src] platform.")) if(do_after(user, 2 SECONDS, owner, TRUE)) to_chat(user, SPAN_NOTICE("You elevate \the [src]'s platform")) - platform.forcemove(aboveSpace) + platform.forceMove(aboveSpace) ejectLifting(aboveSpace) else to_chat(user, SPAN_NOTICE("You start retracting the forklift!")) diff --git a/code/modules/mechs/premade/_premade.dm b/code/modules/mechs/premade/_premade.dm index 5f36892beb3..49ddd4f4df3 100644 --- a/code/modules/mechs/premade/_premade.dm +++ b/code/modules/mechs/premade/_premade.dm @@ -26,10 +26,14 @@ /mob/living/exosuit/premade/Initialize() - arms = new arms(src) - body = new body(src) - head = new head(src) - legs = new legs(src) + if(arms) + arms = new arms(src) + if(body) + body = new body(src) + if(head) + head = new head(src) + if(legs) + legs = new legs(src) for(var/obj/item/mech_component/C in list(arms, legs, head, body)) if(decal) diff --git a/code/modules/mechs/premade/powerloader.dm b/code/modules/mechs/premade/powerloader.dm index 4475beb9411..c94f8775d30 100644 --- a/code/modules/mechs/premade/powerloader.dm +++ b/code/modules/mechs/premade/powerloader.dm @@ -44,3 +44,21 @@ HARDPOINT_RIGHT_HAND = /obj/item/mech_equipment/mounted_system/extinguisher, HARDPOINT_HEAD = /obj/item/mech_equipment/light, ) + +/mob/living/exosuit/premade/forklift + name = "Aster's Guild \"Forklift\"" + desc = "A modernized forklift for usage on space-ships. Are you ready to lift?" + rarity_value = 40 + material = MATERIAL_PLASTIC + installed_armor = /obj/item/robot_parts/robot_component/armour/exosuit/plain + exosuit_color = "#c6c37b" + body = /obj/item/mech_component/chassis/forklift + legs = /obj/item/mech_component/propulsion/wheels + arms = null + head = null + installed_software_boards = list( + /obj/item/electronics/circuitboard/exosystem/utility + ) + installed_systems = list( + HARDPOINT_FRONT = /obj/item/mech_equipment/forklifting_system + ) From 511bf3c6259f47f8a671704122033fe5be32acb8 Mon Sep 17 00:00:00 2001 From: MLGTASTICa Date: Sun, 3 Dec 2023 16:43:33 +0200 Subject: [PATCH 23/48] i heard you like to lift.. --- code/modules/mechs/equipment/utility.dm | 17 +++++++++++++++-- code/modules/mechs/mech.dm | 2 +- code/modules/mechs/mech_movement.dm | 16 +++++++++++----- icons/mechs/mech_equipment.dmi | Bin 28409 -> 28891 bytes 4 files changed, 27 insertions(+), 8 deletions(-) diff --git a/code/modules/mechs/equipment/utility.dm b/code/modules/mechs/equipment/utility.dm index 1487fc28a00..40103ebbec7 100644 --- a/code/modules/mechs/equipment/utility.dm +++ b/code/modules/mechs/equipment/utility.dm @@ -897,7 +897,7 @@ currentlyLifting.layer = MECH_ABOVE_LAYER if(lastDir == SOUTH) currentlyLifting.pixel_x = 8 - currentlyLifting.pixel_y = 6 + currentlyLifting.pixel_y = 0 currentlyLifting.layer = MECH_ABOVE_LAYER if(lastDir == WEST) currentlyLifting.pixel_x = -15 @@ -914,7 +914,17 @@ return if(platform) if(!lifted) + /// We are checking the turf above first var/turf/aboveSpace = GetAbove(get_turf(owner)) + if(!aboveSpace) + to_chat(user, SPAN_NOTICE("The universe runs out of fabric here! You cannot possibly elevate something here.")) + return + if(!istype(aboveSpace, /turf/simulated/open) || locate(/obj/structure/catwalk) in aboveSpace) + to_chat(user, SPAN_NOTICE("Something dense prevents lifting up.")) + return + /// Then the one infront + above + aboveSpace = get_step(owner, owner.dir) + aboveSpace = GetAbove(aboveSpace) if(!aboveSpace) to_chat(user, SPAN_NOTICE("The universe runs out of fabric here! You cannot possibly elevate something here.")) return @@ -924,8 +934,10 @@ to_chat(user, SPAN_NOTICE("You start elevating \the [src] platform.")) if(do_after(user, 2 SECONDS, owner, TRUE)) to_chat(user, SPAN_NOTICE("You elevate \the [src]'s platform")) + platform.dir = owner.dir platform.forceMove(aboveSpace) ejectLifting(aboveSpace) + lifted = TRUE else to_chat(user, SPAN_NOTICE("You start retracting the forklift!")) var/turf/targ = get_turf(platform) @@ -933,6 +945,7 @@ if(!platform) return to_chat(user, SPAN_NOTICE("You retract the forklift!")) + lifted = FALSE var/atom/whoWeBringingBack /// Pick up the first mob , else just get the last atom returned for(var/atom/A in targ) @@ -947,7 +960,7 @@ /obj/item/mech_equipment/forklifting_system/afterattack(atom/movable/target, mob/living/user, inrange, params) . = ..() if(.) - if(currentlyLifting && isturf(target)) + if(currentlyLifting && isturf(target) && inrange) for(var/atom/A in target) if(A.density) to_chat(user, SPAN_NOTICE("[A] is taking up space, preventing you from dropping \the [currentlyLifting] here!")) diff --git a/code/modules/mechs/mech.dm b/code/modules/mechs/mech.dm index 3bd5734cd6f..5392eb9ce0a 100644 --- a/code/modules/mechs/mech.dm +++ b/code/modules/mechs/mech.dm @@ -226,7 +226,7 @@ /mob/living/exosuit/return_air() if(src && loc) - if(ispath(body) || !hatch_closed) + if(ispath(body) || !hatch_closed || body.pilot_coverage < 100) var/turf/current_loc = get_turf(src) return current_loc.return_air() if(body.pilot_coverage >= 100 && hatch_closed) diff --git a/code/modules/mechs/mech_movement.dm b/code/modules/mechs/mech_movement.dm index cc07858aec8..40663ce6d1c 100644 --- a/code/modules/mechs/mech_movement.dm +++ b/code/modules/mechs/mech_movement.dm @@ -197,11 +197,17 @@ /mob/living/exosuit/proc/moveBlocked() for(var/hardpoint in hardpoints) - var/obj/item/mech_equipment/shield_generator/ballistic/blocker = hardpoints[hardpoint] - if(!istype(blocker)) - continue - if(blocker.on) - return "\The [blocker] is deployed! Immobilizing you. " + var/obj/item/mech_equipment/equip = hardpoints[hardpoint] + if(equip) + switch(equip.type) + if(/obj/item/mech_equipment/shield_generator/ballistic) + var/obj/item/mech_equipment/shield_generator/ballistic/blocker = equip + if(blocker.on) + return "\The [blocker] is deployed! Immobilizing you. " + if(/obj/item/mech_equipment/forklifting_system) + var/obj/item/mech_equipment/forklifting_system/fork = equip + if(fork.lifted) + return "\The [fork] is lifted, locking you in place!" return "" diff --git a/icons/mechs/mech_equipment.dmi b/icons/mechs/mech_equipment.dmi index 9f71d76432c3e0bbf06141170d23e4c73994eb4e..d2d0a30f52d19408fa5c793d10d109ca72b9bae4 100644 GIT binary patch delta 9629 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 delta 9143 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 Date: Sun, 3 Dec 2023 17:08:15 +0200 Subject: [PATCH 24/48] more fixes + fix for throwing shit whilst inside of other stuff. --- code/_onclick/click.dm | 2 +- code/modules/mechs/equipment/utility.dm | 7 ++++++- icons/mechs/mech_equipment.dmi | Bin 28891 -> 29051 bytes 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/code/_onclick/click.dm b/code/_onclick/click.dm index 085a2797f75..bdea8016c83 100755 --- a/code/_onclick/click.dm +++ b/code/_onclick/click.dm @@ -124,7 +124,7 @@ return 1 if(in_throw_mode) - if(isturf(A) || isturf(A.loc)) + if(isturf(A) || isturf(A.loc) && isturf(loc)) throw_item(A) return 1 throw_mode_off() diff --git a/code/modules/mechs/equipment/utility.dm b/code/modules/mechs/equipment/utility.dm index 40103ebbec7..dab13f6505c 100644 --- a/code/modules/mechs/equipment/utility.dm +++ b/code/modules/mechs/equipment/utility.dm @@ -855,6 +855,7 @@ if(master) master.platform = null master.update_icon() + master.owner.update_icon() master = null . = ..() @@ -936,6 +937,7 @@ to_chat(user, SPAN_NOTICE("You elevate \the [src]'s platform")) platform.dir = owner.dir platform.forceMove(aboveSpace) + owner.update_icon() ejectLifting(aboveSpace) lifted = TRUE else @@ -946,6 +948,8 @@ return to_chat(user, SPAN_NOTICE("You retract the forklift!")) lifted = FALSE + platform.forceMove(src) + owner.update_icon() var/atom/whoWeBringingBack /// Pick up the first mob , else just get the last atom returned for(var/atom/A in targ) @@ -955,7 +959,8 @@ whoWeBringingBack = A break whoWeBringingBack = A - startLifting(whoWeBringingBack) + if(whoWeBringingBack) + startLifting(whoWeBringingBack) /obj/item/mech_equipment/forklifting_system/afterattack(atom/movable/target, mob/living/user, inrange, params) . = ..() diff --git a/icons/mechs/mech_equipment.dmi b/icons/mechs/mech_equipment.dmi index d2d0a30f52d19408fa5c793d10d109ca72b9bae4..0c2c6540a36913ffc4eeeaee298638eddb2f6dda 100644 GIT binary patch delta 9818 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 Vt(^f4<^n*k=ZfkI#q#FC{{?vZ Date: Sun, 3 Dec 2023 17:15:49 +0200 Subject: [PATCH 25/48] extra mech examine data. --- code/modules/mechs/mech.dm | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/code/modules/mechs/mech.dm b/code/modules/mechs/mech.dm index 5392eb9ce0a..b63f6a62aa8 100644 --- a/code/modules/mechs/mech.dm +++ b/code/modules/mechs/mech.dm @@ -221,7 +221,14 @@ to_chat(user, "It menaces with reinforcements of [material].") to_chat(user, SPAN_NOTICE("You can remove people inside by HARM intent clicking with your hand. The hatch must be opened.")) - to_chat(user, SPAN_NOTICE("You can insert ammo into any ballistic weapon by attacking this with ammunition")) + to_chat(user, SPAN_NOTICE("You can eject any module from its UI by CtrlClicking the hardpoint button")) + to_chat(user, SPAN_NOTICE("You can acces its internal storage by click-dragging onto your character")) + if(body && body.cell_charge_rate) + to_chat(user, SPAN_NOTICE("This mech can recharge any cell storaged in its internal storage at a rate of [body.cell_charge_rate]")) + if(locate(/obj/item/mech_equipment/mounted_system/ballistic in contents)) + to_chat(user, SPAN_NOTICE("You can insert ammo into any ballistic weapon by attacking this with ammunition")) + if(locate(/obj/item/mech_equipment/auto_mender)) + to_chat(user, SPAN_NOTICE("You can refill its auto mender by attacking the mech with trauma kits")) /mob/living/exosuit/return_air() From 07889664f3b76ca81b00afcac1fb1451b3ebcec9 Mon Sep 17 00:00:00 2001 From: MLGTASTICa Date: Sun, 3 Dec 2023 17:49:25 +0200 Subject: [PATCH 26/48] more fixes. --- code/datums/movement/mob.dm | 6 ++++++ code/modules/mechs/equipment/utility.dm | 6 +++--- code/modules/mob/living/carbon/human/human_helpers.dm | 4 ++++ code/modules/mob/living/carbon/resist.dm | 5 +++++ 4 files changed, 18 insertions(+), 3 deletions(-) diff --git a/code/datums/movement/mob.dm b/code/datums/movement/mob.dm index 6e2ba7fa6ce..4d348bbd4f2 100755 --- a/code/datums/movement/mob.dm +++ b/code/datums/movement/mob.dm @@ -268,6 +268,12 @@ else M.stop_pulling() + if(istype(mob.loc, /obj/item/mech_equipment/forklifting_system)) + if(mover == mob && isliving(mob)) + mob:resist() + return MOVEMENT_STOP + + return MOVEMENT_PROCEED diff --git a/code/modules/mechs/equipment/utility.dm b/code/modules/mechs/equipment/utility.dm index dab13f6505c..f7be7a63db2 100644 --- a/code/modules/mechs/equipment/utility.dm +++ b/code/modules/mechs/equipment/utility.dm @@ -834,6 +834,7 @@ if(ismob(targ) && targ.client) targ.client.perspective = EYE_PERSPECTIVE targ.client.eye = src + to_chat(targ, SPAN_DANGER("You can resist out of the forklift to instantly get out!")) /obj/item/mech_equipment/forklifting_system/uninstalled() . = ..() @@ -881,9 +882,6 @@ icon_state = "forklift" if(currentlyLifting) if(!locate(currentlyLifting) in owner.vis_contents) - var/matrix/the_matrix = new() - the_matrix.Scale(0.9, 0.9) - currentlyLifting.transform = the_matrix owner.vis_contents.Add(currentlyLifting) if(owner.dir != lastDir) lastDir = owner.dir @@ -961,6 +959,8 @@ whoWeBringingBack = A if(whoWeBringingBack) startLifting(whoWeBringingBack) + else + to_chat(user, SPAN_NOTICE("You can't lift without a platform!")) /obj/item/mech_equipment/forklifting_system/afterattack(atom/movable/target, mob/living/user, inrange, params) . = ..() diff --git a/code/modules/mob/living/carbon/human/human_helpers.dm b/code/modules/mob/living/carbon/human/human_helpers.dm index 9f6e69b5ade..36764b163a6 100644 --- a/code/modules/mob/living/carbon/human/human_helpers.dm +++ b/code/modules/mob/living/carbon/human/human_helpers.dm @@ -112,6 +112,10 @@ process_glasses(G,TRUE) /mob/living/carbon/human/reset_layer() + /// The forklift handles it for us here. + if(istype(loc, /obj/item/mech_equipment/forklifting_system)) + if(lying) set_plane(LYING_HUMAN_PLANE) + return if(hiding) set_plane(HIDING_MOB_PLANE) layer = HIDING_MOB_LAYER diff --git a/code/modules/mob/living/carbon/resist.dm b/code/modules/mob/living/carbon/resist.dm index d3604bcf7eb..0c0c56467d9 100644 --- a/code/modules/mob/living/carbon/resist.dm +++ b/code/modules/mob/living/carbon/resist.dm @@ -14,6 +14,11 @@ escape_inventory(src.loc) return + if(istype(loc, /obj/item/mech_equipment/forklifting_system)) + var/obj/item/mech_equipment/forklifting_system/fork = loc + fork.ejectLifting(get_turf(fork)) + return + //unbuckling yourself if(buckled) if (buckled.resist_buckle(src)) From b09da767e18a7a7d2c80d15038e6f6f88b958865 Mon Sep 17 00:00:00 2001 From: MLGTASTICa Date: Mon, 4 Dec 2023 21:04:48 +0200 Subject: [PATCH 27/48] Add functionality for removing people from forklifts / towing hooks + more examine text fixe.s --- code/modules/mechs/mech.dm | 8 ++++++-- code/modules/mechs/mech_interaction.dm | 19 +++++++++++++++++++ 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/code/modules/mechs/mech.dm b/code/modules/mechs/mech.dm index b63f6a62aa8..d82d7bdbca3 100644 --- a/code/modules/mechs/mech.dm +++ b/code/modules/mechs/mech.dm @@ -225,10 +225,14 @@ to_chat(user, SPAN_NOTICE("You can acces its internal storage by click-dragging onto your character")) if(body && body.cell_charge_rate) to_chat(user, SPAN_NOTICE("This mech can recharge any cell storaged in its internal storage at a rate of [body.cell_charge_rate]")) - if(locate(/obj/item/mech_equipment/mounted_system/ballistic in contents)) + if(locate(/obj/item/mech_equipment/mounted_system/ballistic) in contents) to_chat(user, SPAN_NOTICE("You can insert ammo into any ballistic weapon by attacking this with ammunition")) - if(locate(/obj/item/mech_equipment/auto_mender)) + if(locate(/obj/item/mech_equipment/auto_mender) in contents) to_chat(user, SPAN_NOTICE("You can refill its auto mender by attacking the mech with trauma kits")) + if(locate(/obj/item/mech_equipment/forklifting_system) in contents) + to_chat(user, SPAN_NOTICE("You can remove objects from this mech's forklifting system by using grab intent")) + if(locate(/obj/item/mech_equipment/towing_hook) in contents) + to_chat(user, SPAN_NOTICE("You can remove objects from this mech's towing system by using grab intent")) /mob/living/exosuit/return_air() diff --git a/code/modules/mechs/mech_interaction.dm b/code/modules/mechs/mech_interaction.dm index 2411745adda..fb476cb7ecd 100644 --- a/code/modules/mechs/mech_interaction.dm +++ b/code/modules/mechs/mech_interaction.dm @@ -277,6 +277,22 @@ to_chat(user, SPAN_WARNING("\The [I] could not be installed in that hardpoint.")) return + if(user.a_intent == I_GRAB) + for(var/obj/item/mech_equipment/towing_hook/towing in contents) + if(towing.currentlyTowing) + to_chat(user, SPAN_NOTICE("You start removing \the [towing.currentlyTowing] from \the [src]'s towing hook.")) + if(do_after(user, 3 SECONDS, src, TRUE)) + to_chat(user, SPAN_NOTICE("You remove \the [towing.currentlyTowing] from \the [src]'s towing hook.")) + towing.UnregisterSignal(towing.currentlyTowing,list(COMSIG_MOVABLE_MOVED,COMSIG_ATTEMPT_PULLING)) + towing.currentlyTowing = null + for(var/obj/item/mech_equipment/forklifting_system/fork in contents) + if(fork.currentlyLifting) + to_chat(user, SPAN_NOTICE("You start removing \the [fork.currentlyLifting] from \the [src]'s forklift.")) + if(do_after(user, 3 SECONDS ,src , TRUE)) + to_chat(user, SPAN_NOTICE("You remove \the [fork.currentlyLifting] from \the [src]'s forklift!")) + fork.ejectLifting(get_turf(user)) + + /// Gun reloading handling if(istype(I, /obj/item/ammo_magazine)|| istype(I, /obj/item/ammo_casing)) if(!maintenance_protocols) @@ -346,6 +362,9 @@ /// Welding generator handling if(is_drainable(I)) + if(!maintenance_protocols) + to_chat(user, SPAN_NOTICE("\The [src] needs to be in maintenance mode for you to refill its internal generator!")) + return var/list/choices = list() for(var/hardpoint in hardpoints) if(istype(hardpoints[hardpoint], /obj/item/mech_equipment/power_generator/fueled/welding)) From eb6c26cad162e7d0f8591febea1ec7697ad5be67 Mon Sep 17 00:00:00 2001 From: MLGTASTICa Date: Mon, 4 Dec 2023 22:07:55 +0200 Subject: [PATCH 28/48] Fixes + FORKLIFTING CHECKS!!!!! --- code/game/turfs/simulated/wall_attacks.dm | 2 +- code/modules/mechs/equipment/utility.dm | 56 +++++++++++++++-------- code/modules/mechs/mech.dm | 16 ++++--- code/modules/mechs/mech_interaction.dm | 38 +++++++-------- 4 files changed, 67 insertions(+), 45 deletions(-) diff --git a/code/game/turfs/simulated/wall_attacks.dm b/code/game/turfs/simulated/wall_attacks.dm index db56d09824c..6b93f1a8afa 100644 --- a/code/game/turfs/simulated/wall_attacks.dm +++ b/code/game/turfs/simulated/wall_attacks.dm @@ -98,7 +98,7 @@ //get the user's location if(!istype(user.loc, /turf)) - if(!(ismech(user.loc) && istype(I, /obj/item/mech_equipment))) + if(!(ismech(user.loc) && istype(I, /obj/item/tool/mech_kit))) return diff --git a/code/modules/mechs/equipment/utility.dm b/code/modules/mechs/equipment/utility.dm index f7be7a63db2..12f9b961285 100644 --- a/code/modules/mechs/equipment/utility.dm +++ b/code/modules/mechs/equipment/utility.dm @@ -505,11 +505,20 @@ /obj/item/mech_equipment/power_generator/fueled name = "fueled debug power generator" + // YES WE NEED VISCONTENTS FOR THE ANIMATIONS + equipment_flags = EQUIPFLAG_UPDTMOVE var/fuel_amount = 0 var/fuel_max = 1000 var/fuel_usage_per_tick = 5 var/mode = 0 var/datum/repeating_sound/sound_loop = null + var/obj/visual_bluff = null + +/obj/item/mech_equipment/power_generator/fueled/Initialize() + . = ..() + visual_bluff = new(src) + visual_bluff.icon = MECH_WEAPON_OVERLAYS_ICON + visual_bluff.layer = MECH_ABOVE_LAYER /obj/item/mech_equipment/power_generator/fueled/pretick() // for when we arențt on @@ -541,6 +550,13 @@ . = ..() owner.tickers.Remove(src) +/obj/item/mech_equipment/power_generator/update_icon() + ..() + icon_state = "[initial(icon_state)]" + visual_bluff.icon_state = "[initial(icon_state)]_[on ? "on" : ""]_[get_hardpoint()]" + if(owner) + owner.update_icon() + /obj/item/mech_equipment/power_generator/fueled/attack_self(mob/user) . = ..() if(. && owner) @@ -550,37 +566,26 @@ mode = 1 fuel_usage_per_tick = initial(fuel_usage_per_tick) * 0.1 generation_rate = initial(generation_rate) * 0.2 - to_chat(user, SPAN_NOTICE("You switch \the [src]'s power production mode to ECO. 10% Fuel usage, 20% power output")) - icon_state = "[initial(icon_state)]_on" - if(owner) - owner.update_icon() + to_chat(user, SPAN_NOTICE("You switch \the [src]'s power production mode to ECO. 10% Fuel usage, 20% power output.")) /// Default if(1) mode = 2 fuel_usage_per_tick = initial(fuel_usage_per_tick) generation_rate = initial(generation_rate) - to_chat(user, SPAN_NOTICE("You switch \the [src]'s power production mode to NORMAL. 100% Fuel usage, 100% power output")) - icon_state = "[initial(icon_state)]_on" - if(owner) - owner.update_icon() + to_chat(user, SPAN_NOTICE("You switch \the [src]'s power production mode to NORMAL. 100% Fuel usage, 100% power output.")) /// Turbo mode, 2x fuel usage at 1.6x power output if(2) mode = 3 fuel_usage_per_tick = initial(fuel_usage_per_tick) * 2 generation_rate = initial(generation_rate) * 1.6 - to_chat(user, SPAN_NOTICE("You switch \the [src]'s power production mode to TURBO. 200% Fuel usage, 160% power output")) - icon_state = "[initial(icon_state)]_on" - if(owner) - owner.update_icon() + to_chat(user, SPAN_NOTICE("You switch \the [src]'s power production mode to TURBO. 200% Fuel usage, 160% power output.")) /// back to eco. if(3) mode = 0 fuel_usage_per_tick = initial(fuel_usage_per_tick) generation_rate = initial(generation_rate) - to_chat(user, SPAN_NOTICE("You switch \the [src]'s power production mode to OFF. 0% Fuel usage, 0% power output")) - icon_state = "[initial(icon_state)]" - if(owner) - owner.update_icon() + to_chat(user, SPAN_NOTICE("You switch \the [src]'s power production mode to OFF. 0% Fuel usage, 0% power output.")) + update_icon() /obj/item/mech_equipment/power_generator/fueled/get_hardpoint_maptext() @@ -625,7 +630,8 @@ /obj/item/mech_equipment/power_generator/fueled/welding/attackby(obj/item/I, mob/living/user, params) . = ..() - if(is_drainable(I) && I.reagents.total_volume) + // double negation to turn this into 0 or 1 format. Since if its more than 1 it doesn't count as true.. + if(!!is_drainable(I)) to_chat(user, SPAN_NOTICE("You transfer 10 units of substance from \the [I] to \the [src]'s internal fuel storage.")) I.reagents.trans_to_holder(reagents, 10, 1, FALSE) else if(I.reagents && I.reagent_flags & REFILLABLE) @@ -820,10 +826,12 @@ owner.vis_contents.Remove(currentlyLifting) var/mob/targ = currentlyLifting targ.update_icon() + targ.update_plane() if(ismob(targ) && targ.client) targ.client.perspective = MOB_PERSPECTIVE targ.client.eye = src currentlyLifting = null + update_icon() /obj/item/mech_equipment/forklifting_system/proc/startLifting(atom/movable/target) currentlyLifting = target @@ -835,6 +843,7 @@ targ.client.perspective = EYE_PERSPECTIVE targ.client.eye = src to_chat(targ, SPAN_DANGER("You can resist out of the forklift to instantly get out!")) + update_icon() /obj/item/mech_equipment/forklifting_system/uninstalled() . = ..() @@ -950,9 +959,11 @@ owner.update_icon() var/atom/whoWeBringingBack /// Pick up the first mob , else just get the last atom returned - for(var/atom/A in targ) + for(var/atom/movable/A in targ) if(A == platform) continue + if(A.anchored) + continue if(ismob(A)) whoWeBringingBack = A break @@ -962,6 +973,10 @@ else to_chat(user, SPAN_NOTICE("You can't lift without a platform!")) +/obj/item/mech_equipment/forklifting_system/resolve_attackby(atom/A, mob/user, params) + . = ..() + + /obj/item/mech_equipment/forklifting_system/afterattack(atom/movable/target, mob/living/user, inrange, params) . = ..() if(.) @@ -981,7 +996,10 @@ if(lifted) to_chat(user, SPAN_NOTICE("You can't lift someone whilst the forklift is lifted!")) return - if(inrange && istype(target) ) + if(inrange && istype(target)) + if(target.anchored) + to_chat(user, SPAN_NOTICE("\The [target] is anchored!")) + return to_chat(user, SPAN_NOTICE("You start lifting \the [target] onto the hooks.")) if(do_after(user, 2 SECONDS, target)) startLifting(target) diff --git a/code/modules/mechs/mech.dm b/code/modules/mechs/mech.dm index d82d7bdbca3..b5440321605 100644 --- a/code/modules/mechs/mech.dm +++ b/code/modules/mechs/mech.dm @@ -221,18 +221,20 @@ to_chat(user, "It menaces with reinforcements of [material].") to_chat(user, SPAN_NOTICE("You can remove people inside by HARM intent clicking with your hand. The hatch must be opened.")) - to_chat(user, SPAN_NOTICE("You can eject any module from its UI by CtrlClicking the hardpoint button")) - to_chat(user, SPAN_NOTICE("You can acces its internal storage by click-dragging onto your character")) + to_chat(user, SPAN_NOTICE("You can eject any module from its UI by CtrlClicking the hardpoint button.")) + to_chat(user, SPAN_NOTICE("You can acces its internal storage by click-dragging onto your character.")) if(body && body.cell_charge_rate) - to_chat(user, SPAN_NOTICE("This mech can recharge any cell storaged in its internal storage at a rate of [body.cell_charge_rate]")) + to_chat(user, SPAN_NOTICE("This mech can recharge any cell storaged in its internal storage at a rate of [body.cell_charge_rate].")) + if(arms && arms.can_force_doors) + to_chat(user, SPAN_NOTICE("The arms on this mech can force open any unbolted door.")) if(locate(/obj/item/mech_equipment/mounted_system/ballistic) in contents) - to_chat(user, SPAN_NOTICE("You can insert ammo into any ballistic weapon by attacking this with ammunition")) + to_chat(user, SPAN_NOTICE("You can insert ammo into any ballistic weapon by attacking this with ammunition.")) if(locate(/obj/item/mech_equipment/auto_mender) in contents) - to_chat(user, SPAN_NOTICE("You can refill its auto mender by attacking the mech with trauma kits")) + to_chat(user, SPAN_NOTICE("You can refill its auto mender by attacking the mech with trauma kits.")) if(locate(/obj/item/mech_equipment/forklifting_system) in contents) - to_chat(user, SPAN_NOTICE("You can remove objects from this mech's forklifting system by using grab intent")) + to_chat(user, SPAN_NOTICE("You can remove objects from this mech's forklifting system by using grab intent.")) if(locate(/obj/item/mech_equipment/towing_hook) in contents) - to_chat(user, SPAN_NOTICE("You can remove objects from this mech's towing system by using grab intent")) + to_chat(user, SPAN_NOTICE("You can remove objects from this mech's towing system by using grab intent.")) /mob/living/exosuit/return_air() diff --git a/code/modules/mechs/mech_interaction.dm b/code/modules/mechs/mech_interaction.dm index fb476cb7ecd..3043708ce27 100644 --- a/code/modules/mechs/mech_interaction.dm +++ b/code/modules/mechs/mech_interaction.dm @@ -131,7 +131,7 @@ else if(user.a_intent == I_DISARM && arms.can_force_doors) if(istype(A, /obj/machinery/door/airlock)) var/obj/machinery/door/airlock/door = A - if(door.stat & NOPOWER && !door.locked) + if(!door.locked) to_chat(user, SPAN_NOTICE("You start forcing \the [door] open!")) visible_message(SPAN_WARNING("\The [src] starts forcing \the [door] open!")) playsound(src, 'sound/machines/airlock_creaking.ogg', 100, 1, 5,5) @@ -277,22 +277,6 @@ to_chat(user, SPAN_WARNING("\The [I] could not be installed in that hardpoint.")) return - if(user.a_intent == I_GRAB) - for(var/obj/item/mech_equipment/towing_hook/towing in contents) - if(towing.currentlyTowing) - to_chat(user, SPAN_NOTICE("You start removing \the [towing.currentlyTowing] from \the [src]'s towing hook.")) - if(do_after(user, 3 SECONDS, src, TRUE)) - to_chat(user, SPAN_NOTICE("You remove \the [towing.currentlyTowing] from \the [src]'s towing hook.")) - towing.UnregisterSignal(towing.currentlyTowing,list(COMSIG_MOVABLE_MOVED,COMSIG_ATTEMPT_PULLING)) - towing.currentlyTowing = null - for(var/obj/item/mech_equipment/forklifting_system/fork in contents) - if(fork.currentlyLifting) - to_chat(user, SPAN_NOTICE("You start removing \the [fork.currentlyLifting] from \the [src]'s forklift.")) - if(do_after(user, 3 SECONDS ,src , TRUE)) - to_chat(user, SPAN_NOTICE("You remove \the [fork.currentlyLifting] from \the [src]'s forklift!")) - fork.ejectLifting(get_turf(user)) - - /// Gun reloading handling if(istype(I, /obj/item/ammo_magazine)|| istype(I, /obj/item/ammo_casing)) if(!maintenance_protocols) @@ -361,7 +345,8 @@ return /// Welding generator handling - if(is_drainable(I)) + /// Double negation to turn into 0/1 format since if its more than 1 it doesn't count as true. + if(!!is_drainable(I)) if(!maintenance_protocols) to_chat(user, SPAN_NOTICE("\The [src] needs to be in maintenance mode for you to refill its internal generator!")) return @@ -596,6 +581,23 @@ /mob/living/exosuit/attack_hand(mob/living/user) // Drag the pilot out if possible. + if(user.a_intent == I_GRAB) + for(var/obj/item/mech_equipment/towing_hook/towing in contents) + if(towing.currentlyTowing) + to_chat(user, SPAN_NOTICE("You start removing \the [towing.currentlyTowing] from \the [src]'s towing hook.")) + if(do_after(user, 3 SECONDS, src, TRUE)) + to_chat(user, SPAN_NOTICE("You remove \the [towing.currentlyTowing] from \the [src]'s towing hook.")) + towing.UnregisterSignal(towing.currentlyTowing,list(COMSIG_MOVABLE_MOVED,COMSIG_ATTEMPT_PULLING)) + towing.currentlyTowing = null + return + for(var/obj/item/mech_equipment/forklifting_system/fork in contents) + if(fork.currentlyLifting) + to_chat(user, SPAN_NOTICE("You start removing \the [fork.currentlyLifting] from \the [src]'s forklift.")) + if(do_after(user, 3 SECONDS ,src , TRUE)) + to_chat(user, SPAN_NOTICE("You remove \the [fork.currentlyLifting] from \the [src]'s forklift!")) + fork.ejectLifting(get_turf(user)) + return + if(user.a_intent == I_HURT) if(!LAZYLEN(pilots)) to_chat(user, SPAN_WARNING("There is nobody inside \the [src].")) From 0f231985999f7ec7aa68b2ed07b52b9e0c8aabfb Mon Sep 17 00:00:00 2001 From: MLGTASTICa Date: Mon, 4 Dec 2023 23:58:27 +0200 Subject: [PATCH 29/48] last Fixes. --- .../structures/crates_lockers/closets.dm | 4 +++ code/modules/mechs/equipment/utility.dm | 28 ++++++++++++------- code/modules/mechs/mech_interaction.dm | 2 +- 3 files changed, 23 insertions(+), 11 deletions(-) diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm index ba0dcbe4661..eff2df7b10f 100644 --- a/code/game/objects/structures/crates_lockers/closets.dm +++ b/code/game/objects/structures/crates_lockers/closets.dm @@ -350,6 +350,10 @@ //Empty gripper attacks will call attack_AI return FALSE + /// So mechs dont open these when attacking. + if(istype(I, /obj/item/mech_equipment/forklifting_system)) + return FALSE + var/list/usable_qualities = list(QUALITY_WELDING) if(opened) usable_qualities += QUALITY_SAWING diff --git a/code/modules/mechs/equipment/utility.dm b/code/modules/mechs/equipment/utility.dm index 12f9b961285..2ce7086261b 100644 --- a/code/modules/mechs/equipment/utility.dm +++ b/code/modules/mechs/equipment/utility.dm @@ -506,7 +506,7 @@ /obj/item/mech_equipment/power_generator/fueled name = "fueled debug power generator" // YES WE NEED VISCONTENTS FOR THE ANIMATIONS - equipment_flags = EQUIPFLAG_UPDTMOVE + equipment_flags = EQUIPFLAG_UPDTMOVE | EQUIPFLAG_PRETICK var/fuel_amount = 0 var/fuel_max = 1000 var/fuel_usage_per_tick = 5 @@ -517,6 +517,7 @@ /obj/item/mech_equipment/power_generator/fueled/Initialize() . = ..() visual_bluff = new(src) + visual_bluff.forceMove(src) visual_bluff.icon = MECH_WEAPON_OVERLAYS_ICON visual_bluff.layer = MECH_ABOVE_LAYER @@ -545,17 +546,18 @@ /obj/item/mech_equipment/power_generator/fueled/installed(mob/living/exosuit/_owner, hardpoint) . = ..() _owner.tickers.Add(src) + _owner.vis_contents.Add(visual_bluff) /obj/item/mech_equipment/power_generator/fueled/uninstalled() . = ..() owner.tickers.Remove(src) + owner.vis_contents.Remove(visual_bluff) -/obj/item/mech_equipment/power_generator/update_icon() +/obj/item/mech_equipment/power_generator/fueled/update_icon() ..() icon_state = "[initial(icon_state)]" - visual_bluff.icon_state = "[initial(icon_state)]_[on ? "on" : ""]_[get_hardpoint()]" - if(owner) - owner.update_icon() + visual_bluff.icon_state = "[initial(icon_state)]_[mode ? "on" : ""]_[get_hardpoint()]" + visual_bluff.dir = owner.dir /obj/item/mech_equipment/power_generator/fueled/attack_self(mob/user) . = ..() @@ -617,6 +619,7 @@ icon_state = "mech_generator_welding" generation_rate = 100 fuel_usage_per_tick = 1 + reagent_flags = DRAINABLE | REFILLABLE /// can generate 20000 power fuel_max = 200 /// The "explosion" chamber , used for when the fuel is mixed with something else @@ -628,15 +631,17 @@ create_reagents(200) chamberReagent = new(1, src) +/* Not needed , reagents subsystem handles this for us in afterattacks on reagent_containers /obj/item/mech_equipment/power_generator/fueled/welding/attackby(obj/item/I, mob/living/user, params) . = ..() // double negation to turn this into 0 or 1 format. Since if its more than 1 it doesn't count as true.. - if(!!is_drainable(I)) + if(!I.is_drainable()) to_chat(user, SPAN_NOTICE("You transfer 10 units of substance from \the [I] to \the [src]'s internal fuel storage.")) I.reagents.trans_to_holder(reagents, 10, 1, FALSE) else if(I.reagents && I.reagent_flags & REFILLABLE) to_chat(user, SPAN_NOTICE("You drain 10 units of substance from \the [src] to \the [I].")) reagents.trans_to_holder(I.reagents, 10, 1, FALSE) +*/ /obj/item/mech_equipment/power_generator/fueled/welding/pretick() // dont run if we aren't on @@ -658,9 +663,9 @@ return // min needed for combustion if(fuel > 0.25) - var/amountReturned = internal_cell?.give(generation_rate * fuel) + var/amountUsed = internal_cell?.give(generation_rate * fuel) // refund if none of it gets turned into power for qol reasons (its never exact returnal due to float errors) - if(amountReturned > generation_rate - generation_rate * 0.01) + if(amountUsed < generation_rate - generation_rate * 0.01) chamberReagent.trans_to_holder(reagents, 1, 1, FALSE) if(fuel > fuel_usage_per_tick) chamberReagent.trans_id_to(reagents, "fuel", chamberReagent.total_volume - fuel_usage_per_tick, TRUE) @@ -827,6 +832,7 @@ var/mob/targ = currentlyLifting targ.update_icon() targ.update_plane() + targ.layer = initial(targ.layer) if(ismob(targ) && targ.client) targ.client.perspective = MOB_PERSPECTIVE targ.client.eye = src @@ -847,7 +853,8 @@ /obj/item/mech_equipment/forklifting_system/uninstalled() . = ..() - ejectLifting(get_turf(owner)) + if(currentlyLifting) + ejectLifting(get_turf(owner)) /obj/structure/forklift_platform @@ -945,7 +952,8 @@ platform.dir = owner.dir platform.forceMove(aboveSpace) owner.update_icon() - ejectLifting(aboveSpace) + if(currentlyLifting) + ejectLifting(aboveSpace) lifted = TRUE else to_chat(user, SPAN_NOTICE("You start retracting the forklift!")) diff --git a/code/modules/mechs/mech_interaction.dm b/code/modules/mechs/mech_interaction.dm index 3043708ce27..afbd821a51e 100644 --- a/code/modules/mechs/mech_interaction.dm +++ b/code/modules/mechs/mech_interaction.dm @@ -346,7 +346,7 @@ /// Welding generator handling /// Double negation to turn into 0/1 format since if its more than 1 it doesn't count as true. - if(!!is_drainable(I)) + if(I.is_drainable()) if(!maintenance_protocols) to_chat(user, SPAN_NOTICE("\The [src] needs to be in maintenance mode for you to refill its internal generator!")) return From 92e40de057af3c6c84e07b6696743d6cff718fb2 Mon Sep 17 00:00:00 2001 From: MLGTASTICa Date: Tue, 5 Dec 2023 00:07:08 +0200 Subject: [PATCH 30/48] More examines + a new seat on the forklift chassis. --- code/modules/mechs/components/body.dm | 8 +++++++- code/modules/mechs/equipment/utility.dm | 2 +- code/modules/mechs/mech.dm | 5 ++++- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/code/modules/mechs/components/body.dm b/code/modules/mechs/components/body.dm index 969ccaf2902..119242891c9 100644 --- a/code/modules/mechs/components/body.dm +++ b/code/modules/mechs/components/body.dm @@ -286,7 +286,7 @@ /obj/item/mech_component/chassis/forklift name = "forklift chassis" - desc = "Has an integrated clamp for the industrial relocation of resources. Are you ready to lift?" + desc = "Has an integrated forklift clamp for the industrial relocation of resources. Are you ready to lift?" icon_state = "seat-cockpit" has_hardpoints = list(HARDPOINT_FRONT) exosuit_desc_string = "a forklifting chassis" @@ -303,6 +303,12 @@ "[SOUTH]" = list("x" = 9, "y" = 5), "[EAST]" = list("x" = 6, "y" = 5), "[WEST]" = list("x" = 8, "y" = 5) + ), + list( + "[NORTH]" = list("x" = 9, "y" = 3), + "[SOUTH]" = list("x" = 9, "y" = 8), + "[EAST]" = list("x" = 9, "y" = 5), + "[WEST]" = list("x" = 6, "y" = 5) ) ) . = ..() diff --git a/code/modules/mechs/equipment/utility.dm b/code/modules/mechs/equipment/utility.dm index 2ce7086261b..68a2cb46f2d 100644 --- a/code/modules/mechs/equipment/utility.dm +++ b/code/modules/mechs/equipment/utility.dm @@ -805,7 +805,7 @@ /// Fancy way to move someone up a z-level if you think about it.. /obj/item/mech_equipment/forklifting_system name = "forklifting bars" - desc = "a set of forklifts bars. Can be used to elevate crates above by a level.. or people!" + desc = "a set of forklifts bars. Can be used to elevate crates above by a level.. or people! You can forklift a z-level up by attacking this with itself." icon_state = "forklift" restricted_hardpoints = list(HARDPOINT_FRONT) origin_tech = list(TECH_ENGINEERING = 3, TECH_MATERIAL = 2) diff --git a/code/modules/mechs/mech.dm b/code/modules/mechs/mech.dm index b5440321605..1d86267799e 100644 --- a/code/modules/mechs/mech.dm +++ b/code/modules/mechs/mech.dm @@ -222,7 +222,8 @@ to_chat(user, "It menaces with reinforcements of [material].") to_chat(user, SPAN_NOTICE("You can remove people inside by HARM intent clicking with your hand. The hatch must be opened.")) to_chat(user, SPAN_NOTICE("You can eject any module from its UI by CtrlClicking the hardpoint button.")) - to_chat(user, SPAN_NOTICE("You can acces its internal storage by click-dragging onto your character.")) + if(body.storage_compartment) + to_chat(user, SPAN_NOTICE("You can acces its internal storage by click-dragging onto your character.")) if(body && body.cell_charge_rate) to_chat(user, SPAN_NOTICE("This mech can recharge any cell storaged in its internal storage at a rate of [body.cell_charge_rate].")) if(arms && arms.can_force_doors) @@ -235,6 +236,8 @@ to_chat(user, SPAN_NOTICE("You can remove objects from this mech's forklifting system by using grab intent.")) if(locate(/obj/item/mech_equipment/towing_hook) in contents) to_chat(user, SPAN_NOTICE("You can remove objects from this mech's towing system by using grab intent.")) + if(locate(/obj/item/mech_equipment/power_generator/fueled) in contents) + to_chat(user, SPAN_NOTICE("You can refill the mounted power generators by attacking \the [src] with the fuel they use.")) /mob/living/exosuit/return_air() From 1f1bd6e97334050a59d5e4e3e679ae12165be58a Mon Sep 17 00:00:00 2001 From: MLGTASTICa <61350382+MLGTASTICa@users.noreply.github.com> Date: Tue, 5 Dec 2023 00:13:47 +0200 Subject: [PATCH 31/48] Flip this around so it doesnt always give energy. --- code/modules/mechs/equipment/utility.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mechs/equipment/utility.dm b/code/modules/mechs/equipment/utility.dm index 68a2cb46f2d..9e6521495db 100644 --- a/code/modules/mechs/equipment/utility.dm +++ b/code/modules/mechs/equipment/utility.dm @@ -665,7 +665,7 @@ if(fuel > 0.25) var/amountUsed = internal_cell?.give(generation_rate * fuel) // refund if none of it gets turned into power for qol reasons (its never exact returnal due to float errors) - if(amountUsed < generation_rate - generation_rate * 0.01) + if(amountUsed < generation_rate * 0.1) chamberReagent.trans_to_holder(reagents, 1, 1, FALSE) if(fuel > fuel_usage_per_tick) chamberReagent.trans_id_to(reagents, "fuel", chamberReagent.total_volume - fuel_usage_per_tick, TRUE) From 4b3379a46dd4bcd77920c3ab896450fb8300b9d0 Mon Sep 17 00:00:00 2001 From: MLGTASTICa Date: Wed, 6 Dec 2023 02:33:12 +0200 Subject: [PATCH 32/48] Fix UI sometimes glitching , fix door forcing being do-able with light arms and clamper arms, fixes draining fuel generators --- code/modules/mechs/components/arms.dm | 2 ++ code/modules/mechs/components/body.dm | 11 ++++--- code/modules/mechs/equipment/utility.dm | 42 +++++++++++++++++-------- code/modules/mechs/mech.dm | 5 +++ 4 files changed, 43 insertions(+), 17 deletions(-) diff --git a/code/modules/mechs/components/arms.dm b/code/modules/mechs/components/arms.dm index a49ccbe499e..a9c80304720 100644 --- a/code/modules/mechs/components/arms.dm +++ b/code/modules/mechs/components/arms.dm @@ -58,6 +58,7 @@ desc = "Industrial lifter arms that allow you to crudely manipulate things from the safety of your cockpit." exosuit_desc_string = "industrial lifter arms" icon_state = "loader_arms" + can_force_doors = FALSE max_damage = 90 power_use = 30 @@ -67,6 +68,7 @@ desc = "As flexible as they are fragile, these manipulators can follow a pilot's movements in close to real time." icon_state = "light_arms" action_delay = 5 + can_force_doors = FALSE max_damage = 45 power_use = 10 matter = list(MATERIAL_STEEL = 10, MATERIAL_PLASTIC = 5) diff --git a/code/modules/mechs/components/body.dm b/code/modules/mechs/components/body.dm index 119242891c9..a29da3e5146 100644 --- a/code/modules/mechs/components/body.dm +++ b/code/modules/mechs/components/body.dm @@ -42,6 +42,8 @@ var/climb_time = 25 /// does this mech chassis have support for charging all cells inside of its storage? if its 0 it doesnt var/cell_charge_rate = 200 + /// Wheter chassis blocks sight from a outside POV (aka can see behind mech or not ?) + var/opaque_chassis = TRUE /obj/item/mech_component/chassis/New() ..() @@ -293,6 +295,7 @@ pilot_coverage = 30 max_damage = 100 mech_health = 200 + opaque_chassis = FALSE matter = list(MATERIAL_STEEL = 20, MATERIAL_PLASTIC = 10) @@ -305,10 +308,10 @@ "[WEST]" = list("x" = 8, "y" = 5) ), list( - "[NORTH]" = list("x" = 9, "y" = 3), - "[SOUTH]" = list("x" = 9, "y" = 8), - "[EAST]" = list("x" = 9, "y" = 5), - "[WEST]" = list("x" = 6, "y" = 5) + "[NORTH]" = list("x" = 9, "y" = 5), + "[SOUTH]" = list("x" = 9, "y" = 10), + "[EAST]" = list("x" = 0, "y" = 5), + "[WEST]" = list("x" = 16, "y" = 5) ) ) . = ..() diff --git a/code/modules/mechs/equipment/utility.dm b/code/modules/mechs/equipment/utility.dm index 9e6521495db..f45e30c4ecc 100644 --- a/code/modules/mechs/equipment/utility.dm +++ b/code/modules/mechs/equipment/utility.dm @@ -631,17 +631,24 @@ create_reagents(200) chamberReagent = new(1, src) -/* Not needed , reagents subsystem handles this for us in afterattacks on reagent_containers + /obj/item/mech_equipment/power_generator/fueled/welding/attackby(obj/item/I, mob/living/user, params) . = ..() - // double negation to turn this into 0 or 1 format. Since if its more than 1 it doesn't count as true.. - if(!I.is_drainable()) - to_chat(user, SPAN_NOTICE("You transfer 10 units of substance from \the [I] to \the [src]'s internal fuel storage.")) - I.reagents.trans_to_holder(reagents, 10, 1, FALSE) - else if(I.reagents && I.reagent_flags & REFILLABLE) - to_chat(user, SPAN_NOTICE("You drain 10 units of substance from \the [src] to \the [I].")) - reagents.trans_to_holder(I.reagents, 10, 1, FALSE) -*/ + /// Only needed when we attack from outside + if(owner) + if(I.is_drainable() && I.reagents.total_volume) + to_chat(user, SPAN_NOTICE("You transfer 10 units of substance from \the [I] to \the [src]'s internal fuel storage.")) + I.reagents.trans_to_holder(reagents, 10, 1, FALSE) + else if(I.reagents && I.reagent_flags & REFILLABLE && user.a_intent == I_GRAB) + to_chat(user, SPAN_NOTICE("You drain 10 units of substance from \the [src] to \the [I].")) + reagents.trans_to_holder(I.reagents, 10, 1, FALSE) + else + to_chat(user, SPAN_NOTICE("You need to be on GRAB intent to drain from \the [src].")) + else if(I.is_refillable() && reagents.total_volume && user.a_intent == I_GRAB) + return FALSE + else + to_chat(user, SPAN_NOTICE("You need to be on GRAB intent to drain from \the [src].")) + /obj/item/mech_equipment/power_generator/fueled/welding/pretick() // dont run if we aren't on @@ -822,6 +829,14 @@ platform.master = src platform.forceMove(src) +/obj/item/mech_equipment/forklifting_system/Destroy() + if(currentlyLifting) + ejectLifting(get_turf(src)) + if(platform) + QDEL_NULL(platform) + . = ..() + + /obj/item/mech_equipment/forklifting_system/proc/ejectLifting(atom/target) currentlyLifting.forceMove(target) currentlyLifting.transform = null @@ -981,10 +996,6 @@ else to_chat(user, SPAN_NOTICE("You can't lift without a platform!")) -/obj/item/mech_equipment/forklifting_system/resolve_attackby(atom/A, mob/user, params) - . = ..() - - /obj/item/mech_equipment/forklifting_system/afterattack(atom/movable/target, mob/living/user, inrange, params) . = ..() if(.) @@ -1008,6 +1019,11 @@ if(target.anchored) to_chat(user, SPAN_NOTICE("\The [target] is anchored!")) return + if(ismob(target)) + var/mob/trg = target + if(target.mob_size >= MOB_HUGE) + to_chat(user, SPAN_NOTICE("\The [target] is far too big to fit on the forklift clamps!")) + return to_chat(user, SPAN_NOTICE("You start lifting \the [target] onto the hooks.")) if(do_after(user, 2 SECONDS, target)) startLifting(target) diff --git a/code/modules/mechs/mech.dm b/code/modules/mechs/mech.dm index 1d86267799e..8aca6d835c4 100644 --- a/code/modules/mechs/mech.dm +++ b/code/modules/mechs/mech.dm @@ -162,6 +162,9 @@ if(head && head.radio) radio = new(src) + if(body) + opacity = body.opaque_chassis + if(LAZYLEN(component_descriptions)) desc = "[desc] It has been built with [english_list(component_descriptions)]." @@ -238,6 +241,8 @@ to_chat(user, SPAN_NOTICE("You can remove objects from this mech's towing system by using grab intent.")) if(locate(/obj/item/mech_equipment/power_generator/fueled) in contents) to_chat(user, SPAN_NOTICE("You can refill the mounted power generators by attacking \the [src] with the fuel they use.")) + if(locate(/obj/item/mech_equipment/power_generator/fueled/welding) in contents) + to_chat(user, SPAN_NOTICE("You can drain from the mounted fuel welding fuel generator by attacking with a beaker on GRAB intent")) /mob/living/exosuit/return_air() From adcb2191d3ccccd44e5443d2d46f6abfaf297ec9 Mon Sep 17 00:00:00 2001 From: MLGTASTICa Date: Wed, 6 Dec 2023 02:37:16 +0200 Subject: [PATCH 33/48] Update utility.dm --- code/modules/mechs/equipment/utility.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/mechs/equipment/utility.dm b/code/modules/mechs/equipment/utility.dm index f45e30c4ecc..6e08c821d37 100644 --- a/code/modules/mechs/equipment/utility.dm +++ b/code/modules/mechs/equipment/utility.dm @@ -1020,8 +1020,8 @@ to_chat(user, SPAN_NOTICE("\The [target] is anchored!")) return if(ismob(target)) - var/mob/trg = target - if(target.mob_size >= MOB_HUGE) + var/mob/living/trg = target + if(trg.mob_size >= MOB_HUGE) to_chat(user, SPAN_NOTICE("\The [target] is far too big to fit on the forklift clamps!")) return to_chat(user, SPAN_NOTICE("You start lifting \the [target] onto the hooks.")) From 462f8d0480aa33dfe1ae42be783116334fb5ff60 Mon Sep 17 00:00:00 2001 From: MLGTASTICa Date: Wed, 6 Dec 2023 17:02:13 +0200 Subject: [PATCH 34/48] Update frame.dm --- code/modules/mechs/components/frame.dm | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/code/modules/mechs/components/frame.dm b/code/modules/mechs/components/frame.dm index 430a73b5b58..37474d2ef15 100644 --- a/code/modules/mechs/components/frame.dm +++ b/code/modules/mechs/components/frame.dm @@ -333,6 +333,9 @@ if(legs) to_chat(user, SPAN_WARNING("\The [src] already has a propulsion system installed.")) return + if(istype(body, /obj/item/mech_component/chassis/forklift) && !istype(I, /obj/item/mech_component/propulsion/wheels)) + to_chat(user, SPAN_WARNING("\The [src]'s chassis can not support this type of propulsation, only wheels!")) + return if(install_component(I, user)) if(legs) user.unEquip(I, loc) @@ -382,6 +385,9 @@ if(head) head.forceMove(get_turf(src)) head = null + if(legs && !istype(legs, /obj/item/mech_component/propulsion/wheels)) + legs.forceMove(get_turf(src)) + legs = null visible_message(SPAN_NOTICE("\The [user] installs \the [I] into \the [src].")) playsound(user.loc, 'sound/machines/click.ogg', 50, 1) return 1 From d2e7c08cec19fd23191e484fcfc183de705a020e Mon Sep 17 00:00:00 2001 From: MLGTASTICa Date: Thu, 7 Dec 2023 15:41:13 +0200 Subject: [PATCH 35/48] fixes for bugs. --- code/modules/mechs/equipment/utility.dm | 4 ---- code/modules/mechs/mech_interaction.dm | 11 ++++++++--- code/modules/mechs/mech_life.dm | 2 +- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/code/modules/mechs/equipment/utility.dm b/code/modules/mechs/equipment/utility.dm index 6e08c821d37..315e4f23d7a 100644 --- a/code/modules/mechs/equipment/utility.dm +++ b/code/modules/mechs/equipment/utility.dm @@ -499,10 +499,6 @@ return ungiven_power -/obj/item/mech_equipment/power_generator/installed(mob/living/exosuit/_owner, hardpoint) - . = ..() - - /obj/item/mech_equipment/power_generator/fueled name = "fueled debug power generator" // YES WE NEED VISCONTENTS FOR THE ANIMATIONS diff --git a/code/modules/mechs/mech_interaction.dm b/code/modules/mechs/mech_interaction.dm index afbd821a51e..fee206731ea 100644 --- a/code/modules/mechs/mech_interaction.dm +++ b/code/modules/mechs/mech_interaction.dm @@ -384,8 +384,10 @@ if(!maintenance_protocols) to_chat(user, SPAN_WARNING("The power cell bay is locked while maintenance protocols are disabled.")) return TRUE - - var/obj/item/cell/cell = get_cell() + if(!body) + to_chat(user, SPAN_NOTICE("\The [src] has no slot for a battery to be installed unto!")) + return + var/obj/item/cell/cell = body.cell if(cell) to_chat(user, SPAN_WARNING("\The [src] already has [cell] installed!")) return TRUE @@ -523,7 +525,10 @@ if(QUALITY_PRYING) - var/obj/item/cell/cell = get_cell() + if(!body) + to_chat(user, SPAN_NOTICE("\The [src] has no body to pry out a cell from!")) + return + var/obj/item/cell/cell = body.cell if(cell) if(!maintenance_protocols) to_chat(user, SPAN_WARNING("The power cell bay is locked while maintenance protocols are disabled.")) diff --git a/code/modules/mechs/mech_life.dm b/code/modules/mechs/mech_life.dm index 0a7b8305cd4..af5a3a987d9 100644 --- a/code/modules/mechs/mech_life.dm +++ b/code/modules/mechs/mech_life.dm @@ -47,7 +47,7 @@ var/chargeNeeded = min(to_charge.maxcharge - to_charge.charge, body.cell_charge_rate) if(!chargeNeeded) continue - chargeUsed += to_charge.give(mech_cell.drain_power(0,0, chargeNeeded)) + chargeUsed += to_charge.give(mech_cell.drain_power(0,0, chargeNeeded / CELLRATE)) body.update_air(hatch_closed && use_air) From ecfe34b08b0e78f28e850cd6a867e06dee379a1d Mon Sep 17 00:00:00 2001 From: MLGTASTICa Date: Thu, 7 Dec 2023 15:49:28 +0200 Subject: [PATCH 36/48] fix for integrations --- code/modules/mechs/mech_life.dm | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/code/modules/mechs/mech_life.dm b/code/modules/mechs/mech_life.dm index af5a3a987d9..4354609b478 100644 --- a/code/modules/mechs/mech_life.dm +++ b/code/modules/mechs/mech_life.dm @@ -119,14 +119,18 @@ var/obj/wreck = new wreckage_path(drop_location(), src, gibbed) wreck.name = "wreckage of \the [name]" if(!gibbed) - if(arms.loc != src) - arms = null - if(legs.loc != src) - legs = null - if(head.loc != src) - head = null - if(body.loc != src) - body = null + if(arms) + if(arms.loc != src) + arms = null + if(legs) + if(legs.loc != src) + legs = null + if(head) + if(head.loc != src) + head = null + if(body) + if(body.loc != src) + body = null // Handle the rest of things. ..(gibbed, (gibbed ? "explodes!" : "grinds to a halt before collapsing!")) From c44e6e15dbcfc4be64f647c6a7033581f4023006 Mon Sep 17 00:00:00 2001 From: MLGTASTICa Date: Thu, 7 Dec 2023 16:12:13 +0200 Subject: [PATCH 37/48] Add all the modules to research + give them research data and material costs. --- code/modules/mechs/components/legs.dm | 2 +- code/modules/mechs/equipment/medical.dm | 11 +++++++- code/modules/mechs/equipment/utility.dm | 26 +++++++++++++++++- .../designs/mechs2/exosuits_components.dm | 6 +++++ .../designs/mechs2/exosuits_equipment.dm | 27 +++++++++++++++++++ code/modules/research/nodes/robotics.dm | 16 ++++++++--- 6 files changed, 82 insertions(+), 6 deletions(-) diff --git a/code/modules/mechs/components/legs.dm b/code/modules/mechs/components/legs.dm index f9ecf5e48e6..1db458d4c7f 100644 --- a/code/modules/mechs/components/legs.dm +++ b/code/modules/mechs/components/legs.dm @@ -114,7 +114,7 @@ icon_state = "wheels" move_delay = 2 turn_delay = 4 - max_damage = 70 + max_damage = 30 stomp_damage = 15 power_use = 10 matter = list(MATERIAL_STEEL = 4, MATERIAL_PLASTIC = 16) diff --git a/code/modules/mechs/equipment/medical.dm b/code/modules/mechs/equipment/medical.dm index 2c1001b4837..58d02e80600 100644 --- a/code/modules/mechs/equipment/medical.dm +++ b/code/modules/mechs/equipment/medical.dm @@ -91,6 +91,11 @@ /obj/machinery/sleeper/mounted/upgraded name = "\improper MK2 mounted sleeper" + origin_tech = list(TECH_MATERIAL = 1, TECH_ENGINEERING = 3, TECH_BIO = 5) + spawn_frequency = 80 + spawn_blacklisted = FALSE + spawn_tags = SPAWN_MECH_QUIPMENT + materials = list(MATERIAL_PLASTEEL = 10, MATERIAL_PLASTIC = 10, MATERIAL_GLASS = 5, MATERIAL_SILVER = 3, MATERIAL_PLATINUM = 1) available_chemicals = list("inaprovaline2" = "Synth-Inaprovaline", "quickclot" = "Quick-Clot", "stoxin" = "Soporific", @@ -108,7 +113,11 @@ restricted_software = list(MECH_SOFTWARE_MEDICAL) equipment_delay = 30 //don't spam it on people pls active_power_use = 0 //Usage doesn't really require power. - origin_tech = list(TECH_DATA = 2, TECH_BIO = 3) + origin_tech = list(TECH_DATA = 3, TECH_BIO = 5, TECH_ENGINEERING = 3) + spawn_frequency = 80 + spawn_blacklisted = FALSE + spawn_tags = SPAWN_MECH_QUIPMENT + materials = list(MATERIAL_PLASTEEL = 10, MATERIAL_PLASTIC = 10, MATERIAL_SILVER = 8, MATERIAL_GLASS = 5) passive_power_use = 1.5 KILOWATTS var/mob/living/carbon/human/mending_target = null var/mob/living/exosuit/mech = null diff --git a/code/modules/mechs/equipment/utility.dm b/code/modules/mechs/equipment/utility.dm index 315e4f23d7a..cd782c56764 100644 --- a/code/modules/mechs/equipment/utility.dm +++ b/code/modules/mechs/equipment/utility.dm @@ -473,6 +473,7 @@ restricted_hardpoints = list(HARDPOINT_LEFT_SHOULDER, HARDPOINT_RIGHT_SHOULDER) restricted_software = list(MECH_SOFTWARE_UTILITY) equipment_flags = EQUIPFLAG_PRETICK + spawn_blacklisted = TRUE var/obj/item/cell/internal_cell /// 50 power per mech life tick , adjust for cell RATE var/generation_rate = 50 @@ -480,6 +481,7 @@ /obj/item/mech_equipment/power_generator/Initialize() . = ..() internal_cell = new /obj/item/cell/small + internal_cell.materials = list() /obj/item/mech_equipment/power_generator/attackby(obj/item/I, mob/living/user, params) . = ..() @@ -509,6 +511,7 @@ var/mode = 0 var/datum/repeating_sound/sound_loop = null var/obj/visual_bluff = null + spawn_blacklisted = TRUE /obj/item/mech_equipment/power_generator/fueled/Initialize() . = ..() @@ -593,6 +596,11 @@ name = "plasma powered mech-mountable power generator" desc = "a plasma-fueled mech power generator, creates 5 KW out of 1 sheet of plasma at a rate of 0.25 KW. Fully stocked it generates 35 KW in total." icon_state = "mech_generator_plasma" + spawn_frequency = 80 + spawn_blacklisted = FALSE + spawn_tags = SPAWN_MECH_QUIPMENT + materials = list(MATERIAL_PLASTEEL = 15, MATERIAL_GLASS = 6, MATERIAL_PLASTIC = 3, MATERIAL_SILVER = 2, MATERIAL_GOLD = 3, MATERIAL_STEEL = 4) + origin_tech = list(TECH_MATERIAL = 3, TECH_ENGINEERING = 5, TECH_POWER = 3) generation_rate = 250 // each sheet is 5000 watts fuel_usage_per_tick = 50 @@ -613,6 +621,11 @@ name ="welding fuel powered mech-mountable power generator" desc = "a mech mounted generator that runs off welding fuel, creates 1 KW out of 10 units of welding fuel, at a rate of 0.1 KW. Fully stocked it generates 20 KW in total." icon_state = "mech_generator_welding" + spawn_frequency = 80 + spawn_blacklisted = FALSE + spawn_tags = SPAWN_MECH_QUIPMENT + materials = list(MATERIAL_PLASTEEL = 10, MATERIAL_GLASS = 3, MATERIAL_PLASTIC = 3, MATERIAL_SILVER = 2, MATERIAL_STEEL = 4) + origin_tech = list(TECH_MATERIAL = 2, TECH_ENGINEERING = 3, TECH_POWER = 2) generation_rate = 100 fuel_usage_per_tick = 1 reagent_flags = DRAINABLE | REFILLABLE @@ -693,7 +706,11 @@ icon_state = "mech_tow" restricted_hardpoints = list(HARDPOINT_BACK) restricted_software = list(MECH_SOFTWARE_UTILITY) - origin_tech = list(TECH_MATERIAL = 2, TECH_ENGINEERING = 2) + origin_tech = list(TECH_MATERIAL = 3, TECH_ENGINEERING = 4) + spawn_frequency = 80 + spawn_blacklisted = FALSE + spawn_tags = SPAWN_MECH_QUIPMENT + materials = list(MATERIAL_PLASTEEL = 10, MATERIAL_PLASTIC = 10) var/atom/movable/currentlyTowing = null /obj/item/mech_equipment/towing_hook/installed(mob/living/exosuit/_owner, hardpoint) @@ -781,6 +798,9 @@ restricted_software = list(MECH_SOFTWARE_UTILITY) origin_tech = list(TECH_ENGINEERING = 5, TECH_MAGNET = 2, TECH_MATERIAL = 2) matter = list(MATERIAL_PLASTEEL = 25, MATERIAL_PLASTIC = 10, MATERIAL_SILVER = 5) + spawn_frequency = 80 + spawn_blacklisted = FALSE + spawn_tags = SPAWN_MECH_QUIPMENT /obj/item/tool/mech_kit name = "mech toolkit" @@ -812,6 +832,10 @@ icon_state = "forklift" restricted_hardpoints = list(HARDPOINT_FRONT) origin_tech = list(TECH_ENGINEERING = 3, TECH_MATERIAL = 2) + spawn_frequency = 80 + spawn_blacklisted = FALSE + spawn_tags = SPAWN_MECH_QUIPMENT + materials = list(MATERIAL_PLASTEEL = 15, MATERIAL_STEEL = 15, MATERIAL_PLASTIC = 10) equipment_flags = EQUIPFLAG_UPDTMOVE var/atom/movable/currentlyLifting = null var/obj/structure/forklift_platform/platform = null diff --git a/code/modules/research/designs/mechs2/exosuits_components.dm b/code/modules/research/designs/mechs2/exosuits_components.dm index c3be59c7d8b..38fe446e2c7 100644 --- a/code/modules/research/designs/mechs2/exosuits_components.dm +++ b/code/modules/research/designs/mechs2/exosuits_components.dm @@ -86,6 +86,9 @@ /datum/design/research/item/mechfab/exosuit/chassis/pod build_path = /obj/item/mech_component/chassis/pod +/datum/design/research/item/mechfab/exosuit/chassis/forklift + build_path = /obj/item/mech_component/chassis/forklift + //Manipulators /datum/design/research/item/mechfab/exosuit/manipulators category = "Exosuit Manipulators" @@ -124,3 +127,6 @@ /datum/design/research/item/mechfab/exosuit/propulsion/tracks build_path = /obj/item/mech_component/propulsion/tracks + +/datum/design/research/item/mechfab/exosuit/propulsion/wheels + build_path = /obj/item/mech_component/propulsion/wheels diff --git a/code/modules/research/designs/mechs2/exosuits_equipment.dm b/code/modules/research/designs/mechs2/exosuits_equipment.dm index bd0fc4305d9..ee9afd41de1 100644 --- a/code/modules/research/designs/mechs2/exosuits_equipment.dm +++ b/code/modules/research/designs/mechs2/exosuits_equipment.dm @@ -88,13 +88,40 @@ name = "mounted ion thrusters" build_path = /obj/item/mech_equipment/thrusters +/datum/design/research/item/exosuit/forklift + name = "forklift clamps" + build_path = /obj/item/mech_equipment/forklifting_system + +/datum/design/research/item/exosuit/fuel_generator + name = "welding fuel mech generator" + build_path = /obj/item/mech_equipment/power_generator/fueled/welding + +/datum/design/research/item/exosuit/plasma_generator + name = "plasma mech generator" + build_path = /obj/item/mech_equipment/power_generator/fueled/plasma + +/datum/design/research/item/exosuit/towing_hook + name = "mech towing hook" + build_path = /obj/item/mech_equipment/towing_hook + //MEDICAL /datum/design/research/item/exosuit/sleeper name = "mounted sleeper" build_path = /obj/item/mech_equipment/sleeper +/datum/design/research/item/exosuit/sleeper/upgraded + name = "mounted sleeper MK2" + build_path = /obj/item/mech_equipment/sleeper/upgraded + +/datum/design/research/item/exosuit/automender + name = "mech auto-mender" + build_path = /obj/item/mech_equipment/auto_mender //ENGINEERING /datum/design/research/item/exosuit/rcd name = "mounted RCD" build_path = /obj/item/mech_equipment/mounted_system/rcd + +/datum/design/research/item/exosuit/toolkit + name = "mounted toolkit" + build_path = /obj/item/mech_equipment/mounted_system/toolkit diff --git a/code/modules/research/nodes/robotics.dm b/code/modules/research/nodes/robotics.dm index d7c8377b1ce..94bd7401670 100644 --- a/code/modules/research/nodes/robotics.dm +++ b/code/modules/research/nodes/robotics.dm @@ -60,7 +60,9 @@ /datum/design/research/item/mechfab/exosuit/sensors/light, /datum/design/research/item/mechfab/exosuit/chassis/light, /datum/design/research/item/mechfab/exosuit/manipulators/light, - /datum/design/research/item/mechfab/exosuit/propulsion/light + /datum/design/research/item/mechfab/exosuit/propulsion/light, + /datum/design/research/item/mechfab/exosuit/propulsion/wheels, + /datum/design/research/item/mechfab/exosuit/chassis/forklift ) @@ -205,7 +207,9 @@ unlocks_designs = list( /datum/design/research/circuit/exosuit/medical, - /datum/design/research/item/exosuit/sleeper + /datum/design/research/item/exosuit/sleeper, + /datum/design/research/item/exosuit/sleeper/upgraded, + /datum/design/research/item/exosuit/automender ) /datum/technology/mech_utility_modules @@ -231,7 +235,13 @@ /datum/design/research/item/mechfab/exosuit/drillbit/steel, /datum/design/research/item/mechfab/exosuit/drillbit/plasteel, /datum/design/research/item/mechfab/exosuit/drillbit/diamond, - /datum/design/research/item/exosuit/ion_thruster + /datum/design/research/item/exosuit/ion_thruster, + /datum/design/research/item/exosuit/forklift, + /datum/design/research/item/exosuit/fuel_generator, + /datum/design/research/item/exosuit/plasma_generator, + /datum/design/research/item/exosuit/towing_hook, + /datum/design/research/item/exosuit/rcd, + /datum/design/research/item/exosuit/toolkit ) /datum/technology/mech_teleporter_modules From fded0924ba690a7dea4230f4f2c8c122292b9d5a Mon Sep 17 00:00:00 2001 From: MLGTASTICa Date: Thu, 7 Dec 2023 16:16:42 +0200 Subject: [PATCH 38/48] f --- code/modules/mechs/equipment/medical.dm | 10 +++++----- code/modules/mechs/equipment/utility.dm | 10 +++++----- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/code/modules/mechs/equipment/medical.dm b/code/modules/mechs/equipment/medical.dm index 58d02e80600..6abbcafe199 100644 --- a/code/modules/mechs/equipment/medical.dm +++ b/code/modules/mechs/equipment/medical.dm @@ -81,6 +81,11 @@ /obj/item/mech_equipment/sleeper/upgraded name = "\improper MK2 mounted sleeper" desc = "An exosuit-mounted sleeper designed to heal patients" + origin_tech = list(TECH_MATERIAL = 1, TECH_ENGINEERING = 3, TECH_BIO = 5) + spawn_frequency = 80 + spawn_blacklisted = FALSE + spawn_tags = SPAWN_MECH_QUIPMENT + materials = list(MATERIAL_PLASTEEL = 10, MATERIAL_PLASTIC = 10, MATERIAL_GLASS = 5, MATERIAL_SILVER = 3, MATERIAL_PLATINUM = 1) /obj/item/mech_equipment/sleeper/upgraded/Initialize() . = ..() @@ -91,11 +96,6 @@ /obj/machinery/sleeper/mounted/upgraded name = "\improper MK2 mounted sleeper" - origin_tech = list(TECH_MATERIAL = 1, TECH_ENGINEERING = 3, TECH_BIO = 5) - spawn_frequency = 80 - spawn_blacklisted = FALSE - spawn_tags = SPAWN_MECH_QUIPMENT - materials = list(MATERIAL_PLASTEEL = 10, MATERIAL_PLASTIC = 10, MATERIAL_GLASS = 5, MATERIAL_SILVER = 3, MATERIAL_PLATINUM = 1) available_chemicals = list("inaprovaline2" = "Synth-Inaprovaline", "quickclot" = "Quick-Clot", "stoxin" = "Soporific", diff --git a/code/modules/mechs/equipment/utility.dm b/code/modules/mechs/equipment/utility.dm index cd782c56764..7d356e8acfc 100644 --- a/code/modules/mechs/equipment/utility.dm +++ b/code/modules/mechs/equipment/utility.dm @@ -481,7 +481,7 @@ /obj/item/mech_equipment/power_generator/Initialize() . = ..() internal_cell = new /obj/item/cell/small - internal_cell.materials = list() + internal_cell.matter = list() /obj/item/mech_equipment/power_generator/attackby(obj/item/I, mob/living/user, params) . = ..() @@ -599,7 +599,7 @@ spawn_frequency = 80 spawn_blacklisted = FALSE spawn_tags = SPAWN_MECH_QUIPMENT - materials = list(MATERIAL_PLASTEEL = 15, MATERIAL_GLASS = 6, MATERIAL_PLASTIC = 3, MATERIAL_SILVER = 2, MATERIAL_GOLD = 3, MATERIAL_STEEL = 4) + matter = list(MATERIAL_PLASTEEL = 15, MATERIAL_GLASS = 6, MATERIAL_PLASTIC = 3, MATERIAL_SILVER = 2, MATERIAL_GOLD = 3, MATERIAL_STEEL = 4) origin_tech = list(TECH_MATERIAL = 3, TECH_ENGINEERING = 5, TECH_POWER = 3) generation_rate = 250 // each sheet is 5000 watts @@ -624,7 +624,7 @@ spawn_frequency = 80 spawn_blacklisted = FALSE spawn_tags = SPAWN_MECH_QUIPMENT - materials = list(MATERIAL_PLASTEEL = 10, MATERIAL_GLASS = 3, MATERIAL_PLASTIC = 3, MATERIAL_SILVER = 2, MATERIAL_STEEL = 4) + matter = list(MATERIAL_PLASTEEL = 10, MATERIAL_GLASS = 3, MATERIAL_PLASTIC = 3, MATERIAL_SILVER = 2, MATERIAL_STEEL = 4) origin_tech = list(TECH_MATERIAL = 2, TECH_ENGINEERING = 3, TECH_POWER = 2) generation_rate = 100 fuel_usage_per_tick = 1 @@ -710,7 +710,7 @@ spawn_frequency = 80 spawn_blacklisted = FALSE spawn_tags = SPAWN_MECH_QUIPMENT - materials = list(MATERIAL_PLASTEEL = 10, MATERIAL_PLASTIC = 10) + matter = list(MATERIAL_PLASTEEL = 10, MATERIAL_PLASTIC = 10) var/atom/movable/currentlyTowing = null /obj/item/mech_equipment/towing_hook/installed(mob/living/exosuit/_owner, hardpoint) @@ -835,7 +835,7 @@ spawn_frequency = 80 spawn_blacklisted = FALSE spawn_tags = SPAWN_MECH_QUIPMENT - materials = list(MATERIAL_PLASTEEL = 15, MATERIAL_STEEL = 15, MATERIAL_PLASTIC = 10) + matter = list(MATERIAL_PLASTEEL = 15, MATERIAL_STEEL = 15, MATERIAL_PLASTIC = 10) equipment_flags = EQUIPFLAG_UPDTMOVE var/atom/movable/currentlyLifting = null var/obj/structure/forklift_platform/platform = null From 45fc398d099b7bbd7ac4ae15de3ad8222b203b1e Mon Sep 17 00:00:00 2001 From: MLGTASTICa Date: Thu, 7 Dec 2023 16:16:55 +0200 Subject: [PATCH 39/48] f2 --- code/modules/mechs/equipment/medical.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mechs/equipment/medical.dm b/code/modules/mechs/equipment/medical.dm index 6abbcafe199..9fc44fd6fb4 100644 --- a/code/modules/mechs/equipment/medical.dm +++ b/code/modules/mechs/equipment/medical.dm @@ -117,7 +117,7 @@ spawn_frequency = 80 spawn_blacklisted = FALSE spawn_tags = SPAWN_MECH_QUIPMENT - materials = list(MATERIAL_PLASTEEL = 10, MATERIAL_PLASTIC = 10, MATERIAL_SILVER = 8, MATERIAL_GLASS = 5) + matter = list(MATERIAL_PLASTEEL = 10, MATERIAL_PLASTIC = 10, MATERIAL_SILVER = 8, MATERIAL_GLASS = 5) passive_power_use = 1.5 KILOWATTS var/mob/living/carbon/human/mending_target = null var/mob/living/exosuit/mech = null From 84026bb7899bc7f5ac5d91b644342759a1d56fe3 Mon Sep 17 00:00:00 2001 From: MLGTASTICa Date: Thu, 7 Dec 2023 16:18:07 +0200 Subject: [PATCH 40/48] fix + reduce use delay on auto mender --- code/modules/mechs/equipment/medical.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/mechs/equipment/medical.dm b/code/modules/mechs/equipment/medical.dm index 9fc44fd6fb4..a44242c794b 100644 --- a/code/modules/mechs/equipment/medical.dm +++ b/code/modules/mechs/equipment/medical.dm @@ -85,7 +85,7 @@ spawn_frequency = 80 spawn_blacklisted = FALSE spawn_tags = SPAWN_MECH_QUIPMENT - materials = list(MATERIAL_PLASTEEL = 10, MATERIAL_PLASTIC = 10, MATERIAL_GLASS = 5, MATERIAL_SILVER = 3, MATERIAL_PLATINUM = 1) + matter = list(MATERIAL_PLASTEEL = 10, MATERIAL_PLASTIC = 10, MATERIAL_GLASS = 5, MATERIAL_SILVER = 3, MATERIAL_PLATINUM = 1) /obj/item/mech_equipment/sleeper/upgraded/Initialize() . = ..() @@ -111,7 +111,7 @@ icon_state = "mech_mender" restricted_hardpoints = list(HARDPOINT_LEFT_HAND, HARDPOINT_RIGHT_HAND) restricted_software = list(MECH_SOFTWARE_MEDICAL) - equipment_delay = 30 //don't spam it on people pls + equipment_delay = 10 //don't spam it on people pls active_power_use = 0 //Usage doesn't really require power. origin_tech = list(TECH_DATA = 3, TECH_BIO = 5, TECH_ENGINEERING = 3) spawn_frequency = 80 From ea439e3fd1a0ab07799294608842f22291d0559f Mon Sep 17 00:00:00 2001 From: MLGTASTICa Date: Thu, 7 Dec 2023 16:27:27 +0200 Subject: [PATCH 41/48] fix integrations --- code/modules/mechs/equipment/utility.dm | 3 ++- code/modules/mechs/mech_damage.dm | 7 ++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/code/modules/mechs/equipment/utility.dm b/code/modules/mechs/equipment/utility.dm index 7d356e8acfc..0f5cc72391a 100644 --- a/code/modules/mechs/equipment/utility.dm +++ b/code/modules/mechs/equipment/utility.dm @@ -556,7 +556,8 @@ ..() icon_state = "[initial(icon_state)]" visual_bluff.icon_state = "[initial(icon_state)]_[mode ? "on" : ""]_[get_hardpoint()]" - visual_bluff.dir = owner.dir + if(owner) + visual_bluff.dir = owner.dir /obj/item/mech_equipment/power_generator/fueled/attack_self(mob/user) . = ..() diff --git a/code/modules/mechs/mech_damage.dm b/code/modules/mechs/mech_damage.dm index 3b99c7add3f..59a1bc00894 100644 --- a/code/modules/mechs/mech_damage.dm +++ b/code/modules/mechs/mech_damage.dm @@ -83,7 +83,12 @@ /mob/living/exosuit/adjustFireLoss(amount, obj/item/mech_component/MC = null) if(!MC) - MC = pick(list(arms, legs, body, head)) + var/list/picklist = list() + if(arms) picklist.Add(arms) + if(legs) picklist.Add(legs) + if(head) picklist.Add(head) + if(body) picklist.Add(body) + MC = pick(picklist) if(amount < 1) return FALSE MC.take_burn_damage(amount) From 48ebe8635edfedf14ed5d64db2164d9605cadf8b Mon Sep 17 00:00:00 2001 From: MLGTASTICa Date: Thu, 7 Dec 2023 16:27:54 +0200 Subject: [PATCH 42/48] Update mech_damage.dm --- code/modules/mechs/mech_damage.dm | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/code/modules/mechs/mech_damage.dm b/code/modules/mechs/mech_damage.dm index 59a1bc00894..dfb30a50d74 100644 --- a/code/modules/mechs/mech_damage.dm +++ b/code/modules/mechs/mech_damage.dm @@ -96,7 +96,12 @@ /mob/living/exosuit/adjustBruteLoss(amount, obj/item/mech_component/MC = null) if(!MC) - MC = pick(list(arms, legs, body, head)) + var/list/picklist = list() + if(arms) picklist.Add(arms) + if(legs) picklist.Add(legs) + if(head) picklist.Add(head) + if(body) picklist.Add(body) + MC = pick(picklist) if(amount < 1) return FALSE MC.take_brute_damage(amount) From 72f6838d2c911533b90f2a215a2b088df4377b65 Mon Sep 17 00:00:00 2001 From: MLGTASTICa <61350382+MLGTASTICa@users.noreply.github.com> Date: Thu, 7 Dec 2023 16:36:22 +0200 Subject: [PATCH 43/48] Update utility.dm --- code/modules/mechs/equipment/utility.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/modules/mechs/equipment/utility.dm b/code/modules/mechs/equipment/utility.dm index 0f5cc72391a..432ce814e3e 100644 --- a/code/modules/mechs/equipment/utility.dm +++ b/code/modules/mechs/equipment/utility.dm @@ -908,7 +908,8 @@ if(master) master.platform = null master.update_icon() - master.owner.update_icon() + if(master.owner) + master.owner.update_icon() master = null . = ..() From dd1997d0eb5d5783a1fb8072024aad487fcc8fb7 Mon Sep 17 00:00:00 2001 From: MLGTASTICa Date: Thu, 7 Dec 2023 19:40:20 +0200 Subject: [PATCH 44/48] better balance for wheels --- code/modules/mechs/components/legs.dm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/code/modules/mechs/components/legs.dm b/code/modules/mechs/components/legs.dm index 1db458d4c7f..980e2ee5252 100644 --- a/code/modules/mechs/components/legs.dm +++ b/code/modules/mechs/components/legs.dm @@ -112,10 +112,11 @@ exosuit_desc_string = "wheels" desc = "A pair of wheels for any mobile vehicle" icon_state = "wheels" - move_delay = 2 + move_delay = 1.5 turn_delay = 4 - max_damage = 30 + max_damage = 60 stomp_damage = 15 power_use = 10 + can_strafe = FALSE matter = list(MATERIAL_STEEL = 4, MATERIAL_PLASTIC = 16) can_climb = FALSE From 8648286f7a6ea3a2b22fae87fa391a3f82dbecae Mon Sep 17 00:00:00 2001 From: MLGTASTICa Date: Fri, 8 Dec 2023 19:41:07 +0200 Subject: [PATCH 45/48] update b-shield sprites + make undeploying it much faster. --- code/modules/mechs/equipment/combat.dm | 5 +++-- icons/mechs/bshield.dmi | Bin 1129 -> 1783 bytes 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/code/modules/mechs/equipment/combat.dm b/code/modules/mechs/equipment/combat.dm index e299e7531b3..59779fabd40 100644 --- a/code/modules/mechs/equipment/combat.dm +++ b/code/modules/mechs/equipment/combat.dm @@ -978,14 +978,15 @@ if(visual_bluff.dir == WEST) visual_bluff.layer = MECH_ABOVE_LAYER return - visual_bluff.icon_state = "mech_shield_[get_hardpoint()]" + visual_bluff.icon_state = "mech_shield_[on ? "on_" : ""][get_hardpoint()]" /obj/item/mech_equipment/shield_generator/ballistic/attack_self(mob/user) var/mob/living/exosuit/mech = loc if(!istype(mech)) return to_chat(user , SPAN_NOTICE("[on ? "Retracting" : "Deploying"] \the [src]...")) - if(do_after(user, 3 SECOND, src, FALSE)) + var/time = on ? 0.5 SECONDS : 3 SECONDS + if(do_after(user, time, src, FALSE)) on = !on to_chat(user, "You [on ? "deploy" : "retract"] \the [src].") mech.visible_message(SPAN_DANGER("\The [mech] [on ? "deploys" : "retracts"] \the [src]!"), "", "You hear the sound of a heavy metal plate hitting the floor!", 8) diff --git a/icons/mechs/bshield.dmi b/icons/mechs/bshield.dmi index dda9fa60bc93daf32e0bcbc51776fdcb41c2ce76..32873f694b390fdbfaf7f786df849f9c63e343f9 100644 GIT binary patch delta 1685 zcmV;G25R}~2=@(NiBL{Q4GJ0x0000DNk~Le0002+0002M1Oos70LTIJ3;+NCAy74PCc?qV>+9=2JwJPUdr?tQqobo37a6?AVB7!z00DGTPE!Ct=GbNc z004`TO?Q7tGB-buOa}oq5_Xfaf~%hkIK%+_pkC%)$79w200r$yL_t(|ob8-Ja^p4- zMXjjH3$F~y2Z$i8W;K##mE9=x4SWEvD4xL7TtH?{;L>htvg0WOkRnBZ-RK5LD@hgp zO14}501yDlUv1poMMXtLMMXtLMb(-K@$X<0DIb5mzcjY3^Nqqvx$?vYwAIqLRAHB5 z;qjHAwgTY2Q1Sr>v=z{HCH%qOZ8bC#`YI)>B_~T0+z4)KKf;|UNxyT!ZEz#_D^KZ? zffg#0(jyCe4R(NMI%G*LvfrLxbl8Fg?ghKR8{N9+m*1V>+4GB>OAl*Z`YfnoF7Lz^{Yvo4M9|wG@*YymQC)gFCQltKH+J z+Evzj8m#w#HGxEeRa-a19`E&b#sCY|3nI!Zc&;vnilf1a$|bpAMzFfZa=m1L_3*L5 zj9?9xd*(G>ur@hf@NC1p#!@i%R(7y@HXwh&cWPSlsD8m>;oK3TqN1XrqN1XrqN1Xr zcw)aRdg(sPGIzvGyPyMfNNW`8wfl4^%ktG3zLoX6w)rv(x5gpeL4`UsKd4WCoj(Zh zMmyay{gZBuOL+x&e2yT74|u+EtBc#{rWT zbgnyjylhtYS+1}-(PM?)ZEUdJ8q$K!GL7wee98{Rkp!!}yFri5){qu-US?Tu19?~2 z@gU%?5J347J+F$}oShEz*L{>WOTE8ADBjDGRy*7uTD_gkYxyof|vX zbYRkgHg~S+z@!D817KnU;mc(~H{iE+1JT%tdQ3=d7{%M+dX2NPn6AezDdyqF$F;}B zWY?Hbrm&wgxd>TzryGLR24XyAD&;o;H@ou%d{Q6D2l|P?ifla4zutm+$9aEaiHeGf zii*0G{!ay@<26lDW`L$C$_xUJE6NPkb|thma(i&HlDF=0aOGK-pL4O-muDZ&n?8?>JQ9k2Vw)Sv3^T^61{FV>VU zM%CNKV^R^@3Zl+fg>GltC`(1D5|4aOt$N z^Y`BSJ(P=CkKGGy!I|#V3ELtv?GPTp{bimel3kD83vR*n8#`)cYZExjzzt+jkL~WU zRgYae$^~v^J2nur9-COlgL-VrQ8rBAL9VvMnz4=t#oMF6ZHYB!a@l|N*wjtJwVb*V zYZln5$0oqeovSOcW`V7G>`^`TS;uxg_BgO!njN_M=>}hdTX5#Iva>_aeYSH+(QTPh zR27ajf?Ke5lyNIto4}p>Z0CAPFS#BnH`WMl!P-&At!!-qckc5bm$mP^!GoJb_%%*^ zz;-YNrtVIk)?@rBb1Z-OijUxw@gQug?daP{jR z%R#9fvt$-_^;st#;N_J4@yAlZu0HF;0}O1AKb8vgO?W3B;B|kTl2N$|pLn2)FUb=R z>dHw$Rjy*GFtC*5i3c02auNf>sX#YSN2mKG@vrOPthUD=O$EC8O*6j}{~L}>E_3|R zRG=GJN6SF4IsRxWcvg=C8?zb*!{>O60-N>N9^kr&S}qANzaAS(g@8Hdc-R%t2pCBP zgIVWzu+}k}3O;|igmsPwYaOGh;FC*O=Xl`jxDUosf$Nxejt6TUqp84k%sa<}wT{tL zj&&Rk9;{6>)R5&=Lw#)`?`DP#(N(H+5yqg3l zd;Fbur-8lRL{ob;B6IxFRG_OrqQ?#TI)Z+wMuJDAs(vjo*72vLdZ>P-(}2BGJyd^B fbso=zsmAFala}hN8*Y6R00000NkvXXu0mjf04YBk delta 1026 zcmey)`;x=AGr-TCmrII^fq{Y7)59eQNFM;=2`tP&a!pO;VIajH;1l9{;J^VpTl?zj z>cGIj#fulmS+YI=N->rM`2{mLJiCzwj@{Gi|5g{Dt6g}R=Xf3e@t=;-SC-E?EdT%Y@m~)(HC|YhN%x(% zY3$c~U2kQ_x$LVU53|CIYg3cA+Z~(-v?*}@CVtB{hItIEy9@R_=bZFnIma<`fg|Y~ zJXka`&TAS)v@z^)HD&o7{iL4H_PYJ;mM5ec*xG%Va9oS2)YNwu7ys`^>zbM- zCY0TtbaI}j}2McxO-|D*Gc$>SpX1C?iR|2=z6*&pzN`AQZ&9mTQ*oC;B$%#*D zZ>Mui(_)JDDiF)R;MRP(@`>+Bvr|_Eb+j7q%j&JPYAG|CGogNqr%l0iVYi8!Ca-Yz z5P#I7viri#Ak)be#TS=N&^yBE8Dbpae9LWO((F~vJ1!I{cB-uwiPF2LaI@`lWlE=d zOqi(S9og3`>zu^;@I(mPM35GTv8`X~!%h7L)o))49b> z?@L6(E=@4Y;Z9k^rx@EIJn7JN<0Xo7&+q!9o4e=H!>)T97J|XU_~Y|Gi7(8LIUd@m zxAa21N?nVHJ=-m#dO;KMqdGT!2E5Q0>UCUH75qZKN|!PD|4OwBe_ZPqefGE$BKE60 zi!%hG@WXbu+Pa2Z9-oQj?&pB(b#@Lh2{Jun~H?(5XI9w=wI^1u^Tbd?xi1 zodRM`zMtLrOn;SXz+cx3F(L{PJzOY^FME7447I+9U$tYt8oxyF#Ojro|GI|i#I|aG u5O*vNJj1kPN%YSBD^`7ETKq5S4^vlZ{L=)UqIbZ2%HZkh=d#Wzp$Pz;9LK)^ From cf87924f564bf1b47818c287d4e9ad67d4e0fa9d Mon Sep 17 00:00:00 2001 From: MLGTASTICa <61350382+MLGTASTICa@users.noreply.github.com> Date: Sat, 9 Dec 2023 17:18:39 +0200 Subject: [PATCH 46/48] Update utility.dm --- code/modules/mechs/equipment/utility.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mechs/equipment/utility.dm b/code/modules/mechs/equipment/utility.dm index 432ce814e3e..269457e6244 100644 --- a/code/modules/mechs/equipment/utility.dm +++ b/code/modules/mechs/equipment/utility.dm @@ -468,7 +468,7 @@ /obj/item/mech_equipment/power_generator name = "debug power generator" - desc = "If you see this tell coders to fix code.!" + desc = "If you see this tell coders to fix code!" icon_state = "mech_power" restricted_hardpoints = list(HARDPOINT_LEFT_SHOULDER, HARDPOINT_RIGHT_SHOULDER) restricted_software = list(MECH_SOFTWARE_UTILITY) From fa9bd3ae0a04ee2bd5791bd1520a00bd706943a0 Mon Sep 17 00:00:00 2001 From: MLGTASTICa Date: Fri, 15 Dec 2023 00:16:37 +0200 Subject: [PATCH 47/48] Update shield generator sprites. --- code/modules/mechs/equipment/combat.dm | 2 -- icons/mechs/shield.dmi | Bin 9613 -> 29732 bytes 2 files changed, 2 deletions(-) diff --git a/code/modules/mechs/equipment/combat.dm b/code/modules/mechs/equipment/combat.dm index 59779fabd40..a6d0ec95c89 100644 --- a/code/modules/mechs/equipment/combat.dm +++ b/code/modules/mechs/equipment/combat.dm @@ -832,8 +832,6 @@ visual_bluff.icon_state = "shield_null" visual_bluff.vis_flags = VIS_INHERIT_DIR | VIS_INHERIT_ID | VIS_INHERIT_PLANE visual_bluff.layer = ABOVE_ALL_MOB_LAYER - // the mech default offset is -8 , this neeeds 8 for some reason. - visual_bluff.pixel_x = 8 /obj/item/mech_equipment/shield_generator/Destroy() . = ..() diff --git a/icons/mechs/shield.dmi b/icons/mechs/shield.dmi index a2d5131a605dfabf4f1a232d25f4fe2eeff36b05..c46b5a5ac62b2be784da67f0cbfa04f9bc5a12bf 100644 GIT binary patch literal 29732 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 literal 9613 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 PqX*{32aTTWC7=I)mh+!U From 4756cba7fff9d3a7a99f1b19aab09f9a45911eb2 Mon Sep 17 00:00:00 2001 From: MLGTASTICa Date: Fri, 15 Dec 2023 14:44:08 +0200 Subject: [PATCH 48/48] switch around a icon_state update and shield icons. --- code/modules/mechs/equipment/combat.dm | 2 +- icons/mechs/bshield.dmi | Bin 1783 -> 1810 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mechs/equipment/combat.dm b/code/modules/mechs/equipment/combat.dm index a6d0ec95c89..8d5b57928c1 100644 --- a/code/modules/mechs/equipment/combat.dm +++ b/code/modules/mechs/equipment/combat.dm @@ -954,6 +954,7 @@ if(!(visual_bluff in mech.vis_contents)) mech.vis_contents.Add(visual_bluff) visual_bluff.dir = mech.dir + visual_bluff.icon_state = "mech_shield_[on ? "on_" : ""][get_hardpoint()]" switch(get_hardpoint()) if(HARDPOINT_RIGHT_HAND) // i used a switch before and it doesnt work as intended for some fucking reason FOR EAST AND WEST >:( -SPCR @@ -976,7 +977,6 @@ if(visual_bluff.dir == WEST) visual_bluff.layer = MECH_ABOVE_LAYER return - visual_bluff.icon_state = "mech_shield_[on ? "on_" : ""][get_hardpoint()]" /obj/item/mech_equipment/shield_generator/ballistic/attack_self(mob/user) var/mob/living/exosuit/mech = loc diff --git a/icons/mechs/bshield.dmi b/icons/mechs/bshield.dmi index 32873f694b390fdbfaf7f786df849f9c63e343f9..2f998c7a7f35d625f189ab3c60854bc90bb77844 100644 GIT binary patch delta 1585 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 IM6N<$f__F6DF6Tf