From 68b1583a1a8d92ce4c1c77e3d31a3ca6f985722e Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Mon, 28 Oct 2019 17:47:29 +0100 Subject: [PATCH 1/2] Fixing PKA mod double installation et similars. --- .../projectiles/guns/energy/kinetic_accelerator.dm | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/code/modules/projectiles/guns/energy/kinetic_accelerator.dm b/code/modules/projectiles/guns/energy/kinetic_accelerator.dm index a4ec979a06..0b751d6e54 100644 --- a/code/modules/projectiles/guns/energy/kinetic_accelerator.dm +++ b/code/modules/projectiles/guns/energy/kinetic_accelerator.dm @@ -97,6 +97,10 @@ for(var/A in modkits) . += A +/obj/item/gun/energy/kinetic_accelerator/handle_atom_del(atom/A) + if(A in modkits) + modkits -= A + /obj/item/gun/energy/kinetic_accelerator/proc/modify_projectile(obj/item/projectile/kinetic/K) K.kinetic_gun = src //do something special on-hit, easy! for(var/A in get_modkits()) @@ -261,7 +265,7 @@ icon_state = "modkit" w_class = WEIGHT_CLASS_SMALL require_module = 1 - module_type = /obj/item/robot_module/miner + module_type = list(/obj/item/robot_module/miner) var/denied_type = null var/maximum_of_type = 1 var/cost = 30 @@ -287,6 +291,8 @@ /obj/item/borg/upgrade/modkit/proc/install(obj/item/gun/energy/kinetic_accelerator/KA, mob/user) . = TRUE + if(src in KA.modkits) // Sanity check to prevent installing the same modkit twice thanks to occasional click/lag delays. + return if(minebot_upgrade) if(minebot_exclusive && !istype(KA.loc, /mob/living/simple_animal/hostile/mining_drone)) to_chat(user, "The modkit you're trying to install is only rated for minebot use.") @@ -326,7 +332,11 @@ forceMove(get_turf(KA)) KA.modkits -= src - +/obj/item/borg/updgrade/modkit/Exited(atom/movable/AM) + . = ..() + if(istype(AM, /obj/item/gun/energy/kinetic_accelerator)) + var/obj/item/gun/energy/kinetic_accelerator/KA = AM + KA.modkits -= src /obj/item/borg/upgrade/modkit/proc/modify_projectile(obj/item/projectile/kinetic/K) From 8c4e031a1b724d7f2c82d298a709ff5341fdf765 Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Mon, 28 Oct 2019 17:59:32 +0100 Subject: [PATCH 2/2] atom/movable's Destroy() calls MoveToNullSpace() which calls Exited(), thus handle_atom_del() is redunant. --- .../guns/energy/kinetic_accelerator.dm | 21 ++++++++----------- 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/code/modules/projectiles/guns/energy/kinetic_accelerator.dm b/code/modules/projectiles/guns/energy/kinetic_accelerator.dm index 0b751d6e54..df8eba00ed 100644 --- a/code/modules/projectiles/guns/energy/kinetic_accelerator.dm +++ b/code/modules/projectiles/guns/energy/kinetic_accelerator.dm @@ -78,6 +78,12 @@ else to_chat(user, "There are no modifications currently installed.") +/obj/item/gun/energy/kinetic_accelerator/Exited(atom/movable/AM) + . = ..() + if((AM in modkits) && istype(AM, /obj/item/borg/upgrade/modkit)) + var/obj/item/borg/upgrade/modkit/M = AM + M.uninstall(src, FALSE) + /obj/item/gun/energy/kinetic_accelerator/attackby(obj/item/I, mob/user) if(istype(I, /obj/item/borg/upgrade/modkit)) var/obj/item/borg/upgrade/modkit/MK = I @@ -97,10 +103,6 @@ for(var/A in modkits) . += A -/obj/item/gun/energy/kinetic_accelerator/handle_atom_del(atom/A) - if(A in modkits) - modkits -= A - /obj/item/gun/energy/kinetic_accelerator/proc/modify_projectile(obj/item/projectile/kinetic/K) K.kinetic_gun = src //do something special on-hit, easy! for(var/A in get_modkits()) @@ -328,16 +330,11 @@ 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(get_turf(KA)) +/obj/item/borg/upgrade/modkit/proc/uninstall(obj/item/gun/energy/kinetic_accelerator/KA, forcemove = TRUE) + if(forcemove) + forceMove(get_turf(KA)) KA.modkits -= src -/obj/item/borg/updgrade/modkit/Exited(atom/movable/AM) - . = ..() - if(istype(AM, /obj/item/gun/energy/kinetic_accelerator)) - var/obj/item/gun/energy/kinetic_accelerator/KA = AM - KA.modkits -= src - /obj/item/borg/upgrade/modkit/proc/modify_projectile(obj/item/projectile/kinetic/K) //use this one for effects you want to trigger before any damage is done at all and before damage is decreased by pressure