From 224b2f3899ebf7172beb46fe182b47ed78aa030b Mon Sep 17 00:00:00 2001 From: Loganbacca Date: Sun, 20 Jul 2014 19:28:15 +1200 Subject: [PATCH] Duct Tape First pass for adding duct tape. It can stick paper to things. It can patch up walls (crudely). Coder sprites! --- baystation12.dme | 1 + code/game/objects/items/weapons/tape.dm | 83 ++++++++++++++++++++++++ code/game/turfs/simulated/walls.dm | 21 +++++- code/modules/paperwork/paper.dm | 5 ++ icons/obj/bureaucracy.dmi | Bin 10562 -> 11702 bytes 5 files changed, 108 insertions(+), 2 deletions(-) create mode 100644 code/game/objects/items/weapons/tape.dm 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..b7d571f136 --- /dev/null +++ b/code/game/objects/items/weapons/tape.dm @@ -0,0 +1,83 @@ +/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 + +/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() + return stuck.examine() + +/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) + 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/game/turfs/simulated/walls.dm b/code/game/turfs/simulated/walls.dm index d8f91582b6..ca990b342e 100644 --- a/code/game/turfs/simulated/walls.dm +++ b/code/game/turfs/simulated/walls.dm @@ -10,6 +10,8 @@ var/damage_overlay var/global/damage_overlays[8] + + var/list/other_overlays = new() var/max_temperature = 1800 //K, walls will take damage if they're next to a fire hotter than this @@ -55,17 +57,19 @@ if(!damage) overlays.Cut() + overlays += other_overlays return var/overlay = round(damage / damage_cap * damage_overlays.len) + 1 if(overlay > damage_overlays.len) overlay = damage_overlays.len - +/* if(damage_overlay && overlay == damage_overlay) //No need to update. return - +*/ overlays.Cut() overlays += damage_overlays[overlay] + overlays += other_overlays damage_overlay = overlay return @@ -444,6 +448,19 @@ place_poster(W,user) return + else if(istype(W, /obj/item/weapon/tape_roll)) + if(damage) + user << "You patch up [src]." + var/image/I = image(icon = 'icons/obj/bureaucracy.dmi', icon_state = "tape") + I.transform = turn(I.transform, rand(0,360)) + I.pixel_x = rand(-6,6) + I.pixel_y = rand(-6,6) + other_overlays += I + take_damage(-min(10, damage)) + + else if(istype(W, /obj/item/weapon/ducttape)) + return + else return attack_hand(user) return 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 b44265089264032458e63e5724ef75bb8dee1384..775c097c29deec5874bdbb1a47c86aadbcdaf9ec 100644 GIT binary patch literal 11702 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 OQRP zJsDjTL)jrIfClt?q^K0k7_#7FnE%qbw`?k_rXZO=c_su0w)BB*Gylit6rD1E@AJR3 zV2TR^$_!&;V~_@?-69WUcsp-@vZX!~7)x{W3imHWB=`IK`)IV(U^5^A0lDbMfL4r1*q@*ddjcDGzBnT( z>)p>NMa{W)!@|Kq0ifsz1z1>E#C{Hjr+6z!kWY~b0z^vPOVTgPkv5PBL9rwU#M0!{ zw(^`CDk;1cpbX|J40kpU4i1KTyAlp{!5d48!>$AQO$Ht0Q*u?lFCHDoR*GODK7kX zs3&hP>`60TQr52*G71WHb2pch3Y0uNbHu2u8XOWd5*P{nrXq(k$umgB9E6o1nlL1=6Cq`=9Q^RT3WxFX+L5t15xZ`+Nu@B|F#`C z8;x2#Z+fdt28VK85(2KTkvn(Lohq#7*)IC`Ky1I@a%n=yq9mDxo3yOKz00ULwGZRs zH8AaXZwS8FoioAz)JFawLbW#q`LLv*6JhG=>7kL5lK!R4Ld>EC7afi7u>GlUF9=lv z)}YK54j%rO+(#64QZ56~tVbLcAn(&Os8tcW?_m}w-yXX18Z0w7V0TN2gHo!|t1TR> z8W@n-F4Y_IMY+ah?FEq$Z=MeqL`Hj3aWH#p*BJwObU~;*u#klXEzs9H^SzC^mcwN+ zB7f&5Q;*F%6VFswCQkJSp#<;!eeIWdixnFKg(*l7B`;Qty6uD@rYBH_qJSZBY{|yoKMC1Sf literal 10562 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