diff --git a/code/datums/organs/organ_external.dm b/code/datums/organs/organ_external.dm
index 3c0443ab6d5..74c28006266 100644
--- a/code/datums/organs/organ_external.dm
+++ b/code/datums/organs/organ_external.dm
@@ -273,6 +273,7 @@
if(germ_level > 0)
for(var/datum/wound/W in wounds) if(!W.bandaged && !W.salved)
W.germ_level = max(W.germ_level, germ_level)
+ update_icon()
return
proc/fracture()
diff --git a/code/datums/supplypacks.dm b/code/datums/supplypacks.dm
index 0e75071a400..42b5f0ba7bd 100755
--- a/code/datums/supplypacks.dm
+++ b/code/datums/supplypacks.dm
@@ -103,6 +103,8 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee
/obj/item/weapon/reagent_containers/food/drinks/shaker,
/obj/item/weapon/reagent_containers/food/drinks/bottle/patron,
/obj/item/weapon/reagent_containers/food/drinks/bottle/goldschlager,
+ /obj/item/weapon/storage/fancy/cigarettes/dromedaryco,
+ /obj/item/weapon/lipstick/random,
/obj/item/weapon/reagent_containers/food/drinks/ale,
/obj/item/weapon/reagent_containers/food/drinks/ale,
/obj/item/weapon/reagent_containers/food/drinks/beer,
@@ -746,6 +748,7 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee
/obj/item/weapon/reagent_containers/glass/paint/black,
/obj/item/weapon/reagent_containers/glass/paint/white,
/obj/item/weapon/reagent_containers/glass/paint/remover,
+ /obj/item/weapon/contraband/poster,
/obj/item/weapon/wrapping_paper,
/obj/item/weapon/wrapping_paper,
/obj/item/weapon/wrapping_paper)
@@ -756,10 +759,7 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee
/datum/supply_packs/randomised/contraband
num_contained = 5
- contains = list(/obj/item/weapon/contraband/poster,
- /obj/item/weapon/storage/fancy/cigarettes/dromedaryco,
- /obj/item/weapon/lipstick/random,
- /obj/item/seeds/bloodtomatoseed,
+ contains = list(/obj/item/seeds/bloodtomatoseed,
/obj/item/weapon/storage/pill_bottle/zoom,
/obj/item/weapon/storage/pill_bottle/happy,
/obj/item/weapon/reagent_containers/food/drinks/bottle/absinthe)
diff --git a/code/game/objects/effects/decals/contraband.dm b/code/game/objects/effects/decals/contraband.dm
index c002698361e..d7ac2baa6fc 100644
--- a/code/game/objects/effects/decals/contraband.dm
+++ b/code/game/objects/effects/decals/contraband.dm
@@ -67,7 +67,7 @@
obj/structure/sign/poster
name = "poster"
- desc = "A large piece of space-resistant printed paper. It's considered contraband."
+ desc = "A large piece of space-resistant printed paper. "
icon = 'icons/obj/contraband.dmi'
anchored = 1
var/serial_number //Will hold the value of src.loc if nobody initialises it
diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm
index 5f4b3d73956..f74740485d2 100644
--- a/code/game/objects/structures/tables_racks.dm
+++ b/code/game/objects/structures/tables_racks.dm
@@ -19,6 +19,7 @@
anchored = 1.0
layer = 2.8
throwpass = 1 //You can throw objects over this, despite it's density.")
+ var/parts = /obj/item/weapon/table_parts
/obj/structure/table/New()
..()
@@ -38,6 +39,12 @@
T.update_icon()
..()
+/obj/structure/table/proc/destroy()
+ new parts(loc)
+ density = 0
+ del(src)
+
+
/obj/structure/table/update_icon()
spawn(2) //So it properly updates when deleting
var/dir_sum = 0
@@ -219,65 +226,34 @@
return
if(3.0)
if (prob(25))
- src.density = 0
+ destroy()
else
return
/obj/structure/table/blob_act()
if(prob(75))
- if(istype(src, /obj/structure/table/woodentable))
- new /obj/item/weapon/table_parts/wood( src.loc )
- del(src)
- return
- new /obj/item/weapon/table_parts( src.loc )
- del(src)
- return
+ destroy()
/obj/structure/table/hand_p(mob/user as mob)
return src.attack_paw(user)
- return
/obj/structure/table/attack_paw(mob/user)
if(HULK in user.mutations)
user.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!" ))
- visible_message("[user] smashes the table apart!")
- if(istype(src, /obj/structure/table/reinforced))
- new /obj/item/weapon/table_parts/reinforced(loc)
- else if(istype(src, /obj/structure/table/woodentable))
- new/obj/item/weapon/table_parts/wood(loc)
- else
- new /obj/item/weapon/table_parts(loc)
- density = 0
- del(src)
+ visible_message("[user] smashes the [src] apart!")
+ destroy()
/obj/structure/table/attack_alien(mob/user)
visible_message("[user] slices [src] apart!")
- if(istype(src, /obj/structure/table/reinforced))
- new /obj/item/weapon/table_parts/reinforced(loc)
- else if(istype(src, /obj/structure/table/woodentable))
- new/obj/item/weapon/table_parts/wood(loc)
- else
- new /obj/item/weapon/table_parts(loc)
- density = 0
- del(src)
-
/obj/structure/table/attack_animal(mob/living/simple_animal/user)
if(user.wall_smash)
visible_message("[user] smashes [src] apart!")
- if(istype(src, /obj/structure/table/reinforced))
- new /obj/item/weapon/table_parts/reinforced(loc)
- else if(istype(src, /obj/structure/table/woodentable))
- new/obj/item/weapon/table_parts/wood(loc)
- else
- new /obj/item/weapon/table_parts(loc)
- density = 0
- del(src)
-
+ destroy()
@@ -285,14 +261,7 @@
if(HULK in user.mutations)
visible_message("[user] smashes [src] apart!")
user.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!" ))
- if(istype(src, /obj/structure/table/reinforced))
- new /obj/item/weapon/table_parts/reinforced(loc)
- else if(istype(src, /obj/structure/table/woodentable))
- new/obj/item/weapon/table_parts/wood(loc)
- else
- new /obj/item/weapon/table_parts(loc)
- density = 0
- del(src)
+ destroy()
/obj/structure/table/CanPass(atom/movable/mover, turf/target, height=0, air_group=0)
@@ -323,9 +292,9 @@
var/mob/living/M = G.affecting
if (G.state < 2)
if(user.a_intent == "hurt")
- if (prob(5)) M.Weaken(5)
- M.apply_damage(6)
- visible_message("\red [G.assailant] slams [G.affecting] against \the [src]!")
+ if (prob(15)) M.Weaken(5)
+ M.apply_damage(8,def_zone = "head")
+ visible_message("\red [G.assailant] slams [G.affecting]'s face against \the [src]!")
playsound(src.loc, 'sound/weapons/tablehit1.ogg', 50, 1)
else
user << "\red You need a better grip to do that!"
@@ -341,10 +310,7 @@
user << "\blue Now disassembling table"
playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1)
if(do_after(user,50))
- new /obj/item/weapon/table_parts( src.loc )
- playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1)
- //SN src = null
- del(src)
+ destroy()
return
if(isrobot(user))
@@ -357,13 +323,10 @@
playsound(src.loc, 'sound/weapons/blade1.ogg', 50, 1)
playsound(src.loc, "sparks", 50, 1)
for(var/mob/O in viewers(user, 4))
- O.show_message("\blue The table was sliced apart by [user]!", 1, "\red You hear metal coming apart.", 2)
- new /obj/item/weapon/table_parts( src.loc )
- del(src)
- return
+ O.show_message("\blue The [src] was sliced apart by [user]!", 1, "\red You hear [src] coming apart.", 2)
+ destroy()
user.drop_item(src)
- //if(W && W.loc) W.loc = src.loc // Unnecessary - see: mob/proc/drop_item(atom) - Doohl
return
@@ -374,46 +337,7 @@
name = "wooden table"
desc = "Do not apply fire to this. Rumour says it burns easily."
icon_state = "wood_table"
-
-
-/obj/structure/table/woodentable/attackby(obj/item/weapon/W as obj, mob/user as mob)
-
- if (istype(W, /obj/item/weapon/grab))
- var/obj/item/weapon/grab/G = W
- if(G.state<2)
- user << "\red You need a better grip to do that!"
- return
- G.affecting.loc = src.loc
- G.affecting.Weaken(5)
- visible_message("\red [G.assailant] puts [G.affecting] on the table.")
- del(W)
- return
- if (istype(W, /obj/item/weapon/wrench))
- user << "\blue Now disassembling the wooden table"
- playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1)
- sleep(50)
- new /obj/item/weapon/table_parts/wood( src.loc )
- playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1)
- del(src)
- return
- if(isrobot(user))
- return
- if(istype(W, /obj/item/weapon/melee/energy/blade))
- var/datum/effect/effect/system/spark_spread/spark_system = new /datum/effect/effect/system/spark_spread()
- spark_system.set_up(5, 0, src.loc)
- spark_system.start()
- playsound(src.loc, 'sound/weapons/blade1.ogg', 50, 1)
- playsound(src.loc, "sparks", 50, 1)
- for(var/mob/O in viewers(user, 4))
- O.show_message("\blue The wooden table was sliced apart by [user]!", 1, "\red You hear wood coming apart.", 2)
- new /obj/item/weapon/table_parts/wood( src.loc )
- del(src)
- return
-
- user.drop_item(src)
- //if(W && W.loc) W.loc = src.loc
- return
-
+ parts = /obj/item/weapon/table_parts/wood
/*
* Reinforced tables
@@ -423,21 +347,10 @@
desc = "A version of the four legged table. It is stronger."
icon_state = "reinf_table"
var/status = 2
+ parts = /obj/item/weapon/table_parts/reinforced
/obj/structure/table/reinforced/attackby(obj/item/weapon/W as obj, mob/user as mob)
-
- if (istype(W, /obj/item/weapon/grab))
- var/obj/item/weapon/grab/G = W
- if(G.state<2)
- user << "\red You need a better grip to do that!"
- return
- G.affecting.loc = src.loc
- G.affecting.Weaken(5)
- visible_message("\red [G.assailant] puts [G.affecting] on the table.")
- del(W)
- return
-
if (istype(W, /obj/item/weapon/weldingtool))
var/obj/item/weapon/weldingtool/WT = W
if(WT.remove_fuel(0, user))
@@ -456,40 +369,13 @@
user << "\blue Table strengthened"
src.status = 2
return
- if(isrobot(user))
- return
- user.drop_item(src)
- //if(W && W.loc) W.loc = src.loc
return
if (istype(W, /obj/item/weapon/wrench))
- if(src.status == 1)
- user << "\blue Now disassembling the reinforced table"
- playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1)
- if (do_after(user, 50))
- new /obj/item/weapon/table_parts/reinforced( src.loc )
- playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1)
- del(src)
+ if(src.status == 2)
return
- if(isrobot(user))
- return
-
- if(istype(W, /obj/item/weapon/melee/energy/blade))
- var/datum/effect/effect/system/spark_spread/spark_system = new /datum/effect/effect/system/spark_spread()
- spark_system.set_up(5, 0, src.loc)
- spark_system.start()
- playsound(src.loc, 'sound/weapons/blade1.ogg', 50, 1)
- playsound(src.loc, "sparks", 50, 1)
- for(var/mob/O in viewers(user, 4))
- O.show_message("\blue The reinforced table was sliced apart by [user]!", 1, "\red You hear metal coming apart.", 2)
- new /obj/item/weapon/table_parts/reinforced( src.loc )
- del(src)
- return
-
- user.drop_item(src)
- //if(W && W.loc) W.loc = src.loc
- return
+ ..()
/*
* Racks
diff --git a/code/game/supplyshuttle.dm b/code/game/supplyshuttle.dm
index 560ef3e49c0..1a86a5ca65a 100644
--- a/code/game/supplyshuttle.dm
+++ b/code/game/supplyshuttle.dm
@@ -570,7 +570,7 @@ var/list/mechtoys = list(
temp += "Request from: [cur_supply_group]
"
for(var/supply_name in supply_shuttle.supply_packs )
var/datum/supply_packs/N = supply_shuttle.supply_packs[supply_name]
- if(N.hidden || N.contraband || N.group != cur_supply_group) continue //Have to send the type instead of a reference to
+ if(N.hidden || (N.contraband && !can_order_contraband) || N.group != cur_supply_group) continue //Have to send the type instead of a reference to
temp += "[supply_name] Cost: [N.cost]
" //the obj because it would get caught by the garbage
/*temp = "Supply points: [supply_shuttle.points]