From 429df67dd2d2f3aa731ca0bfbe3c843e58660017 Mon Sep 17 00:00:00 2001 From: AzuleUtama <44248086+AzuleUtama@users.noreply.github.com> Date: Tue, 6 Nov 2018 19:38:34 +0000 Subject: [PATCH] Fixes RCD giving no user feedback when out of ammo RCD will now give a low ammo error for what you are trying to build / destroy. Additionally gives errors when trying to build airlocks or windows over space tiles otherwise it would give a low ammo error when trying to do so. --- code/game/objects/items/weapons/RCD.dm | 73 ++++++++++++++++++-------- 1 file changed, 52 insertions(+), 21 deletions(-) diff --git a/code/game/objects/items/weapons/RCD.dm b/code/game/objects/items/weapons/RCD.dm index d68922748d7..3c544cdb28c 100644 --- a/code/game/objects/items/weapons/RCD.dm +++ b/code/game/objects/items/weapons/RCD.dm @@ -255,7 +255,10 @@ GLOBAL_LIST_INIT(rcd_door_types, list( var/turf/AT = get_turf(A) AT.ChangeTurf(/turf/simulated/floor/plating) return TRUE - return FALSE + else + to_chat(user, "ERROR! Not enough matter in unit to construct this floor!") + playsound(loc, 'sound/machines/click.ogg', 50, 1) + return FALSE if(isfloorturf(A)) if(checkResource(3, user)) @@ -268,28 +271,39 @@ GLOBAL_LIST_INIT(rcd_door_types, list( var/turf/AT = A AT.ChangeTurf(/turf/simulated/wall) return TRUE - return FALSE + else + to_chat(user, "ERROR! Not enough matter in unit to construct this wall!") + playsound(loc, 'sound/machines/click.ogg', 50, 1) + return FALSE return FALSE /obj/item/rcd/proc/mode_airlock(atom/A, mob/user) - if(isfloorturf(A) && checkResource(10, user)) - to_chat(user, "Building Airlock...") - playsound(loc, 'sound/machines/click.ogg', 50, 1) - if(do_after(user, 50 * toolspeed, target = A)) - if(locate(/obj/machinery/door/airlock) in A.contents) + if(isfloorturf(A)) + if(checkResource(10, user)) + to_chat(user, "Building Airlock...") + playsound(loc, 'sound/machines/click.ogg', 50, 1) + if(do_after(user, 50 * toolspeed, target = A)) + if(locate(/obj/machinery/door/airlock) in A.contents) + return FALSE + if(!useResource(10, user)) + return FALSE + playsound(loc, usesound, 50, 1) + var/obj/machinery/door/airlock/T = new door_type(A) + T.name = door_name + T.autoclose = TRUE + if(one_access) + T.req_one_access = door_accesses.Copy() + else + T.req_access = door_accesses.Copy() return FALSE - if(!useResource(10, user)) - return FALSE - playsound(loc, usesound, 50, 1) - var/obj/machinery/door/airlock/T = new door_type(A) - T.name = door_name - T.autoclose = TRUE - if(one_access) - T.req_one_access = door_accesses.Copy() - else - T.req_access = door_accesses.Copy() + else + to_chat(user, "ERROR! Not enough matter in unit to construct this airlock!") + playsound(loc, 'sound/machines/click.ogg', 50, 1) return FALSE - return FALSE + else + to_chat(user, "ERROR! No stable floor detected for airlock construction!") + playsound(loc, 'sound/machines/click.ogg', 50, 1) + return FALSE /obj/item/rcd/proc/mode_decon(atom/A, mob/user) if(iswallturf(A)) @@ -305,7 +319,10 @@ GLOBAL_LIST_INIT(rcd_door_types, list( var/turf/AT = A AT.ChangeTurf(/turf/simulated/floor/plating) return TRUE - return FALSE + else + to_chat(user, "ERROR! Not enough matter in unit to deconstruct this wall!") + playsound(loc, 'sound/machines/click.ogg', 50, 1) + return FALSE if(isfloorturf(A)) if(checkResource(5, user)) @@ -318,7 +335,10 @@ GLOBAL_LIST_INIT(rcd_door_types, list( var/turf/AT = A AT.ChangeTurf(/turf/space) return TRUE - return FALSE + else + to_chat(user, "ERROR! Not enough matter in unit to deconstruct this floor!") + playsound(loc, 'sound/machines/click.ogg', 50, 1) + return FALSE if(istype(A, /obj/machinery/door/airlock)) if(checkResource(20, user)) @@ -330,12 +350,17 @@ GLOBAL_LIST_INIT(rcd_door_types, list( playsound(loc, usesound, 50, 1) qdel(A) return TRUE - return FALSE + else + to_chat(user, "ERROR! Not enough matter in unit to deconstruct this airlock!") + playsound(loc, 'sound/machines/click.ogg', 50, 1) + return FALSE if(istype(A, /obj/structure/window)) // You mean the grille of course, do you? A = locate(/obj/structure/grille) in A.loc if(istype(A, /obj/structure/grille)) if(!checkResource(2, user)) + to_chat(user, "ERROR! Not enough matter in unit to deconstruct this window!") + playsound(loc, 'sound/machines/click.ogg', 50, 1) return 0 to_chat(user, "Deconstructing window...") playsound(loc, 'sound/machines/click.ogg', 50, 1) @@ -367,6 +392,8 @@ GLOBAL_LIST_INIT(rcd_door_types, list( if(locate(/obj/structure/grille) in A) return 0 // We already have window if(!checkResource(2, user)) + to_chat(user, "ERROR! Not enough matter in unit to construct this window!") + playsound(loc, 'sound/machines/click.ogg', 50, 1) return 0 to_chat(user, "Constructing window...") playsound(loc, 'sound/machines/click.ogg', 50, 1) @@ -392,6 +419,10 @@ GLOBAL_LIST_INIT(rcd_door_types, list( var/turf/AT = A AT.ChangeTurf(/turf/simulated/floor/plating) // Platings go under windows. return 1 + else + to_chat(user, "ERROR! No stable floor detected for window construction!") + playsound(loc, 'sound/machines/click.ogg', 50, 1) + return 0 /obj/item/rcd/afterattack(atom/A, mob/user, proximity) if(!proximity)