From b1eede278985f4d94964ef107ee256f3e729fc4e Mon Sep 17 00:00:00 2001 From: Geeves Date: Sat, 20 Feb 2021 15:19:13 +0200 Subject: [PATCH] Mining Drone Upgrade Fix (#11232) --- code/modules/mining/minebot.dm | 54 +++++++++++-------- .../mob/living/silicon/robot/robot_modules.dm | 28 +++++----- html/changelogs/geeves-mining_drone_fix.yml | 7 +++ 3 files changed, 52 insertions(+), 37 deletions(-) create mode 100644 html/changelogs/geeves-mining_drone_fix.yml diff --git a/code/modules/mining/minebot.dm b/code/modules/mining/minebot.dm index 5e692f2080a..066b6c65181 100644 --- a/code/modules/mining/minebot.dm +++ b/code/modules/mining/minebot.dm @@ -2,7 +2,7 @@ icon_state = "miningdrone" mod_type = "Mining" law_type = /datum/ai_laws/mining_drone - module_type = /obj/item/robot_module/mining_drone/basic + module_type = /obj/item/robot_module/mining_drone holder_type = /obj/item/holder/drone/mining maxHealth = 45 health = 45 @@ -15,7 +15,6 @@ var/seeking_player = FALSE var/health_upgrade var/ranged_upgrade - var/melee_upgrade var/drill_upgrade /mob/living/silicon/robot/drone/mining/Initialize() @@ -47,6 +46,20 @@ update_icon() density = FALSE +/mob/living/silicon/robot/drone/mining/examine(mob/user) + . = ..() + if(health_upgrade) + to_chat(user, SPAN_NOTICE("\The [src] appears to have a reinforced chassis.")) + if(ranged_upgrade || drill_upgrade) + var/output_text = "\The [src]'s lights indicates it has" + if(ranged_upgrade && drill_upgrade) + output_text += " fully upgraded mining equipment." + else if(ranged_upgrade) + output_text += " a stationbound class KA mounted to it." + else if(drill_upgrade) + output_text += " a jackhammer drill mounted to it." + to_chat(user, SPAN_NOTICE(output_text)) + /mob/living/silicon/robot/drone/mining/updatename() real_name = "NT-I-[rand(100,999)]" name = real_name @@ -87,6 +100,11 @@ to_chat(user, SPAN_WARNING("\The [src] is not compatible with \the [W].")) return + if(istype(W, /obj/item/device/mine_bot_upgrade)) + var/obj/item/device/mine_bot_upgrade/MBU = W + MBU.upgrade_bot(src, user) + return + else if (W.GetID()) if(!allowed(user)) to_chat(user, SPAN_WARNING("Access denied.")) @@ -130,29 +148,22 @@ icon_state = "mainboard" icon = 'icons/obj/module.dmi' -/obj/item/device/mine_bot_upgrade/afterattack(var/mob/living/silicon/robot/drone/mining/M, mob/user, proximity) - if(!istype(M) || !proximity) - return - if(upgrade_bot(M, user)) - to_chat(user, SPAN_NOTICE("You successfully install \the [src] into \the [M].")) - /obj/item/device/mine_bot_upgrade/proc/upgrade_bot(var/mob/living/silicon/robot/drone/mining/M, mob/user) - if(M.melee_upgrade) + if(M.drill_upgrade) to_chat(user, SPAN_WARNING("[src] already has a drill upgrade installed!")) return M.mod_type = initial(M.mod_type) M.uneq_all() - qdel(M.module) - M.module = null + QDEL_NULL(M.module) if(M.ranged_upgrade) - new /obj/item/robot_module/mining_drone/drillandka(M) + M.module = new /obj/item/robot_module/mining_drone/drillandka(M, M) else - new /obj/item/robot_module/mining_drone/drill(M) - M.melee_upgrade = TRUE + M.module = new /obj/item/robot_module/mining_drone/drill(M, M) + M.drill_upgrade = TRUE M.module.rebuild() M.recalculate_synth_capacities() + to_chat(user, SPAN_NOTICE("You successfully install \the [src] into \the [M].")) qdel(src) - return TRUE /obj/item/device/mine_bot_upgrade/health name = "minebot chassis upgrade" @@ -168,8 +179,8 @@ var/datum/robot_component/C = M.components[V] C.max_damage = 30 M.health_upgrade = TRUE + to_chat(user, SPAN_NOTICE("You successfully install \the [src] into \the [M].")) qdel(src) - return TRUE /obj/item/device/mine_bot_upgrade/ka name = "minebot kinetic accelerator upgrade" @@ -180,17 +191,16 @@ return M.mod_type = initial(M.mod_type) M.uneq_all() - qdel(M.module) - M.module = null - if(M.melee_upgrade) - new /obj/item/robot_module/mining_drone/drillandka(M) + QDEL_NULL(M.module) + if(M.drill_upgrade) + M.module = new /obj/item/robot_module/mining_drone/drillandka(M, M) else - new /obj/item/robot_module/mining_drone/ka(M) + M.module = new /obj/item/robot_module/mining_drone/ka(M, M) M.ranged_upgrade = TRUE M.module.rebuild() M.recalculate_synth_capacities() + to_chat(user, SPAN_NOTICE("You successfully install \the [src] into \the [M].")) qdel(src) - return TRUE /mob/living/silicon/robot/drone/mining/roundstart/Initialize() . = ..() diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm index 3b5f6fb3131..d8dbed0c88b 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules.dm @@ -967,9 +967,14 @@ var/global/list/robot_modules = list( no_slip = TRUE networks = list(NETWORK_MINE) -/obj/item/robot_module/mining_drone/proc/set_up_default(var/mob/living/silicon/robot/R) +/obj/item/robot_module/mining_drone/Initialize(mapload, mob/living/silicon/robot/R) + . = ..() + set_up_default(R) + +/obj/item/robot_module/mining_drone/proc/set_up_default(var/mob/living/silicon/robot/R, var/has_drill = TRUE) modules += new /obj/item/device/flash(src) - modules += new /obj/item/pickaxe/drill(src) + if(has_drill) + modules += new /obj/item/pickaxe/drill(src) modules += new /obj/item/storage/bag/ore/drone(src) modules += new /obj/item/storage/bag/sheetsnatcher/borg(src) modules += new /obj/item/gripper/miner(src) @@ -996,23 +1001,16 @@ var/global/list/robot_modules = list( emag = new /obj/item/gun/energy/plasmacutter/mounted(src) emag.name = "Mounted Plasma Cutter" -/obj/item/robot_module/mining_drone/basic/Initialize(mapload, mob/living/silicon/robot/robot) - . = ..() - set_up_default(src) - -/obj/item/robot_module/mining_drone/drill/Initialize(mapload, mob/living/silicon/robot/robot) - . = ..() - set_up_default(src, FALSE) +/obj/item/robot_module/mining_drone/drill/set_up_default(mob/living/silicon/robot/R) + ..(R, FALSE) modules += new /obj/item/pickaxe/jackhammer(src) -/obj/item/robot_module/mining_drone/ka/Initialize(mapload, mob/living/silicon/robot/robot) - . = ..() - set_up_default(src) +/obj/item/robot_module/mining_drone/ka/set_up_default(mob/living/silicon/robot/R) + ..(R) modules += new /obj/item/gun/custom_ka/cyborg(src) -/obj/item/robot_module/mining_drone/drillandka/Initialize(mapload, mob/living/silicon/robot/robot) - . = ..() - set_up_default(src, FALSE) +/obj/item/robot_module/mining_drone/drillandka/set_up_default(mob/living/silicon/robot/R) + ..(R, FALSE) modules += new /obj/item/pickaxe/jackhammer(src) modules += new /obj/item/gun/custom_ka/cyborg(src) diff --git a/html/changelogs/geeves-mining_drone_fix.yml b/html/changelogs/geeves-mining_drone_fix.yml new file mode 100644 index 00000000000..ea4f39e0232 --- /dev/null +++ b/html/changelogs/geeves-mining_drone_fix.yml @@ -0,0 +1,7 @@ +author: Geeves + +delete-after: True + +changes: + - bugfix: "Fixed mining drone upgrades not properly setting the correct module for the mining drone." + - rscadd: "You can now examine mining drones to gauge how upgraded they are." \ No newline at end of file