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