From 31822a1831d1c586c2344d4312c8f72dc18f151a Mon Sep 17 00:00:00 2001 From: DGamerL <108773801+DGamerL@users.noreply.github.com> Date: Thu, 7 Sep 2023 12:00:45 +0200 Subject: [PATCH] Adds the Strong-Arm empowered musculature implant (#22159) * Aaaaaaaaaaaa * IT WORKS * Okay now make it a martial art * Final shit * Forgor this * Protolathe moment * The sprite * Typo fixes * Burza review * Contra review * Contra review * Contra + Henri review * Update code/modules/surgery/organs/augments_arms.dm Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com> * Me when I push untested code * Contra review pt 1 * Contra review * I forgor * I forgot v2 * Henri review --------- Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com> --- code/modules/martial_arts/muscle_implant.dm | 57 ++++++++++++++++++ .../research/designs/weapon_designs.dm | 10 +++ code/modules/surgery/organs/augments_arms.dm | 26 ++++++++ icons/obj/surgery.dmi | Bin 30948 -> 31111 bytes paradise.dme | 1 + 5 files changed, 94 insertions(+) create mode 100644 code/modules/martial_arts/muscle_implant.dm diff --git a/code/modules/martial_arts/muscle_implant.dm b/code/modules/martial_arts/muscle_implant.dm new file mode 100644 index 00000000000..a048708ddbf --- /dev/null +++ b/code/modules/martial_arts/muscle_implant.dm @@ -0,0 +1,57 @@ +/datum/martial_art/muscle_implant + name = "Empowered Muscle Implant Fighting" + weight = 1 + /// Are we EMP'ed? + var/is_emped = FALSE + /// How much damage should our punches deal + var/punch_damage = 13 + +/datum/martial_art/muscle_implant/harm_act(mob/living/carbon/human/user, mob/living/carbon/human/target) + MARTIAL_ARTS_ACT_CHECK + + if(HAS_TRAIT(user, TRAIT_PACIFISM)) + to_chat(user, "You don't want to hurt [target]!") + return FALSE + var/picked_hit_type = pick("punch", "smash", "kick") + if(ishuman(target) && target.check_shields(user, punch_damage, "[user]'s' [picked_hit_type]")) + user.do_attack_animation(target) + playsound(target.loc, 'sound/weapons/punchmiss.ogg', 25, TRUE, -1) + return FALSE + if(is_emped) + do_the_punch(user, user) + else + do_the_punch(user, target) + playsound(target.loc, 'sound/weapons/resonator_blast.ogg', 50, TRUE) + playsound(target.loc, 'sound/weapons/genhit2.ogg', 50, TRUE) + + return TRUE + +/datum/martial_art/muscle_implant/proc/do_the_punch(mob/living/carbon/human/puncher, mob/living/carbon/human/punchee) + puncher.do_attack_animation(punchee, ATTACK_EFFECT_SMASH) + add_attack_logs(puncher, punchee, "Melee attacked with martial-art [src] : Punched", ATKLOG_ALL) + punchee.apply_damage(punch_damage, BRUTE, puncher.zone_selected) + + if(!IS_HORIZONTAL(puncher)) //Throw them if we are standing + var/atom/throw_target = get_edge_target_turf(punchee, puncher.dir) + punchee.throw_at(throw_target, rand(1, 2), 0.5, puncher) + + var/picked_hit_type = pick("punch", "smash", "kick") + punchee.visible_message( + "[puncher] [picked_hit_type]ed [punchee]!", + "You're [picked_hit_type]ed by [puncher]!", + "You hear a sickening sound of flesh hitting flesh!" + ) + + if(puncher == punchee) + to_chat(puncher, "You [picked_hit_type] yourself!") + else + to_chat(puncher, "You [picked_hit_type] [punchee]!") + +/datum/martial_art/muscle_implant/proc/emp_act(severity, mob/owner) + is_emped = TRUE + to_chat(owner, "Your arms spasm wildly!") + addtimer(CALLBACK(src, PROC_REF(reboot), owner), (18 / severity) SECONDS) + +/datum/martial_art/muscle_implant/proc/reboot(mob/owner) + is_emped = FALSE + to_chat(owner, "Your arms stop spasming.") diff --git a/code/modules/research/designs/weapon_designs.dm b/code/modules/research/designs/weapon_designs.dm index db364d93c04..eb2d4e940bc 100644 --- a/code/modules/research/designs/weapon_designs.dm +++ b/code/modules/research/designs/weapon_designs.dm @@ -333,3 +333,13 @@ reagents_list = list("blood" = 50) build_path = /obj/item/v1_arm_shell category = list("Weapons") + +/datum/design/muscle_implant + name = "Strong-arm Empowered Musculature Implant" + desc = "An implant that enhances your muscles to punch harder and throw people back." + id = "muscle_implant" + req_tech = list("combat" = 7, "syndicate" = 4, "biotech" = 7) + build_type = PROTOLATHE + materials = list(MAT_GOLD = 5000, MAT_METAL = 10000, MAT_TITANIUM = 3000, MAT_BLUESPACE = 2000) + build_path = /obj/item/organ/internal/cyberimp/arm/muscle + category = list("Weapons") diff --git a/code/modules/surgery/organs/augments_arms.dm b/code/modules/surgery/organs/augments_arms.dm index 7f70d8cb807..9789cfdafb3 100644 --- a/code/modules/surgery/organs/augments_arms.dm +++ b/code/modules/surgery/organs/augments_arms.dm @@ -559,3 +559,29 @@ qdel(src) qdel(I) return ..() + +/obj/item/organ/internal/cyberimp/arm/muscle + name = "strong-arm empowered musculature implant" + desc = "When implanted, this cybernetic implant will enhance the muscles of the arm to deliver more power-per-action. Only has to be installed in one arm." + icon_state = "muscle_imp" + + parent_organ = "l_arm" //Left arm by default + slot = "l_arm_device" + + actions_types = list() + var/datum/martial_art/muscle_implant/muscle_implant + +/obj/item/organ/internal/cyberimp/arm/muscle/insert(mob/living/carbon/M, special, dont_remove_slot) + . = ..() + muscle_implant = new() + muscle_implant.teach(M) + +/obj/item/organ/internal/cyberimp/arm/muscle/remove(mob/living/carbon/M, special) + . = ..() + muscle_implant.remove(M) + +/obj/item/organ/internal/cyberimp/arm/muscle/emp_act(severity) + . = ..() + if(emp_proof) + return + muscle_implant.emp_act(severity, owner) diff --git a/icons/obj/surgery.dmi b/icons/obj/surgery.dmi index 6adeaf4e3cf308e5b10295cc43abc500d13a7233..bb3f95d325fb1284a88c88547e28833d49ea2e48 100644 GIT binary patch delta 10971 zcma)ibyQVP)b^#jK@e%AL_knFr9%l(x)Hg6bmu`*r5ov#25FF#5RvZgmaa?Pcn`n# z`}14h`tDkH-I;Ud&dlDk_cMDxGn=Pq;pb?vkI@9;*!X~N)uFrQnl2yUSH|zLUyGfx zO&Al>osDj;u_8;`{ZYqTMLx*W8c9~GlsvIwgmlZ{_SB`-TbwDOg`v+5Gy_}A)SSh{ z{|H`D{9bPJpL6h0(x-phwnT@AZV~{X|Ma>b{b5ZchE8qwu$-*xiQ2PjJvBAn)w1YL z1%6uU!KZovCM{X<+dZ#D7Tutajp+=MPygj0r|R2lT=~&2{T_47C>eQWcv?SZ5bXPO zrI4x}qE~v=Q*%6haADH8K(tmCfnXdaXS1SUR!b*%NvAnzaD0)lykgBW>Rn#r`Dq9I z-Lx{vIiG!N79n0GvVH+YEp$L)=v;H*p(U z<9&p&t0mrnje8Sf&$`IYc%K8Ym%F^=dCXGzy4!a_@f4?DR5XH}ekj%}H^azLq9>?l zh4n^$x9uU>E!P~ynK?ih3AyRHqQcr>CYYv`)O@B8;zyG6gzF|@0|Vwt=fXzEC#2>4 zz%RiT{W*3B1A5OoOF}+63vi8h!}igfR~i0+<0+<2a&xQ;TKntgt!H2VoY;B@%>GSU zG(u1{4f|-QI~BNbSqS2if3v2|z;g5nQZdOH_)$KT=78*z%^7%hR~YKhhF2YIQIa)qx2voOA*1Oo@!qheKisH~U?K8Q;cSUP)T{w7Svw zdY28m-RP_Qj*XjfAYW$_QV!vKBriimNvXFJGvqV-Q8*>am-Vkthsj<2mFwL8oy6T4 zqWlt3skU#hCr}WZ?D2VbcWfwYpKu3gJ1`70duk|-L?T~hOBvs-29wB}n*+J+rby0c zdhzYp{U3FX5A7}jQ2tBpR>IG2irfBd7*23={> z($~GW9yiFU=Gd$`UUMcxW}qEb?#6W|9FEXwguGvyC=&l+V1qL=fSki&oP4J3A#wloT!YiCM!Ds0)sJ#=iaKy{^uNMWjmzS6Lw%qH=UWRtz)rsMZeyfgdocmf|zn$@D zs$CGEfA|FZI-etSf`oeC!tBP#=*{4sEZq|bxhQ?Gyy*MTu7E@c=X}Tktyqo}mCH|N zl3@rc%-&iAz*Jd{r%!nGmL5pR+eUxGN%>X%D>)=oHg~sx6HW8~qnbvb>?~K~bo#^} zGVpH;&dA@;C>f-v`z6h6~Zd6`@&#uLl}DAo9l-JWlW zgf?-Yue65z^&zHoyK!AO?w>SNr2fdsTFWEBz@~?IrP%qJb!2RiuR2=BSuZshat5!l z*jCz0#P4$6VI3X?7M|lgBNXCG(2rg5rpD6coL5cv0nq$2li1pa|Jq(j2aIiY!i+EF z#&CK3tA-FY3Zo1K1(~C!d`7LR5`w@3#r#96zV#1}KZi!>;thmU%jQCJrbGj!rOyq~ zo>?su6dW$%$y`j9M3Ue++fGP#bu(q{dq(SyT&y(*?4%+$MxG2WpyzkxE6A8>=BL%L zo;{m=T;30k9uzz@;6xk69v?q#hO3Ce@?r}KJ24UC8T7<3CljimIWoKpaC(1u;5N5??8QHwB9Z<)oj5kF zG;Qx6LW(}o)-4c9`pSuM*4CF|5eNUqXaU#I+WaA zQCR((V9_aQCqHVr&;vH9yR*LA56`C5kZgR@+OS4}kWyOq2oIpYufNsR{c0)=FF-m? z@8mN4bCzVt4!A8TuB?18H8o|?`;{uMVr!NP-Qcd9#2sZ+_a}5M4gz-_V<{qh%nhW` zHDRx|nYYOw2P_v}wjd(daXv7Vb3&8mdz*;JaJcbbcn5@puYD)Mh{TV1VA^`~%;47K zd%LLus365qr3L>L49l6Xt9^|T;MeqWIo@$)vhJeoA_ER#fqV2BHD&&pM<)9AnZHQ; z9Any<;XT6tM8ZIi<176V{u@p)0KG4o-ty{b>0r6-F72<403Q4*iTe=}-p%@H$Y&SF z?B7J~zDIle9Gm@)`tR@%qX`AQ2|#x^D6juh3Omtx=ua^|?SiV-2Yi-IMP4ima?*`l zFO@59Rca+TKm%ZrAk3>rcgepW)9?J907OF(wl#$C^%kP{nblW6*#H(4M*2yZo;FnY zUSEi`$BAmS-7Haf)(l(zsW-n!&se@v=DOYX za3*(9P*CN3qj@)W3vf6$hz9rHQayz=*x$ki`xqun2Mkb?Mb^n11*&6!Z(V zz(<18sl7hv*L$kspeiB}kW7*yw|8a||8h408y3geu4cG$`{XBp1N`F##O)ruM( z5Pm0ciFm?$bo=?ZQF3s5D1ENZhQf7w(0oo@{}qX+ITC&Yd1}-Ydw1NCZB2jhNQr}& zYUeDPbYl!iXH!dt#HOYy+xB|jVurXt`_(+=>;yt4F7J+wH#gS#0zOfOlspoee7*D| zS3T@g#wz?dnr=?RI>cDQ$D^-M$#Ze>r>6UO#Ju*F@n-Y*>A;D)+VD!;%$yeV?+piA zMfJdq;hPWeAZ@O5!HsDpK^}iT&@k`8PaxxMERe0B=#$pK=`0zHSiE2Pv)kX9>z7gD z3x$0{`;R=o{t7q(7d=P(GV$>5vACo>;# zcMt6sQkyLl=u_?B;yc6c-x|#2mKOGBp7T7Rgzge;hMZ{VftFJ`fb&9Ew~-q+#i)1> z-!0eo$|OU4Pr-D>R@b{d4Crk8PN0y0F@k=??;zKc%>QmsYV&&vSICXJW5YbE_yk)0 ze$E#1VbCXRYam5vj{Cdd+Z5~7tfM(-w)1{|8X>{ZDNWb+%c}S|2M1Vy&TRH<9R()N z-Pq{H2fBO6%$Q@L5$l1-%1OI7FL-zjuVSwl9+>U_{@a>e~1jPm_@VWipUB$jlk%ZV>q+i1gXJx1oE^Ts)t@j;Y+?wUO{KBO4;M^h$gB8sGL;j!Hk4&ui6;~(y+38DT;< zp&$R#a$^+&1BtSw;nw%kpz+WwEZQH}-Od{Tf}|hcdNutZL@1M`-tFeUN*5-HKAyS4xW3rOc~M7xK=ldS z>D)WFxL16B<|Q$|AbRb^V*BE!24@+z`o&7p^St(!-B+FGXTtu1Lke<6yh?=Jz4h5( zwp)m*q^oFN?2M9MjKn-WN}kcntW(m^tWckq`=bevXPfT+FsK>}CyI zz1D_J>8gnHaBMWl=P8#jbT0ylG^B?fIl`$)wl6V%7(xsrsWmm^Xs8JW>k0N&ixfg@ zED=6JA6L}RvLuN(fY_edz0+6UuFzc>{S!MLKdzf5gaDx5Hc`GNF8?Rg(0Y6JYq`>` z`A=_J_MT+5q9^jQ=r@MJ>#)Y{aeDbB{TGegO_bQq$iJt&m2EzsZ_g6X8-usw`xx6> zv=U~<>0lyb)A7Dtf7VAlcZXM?FRHz&E#*vZzN=#2H4FPjyImhUct`nZv&D@~=+iJ3 z0>WpaY``IA^;q}6?44>c8^gK-X0;)EH{~HbCL+^K@XpM`qlOdcizj_=LV0Cs^Gwn|uUB}o4bR31) zPYsIaAr!4JvG+vl%NJ#3!)~8Ds-rKrJMeVO0bkzJ|7Cse7I*~DP8Vw)oQ}>(Ke-h>W_l zC8n&TVGWM<(^%zr|A{RDnfuM?p&tUb@%%!BK5~Iif_K5LF+V;fq2lTc%@z0e!{Ltl z`}pJ0Wp888LyFpdo1FW!Lmbt!LoGIV^9VcqL~~J2X5%L8W3}JSn`AyypD84WU{P6C zDY7?<2IQuGpO(19mHke!{7si*q~lYrC?FfGtj+sJEf8E>8d>n!*(DO;*9J&?OCyzK zI!Phzi>{=BD3jW?pR!w(nHep=buyw!YPDV zUy9f=#T8l(4)iw+IOBkdk5-tjtV%gg!Q1&B-&T|K0~9BmEjXN*0ALsLq1j))4O*m7 zl=AbXz`|0Zb2%1pMBC;qP)n|ub|oAY;cyZ-7V&)}jXt>c34}CQk$-1@>jvefbzG8o zCc=hscjWYxKv~s54h+c~+M6R)kHeiDE#64xt2rL6vD5~%kOt~^82^bu-BS1Fkw3c{ z7PAzH^IXS0I$C}U=wxkWRxIr9?1WpZe-t^4&D?;s8!8uCAS?G7;}_W`pp1+@1PuLL_=-FT6;m;>qIF_yFy4m zd(fzczAkcbeUpu5NLnJ`X-tTp-hKU~M7|UPp*m2JfB6=%Inr+aw{4@+ry(P1yr#kW zMH((KY$9d{`L=VE8N1DIfH!H#oJ+QvpZ~FxBQn@%gt5Si@9|z@?&(=%a;-b^iBS2_ zj4d#CZoNwy+>MIlo<1Ze*vQvQY%)Rlr93tCe>a4Ps@Dy-?|gaydaO5MD@-CkWn>CL zqN=7!){%kJH@G$Xl}&orGaZ+-{uZYD*1WvJ6!^824rX7uW4?ZVejyUryV1bZ{Ntm~ zUvnH3LyScsN^?M8;jf$d1PrHSe_s~}@CLGp65?(gWu|{xnUs6A#AEaUK?3Ou*cj+H z&UOZE5%R&$tbO_?4@&*0C|g_#2ST(YSBU#60$(tq^Az#e(&J(xOzEFw$fh&ME2uQ` z@03>g3ICx=Id>v^K~%h_(s;TxRpAYQkra3GpdIDiknqi3f9Lfz)_n*j3Y=$6SdNDM zV%C)$aQf_a77wb`X7fV(jdoT0=MS;9rXRK*xPa!@5djRE3$EC`gwrVr!@PpEMd&DjX1S>crGKWc+HkMwZ^UBJ5xF`X6J#%wHIlm9TGBjpyL`7qy<& zHpjKIBWFZv+c3)DK==av-_mYVTU+3~1B%8=Q{=J3%V*6+%#n?a_O7K6%GUs~1U_Mln~dw>d>h~7 z^r$`D+wdlcz1qZ52PV)jXM zA+%2~qoU;o1h26u`o0>liYXGsAi!WUkz73nQD0I4*`ja6B3oS=`b&k(M@b^cDFNp~_X`%bdW?#16J3!{J(^3GoZQz{ca43ku=P$ZT1=rqgt4dK^8N+j<#V&IwlDIj@h%2uly9O z#fZw?Fc&2GLzvC6zHAki+G&a?K)nSQC&9pZ1)YBAL5b${SQR41ge_OxMAjwAvv#1e zMv32BpNlDztH~+GrLI4&1r{jj8QCECp|WEtTIe}oHIwrHQ57Qudy6e|)^FDl!MSgj zCwD)c#lK02MR*KQFeg+_9eiWAxDe5(sv=j{VyVmkL{M zm*_YVA3qw(*xsf>{i&cpF!CEs?n?F+E&ZX&ebQW}W(tv-g5y<+$85zX9jdJUdj2h% zccN186BWKfpZQy_Iw||6En6#kt1qg)T%00#D*T4+eq5ff1^9p_-u~8~IYtFQkt7XG zi%!$k`TOgn7oTYdbWOkWqX~Ps??v!ED*&n|NW6<@edP6$%Jca*QQ4VRyp0Bs(fE@%RAkF3u zR#qd#d-LLVgge5Gl*D=$p}(vT64p^G{`F&#Pj_Wa?;IK6;1{nG<(=J0R5n)er2`v~8| zgZD$o(L%eb_1Kkp;)ZKWyX3>(ad*CXQI1tm|L3g2kme2P)2gzH3Q{ig8pGl_yt}w~ z)r5T)@n8(gCus<^7RK9_TbsbVdzF zG|e{w4ewAC`{z7%cRZr*d&S2;0WlQ3FP)N-4j41A?5LR8-Cip?uGJ+48N~>;0iA@z zIz>l35#Nu2BeNU|E34vUYmEt`8#KxL@@i+VlkTaOu4_&RC?E6tV(AeFslUT_9?uUN z7%yEl`~ZS(hC9ZVDq$yJjIFbRxVYHvWGsc7&uNQq;==+tgy6;kP z&l$R^y0FhxK1hAD27dnQ^JASw)l`W(0!sSEMRkm|O9z^77zLMJz_xBjsK+NB+Bj`E zy`(DafG&15JT*0mNQt2?I*&%L@B{|Ovr=MGvbdc>{G07>y!A~Jte`lnp#P^+g=(#h z<<%7=x~nWGtGu@AjrRtFWqpu_lk)S-*Or&T?>ynQfygVSTOQTuzR_`DhJf+Q#q_WB zUOqC$jzDW+#@^#eMM#&it#Z}=-xqv*HUFs79Q_G858%HF8)oui61vQ^y|Kt8qQs*Ou%5d*J7r;dj~RBmfvsVRuefM_ ze(M3i(I&-@13Pns*!(I+9Qp31@$B~LLIof0+028?)@jRiA8?Pj3SaiUZIMscH>h{> z_Mps8JQA{nJDi01vaymeLBWsO%MvHwW~E6-B-T+xEvFWRMnS=2yXYu2Y1_UdwbJ3khSR~HD2$;Y=YhK#-D0Lsr2_gB-uI!H1D(Q6W4@(NUio>h zGOf^y6g#5M84JB`yo{;1pYm{R1*LOiZEe%4zYE=aa+jj2%EcpE+%Z!F+x~bb9Zkpe zfQatT*U78?vK7xMgr_~+(4`JBUh{MNc;yQW*g1%zqR4*kv^v!mJJo}DK3W1(GrUD+ zzDKz&Yc-Thsit0$;{RQ`wpK^;vkd4c=Lv59Eioue6Jvk;YYS=Z{K&yjc&8ASQ0b6H?XJ6+Ye%H1c6GGVbO6Ih z;amDw+VRpg_jeojFPwWK?t%%N!)UN&&QuVRXf|E8>;j5FxQ`5Qb3Zk>Ui9*hBoe#H7Bm zC$BOp9rIK-s|WD|nT66(zqE`Sfw} zmo?Bb@68r(y@9SMAXc-En;^@Fm#I2FgO+KDEmtZ95H+~G1^)(wkj*I}8p zTiTf0?!>U#lV?&2c;j{v_$ZAasgFcpw~DLq_h;lX&o`TQxPNN;Vk(xU1-LS@b%$3W z8cR1j0dW?(=ps#0t>YWg@nhpxE~h6-7j!oe$!Nz-x6m&Xy^22HkFi#v4zvyo0U5*M zwz}|IQN=)sZK$*&~j;iVYnb3~Do-Yu;xtY+7o#8kmK)GG^1aobG@H>Rv{ULz^?C#sMNZ%QIA@H$cXWbmeFuWY8~?x+QO_@kyW}x}~?I zOGivmBhZvg7sz_hD2QW5^7@O6FBvIK!44)%{@VLxXIMc%4@f%^Q$s531nb@1-KcV= z+!XeGvc#T@8kLFwr`Cv8w6by4ebSDq5;<1_+TewVY)x%{yg`?-n#}F^&U@p7D=n2? zT{T8uc2DsHEup+pay@^~OJXxY-+hWjH&X#%D-9TCi?_ue5OS`Y*(>7#Vebg!k=OKA z0}t+fw*aE&!a0}WhI|*$u6?{R-tJCNAbA7~FY7U5b;k2BGGMQsTf;;zkvxZnjWQYj zsKYq|WwEtzYFVTL(7>o5gzysJIK2t| z=_NGf@*|})*!tfKEzjo3*sapFPV+lt$h*P&cEdqCA7nVEW^hZz~NY{}nrNEc{wSCKTx`!JbZv$v^UJrxY zMu=507SkOGHW6*WTXH27bHyP59xQ{K`#vl)s*s|Auzu0y+Nou+qaFcT2Y;&u<5GKV zwObca?t@u3U)BF!B!u${K;1N!0+jMf3_5<1K1m~g8q8cb_Ghg@WD`b%GfJM!5}Q~T z2Bt%)&#j3W0eJO<0+WMckQW%w`H+i%@`C)o4H)v1Mw3H;zyPFE?y8cN3@Z9nnO>|^dG~IJjQkqRCL-5!vAc;818u+&(&RuEi z1_z<*MRv8uSMdD!W8-n2;)`Jz{utJ4ib-^LciuKvmODZ5*{;eGCQ2}aVr5Za;%os-jz!&I$9B78ZVXW-P?1xz{?wyU(?CK zhW!4wZt)2u&puelN4SzK73*KbndkzMh<+)+M0OnGdBgTDRxc>cn$=Cq? z|E7{QHWPU#!W3!WpJ0LVy5_}q{@?P=<`PV^{O=`^4YIkKb>u~Oo%WwtGmavYx^=;M zH@M0*LdZi#6LC2y@f8-DazVU^N@G_w4Y=_!4FmtN_)O$A1c3WqSlG_W7flXV*dfMm zI!?L>O0_%ww?o{{$sb=V_BQ{WXz>`qA?lFXx=ws9Pdm= z_-EU`VrjA0wc;qA6}L&}@m4J`;!4)Cl;z`r^>=qoz9??Q@&w z*Y=UCADvYOmP46w7Qd+P=-JWnWTDTkhbh~9uRPwy-K(kO2N%TdD3UVa==}W$z1Vig z&W(w0J~Ozo2yBQ`j~i{y7)*WjjSDRn7S=}~v-I>@-Sq-`euhW+{)4y?Ca+P`eG&{_ zE_o!B(3zc#5A!!rfBF58rrixWT?M9Pj5$ot)BUrP&uvQn)!fTUkCl$@l%4Xs;7)>H zuMYCKfv&y6->^vN?FEtf%U3@~67E{*vdbg^WNY`pTX1ED1DALp56^6DvTf0T`^D+| zKKGzg&2Zpjd;j>_f(vrA3F~BhTA-*N@|O6Xd6-wMD)4pw=FqDQ2t}*P>1uiD< z$ZR~2QM}=rLI>yYl~^%hNror0{s4u#+!s&dDR*3H*Nvj$TWQ-wI9 z&?u=h9qKCX2Z~mTa7CNbc1^JuTUJLU>6(z`Y-55qnDBj}LYR{eKGxG@P$55smE@|K z20W~yHhugOx8-9AX)JiRsScOfVYd&Pv?0sz?!K$xzpu?|SyFqJAAoM8>83-+fNrZH zWSiEc6J8}N0~&swol!7`L!7uJS$mQXzNmb((H(?%fk#fkWZ{RFNbfI3J`I TzH;q?fFBhFb@@tJv!MS0_?rsJcVBX8` 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 IlQInWUm}f-2><{9 diff --git a/paradise.dme b/paradise.dme index 4b27f301564..ff5dda64f13 100644 --- a/paradise.dme +++ b/paradise.dme @@ -1867,6 +1867,7 @@ #include "code\modules\martial_arts\krav_maga.dm" #include "code\modules\martial_arts\martial.dm" #include "code\modules\martial_arts\mimejutsu.dm" +#include "code\modules\martial_arts\muscle_implant.dm" #include "code\modules\martial_arts\plasma_fist.dm" #include "code\modules\martial_arts\sleeping_carp.dm" #include "code\modules\martial_arts\wrestling.dm"