diff --git a/code/game/objects/structures/stool_bed_chair_nest/bench.dm b/code/game/objects/structures/stool_bed_chair_nest/bench.dm new file mode 100644 index 00000000000..60ba1ee25b8 --- /dev/null +++ b/code/game/objects/structures/stool_bed_chair_nest/bench.dm @@ -0,0 +1,338 @@ +/obj/structure/bench + name = "bench frame" + icon = 'icons/obj/bench.dmi' + icon_state = "frame" + desc = "It's a bench, for putting things on. Or standing on, if you really want to." + anchored = 1 + layer = 2.8 + throwpass = 1 + var/maxhealth = 10 + var/health = 10 + + // For racks. + var/can_plate = 1 + + var/manipulating = 0 + var/material/material = null + + // I'd prefer reinforced with carpet/felt/cloth/whatever, but AFAIK it's either harder or impossible to get /obj/item/stack/material of those. + // Convert if/when you can easily get stacks of these. + var/carpeted = 0 + + var/list/connections = list("nw0", "ne0", "sw0", "se0") + + standard + icon_state = "plain_preview" + color = "#EEEEEE" + New() + material = get_material_by_name(DEFAULT_TABLE_MATERIAL) + ..() + + padded + icon_state = "padded_preview" + New() + material = get_material_by_name(DEFAULT_TABLE_MATERIAL) + carpeted = 1 + ..() + +/* +/obj/structure/bench/padded + icon_state = "bench_padded_preview" //set for the map + +/obj/structure/bench/New(var/newloc, var/new_material, var/new_padding_material) + ..(newloc) + if(!new_material) + new_material = DEFAULT_WALL_MATERIAL + material = get_material_by_name(new_material) + if(new_padding_material) + padding_material = get_material_by_name(new_padding_material) + if(!istype(material)) + qdel(src) + return + update_icon() + +/obj/structure/bench/padded/New(var/newloc, var/new_material) + ..(newloc, "steel", "carpet")*/ + +/obj/structure/bench/proc/update_material() + var/old_maxhealth = maxhealth + if(!material) + maxhealth = 10 + else + maxhealth = material.integrity / 2 + + health += maxhealth - old_maxhealth + +/obj/structure/bench/proc/take_damage(amount) + // If the bench is made of a brittle material, and is *not* reinforced with a non-brittle material, damage is multiplied by TABLE_BRITTLE_MATERIAL_MULTIPLIER + if(material && material.is_brittle()) + amount *= TABLE_BRITTLE_MATERIAL_MULTIPLIER + health -= amount + if(health <= 0) + visible_message("\The [src] breaks down!") + return break_to_parts() // if we break and form shards, return them to the caller to do !FUN! things with + +/obj/structure/bench/initialize() + ..() + + // One bench per turf. + for(var/obj/structure/bench/T in loc) + if(T != src) + // There's another bench here that's not us, break to metal. + // break_to_parts calls qdel(src) + break_to_parts(full_return = 1) + return + + // reset color/alpha, since they're set for nice map previews + color = "#ffffff" + alpha = 255 + update_connections(1) + update_icon() + update_desc() + update_material() + +/obj/structure/bench/Destroy() + material = null + update_connections(1) // Update benchs around us to ignore us (material=null forces no connections) + for(var/obj/structure/bench/T in oview(src, 1)) + T.update_icon() + ..() + +/obj/structure/bench/examine(mob/user) + . = ..() + if(health < maxhealth) + switch(health / maxhealth) + if(0.0 to 0.5) + user << "It looks severely damaged!" + if(0.25 to 0.5) + user << "It looks damaged!" + if(0.5 to 1.0) + user << "It has a few scrapes and dents." + +/obj/structure/bench/attackby(obj/item/weapon/W, mob/user) + + if(carpeted && istype(W, /obj/item/weapon/crowbar)) + user.visible_message("\The [user] removes the carpet from \the [src].", + "You remove the carpet from \the [src].") + new /obj/item/stack/tile/carpet(loc) + carpeted = 0 + update_icon() + return 1 + + if(!carpeted && material && istype(W, /obj/item/stack/tile/carpet)) + var/obj/item/stack/tile/carpet/C = W + if(C.use(1)) + user.visible_message("\The [user] adds \the [C] to \the [src].", + "You add \the [C] to \the [src].") + carpeted = 1 + update_icon() + return 1 + else + user << "You don't have enough carpet!" + + if(!carpeted && material && istype(W, /obj/item/weapon/wrench)) + remove_material(W, user) + if(!material) + update_connections(1) + update_icon() + for(var/obj/structure/bench/T in oview(src, 1)) + T.update_icon() + update_desc() + update_material() + return 1 + + if(!carpeted && !material && istype(W, /obj/item/weapon/wrench)) + dismantle(W, user) + return 1 + + if(health < maxhealth && istype(W, /obj/item/weapon/weldingtool)) + var/obj/item/weapon/weldingtool/F = W + if(F.welding) + user << "You begin reparing damage to \the [src]." + playsound(src.loc, 'sound/items/Welder.ogg', 50, 1) + if(!do_after(user, 20) || !F.remove_fuel(1, user)) + return + user.visible_message("\The [user] repairs some damage to \the [src].", + "You repair some damage to \the [src].") + health = max(health+(maxhealth/5), maxhealth) // 20% repair per application + return 1 + + if(!material && can_plate && istype(W, /obj/item/stack/material)) + material = common_material_add(W, user, "plat") + if(material) + update_connections(1) + update_icon() + update_desc() + update_material() + return 1 + + return ..() + +/obj/structure/bench/proc/update_desc() + if(material) + name = "[material.display_name] bench" + else + name = "bench frame" + +// Returns the material to set the bench to. +/obj/structure/bench/proc/common_material_add(obj/item/stack/material/S, mob/user, verb) // Verb is actually verb without 'e' or 'ing', which is added. Works for 'plate'/'plating' and 'reinforce'/'reinforcing'. + var/material/M = S.get_material() + if(!istype(M)) + user << "You cannot [verb]e \the [src] with \the [S]." + return null + + if(manipulating) return M + manipulating = 1 + user << "You begin [verb]ing \the [src] with [M.display_name]." + if(!do_after(user, 20) || !S.use(1)) + manipulating = 0 + return null + user.visible_message("\The [user] [verb]es \the [src] with [M.display_name].", "You finish [verb]ing \the [src].") + manipulating = 0 + return M + +// Returns the material to set the bench to. +/obj/structure/bench/proc/common_material_remove(mob/user, material/M, delay, what, type_holding, sound) + if(!M.stack_type) + user << "You are unable to remove the [what] from this bench!" + return M + + if(manipulating) return M + manipulating = 1 + user.visible_message("\The [user] begins removing the [type_holding] holding \the [src]'s [M.display_name] [what] in place.", + "You begin removing the [type_holding] holding \the [src]'s [M.display_name] [what] in place.") + if(sound) + playsound(src.loc, sound, 50, 1) + if(!do_after(user, 40)) + manipulating = 0 + return M + user.visible_message("\The [user] removes the [M.display_name] [what] from \the [src].", + "You remove the [M.display_name] [what] from \the [src].") + new M.stack_type(src.loc) + manipulating = 0 + return null + +/obj/structure/bench/proc/remove_material(obj/item/weapon/wrench/W, mob/user) + material = common_material_remove(user, material, 20, "plating", "bolts", 'sound/items/Ratchet.ogg') + +/obj/structure/bench/proc/dismantle(obj/item/weapon/wrench/W, mob/user) + if(manipulating) return + manipulating = 1 + user.visible_message("\The [user] begins dismantling \the [src].", + "You begin dismantling \the [src].") + playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) + if(!do_after(user, 20)) + manipulating = 0 + return + user.visible_message("\The [user] dismantles \the [src].", + "You dismantle \the [src].") + new /obj/item/stack/material/steel(src.loc) + qdel(src) + return + +// Returns a list of /obj/item/weapon/material/shard objects that were created as a result of this bench's breakage. +// Used for !fun! things such as embedding shards in the faces of tableslammed people. + +// The repeated +// S = [x].place_shard(loc) +// if(S) shards += S +// is to avoid filling the list with nulls, as place_shard won't place shards of certain materials (holo-wood, holo-steel) + +/obj/structure/bench/proc/break_to_parts(full_return = 0) + var/list/shards = list() + var/obj/item/weapon/material/shard/S = null + if(material) + if(material.stack_type && (full_return || prob(20))) + material.place_sheet(loc) + else + S = material.place_shard(loc) + if(S) shards += S + if(carpeted && (full_return || prob(50))) // Higher chance to get the carpet back intact, since there's no non-intact option + new /obj/item/stack/tile/carpet(src.loc) + if(full_return || prob(20)) + new /obj/item/stack/material/steel(src.loc) + else + var/material/M = get_material_by_name(DEFAULT_WALL_MATERIAL) + S = M.place_shard(loc) + if(S) shards += S + qdel(src) + return shards + +/obj/structure/bench/update_icon() + icon_state = "blank" + overlays.Cut() + + var/image/I + + // Base frame shape. Mostly done for glass/diamond benchs, where this is visible. + for(var/i = 1 to 4) + I = image(icon, dir = 1<<(i-1), icon_state = connections[i]) + overlays += I + + // Standard bench image + if(material) + for(var/i = 1 to 4) + I = image(icon, "[material.icon_base]_[connections[i]]", dir = 1<<(i-1)) + if(material.icon_colour) I.color = material.icon_colour + I.alpha = 255 * material.opacity + overlays += I + + if(carpeted) + for(var/i = 1 to 4) + I = image(icon, "carpet_[connections[i]]", dir = 1<<(i-1)) + overlays += I + +// set propagate if you're updating a bench that should update benches around it too, for example if it's a new bench or something important has changed (like material). +/obj/structure/bench/proc/update_connections(propagate=0) + if(!material) + connections = list("0", "0", "0", "0") + + if(propagate) + for(var/obj/structure/bench/T in oview(src, 1)) + T.update_connections() + return + + var/list/blocked_dirs = list() + for(var/obj/structure/window/W in get_turf(src)) + if(W.is_fulltile()) + connections = list("0", "0", "0", "0") + return + blocked_dirs |= W.dir + + for(var/D in list(NORTH, SOUTH, EAST, WEST) - blocked_dirs) + var/turf/T = get_step(src, D) + for(var/obj/structure/window/W in T) + if(W.is_fulltile() || W.dir == reverse_dir[D]) + blocked_dirs |= D + break + else + if(W.dir != D) // it's off to the side + blocked_dirs |= W.dir|D // blocks the diagonal + + for(var/D in list(NORTHEAST, NORTHWEST, SOUTHEAST, SOUTHWEST) - blocked_dirs) + var/turf/T = get_step(src, D) + + for(var/obj/structure/window/W in T) + if(W.is_fulltile() || W.dir & reverse_dir[D]) + blocked_dirs |= D + break + + // Blocked cardinals block the adjacent diagonals too. Prevents weirdness with benchs. + for(var/x in list(NORTH, SOUTH)) + for(var/y in list(EAST, WEST)) + if((x in blocked_dirs) || (y in blocked_dirs)) + blocked_dirs |= x|y + + var/list/connection_dirs = list() + + for(var/obj/structure/bench/T in orange(src, 1)) + var/T_dir = get_dir(src, T) + if(T_dir in blocked_dirs) continue + if(material && T.material && material.name == T.material.name) + connection_dirs |= T_dir + if(propagate) + spawn(0) + T.update_connections() + T.update_icon() + + connections = dirs_to_corner_states(connection_dirs) diff --git a/code/modules/power/lighting.dm b/code/modules/power/lighting.dm index f3596a5d9a0..f7e7bafc37b 100644 --- a/code/modules/power/lighting.dm +++ b/code/modules/power/lighting.dm @@ -26,6 +26,8 @@ ..() if (fixture_type == "bulb") icon_state = "bulb-construct-stage1" + if (fixture_type == "flamp") + icon_state = "flamp-construct-stage1" /obj/machinery/light_construct/examine(mob/user) if(!..(user, 2)) @@ -71,6 +73,8 @@ src.icon_state = "tube-construct-stage1" if("bulb") src.icon_state = "bulb-construct-stage1" + if("flamp") + src.icon_state = "flamp-construct-stage1" new /obj/item/stack/cable_coil(get_turf(src.loc), 1, "red") user.visible_message("[user.name] removes the wiring from [src].", \ "You remove the wiring from [src].", "You hear a noise.") @@ -86,6 +90,8 @@ src.icon_state = "tube-construct-stage2" if("bulb") src.icon_state = "bulb-construct-stage2" + if("flamp") + src.icon_state = "flamp-construct-stage2" src.stage = 2 user.visible_message("[user.name] adds wires to [src].", \ "You add wires to [src].") @@ -98,6 +104,8 @@ src.icon_state = "tube-empty" if("bulb") src.icon_state = "bulb-empty" + if("flamp") + src.icon_state = "flamp-empty" src.stage = 3 user.visible_message("[user.name] closes [src]'s casing.", \ "You close [src]'s casing.", "You hear a noise.") @@ -109,6 +117,8 @@ newlight = new /obj/machinery/light/built(src.loc) if ("bulb") newlight = new /obj/machinery/light/small/built(src.loc) + if ("flamp") + newlight = new /obj/machinery/light/flamp/built(src.loc) newlight.dir = src.dir src.transfer_fingerprints_to(newlight) @@ -127,6 +137,17 @@ fixture_type = "bulb" sheets_refunded = 1 +/obj/machinery/light_construct/flamp + name = "floor light fixture frame" + desc = "A floor light fixture under construction." + icon = 'icons/obj/lighting.dmi' + icon_state = "flamp-construct-stage1" + anchored = 0 + layer = OBJ_LAYER + stage = 1 + fixture_type = "flamp" + sheets_refunded = 2 + // the standard tube light fixture /obj/machinery/light name = "light fixture" @@ -141,7 +162,6 @@ active_power_usage = 20 power_channel = LIGHT //Lights are calc'd via area so they dont need to be in the machine list var/on = 0 // 1 if on, 0 if off - var/on_gs = 0 var/brightness_range = 10 // luminosity when on, also used in power calculation var/brightness_power = 3 var/brightness_color = null @@ -166,6 +186,18 @@ desc = "A small lighting fixture." light_type = /obj/item/weapon/light/bulb +/obj/machinery/light/flamp + icon_state = "flamp1" + base_state = "flamp" + fitting = "bulb" + brightness_range = 5 + brightness_power = 2 + layer = OBJ_LAYER + brightness_color = "#FFF4E5" + desc = "A floor lamp." + light_type = /obj/item/weapon/light/bulb + var/lamp_shade = 1 + /obj/machinery/light/small/emergency brightness_range = 6 brightness_power = 2 @@ -188,6 +220,12 @@ update(0) ..() +/obj/machinery/light/flamp/built/New() + status = LIGHT_EMPTY + lamp_shade = 0 + update(0) + ..() + // create a new lighting fixture /obj/machinery/light/New() ..() @@ -228,9 +266,29 @@ on = 0 return +/obj/machinery/light/flamp/update_icon() + if(lamp_shade) + base_state = "flampshade" + switch(status) // set icon_states + if(LIGHT_OK) + icon_state = "[base_state][on]" + if(LIGHT_EMPTY) + on = 0 + icon_state = "[base_state][on]" + if(LIGHT_BURNED) + on = 0 + icon_state = "[base_state][on]" + if(LIGHT_BROKEN) + on = 0 + icon_state = "[base_state][on]" + return + else + base_state = "flamp" + ..() + + // update the icon_state and luminosity of the light depending on its state /obj/machinery/light/proc/update(var/trigger = 1) - update_icon() if(on) if(light_range != brightness_range || light_power != brightness_power || light_color != brightness_color) @@ -245,7 +303,7 @@ else if( prob( min(60, switchcount*switchcount*0.01) ) ) if(status == LIGHT_OK && trigger) status = LIGHT_BURNED - icon_state = "[base_state]-burned" + update_icon() on = 0 set_light(0) else @@ -256,8 +314,7 @@ set_light(0) active_power_usage = light_range * light_power - if(on != on_gs) - on_gs = on + /obj/machinery/light/attack_generic(var/mob/user, var/damage) if(!damage) @@ -373,6 +430,11 @@ if("bulb") newlight = new /obj/machinery/light_construct/small(src.loc) newlight.icon_state = "bulb-construct-stage2" + + if("flamp") + newlight = new /obj/machinery/light_construct/flamp(src.loc) + newlight.icon_state = "flamp-construct-stage2" + newlight.dir = src.dir newlight.stage = 2 newlight.fingerprints = src.fingerprints @@ -390,6 +452,25 @@ if (prob(75)) electrocute_mob(user, get_area(src), src, rand(0.7,1.0)) +/obj/machinery/light/flamp/attackby(obj/item/W, mob/user) + if(!lamp_shade) + if(istype(W, /obj/item/weapon/lampshade)) + lamp_shade = 1 + qdel(W) + update_icon() + return + + else + if(istype(W, /obj/item/weapon/screwdriver)) + playsound(src.loc, 'sound/items/Screwdriver.ogg', 75, 1) + user.visible_message("[user.name] removes [src]'s lamp shade.", \ + "You remove [src]'s lamp shade.", "You hear a noise.") + lamp_shade = 0 + new /obj/item/weapon/lampshade(src.loc) + update_icon() + return + + ..() // returns whether this light has power // true if area has power and lightswitch is on @@ -397,6 +478,13 @@ var/area/A = get_area(src) return A && A.lightswitch && (!A.requires_power || A.power_light) +/obj/machinery/light/flamp/has_power() + var/area/A = get_area(src) + if(lamp_shade) + return A && (!A.requires_power || A.power_light) + else + return A && A.lightswitch && (!A.requires_power || A.power_light) + /obj/machinery/light/proc/flicker(var/amount = rand(10, 20)) if(flickering) return flickering = 1 @@ -417,6 +505,10 @@ src.flicker(1) return +/obj/machinery/light/flamp/attack_ai(mob/user) + attack_hand() + return + // attack with hand - remove tube/bulb // if hands aren't protected and the light is on, burn the player /obj/machinery/light/attack_hand(mob/user) @@ -481,6 +573,21 @@ status = LIGHT_EMPTY update() +/obj/machinery/light/flamp/attack_hand(mob/user) + if(lamp_shade) + if(status == LIGHT_EMPTY) + user << "There is no [fitting] in this light." + return + + if(on) + on = 0 + update() + else + on = has_power() + update() + else + ..() + /obj/machinery/light/attack_tk(mob/user) if(status == LIGHT_EMPTY) @@ -708,3 +815,11 @@ sharp = 1 playsound(src.loc, 'sound/effects/Glasshit.ogg', 75, 1) update() + +//Lamp Shade +/obj/item/weapon/lampshade + name = "lamp shade" + desc = "A lamp shade for a lamp." + icon = 'icons/obj/lighting.dmi' + icon_state = "lampshade" + w_class = 1 \ No newline at end of file diff --git a/code/modules/reagents/reagent_containers/food/drinks.dm b/code/modules/reagents/reagent_containers/food/drinks.dm index dea0da4180f..53f910b9c2d 100644 --- a/code/modules/reagents/reagent_containers/food/drinks.dm +++ b/code/modules/reagents/reagent_containers/food/drinks.dm @@ -195,6 +195,7 @@ possible_transfer_amounts = null volume = 10 center_of_mass = list("x"=16, "y"=12) + /obj/item/weapon/reagent_containers/food/drinks/sillycup/New() ..() @@ -204,6 +205,16 @@ else icon_state = "water_cup_e" +/obj/item/weapon/reagent_containers/food/drinks/sillycup/MouseDrop(obj/over_object as obj) + if(!reagents.total_volume) + if(istype(over_object, /obj/structure/reagent_dispensers/water_cooler)) + var/obj/structure/reagent_dispensers/water_cooler/W = over_object + if(W.cupholder && W.cups < 10) + W.cups++ + qdel(src) + W.update_icon() + else + return ..() //////////////////////////drinkingglass and shaker// //Note by Darem: This code handles the mixing of drinks. New drinks go in three places: In Chemistry-Reagents.dm (for the drink diff --git a/code/modules/reagents/reagent_dispenser.dm b/code/modules/reagents/reagent_dispenser.dm index 495a248c53c..0996cf78448 100644 --- a/code/modules/reagents/reagent_dispenser.dm +++ b/code/modules/reagents/reagent_dispenser.dm @@ -203,13 +203,19 @@ possible_transfer_amounts = null anchored = 1 var/bottle = 0 + var/cups = 0 + var/cupholder = 0 + +/obj/structure/reagent_dispensers/water_cooler/full + bottle = 1 + cupholder = 1 + cups = 10 /obj/structure/reagent_dispensers/water_cooler/New() - if(bottle == 1) + if(bottle) ..() reagents.add_reagent("water",120) - else - icon_state = "water_cooler_0" + update_icon() /obj/structure/reagent_dispensers/water_cooler/attackby(obj/item/I as obj, mob/user as mob) if(istype(I, /obj/item/weapon/wrench)) @@ -224,7 +230,7 @@ G.reagents.add_reagent(R.id, total_reagent) reagents.clear_reagents() bottle = 0 - icon_state = "water_cooler_0" + update_icon() else if(anchored) user.visible_message("\The [user] begins unsecuring \the [src] from the floor.", "You start unsecuring \the [src] from the floor.") @@ -237,11 +243,24 @@ return if(istype(I, /obj/item/weapon/screwdriver)) - if(!bottle) + if(cupholder) playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) - user << "You take the water-cooler apart." - new /obj/item/stack/material/plastic( src.loc, 4 ) - qdel(src) + user << "You take the cup dispenser off." + new /obj/item/stack/material/plastic( src.loc ) + if(cups) + for(var/i = 0 to cups) + new /obj/item/weapon/reagent_containers/food/drinks/sillycup(src.loc) + cups = 0 + cupholder = 0 + update_icon() + return + if(!bottle && !cupholder) + playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) + user << "You start taking the water-cooler apart." + if(do_after(user, 20)) + user << "You take the water-cooler apart." + new /obj/item/stack/material/plastic( src.loc, 4 ) + qdel(src) return if(istype(I, /obj/item/weapon/reagent_containers/glass/cooler_bottle)) @@ -252,7 +271,7 @@ user << "You start to screw the bottle onto the water-cooler." if(do_after(user, 20)) bottle = 1 - icon_state = "water_cooler" + update_icon() user << "You screw the bottle onto the water-cooler but accidently spill some!" //you spill some because it for somereason transfers 5 units to the bottle after it gets attached but before it's deleted... for(var/datum/reagent/R in G.reagents.reagent_list) var/total_reagent = G.reagents.get_reagent_amount(R.id) @@ -263,8 +282,46 @@ else user << "There is already a bottle there!" return - else - return ..() + + if(istype(I, /obj/item/stack/material/plastic)) + if(!cupholder) + if(anchored) + var/obj/item/stack/material/plastic/P = I + src.add_fingerprint(user) + user << "You start to attach a cup dispenser onto the water-cooler." + playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) + if(do_after(user, 20)) + if (P.use(1)) + user << "You attach a cup dispenser onto the water-cooler." + cupholder = 1 + update_icon() + else + user << "You need to wrench down the cooler first." + else + user << "There is already a cup dispenser there!" + return + +/obj/structure/reagent_dispensers/water_cooler/attack_hand(mob/user) + if(cups) + new /obj/item/weapon/reagent_containers/food/drinks/sillycup(src.loc) + cups-- + update_icon() + return + +/obj/structure/reagent_dispensers/water_cooler/update_icon() + icon_state = "water_cooler" + overlays.Cut() + var/image/I + if(bottle) + I = image(icon, "water_cooler_bottle") + overlays += I + if(cupholder) + I = image(icon, "water_cooler_cupholder") + overlays += I + if(cups) + I = image(icon, "water_cooler_cups") + overlays += I + return /obj/structure/reagent_dispensers/beerkeg name = "beer keg" diff --git a/code/modules/tables/update_triggers.dm b/code/modules/tables/update_triggers.dm index a90e3eeb8a2..21fb23c82d6 100644 --- a/code/modules/tables/update_triggers.dm +++ b/code/modules/tables/update_triggers.dm @@ -3,6 +3,9 @@ for(var/obj/structure/table/T in view(src, 1)) T.update_connections() T.update_icon() + for(var/obj/structure/bench/T in view(src, 1)) + T.update_connections() + T.update_icon() /obj/structure/window/Destroy() var/oldloc = loc @@ -10,6 +13,9 @@ for(var/obj/structure/table/T in view(oldloc, 1)) T.update_connections() T.update_icon() + for(var/obj/structure/bench/T in view(oldloc, 1)) + T.update_connections() + T.update_icon() loc=oldloc ..() @@ -18,5 +24,8 @@ . = ..() if(loc != oldloc) for(var/obj/structure/table/T in view(oldloc, 1) | view(loc, 1)) + T.update_connections() + T.update_icon() + for(var/obj/structure/bench/T in view(oldloc, 1) | view(loc, 1)) T.update_connections() T.update_icon() \ No newline at end of file diff --git a/icons/atmos/tank.dmi b/icons/atmos/tank.dmi index 322f43e8f09..857b3239a1e 100644 Binary files a/icons/atmos/tank.dmi and b/icons/atmos/tank.dmi differ diff --git a/icons/obj/bench.dmi b/icons/obj/bench.dmi new file mode 100644 index 00000000000..fb8c2123b34 Binary files /dev/null and b/icons/obj/bench.dmi differ diff --git a/icons/obj/bureaucracy.dmi b/icons/obj/bureaucracy.dmi index f8b7e566d31..3656dadce45 100644 Binary files a/icons/obj/bureaucracy.dmi and b/icons/obj/bureaucracy.dmi differ diff --git a/icons/obj/lighting.dmi b/icons/obj/lighting.dmi index 5b453fbfb47..4ef743b6a98 100644 Binary files a/icons/obj/lighting.dmi and b/icons/obj/lighting.dmi differ diff --git a/icons/obj/paper.dmi b/icons/obj/paper.dmi index ca4663df18d..1f881a5de50 100644 Binary files a/icons/obj/paper.dmi and b/icons/obj/paper.dmi differ diff --git a/icons/obj/vending.dmi b/icons/obj/vending.dmi index e4157037b97..5671731aab6 100755 Binary files a/icons/obj/vending.dmi and b/icons/obj/vending.dmi differ diff --git a/polaris.dme b/polaris.dme index 24805a54500..f380db585c2 100644 --- a/polaris.dme +++ b/polaris.dme @@ -856,6 +856,7 @@ #include "code\game\objects\structures\crates_lockers\closets\secure\secure_closets.dm" #include "code\game\objects\structures\crates_lockers\closets\secure\security.dm" #include "code\game\objects\structures\stool_bed_chair_nest\bed.dm" +#include "code\game\objects\structures\stool_bed_chair_nest\bench.dm" #include "code\game\objects\structures\stool_bed_chair_nest\chairs.dm" #include "code\game\objects\structures\stool_bed_chair_nest\stools.dm" #include "code\game\objects\structures\stool_bed_chair_nest\wheelchair.dm"