diff --git a/code/game/objects/items/robot/robot_upgrades.dm b/code/game/objects/items/robot/robot_upgrades.dm index bcef8e78c6..a75eba2a57 100644 --- a/code/game/objects/items/robot/robot_upgrades.dm +++ b/code/game/objects/items/robot/robot_upgrades.dm @@ -516,6 +516,36 @@ to_chat(R, span_notice("Sheet snatcher upgraded!")) return TRUE +/obj/item/borg/upgrade/restricted/adv_mailbag + name = "robotic mailbag capacity module" + desc = "Used to expand the mailbag storage." + icon_state = "cyborg_upgrade3" + item_state = "cyborg_upgrade" + module_flags = BORG_MODULE_MINER + require_module = TRUE + +/obj/item/borg/upgrade/restricted/adv_mailbag/action(mob/user, mob/living/silicon/robot/R) + if(..()) return FALSE + + if(!R.supports_upgrade(type)) + generic_error(user, R, type) + return FALSE + + var/obj/target_module = R.has_upgrade_module(/obj/item/storage/bag/mail/borg) + if(!target_module) + to_chat(user, span_warning("This robot has had its letter compartment removed!")) + return FALSE + + if(R.has_restricted_upgrade(type)) + to_chat(R, span_warning("Letter compartment was already upgraded!")) + to_chat(user, span_warning("There's no room for another letter compartment upgrade!")) + return FALSE + + var/obj/item/storage/bag/mail/borg/mailbag = target_module + mailbag.upgrade() + to_chat(R, span_notice("Letter compartment upgraded!")) + return TRUE + /* ############################################### # Unsorted section. All cargo modules go here.# ###############################################*/ diff --git a/code/game/objects/mail.dm b/code/game/objects/mail.dm index 81b8d51eed..53afd5a5fb 100644 --- a/code/game/objects/mail.dm +++ b/code/game/objects/mail.dm @@ -378,6 +378,15 @@ /obj/item/pen ) +/obj/item/storage/bag/mail/borg + name = "letter compartment" + desc = "A compartment specifically made for small postage." + +/obj/item/storage/bag/mail/borg/proc/upgrade() + name += " of holding" + storage_slots = 45 + max_storage_space = 75 + // Mail Scanner /obj/item/mail_scanner name = "mail scanner" diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 17dbec9970..5d37310fd7 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -1589,6 +1589,13 @@ else if(!robot_snatcher) return "" // Return this to have the analyzer show an error if the module is missing. FALSE / NULL are used for missing upgrades themselves return FALSE + if(given_type == /obj/item/borg/upgrade/restricted/adv_mailbag) + var/obj/item/storage/bag/mail/borg/letter_bag = has_upgrade_module(/obj/item/storage/bag/mail/borg) + if(letter_bag && letter_bag.storage_slots > letter_bag::storage_slots) + return letter_bag + else if(!letter_bag) + return "" + return FALSE if(given_type == /obj/item/borg/upgrade/restricted/advrped) return has_upgrade_module(/obj/item/storage/part_replacer/adv) if(given_type == /obj/item/borg/upgrade/restricted/diamonddrill) diff --git a/code/modules/mob/living/silicon/robot/robot_modules/station.dm b/code/modules/mob/living/silicon/robot/robot_modules/station.dm index 0732c86558..1326728529 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules/station.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules/station.dm @@ -643,7 +643,7 @@ name = "miner robot module" channels = list(CHANNEL_SUPPLY = 1) networks = list(NETWORK_MINE) - supported_upgrades = list(/obj/item/borg/upgrade/restricted/pka, /obj/item/borg/upgrade/restricted/diamonddrill, /obj/item/borg/upgrade/restricted/adv_scanner, /obj/item/borg/upgrade/restricted/adv_snatcher) + supported_upgrades = list(/obj/item/borg/upgrade/restricted/pka, /obj/item/borg/upgrade/restricted/diamonddrill, /obj/item/borg/upgrade/restricted/adv_scanner, /obj/item/borg/upgrade/restricted/adv_snatcher, /obj/item/borg/upgrade/restricted/adv_mailbag) pto_type = PTO_CARGO /obj/item/robot_module/robot/miner/create_equipment(var/mob/living/silicon/robot/robot) @@ -659,6 +659,8 @@ src.modules += new /obj/item/card/id/cargo/miner/borg(src) src.modules += new /obj/item/gun/energy/robotic/phasegun(src) //CHOMPedit: Phasegun for regular mining cyborg. src.modules += new /obj/item/vac_attachment(src) //CHOMPAdd + src.modules += new /obj/item/mail_scanner(src) + src.modules += new /obj/item/storage/bag/mail/borg(src) src.emag += new /obj/item/kinetic_crusher/machete/dagger(src) var/datum/matter_synth/beacon = new /datum/matter_synth/beacon(10000) diff --git a/code/modules/research/tg/designs/prosfab_designs.dm b/code/modules/research/tg/designs/prosfab_designs.dm index 1e388df669..83a84b2bdb 100644 --- a/code/modules/research/tg/designs/prosfab_designs.dm +++ b/code/modules/research/tg/designs/prosfab_designs.dm @@ -499,6 +499,16 @@ materials = list(MAT_STEEL = 12000, MAT_GLASS = 8000, MAT_PLASTEEL = 2000, MAT_DURASTEEL = 500, MAT_DIAMOND = 700) build_path = /obj/item/borg/upgrade/restricted/adv_snatcher +/datum/design_techweb/prosfab/robot_upgrade/restricted/adv_mailbag + category = list( + RND_CATEGORY_MECHFAB_CYBORG_MODULES + RND_SUBCATEGORY_MECHFAB_CYBORG_MODULES_RESTRICTED + RND_SUBCATEGORY_MECHFAB_CYBORG_MODULES_MINING + ) + name = "Mail Compartment Upgrade" + desc = "An upgrade module to expand the robot's postage capacity." + id = "borg_adv_mailbag" + materials = list(MAT_STEEL = 12000, MAT_GLASS = 8000, MAT_PLASTEEL = 2000, MAT_DURASTEEL = 500, MAT_DIAMOND = 700) + build_path = /obj/item/borg/upgrade/restricted/adv_mailbag + /datum/design_techweb/prosfab/robot_upgrade/restricted/tasercooler category = list( RND_CATEGORY_MECHFAB_CYBORG_MODULES + RND_SUBCATEGORY_MECHFAB_CYBORG_MODULES_RESTRICTED + RND_SUBCATEGORY_MECHFAB_CYBORG_MODULES_SECURITY diff --git a/code/modules/research/tg/techwebs/nodes/cyborg_nodes.dm b/code/modules/research/tg/techwebs/nodes/cyborg_nodes.dm index 21558a8ec4..31566a684d 100644 --- a/code/modules/research/tg/techwebs/nodes/cyborg_nodes.dm +++ b/code/modules/research/tg/techwebs/nodes/cyborg_nodes.dm @@ -110,6 +110,7 @@ "borg_hound_capability_module", "borg_hound_capacity_module", "borg_ddrill_module", + "borg_adv_mailbag", ) research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_2_POINTS) announce_channels = list(CHANNEL_SCIENCE)