diff --git a/code/game/objects/effects/aliens.dm b/code/game/objects/effects/aliens.dm
index cc54f73b47c..e65c0e1d5bc 100644
--- a/code/game/objects/effects/aliens.dm
+++ b/code/game/objects/effects/aliens.dm
@@ -441,7 +441,6 @@
gender = PLURAL
name = "acid"
desc = "Burbling corrossive stuff."
- icon = 'icons/effects/effects.dmi'
icon_state = "acid"
density = 0
opacity = 0
diff --git a/code/game/objects/effects/anomalies.dm b/code/game/objects/effects/anomalies.dm
index 29cf1ed7fea..1664a2e858f 100644
--- a/code/game/objects/effects/anomalies.dm
+++ b/code/game/objects/effects/anomalies.dm
@@ -2,7 +2,6 @@
/obj/effect/anomaly
name = "anomaly"
- icon = 'icons/effects/effects.dmi'
desc = "A mysterious anomaly, seen commonly only in the region of space that the station orbits..."
icon_state = "bhole3"
unacidable = 1
diff --git a/code/game/objects/effects/decals/Cleanable/misc.dm b/code/game/objects/effects/decals/Cleanable/misc.dm
index 008a0ab9084..098a2b92bc6 100644
--- a/code/game/objects/effects/decals/Cleanable/misc.dm
+++ b/code/game/objects/effects/decals/Cleanable/misc.dm
@@ -23,7 +23,6 @@
/obj/effect/decal/cleanable/dirt
name = "dirt"
desc = "Someone should clean that up."
- icon = 'icons/effects/effects.dmi'
icon_state = "dirt"
gender = PLURAL
density = 0
@@ -36,7 +35,6 @@
gender = PLURAL
density = 0
layer = 2
- icon = 'icons/effects/effects.dmi'
icon_state = "flour"
/obj/effect/decal/cleanable/greenglow
@@ -46,7 +44,6 @@
density = 0
layer = 2
luminosity = 1
- icon = 'icons/effects/effects.dmi'
icon_state = "greenglow"
/obj/effect/decal/cleanable/greenglow/ex_act()
@@ -57,7 +54,6 @@
desc = "Somebody should remove that."
density = 0
layer = 3
- icon = 'icons/effects/effects.dmi'
icon_state = "cobweb1"
burntime = 1
@@ -77,7 +73,6 @@
desc = "Somebody should remove that."
density = 0
layer = 3
- icon = 'icons/effects/effects.dmi'
icon_state = "cobweb2"
//Vomit (sorry)
@@ -132,7 +127,6 @@
/obj/effect/decal/cleanable/shreds
name = "shreds"
desc = "The shredded remains of what appears to be clothing."
- icon = 'icons/effects/effects.dmi'
icon_state = "shreds"
gender = PLURAL
density = 0
diff --git a/code/game/objects/effects/decals/decal.dm b/code/game/objects/effects/decals/decal.dm
index d9f8cde905d..d54b26ea358 100644
--- a/code/game/objects/effects/decals/decal.dm
+++ b/code/game/objects/effects/decals/decal.dm
@@ -1,6 +1,5 @@
/obj/effect/decal
name = "decal"
- icon = 'icons/effects/effects.dmi'
anchored = 1
/obj/effect/decal/ex_act(severity, target)
diff --git a/code/game/objects/effects/effect_system/effect_system.dm b/code/game/objects/effects/effect_system/effect_system.dm
index a3d38bf1426..76301f15c84 100644
--- a/code/game/objects/effects/effect_system/effect_system.dm
+++ b/code/game/objects/effects/effect_system/effect_system.dm
@@ -8,7 +8,6 @@ would spawn and follow the beaker, even if it is carried or thrown.
/obj/effect/particle_effect
name = "particle effect"
- icon = 'icons/effects/effects.dmi'
mouse_opacity = 0
unacidable = 1//So effects are not targeted by alien acid.
pass_flags = PASSTABLE | PASSGRILLE
diff --git a/code/game/objects/effects/effect_system/effects_water.dm b/code/game/objects/effects/effect_system/effects_water.dm
index 7de71428f7b..cd55f1291a4 100644
--- a/code/game/objects/effects/effect_system/effects_water.dm
+++ b/code/game/objects/effects/effect_system/effects_water.dm
@@ -2,7 +2,6 @@
/obj/effect/particle_effect/water
name = "water"
- icon = 'icons/effects/effects.dmi'
icon_state = "extinguish"
var/life = 15
mouse_opacity = 0
@@ -44,7 +43,6 @@ steam.start() -- spawns the effect
/////////////////////////////////////////////
/obj/effect/particle_effect/steam
name = "steam"
- icon = 'icons/effects/effects.dmi'
icon_state = "extinguish"
density = 0
diff --git a/code/game/objects/effects/forcefields.dm b/code/game/objects/effects/forcefields.dm
index fb738123e0a..d3b65442e82 100644
--- a/code/game/objects/effects/forcefields.dm
+++ b/code/game/objects/effects/forcefields.dm
@@ -1,7 +1,6 @@
/obj/effect/forcefield
desc = "A space wizard's magic wall."
name = "FORCEWALL"
- icon = 'icons/effects/effects.dmi'
icon_state = "m_shield"
anchored = 1
opacity = 0
diff --git a/code/game/objects/effects/overlays.dm b/code/game/objects/effects/overlays.dm
index 7182cea7fd5..6458e4ac39b 100644
--- a/code/game/objects/effects/overlays.dm
+++ b/code/game/objects/effects/overlays.dm
@@ -20,7 +20,6 @@
spawn(10) qdel(src)
/obj/effect/overlay/temp
- icon = 'icons/effects/effects.dmi'
icon_state = "nothing"
anchored = 1
layer = 4.1
diff --git a/code/game/objects/effects/portals.dm b/code/game/objects/effects/portals.dm
index 8d6f3974b76..e616299f688 100644
--- a/code/game/objects/effects/portals.dm
+++ b/code/game/objects/effects/portals.dm
@@ -1,5 +1,6 @@
/obj/effect
+ icon = 'icons/effects/effects.dmi'
/obj/effect/portal
name = "portal"
diff --git a/code/game/objects/effects/spiders.dm b/code/game/objects/effects/spiders.dm
index 3ffd9ded76d..528ccafa5b9 100644
--- a/code/game/objects/effects/spiders.dm
+++ b/code/game/objects/effects/spiders.dm
@@ -2,7 +2,6 @@
/obj/effect/spider
name = "web"
desc = "it's stringy and sticky"
- icon = 'icons/effects/effects.dmi'
anchored = 1
density = 0
var/health = 15
diff --git a/code/game/objects/items/holotape.dm b/code/game/objects/items/holotape.dm
deleted file mode 100644
index d226f984bc9..00000000000
--- a/code/game/objects/items/holotape.dm
+++ /dev/null
@@ -1,254 +0,0 @@
-#define MAX_TAPE_RANGE 3
-//The max length of a line of hazard tape by tile range
-
-//Define all tape types in hazardtape.dm
-/obj/item/tapeproj
- icon = 'icons/obj/holotape.dmi'
- icon_state = "rollstart"
- w_class = 2
- var/turf/start
- var/turf/end
- var/tape_type = /obj/item/holotape
- var/icon_base
- var/charging = 0
- origin_tech = "materials=1;engineering=1"
-
-/obj/item/holotape
- icon = 'icons/obj/holotape.dmi'
- anchored = 1
- density = 1
- var/icon_base
- var/health = 10
-
-/obj/item/tapeproj/security
- name = "security holotape projector"
- desc = "A security hard-light holotape projector used to create holotape. It can be placed in segments along hallways or on airlocks to signify crime scenes."
- icon_state = "security_start"
- tape_type = /obj/item/holotape/security
- icon_base = "security"
-
-/obj/item/holotape/security
- name = "security holotape"
- desc = "A length of security hard-light holotape. It reads: SECURITY LINE | DO NOT CROSS."
- icon_base = "security"
-
-/obj/item/tapeproj/engineering
- name = "engineering holotape projector"
- desc = "An engineering hard-light holotape projector used to create holotape. It can be placed in segments along hallways or on airlocks to show hazardous areas."
- icon_state = "engineering_start"
- tape_type = /obj/item/holotape/engineering
- icon_base = "engineering"
-
-/obj/item/holotape/engineering
- name = "engineering holotape"
- desc = "A length of engineering hard-light holotape. It reads: HAZARD AHEAD // DO NOT CROSS."
- icon_base = "engineering"
-
-/obj/item/tapeproj/dropped()
- reset()
-
-/obj/item/tapeproj/equipped()
- reset()
-
-/obj/item/tapeproj/proc/reset()
- if(icon_state == "[icon_base]_stop")
- icon_state = "[icon_base]_start"
- start = null
- return
-
-/obj/item/tapeproj/attack_self(mob/user)
- if(charging)
- usr << "[src] is recharging!"
- return
- if(icon_state == "[icon_base]_start")
- start = get_turf(src)
- usr << "You project the start of the [icon_base] holotape."
- icon_state = "[icon_base]_stop"
- else
- icon_state = "[icon_base]_start"
- end = get_turf(src)
- if(start.y != end.y && start.x != end.x || start.z != end.z)
- usr << "[src] can only be projected horizontally or vertically."
- return
- if(get_dist(start,end) >= MAX_TAPE_RANGE)
- usr << "Your holotape segment is too long! It must be [MAX_TAPE_RANGE] tiles long or shorter!"
- return
-
- var/turf/cur = start
- var/dir
- if(start.x == end.x)
- var/d = end.y-start.y
- if(d) d = d/abs(d)
- end = get_turf(locate(end.x,end.y+d,end.z))
- dir = "v"
- else
- var/d = end.x-start.x
- if(d) d = d/abs(d)
- end = get_turf(locate(end.x+d,end.y,end.z))
- dir = "h"
-
- var/can_place = 1
- while (cur!=end && can_place)
- if(cur.density == 1)
- can_place = 0
- else if(istype(cur, /turf/space))
- can_place = 0
- else
- for(var/obj/O in cur)
- if(!istype(O, /obj/item/holotape) && O.density)
- can_place = 0
- break
- cur = get_step_towards(cur,end)
- if(!can_place)
- usr << "You can't project the [icon_base] holotape through that!"
- return
-
- cur = start
- var/tapetest = 0
- while (cur!=end)
- for(var/obj/item/holotape/Ptest in cur)
- if(Ptest.icon_state == "[Ptest.icon_base]_[dir]")
- tapetest = 1
- if(tapetest != 1)
- var/obj/item/holotape/P = new tape_type(cur)
- P.icon_state = "[P.icon_base]_[dir]"
- cur = get_step_towards(cur,end)
-
- user.visible_message("[user] finishes projecting the length of [icon_base] holotape.", "You finish projecting the length of [icon_base] holotape.")
-
- charging = 1
- spawn(40)
- charging = 0
-
-/obj/item/tapeproj/afterattack(atom/target, mob/user, proximity_flag, click_parameters)
- if(charging)
- return
-
- if(proximity_flag == 0) // not adjacent
- return
-
- if(istype(target, /obj/machinery/door/airlock) || istype(target, /obj/machinery/door/firedoor) || istype(target, /obj/structure/window))
- var/turf = get_turf(target)
-
- if(locate(tape_type) in turf) //Don't you dare stack tape
- return
-
- if(istype(target, /obj/structure/window))
- var/obj/structure/window/W = target
- if(!(W.dir == 5) || !(W.fulltile == 1))
- return
-
- user << "You start projecting the [icon_base] holotape onto [target]..."
-
- if(!do_mob(user, target, 30))
- return
-
- var/atom/tape = new tape_type(turf)
- tape.icon_state = "[icon_base]_door"
- tape.layer = 3.2
-
- user << "You project the [icon_base] holotape onto [target]."
-
- charging = 1
- spawn(40)
- charging = 0
-
-/obj/item/holotape/Bumped(mob/M)
- if(!ismob(M))
- return
- if(iscarbon(M))
- var/mob/living/carbon/C = M
- if(C.m_intent == "walk")
- var/turf/T = get_turf(src)
- C.loc = T
-
- if(M.has_unlimited_silicon_privilege)
- var/turf/T = get_turf(src)
- M.loc = T
-
-/obj/item/holotape/CanPass(atom/movable/mover, turf/target, height=0, air_group=0)
- if(!density) return 1
- if(air_group || (height==0)) return 1
-
- if((mover.flags & PASSGLASS || istype(mover, /obj/effect/meteor) || mover.throwing == 1) )
- return 1
- else
- return 0
-
-/obj/item/holotape/attack_hand(mob/living/user)
- user.changeNext_move(CLICK_CD_MELEE)
- user.do_attack_animation(src)
- playsound(loc, 'sound/weapons/Egloves.ogg', 80, 1)
- user.visible_message("[user] hits [src].", \
- "You hit [src]." )
-
- health -= rand(1,2)
- healthcheck()
-
-/obj/item/holotape/proc/healthcheck()
- if(health <= 0)
- breaktape()
-
-/obj/item/holotape/ex_act(severity, target)
- breaktape()
-
-/obj/item/holotape/blob_act()
- breaktape()
-
-/obj/item/holotape/attack_paw(mob/living/user)
- attack_hand(user)
-
-/obj/item/holotape/bullet_act(obj/item/projectile/Proj)
- if((Proj.damage_type == BRUTE || Proj.damage_type == BURN))
- health -= Proj.damage
- ..()
- if(health <= 0)
- breaktape()
- return
-
-/obj/item/holotape/attackby(obj/item/weapon/W, mob/user, params)
- user.changeNext_move(CLICK_CD_MELEE)
- add_fingerprint(user)
- health -= W.force * 0.3
-
- healthcheck()
- ..()
- return
-
-/obj/item/holotape/hitby(AM as mob|obj)
- ..()
- var/tforce = 0
- if(ismob(AM))
- tforce = 5
- else if(isobj(AM))
- var/obj/item/I = AM
- tforce = max(0, I.throwforce * 0.5)
- playsound(loc, 'sound/weapons/Egloves.ogg', 80, 1)
- health = max(0, health - tforce)
- healthcheck()
-
-/obj/item/holotape/proc/breaktape()
- var/dir[2]
- var/icon_dir = icon_state
- if(icon_dir == "[icon_base]_h")
- dir[1] = EAST
- dir[2] = WEST
- if(icon_dir == "[icon_base]_v")
- dir[1] = NORTH
- dir[2] = SOUTH
-
- for(var/i=1;i<3;i++)
- var/N = 0
- var/turf/cur = get_step(src,dir[i])
- while(N != 1)
- N = 1
- for (var/obj/item/holotape/P in cur)
- if(P.icon_state == icon_dir)
- N = 0
- qdel(P)
- cur = get_step(cur,dir[i])
-
- qdel(src)
- return
-
-#undef MAX_TAPE_RANGE
diff --git a/code/game/objects/items/weapons/holosign_creator.dm b/code/game/objects/items/weapons/holosign_creator.dm
new file mode 100644
index 00000000000..82b5d28d288
--- /dev/null
+++ b/code/game/objects/items/weapons/holosign_creator.dm
@@ -0,0 +1,176 @@
+/obj/item/weapon/holosign_creator
+ name = "holographic sign projector"
+ desc = "A handy-dandy hologaphic projector that displays a janitorial sign."
+ icon = 'icons/obj/device.dmi'
+ icon_state = "signmaker"
+ item_state = "electronic"
+ force = 0
+ w_class = 2
+ throwforce = 0
+ throw_speed = 3
+ throw_range = 7
+ origin_tech = "programming=3"
+ flags = NOBLUDGEON
+ var/list/signs = list()
+ var/max_signs = 10
+ var/creation_time = 0 //time to create a holosign in deciseconds.
+ var/holosign_type = /obj/effect/overlay/holograph/wetsign
+ var/holocreator_busy = 0 //to prevent placing multiple holo barriers at once
+
+/obj/item/weapon/holosign_creator/afterattack(atom/target, mob/user, flag)
+ if(flag)
+ if(!check_allowed_items(target, 1))
+ return
+ var/turf/T = get_turf(target)
+ var/obj/effect/overlay/holograph/H = locate(holosign_type) in T
+ if(H)
+ user << "You use [src] to deactivate [H]."
+ signs.Remove(H)
+ qdel(H)
+ else
+ if(!T.density) //can't put holograms on a tile that has dense stuff
+ for(var/atom/movable/AM in T)
+ if(AM.density)
+ return
+ if(holocreator_busy)
+ user << "[src] is busy creating a hologram."
+ return
+ if(signs.len < max_signs)
+ playsound(src.loc, 'sound/machines/click.ogg', 20, 1)
+ if(creation_time)
+ holocreator_busy = 1
+ if(!do_after(user, creation_time, target = target))
+ holocreator_busy = 0
+ return
+ holocreator_busy = 0
+ if(signs.len >= max_signs || T.density)
+ return
+ for(var/atom/movable/AM in T) //don't try to sneak dense stuff on our tile during the wait.
+ if(AM.density)
+ return
+ H = new holosign_type(get_turf(target))
+ signs += H
+ user << "You create \a [H] with [src]."
+ else
+ user << "[src] is projecting at max capacity!"
+
+/obj/item/weapon/holosign_creator/attack(mob/living/carbon/human/M, mob/user)
+ return
+
+/obj/item/weapon/holosign_creator/attack_self(mob/user)
+ if(signs.len)
+ var/list/L = signs.Copy()
+ for(var/sign in L)
+ qdel(sign)
+ signs -= sign
+ user << "You clear all active holograms."
+
+
+/obj/item/weapon/holosign_creator/security
+ name = "security holobarrier projector"
+ desc = "A hologaphic projector that creates holographic security barriers."
+ icon_state = "signmaker_sec"
+ holosign_type = /obj/effect/overlay/holograph/barrier
+ creation_time = 30
+ max_signs = 6
+
+/obj/item/weapon/holosign_creator/engineering
+ name = "engineering holobarrier projector"
+ desc = "A hologaphic projector that creates holographic engineering barriers."
+ icon_state = "signmaker_engi"
+ holosign_type = /obj/effect/overlay/holograph/barrier/engineering
+ creation_time = 30
+ max_signs = 6
+
+
+/obj/effect/overlay/holograph
+ icon = 'icons/effects/effects.dmi'
+ anchored = 1
+ var/holo_integrity = 1
+
+/obj/effect/overlay/holograph/wetsign
+ name = "wet floor sign"
+ desc = "The words flicker as if they mean nothing."
+ icon_state = "holosign"
+
+/obj/effect/overlay/holograph/attackby(obj/item/weapon/W, mob/user, params)
+ if(!W.force || (W.flags & (ABSTRACT|NOBLUDGEON)))
+ return
+ if(W.force >= 10)
+ take_damage(3, user)
+ else
+ take_damage(1, user)
+
+/obj/effect/overlay/holograph/blob_act()
+ qdel(src)
+
+/obj/effect/overlay/holograph/attack_animal(mob/living/simple_animal/M)
+ take_damage(5, M)
+
+/obj/effect/overlay/holograph/attack_alien(mob/living/carbon/alien/A)
+ take_damage(5, A)
+
+/obj/effect/overlay/holograph/attack_hand(mob/living/user)
+ take_damage(1, user)
+
+/obj/effect/overlay/holograph/mech_melee_attack(obj/mecha/M)
+ playsound(loc, 'sound/weapons/Egloves.ogg', 80, 1)
+ visible_message("[M.name] has hit [src].")
+ qdel(src)
+
+/obj/effect/overlay/holograph/attack_slime(mob/living/simple_animal/slime/S)
+ if(S.is_adult)
+ take_damage(5, S)
+ else
+ take_damage(2, S)
+
+/obj/effect/overlay/holograph/proc/take_damage(amount, mob/living/user)
+ user.changeNext_move(CLICK_CD_MELEE)
+ user.do_attack_animation(src)
+ playsound(loc, 'sound/weapons/Egloves.ogg', 80, 1)
+ user.visible_message("[user] hits [src].", \
+ "You hit [src]." )
+ holo_integrity -= amount
+ if(holo_integrity <= 0)
+ qdel(src)
+
+/obj/effect/overlay/holograph/bullet_act(obj/item/projectile/P)
+ if((P.damage_type == BRUTE || P.damage_type == BURN))
+ holo_integrity -= P.damage * 0.5
+ if(holo_integrity <= 0)
+ qdel(src)
+
+/obj/effect/overlay/holograph/barrier
+ name = "holo barrier"
+ desc = "A short holographic barrier which can only be passed by walking."
+ icon_state = "holosign_sec"
+ pass_flags = LETPASSTHROW
+ density = 1
+ holo_integrity = 4
+
+/obj/effect/overlay/holograph/barrier/CanPass(atom/movable/mover, turf/target, height=0, air_group=0)
+ if(!density)
+ return 1
+ if(air_group || (height==0))
+ return 1
+ if(mover.pass_flags & (PASSGLASS|PASSTABLE|PASSGRILLE))
+ return 1
+ if(iscarbon(mover))
+ var/mob/living/carbon/C = mover
+ if(C.m_intent == "walk")
+ return 1
+
+/obj/effect/overlay/holograph/barrier/engineering
+ icon_state = "holosign_engi"
+
+/obj/item/weapon/caution
+ desc = "Caution! Wet Floor!"
+ name = "wet floor sign"
+ icon = 'icons/obj/janitor.dmi'
+ icon_state = "caution"
+ force = 1
+ throwforce = 3
+ throw_speed = 2
+ throw_range = 5
+ w_class = 2
+ attack_verb = list("warned", "cautioned", "smashed")
diff --git a/code/game/objects/items/weapons/janisigns.dm b/code/game/objects/items/weapons/janisigns.dm
deleted file mode 100644
index e87e6597cc2..00000000000
--- a/code/game/objects/items/weapons/janisigns.dm
+++ /dev/null
@@ -1,63 +0,0 @@
-/obj/item/weapon/holosign_creator
- name = "holographic sign projector"
- desc = "A handy-dandy hologaphic projector that displays a janitorial sign."
- icon = 'icons/obj/janitor.dmi'
- icon_state = "signmaker"
- item_state = "electronic"
- force = 5
- w_class = 2
- throwforce = 0
- throw_speed = 3
- throw_range = 7
- origin_tech = "programming=3"
- var/list/signs = list()
- var/max_signs = 10
-
-/obj/item/weapon/holosign_creator/afterattack(atom/target, mob/user, flag)
- if(flag)
- if(!check_allowed_items(target, 1)) return
- var/turf/T = get_turf(target)
- var/obj/effect/overlay/holograph/H = locate() in T
- if(H)
- user << "You use [src] to destroy [H]."
- signs.Remove(H)
- qdel(H)
- else
- if(signs.len < max_signs)
- H = new(get_turf(target))
- signs += H
- user << "You create \a [H] with [src]."
- else
- user << "[src] is projecting at max capacity!"
-
-/obj/item/weapon/holosign_creator/attack(mob/living/carbon/human/M, mob/user)
- return
-
-/obj/item/weapon/holosign_creator/attack_self(mob/user)
- if(signs.len)
- var/list/L = signs.Copy()
- for(var/sign in L)
- qdel(sign)
- signs -= sign
- user << "You clear all active holograms."
-
-
-/obj/effect/overlay/holograph
- name = "wet floor sign"
- desc = "The words flicker as if they mean nothing."
- icon = 'icons/obj/janitor.dmi'
- icon_state = "holosign"
- anchored = 1
-
-
-/obj/item/weapon/caution
- desc = "Caution! Wet Floor!"
- name = "wet floor sign"
- icon = 'icons/obj/janitor.dmi'
- icon_state = "caution"
- force = 1
- throwforce = 3
- throw_speed = 2
- throw_range = 5
- w_class = 2
- attack_verb = list("warned", "cautioned", "smashed")
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm b/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm
index 3f6c5c5a31c..53d5a389287 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm
@@ -18,7 +18,7 @@
new /obj/item/weapon/storage/box/permits(src)
new /obj/item/areaeditor/blueprints(src)
new /obj/item/weapon/airlock_painter(src)
- new /obj/item/tapeproj/engineering(src)
+ new /obj/item/weapon/holosign_creator/engineering(src)
new /obj/item/clothing/mask/gas(src)
new /obj/item/device/multitool(src)
new /obj/item/device/assembly/flash/handheld(src)
@@ -40,7 +40,7 @@
new /obj/item/weapon/electronics/apc(src)
for(var/i in 1 to 3)
new /obj/item/device/multitool(src)
-
+
/obj/structure/closet/secure_closet/engineering_welding
name = "welding supplies locker"
req_access = list(access_engine_equip)
@@ -53,7 +53,7 @@
new /obj/item/clothing/head/welding(src)
for(var/i in 1 to 3)
new /obj/item/weapon/weldingtool/largetank(src)
-
+
/obj/structure/closet/secure_closet/engineering_personal
name = "engineer's locker"
req_access = list(access_engine_equip)
@@ -64,7 +64,7 @@
new /obj/item/device/radio/headset/headset_eng(src)
new /obj/item/weapon/storage/toolbox/mechanical(src)
new /obj/item/weapon/tank/internals/emergency_oxygen/engi(src)
- new /obj/item/tapeproj/engineering(src)
+ new /obj/item/weapon/holosign_creator/engineering(src)
new /obj/item/clothing/mask/gas(src)
new /obj/item/clothing/glasses/meson/engine(src)
@@ -81,7 +81,7 @@
new /obj/item/weapon/storage/toolbox/mechanical(src)
new /obj/item/weapon/tank/internals/emergency_oxygen/engi(src)
new /obj/item/device/analyzer(src)
- new /obj/item/tapeproj/engineering(src)
+ new /obj/item/weapon/holosign_creator/engineering(src)
new /obj/item/weapon/watertank/atmos(src)
new /obj/item/clothing/suit/fire/atmos(src)
new /obj/item/clothing/head/hardhat/atmos(src)
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/security.dm b/code/game/objects/structures/crates_lockers/closets/secure/security.dm
index 92af9d9ac21..f9574074328 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/security.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/security.dm
@@ -71,7 +71,7 @@
new /obj/item/weapon/storage/lockbox/loyalty(src)
new /obj/item/weapon/storage/box/flashbangs(src)
new /obj/item/device/megaphone/sec(src)
- new /obj/item/tapeproj/security(src)
+ new /obj/item/weapon/holosign_creator/security(src)
new /obj/item/clothing/mask/gas/sechailer/swat(src)
new /obj/item/weapon/shield/riot/tele(src)
new /obj/item/weapon/melee/baton/loaded(src)
@@ -95,7 +95,7 @@
new /obj/item/clothing/mask/gas/sechailer(src)
new /obj/item/weapon/storage/box/flashbangs(src)
new /obj/item/weapon/storage/box/zipties(src)
- new /obj/item/tapeproj/security(src)
+ new /obj/item/weapon/holosign_creator/security(src)
new /obj/item/weapon/reagent_containers/spray/pepper(src)
new /obj/item/weapon/melee/baton/loaded(src)
new /obj/item/weapon/storage/belt/security/full(src)
@@ -173,7 +173,7 @@
new /obj/item/device/radio/headset/headset_sec/alt(src)
new /obj/item/device/radio/headset/headset_sec(src)
new /obj/item/device/detective_scanner(src)
- new /obj/item/tapeproj/security(src)
+ new /obj/item/weapon/holosign_creator/security(src)
new /obj/item/clothing/suit/armor/vest/det_suit(src)
new /obj/item/ammo_box/c38(src)
new /obj/item/ammo_box/c38(src)
diff --git a/icons/effects/effects.dmi b/icons/effects/effects.dmi
index 26594f4e18b..8b0fa127334 100644
Binary files a/icons/effects/effects.dmi and b/icons/effects/effects.dmi differ
diff --git a/icons/obj/device.dmi b/icons/obj/device.dmi
index e5f8f545b2c..fe476927704 100644
Binary files a/icons/obj/device.dmi and b/icons/obj/device.dmi differ
diff --git a/icons/obj/holotape.dmi b/icons/obj/holotape.dmi
deleted file mode 100644
index d73ef7b7a7f..00000000000
Binary files a/icons/obj/holotape.dmi and /dev/null differ
diff --git a/icons/obj/janitor.dmi b/icons/obj/janitor.dmi
index c231e846829..6bfc5542b58 100644
Binary files a/icons/obj/janitor.dmi and b/icons/obj/janitor.dmi differ
diff --git a/tgstation.dme b/tgstation.dme
index cd0d0a2c446..8bc6da50107 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -532,7 +532,6 @@
#include "code\game\objects\items\crayons.dm"
#include "code\game\objects\items\dehy_carp.dm"
#include "code\game\objects\items\documents.dm"
-#include "code\game\objects\items\holotape.dm"
#include "code\game\objects\items\latexballoon.dm"
#include "code\game\objects\items\nuke_tools.dm"
#include "code\game\objects\items\shooting_range.dm"
@@ -599,8 +598,8 @@
#include "code\game\objects\items\weapons\flamethrower.dm"
#include "code\game\objects\items\weapons\gift_wrappaper.dm"
#include "code\game\objects\items\weapons\handcuffs.dm"
+#include "code\game\objects\items\weapons\holosign_creator.dm"
#include "code\game\objects\items\weapons\holy_weapons.dm"
-#include "code\game\objects\items\weapons\janisigns.dm"
#include "code\game\objects\items\weapons\kitchen.dm"
#include "code\game\objects\items\weapons\manuals.dm"
#include "code\game\objects\items\weapons\mop.dm"