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)