mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-07-20 19:44:46 +01:00
Duct Tape
First pass for adding duct tape. It can stick paper to things. It can patch up walls (crudely). Coder sprites!
This commit is contained in:
@@ -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"
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 11 KiB |
Reference in New Issue
Block a user