From d54a8996952858b772adf53b85b3e96285a88f8b Mon Sep 17 00:00:00 2001 From: DeltaFire Date: Thu, 1 Oct 2020 17:13:03 +0200 Subject: [PATCH 1/2] fixes KA modkits being installed in borgs by others These have been broken for so long holy fuck --- .../objects/items/robot/robot_upgrades.dm | 7 +++++ .../modules/mob/living/silicon/robot/robot.dm | 2 ++ .../guns/energy/kinetic_accelerator.dm | 26 +++++++++++-------- 3 files changed, 24 insertions(+), 11 deletions(-) diff --git a/code/game/objects/items/robot/robot_upgrades.dm b/code/game/objects/items/robot/robot_upgrades.dm index 80fd177d84..7b5b234a90 100644 --- a/code/game/objects/items/robot/robot_upgrades.dm +++ b/code/game/objects/items/robot/robot_upgrades.dm @@ -27,6 +27,13 @@ return FALSE return TRUE +/* +This proc gets called by upgrades after installing them. Use this for things that for example need to be moved into a specific borg module, +as performing this in action() will cause the module to end up in the borg instead of its intended location due to forceMove() being called afterwards.. +*/ +/obj/item/borg/upgrade/proc/afterInstall(mob/living/silicon/robot/R, user = usr) + return + /obj/item/borg/upgrade/proc/deactivate(mob/living/silicon/robot/R, user = usr) if (!(src in R.upgrades)) return FALSE diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 6143bde602..1eb308af00 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -454,10 +454,12 @@ if(U.action(src)) to_chat(user, "You apply the upgrade to [src].") if(U.one_use) + U.afterInstall(src) qdel(U) else U.forceMove(src) upgrades += U + U.afterInstall(src) else to_chat(user, "Upgrade error.") U.forceMove(drop_location()) diff --git a/code/modules/projectiles/guns/energy/kinetic_accelerator.dm b/code/modules/projectiles/guns/energy/kinetic_accelerator.dm index c1f47ccd1a..438c000a1e 100644 --- a/code/modules/projectiles/guns/energy/kinetic_accelerator.dm +++ b/code/modules/projectiles/guns/energy/kinetic_accelerator.dm @@ -105,10 +105,20 @@ holds_charge = TRUE unique_frequency = TRUE +/obj/item/gun/energy/kinetic_accelerator/cyborg/Destroy() + for(var/obj/item/borg/upgrade/modkit/M in modkits) + M.uninstall(src) + return ..() + /obj/item/gun/energy/kinetic_accelerator/premiumka/cyborg holds_charge = TRUE unique_frequency = TRUE +/obj/item/gun/energy/kinetic_accelerator/premiumka/cyborg/Destroy() + for(var/obj/item/borg/upgrade/modkit/M in modkits) + M.uninstall(src) + return ..() + /obj/item/gun/energy/kinetic_accelerator/minebot trigger_guard = TRIGGER_GUARD_ALLOW_ALL overheat_time = 20 @@ -284,11 +294,11 @@ else ..() -/obj/item/borg/upgrade/modkit/action(mob/living/silicon/robot/R) - . = ..() - if (.) - for(var/obj/item/gun/energy/kinetic_accelerator/cyborg/H in R.module.modules) - return install(H, usr) +/obj/item/borg/upgrade/modkit/afterInstall(mob/living/silicon/robot/R) + for(var/obj/item/gun/energy/kinetic_accelerator/H in R.module.modules) + if(install(H, R)) //It worked + return + to_chat(R, "Upgrade error - Aborting Kinetic Accelerator linking.") //No applicable KA found, insufficient capacity, or some other problem. /obj/item/borg/upgrade/modkit/proc/install(obj/item/gun/energy/kinetic_accelerator/KA, mob/user) . = TRUE @@ -323,12 +333,6 @@ to_chat(user, "You don't have room([KA.get_remaining_mod_capacity()]% remaining, [cost]% needed) to install this modkit. Use a crowbar to remove existing modkits.") . = FALSE -/obj/item/borg/upgrade/modkit/deactivate(mob/living/silicon/robot/R, user = usr) - . = ..() - if (.) - for(var/obj/item/gun/energy/kinetic_accelerator/cyborg/KA in R.module.modules) - uninstall(KA) - /obj/item/borg/upgrade/modkit/proc/uninstall(obj/item/gun/energy/kinetic_accelerator/KA, forcemove = TRUE) KA.modkits -= src if(forcemove) From e012b8f0828c3c388cec8bd99f9248fb1b40bc59 Mon Sep 17 00:00:00 2001 From: DeltaFire Date: Thu, 1 Oct 2020 17:18:28 +0200 Subject: [PATCH 2/2] typo --- code/game/objects/items/robot/robot_upgrades.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/game/objects/items/robot/robot_upgrades.dm b/code/game/objects/items/robot/robot_upgrades.dm index 7b5b234a90..9f098bc16c 100644 --- a/code/game/objects/items/robot/robot_upgrades.dm +++ b/code/game/objects/items/robot/robot_upgrades.dm @@ -28,8 +28,8 @@ return TRUE /* -This proc gets called by upgrades after installing them. Use this for things that for example need to be moved into a specific borg module, -as performing this in action() will cause the module to end up in the borg instead of its intended location due to forceMove() being called afterwards.. +This proc gets called by upgrades after installing them. Use this for things that for example need to be moved into a specific borg item, +as performing this in action() will cause the upgrade to end up in the borg instead of its intended location due to forceMove() being called afterwards.. */ /obj/item/borg/upgrade/proc/afterInstall(mob/living/silicon/robot/R, user = usr) return