diff --git a/baystation12.dme b/baystation12.dme index d6dee8af99..a7176e3b98 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -577,6 +577,7 @@ #include "code\game\objects\items\weapons\surgery_tools.dm" #include "code\game\objects\items\weapons\swords_axes_etc.dm" #include "code\game\objects\items\weapons\table_rack_parts.dm" +#include "code\game\objects\items\weapons\tape.dm" #include "code\game\objects\items\weapons\teleportation.dm" #include "code\game\objects\items\weapons\tools.dm" #include "code\game\objects\items\weapons\twohanded.dm" diff --git a/code/game/objects/items/weapons/tape.dm b/code/game/objects/items/weapons/tape.dm new file mode 100644 index 0000000000..8177c746d7 --- /dev/null +++ b/code/game/objects/items/weapons/tape.dm @@ -0,0 +1,88 @@ +/obj/item/weapon/tape_roll + name = "tape roll" + desc = "A roll of sticky tape. Possibly for taping ducks... or was that ducts?" + icon = 'icons/obj/bureaucracy.dmi' + icon_state = "taperoll" + w_class = 1 + +/* -- Disabled for now until it has a use -- +/obj/item/weapon/tape_roll/attack_self(mob/user as mob) + user << "You remove a length of tape from [src]." + + var/obj/item/weapon/ducttape/tape = new() + user.put_in_hands(tape) +*/ + +/obj/item/weapon/tape_roll/proc/stick(var/obj/item/weapon/W, mob/user as mob) + if(!istype(W, /obj/item/weapon/paper)) + return + + user.drop_from_inventory(W) + var/obj/item/weapon/ducttape/tape = new(get_turf(src)) + tape.attach(W) + user.put_in_hands(tape) + +/obj/item/weapon/ducttape + name = "tape" + desc = "A piece of sticky tape." + icon = 'icons/obj/bureaucracy.dmi' + icon_state = "tape" + w_class = 1 + layer = 4 + anchored = 1 //it's sticky, no you cant move it + + var/obj/item/weapon/stuck = null + +/obj/item/weapon/ducttape/New() + ..() + flags |= NOBLUDGEON + +/obj/item/weapon/ducttape/examine(mob/user as mob) + return stuck.examine(user) + +/obj/item/weapon/ducttape/proc/attach(var/obj/item/weapon/W) + stuck = W + W.forceMove(src) + icon_state = W.icon_state + "_taped" + name = W.name + " (taped)" + +/obj/item/weapon/ducttape/attack_self(mob/user as mob) + if(!stuck) + return + + user << "You remove \the [initial(name)] from [stuck]." + + user.drop_from_inventory(src) + stuck.forceMove(get_turf(src)) + user.put_in_hands(stuck) + stuck = null + del(src) + +/obj/item/weapon/ducttape/afterattack(var/A, mob/user as mob, flag, params) + if(!in_range(user, A) || istype(A, /obj/machinery/door) || !stuck) + return + + var/turf/target_turf = get_turf(A) + var/turf/source_turf = get_turf(user) + + var/dir_offset = 0 + if(target_turf != source_turf) + dir_offset = get_dir(source_turf, target_turf) + + user.drop_from_inventory(src) + forceMove(source_turf) + + if(params) + var/list/mouse_control = params2list(params) + if(mouse_control["icon-x"]) + pixel_x = text2num(mouse_control["icon-x"]) - 16 + if(dir_offset & EAST) + pixel_x += 32 + else if(dir_offset & WEST) + pixel_x -= 32 + if(mouse_control["icon-y"]) + pixel_y = text2num(mouse_control["icon-y"]) - 16 + if(dir_offset & NORTH) + pixel_y += 32 + else if(dir_offset & SOUTH) + pixel_y -= 32 \ No newline at end of file diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm index 8a79226dab..72f827f7ed 100644 --- a/code/modules/paperwork/paper.dm +++ b/code/modules/paperwork/paper.dm @@ -365,6 +365,11 @@ if(user.mind && (user.mind.assigned_role == "Clown")) clown = 1 + if(istype(P, /obj/item/weapon/tape_roll)) + var/obj/item/weapon/tape_roll/tape = P + tape.stick(src, user) + return + if(istype(P, /obj/item/weapon/paper) || istype(P, /obj/item/weapon/photo)) if (istype(P, /obj/item/weapon/paper/carbon)) var/obj/item/weapon/paper/carbon/C = P diff --git a/icons/obj/bureaucracy.dmi b/icons/obj/bureaucracy.dmi index b442650892..2cef74e33a 100644 Binary files a/icons/obj/bureaucracy.dmi and b/icons/obj/bureaucracy.dmi differ