diff --git a/code/game/objects/items/weapons/RCD.dm b/code/game/objects/items/weapons/RCD.dm index f8e716ea69..1cbbf37846 100644 --- a/code/game/objects/items/weapons/RCD.dm +++ b/code/game/objects/items/weapons/RCD.dm @@ -92,6 +92,7 @@ obj/item/weapon/construction return 0 matter -= amount desc = "A [src]. It currently holds [matter]/[max_matter] matter-units." + update_icon() return 1 /obj/item/weapon/construction/proc/checkResource(amount, mob/user) @@ -104,10 +105,14 @@ obj/item/weapon/construction if(!(A in view(7, get_turf(user)))) to_chat(user, "The \'Out of Range\' light on the [src] blinks red.") return FALSE + else + return TRUE /obj/item/weapon/construction/proc/prox_check(proximity) - if(!proximity) - return + if(proximity) + return TRUE + else + return FALSE /obj/item/weapon/construction/rcd @@ -290,6 +295,18 @@ obj/item/weapon/construction airlock_type = /obj/machinery/door/airlock +/obj/item/weapon/construction/rcd/proc/rcd_create(atom/A, mob/user) + var/list/rcd_results = A.rcd_vals(user, src) + if(!rcd_results) + return FALSE + if(do_after(user, rcd_results["delay"] * delay_mod, target = A)) + if(checkResource(rcd_results["cost"], user)) + if(A.rcd_act(user, src, rcd_results["mode"])) + useResource(rcd_results["cost"], user) + activate() + playsound(src.loc, 'sound/machines/click.ogg', 50, 1) + return TRUE + /obj/item/weapon/construction/rcd/New() ..() GLOB.rcd_list += src @@ -321,18 +338,9 @@ obj/item/weapon/construction return FALSE /obj/item/weapon/construction/rcd/afterattack(atom/A, mob/user, proximity) - prox_check() - var/list/rcd_results = A.rcd_vals(user, src) - if(!rcd_results) - return FALSE - if(do_after(user, rcd_results["delay"] * delay_mod, target = A)) - if(checkResource(rcd_results["cost"], user)) - if(A.rcd_act(user, src, rcd_results["mode"])) - useResource(rcd_results["cost"], user) - activate() - playsound(src.loc, 'sound/machines/click.ogg', 50, 1) - return TRUE - + if(!prox_check(proximity)) + return + rcd_create(A, user) /obj/item/weapon/construction/rcd/proc/detonate_pulse() audible_message("[src] begins to vibrate and \ @@ -419,12 +427,14 @@ obj/item/weapon/construction delay_mod = 0.6 ranged = TRUE icon_state = "arcd" + item_state = "rcd" /obj/item/weapon/construction/rcd/arcd/afterattack(atom/A, mob/user) - range_check(A,user) + if(!range_check(A,user)) + return if(target_check(A,user)) user.Beam(A,icon_state="rped_upgrade",time=30) - ..() + rcd_create(A,user) @@ -488,7 +498,8 @@ obj/item/weapon/construction /obj/item/weapon/construction/rld/afterattack(atom/A, mob/user) - range_check(A,user) + if(!range_check(A,user)) + return var/turf/start = get_turf(src) switch(mode) if(REMOVE_MODE) @@ -498,7 +509,7 @@ obj/item/weapon/construction user.Beam(A,icon_state="nzcrentrs_power",time=15) playsound(src.loc, 'sound/machines/click.ogg', 50, 1) if(do_after(user, decondelay, target = A)) - if(!useResource(deconcost, user)) + if(!useResource(deconcost, user)) return 0 activate() qdel(A) @@ -559,9 +570,9 @@ obj/item/weapon/construction playsound(src.loc, 'sound/machines/click.ogg', 50, 1) playsound(src.loc, 'sound/effects/light_flicker.ogg', 50, 1) if(do_after(user, floordelay, target = A)) - if(!istype(F)) + if(!istype(F)) return 0 - if(!useResource(floorcost, user)) + if(!useResource(floorcost, user)) return 0 activate() var/destination = get_turf(A)