From 0ce34e08b631d8f189d679011f0df516f4fe5e63 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Tue, 18 Jul 2017 06:45:44 -0500 Subject: [PATCH] Augment Styles/Changes --- _maps/map_files/BoxStation/BoxStation.dmm | 1 + _maps/map_files/BoxStation/BoxStation.dmm.rej | 92 ++++++++++++ .../map_files/Deltastation/DeltaStation2.dmm | 1 + .../Deltastation/DeltaStation2.dmm.rej | 37 +++++ _maps/map_files/MetaStation/MetaStation.dmm | 1 + .../map_files/MetaStation/MetaStation.dmm.rej | 37 +++++ 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 icons/mob/augmentation/augments_standard.dmi | Bin 0 -> 1840 bytes .../{ => augmentation}/surplus_augments.dmi | Bin icons/mob/augments.dmi | Bin 1692 -> 0 bytes tgstation.dme | 1 + 20 files changed, 316 insertions(+), 6 deletions(-) create mode 100644 _maps/map_files/BoxStation/BoxStation.dmm.rej create mode 100644 _maps/map_files/Deltastation/DeltaStation2.dmm.rej create mode 100644 _maps/map_files/MetaStation/MetaStation.dmm.rej 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 create mode 100644 icons/mob/augmentation/augments_standard.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 4be782b3c3..b6b56121ae 100644 --- a/_maps/map_files/BoxStation/BoxStation.dmm +++ b/_maps/map_files/BoxStation/BoxStation.dmm @@ -26586,6 +26586,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/BoxStation/BoxStation.dmm.rej b/_maps/map_files/BoxStation/BoxStation.dmm.rej new file mode 100644 index 0000000000..f0e788c352 --- /dev/null +++ b/_maps/map_files/BoxStation/BoxStation.dmm.rej @@ -0,0 +1,92 @@ +diff a/_maps/map_files/BoxStation/BoxStation.dmm b/_maps/map_files/BoxStation/BoxStation.dmm (rejected hunks) +@@ -33644,7 +33645,7 @@ + /obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4; + external_pressure_bound = 140; +- pressure_checks = 0 ++ pressure_checks = 0; + name = "server vent" + }, + /turf/open/floor/circuit{ +@@ -83911,12 +83912,12 @@ aaa + aaa + aaa + cTg +-cTl +-cTn +-cTr +-cTu +-cTw +-cTz ++cTg ++cTi ++cTg ++cTi ++cTg ++cTg + aaa + bCq + bPS +@@ -84167,13 +84168,13 @@ aaa + aaa + aaa + aaa +-cTh ++cTg + bGg + cTo + cMl + bHx + cTx +-cTA ++cTg + aaa + bLv + bPR +@@ -84427,7 +84428,7 @@ bDi + cTi + bGh + bHx +-cTs ++cTo + bHx + bLt + bMF +@@ -84681,13 +84682,13 @@ bzP + bAS + bxu + aaa +-cTj ++cTg + bGg +-cTp +-cTt ++cTo ++cTo + bHx + bLs +-cTB ++cTg + aaa + bLv + bPT +@@ -84938,13 +84939,13 @@ bzR + byd + bxx + aaa +-cTk +-cTm +-cTq ++cTg ++cTg ++cTi + bJc +-cTv +-cTy +-cTC ++cTi ++cTg ++cTg + aaa + bCq + bPV diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm index 7f26536fb2..da42ce0db4 100644 --- a/_maps/map_files/Deltastation/DeltaStation2.dmm +++ b/_maps/map_files/Deltastation/DeltaStation2.dmm @@ -93226,6 +93226,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/Deltastation/DeltaStation2.dmm.rej b/_maps/map_files/Deltastation/DeltaStation2.dmm.rej new file mode 100644 index 0000000000..4b97f76ae0 --- /dev/null +++ b/_maps/map_files/Deltastation/DeltaStation2.dmm.rej @@ -0,0 +1,37 @@ +diff a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm (rejected hunks) +@@ -156131,16 +156132,16 @@ cim + brN + brN + bqq +-coe ++bkT + cpL +-cqZ ++brH + csr +-cub ++bmI + cvE + cwY +-cqZ +-cqZ +-cqZ ++brH ++brH ++brH + brH + bkT + cFG +@@ -156166,10 +156167,10 @@ djZ + dlM + dnc + doh +-dpQ ++dnc + drt + dsT +-dpQ ++dnc + ego + dwO + dyc diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index c63e8b3f37..7fa2168e70 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -71207,6 +71207,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/_maps/map_files/MetaStation/MetaStation.dmm.rej b/_maps/map_files/MetaStation/MetaStation.dmm.rej new file mode 100644 index 0000000000..553b988622 --- /dev/null +++ b/_maps/map_files/MetaStation/MetaStation.dmm.rej @@ -0,0 +1,37 @@ +diff a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm (rejected hunks) +@@ -45922,7 +45922,7 @@ + /obj/machinery/atmospherics/components/unary/vent_pump/siphon/on{ + dir = 8; + frequency = 1441; +- id_tag = "n2o_out" ++ id_tag = "n2o_out"; + name = "n2o out" + }, + /turf/open/floor/engine/n2o, +@@ -49223,7 +49223,7 @@ + /obj/machinery/atmospherics/components/unary/vent_pump/siphon/on{ + dir = 8; + frequency = 1441; +- id_tag = "tox_out" ++ id_tag = "tox_out"; + name = "toxin out" + }, + /turf/open/floor/engine/plasma, +@@ -52023,7 +52023,7 @@ + /obj/machinery/atmospherics/components/unary/vent_pump/siphon/on{ + dir = 8; + frequency = 1441; +- id_tag = "co2_out" ++ id_tag = "co2_out"; + name = "co2 out" + }, + /turf/open/floor/engine/co2, +@@ -58890,7 +58890,7 @@ + /obj/machinery/atmospherics/components/unary/vent_pump/siphon/on{ + dir = 1; + frequency = 1441; +- id_tag = "n2_out" ++ id_tag = "n2_out"; + name = "n2 out" + }, + /turf/open/floor/engine/n2, diff --git a/code/__DEFINES/mobs.dm b/code/__DEFINES/mobs.dm index 758ff6f496..2b0e8ee74a 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 0000000000..05d6a48064 --- /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 4844a4e804..5d78b9c4e0 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -254,6 +254,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 d93fc658dd..b239e39576 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 00a01e2d2e..c956380d20 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 aaea6de1d5..caeb966d96 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/augmentation/augments_standard.dmi b/icons/mob/augmentation/augments_standard.dmi new file mode 100644 index 0000000000000000000000000000000000000000..a532348d6d155a3c0cfcfacbe56e8575282be898 GIT binary patch literal 1840 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 m`iH4c>L0c~sUQe%h<^dTKtFKEWmK^M0000