From 9e969fd0168e7a87ae2f5f9ef3455908bc7943e4 Mon Sep 17 00:00:00 2001 From: "danno \"big fucking moron\" brando" Date: Tue, 18 Jul 2017 02:35:01 -0400 Subject: [PATCH] Augment Styles/Changes (#28977) Full augment sets on the left, partial mix/match on the right. This PR aims to make augmenting slightly more interesting than just turning your body grey, while also begin reminiscent of the cyborg parts that are actually used in the process. Using the augment manipulator now found in robotics, one can insert a part and custom fit it to one of three different styles (security, engineering, and standard). Mix and match if you so choose, or make a full set for maximum style. --- _maps/map_files/BoxStation/BoxStation.dmm | 1 + .../map_files/Deltastation/DeltaStation2.dmm | 1 + _maps/map_files/MetaStation/MetaStation.dmm | 1 + code/__DEFINES/mobs.dm | 2 +- code/game/machinery/aug_manipulator.dm | 135 ++++++++++++++++++ .../mob/living/carbon/human/species.dm | 4 + code/modules/surgery/bodyparts/bodyparts.dm | 2 +- .../surgery/bodyparts/robot_bodyparts.dm | 8 +- code/modules/surgery/limb_augmentation.dm | 1 + icons/mob/augmentation/augments.dmi | Bin 0 -> 1840 bytes icons/mob/augmentation/augments_engineer.dmi | Bin 0 -> 1893 bytes icons/mob/augmentation/augments_mining.dmi | Bin 0 -> 1910 bytes icons/mob/augmentation/augments_security.dmi | Bin 0 -> 1861 bytes .../{ => augmentation}/surplus_augments.dmi | Bin icons/mob/augments.dmi | Bin 1692 -> 0 bytes tgstation.dme | 1 + 16 files changed, 150 insertions(+), 6 deletions(-) create mode 100644 code/game/machinery/aug_manipulator.dm create mode 100644 icons/mob/augmentation/augments.dmi create mode 100644 icons/mob/augmentation/augments_engineer.dmi create mode 100644 icons/mob/augmentation/augments_mining.dmi create mode 100644 icons/mob/augmentation/augments_security.dmi rename icons/mob/{ => augmentation}/surplus_augments.dmi (100%) delete mode 100644 icons/mob/augments.dmi diff --git a/_maps/map_files/BoxStation/BoxStation.dmm b/_maps/map_files/BoxStation/BoxStation.dmm index 7ec0dac07e2..53a52f093ba 100644 --- a/_maps/map_files/BoxStation/BoxStation.dmm +++ b/_maps/map_files/BoxStation/BoxStation.dmm @@ -26568,6 +26568,7 @@ layer = 3; pixel_x = 32 }, +/obj/machinery/aug_manipulator, /turf/open/floor/plasteel/white, /area/science/robotics/lab) "bkp" = ( diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm index d6357cc5583..a6b334314c1 100644 --- a/_maps/map_files/Deltastation/DeltaStation2.dmm +++ b/_maps/map_files/Deltastation/DeltaStation2.dmm @@ -93138,6 +93138,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 4 }, +/obj/machinery/aug_manipulator, /turf/open/floor/plasteel, /area/science/robotics/lab) "dxQ" = ( diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index 9fb29795ae4..70ed4505f1e 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -71169,6 +71169,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 8 }, +/obj/machinery/aug_manipulator, /turf/open/floor/plasteel, /area/science/robotics/lab) "cFe" = ( diff --git a/code/__DEFINES/mobs.dm b/code/__DEFINES/mobs.dm index 758ff6f496e..2b0e8ee74ad 100644 --- a/code/__DEFINES/mobs.dm +++ b/code/__DEFINES/mobs.dm @@ -43,7 +43,7 @@ #define BODYPART_ROBOTIC 2 #define DEFAULT_BODYPART_ICON_ORGANIC 'icons/mob/human_parts_greyscale.dmi' -#define DEFAULT_BODYPART_ICON_ROBOTIC 'icons/mob/augments.dmi' +#define DEFAULT_BODYPART_ICON_ROBOTIC 'icons/mob/augmentation/augments.dmi' #define MONKEY_BODYPART "monkey" #define ALIEN_BODYPART "alien" diff --git a/code/game/machinery/aug_manipulator.dm b/code/game/machinery/aug_manipulator.dm new file mode 100644 index 00000000000..05d6a480641 --- /dev/null +++ b/code/game/machinery/aug_manipulator.dm @@ -0,0 +1,135 @@ +/obj/machinery/aug_manipulator + name = "\improper augment manipulator" + desc = "A machine for custom fitting augmentations, with in-built spraypainter." + icon = 'icons/obj/pda.dmi' + icon_state = "pdapainter" + density = TRUE + anchored = TRUE + obj_integrity = 200 + max_integrity = 200 + var/obj/item/bodypart/storedpart + var/initial_icon_state + var/static/list/style_list_icons = list("standard" = 'icons/mob/augmentation/augments.dmi', "engineer" = 'icons/mob/augmentation/augments_engineer.dmi', "security" = 'icons/mob/augmentation/augments_security.dmi', "mining" = 'icons/mob/augmentation/augments_mining.dmi') + + +/obj/machinery/aug_manipulator/Initialize() + initial_icon_state = initial(icon_state) + return ..() + +/obj/machinery/aug_manipulator/update_icon() + cut_overlays() + + if(stat & BROKEN) + icon_state = "[initial_icon_state]-broken" + return + + if(storedpart) + add_overlay("[initial_icon_state]-closed") + + if(powered()) + icon_state = initial_icon_state + else + icon_state = "[initial_icon_state]-off" + +/obj/machinery/aug_manipulator/Destroy() + QDEL_NULL(storedpart) + return ..() + +/obj/machinery/aug_manipulator/on_deconstruction() + if(storedpart) + storedpart.forceMove(loc) + storedpart = null + +/obj/machinery/aug_manipulator/contents_explosion(severity, target) + if(storedpart) + storedpart.ex_act(severity, target) + +/obj/machinery/aug_manipulator/handle_atom_del(atom/A) + if(A == storedpart) + storedpart = null + update_icon() + +/obj/machinery/aug_manipulator/attackby(obj/item/O, mob/user, params) + if(default_unfasten_wrench(user, O)) + power_change() + return + + else if(istype(O, /obj/item/bodypart)) + var/obj/item/bodypart/B = O + if(B.status != BODYPART_ROBOTIC) + to_chat(user, "The machine only accepts cybernetics!") + return + if(storedpart) + to_chat(user, "There is already something inside!") + return + else + O = user.get_active_held_item() + if(!user.transferItemToLoc(O, src)) + return + storedpart = O + O.add_fingerprint(user) + update_icon() + + else if(istype(O, /obj/item/weapon/weldingtool) && user.a_intent != INTENT_HARM) + var/obj/item/weapon/weldingtool/WT = O + if(obj_integrity < max_integrity) + if(WT.remove_fuel(0,user)) + user.visible_message("[user] begins repairing [src].", \ + "You begin repairing [src]...", \ + "You hear welding.") + playsound(src, WT.usesound, 40, 1) + if(do_after(user,40*WT.toolspeed, TRUE, target = src)) + if(!WT.isOn() || !(stat & BROKEN)) + return + to_chat(user, "You repair [src].") + playsound(src, 'sound/items/welder2.ogg', 50, 1) + stat &= ~BROKEN + obj_integrity = max(obj_integrity, max_integrity) + update_icon() + else + to_chat(user, "[src] does not need repairs.") + else + return ..() + +/obj/machinery/aug_manipulator/obj_break(damage_flag) + if(!(flags & NODECONSTRUCT)) + if(!(stat & BROKEN)) + stat |= BROKEN + update_icon() + +/obj/machinery/aug_manipulator/attack_hand(mob/user) + if(!..()) + add_fingerprint(user) + + if(storedpart) + var/augstyle = input(user, "Select style.", "Augment Custom Fitting") as null|anything in style_list_icons + if(!augstyle) + return + if(!in_range(src, user)) + return + if(!storedpart) + return + storedpart.icon = style_list_icons[augstyle] + eject_part(user) + + else + to_chat(user, "\The [src] is empty.") + +/obj/machinery/aug_manipulator/proc/eject_part(mob/living/user) + if(storedpart) + storedpart.forceMove(get_turf(src)) + storedpart = null + update_icon() + else + to_chat(user, "[src] is empty.") + +/obj/machinery/aug_manipulator/AltClick(mob/living/user) + ..() + if(!user.canUseTopic(src)) + return + else + eject_part(user) + +/obj/machinery/aug_manipulator/power_change() + ..() + update_icon() diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index 70f7a809af0..2981ffe8494 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -241,6 +241,10 @@ var/dynamic_hair_suffix = "" //if this is non-null, and hair+suffix matches an iconstate, then we render that hair instead var/dynamic_fhair_suffix = "" + //for augmented heads + if(HD.status == BODYPART_ROBOTIC) + return + //we check if our hat or helmet hides our facial hair. if(H.head) var/obj/item/I = H.head diff --git a/code/modules/surgery/bodyparts/bodyparts.dm b/code/modules/surgery/bodyparts/bodyparts.dm index d93fc658ddb..b239e395761 100644 --- a/code/modules/surgery/bodyparts/bodyparts.dm +++ b/code/modules/surgery/bodyparts/bodyparts.dm @@ -306,7 +306,7 @@ else limb.icon_state = "[animal_origin]_[body_zone]" else - limb.icon = 'icons/mob/augments.dmi' + limb.icon = 'icons/mob/augmentation/augments.dmi' limb.icon_state = "[animal_origin]_[body_zone]" return diff --git a/code/modules/surgery/bodyparts/robot_bodyparts.dm b/code/modules/surgery/bodyparts/robot_bodyparts.dm index 00a01e2d2e4..c956380d200 100644 --- a/code/modules/surgery/bodyparts/robot_bodyparts.dm +++ b/code/modules/surgery/bodyparts/robot_bodyparts.dm @@ -165,27 +165,27 @@ /obj/item/bodypart/l_arm/robot/surplus name = "surplus prosthetic left arm" desc = "A skeletal, robotic limb. Outdated and fragile, but it's still better than nothing." - icon = 'icons/mob/surplus_augments.dmi' + icon = 'icons/mob/augmentation/surplus_augments.dmi' icon_state = "l_arm" max_damage = 20 /obj/item/bodypart/r_arm/robot/surplus name = "surplus prosthetic right arm" desc = "A skeletal, robotic limb. Outdated and fragile, but it's still better than nothing." - icon = 'icons/mob/surplus_augments.dmi' + icon = 'icons/mob/augmentation/surplus_augments.dmi' icon_state = "r_arm" max_damage = 20 /obj/item/bodypart/l_leg/robot/surplus name = "surplus prosthetic left leg" desc = "A skeletal, robotic limb. Outdated and fragile, but it's still better than nothing." - icon = 'icons/mob/surplus_augments.dmi' + icon = 'icons/mob/augmentation/surplus_augments.dmi' icon_state = "l_leg" max_damage = 20 /obj/item/bodypart/r_leg/robot/surplus name = "surplus prosthetic right leg" desc = "A skeletal, robotic limb. Outdated and fragile, but it's still better than nothing." - icon = 'icons/mob/surplus_augments.dmi' + icon = 'icons/mob/augmentation/surplus_augments.dmi' icon_state = "r_leg" max_damage = 20 diff --git a/code/modules/surgery/limb_augmentation.dm b/code/modules/surgery/limb_augmentation.dm index 32b4f7c8c6b..c965640ade5 100644 --- a/code/modules/surgery/limb_augmentation.dm +++ b/code/modules/surgery/limb_augmentation.dm @@ -57,6 +57,7 @@ qdel(tool) target.update_body_parts() target.updatehealth() + target.update_hair() add_logs(user, target, "augmented", addition="by giving him new [parse_zone(target_zone)] INTENT: [uppertext(user.a_intent)]") else to_chat(user, "[target] has no organic [parse_zone(target_zone)] there!") diff --git a/icons/mob/augmentation/augments.dmi b/icons/mob/augmentation/augments.dmi new file mode 100644 index 0000000000000000000000000000000000000000..a532348d6d155a3c0cfcfacbe56e8575282be898 GIT binary patch literal 1840 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 fYI8 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 literal 0 HcmV?d00001 diff --git a/icons/mob/augmentation/augments_security.dmi b/icons/mob/augmentation/augments_security.dmi new file mode 100644 index 0000000000000000000000000000000000000000..8f57f77c4b8e1e419ba97ee1c9b2b88f74a3a970 GIT binary patch literal 1861 zcmV-L2fFx)P)DQ(_bsKMo6Zb#=hNz%4B;IyyR~rKP_l zBr7X5nVFe#a&k&t=MVq@00DGTPE!Ct=GbNc0069dR9JLGWpiV4X>fFDZ*Bkpc$|&W z!4AS83p(DYJyZZ8JmjCONC{H zB;}_mZKmHh8uwtaOTv`cHjS1H!yRtXKE6yTG5kl&(1}`kl!F8 zvGj5=&IA-TEY~V*-9B^$zJ^-vsMtvYu<%pvc>!KD@Q(Jq_k0B^ z4;X}UM~6GPfm($VxOw|7AYu^CkjE>s{(T3?lMSu`GVX;_ym|ZJVhAA$4LA(w#B0bU zvcZ*;@#Of6X!G_j7*k4-JppuzFeBdssNA_?fh#ZOo#PE`-F|5y3iinYH6RbuzdJr!{_gOo`Mbk2DZA#J8!w>oX=Q(=wY#<#bd`>p@UD!(3yl~5#%<8>H$kAU zUMzHBTw(e6I_Vs1#z!6W%;&#x*NGJ+C&mQ+OoA3)z@B;{BXEk_u*PJ}kGTLqeQS;J zi4!>f@iWzrg^tjS=eGq|ZF=BF&(kdXBmT_hY48)X z;D-ggKe@mTPTfP9%-op}b^<9Z`T~9vfD_+jIDtUSh$v$k6bW@Q)v;B5rp#jgj(#0r#m!}&Q{u7bjjK|$J0Xf@6+Fvmq* zRPhm`&_#u^^$3CU5km;7Ksub?REw-<-UewGHso3j3^9#%GmPY&9>E}WQtF_AixMU( zd`A}zOrUCTCJ2UBh!g5iE4=RCQgWGT@?XIW zDWy#R`8|SDsUdFAnxx~m27d%_Gh%vRjTA%H!4MIP0cj86oDkUu(ydVi#+(;R>Gh&xiU#m*i{IXbr4){T+E;$t&Tm!|pylPbu^)Kn( zY6Nov2Z`;XSo@zEL2YUEB4se-6tDu8iCX4Yf9V$Bo#$6?u^g<-^=buKp!5}Ozicy> zI>_;ZU|IR|@~WXU2v4bSsc!>`zjyF@`mTB)$eU1(7iBwtwL(|65)ViNWB^qpZChG7_nu?)-K zS^jQm{!aa3gSuuS{Q~Fy`8&{-C6x-$xn5W^+dqG&eltL>AnR)(fA`_K58lC2p>sk7 z5cRc?zjNbzQ~p<>6TYR2p8!cXxP|O8)L;P}%0ak^J3;G?BmCmIm^7hG7_nVHk#C7=~f2%&ji!KuUU`=%wz0l1OC7)c-#L2zGRebQ{o~B&N&j;_l+wQyt@q*wuibe*Y#b~0u#U|zc5=u$OiBNnBnWAgNzLe zyd=zm!tZO4DTJI8ApOlP3%n%ht@~RUMcKPxc>y5{$(u%yvTQdRLK7ztu}{=uD>D3j zJcgWy$Kx*-!-G@8M*;`7kDh^3i!%(vFn;q7@Z&dhkp`w!00000NkvXXu0mjff4p-; literal 0 HcmV?d00001 diff --git a/icons/mob/surplus_augments.dmi b/icons/mob/augmentation/surplus_augments.dmi similarity index 100% rename from icons/mob/surplus_augments.dmi rename to icons/mob/augmentation/surplus_augments.dmi diff --git a/icons/mob/augments.dmi b/icons/mob/augments.dmi deleted file mode 100644 index 7124c35105e4648e334b6db31725f5cb968d24fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1692 zcmV;N24ne&P)fFDZ*Bkpc$`yKaB_9`^iy#0_2eo`Eh^5;&r`5fFwryM z;w;ZhDainGjE%TBGg33tGfE(w;*!LYR3K9+IU}{WBtBP(i!&v&s2HS;i!-e#F*g;& zHbhsKMo?WwYGMiz#(|X)XtZ8&9W{;-8TQiI-L2?L_I7lRRoNh@-S4|~G_ z3YhhKQ*6&BD4;*$fhztX&I0T} z;}tc@1wjym{{!^5(cECW)vC6+cuF`X3s=0Z4OE_=RoPs;#U{^Dmo}{~vb!d~Lw0VE z&Bar6etiwQq#thAsEf;dgV#8_9Ia`%cuF|Tw{T9vBu&w(Z5dzV5k8=0VmN+&u8g;s z5Am`tjT2aA_aRf3A+V2p0=%f55h$Z-0dL`S=RmBQD<3Zx(dP(86mFYIE`X zIlL?LtBnxrz4{?~uYrVE@6`|0d$ki{z1KiOtoQ1N=)L+Odar(n-m4#?_Zmou^RG?)qC4|f6UKKj2YI%#@cc-wTs zzm~j@SJYF}37Z~a)bwNePs4I4=zQjVyrM*(34$O9g7C(06>lZ}ZcW^7S$6|HRtf!B zuRh%z^S06Pr}s=gor5=8^}rUFKf(7sbxe0PFwqbE2v-+}CL(Kq`w;^Dr`y%b`W7<- zFKv8xXz$yS?rXC=IH;$}0jgjAWb*~zME|vS#2@HCwXAIMRl-djMtH;@Tvkt&%lcOd zH)Re9%l*M+;9Q0tm41vb0(E!9AL_pq?h}0r;N#zX!pDQyI^qxY-@A{M3IBM-2;YH( zkEQ;=1O4Al7`$fp7pl8*f9N4vP!I$`5ClOG1i=?@BSYJp5W31N@ejzxh~=TtaRs{p za(ZF^!po81(u7}IEoLa8)j&qJmNxg$*7wx|2=t}hB08zuqYY%_3bt*3++N{eZC*ui z-@)GYh{#q6_9)pV!2u->ZTLQo8qm+%(%&%t5@ScAyco$J6ydQ?{M{Qyu;PIsUcx?y&C@snR+$;6EgK`0_JdoGhDr!f{o{d z)%9xjzdiQ504KoKt0~iOr@_>_v9&|(bT4=xugC~}Q=;GMrJFQ7r4c^JB?yA>7U1fW zdWWe`>K(2=sdu>gr2Z2!^-29F+3CuHiA m`iH4c>L0c~sUQe%h<^dTKtFKEWmK^M0000