From 3858f626ee96ae55b65f5f353cb2ea171b3a8bbd Mon Sep 17 00:00:00 2001 From: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com> Date: Mon, 20 Jun 2022 12:05:33 -0400 Subject: [PATCH] Yet Another PR To Fix Various CI Failures (#14420) * Fixed mech CI not working (thanks safeties) * Fixes consistent jumpsuits not working for the prefs menu * Oops forgot to commit this * We lost this from #10050, now they're grey again * Fixes point-blank ballistic shots, fixing mech CI that way * Adds the screenshot icons for our antags * Adds a bunch of screenshots for all of our species (yes they're ugly but we'll fix them later) * I Love Merge Conflict Markers --- .../map_files/Deltastation/DeltaStation2.dmm | 19 ------------------ code/modules/jobs/job_types/assistant.dm | 14 +++++++++---- code/modules/projectiles/projectile.dm | 2 +- code/modules/unit_tests/mecha_damage.dm | 2 ++ ...creenshot_antag_icons_assaultoperative.png | Bin 0 -> 622 bytes .../screenshot_antag_icons_borer.png | Bin 0 -> 357 bytes ...eenshot_antag_icons_driftingcontractor.png | Bin 0 -> 620 bytes ...screenshot_antag_icons_loneinfiltrator.png | Bin 0 -> 821 bytes ...eenshot_humanoids__datum_species_akula.png | Bin 0 -> 2231 bytes ...nshot_humanoids__datum_species_aquatic.png | Bin 0 -> 2231 bytes ...eenshot_humanoids__datum_species_dwarf.png | Bin 0 -> 1075 bytes ...eenshot_humanoids__datum_species_ghoul.png | Bin 0 -> 1072 bytes ...hot_humanoids__datum_species_hemophage.png | Bin 0 -> 1075 bytes ...shot_humanoids__datum_species_humanoid.png | Bin 0 -> 1075 bytes ...enshot_humanoids__datum_species_insect.png | Bin 0 -> 1112 bytes ...s__datum_species_jelly_roundstartslime.png | Bin 0 -> 2194 bytes ...enshot_humanoids__datum_species_mammal.png | Bin 0 -> 1076 bytes ...enshot_humanoids__datum_species_mutant.png | Bin 0 -> 1071 bytes ...noids__datum_species_mutant_infectious.png | Bin 0 -> 1122 bytes ...__datum_species_mutant_infectious_fast.png | Bin 0 -> 1122 bytes ...__datum_species_mutant_infectious_slow.png | Bin 0 -> 1122 bytes ...t_humanoids__datum_species_pod_podweak.png | Bin 0 -> 1103 bytes ...nshot_humanoids__datum_species_robotic.png | Bin 0 -> 1061 bytes ...t_humanoids__datum_species_robotic_ipc.png | Bin 0 -> 1120 bytes ..._datum_species_robotic_synthetic_human.png | Bin 0 -> 1075 bytes ...datum_species_robotic_synthetic_mammal.png | Bin 0 -> 1076 bytes ...anoids__datum_species_robotic_synthliz.png | Bin 0 -> 1038 bytes ...enshot_humanoids__datum_species_skrell.png | Bin 0 -> 1108 bytes ...nshot_humanoids__datum_species_tajaran.png | Bin 0 -> 1076 bytes ...nshot_humanoids__datum_species_teshari.png | Bin 0 -> 954 bytes ...enshot_humanoids__datum_species_unathi.png | Bin 0 -> 1026 bytes ...creenshot_humanoids__datum_species_vox.png | Bin 0 -> 1263 bytes ...hot_humanoids__datum_species_vulpkanin.png | Bin 0 -> 1076 bytes ...reenshot_humanoids__datum_species_xeno.png | Bin 0 -> 990 bytes .../master_files/code/datums/outfits.dm | 3 +++ .../under/loadout_datum_under.dm | 1 + tgstation.dme | 1 + 37 files changed, 18 insertions(+), 24 deletions(-) create mode 100644 code/modules/unit_tests/screenshots/screenshot_antag_icons_assaultoperative.png create mode 100644 code/modules/unit_tests/screenshots/screenshot_antag_icons_borer.png create mode 100644 code/modules/unit_tests/screenshots/screenshot_antag_icons_driftingcontractor.png create mode 100644 code/modules/unit_tests/screenshots/screenshot_antag_icons_loneinfiltrator.png create mode 100644 code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_akula.png create mode 100644 code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_aquatic.png create mode 100644 code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_dwarf.png create mode 100644 code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_ghoul.png create mode 100644 code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_hemophage.png create mode 100644 code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_humanoid.png create mode 100644 code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_insect.png create mode 100644 code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_jelly_roundstartslime.png create mode 100644 code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_mammal.png create mode 100644 code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_mutant.png create mode 100644 code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_mutant_infectious.png create mode 100644 code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_mutant_infectious_fast.png create mode 100644 code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_mutant_infectious_slow.png create mode 100644 code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_pod_podweak.png create mode 100644 code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_robotic.png create mode 100644 code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_robotic_ipc.png create mode 100644 code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_robotic_synthetic_human.png create mode 100644 code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_robotic_synthetic_mammal.png create mode 100644 code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_robotic_synthliz.png create mode 100644 code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_skrell.png create mode 100644 code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_tajaran.png create mode 100644 code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_teshari.png create mode 100644 code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_unathi.png create mode 100644 code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_vox.png create mode 100644 code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_vulpkanin.png create mode 100644 code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_xeno.png create mode 100644 modular_skyrat/master_files/code/datums/outfits.dm diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm index 21f8936dcad..1f99230ddaf 100644 --- a/_maps/map_files/Deltastation/DeltaStation2.dmm +++ b/_maps/map_files/Deltastation/DeltaStation2.dmm @@ -31342,25 +31342,6 @@ /turf/open/floor/iron, /area/station/hallway/primary/central/fore) "iEV" = ( -/obj/structure/table/wood, -/obj/item/reagent_containers/food/drinks/drinkingglass/shotglass{ - pixel_x = -3; - pixel_y = 15 - }, -/obj/item/reagent_containers/food/drinks/drinkingglass/shotglass{ - pixel_x = -6; - pixel_y = 3 - }, -/obj/item/reagent_containers/food/drinks/bottle/beer{ - desc = "Whatever it is, it reeks of foul, putrid froth."; - list_reagents = list(/datum/reagent/consumable/ethanol/bacchus_blessing = 15); - name = "Delta-Down"; - pixel_x = 5; - pixel_y = 5 - }, -/obj{ - name = "---Merge conflict marker---" - }, /obj/item/reagent_containers/food/drinks/drinkingglass/shotglass{ pixel_x = -6; pixel_y = 3 diff --git a/code/modules/jobs/job_types/assistant.dm b/code/modules/jobs/job_types/assistant.dm index 178599c748b..3f2aba7a3e5 100644 --- a/code/modules/jobs/job_types/assistant.dm +++ b/code/modules/jobs/job_types/assistant.dm @@ -43,7 +43,7 @@ Assistant id_trim = /datum/id_trim/job/assistant uniform = /obj/item/clothing/under/color/random -/* SKYRAT EDIT REMOVAL - THIS OVERRIDES CLOTHING LOADOUTS + /datum/outfit/job/assistant/pre_equip(mob/living/carbon/human/target) ..() give_jumpsuit(target) @@ -58,17 +58,22 @@ Assistant var/index = (jumpsuit_number % GLOB.colored_assistant.jumpsuits.len) + 1 + // SKYRAT EDIT - Loadouts (we don't want jumpsuits to override the person's loadout item) + if(modified_outfit_slots & ITEM_SLOT_ICLOTHING) + return + // SKYRAT EDIT END + //We don't cache these, because they can delete on init //Too fragile, better to just eat the cost if (target.jumpsuit_style == PREF_SUIT) uniform = GLOB.colored_assistant.jumpsuits[index] else uniform = GLOB.colored_assistant.jumpskirts[index] -*/ + /datum/outfit/job/assistant/consistent name = "Assistant - Consistent" -/* SKYRAT EDIT REMOVAL + /datum/outfit/job/assistant/consistent/give_jumpsuit(mob/living/carbon/human/target) uniform = /obj/item/clothing/under/color/grey @@ -77,8 +82,9 @@ Assistant // This outfit is used by the assets SS, which is ran before the atoms SS if (SSatoms.initialized == INITIALIZATION_INSSATOMS) + H.w_uniform?.update_greyscale() H.update_inv_w_uniform() -*/ + /proc/get_configured_colored_assistant_type() return CONFIG_GET(flag/grey_assistants) ? /datum/colored_assistant/grey : /datum/colored_assistant/random diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index a59f350c938..61158fe042e 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -683,7 +683,7 @@ AddElement(/datum/element/embed, projectile_payload = shrapnel_type) if(!log_override && firer && original) log_combat(firer, original, "fired at", src, "from [get_area_name(src, TRUE)]") - if(direct_target && (get_dist(direct_target, get_turf(src)) <= 1)) // point blank shots + if(direct_target && (get_dist(direct_target, get_turf(fired_from)) <= 1)) // point blank shots // SKYRAT EDIT - ORIGINAL: if(direct_target && (get_dist(direct_target, get_turf(src)) <= 1)) process_hit(get_turf(direct_target), direct_target) if(QDELETED(src)) return diff --git a/code/modules/unit_tests/mecha_damage.dm b/code/modules/unit_tests/mecha_damage.dm index 6bc5e37069f..e0a88cc2fb1 100644 --- a/code/modules/unit_tests/mecha_damage.dm +++ b/code/modules/unit_tests/mecha_damage.dm @@ -30,6 +30,7 @@ // Get a sample laser weapon. // The captain's laser gun here is chosen primarily because it deals more damage than normal lasers. var/obj/item/gun/energy/laser/dummy_laser = allocate(/obj/item/gun/energy/laser/captain) + dummy_laser.safety = FALSE // SKYRAT EDIT - Safeties on guns make them impossible to shoot :) var/obj/item/ammo_casing/laser_ammo = dummy_laser.ammo_type[1] var/obj/projectile/beam/laser_fired = initial(laser_ammo.projectile_type) var/expected_laser_damage = round(dummy_laser.projectile_damage_multiplier * initial(laser_fired.damage) * (1 - expected_laser_armor / 100), DAMAGE_PRECISION) @@ -37,6 +38,7 @@ // Get a sample ballistic weapon. // The syndicate .357 here is chosen because it does a lot of damage. var/obj/item/gun/ballistic/dummy_gun = allocate(/obj/item/gun/ballistic/revolver) + dummy_gun.safety = FALSE // SKYRAT EDIT - Safeties on guns make them impossible to shoot :) var/obj/item/ammo_casing/ballistic_ammo = dummy_gun.magazine.ammo_type var/obj/projectile/bullet_fired = initial(ballistic_ammo.projectile_type) var/expected_bullet_damage = round(dummy_gun.projectile_damage_multiplier * initial(bullet_fired.damage) * (1 - expected_bullet_armor / 100), DAMAGE_PRECISION) diff --git a/code/modules/unit_tests/screenshots/screenshot_antag_icons_assaultoperative.png b/code/modules/unit_tests/screenshots/screenshot_antag_icons_assaultoperative.png new file mode 100644 index 0000000000000000000000000000000000000000..5e9e75b9c382ce0aee315b6dbb48f9c89d0d14e7 GIT binary patch literal 622 zcmV-!0+IcRP)fFDZ*Bkpc$`yKaB_9`^iy#0_2eo`Eh^5; z&r`5fFwryM;w;ZhDainGEX}w$Gg33tGfE(w;*!LYR3KAHiHkEOv#1!zH00t;D@x2w zg|L+sT>V_YCISGS$rvAshC*oo00BlxL_t(&f$f;vQiCuQMT=Smsi0iERZ;){C*3iJ zIVXS@Fnxi&UYNAaS~JZM((ZPI5JCtcglvx_G7QWN;Ds}A9tr0P8w~syNW49k+(e|Y z#=ym5j70AS2IdAP*L&}|1XnoK>33BV33191XJPbkkP zk${|FlF8HcDgv@yi} zg2M`mO22;zF8KKMiI%sn*10q1gExd4Tr__0Nawtd=E;B!p&LvdKRV-a*5|xNV?md< zkav)1j_8yrJ1l~Yy1Rf(o}Ct#yM&5^6?0Nq!|lac#pC_;80MXnkoPHJ@BrGn&C|s( zq+-t7tA>1zjsgq;Q@B(ESC{U;WZf{ofUC1wFkVqBYx{&3E~^7pt6UaP+9-W*b(vAL zkI~GTQM^Fy_&|evh=1$>>tmDeef#&WWcKtK*7Mh`mC%3I{&4%NUoOg}jQ{_jMKS;k3NZEIeTbo65AiTwU4AHEuoKynp?zHT}CKo^P4t ansW03IGP@QMI5G(z;9CypQ<@@{UxJUUcVVJkF193m?i7a2G}QWg~%8yX+V=-0C=2JR&a84_w-Y6@%7{?OD!tS z%+FJ>RWQ*r;NmRLOex6#axBfbI5Sc+(=$pSoZ^zil2jm5Nr{UyC9|j)$TZ~QOe;#v zO@*+P6|@TYdpZU7Lgx%1n}P` zcQP);0p#v<2*4^pHJ0ddUP=kV%@X9U0A3U>694f{9wJa^ZAhBVPcT0FGI_mLrJd5|4 literal 0 HcmV?d00001 diff --git a/code/modules/unit_tests/screenshots/screenshot_antag_icons_loneinfiltrator.png b/code/modules/unit_tests/screenshots/screenshot_antag_icons_loneinfiltrator.png new file mode 100644 index 0000000000000000000000000000000000000000..62e23dad5c7f005c87e98c8fe75c71ee56526e07 GIT binary patch literal 821 zcmV-51Iqk~P)5J9&C&n=|BUPZba8?J1qLW6D5a^kZGeO?E-nC>03aYB_wkQTOiaan2Q@V{ zcXxOH;%V=-6f7((jEagXDJefcKYdCc82|tP0d!JMQvg8b*k%9#0AzYpSad{Xb7OL8 zaCB*JZU6vyoKseCa&`CgQ*iP19%!{}1e(*+Za-GDSK#_xS?L%6S~_?uEg?Fbu;m z3}fG%RG8oZ0;Zl;bnoc7K;fR}odFy?=jcpgf?eTEKL@_=UjQ6@jJm3|30eujB?y9m zr#J){b=8%QL*N!ZpE&n{s>1DHg1rbNVe)V|^wf{!=_I}Pf-8qsy-GneVS@h^Fks{u z1GH)i*s?Lw#8ycdh9>xf05?uV6h$!@S73yTk>;mhWBP11J5~W7?0h~i1$fkq!^LaB zIE+*S&i~vJp-W#Z7AE+mfF+$&Anpbr;}%eW5tTSAe}g+#!&M(rf+T)CTJs2Wy^YNA4q^hqJ5yssx4KEpWzMZCTJ;m0P69oHr{ZQUbvn z$nzYItZGM$E8hq1T`k!m0b zOR+iK1Z@Ng=PANjYuv~YH$YJoY&QtzQl}ClTr4ohR7o1cO|Vl?Hle}yo~vEa`+#u} z@avia7anh`>QM>Scywq~YuD;U`j*qz^}z*S_80TfB_yzf00000NkvXXu0mjf5}#)j literal 0 HcmV?d00001 diff --git a/code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_akula.png b/code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_akula.png new file mode 100644 index 0000000000000000000000000000000000000000..98cf373723da5bad5ff965fc3b4ed0b096377d71 GIT binary patch literal 2231 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 UutsMCrvLx|07*qoM6N<$f)BP+m;e9( literal 0 HcmV?d00001 diff --git a/code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_mammal.png b/code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_mammal.png new file mode 100644 index 0000000000000000000000000000000000000000..ca170deb400d5e60b06fa7512f3a27e39b62d4f0 GIT binary patch literal 1076 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 literal 0 HcmV?d00001 diff --git a/code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_mutant_infectious_fast.png b/code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_mutant_infectious_fast.png new file mode 100644 index 0000000000000000000000000000000000000000..5b9c31417439bff9e1659b712c5d7b5518cb8d83 GIT binary patch literal 1122 zcmV-o1fBbdP)RXlQ7Tkdwf`z&<`cNl8hwv$J$} zfNX4RDk>_Gk&#bNPf<@>gCQ%wF+ZXyHNU^V5fl{E*WXG?N+k&lISv!9tgJaXIZaGV zKR!N7N=lfNl>h(#>gedp$;p0xespwnT3T98PEMGZnAO$QA|@uMsfFDZ*Bkp zc$`yKaB_9`^iy#0_2eo`Eh^5;&r`5fFwryM;w;ZhDainGjE%TBGg33tGfE(w;*!LY zR3KAHiHkEOv#1!Po{KZBC^0t`#5UwoR&e!m0hN*?#bIl0LTStL|3B6lIpG9*Btv;BlS4S-&fJU@V+~_pEjZ_& zj;e z!H{8pv3hnQM4snDoW!}5GQkU_bf%Rm=!_Goq%j8GX|6?KmC!=jLTH*xQ<}N0f!aA?OI?7&ivTtRtw>T&^CuvpPyT6FswZ% z_}SR=NnwkN!hV}@Kkj_QhGS4XbjTcZpr8ZCdOc3ZYcAG&JnaZzkMLf>8wqzfthWVz z`i6(~cFf>~-?fHM!S6V%dt3xA2;MI7W?`F~q$^;}ZZ;s``;c%Dy9f>l>l1>*FvJ|k z_;HwUlACZiya(}mIQOK6f7a9o0M?jC)|$-ub863eNi3zYcBsF#2HQs|TDECR90u)6iZxzG(q_`1KnEUdK)r=4O699?*h6 z5X#S@_1HsuBhM&^f5hn_QU5BKQgHeKK{WmYfz$diC3w_2Iv!wz;ovFGpV}EBAqd04 oa|}PPXNY*T!@)}ozYxR2U)dX2OAc|}F8}}l07*qoM6N<$f>e(PJ^%m! literal 0 HcmV?d00001 diff --git a/code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_mutant_infectious_slow.png b/code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_mutant_infectious_slow.png new file mode 100644 index 0000000000000000000000000000000000000000..5b9c31417439bff9e1659b712c5d7b5518cb8d83 GIT binary patch literal 1122 zcmV-o1fBbdP)RXlQ7Tkdwf`z&<`cNl8hwv$J$} zfNX4RDk>_Gk&#bNPf<@>gCQ%wF+ZXyHNU^V5fl{E*WXG?N+k&lISv!9tgJaXIZaGV zKR!N7N=lfNl>h(#>gedp$;p0xespwnT3T98PEMGZnAO$QA|@uMsfFDZ*Bkp zc$`yKaB_9`^iy#0_2eo`Eh^5;&r`5fFwryM;w;ZhDainGjE%TBGg33tGfE(w;*!LY zR3KAHiHkEOv#1!Po{KZBC^0t`#5UwoR&e!m0hN*?#bIl0LTStL|3B6lIpG9*Btv;BlS4S-&fJU@V+~_pEjZ_& zj;e z!H{8pv3hnQM4snDoW!}5GQkU_bf%Rm=!_Goq%j8GX|6?KmC!=jLTH*xQ<}N0f!aA?OI?7&ivTtRtw>T&^CuvpPyT6FswZ% z_}SR=NnwkN!hV}@Kkj_QhGS4XbjTcZpr8ZCdOc3ZYcAG&JnaZzkMLf>8wqzfthWVz z`i6(~cFf>~-?fHM!S6V%dt3xA2;MI7W?`F~q$^;}ZZ;s``;c%Dy9f>l>l1>*FvJ|k z_;HwUlACZiya(}mIQOK6f7a9o0M?jC)|$-ub863eNi3zYcBsF#2HQs|TDECR90u)6iZxzG(q_`1KnEUdK)r=4O699?*h6 z5X#S@_1HsuBhM&^f5hn_QU5BKQgHeKK{WmYfz$diC3w_2Iv!wz;ovFGpV}EBAqd04 oa|}PPXNY*T!@)}ozYxR2U)dX2OAc|}F8}}l07*qoM6N<$f>e(PJ^%m! literal 0 HcmV?d00001 diff --git a/code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_pod_podweak.png b/code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_pod_podweak.png new file mode 100644 index 0000000000000000000000000000000000000000..6bf2830f54dbe64ee37313602c8d42c4696a2e96 GIT binary patch literal 1103 zcmV-V1hD&wP)N=izutgJaXIZaGVKR!N7N=lfNl>h(# z>gedp$;p0xespwn0PO%;T3Sv{PMDaO)z#G^CMKtKApa@!yfg+Z4% zu|hx~6e+1K=hj+^Q@73K{U5Doac(04&a{6znJ!~_@V6WmjM!!Dvl-|7?|70XF%O=h z#dw+|NgDRxd3KQHVLnTeL$qKFJj3{dESrS{j^>GLL4mw*?I^&H8K09ymQZA99G)?S z*d__gFM{LQiIiEMNqG|HN~s7hwKkd2y7YUTD6Oih!qd-6yo z%TukT)~BWRc!0a{q~PPsXha}&qa`BH9s!LFsFnK!cta5wilCW#5LcDkgGzZgA~Xzp zKmxXOy(xcPf`_xlH17ncH|1{vQ_gV0idTUGy)kb^VV?zTA=)u#_${|a%0^0Kb9j$= zk+s%VWY)HrZ7d-2T%47*JTL8+GwMttY>AVBx048=Ah0qiH6m!J6W}t$$#7QaAbHQ( zM>zf02D5lh$%}yFQGtf}4#}$kqHjEB;2#p$Mqzt zw+isftLvL31eQ0~SC?MC>YPBg@^bdo*~^!Ye}gf4c=@L>zNY}#%jePb?(%;u_whLu z2;mZg6HQ~;cRowg^?=Vbufwqtm>jwlREny;H zYY4#PJ^@KyLtopm03r|qX`P(>sgsFY80r8a5W!f0Svvq_1?9fhFVNm@Hn&9vx4}-v zlLYd9UfkV%KMzH)-E6i6s*f|@a7J~IDDqhP-v0Qx%?mLtklqxc>7V_AQ3()qfI{?D zaECcI{=WbTG{)S=1n!LqmIq|6ICu#2hg}U35pc!9V+cP!*AQXb6$eit{NyPfegltB VQiSw!&g%dG002ovPDHLkV1krc@b>@! literal 0 HcmV?d00001 diff --git a/code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_robotic.png b/code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_robotic.png new file mode 100644 index 0000000000000000000000000000000000000000..27bd5354dec3db1bd7a72bae320a33770e547fd3 GIT binary patch literal 1061 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 mb=O1iv270CIQ$lA9)1C5B~PrL!x{?!0000h(# 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 adH4k|?_YPw<@jF!0000K1oSQv$L~wcYpx- z0Bme*Dk>_Gk&#bNPf<@>0NMZm&j0|w01*@v)YsoiN=g9A0Isa8IXO8^OiVvMK1)hU zn3R_n3&bo)gmS)r>eGwhK5vBRI#zKYHDg* zSXP69fpBeYTwGjRq4`_@0004WQchCV=-0C=2J zR&a84_w-Y6@%7{?OD!tS%+FJ>RWQ*r;NmRLOex6#a*U0*I5Sc+(=$pSoZ^zil2jm5 zNr{UyC9|j)q@Ig2ttc@!6~s2=QdV&Fa{-$O0Gj_84mqJ=L;wH+#z{m$R9J=WmThy| zFbv1-6bPl*v1g}tOE(C8+7h5+TOYpvC!1vG!(q$mZEtqHDMvW&Fa4qzSr%g-%{b?O zrx!($^LUS*^XSu$iedm4>A{BqFg&6Fqp}EBA7Di2W5&zl$uSwfCk#1w(u6V-4}_EA zgpOxZA>eNkVoK{$%8Xtqr9Ww zPAir006oMbA*C~|AOoSC5|DvP02C}hEyIV<9cG|00~dRsE=^biBNIAgs2QvQ0&Eq2 z#rn%DBy{Gqdjr5^qsvfC>;%I1q&%zXYbMR zzt-@SM3p=Pf}RC9mMW4L0A%kHHSiAsdK`KI4s3V(Gkrc^G!1K-#e7ca%jS|@HcLXk zy1uzx0AO)@bA6T6mrVdP%cRb}27CTW>EFN@-je!4nxd@(kEfU$u7dUe+}q(IQOK6%{rtXFa%kn zUozgb9Y~p;xjUkz>{^o`$l7!gT5gVj@z9oKXX=O`+qQ#l21hVJC;$crr><=e3HV~5 zIoXOFK(x}~Q{rWiro#+0rkKk>NNl}b7p(#=As(#n00?}A2w-affQdeUK(DT??I8d& zSixM71FXSdkXT^`hX7`60QlV5x87{lJ^*YKkBHgIdwzHK{el8)H=8Z@el<&lGn|7~ zJbQd^fBf7EzKRE=S3)+P{Q|=gfOG&tb}NKp&c*)+Ai!yTp99=$O^yd>4GsqnwEnQ0 uAu@n496VC;<9>#qZ8sb|QSwt_c=!z$!%bc;83o?}0000V=-0C=2JR&a84_w-Y6@%7{?OD!tS%+FJ>RWQ*r;NmRLOex6#a*U0* zI5Sc+(=$pSoZ^zil2jm5Nr{UyC9|j)q@Ig2ttc@!6~s2=QdV&Fa{-$O0Gj_84mqJ= zL;wH+a7jc#R9J=WmfddKFbswDXQi=g%C;gZZIZ@~n{-+G{?9kc#Rd#B8DPB`h7v|D z{2d-ywjv#+zUtpAtv|_)5f!(&){;V7O_yL`Tva(EaBr<&@qA^hb5=62-rGB#uTAY- zEk1#B-mH0nuB)mR=4eb+N&V!|G~!z}O(Q&@QunRa?Y+Pu1dwI|=8H4Hm?OlLBQiV;!5?=#E4>c6Q*P7qo*a=+0=I{&pLfjGd*6blZQb|W61 z`p(#j%_syaD;uoM)>B5{3@AJJtr(K@TDz*Qt3{12#EBV-M4kjpMkx0U38a2izJuew zq$VVO1Em5ToYIb^fDYIo^q-~>giV*Wkx(s0r~t;4tNqw1Lr_bM`w?)>%LGW zgI%RHzoUY_R@nP{l z+qB=QNW%6TOzHZDPPfY|vDFUWt|=k6nmpy3lzOIrcIZhE(K7~ZOF64=dv?=l2vP!T zxqLAPwfP8Vc>*TF{W1{yKOCe1ZuQ@EfE^0ypcDzjfU!U9-=+R{5{N^L_Gk&#bN zPf<@>5fl{E*WXG?O0KM|IXO8^OiVvMK1)hUn3ReGwhK5vBRI#zKYHDg*SXP69fpBeYTwGk5Az85i0004WQchC< zK<3zH0001GdQ@0+L}hbha%pgMX>V=-0C=2JR&a84_w-Y6@%7{?OD!tS%+FJ>RWQ*r z;NmRLOex6#a*U0*I5Sc+(=$pSoZ^zil2jm5Nr{UyC9|j)q@Ig2ttc@!6~s2=QdV&F za{-$O0Gj_84mqJ=L;wH+tVu*cR9J=WmThy|Fbsh07#gtSm(+9+`nDy3j%|JU|G#dM zL+Or4POtm2>rGtYxJPvM)#QOx1RW(@U3G2;Xm zW#T0(IPwdIFCaq}lC3`)fG>E1%rEn>h+Mr`YOR#gddYKROomt1y3$!&(HTo)jrShj zY3_6ttajRlN;{exU)Qxa9Jke_wc6Ut$`TpCQ#~3eE}Vr9w2f9n2bK_6Sb*B3KZZx_ zz+ne*oPpfeO5eu(bO{6((ZxRm_-)MJ1Y?f(kvs|H_>Mvzj)FjN zNGMfsT1Ty2P$eM%9y~^%IBs*fszP;Dg)b{PzM+mBgXH+Efh*J6LI+V0H^h-^j$^=H z!Hq=jv-fcPUpx2}Vwb!M63+^vpf<@#0NqDo5Bx)diG)c(gc#mF#@Fjj(}$v;g@oJ`YPgL8ohAqfQ_{` zz&WUw+2i~0!2zQVgLXD07*qoM6N<$g3*x6Bme*a literal 0 HcmV?d00001 diff --git a/code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_vox.png b/code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_vox.png new file mode 100644 index 0000000000000000000000000000000000000000..5085027315010266ceca55b57aa71175e5881f79 GIT binary patch literal 1263 zcmV0E&u=0HgpbD=Wmr!~jJA04e~ktgJaXIZaGV zKR!N7N=lfNl>h(#>gedp$;p0xespwn0H6Q>!vFxi006Q8T3T98PEND4vjB|%0Av7| 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 M07*qoM6N<$f>qA36951J literal 0 HcmV?d00001 diff --git a/modular_skyrat/master_files/code/datums/outfits.dm b/modular_skyrat/master_files/code/datums/outfits.dm new file mode 100644 index 00000000000..769348fccb7 --- /dev/null +++ b/modular_skyrat/master_files/code/datums/outfits.dm @@ -0,0 +1,3 @@ +/datum/outfit + /// Bitflag-based variable to store which parts of the uniform have been modified by the loadout, to avoid them being overriden again. + var/modified_outfit_slots = NONE diff --git a/modular_skyrat/modules/loadouts/loadout_items/under/loadout_datum_under.dm b/modular_skyrat/modules/loadouts/loadout_items/under/loadout_datum_under.dm index 2de44486064..c223f84d1dd 100644 --- a/modular_skyrat/modules/loadouts/loadout_items/under/loadout_datum_under.dm +++ b/modular_skyrat/modules/loadouts/loadout_items/under/loadout_datum_under.dm @@ -24,6 +24,7 @@ GLOBAL_LIST_INIT(loadout_miscunders, generate_loadout_items(/datum/loadout_item/ outfit.uniform = item_path else outfit.uniform = item_path + outfit.modified_outfit_slots |= ITEM_SLOT_ICLOTHING /* * JUMPSUITS diff --git a/tgstation.dme b/tgstation.dme index e931ea42ff1..7031f7d2d50 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -4627,6 +4627,7 @@ #include "modular_skyrat\master_files\code\datums\ai_laws.dm" #include "modular_skyrat\master_files\code\datums\emotes.dm" #include "modular_skyrat\master_files\code\datums\ert.dm" +#include "modular_skyrat\master_files\code\datums\outfits.dm" #include "modular_skyrat\master_files\code\datums\components\fullauto.dm" #include "modular_skyrat\master_files\code\datums\components\shielded_suit.dm" #include "modular_skyrat\master_files\code\datums\id_trim\jobs.dm"