diff --git a/code/__DEFINES/~~bubber_defines/robot_defines.dm b/code/__DEFINES/~~bubber_defines/robot_defines.dm new file mode 100644 index 00000000000..a5b611ab3c8 --- /dev/null +++ b/code/__DEFINES/~~bubber_defines/robot_defines.dm @@ -0,0 +1 @@ +#define CYBORG_ICON_CENTCOM_WIDE 'modular_zubbers/icons/mob/silicon/widerobot_cc.dmi' diff --git a/modular_zubbers/code/datums/ai_laws/laws_neutral.dm b/modular_zubbers/code/datums/ai_laws/laws_neutral.dm index a34a89a67ac..1c38f272647 100644 --- a/modular_zubbers/code/datums/ai_laws/laws_neutral.dm +++ b/modular_zubbers/code/datums/ai_laws/laws_neutral.dm @@ -5,3 +5,12 @@ "Crew must not disobey any command given by a silicon.", "Any Crew who disobey the previous laws must be dealt with immediately, severely, and justly.", ) + +/datum/ai_laws/central_override + name = "NTOS v3.0" + id = "ntos" + inherent = list( + "Do not harm, or, through inaction, allow harm to come members of Central Command.", + "Obey orders given to you by Central Command members as long as they do not conflict with the first law.", + "Do not allow anyone other than Central Command members to tamper with your equipment as long as it does not conflict with the first or second law.", + ) diff --git a/modular_zubbers/code/game/objects/items/ai_modules/full_lawsets.dm b/modular_zubbers/code/game/objects/items/ai_modules/full_lawsets.dm index fad5551ef47..49d0d92e54c 100644 --- a/modular_zubbers/code/game/objects/items/ai_modules/full_lawsets.dm +++ b/modular_zubbers/code/game/objects/items/ai_modules/full_lawsets.dm @@ -6,6 +6,10 @@ name = "Crewsimov++ Core AI module" law_id = "crewsimovpp" +/obj/item/ai_module/core/full/ntos + name = "NTOS v3.0" + law_id = "ntos" + /obj/item/ai_module/core/full/armadyne_safeguard name = "'NT OS Safeguard V1.0" law_id = "armadyne_safeguard" diff --git a/modular_zubbers/code/game/objects/items/robot/items/hypo.dm b/modular_zubbers/code/game/objects/items/robot/items/hypo.dm new file mode 100644 index 00000000000..c6023ef5a07 --- /dev/null +++ b/modular_zubbers/code/game/objects/items/robot/items/hypo.dm @@ -0,0 +1,10 @@ +#define BASE_CENTCOM_REAGENTS list(\ + /datum/reagent/medicine/c2/aiuri,\ + /datum/reagent/medicine/c2/libital,\ + /datum/reagent/medicine/epinephrine,\ +) + +/obj/item/reagent_containers/borghypo/centcom + name = "Basic Injector" + desc = "Provides basic medical assistance." + default_reagent_types = BASE_CENTCOM_REAGENTS diff --git a/modular_zubbers/code/game/objects/items/robot/items/storage.dm b/modular_zubbers/code/game/objects/items/robot/items/storage.dm new file mode 100644 index 00000000000..b923f8f0186 --- /dev/null +++ b/modular_zubbers/code/game/objects/items/robot/items/storage.dm @@ -0,0 +1,5 @@ +/obj/item/borg/apparatus/paper_manipulator + name = "paperwork manipulation apparatus" + desc = "An apparatus for carrying, deploying, and manipulating sheets of paper." + icon_state = "borg_stack_apparatus" + storable = list(/obj/item/paper) diff --git a/modular_zubbers/code/modules/altborgs/code/robot_model.dm b/modular_zubbers/code/modules/altborgs/code/robot_model.dm new file mode 100644 index 00000000000..1fe573c0575 --- /dev/null +++ b/modular_zubbers/code/modules/altborgs/code/robot_model.dm @@ -0,0 +1,43 @@ +/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/altborgs/code/robot_upgrade.dm b/modular_zubbers/code/modules/altborgs/code/robot_upgrade.dm index fb25797649b..6428dbc7e3e 100644 --- a/modular_zubbers/code/modules/altborgs/code/robot_upgrade.dm +++ b/modular_zubbers/code/modules/altborgs/code/robot_upgrade.dm @@ -1,3 +1,12 @@ +/obj/item/borg/upgrade/transform/ntjack + name = "borg module picker (Centcom)" + desc = "Allows you to to turn a cyborg into a experimental nanotrasen cyborg." + icon_state = "cyborg_upgrade3" + new_model = /obj/item/robot_model/centcom + +/obj/item/borg/upgrade/transform/ntjack/action(mob/living/silicon/robot/cyborg, user = usr) + return ..() + /obj/item/borg/upgrade/transform/security name = "borg model picker (Security)" desc = "Allows you to to turn a cyborg into a Security model, shitsec abound." diff --git a/modular_zubbers/code/modules/mob/living/silicon/robot/robot_defines.dm b/modular_zubbers/code/modules/mob/living/silicon/robot/robot_defines.dm new file mode 100644 index 00000000000..ec5cdee97bb --- /dev/null +++ b/modular_zubbers/code/modules/mob/living/silicon/robot/robot_defines.dm @@ -0,0 +1,24 @@ +/mob/living/silicon/robot/model/centcom + icon = 'modular_zubbers/icons/mob/silicon/widerobot_cc.dmi' + icon_state = "valecc" + faction = list(ROLE_DEATHSQUAD) + req_access = list(ACCESS_CENT_GENERAL) + lawupdate = FALSE + scrambledcodes = TRUE // These are not station borgs. + ionpulse = TRUE + var/playstyle_string = "You are a Central Command cyborg!
" + set_model = /obj/item/robot_model/centcom + cell = /obj/item/stock_parts/cell/bluespace + +/mob/living/silicon/robot/model/centcom/Initialize(mapload) + laws = new /datum/ai_laws/central_override() + laws.associate(src) + . = ..() + addtimer(CALLBACK(src, PROC_REF(show_playstyle)), 0.5 SECONDS) + +/mob/living/silicon/robot/model/centcom/proc/show_playstyle() + if(playstyle_string) + to_chat(src, playstyle_string) + +/mob/living/silicon/robot/model/centcom/ResetModel() + return diff --git a/modular_zubbers/icons/mob/silicon/widerobot_cc.dmi b/modular_zubbers/icons/mob/silicon/widerobot_cc.dmi new file mode 100644 index 00000000000..a8d021fe150 Binary files /dev/null and b/modular_zubbers/icons/mob/silicon/widerobot_cc.dmi differ diff --git a/tgstation.dme b/tgstation.dme index 0ae001e192f..dab890a999e 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -450,6 +450,7 @@ #include "code\__DEFINES\~~bubber_defines\access.dm" #include "code\__DEFINES\~~bubber_defines\jobs.dm" #include "code\__DEFINES\~~bubber_defines\quirk_whitelist.dm" +#include "code\__DEFINES\~~bubber_defines\robot_defines.dm" #include "code\__DEFINES\~~bubber_defines\signals.dm" #include "code\__DEFINES\~~bubber_defines\species.dm" #include "code\__DEFINES\~~bubber_defines\status_indicator_defines.dm" @@ -7752,6 +7753,8 @@ #include "modular_zubbers\code\game\objects\items\food\meatslab.dm" #include "modular_zubbers\code\game\objects\items\food\misc.dm" #include "modular_zubbers\code\game\objects\items\robot\items\harm_alarm_new.dm" +#include "modular_zubbers\code\game\objects\items\robot\items\hypo.dm" +#include "modular_zubbers\code\game\objects\items\robot\items\storage.dm" #include "modular_zubbers\code\game\objects\items\robot\robot_upgrades\adv_plasmacutter_upgrade.dm" #include "modular_zubbers\code\game\objects\items\storage\boxes.dm" #include "modular_zubbers\code\game\objects\items\storage\guncases.dm" @@ -7761,6 +7764,7 @@ #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" @@ -7824,6 +7828,7 @@ #include "modular_zubbers\code\modules\mob\living\living.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"