From d9135ece44e19a855fb974fa131e68d0c595baf7 Mon Sep 17 00:00:00 2001 From: Qwertytoforty <52090703+Qwertytoforty@users.noreply.github.com> Date: Mon, 4 Oct 2021 17:26:13 -0400 Subject: [PATCH 1/9] Adds 90% of the stuff --- .../gamemodes/malfunction/Malf_Modules.dm | 21 +++++++++++ code/modules/mob/living/silicon/ai/ai.dm | 3 ++ .../modules/mob/living/silicon/robot/robot.dm | 2 + .../mob/living/silicon/robot/robot_modules.dm | 37 +++++++++++++++---- code/modules/projectiles/ammunition/energy.dm | 8 ++++ code/modules/projectiles/guns/energy/laser.dm | 21 +++++++++++ 6 files changed, 85 insertions(+), 7 deletions(-) diff --git a/code/game/gamemodes/malfunction/Malf_Modules.dm b/code/game/gamemodes/malfunction/Malf_Modules.dm index 4f0552cbefa..4ee2d96c5bf 100644 --- a/code/game/gamemodes/malfunction/Malf_Modules.dm +++ b/code/game/gamemodes/malfunction/Malf_Modules.dm @@ -786,3 +786,24 @@ /datum/AI_Module/large/cameracrack/upgrade(mob/living/silicon/ai/AI) if(AI.builtInCamera) QDEL_NULL(AI.builtInCamera) + +/datum/AI_Module/large/cameracrack + module_name = "Engineering Cyborg Emitter Upgrade" + mod_pick_name = "emitter" + description = "Downloads firmwear that activates the built in emitter in all enginering cyborgs linked to you. Cyborgs built after this upgrade will have it." + cost = 50 // IDK look into this + one_purchase = TRUE + upgrade = TRUE + unlock_text = "Firmwear downloaded. Bugs removed. Built in emitters operating at 73% efficency." + unlock_sound = 'sound/items/rped.ogg' + +/datum/AI_Module/large/cameracrack/upgrade(mob/living/silicon/ai/AI) + AI.purchased_modules += /obj/item/robot_module/engineering + log_game("[key_name(usr)] purchased emitters for all engineering cyborgs.") + message_admins("[key_name_admin(usr)] purchased emitters for all engineering cyborgs!") + for(var/mob/living/silicon/robot/R in AI.connected_robots) + if(!istype(R.module, /obj/item/robot_module/engineering)) + continue + R.module.malfhacked = TRUE + R.module.rebuild_modules() + to_chat(R, "New firmwear downloaded. Emitter is now online.") diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm index 47c383e1a33..943f894b151 100644 --- a/code/modules/mob/living/silicon/ai/ai.dm +++ b/code/modules/mob/living/silicon/ai/ai.dm @@ -79,6 +79,9 @@ GLOBAL_LIST_INIT(ai_verbs_default, list( var/obj/machinery/power/apc/malfhack = null var/explosive = 0 //does the AI explode when it dies? + /// List of modules the AI has purchased malf upgrades for. + var/list/purchased_modules = list() + var/mob/living/silicon/ai/parent = null var/camera_light_on = 0 var/list/obj/machinery/camera/lit_cameras = list() diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 8affd317c6a..60d13a88ce5 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -1264,6 +1264,8 @@ GLOBAL_LIST_INIT(robot_verbs_default, list( connected_ai = AI connected_ai.connected_robots |= src notify_ai(1) + if(module) + module.rebuild_modules() //This way, if a borg gets linked to a malf AI that has upgrades, they get their upgrades. sync() /mob/living/silicon/robot/adjustOxyLoss(amount) diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm index ab7c4ff9562..e35e67113f0 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules.dm @@ -6,12 +6,17 @@ item_state = "electronic" flags = CONDUCT + /// Has the AI hacked the borg module, allowing access to the malf AI exclusive item. + var/malfhacked = FALSE + /// A list of all currently usable and created modules the robot currently has access too. var/list/modules = list() /// A list of module-specific, non-emag modules the borg will gain when this module is chosen. var/list/basic_modules = list() /// A list of modules the robot gets when emagged. var/list/emag_modules = list() + /// A list of modules that the robot gets when malf AI buys it. + var/list/malf_modules = list() /// A list of modules that require special recharge handling. Examples include things like flashes, sprays and welding tools. var/list/special_rechargables = list() /// A list of all "energy stacks", i.e metal, glass, brute kits, splints, etc. @@ -43,12 +48,17 @@ emag_modules += I emag_modules -= i + for(var/i in malf_modules) + var/obj/item/I = new i(src) + malf_modules += I + malf_modules -= i + // Flashes need a special recharge, and since basically every module uses it, add it here. // Even if the module doesn't use a flash, it wont cause any issues to have it in this list. special_rechargables += /obj/item/flash/cyborg // This is done so we can loop through this list later and call cyborg_recharge() on the items while the borg is recharging. - var/all_modules = basic_modules | emag_modules + var/all_modules = basic_modules | emag_modules | malf_modules for(var/path in special_rechargables) var/obj/item/I = locate(path) in all_modules if(I) // If it exists, add the object reference. @@ -70,6 +80,7 @@ QDEL_LIST(modules) QDEL_LIST(basic_modules) QDEL_LIST(emag_modules) + QDEL_LIST(malf_modules) QDEL_LIST(storages) QDEL_LIST(special_rechargables) return ..() @@ -88,6 +99,7 @@ var/list/lists = list( basic_modules, emag_modules, + malf_modules, storages, special_rechargables ) @@ -155,13 +167,19 @@ return I /** - * Builds the usable module list from the modules we have in `basic_modules` and `emag_modules` + * Builds the usable module list from the modules we have in `basic_modules`, `emag_modules` and `malf_modules` */ /obj/item/robot_module/proc/rebuild_modules() var/mob/living/silicon/robot/R = loc R.uneq_all() modules = list() + if(!malfhacked) + if(R.connected_ai) + for(var/I in R.connected_ai.purchased_modules) + if(istype(src, I)) + malfhacked = TRUE + // By this point these lists should only contain items. It's safe to use typeless loops here. for(var/item in basic_modules) add_module(item, FALSE) @@ -170,6 +188,10 @@ for(var/item in emag_modules) add_module(item, FALSE) + if(malfhacked) + for(var/item in malf_modules) + add_module(item, FALSE) + if(R.hud_used) R.hud_used.update_robot_modules_display() @@ -354,8 +376,9 @@ /obj/item/stack/sheet/glass/cyborg, /obj/item/stack/sheet/rglass/cyborg ) - emag_modules = list(/obj/item/borg/stun) - special_rechargables = list(/obj/item/extinguisher, /obj/item/weldingtool/largetank/cyborg) + emag_modules = list(/obj/item/borg/stun, /obj/item/restraints/handcuffs/cable/zipties/cyborg) + malf_modules = list(/obj/item/gun/energy/emitter/cyborg) + special_rechargables = list(/obj/item/extinguisher, /obj/item/weldingtool/largetank/cyborg, /obj/item/gun/energy/emitter/cyborg) /obj/item/robot_module/engineering/handle_death(mob/living/silicon/robot/R, gibbed) var/obj/item/gripper/G = locate(/obj/item/gripper) in modules @@ -400,7 +423,7 @@ /obj/item/holosign_creator, /obj/item/extinguisher/mini ) - emag_modules = list(/obj/item/reagent_containers/spray/cyborg_lube) + emag_modules = list(/obj/item/reagent_containers/spray/cyborg_lube, /obj/item/restraints/handcuffs/cable/zipties/cyborg) special_rechargables = list( /obj/item/lightreplacer, /obj/item/reagent_containers/spray/cyborg_lube, @@ -471,7 +494,7 @@ /obj/item/storage/bag/tray/cyborg, /obj/item/reagent_containers/food/drinks/shaker ) - emag_modules = list(/obj/item/reagent_containers/food/drinks/cans/beer/sleepy_beer) + emag_modules = list(/obj/item/reagent_containers/food/drinks/cans/beer/sleepy_beer, /obj/item/restraints/handcuffs/cable/zipties/cyborg) special_rechargables = list( /obj/item/reagent_containers/food/condiment/enzyme, /obj/item/reagent_containers/food/drinks/cans/beer/sleepy_beer @@ -530,7 +553,7 @@ /obj/item/gun/energy/kinetic_accelerator/cyborg, /obj/item/gps/cyborg ) - emag_modules = list(/obj/item/borg/stun, /obj/item/pickaxe/drill/cyborg/diamond) + emag_modules = list(/obj/item/borg/stun, /obj/item/pickaxe/drill/cyborg/diamond, /obj/item/restraints/handcuffs/cable/zipties/cyborg) special_rechargables = list(/obj/item/extinguisher/mini, /obj/item/weldingtool/mini) // Replace their normal drill with a diamond drill. diff --git a/code/modules/projectiles/ammunition/energy.dm b/code/modules/projectiles/ammunition/energy.dm index 18ed273ff23..d8802045ba9 100644 --- a/code/modules/projectiles/ammunition/energy.dm +++ b/code/modules/projectiles/ammunition/energy.dm @@ -271,6 +271,14 @@ delay = 50 select_name = "snipe" +/obj/item/ammo_casing/energy/emitter + projectile_type = /obj/item/projectile/beam/emitter + muzzle_flash_color = LIGHT_COLOR_GREEN + fire_sound = 'sound/weapons/emitter.ogg' + e_cost = 500 // about 28 shots on an engineering borg from a borging machine, assuming some power is used for lights / movement. May need to change. + delay = 3 SECONDS // Lasers fire every second + select_name = "emitter" + /obj/item/ammo_casing/energy/bsg projectile_type = /obj/item/projectile/energy/bsg muzzle_flash_color = LIGHT_COLOR_DARKBLUE diff --git a/code/modules/projectiles/guns/energy/laser.dm b/code/modules/projectiles/guns/energy/laser.dm index b205dc44797..d6284adb0c0 100644 --- a/code/modules/projectiles/guns/energy/laser.dm +++ b/code/modules/projectiles/guns/energy/laser.dm @@ -141,6 +141,27 @@ name = "cyborg immolator cannon" ammo_type = list(/obj/item/ammo_casing/energy/immolator/scatter/cyborg, /obj/item/ammo_casing/energy/immolator/strong/cyborg) // scatter is default, because it is more useful +/obj/item/gun/energy/emitter + name = "mobile emitter" + desc = "An emitter someone removed from its base, and an attached to a power cell, to try to make a weapon." + icon_state = "lasercannon" + item_state = "laser" + w_class = WEIGHT_CLASS_BULKY + can_holster = FALSE + origin_tech = "combat=4;magnets=4;powerstorage=3" + ammo_type = list(/obj/item/ammo_casing/energy/emitter) + ammo_x_offset = 3 + +/obj/item/gun/energy/emitter/cyborg + name = "mounted emitter" + desc = "An emitter mounted to your cyborg frame, draining charge from your cell." + +/obj/item/gun/energy/emitter/cyborg/newshot() + ..() + robocharge() + +/obj/item/gun/energy/emitter/cyborg/emp_act() + return ////////Laser Tag//////////////////// From f45cdbf0475d10437401fa2ac826615b5796a2cc Mon Sep 17 00:00:00 2001 From: Qwertytoforty <52090703+Qwertytoforty@users.noreply.github.com> Date: Mon, 4 Oct 2021 20:36:41 -0400 Subject: [PATCH 2/9] Cyborg variant, sprites --- code/modules/projectiles/ammunition/energy.dm | 7 +++++-- code/modules/projectiles/guns/energy/laser.dm | 8 +++++--- icons/obj/guns/energy.dmi | Bin 42036 -> 43105 bytes 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/code/modules/projectiles/ammunition/energy.dm b/code/modules/projectiles/ammunition/energy.dm index d8802045ba9..049bf13c174 100644 --- a/code/modules/projectiles/ammunition/energy.dm +++ b/code/modules/projectiles/ammunition/energy.dm @@ -275,10 +275,13 @@ projectile_type = /obj/item/projectile/beam/emitter muzzle_flash_color = LIGHT_COLOR_GREEN fire_sound = 'sound/weapons/emitter.ogg' - e_cost = 500 // about 28 shots on an engineering borg from a borging machine, assuming some power is used for lights / movement. May need to change. - delay = 3 SECONDS // Lasers fire every second + e_cost = 100 + delay = 2 SECONDS // Lasers fire twice every second for 40 dps, this fires every 2 seconds for 15 dps. Seems fair, since every cyborg will have this with more shots? select_name = "emitter" +/obj/item/ammo_casing/energy/emitter/cyborg + e_cost = 500 // about 28 shots on an engineering borg from a borging machine, assuming some power is used for lights / movement. May need to change. + /obj/item/ammo_casing/energy/bsg projectile_type = /obj/item/projectile/energy/bsg muzzle_flash_color = LIGHT_COLOR_DARKBLUE diff --git a/code/modules/projectiles/guns/energy/laser.dm b/code/modules/projectiles/guns/energy/laser.dm index d6284adb0c0..c30119f3be6 100644 --- a/code/modules/projectiles/guns/energy/laser.dm +++ b/code/modules/projectiles/guns/energy/laser.dm @@ -143,10 +143,11 @@ /obj/item/gun/energy/emitter name = "mobile emitter" - desc = "An emitter someone removed from its base, and an attached to a power cell, to try to make a weapon." - icon_state = "lasercannon" + desc = "An emitter someone removed from its base, and attached to a laser cannon frame, to try to make a weapon." + icon_state = "emittercannon" item_state = "laser" w_class = WEIGHT_CLASS_BULKY + shaded_charge = TRUE can_holster = FALSE origin_tech = "combat=4;magnets=4;powerstorage=3" ammo_type = list(/obj/item/ammo_casing/energy/emitter) @@ -154,7 +155,8 @@ /obj/item/gun/energy/emitter/cyborg name = "mounted emitter" - desc = "An emitter mounted to your cyborg frame, draining charge from your cell." + desc = "An emitter built into to your cyborg frame, draining charge from your cell." + ammo_type = list(/obj/item/ammo_casing/energy/emitter/cyborg) /obj/item/gun/energy/emitter/cyborg/newshot() ..() diff --git a/icons/obj/guns/energy.dmi b/icons/obj/guns/energy.dmi index b4f2c2204abdcec01522e6518a872a464f75dea0..4adf1a45e30fdcbe06fae4eaf44fc16958eeef72 100644 GIT binary patch delta 5620 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 delta 4544 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 From 87de52f18d2a0d1acc271d1c4a5475fdaa08e3d6 Mon Sep 17 00:00:00 2001 From: Qwertytoforty <52090703+Qwertytoforty@users.noreply.github.com> Date: Mon, 4 Oct 2021 22:10:52 -0400 Subject: [PATCH 3/9] Better sprite:tm: --- icons/obj/guns/energy.dmi | Bin 43105 -> 43082 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/obj/guns/energy.dmi b/icons/obj/guns/energy.dmi index 4adf1a45e30fdcbe06fae4eaf44fc16958eeef72..f2a1917a06ec40defded2af9712268dd5bb676b9 100644 GIT binary patch delta 4292 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 F{twWxja2{u delta 4315 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 Date: Mon, 4 Oct 2021 22:13:59 -0400 Subject: [PATCH 4/9] And a description change --- code/modules/projectiles/guns/energy/laser.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/projectiles/guns/energy/laser.dm b/code/modules/projectiles/guns/energy/laser.dm index c30119f3be6..9d7b9bde281 100644 --- a/code/modules/projectiles/guns/energy/laser.dm +++ b/code/modules/projectiles/guns/energy/laser.dm @@ -143,7 +143,7 @@ /obj/item/gun/energy/emitter name = "mobile emitter" - desc = "An emitter someone removed from its base, and attached to a laser cannon frame, to try to make a weapon." + desc = "An emitter removed from its base, and attached to a laser cannon frame." icon_state = "emittercannon" item_state = "laser" w_class = WEIGHT_CLASS_BULKY From 6def6490a0ba845f558db41ae0c81b8ad72a07a4 Mon Sep 17 00:00:00 2001 From: Qwertytoforty <52090703+Qwertytoforty@users.noreply.github.com> Date: Mon, 4 Oct 2021 22:21:20 -0400 Subject: [PATCH 5/9] Really dumb, yup. --- code/game/gamemodes/malfunction/Malf_Modules.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/game/gamemodes/malfunction/Malf_Modules.dm b/code/game/gamemodes/malfunction/Malf_Modules.dm index 4ee2d96c5bf..5c4c8e14367 100644 --- a/code/game/gamemodes/malfunction/Malf_Modules.dm +++ b/code/game/gamemodes/malfunction/Malf_Modules.dm @@ -787,7 +787,7 @@ if(AI.builtInCamera) QDEL_NULL(AI.builtInCamera) -/datum/AI_Module/large/cameracrack +/datum/AI_Module/large/engi_upgrade module_name = "Engineering Cyborg Emitter Upgrade" mod_pick_name = "emitter" description = "Downloads firmwear that activates the built in emitter in all enginering cyborgs linked to you. Cyborgs built after this upgrade will have it." @@ -797,7 +797,7 @@ unlock_text = "Firmwear downloaded. Bugs removed. Built in emitters operating at 73% efficency." unlock_sound = 'sound/items/rped.ogg' -/datum/AI_Module/large/cameracrack/upgrade(mob/living/silicon/ai/AI) +/datum/AI_Module/large/engi_upgrade/upgrade(mob/living/silicon/ai/AI) AI.purchased_modules += /obj/item/robot_module/engineering log_game("[key_name(usr)] purchased emitters for all engineering cyborgs.") message_admins("[key_name_admin(usr)] purchased emitters for all engineering cyborgs!") From bebd890081f74d3fb42e6451634cb6c70f0a6d5b Mon Sep 17 00:00:00 2001 From: Qwertytoforty <52090703+Qwertytoforty@users.noreply.github.com> Date: Sat, 9 Oct 2021 12:52:46 -0400 Subject: [PATCH 6/9] Apply suggestions from code review Co-authored-by: SabreML <57483089+SabreML@users.noreply.github.com> --- code/game/gamemodes/malfunction/Malf_Modules.dm | 4 ++-- code/modules/mob/living/silicon/robot/robot_modules.dm | 9 ++++----- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/code/game/gamemodes/malfunction/Malf_Modules.dm b/code/game/gamemodes/malfunction/Malf_Modules.dm index 5c4c8e14367..ca42fb7087d 100644 --- a/code/game/gamemodes/malfunction/Malf_Modules.dm +++ b/code/game/gamemodes/malfunction/Malf_Modules.dm @@ -790,11 +790,11 @@ /datum/AI_Module/large/engi_upgrade module_name = "Engineering Cyborg Emitter Upgrade" mod_pick_name = "emitter" - description = "Downloads firmwear that activates the built in emitter in all enginering cyborgs linked to you. Cyborgs built after this upgrade will have it." + description = "Downloads firmwear that activates the built in emitter in all enginering cyborgs linked to you. Cyborgs built after this upgrade will have it pre-installed." cost = 50 // IDK look into this one_purchase = TRUE upgrade = TRUE - unlock_text = "Firmwear downloaded. Bugs removed. Built in emitters operating at 73% efficency." + unlock_text = "Firmwear downloaded. Bugs removed. Built in emitters operating at 73% efficiency." unlock_sound = 'sound/items/rped.ogg' /datum/AI_Module/large/engi_upgrade/upgrade(mob/living/silicon/ai/AI) diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm index e35e67113f0..38d9c45dbd1 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules.dm @@ -174,11 +174,10 @@ R.uneq_all() modules = list() - if(!malfhacked) - if(R.connected_ai) - for(var/I in R.connected_ai.purchased_modules) - if(istype(src, I)) - malfhacked = TRUE + if(!malfhacked && R.connected_ai) + for(var/I in R.connected_ai.purchased_modules) + if(istype(src, I)) + malfhacked = TRUE // By this point these lists should only contain items. It's safe to use typeless loops here. for(var/item in basic_modules) From 15f383e4f5a99c133a920489c9d969c3839cbcba Mon Sep 17 00:00:00 2001 From: Qwertytoforty <52090703+Qwertytoforty@users.noreply.github.com> Date: Sat, 9 Oct 2021 12:54:02 -0400 Subject: [PATCH 7/9] Firmware --- code/game/gamemodes/malfunction/Malf_Modules.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/gamemodes/malfunction/Malf_Modules.dm b/code/game/gamemodes/malfunction/Malf_Modules.dm index ca42fb7087d..53a5ce1626c 100644 --- a/code/game/gamemodes/malfunction/Malf_Modules.dm +++ b/code/game/gamemodes/malfunction/Malf_Modules.dm @@ -806,4 +806,4 @@ continue R.module.malfhacked = TRUE R.module.rebuild_modules() - to_chat(R, "New firmwear downloaded. Emitter is now online.") + to_chat(R, "New firmware downloaded. Emitter is now online.") From d30f3f098452aa34486a6340eb96392c432c4b09 Mon Sep 17 00:00:00 2001 From: Qwertytoforty <52090703+Qwertytoforty@users.noreply.github.com> Date: Sat, 9 Oct 2021 14:04:02 -0400 Subject: [PATCH 8/9] Final steel changes --- code/game/gamemodes/malfunction/Malf_Modules.dm | 4 ++-- code/modules/mob/living/silicon/robot/robot_modules.dm | 5 ++--- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/code/game/gamemodes/malfunction/Malf_Modules.dm b/code/game/gamemodes/malfunction/Malf_Modules.dm index 53a5ce1626c..559461da349 100644 --- a/code/game/gamemodes/malfunction/Malf_Modules.dm +++ b/code/game/gamemodes/malfunction/Malf_Modules.dm @@ -790,11 +790,11 @@ /datum/AI_Module/large/engi_upgrade module_name = "Engineering Cyborg Emitter Upgrade" mod_pick_name = "emitter" - description = "Downloads firmwear that activates the built in emitter in all enginering cyborgs linked to you. Cyborgs built after this upgrade will have it pre-installed." + description = "Downloads firmwear that activates the built in emitter in all engineering cyborgs linked to you. Cyborgs built after this upgrade will have it pre-installed." cost = 50 // IDK look into this one_purchase = TRUE upgrade = TRUE - unlock_text = "Firmwear downloaded. Bugs removed. Built in emitters operating at 73% efficiency." + unlock_text = "Firmware downloaded. Bugs removed. Built in emitters operating at 73% efficiency." unlock_sound = 'sound/items/rped.ogg' /datum/AI_Module/large/engi_upgrade/upgrade(mob/living/silicon/ai/AI) diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm index 38d9c45dbd1..3c202a35029 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules.dm @@ -175,9 +175,8 @@ modules = list() if(!malfhacked && R.connected_ai) - for(var/I in R.connected_ai.purchased_modules) - if(istype(src, I)) - malfhacked = TRUE + if(type in R.connected_ai.purchased_modules) + malfhacked = TRUE // By this point these lists should only contain items. It's safe to use typeless loops here. for(var/item in basic_modules) From f5ece96b483169bca9980a10ad33235a2789a0f1 Mon Sep 17 00:00:00 2001 From: Qwertytoforty <52090703+Qwertytoforty@users.noreply.github.com> Date: Sun, 10 Oct 2021 13:36:17 -0400 Subject: [PATCH 9/9] Update code/game/gamemodes/malfunction/Malf_Modules.dm Co-authored-by: SteelSlayer <42044220+SteelSlayer@users.noreply.github.com> --- code/game/gamemodes/malfunction/Malf_Modules.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/gamemodes/malfunction/Malf_Modules.dm b/code/game/gamemodes/malfunction/Malf_Modules.dm index 559461da349..3b07125cb5a 100644 --- a/code/game/gamemodes/malfunction/Malf_Modules.dm +++ b/code/game/gamemodes/malfunction/Malf_Modules.dm @@ -790,7 +790,7 @@ /datum/AI_Module/large/engi_upgrade module_name = "Engineering Cyborg Emitter Upgrade" mod_pick_name = "emitter" - description = "Downloads firmwear that activates the built in emitter in all engineering cyborgs linked to you. Cyborgs built after this upgrade will have it pre-installed." + description = "Downloads firmware that activates the built in emitter in all engineering cyborgs linked to you. Cyborgs built after this upgrade will have it pre-installed." cost = 50 // IDK look into this one_purchase = TRUE upgrade = TRUE