diff --git a/code/game/objects/items/weapons/RCD.dm b/code/game/objects/items/weapons/RCD.dm index 2a85984094e..a7df1f0adab 100644 --- a/code/game/objects/items/weapons/RCD.dm +++ b/code/game/objects/items/weapons/RCD.dm @@ -162,27 +162,28 @@ if(user.incapacitated() || !user.Adjacent(src)) return FALSE return TRUE - -/obj/item/rcd/attackby(obj/item/W, mob/user, params) - if(!istype(W, /obj/item/rcd_ammo)) - return ..() - - var/obj/item/rcd_ammo/R = W - if((matter + R.ammoamt) > max_matter) +/** +*Tries to load ammo into an RCD, borgs will not use this. +* Arguments: +* * cart - the compressed matter catridge to insert +* * user - the user to display the chat messages to +*/ +/obj/item/rcd/proc/load(obj/item/rcd_ammo/cart, mob/living/user) + if(matter == max_matter) to_chat(user, "The RCD can't hold any more matter-units.") - return - - if(!user.unEquip(R)) - to_chat(user, "[R] is stuck to your hand!") - return - - matter += R.ammoamt - qdel(R) + return FALSE + matter = clamp((matter + cart.ammoamt), 0, 100) + qdel(cart) playsound(loc, 'sound/machines/click.ogg', 50, 1) to_chat(user, "The RCD now holds [matter]/[max_matter] matter-units.") update_icon(UPDATE_OVERLAYS) SStgui.update_uis(src) +/obj/item/rcd/attackby(obj/item/W, mob/user, params) + if(!istype(W, /obj/item/rcd_ammo)) + return ..() + var/obj/item/rcd_ammo/R = W + load(R, user) /** * Creates and displays a radial menu to a user when they trigger the `attack_self` of the RCD. * @@ -690,6 +691,12 @@ materials = list(MAT_METAL=16000, MAT_GLASS=8000) var/ammoamt = 20 +/obj/item/rcd_ammo/attackby(obj/item/I, mob/user) + if(!istype(I, /obj/item/rcd) || issilicon(user)) + return ..() + var/obj/item/rcd/R = I + R.load(src, user) + /obj/item/rcd_ammo/large ammoamt = 100