From b5e095e380e729793628d254bb441f51ecdb046b Mon Sep 17 00:00:00 2001 From: Waterpig <49160555+Majkl-J@users.noreply.github.com> Date: Tue, 28 Nov 2023 03:31:30 +0100 Subject: [PATCH] [MODULAR] Refactors (hopefully) all borg modular changes into one module, adds raptor borgs (#777) ## About The Pull Request Originally I was supposed to only add raptor borgs, but I am simply too insane to let this shitcode slide. Moves most if not all borg modular changes into one module folder because by god these were spread out over like 8 files. Improves modularity a bit by moving some borg related bubber edits on skyrat into our modular files. Adds raptor borgs ## Why It's Good For The Game Modularity good. Code organizing good. https://en.wikipedia.org/wiki/Technical_debt Also new borg sprites are cool, I guess. See icondiff bot for those ## Changelog :cl: image: New borg sprites: Raptor refactor: Moved most if not all bubber borg code into one modular folder /:cl: --- .../~skyrat_defines/robot_defines.dm | 1 - .../~~bubber_defines/robot_defines.dm | 26 ++++- .../modules/borgs/code/robot_model.dm | 1 - .../code/modules/altborgs/code/robot_model.dm | 43 --------- .../mob/living/silicon/robot/robot_model.dm | 6 -- .../borgs/code}/robot_defines.dm | 2 +- .../{cargoborg => borgs}/code/robot_items.dm | 49 ++++++++++ .../modules/borgs/code/robot_model.dm | 89 ++++++++++++++++++ .../borgs}/code/robot_upgrade.dm | 0 .../borgs/sprites}/tallrobot_bluesec.dmi | Bin .../borgs/sprites}/widerobot_cc.dmi | Bin .../modules/borgs/sprites/widerobot_eng.dmi | Bin 0 -> 3819 bytes .../modules/borgs/sprites/widerobot_jani.dmi | Bin 0 -> 3827 bytes .../modules/borgs/sprites/widerobot_med.dmi | Bin 0 -> 4118 bytes .../modules/borgs/sprites/widerobot_mine.dmi | Bin 0 -> 3843 bytes .../modules/borgs/sprites/widerobot_sec.dmi | Bin 0 -> 2832 bytes .../modules/borgs/sprites/widerobot_serv.dmi | Bin 0 -> 3860 bytes .../borgs/sprites}/widerobot_syndie.dmi | Bin tgstation.dme | 9 +- 19 files changed, 168 insertions(+), 58 deletions(-) delete mode 100644 modular_zubbers/code/modules/altborgs/code/robot_model.dm delete mode 100644 modular_zubbers/code/modules/mob/living/silicon/robot/robot_model.dm rename modular_zubbers/{code/modules/mob/living/silicon/robot => modules/borgs/code}/robot_defines.dm (92%) rename modular_zubbers/modules/{cargoborg => borgs}/code/robot_items.dm (50%) create mode 100644 modular_zubbers/modules/borgs/code/robot_model.dm rename modular_zubbers/{code/modules/altborgs => modules/borgs}/code/robot_upgrade.dm (100%) rename modular_zubbers/{altborgs/tallborg => modules/borgs/sprites}/tallrobot_bluesec.dmi (100%) rename modular_zubbers/{icons/mob/silicon => modules/borgs/sprites}/widerobot_cc.dmi (100%) create mode 100644 modular_zubbers/modules/borgs/sprites/widerobot_eng.dmi create mode 100644 modular_zubbers/modules/borgs/sprites/widerobot_jani.dmi create mode 100644 modular_zubbers/modules/borgs/sprites/widerobot_med.dmi create mode 100644 modular_zubbers/modules/borgs/sprites/widerobot_mine.dmi create mode 100644 modular_zubbers/modules/borgs/sprites/widerobot_sec.dmi create mode 100644 modular_zubbers/modules/borgs/sprites/widerobot_serv.dmi rename modular_zubbers/{icons/mob/silicon => modules/borgs/sprites}/widerobot_syndie.dmi (100%) diff --git a/code/__DEFINES/~skyrat_defines/robot_defines.dm b/code/__DEFINES/~skyrat_defines/robot_defines.dm index af29c2aaf90..8dde8079fb6 100644 --- a/code/__DEFINES/~skyrat_defines/robot_defines.dm +++ b/code/__DEFINES/~skyrat_defines/robot_defines.dm @@ -34,7 +34,6 @@ #define CYBORG_ICON_SEC 'modular_skyrat/modules/borgs/icons/robots_sec.dmi' #define CYBORG_ICON_SEC_WIDE 'modular_skyrat/modules/borgs/icons/widerobot_sec.dmi' #define CYBORG_ICON_SEC_TALL 'modular_skyrat/modules/borgs/icons/tallrobot_sec.dmi' -#define CYBORG_ICON_SEC_TALL_ALT 'modular_zubbers/altborgs/tallborg/tallrobot_bluesec.dmi' // BUBBER EDIT ADDITION #define CYBORG_ICON_ENG 'modular_skyrat/modules/borgs/icons/robots_eng.dmi' #define CYBORG_ICON_ENG_WIDE 'modular_skyrat/modules/borgs/icons/widerobot_eng.dmi' diff --git a/code/__DEFINES/~~bubber_defines/robot_defines.dm b/code/__DEFINES/~~bubber_defines/robot_defines.dm index a5b611ab3c8..58ecc626dde 100644 --- a/code/__DEFINES/~~bubber_defines/robot_defines.dm +++ b/code/__DEFINES/~~bubber_defines/robot_defines.dm @@ -1 +1,25 @@ -#define CYBORG_ICON_CENTCOM_WIDE 'modular_zubbers/icons/mob/silicon/widerobot_cc.dmi' +// Bubberstation custom borg sprites, add new defines in line with code\__DEFINES\~skyrat_defines\robot_defines.dm format +// To add new sprites, see modular_zubbers\modules\borgs and the respective dmi +#define CYBORG_ICON_CENTCOM_WIDE_BUBBER 'modular_zubbers/modules/borgs/sprites/widerobot_cc.dmi' + +#define CYBORG_ICON_MED_WIDE_BUBBER 'modular_zubbers/modules/borgs/sprites/widerobot_med.dmi' + +#define CYBORG_ICON_CARGO_WIDE_BUBBER 'modular_zubbers/modules/borgs/sprites/widerobot_cargo.dmi' + +#define CYBORG_ICON_SEC_WIDE_BUBBER 'modular_zubbers/modules/borgs/sprites/widerobot_sec.dmi' +#define CYBORG_ICON_SEC_TALL_BUBBER 'modular_zubbers/modules/borgs/sprites/tallrobot_bluesec.dmi' + +#define CYBORG_ICON_ENG_WIDE_BUBBER 'modular_zubbers/modules/borgs/sprites/widerobot_eng.dmi' + +#define CYBORG_ICON_PEACEKEEPER_WIDE_BUBBER 'modular_zubbers/modules/borgs/sprites/widerobot_pk.dmi' + +#define CYBORG_ICON_SERVICE_WIDE_BUBBER 'modular_zubbers/modules/borgs/sprites/widerobot_serv.dmi' + +#define CYBORG_ICON_MINING_WIDE_BUBBER 'modular_zubbers/modules/borgs/sprites/widerobot_mine.dmi' + +#define CYBORG_ICON_JANI_WIDE_BUBBER 'modular_zubbers/modules/borgs/sprites/widerobot_jani.dmi' + +#define CYBORG_ICON_SYNDIE_WIDE_BUBBER 'modular_zubbers/modules/borgs/sprites/widerobot_syndie.dmi' + + +#define CYBORG_ICON_TYPE_RAPTOR "raptor" diff --git a/modular_skyrat/modules/borgs/code/robot_model.dm b/modular_skyrat/modules/borgs/code/robot_model.dm index 5c98ce21299..35d6bff3448 100644 --- a/modular_skyrat/modules/borgs/code/robot_model.dm +++ b/modular_skyrat/modules/borgs/code/robot_model.dm @@ -301,7 +301,6 @@ "K4T" = list(SKIN_ICON_STATE = "k4tsec", SKIN_ICON = CYBORG_ICON_SEC_TALL, SKIN_FEATURES = list(R_TRAIT_UNIQUEWRECK, R_TRAIT_UNIQUETIP, R_TRAIT_TALL), SKIN_HAT_OFFSET = 15), "NiKA" = list(SKIN_ICON_STATE = "fmekasec", SKIN_ICON = CYBORG_ICON_SEC_TALL, SKIN_FEATURES = list(R_TRAIT_UNIQUEWRECK, R_TRAIT_UNIQUETIP, R_TRAIT_TALL), SKIN_HAT_OFFSET = 15), "NiKO" = list(SKIN_ICON_STATE = "mmekasec", SKIN_ICON = CYBORG_ICON_SEC_TALL, SKIN_FEATURES = list(R_TRAIT_UNIQUEWRECK, R_TRAIT_UNIQUETIP, R_TRAIT_TALL), SKIN_HAT_OFFSET = 15), - "Meka (Alt)" = list(SKIN_ICON_STATE = "mekasecalt", SKIN_ICON = CYBORG_ICON_SEC_TALL_ALT, SKIN_FEATURES = list(R_TRAIT_UNIQUEWRECK, R_TRAIT_UNIQUETIP, R_TRAIT_TALL), SKIN_HAT_OFFSET = 15), // BUBBER EDIT ADDITION "Default - Treads" = list(SKIN_ICON_STATE = "sec-tread", SKIN_LIGHT_KEY = "sec", SKIN_ICON = CYBORG_ICON_SEC), "Sleek" = list(SKIN_ICON_STATE = "sleeksec", SKIN_ICON = CYBORG_ICON_SEC), "Marina" = list(SKIN_ICON_STATE = "marinasec", SKIN_ICON = CYBORG_ICON_SEC), diff --git a/modular_zubbers/code/modules/altborgs/code/robot_model.dm b/modular_zubbers/code/modules/altborgs/code/robot_model.dm deleted file mode 100644 index 1fe573c0575..00000000000 --- a/modular_zubbers/code/modules/altborgs/code/robot_model.dm +++ /dev/null @@ -1,43 +0,0 @@ -/obj/item/robot_model/centcom //Sprites by QuartzAdachi - name = "Central Command" - basic_modules = list( - /obj/item/assembly/flash/cyborg, - /obj/item/pen/cyborg, - /obj/item/clipboard/cyborg, - /obj/item/hand_labeler/cyborg, - /obj/item/stamp/centcom, - /obj/item/borg/paperplane_crossbow, - /obj/item/weldingtool/mini, - /obj/item/megaphone/command, - /obj/item/paint/anycolor/cyborg, - /obj/item/soap/nanotrasen/cyborg, - /obj/item/borg/cyborghug/medical, - /obj/item/borg/lollipop, - /obj/item/reagent_containers/borghypo/centcom, - /obj/item/extinguisher/mini, - /obj/item/borg/apparatus/paper_manipulator, - /obj/item/screwdriver/cyborg, - /obj/item/crowbar/cyborg, - /obj/item/picket_sign/cyborg, - /obj/item/borg/stun, - ) - radio_channels = list(RADIO_CHANNEL_CENTCOM, RADIO_CHANNEL_COMMAND) - model_traits = list(TRAIT_PUSHIMMUNE, TRAIT_NOFLASH) - emag_modules = list( - /obj/item/reagent_containers/spray/cyborg_lube, - /obj/item/paperplane/syndicate/hardlight - ) - special_light_key = null - borg_skins = list( - "Vale" = list(SKIN_ICON_STATE = "valecc", SKIN_ICON = CYBORG_ICON_CENTCOM_WIDE, SKIN_FEATURES = list(R_TRAIT_UNIQUEWRECK, R_TRAIT_WIDE)) - ) - -/obj/item/robot_model/centcom/rebuild_modules() - ..() - var/mob/living/silicon/robot/cyborg = loc - cyborg.faction |= ROLE_DEATHSQUAD //You're part of CENTCOM now - -/obj/item/robot_model/syndicate/remove_module(obj/item/removed_module, delete_after) - ..() - var/mob/living/silicon/robot/cyborg = loc - cyborg.faction -= ROLE_DEATHSQUAD //You're no longer part of CENTCOM diff --git a/modular_zubbers/code/modules/mob/living/silicon/robot/robot_model.dm b/modular_zubbers/code/modules/mob/living/silicon/robot/robot_model.dm deleted file mode 100644 index 180c39cfd2a..00000000000 --- a/modular_zubbers/code/modules/mob/living/silicon/robot/robot_model.dm +++ /dev/null @@ -1,6 +0,0 @@ -/obj/item/robot_model/syndicatejack/Initialize() - .=..() - borg_skins |= list( - "Vale" = list(SKIN_ICON_STATE = "vale", SKIN_ICON = 'modular_zubbers/icons/mob/silicon/widerobot_syndie.dmi', SKIN_FEATURES = list(R_TRAIT_UNIQUEWRECK, R_TRAIT_WIDE)), - "Pupdozer" = list(SKIN_ICON_STATE = "pupdozer", SKIN_ICON = 'modular_zubbers/icons/mob/silicon/widerobot_syndie.dmi', SKIN_FEATURES = list(R_TRAIT_WIDE)), - ) diff --git a/modular_zubbers/code/modules/mob/living/silicon/robot/robot_defines.dm b/modular_zubbers/modules/borgs/code/robot_defines.dm similarity index 92% rename from modular_zubbers/code/modules/mob/living/silicon/robot/robot_defines.dm rename to modular_zubbers/modules/borgs/code/robot_defines.dm index ec5cdee97bb..96355998b99 100644 --- a/modular_zubbers/code/modules/mob/living/silicon/robot/robot_defines.dm +++ b/modular_zubbers/modules/borgs/code/robot_defines.dm @@ -1,5 +1,5 @@ /mob/living/silicon/robot/model/centcom - icon = 'modular_zubbers/icons/mob/silicon/widerobot_cc.dmi' + icon = CYBORG_ICON_CENTCOM_WIDE_BUBBER icon_state = "valecc" faction = list(ROLE_DEATHSQUAD) req_access = list(ACCESS_CENT_GENERAL) diff --git a/modular_zubbers/modules/cargoborg/code/robot_items.dm b/modular_zubbers/modules/borgs/code/robot_items.dm similarity index 50% rename from modular_zubbers/modules/cargoborg/code/robot_items.dm rename to modular_zubbers/modules/borgs/code/robot_items.dm index e5290be5069..77951ebae13 100644 --- a/modular_zubbers/modules/cargoborg/code/robot_items.dm +++ b/modular_zubbers/modules/borgs/code/robot_items.dm @@ -47,3 +47,52 @@ log_silicon("[user] unloaded [extracted_item] onto [chute] ([AREACOORD(chute)]).") in_use = FALSE return +/** + * Cargoborg specific items + * + * Refer to modular_skyrat/modules/cargoborg/code/robot_items.dm for original definitions + */ + +// Override the mail clamp to be able to dispense into mail chutes +/obj/item/borg/hydraulic_clamp/mail/pre_attack(atom/attacked_atom, mob/living/silicon/robot/user, params) + var/obj/machinery/disposal/delivery_chute/chute = attacked_atom + if(istype(attacked_atom, /obj/structure/plasticflaps)) // If we attacked flaps, try locating the chute under them + var/obj/structure/plasticflaps/flaps = attacked_atom + chute = locate(/obj/machinery/disposal/delivery_chute) in flaps.loc.contents + if(!istype(chute)) // This is one way to say we didn't attack a chute or flaps over a chute + return ..() + + if(!istype(user) || !user.Adjacent(attacked_atom) || !COOLDOWN_FINISHED(src, clamp_cooldown) || in_use) + return + + // Not enough charge + if(user?.cell.charge < charge_cost) + balloon_alert(user, "low charge!") + return + + user.cell.use(charge_cost) + in_use = TRUE + COOLDOWN_START(src, clamp_cooldown, cooldown_duration) + + if(!contents.len) + in_use = FALSE + return + + var/extraction_index = selected_item_index ? selected_item_index : contents.len + var/atom/movable/extracted_item = contents[extraction_index] + selected_item_index = 0 + + if (unloading_time > 0.5 SECONDS) // Chat spam reduction + balloon_alert(user, "unloading") + playsound(src, clamp_sound, clamp_sound_volume, FALSE, -5) + COOLDOWN_START(src, clamp_cooldown, cooldown_duration) + + if(!do_after(user, unloading_time, attacked_atom)) + in_use = FALSE + return + + chute.place_item_in_disposal(extracted_item) + visible_message(span_notice("[src.loc] unloads [extracted_item] from [src].")) + log_silicon("[user] unloaded [extracted_item] onto [chute] ([AREACOORD(chute)]).") + in_use = FALSE + return diff --git a/modular_zubbers/modules/borgs/code/robot_model.dm b/modular_zubbers/modules/borgs/code/robot_model.dm new file mode 100644 index 00000000000..c2109f43864 --- /dev/null +++ b/modular_zubbers/modules/borgs/code/robot_model.dm @@ -0,0 +1,89 @@ +/obj/item/robot_model/centcom //Sprites by QuartzAdachi + name = "Central Command" + basic_modules = list( + /obj/item/assembly/flash/cyborg, + /obj/item/pen/cyborg, + /obj/item/clipboard/cyborg, + /obj/item/hand_labeler/cyborg, + /obj/item/stamp/centcom, + /obj/item/borg/paperplane_crossbow, + /obj/item/weldingtool/mini, + /obj/item/megaphone/command, + /obj/item/paint/anycolor/cyborg, + /obj/item/soap/nanotrasen/cyborg, + /obj/item/borg/cyborghug/medical, + /obj/item/borg/lollipop, + /obj/item/reagent_containers/borghypo/centcom, + /obj/item/extinguisher/mini, + /obj/item/borg/apparatus/paper_manipulator, + /obj/item/screwdriver/cyborg, + /obj/item/crowbar/cyborg, + /obj/item/picket_sign/cyborg, + /obj/item/borg/stun, + ) + radio_channels = list(RADIO_CHANNEL_CENTCOM, RADIO_CHANNEL_COMMAND) + model_traits = list(TRAIT_PUSHIMMUNE, TRAIT_NOFLASH) + emag_modules = list( + /obj/item/reagent_containers/spray/cyborg_lube, + /obj/item/paperplane/syndicate/hardlight + ) + special_light_key = null + borg_skins = list( + "Vale" = list(SKIN_ICON_STATE = "valecc", SKIN_ICON = CYBORG_ICON_CENTCOM_WIDE_BUBBER, SKIN_FEATURES = list(R_TRAIT_UNIQUEWRECK, R_TRAIT_WIDE)) + ) + +/obj/item/robot_model/centcom/rebuild_modules() + ..() + var/mob/living/silicon/robot/cyborg = loc + cyborg.faction |= ROLE_DEATHSQUAD //You're part of CENTCOM now + +/obj/item/robot_model/syndicate/remove_module(obj/item/removed_module, delete_after) + ..() + var/mob/living/silicon/robot/cyborg = loc + cyborg.faction -= ROLE_DEATHSQUAD //You're no longer part of CENTCOM + + +/* BUBBER SPRITE ADDITIONS BELOW */ +/obj/item/robot_model/medical/Initialize(mapload) + . = ..() + borg_skins |= list( + "Raptor" = list(SKIN_ICON_STATE = CYBORG_ICON_TYPE_RAPTOR, SKIN_ICON = CYBORG_ICON_MED_WIDE_BUBBER, SKIN_FEATURES = list(R_TRAIT_UNIQUEWRECK, R_TRAIT_WIDE)) + ) + +/obj/item/robot_model/engineering/Initialize(mapload) + . = ..() + borg_skins |= list( + "Raptor" = list(SKIN_ICON_STATE = CYBORG_ICON_TYPE_RAPTOR, SKIN_ICON = CYBORG_ICON_ENG_WIDE_BUBBER, SKIN_FEATURES = list(R_TRAIT_UNIQUEWRECK, R_TRAIT_WIDE)) + ) + +/obj/item/robot_model/janitor/Initialize(mapload) + . = ..() + borg_skins |= list( + "Raptor" = list(SKIN_ICON_STATE = CYBORG_ICON_TYPE_RAPTOR, SKIN_ICON = CYBORG_ICON_JANI_WIDE_BUBBER, SKIN_FEATURES = list(R_TRAIT_UNIQUEWRECK, R_TRAIT_WIDE)) + ) + +/obj/item/robot_model/miner/Initialize(mapload) + . = ..() + borg_skins |= list( + "Raptor" = list(SKIN_ICON_STATE = CYBORG_ICON_TYPE_RAPTOR, SKIN_ICON = CYBORG_ICON_MINING_WIDE_BUBBER, SKIN_FEATURES = list(R_TRAIT_UNIQUEWRECK, R_TRAIT_WIDE)) + ) + +/obj/item/robot_model/security/Initialize() + . = ..() + borg_skins |= list( + "Meka - Bluesec" = list(SKIN_ICON_STATE = "mekasecalt", SKIN_ICON = CYBORG_ICON_SEC_TALL_BUBBER, SKIN_FEATURES = list(R_TRAIT_UNIQUEWRECK, R_TRAIT_UNIQUETIP, R_TRAIT_TALL), SKIN_HAT_OFFSET = 15), + "Raptor" = list(SKIN_ICON_STATE = CYBORG_ICON_TYPE_RAPTOR, SKIN_ICON = CYBORG_ICON_SEC_WIDE_BUBBER, SKIN_FEATURES = list(R_TRAIT_UNIQUEWRECK, R_TRAIT_WIDE)), + ) + +/obj/item/robot_model/service/Initialize(mapload) + . = ..() + borg_skins |= list( + "Raptor" = list(SKIN_ICON_STATE = CYBORG_ICON_TYPE_RAPTOR, SKIN_ICON = CYBORG_ICON_SERVICE_WIDE_BUBBER, SKIN_FEATURES = list(R_TRAIT_UNIQUEWRECK, R_TRAIT_WIDE)) + ) + +/obj/item/robot_model/syndicatejack/Initialize() + . = ..() + borg_skins |= list( + "Vale" = list(SKIN_ICON_STATE = "vale", SKIN_ICON = CYBORG_ICON_SYNDIE_WIDE_BUBBER, SKIN_FEATURES = list(R_TRAIT_UNIQUEWRECK, R_TRAIT_WIDE)), + "Pupdozer" = list(SKIN_ICON_STATE = "pupdozer", SKIN_ICON = CYBORG_ICON_SYNDIE_WIDE_BUBBER, SKIN_FEATURES = list(R_TRAIT_WIDE)), + ) diff --git a/modular_zubbers/code/modules/altborgs/code/robot_upgrade.dm b/modular_zubbers/modules/borgs/code/robot_upgrade.dm similarity index 100% rename from modular_zubbers/code/modules/altborgs/code/robot_upgrade.dm rename to modular_zubbers/modules/borgs/code/robot_upgrade.dm diff --git a/modular_zubbers/altborgs/tallborg/tallrobot_bluesec.dmi b/modular_zubbers/modules/borgs/sprites/tallrobot_bluesec.dmi similarity index 100% rename from modular_zubbers/altborgs/tallborg/tallrobot_bluesec.dmi rename to modular_zubbers/modules/borgs/sprites/tallrobot_bluesec.dmi diff --git a/modular_zubbers/icons/mob/silicon/widerobot_cc.dmi b/modular_zubbers/modules/borgs/sprites/widerobot_cc.dmi similarity index 100% rename from modular_zubbers/icons/mob/silicon/widerobot_cc.dmi rename to modular_zubbers/modules/borgs/sprites/widerobot_cc.dmi diff --git a/modular_zubbers/modules/borgs/sprites/widerobot_eng.dmi b/modular_zubbers/modules/borgs/sprites/widerobot_eng.dmi new file mode 100644 index 0000000000000000000000000000000000000000..659cd3ccac2196baa81a497f2c17b68d5f76501b GIT binary patch literal 3819 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 Q@@oX3F4$W%n)@XE2Qzsz9{>OV literal 0 HcmV?d00001 diff --git a/modular_zubbers/modules/borgs/sprites/widerobot_jani.dmi b/modular_zubbers/modules/borgs/sprites/widerobot_jani.dmi new file mode 100644 index 0000000000000000000000000000000000000000..45c4746ad8d23193278c06ba4853322e266194a5 GIT binary patch literal 3827 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 WCgN7pa>wDn5nyU)X;7_)kN+3MW+v7E literal 0 HcmV?d00001 diff --git a/modular_zubbers/modules/borgs/sprites/widerobot_med.dmi b/modular_zubbers/modules/borgs/sprites/widerobot_med.dmi new file mode 100644 index 0000000000000000000000000000000000000000..e34b32356fd9313b5ee2cd8887c5d988098f33ec GIT binary patch literal 4118 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 literal 0 HcmV?d00001 diff --git a/modular_zubbers/modules/borgs/sprites/widerobot_serv.dmi b/modular_zubbers/modules/borgs/sprites/widerobot_serv.dmi new file mode 100644 index 0000000000000000000000000000000000000000..d2d31751fa88e6464e8271564a1ffd28f7d6543d GIT binary patch literal 3860 zcmZWsc{CL4_aDQ^zGj)Rjb$tudm#oh5=PdngQ79EY$ar?F(gqjC^ELFcq@g;T7!{H zWJwgVP9mfpj2ikKaGfz0c>|=YGz)_qq3;o9XOmBghBg0{{SmXj`kZ000N_ zQ2)lmd3a_glms7&P-lC$(^M+;P?eIBfVOS~sVygF76E^+M!*wIUT4^`m^5eiUp^iN&8O%%nvm0@wN4?>oW7;`@NPND5uXEy0QIz>?fj_q;eQ+VXXS3nFC^ zFb;5?Owmefj^K#9F)08!weNl(MjY3CDe5JXQ9ymB#69qP%k**|D8Q9QUz(aC>oihk9wM{*uC?2z7C3bt z4rc0f>`$aq-$DshZEGhaiDHCqSs=fXZrgxg7!i4;85&YN@t}Q%DC27M;>~;9-YcOa z|C}mSV&thO5FS5>#joa^<&)?F5Nbng*&g{b%yIp;s|?Mjlg; zcpprXUH+!WOI0JG70`G6|=cUx{%xrZ_ zH2m1r3fm$sAXwzQ+yuQ_Or0c_-LU^_aYBCc^QWwYi9AqKsN-L8fz>lB+zw{OZ!efz z&pCKpm3aMVul;#sX|C151@0L!{5+sKpq6<o>nDxMD|X7+BYD{3U^nCKot~i&uLP|y*bGkZ_qk25k$Lzfg@KeCD>Uk#a7ftAugrz2hLcHyLBm=tc(Sszqu-qenfH&*8~_K07@dm;S)yyo}x*gg<76ZvyFpTf1JTCY;K9@5SMV)lHC=s)M}@n2@(&Z&5!L)|775KXYEaA-C#)}>q4@X<;}xhY zu<nrWi^u~>NTJ{OXsIjxk} z$~GhA(b_GxZw6pSnsqfJ&OuP!`m|rgO8fNf4mpBx>H4JeW>ID-l*Di8M5n4~^$m}b zA3-QZA715ltq;W#Orm3xe7v zyW+4vFDr~oMG5b#Berh%UWMs6m#=y!xdF5nPHPFC;1zg$7?|E_KSEwbem~1b=hm&9vm?ZR_h570!oKINegzKt5Spvz*^z_hJ^}JL}Wf z`aGBkoh^7A0ebUX)!St??u&1fmaj|Phn5bHb&w$~!H>4Ovim1AeDB&hPxNxxO;_5% z{VW|(QZ5{fp~H_&y9eyFf|-S0>c%0xU%HX zAFdzV*?V~>P%JQSC_%n=7tA~-dgk#(Uj4gG{DF}4o|fj*J^7%(*2u}g=;>74lq>IC z%ok&_mYKob$6#hA;(|$b@~ny*t&NgmtUs9V3}#}*v*-KM{)Ikg(xQJ_*WF3FU?l&g zRR^WN8pzoj?AB)dpqvSsDtFa6@|(6muKTg}mUvsyRyt+~D3L@7=WTgjs<3NAM^0yf9ivo>?oXhrpj z|GEvS{Kd*pnZ6vE%jc0%81in>p%ZTF&H$ZtQrn7H3RzNdy&?TIh%w{d-&+p~tSqTZJ_eLRYzOJVQFQNLIz{m9M%{H@I0?Re z%gYeM5Upo$+^R?Z0xnAFZa{9U@SDR6>?Mf_VyaLJqA&gpB2gX;bWMO_jF{I@;GC#IintV zfea=2yUx4!Wt>pN+mv-vWwH{hy_5BA^FhT*XMBpM&K`YV3L~yTC)I{=olK^jY!UKD z&bYGVPE=C2XVkzj4)r*T_npOiit?r4lMPZ7m|yuj4(;AlIgR+8++AUPDq>-)k1Obn zIN_j&!7){NiVPi}wHnJsX`Zx|Y51I69M^L$Y3~a=iiPekmlEntHB@;Af!E%^0P9aG z5T8|bD-M@i;9uuI2*p&!1Nciy;ql28_oaWuyjeI6FE|)@)u`*66wiy+ Rhf5{^ecI9LrKNxBe*pePNe=)3 literal 0 HcmV?d00001 diff --git a/modular_zubbers/icons/mob/silicon/widerobot_syndie.dmi b/modular_zubbers/modules/borgs/sprites/widerobot_syndie.dmi similarity index 100% rename from modular_zubbers/icons/mob/silicon/widerobot_syndie.dmi rename to modular_zubbers/modules/borgs/sprites/widerobot_syndie.dmi diff --git a/tgstation.dme b/tgstation.dme index 41f20354efb..a4e07eb97fb 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -8024,8 +8024,6 @@ #include "modular_zubbers\code\game\turf\space.dm" #include "modular_zubbers\code\modules\_defines.dm" #include "modular_zubbers\code\modules\admin\verbs\debug.dm" -#include "modular_zubbers\code\modules\altborgs\code\robot_model.dm" -#include "modular_zubbers\code\modules\altborgs\code\robot_upgrade.dm" #include "modular_zubbers\code\modules\alternative_job_titles\code\alt_job_titles.dm" #include "modular_zubbers\code\modules\antagonists\ashwalker\ashwalker.dm" #include "modular_zubbers\code\modules\asset_cache\assets\arcade.dm" @@ -8119,8 +8117,6 @@ #include "modular_zubbers\code\modules\mob\living\basic\trooper\nanotrasen.dm" #include "modular_zubbers\code\modules\mob\living\carbon\human\human.dm" #include "modular_zubbers\code\modules\mob\living\carbon\human\species_types\shadekin.dm" -#include "modular_zubbers\code\modules\mob\living\silicon\robot\robot_defines.dm" -#include "modular_zubbers\code\modules\mob\living\silicon\robot\robot_model.dm" #include "modular_zubbers\code\modules\mob\living\simple_animal\guardian\guardian.dm" #include "modular_zubbers\code\modules\mob\living\simple_animal\hostile\megafauna\drake.dm" #include "modular_zubbers\code\modules\mod\mod_ai.dm" @@ -8192,7 +8188,10 @@ #include "modular_zubbers\master_files\code\modules\research\designs\weapon_designs.dm" #include "modular_zubbers\modules\ashwalkers\code\effects\ash_rituals.dm" #include "modular_zubbers\modules\automapper\code\area_spawn_entries.dm" -#include "modular_zubbers\modules\cargoborg\code\robot_items.dm" +#include "modular_zubbers\modules\borgs\code\robot_defines.dm" +#include "modular_zubbers\modules\borgs\code\robot_items.dm" +#include "modular_zubbers\modules\borgs\code\robot_model.dm" +#include "modular_zubbers\modules\borgs\code\robot_upgrade.dm" #include "modular_zubbers\modules\clothing\head\helmet.dm" #include "modular_zubbers\modules\customization\modules\mob\dead\new_player\sprite_accessories\skrell_hair.dm" #include "modular_zubbers\modules\customization\modules\mob\living\carbon\human\species\akula.dm"