diff --git a/code/modules/mob/living/silicon/robot/drone/drone_items.dm b/code/modules/mob/living/silicon/robot/drone/drone_items.dm index 8e96af4ae1f..dd908d25d1e 100644 --- a/code/modules/mob/living/silicon/robot/drone/drone_items.dm +++ b/code/modules/mob/living/silicon/robot/drone/drone_items.dm @@ -48,16 +48,22 @@ if(wrapped) wrapped.attack_self(user) -/obj/item/weapon/gripper/verb/drop_item(var/silent = 0) +/obj/item/weapon/gripper/verb/drop_item() set name = "Drop Item" set desc = "Release an item from your magnetic gripper." set category = "Drone" + drop_item_p() + +// The "p" stands for proc, since I was having annoying weird stuff happening with this in the verb +// when trying to have default values for arguments and stuff +/obj/item/weapon/gripper/proc/drop_item_p(var/silent = 0) + if(!wrapped) //There's some weirdness with items being lost inside the arm. Trying to fix all cases. ~Z for(var/obj/item/thing in src.contents) - thing.loc = get_turf(src) + thing.forceMove(get_turf(src)) return if(wrapped.loc != src) @@ -65,10 +71,9 @@ return if(!silent) - src.loc << "\red You drop \the [wrapped]." - wrapped.loc = get_turf(src) + src.loc << "You drop \the [wrapped]." + wrapped.forceMove(get_turf(src)) wrapped = null - //update_icon() /obj/item/weapon/gripper/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob) return @@ -87,7 +92,7 @@ if(wrapped) //Already have an item. //Temporary put wrapped into user so target's attackby() checks pass. - wrapped.loc = user + wrapped.forceMove(user) //Pass the attack on to the target. This might delete/relocate wrapped. if(!target.attackby(wrapped, user, params) && target && wrapped) @@ -97,7 +102,7 @@ //If wrapped did neither get deleted nor put into target, put it back into the gripper. if(wrapped && user && (wrapped.loc == user)) - wrapped.loc = src + wrapped.forceMove(src) else wrapped = null return @@ -120,11 +125,11 @@ //We can grab the item, finally. if(grab) user << "You collect \the [I]." - I.loc = src + I.forceMove(src) wrapped = I return else - user << "\red Your gripper cannot hold \the [target]." + user << "Your gripper cannot hold \the [target]." else if(istype(target,/obj/machinery/power/apc)) var/obj/machinery/power/apc/A = target @@ -135,13 +140,13 @@ A.cell.add_fingerprint(user) A.cell.updateicon() - A.cell.loc = src + A.cell.forceMove(src) A.cell = null A.charging = 0 A.update_icon() - user.visible_message("\red [user] removes the power cell from [A]!", "You remove the power cell.") + user.visible_message("[user] removes the power cell from [A]!", "You remove the power cell.") //TODO: Matter decompiler. /obj/item/weapon/matter_decompiler @@ -176,7 +181,7 @@ for(var/mob/M in T) if(istype(M,/mob/living/simple_animal/lizard) || istype(M,/mob/living/simple_animal/mouse)) - src.loc.visible_message("\red [src.loc] sucks [M] into its decompiler. There's a horrible crunching noise.","\red It's a bit of a struggle, but you manage to suck [M] into your decompiler. It makes a series of visceral crunching noises.") + src.loc.visible_message("[src.loc] sucks [M] into its decompiler. There's a horrible crunching noise.","It's a bit of a struggle, but you manage to suck [M] into your decompiler. It makes a series of visceral crunching noises.") new/obj/effect/decal/cleanable/blood/splatter(get_turf(src)) qdel(M) stored_comms["wood"]++ @@ -192,15 +197,15 @@ if(!istype(D)) return - D << "\red You begin decompiling the other drone." + D << "You begin decompiling the other drone." if(!do_after(D,50, target = target)) - D << "\red You need to remain still while decompiling such a large object." + D << "You need to remain still while decompiling such a large object." return if(!M || !D) return - D << "\red You carefully and thoroughly decompile your downed fellow, storing as much of its resources as you can within yourself." + D << "You carefully and thoroughly decompile your downed fellow, storing as much of its resources as you can within yourself." qdel(M) new/obj/effect/decal/cleanable/blood/oil(get_turf(src)) @@ -273,16 +278,16 @@ grabbed_something = 1 if(grabbed_something) - user << "\blue You deploy your decompiler and clear out the contents of \the [T]." + user << "You deploy your decompiler and clear out the contents of \the [T]." else - user << "\red Nothing on \the [T] is useful to you." + user << "Nothing on \the [T] is useful to you." return //PRETTIER TOOL LIST. /mob/living/silicon/robot/drone/installed_modules() if(weapon_lock) - src << "\red Weapon lock active, unable to use modules! Count:[weaponlock_time]" + src << "Weapon lock active, unable to use modules! Count:[weaponlock_time]" return if(!module) diff --git a/code/modules/mob/living/silicon/robot/inventory.dm b/code/modules/mob/living/silicon/robot/inventory.dm index c65d4ef028b..7a6ce804eff 100644 --- a/code/modules/mob/living/silicon/robot/inventory.dm +++ b/code/modules/mob/living/silicon/robot/inventory.dm @@ -113,7 +113,7 @@ var/obj/item/I = get_active_hand() if(istype(I, /obj/item/weapon/gripper)) var/obj/item/weapon/gripper/G = I - G.drop_item(silent = 1) + G.drop_item_p(silent = 1) return //Helper procs for cyborg modules on the UI.