diff --git a/code/game/machinery/_machinery.dm b/code/game/machinery/_machinery.dm index 054bf07f70..23b398605c 100644 --- a/code/game/machinery/_machinery.dm +++ b/code/game/machinery/_machinery.dm @@ -95,6 +95,7 @@ Class Procs: /obj/machinery name = "machinery" icon = 'icons/obj/stationobjs.dmi' + desc = "Some kind of machine." verb_say = "beeps" verb_yell = "blares" pressure_resistance = 15 diff --git a/code/game/machinery/embedded_controller/access_controller.dm b/code/game/machinery/embedded_controller/access_controller.dm index c23f4d0ba8..5e0d018554 100644 --- a/code/game/machinery/embedded_controller/access_controller.dm +++ b/code/game/machinery/embedded_controller/access_controller.dm @@ -42,6 +42,7 @@ icon = 'icons/obj/airlock_machines.dmi' icon_state = "access_button_standby" name = "access button" + desc = "A button used for the explicit purpose of opening an airlock." var/idDoor var/obj/machinery/door/airlock/door var/obj/machinery/doorButtons/airlock_controller/controller @@ -107,6 +108,7 @@ icon = 'icons/obj/airlock_machines.dmi' icon_state = "access_control_standby" name = "access console" + desc = "A small console that can cycle opening between two airlocks." var/obj/machinery/door/airlock/interiorAirlock var/obj/machinery/door/airlock/exteriorAirlock var/idInterior diff --git a/code/game/machinery/lightswitch.dm b/code/game/machinery/lightswitch.dm index a979ba6398..102be57f9b 100644 --- a/code/game/machinery/lightswitch.dm +++ b/code/game/machinery/lightswitch.dm @@ -6,6 +6,7 @@ icon = 'icons/obj/power.dmi' icon_state = "light1" anchored = TRUE + desc = "Make dark." var/on = TRUE var/area/area = null var/otherarea = null diff --git a/code/game/machinery/pipe/pipe_dispenser.dm b/code/game/machinery/pipe/pipe_dispenser.dm index 39b3760f7e..cedb94b7b3 100644 --- a/code/game/machinery/pipe/pipe_dispenser.dm +++ b/code/game/machinery/pipe/pipe_dispenser.dm @@ -2,6 +2,7 @@ name = "pipe dispenser" icon = 'icons/obj/stationobjs.dmi' icon_state = "pipe_d" + desc = "Dispenses countless types of pipes. Very useful if you need pipes." density = TRUE anchored = TRUE var/wait = 0 @@ -108,6 +109,7 @@ name = "disposal pipe dispenser" icon = 'icons/obj/stationobjs.dmi' icon_state = "pipe_d" + desc = "Dispenses pipes that will ultimately be used to move trash around." density = TRUE anchored = TRUE @@ -183,6 +185,7 @@ Nah icon = 'icons/obj/stationobjs.dmi' icon_state = "pipe_d" density = TRUE + desc = "Dispenses pipes that will move beings around." anchored = TRUE /obj/machinery/pipedispenser/disposal/transit_tube/attack_hand(mob/user) diff --git a/code/game/machinery/porta_turret/portable_turret.dm b/code/game/machinery/porta_turret/portable_turret.dm index b84de7cf18..e9f0f76bc9 100644 --- a/code/game/machinery/porta_turret/portable_turret.dm +++ b/code/game/machinery/porta_turret/portable_turret.dm @@ -12,6 +12,7 @@ layer = OBJ_LAYER invisibility = INVISIBILITY_OBSERVER //the turret is invisible if it's inside its cover density = TRUE + desc = "A covered turret that shoots at its enemies." use_power = IDLE_POWER_USE //this turret uses and requires power idle_power_usage = 50 //when inactive, this turret takes up constant 50 Equipment power active_power_usage = 300 //when active, this turret takes up constant 300 Equipment power @@ -552,6 +553,7 @@ base_icon_state = "syndie" faction = "syndicate" emp_vunerable = 0 + desc = "A ballistic machine gun auto-turret." /obj/machinery/porta_turret/syndicate/energy icon_state = "standard_stun" @@ -560,6 +562,7 @@ stun_projectile_sound = 'sound/weapons/taser.ogg' lethal_projectile = /obj/item/projectile/beam/laser/heavylaser lethal_projectile_sound = 'sound/weapons/lasercannonfire.ogg' + desc = "An energy blaster auto-turret." /obj/machinery/porta_turret/syndicate/setup() return diff --git a/code/game/machinery/porta_turret/portable_turret_construct.dm b/code/game/machinery/porta_turret/portable_turret_construct.dm index 1dbdc52b1e..7eace08636 100644 --- a/code/game/machinery/porta_turret/portable_turret_construct.dm +++ b/code/game/machinery/porta_turret/portable_turret_construct.dm @@ -12,6 +12,7 @@ name = "turret frame" icon = 'icons/obj/turrets.dmi' icon_state = "turret_frame" + desc = "An unfinished covered turret frame." density = TRUE var/build_step = PTURRET_UNSECURED //the current step in the building process var/finish_name = "turret" //the name applied to the product turret diff --git a/code/game/machinery/telecomms/computers/logbrowser.dm b/code/game/machinery/telecomms/computers/logbrowser.dm index 92a4edfcd2..590c8d03a5 100644 --- a/code/game/machinery/telecomms/computers/logbrowser.dm +++ b/code/game/machinery/telecomms/computers/logbrowser.dm @@ -3,6 +3,7 @@ /obj/machinery/computer/telecomms/server name = "telecommunications server monitoring console" icon_screen = "comm_logs" + desc = "Has full access to all details and record of the telecommunications network it's monitoring." var/screen = 0 // the screen number: var/list/servers = list() // the servers located by the computer diff --git a/code/game/machinery/telecomms/computers/telemonitor.dm b/code/game/machinery/telecomms/computers/telemonitor.dm index bccbfd96fd..cb3ae78e72 100644 --- a/code/game/machinery/telecomms/computers/telemonitor.dm +++ b/code/game/machinery/telecomms/computers/telemonitor.dm @@ -8,6 +8,7 @@ /obj/machinery/computer/telecomms/monitor name = "telecommunications monitoring console" icon_screen = "comm_monitor" + desc = "Monitors the details of the telecommunications network it's synced with." var/screen = 0 // the screen number: var/list/machinelist = list() // the machines located by the computer diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm index 0f59d00ab8..83d29457f6 100644 --- a/code/game/objects/items/devices/radio/radio.dm +++ b/code/game/objects/items/devices/radio/radio.dm @@ -4,6 +4,7 @@ suffix = "\[3\]" icon_state = "walkietalkie" item_state = "walkietalkie" + desc = "A basic handheld radio that communicates with local telecommunication networks." dog_fashion = /datum/dog_fashion/back var/on = TRUE // 0 for off var/last_transmission diff --git a/code/game/objects/items/shooting_range.dm b/code/game/objects/items/shooting_range.dm index 28d4d13967..c8249024f8 100644 --- a/code/game/objects/items/shooting_range.dm +++ b/code/game/objects/items/shooting_range.dm @@ -41,7 +41,7 @@ /obj/item/target/syndicate icon_state = "target_s" - desc = "A shooting target that looks like a syndicate scum." + desc = "A shooting target that looks like syndicate scum." hp = 2600 /obj/item/target/alien diff --git a/code/game/objects/items/signs.dm b/code/game/objects/items/signs.dm index c492b752f0..350daa0fc3 100644 --- a/code/game/objects/items/signs.dm +++ b/code/game/objects/items/signs.dm @@ -1,7 +1,7 @@ /obj/item/picket_sign icon_state = "picket" name = "blank picket sign" - desc = "It's blank" + desc = "It's blank." force = 5 w_class = WEIGHT_CLASS_BULKY attack_verb = list("bashed","smacked") diff --git a/code/game/objects/items/storage/fancy.dm b/code/game/objects/items/storage/fancy.dm index b5417e8f8e..435bc64c41 100644 --- a/code/game/objects/items/storage/fancy.dm +++ b/code/game/objects/items/storage/fancy.dm @@ -17,6 +17,7 @@ icon = 'icons/obj/food/containers.dmi' icon_state = "donutbox6" name = "donut box" + desc = "Mmm. Donuts." resistance_flags = FLAMMABLE var/icon_type = "donut" var/spawn_type = null diff --git a/code/game/objects/items/storage/secure.dm b/code/game/objects/items/storage/secure.dm index ef65f2dac3..4d56b6a8e8 100644 --- a/code/game/objects/items/storage/secure.dm +++ b/code/game/objects/items/storage/secure.dm @@ -25,6 +25,7 @@ w_class = WEIGHT_CLASS_NORMAL max_w_class = WEIGHT_CLASS_SMALL max_combined_w_class = 14 + desc = "This shouldn't exist. If it does, create an issue report." /obj/item/storage/secure/examine(mob/user) ..() @@ -177,6 +178,7 @@ icon_opened = "safe0" icon_locking = "safeb" icon_sparking = "safespark" + desc = "Excellent for securing things away from grubby hands." force = 8 w_class = WEIGHT_CLASS_GIGANTIC max_w_class = 8 diff --git a/code/game/objects/items/vending_items.dm b/code/game/objects/items/vending_items.dm index b062c39ee5..e84295f8ed 100644 --- a/code/game/objects/items/vending_items.dm +++ b/code/game/objects/items/vending_items.dm @@ -5,6 +5,7 @@ icon = 'icons/obj/vending_restock.dmi' icon_state = "refill_snack" item_state = "restock_unit" + desc = "A vending machine restock cart." lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi' righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi' flags_1 = CONDUCT_1 diff --git a/code/game/objects/structures/ai_core.dm b/code/game/objects/structures/ai_core.dm index 709d86d4d7..d01cd5a191 100644 --- a/code/game/objects/structures/ai_core.dm +++ b/code/game/objects/structures/ai_core.dm @@ -4,6 +4,7 @@ name = "\improper AI core" icon = 'icons/mob/ai.dmi' icon_state = "0" + desc = "The framework for an artificial intelligence core." max_integrity = 500 var/state = 0 var/datum/ai_laws/laws = new() diff --git a/code/game/objects/structures/door_assembly.dm b/code/game/objects/structures/door_assembly.dm index 9889d07b90..a5173a5f80 100644 --- a/code/game/objects/structures/door_assembly.dm +++ b/code/game/objects/structures/door_assembly.dm @@ -6,6 +6,7 @@ anchored = FALSE density = TRUE max_integrity = 200 + desc = "The mechanical framework for an airlock." var/state = 0 var/mineral = null var/typetext = "" diff --git a/code/game/objects/structures/flora.dm b/code/game/objects/structures/flora.dm index 6aa338f047..c1b6c56bf5 100644 --- a/code/game/objects/structures/flora.dm +++ b/code/game/objects/structures/flora.dm @@ -6,6 +6,7 @@ //trees /obj/structure/flora/tree name = "tree" + desc = "A large tree." density = TRUE pixel_x = -16 layer = FLY_LAYER @@ -40,6 +41,7 @@ /obj/structure/flora/tree/pine name = "pine tree" + desc = "A coniferous pine tree." icon = 'icons/obj/flora/pinetrees.dmi' icon_state = "pine_1" @@ -49,6 +51,7 @@ /obj/structure/flora/tree/pine/xmas name = "xmas tree" + desc = "A wondrous decorated Christmas tree." icon_state = "pine_c" /obj/structure/flora/tree/pine/xmas/Initialize() @@ -57,10 +60,12 @@ /obj/structure/flora/tree/dead icon = 'icons/obj/flora/deadtrees.dmi' + desc = "A dead tree. How it died, you know not." icon_state = "tree_1" /obj/structure/flora/tree/palm icon = 'icons/misc/beach2.dmi' + desc = "A tree straight from the tropics." icon_state = "palm1" /obj/structure/flora/tree/palm/Initialize() @@ -98,6 +103,7 @@ //grass /obj/structure/flora/grass name = "grass" + desc = "A patch of overgrown grass." icon = 'icons/obj/flora/snowflora.dmi' gender = PLURAL //"this is grass" not "this is a grass" @@ -127,6 +133,7 @@ //bushes /obj/structure/flora/bush name = "bush" + desc = "Some type of shrub." icon = 'icons/obj/flora/snowflora.dmi' icon_state = "snowbush1" anchored = TRUE @@ -139,6 +146,7 @@ /obj/structure/flora/ausbushes name = "bush" + desc = "Some kind of plant." icon = 'icons/obj/flora/ausflora.dmi' icon_state = "firstbush_1" @@ -256,6 +264,7 @@ name = "potted plant" icon = 'icons/obj/flora/plants.dmi' icon_state = "plant-01" + desc = "A little bit of nature contained in a pot." layer = ABOVE_MOB_LAYER w_class = WEIGHT_CLASS_HUGE force = 10 @@ -365,6 +374,7 @@ /obj/structure/flora/junglebush name = "bush" + desc = "A wild plant that is found in jungles." icon = 'icons/obj/flora/jungleflora.dmi' icon_state = "busha" diff --git a/code/game/objects/structures/girders.dm b/code/game/objects/structures/girders.dm index 02f6d784df..3d7e9be21a 100644 --- a/code/game/objects/structures/girders.dm +++ b/code/game/objects/structures/girders.dm @@ -1,6 +1,7 @@ /obj/structure/girder name = "girder" icon_state = "girder" + desc = "A large structural assembly made out of metal; It requires a layer of metal before it can be considered a wall." anchored = TRUE density = TRUE layer = BELOW_OBJ_LAYER diff --git a/code/game/objects/structures/transit_tubes/station.dm b/code/game/objects/structures/transit_tubes/station.dm index ffc62ac127..1c2c0c326e 100644 --- a/code/game/objects/structures/transit_tubes/station.dm +++ b/code/game/objects/structures/transit_tubes/station.dm @@ -7,6 +7,7 @@ /obj/structure/transit_tube/station name = "station tube station" icon_state = "closed_station0" + desc = "The lynchpin of the transit system." exit_delay = 1 enter_delay = 2 tube_construction = /obj/structure/c_transit_tube/station diff --git a/code/game/objects/structures/transit_tubes/transit_tube.dm b/code/game/objects/structures/transit_tubes/transit_tube.dm index 10d883d392..e409eb533b 100644 --- a/code/game/objects/structures/transit_tubes/transit_tube.dm +++ b/code/game/objects/structures/transit_tubes/transit_tube.dm @@ -3,6 +3,7 @@ name = "transit tube" icon = 'icons/obj/atmospherics/pipes/transit_tube.dmi' icon_state = "straight" + desc = "A transit tube for moving things around." density = TRUE layer = LOW_ITEM_LAYER anchored = TRUE diff --git a/code/game/objects/structures/transit_tubes/transit_tube_construction.dm b/code/game/objects/structures/transit_tubes/transit_tube_construction.dm index a1f7bcc8de..62e46e49dd 100644 --- a/code/game/objects/structures/transit_tubes/transit_tube_construction.dm +++ b/code/game/objects/structures/transit_tubes/transit_tube_construction.dm @@ -1,158 +1,159 @@ -// transit tube construction - -// normal transit tubes -/obj/structure/c_transit_tube - name = "unattached transit tube" - icon = 'icons/obj/atmospherics/pipes/transit_tube.dmi' - icon_state = "straight" +// transit tube construction + +// normal transit tubes +/obj/structure/c_transit_tube + name = "unattached transit tube" + icon = 'icons/obj/atmospherics/pipes/transit_tube.dmi' + icon_state = "straight" + desc = "An unattached segment of transit tube." density = FALSE - layer = LOW_ITEM_LAYER //same as the built tube + layer = LOW_ITEM_LAYER //same as the built tube anchored = FALSE - var/flipped = 0 - var/build_type = /obj/structure/transit_tube - var/flipped_build_type - var/base_icon - -/obj/structure/c_transit_tube/examine(mob/user) - ..() - to_chat(user, "Alt-click to rotate it clockwise.") - -/obj/structure/c_transit_tube/proc/tube_rotate() - setDir(turn(dir, -90)) - -/obj/structure/c_transit_tube/proc/tube_flip() - if(flipped_build_type) - flipped = !flipped - var/cur_flip = initial(flipped) ? !flipped : flipped - if(cur_flip) - build_type = flipped_build_type - else - build_type = initial(build_type) - icon_state = "[base_icon][flipped]" - else - setDir(turn(dir, 180)) - -// disposals-style flip and rotate verbs -/obj/structure/c_transit_tube/verb/rotate() - set name = "Rotate Tube" - set category = "Object" - set src in view(1) - - if(usr.incapacitated()) - return - - tube_rotate() - -/obj/structure/c_transit_tube/AltClick(mob/user) - ..() - if(user.incapacitated()) - to_chat(user, "You can't do that right now!") - return - if(!in_range(src, user)) - return - tube_rotate() - -/obj/structure/c_transit_tube/verb/flip() - set name = "Flip" - set category = "Object" - set src in view(1) - - if(usr.incapacitated()) - return - tube_flip() - - -/obj/structure/c_transit_tube/attackby(obj/item/I, mob/user, params) - if(istype(I, /obj/item/wrench)) - to_chat(user, "You start attaching the [name]...") - add_fingerprint(user) - playsound(src.loc, I.usesound, 50, 1) - if(do_after(user, 40*I.toolspeed, target = src)) - if(QDELETED(src)) - return - to_chat(user, "You attach the [name].") - var/obj/structure/transit_tube/R = new build_type(loc, dir) - transfer_fingerprints_to(R) - qdel(src) - else - return ..() - -// transit tube station -/obj/structure/c_transit_tube/station - name = "unattached through station" - icon_state = "closed_station0" - build_type = /obj/structure/transit_tube/station - flipped_build_type = /obj/structure/transit_tube/station/flipped - base_icon = "closed_station" - -/obj/structure/c_transit_tube/station/flipped - icon_state = "closed_station1" - flipped = 1 - build_type = /obj/structure/transit_tube/station/flipped - flipped_build_type = /obj/structure/transit_tube/station - - -// reverser station, used for the terminus -/obj/structure/c_transit_tube/station/reverse - name = "unattached terminus station" - icon_state = "closed_terminus0" - build_type = /obj/structure/transit_tube/station/reverse - flipped_build_type = /obj/structure/transit_tube/station/reverse/flipped - base_icon = "closed_terminus" - -/obj/structure/c_transit_tube/station/reverse/flipped - icon_state = "closed_terminus1" - flipped = 1 - build_type = /obj/structure/transit_tube/station/reverse/flipped - flipped_build_type = /obj/structure/transit_tube/station/reverse - - -/obj/structure/c_transit_tube/crossing - icon_state = "crossing" - build_type = /obj/structure/transit_tube/crossing - - -/obj/structure/c_transit_tube/diagonal - icon_state = "diagonal" - build_type = /obj/structure/transit_tube/diagonal - -/obj/structure/c_transit_tube/diagonal/crossing - icon_state = "diagonal_crossing" - build_type = /obj/structure/transit_tube/diagonal/crossing - - -/obj/structure/c_transit_tube/curved - icon_state = "curved0" - build_type = /obj/structure/transit_tube/curved - flipped_build_type = /obj/structure/transit_tube/curved/flipped - base_icon = "curved" - -/obj/structure/c_transit_tube/curved/flipped - icon_state = "curved1" - build_type = /obj/structure/transit_tube/curved/flipped - flipped_build_type = /obj/structure/transit_tube/curved - flipped = 1 - - -/obj/structure/c_transit_tube/junction - icon_state = "junction0" - build_type = /obj/structure/transit_tube/junction - flipped_build_type = /obj/structure/transit_tube/junction/flipped - base_icon = "junction" - - -/obj/structure/c_transit_tube/junction/flipped - icon_state = "junction1" - flipped = 1 - build_type = /obj/structure/transit_tube/junction/flipped - flipped_build_type = /obj/structure/transit_tube/junction - - -//transit tube pod -//see station.dm for the logic -/obj/structure/c_transit_tube_pod - name = "unattached transit tube pod" - icon = 'icons/obj/atmospherics/pipes/transit_tube.dmi' - icon_state = "pod" + var/flipped = 0 + var/build_type = /obj/structure/transit_tube + var/flipped_build_type + var/base_icon + +/obj/structure/c_transit_tube/examine(mob/user) + ..() + to_chat(user, "Alt-click to rotate it clockwise.") + +/obj/structure/c_transit_tube/proc/tube_rotate() + setDir(turn(dir, -90)) + +/obj/structure/c_transit_tube/proc/tube_flip() + if(flipped_build_type) + flipped = !flipped + var/cur_flip = initial(flipped) ? !flipped : flipped + if(cur_flip) + build_type = flipped_build_type + else + build_type = initial(build_type) + icon_state = "[base_icon][flipped]" + else + setDir(turn(dir, 180)) + +// disposals-style flip and rotate verbs +/obj/structure/c_transit_tube/verb/rotate() + set name = "Rotate Tube" + set category = "Object" + set src in view(1) + + if(usr.incapacitated()) + return + + tube_rotate() + +/obj/structure/c_transit_tube/AltClick(mob/user) + ..() + if(user.incapacitated()) + to_chat(user, "You can't do that right now!") + return + if(!in_range(src, user)) + return + tube_rotate() + +/obj/structure/c_transit_tube/verb/flip() + set name = "Flip" + set category = "Object" + set src in view(1) + + if(usr.incapacitated()) + return + tube_flip() + + +/obj/structure/c_transit_tube/attackby(obj/item/I, mob/user, params) + if(istype(I, /obj/item/wrench)) + to_chat(user, "You start attaching the [name]...") + add_fingerprint(user) + playsound(src.loc, I.usesound, 50, 1) + if(do_after(user, 40*I.toolspeed, target = src)) + if(QDELETED(src)) + return + to_chat(user, "You attach the [name].") + var/obj/structure/transit_tube/R = new build_type(loc, dir) + transfer_fingerprints_to(R) + qdel(src) + else + return ..() + +// transit tube station +/obj/structure/c_transit_tube/station + name = "unattached through station" + icon_state = "closed_station0" + build_type = /obj/structure/transit_tube/station + flipped_build_type = /obj/structure/transit_tube/station/flipped + base_icon = "closed_station" + +/obj/structure/c_transit_tube/station/flipped + icon_state = "closed_station1" + flipped = 1 + build_type = /obj/structure/transit_tube/station/flipped + flipped_build_type = /obj/structure/transit_tube/station + + +// reverser station, used for the terminus +/obj/structure/c_transit_tube/station/reverse + name = "unattached terminus station" + icon_state = "closed_terminus0" + build_type = /obj/structure/transit_tube/station/reverse + flipped_build_type = /obj/structure/transit_tube/station/reverse/flipped + base_icon = "closed_terminus" + +/obj/structure/c_transit_tube/station/reverse/flipped + icon_state = "closed_terminus1" + flipped = 1 + build_type = /obj/structure/transit_tube/station/reverse/flipped + flipped_build_type = /obj/structure/transit_tube/station/reverse + + +/obj/structure/c_transit_tube/crossing + icon_state = "crossing" + build_type = /obj/structure/transit_tube/crossing + + +/obj/structure/c_transit_tube/diagonal + icon_state = "diagonal" + build_type = /obj/structure/transit_tube/diagonal + +/obj/structure/c_transit_tube/diagonal/crossing + icon_state = "diagonal_crossing" + build_type = /obj/structure/transit_tube/diagonal/crossing + + +/obj/structure/c_transit_tube/curved + icon_state = "curved0" + build_type = /obj/structure/transit_tube/curved + flipped_build_type = /obj/structure/transit_tube/curved/flipped + base_icon = "curved" + +/obj/structure/c_transit_tube/curved/flipped + icon_state = "curved1" + build_type = /obj/structure/transit_tube/curved/flipped + flipped_build_type = /obj/structure/transit_tube/curved + flipped = 1 + + +/obj/structure/c_transit_tube/junction + icon_state = "junction0" + build_type = /obj/structure/transit_tube/junction + flipped_build_type = /obj/structure/transit_tube/junction/flipped + base_icon = "junction" + + +/obj/structure/c_transit_tube/junction/flipped + icon_state = "junction1" + flipped = 1 + build_type = /obj/structure/transit_tube/junction/flipped + flipped_build_type = /obj/structure/transit_tube/junction + + +//transit tube pod +//see station.dm for the logic +/obj/structure/c_transit_tube_pod + name = "unattached transit tube pod" + icon = 'icons/obj/atmospherics/pipes/transit_tube.dmi' + icon_state = "pod" anchored = FALSE density = FALSE diff --git a/code/game/objects/structures/windoor_assembly.dm b/code/game/objects/structures/windoor_assembly.dm index 6503acf6d3..c4a0d48dde 100644 --- a/code/game/objects/structures/windoor_assembly.dm +++ b/code/game/objects/structures/windoor_assembly.dm @@ -1,370 +1,371 @@ -/* Windoor (window door) assembly -Nodrak - * Step 1: Create a windoor out of rglass - * Step 2: Add r-glass to the assembly to make a secure windoor (Optional) - * Step 3: Rotate or Flip the assembly to face and open the way you want - * Step 4: Wrench the assembly in place - * Step 5: Add cables to the assembly - * Step 6: Set access for the door. - * Step 7: Screwdriver the door to complete - */ - - -/obj/structure/windoor_assembly - icon = 'icons/obj/doors/windoor.dmi' - - name = "windoor Assembly" - icon_state = "l_windoor_assembly01" +/* Windoor (window door) assembly -Nodrak + * Step 1: Create a windoor out of rglass + * Step 2: Add r-glass to the assembly to make a secure windoor (Optional) + * Step 3: Rotate or Flip the assembly to face and open the way you want + * Step 4: Wrench the assembly in place + * Step 5: Add cables to the assembly + * Step 6: Set access for the door. + * Step 7: Screwdriver the door to complete + */ + + +/obj/structure/windoor_assembly + icon = 'icons/obj/doors/windoor.dmi' + + name = "windoor Assembly" + icon_state = "l_windoor_assembly01" + desc = "A small glass and wire assembly for windoors." anchored = FALSE density = FALSE - dir = NORTH - - var/ini_dir - var/obj/item/electronics/airlock/electronics = null - var/created_name = null - - //Vars to help with the icon's name - var/facing = "l" //Does the windoor open to the left or right? + dir = NORTH + + var/ini_dir + var/obj/item/electronics/airlock/electronics = null + var/created_name = null + + //Vars to help with the icon's name + var/facing = "l" //Does the windoor open to the left or right? var/secure = FALSE //Whether or not this creates a secure windoor - var/state = "01" //How far the door assembly has progressed - CanAtmosPass = ATMOS_PASS_PROC - -/obj/structure/windoor_assembly/examine(mob/user) - ..() - to_chat(user, "Alt-click to rotate it clockwise.") - -/obj/structure/windoor_assembly/New(loc, set_dir) - ..() - if(set_dir) - dir = set_dir - ini_dir = dir - air_update_turf(1) - -/obj/structure/windoor_assembly/Destroy() + var/state = "01" //How far the door assembly has progressed + CanAtmosPass = ATMOS_PASS_PROC + +/obj/structure/windoor_assembly/examine(mob/user) + ..() + to_chat(user, "Alt-click to rotate it clockwise.") + +/obj/structure/windoor_assembly/New(loc, set_dir) + ..() + if(set_dir) + dir = set_dir + ini_dir = dir + air_update_turf(1) + +/obj/structure/windoor_assembly/Destroy() density = FALSE - air_update_turf(1) - return ..() - -/obj/structure/windoor_assembly/Move() - var/turf/T = loc - ..() - setDir(ini_dir) - move_update_air(T) - -/obj/structure/windoor_assembly/update_icon() - icon_state = "[facing]_[secure ? "secure_" : ""]windoor_assembly[state]" - + air_update_turf(1) + return ..() + +/obj/structure/windoor_assembly/Move() + var/turf/T = loc + ..() + setDir(ini_dir) + move_update_air(T) + +/obj/structure/windoor_assembly/update_icon() + icon_state = "[facing]_[secure ? "secure_" : ""]windoor_assembly[state]" + /obj/structure/windoor_assembly/CanPass(atom/movable/mover, turf/target) - if(istype(mover) && mover.checkpass(PASSGLASS)) - return 1 - if(get_dir(loc, target) == dir) //Make sure looking at appropriate border - return !density - if(istype(mover, /obj/structure/window)) - var/obj/structure/window/W = mover - if(!valid_window_location(loc, W.ini_dir)) - return FALSE - else if(istype(mover, /obj/structure/windoor_assembly)) - var/obj/structure/windoor_assembly/W = mover - if(!valid_window_location(loc, W.ini_dir)) - return FALSE - else if(istype(mover, /obj/machinery/door/window) && !valid_window_location(loc, mover.dir)) - return FALSE - return 1 - -/obj/structure/windoor_assembly/CanAtmosPass(turf/T) - if(get_dir(loc, T) == dir) - return !density - else - return 1 - -/obj/structure/windoor_assembly/CheckExit(atom/movable/mover as mob|obj, turf/target) - if(istype(mover) && mover.checkpass(PASSGLASS)) - return 1 - if(get_dir(loc, target) == dir) - return !density - else - return 1 - - -/obj/structure/windoor_assembly/attackby(obj/item/W, mob/user, params) - //I really should have spread this out across more states but thin little windoors are hard to sprite. - add_fingerprint(user) - switch(state) - if("01") - if(istype(W, /obj/item/weldingtool) && !anchored ) - var/obj/item/weldingtool/WT = W - if (WT.remove_fuel(0,user)) - user.visible_message("[user] disassembles the windoor assembly.", "You start to disassemble the windoor assembly...") - playsound(loc, 'sound/items/welder2.ogg', 50, 1) - - if(do_after(user, 40*W.toolspeed, target = src)) - if(!src || !WT.isOn()) return - to_chat(user, "You disassemble the windoor assembly.") - var/obj/item/stack/sheet/rglass/RG = new (get_turf(src), 5) - RG.add_fingerprint(user) - if(secure) - var/obj/item/stack/rods/R = new (get_turf(src), 4) - R.add_fingerprint(user) - qdel(src) - else - return - - //Wrenching an unsecure assembly anchors it in place. Step 4 complete - if(istype(W, /obj/item/wrench) && !anchored) - for(var/obj/machinery/door/window/WD in loc) - if(WD.dir == dir) - to_chat(user, "There is already a windoor in that location!") - return - playsound(loc, W.usesound, 100, 1) - user.visible_message("[user] secures the windoor assembly to the floor.", "You start to secure the windoor assembly to the floor...") - - if(do_after(user, 40*W.toolspeed, target = src)) - if(!src || anchored) - return - for(var/obj/machinery/door/window/WD in loc) - if(WD.dir == dir) - to_chat(user, "There is already a windoor in that location!") - return - to_chat(user, "You secure the windoor assembly.") + if(istype(mover) && mover.checkpass(PASSGLASS)) + return 1 + if(get_dir(loc, target) == dir) //Make sure looking at appropriate border + return !density + if(istype(mover, /obj/structure/window)) + var/obj/structure/window/W = mover + if(!valid_window_location(loc, W.ini_dir)) + return FALSE + else if(istype(mover, /obj/structure/windoor_assembly)) + var/obj/structure/windoor_assembly/W = mover + if(!valid_window_location(loc, W.ini_dir)) + return FALSE + else if(istype(mover, /obj/machinery/door/window) && !valid_window_location(loc, mover.dir)) + return FALSE + return 1 + +/obj/structure/windoor_assembly/CanAtmosPass(turf/T) + if(get_dir(loc, T) == dir) + return !density + else + return 1 + +/obj/structure/windoor_assembly/CheckExit(atom/movable/mover as mob|obj, turf/target) + if(istype(mover) && mover.checkpass(PASSGLASS)) + return 1 + if(get_dir(loc, target) == dir) + return !density + else + return 1 + + +/obj/structure/windoor_assembly/attackby(obj/item/W, mob/user, params) + //I really should have spread this out across more states but thin little windoors are hard to sprite. + add_fingerprint(user) + switch(state) + if("01") + if(istype(W, /obj/item/weldingtool) && !anchored ) + var/obj/item/weldingtool/WT = W + if (WT.remove_fuel(0,user)) + user.visible_message("[user] disassembles the windoor assembly.", "You start to disassemble the windoor assembly...") + playsound(loc, 'sound/items/welder2.ogg', 50, 1) + + if(do_after(user, 40*W.toolspeed, target = src)) + if(!src || !WT.isOn()) return + to_chat(user, "You disassemble the windoor assembly.") + var/obj/item/stack/sheet/rglass/RG = new (get_turf(src), 5) + RG.add_fingerprint(user) + if(secure) + var/obj/item/stack/rods/R = new (get_turf(src), 4) + R.add_fingerprint(user) + qdel(src) + else + return + + //Wrenching an unsecure assembly anchors it in place. Step 4 complete + if(istype(W, /obj/item/wrench) && !anchored) + for(var/obj/machinery/door/window/WD in loc) + if(WD.dir == dir) + to_chat(user, "There is already a windoor in that location!") + return + playsound(loc, W.usesound, 100, 1) + user.visible_message("[user] secures the windoor assembly to the floor.", "You start to secure the windoor assembly to the floor...") + + if(do_after(user, 40*W.toolspeed, target = src)) + if(!src || anchored) + return + for(var/obj/machinery/door/window/WD in loc) + if(WD.dir == dir) + to_chat(user, "There is already a windoor in that location!") + return + to_chat(user, "You secure the windoor assembly.") anchored = TRUE - if(secure) - name = "secure anchored windoor assembly" - else - name = "anchored windoor assembly" - - //Unwrenching an unsecure assembly un-anchors it. Step 4 undone - else if(istype(W, /obj/item/wrench) && anchored) - playsound(loc, W.usesound, 100, 1) - user.visible_message("[user] unsecures the windoor assembly to the floor.", "You start to unsecure the windoor assembly to the floor...") - - if(do_after(user, 40*W.toolspeed, target = src)) - if(!src || !anchored) - return - to_chat(user, "You unsecure the windoor assembly.") + if(secure) + name = "secure anchored windoor assembly" + else + name = "anchored windoor assembly" + + //Unwrenching an unsecure assembly un-anchors it. Step 4 undone + else if(istype(W, /obj/item/wrench) && anchored) + playsound(loc, W.usesound, 100, 1) + user.visible_message("[user] unsecures the windoor assembly to the floor.", "You start to unsecure the windoor assembly to the floor...") + + if(do_after(user, 40*W.toolspeed, target = src)) + if(!src || !anchored) + return + to_chat(user, "You unsecure the windoor assembly.") anchored = FALSE - if(secure) - name = "secure windoor assembly" - else - name = "windoor assembly" - - //Adding plasteel makes the assembly a secure windoor assembly. Step 2 (optional) complete. - else if(istype(W, /obj/item/stack/sheet/plasteel) && !secure) - var/obj/item/stack/sheet/plasteel/P = W - if(P.get_amount() < 2) - to_chat(user, "You need more plasteel to do this!") - return - to_chat(user, "You start to reinforce the windoor with plasteel...") - - if(do_after(user,40, target = src)) - if(!src || secure || P.get_amount() < 2) - return - - P.use(2) - to_chat(user, "You reinforce the windoor.") + if(secure) + name = "secure windoor assembly" + else + name = "windoor assembly" + + //Adding plasteel makes the assembly a secure windoor assembly. Step 2 (optional) complete. + else if(istype(W, /obj/item/stack/sheet/plasteel) && !secure) + var/obj/item/stack/sheet/plasteel/P = W + if(P.get_amount() < 2) + to_chat(user, "You need more plasteel to do this!") + return + to_chat(user, "You start to reinforce the windoor with plasteel...") + + if(do_after(user,40, target = src)) + if(!src || secure || P.get_amount() < 2) + return + + P.use(2) + to_chat(user, "You reinforce the windoor.") secure = TRUE - if(anchored) - name = "secure anchored windoor assembly" - else - name = "secure windoor assembly" - - //Adding cable to the assembly. Step 5 complete. - else if(istype(W, /obj/item/stack/cable_coil) && anchored) - user.visible_message("[user] wires the windoor assembly.", "You start to wire the windoor assembly...") - - if(do_after(user, 40, target = src)) - if(!src || !anchored || src.state != "01") - return - var/obj/item/stack/cable_coil/CC = W - if(!CC.use(1)) - to_chat(user, "You need more cable to do this!") - return - to_chat(user, "You wire the windoor.") - state = "02" - if(secure) - name = "secure wired windoor assembly" - else - name = "wired windoor assembly" - else - return ..() - - if("02") - - //Removing wire from the assembly. Step 5 undone. - if(istype(W, /obj/item/wirecutters)) - playsound(loc, W.usesound, 100, 1) - user.visible_message("[user] cuts the wires from the airlock assembly.", "You start to cut the wires from airlock assembly...") - - if(do_after(user, 40*W.toolspeed, target = src)) - if(!src || state != "02") - return - - to_chat(user, "You cut the windoor wires.") - new/obj/item/stack/cable_coil(get_turf(user), 1) - state = "01" - if(secure) - name = "secure anchored windoor assembly" - else - name = "anchored windoor assembly" - - //Adding airlock electronics for access. Step 6 complete. - else if(istype(W, /obj/item/electronics/airlock)) - if(!user.drop_item()) - return - playsound(loc, W.usesound, 100, 1) - user.visible_message("[user] installs the electronics into the airlock assembly.", "You start to install electronics into the airlock assembly...") - W.loc = src - - if(do_after(user, 40, target = src)) - if(!src || electronics) - W.loc = src.loc - return - to_chat(user, "You install the airlock electronics.") - name = "near finished windoor assembly" - electronics = W - else - W.loc = loc - - //Screwdriver to remove airlock electronics. Step 6 undone. - else if(istype(W, /obj/item/screwdriver)) - if(!electronics) - return - - playsound(loc, W.usesound, 100, 1) - user.visible_message("[user] removes the electronics from the airlock assembly.", "You start to uninstall electronics from the airlock assembly...") - - if(do_after(user, 40*W.toolspeed, target = src)) - if(!src || !electronics) - return - to_chat(user, "You remove the airlock electronics.") - name = "wired windoor assembly" - var/obj/item/electronics/airlock/ae - ae = electronics - electronics = null - ae.loc = loc - - else if(istype(W, /obj/item/pen)) - var/t = stripped_input(user, "Enter the name for the door.", name, created_name,MAX_NAME_LEN) - if(!t) - return - if(!in_range(src, usr) && loc != usr) - return - created_name = t - return - - - - //Crowbar to complete the assembly, Step 7 complete. - else if(istype(W, /obj/item/crowbar)) - if(!electronics) - to_chat(usr, "The assembly is missing electronics!") - return - usr << browse(null, "window=windoor_access") - playsound(loc, W.usesound, 100, 1) - user.visible_message("[user] pries the windoor into the frame.", "You start prying the windoor into the frame...") - - if(do_after(user, 40*W.toolspeed, target = src)) - - if(loc && electronics) - + if(anchored) + name = "secure anchored windoor assembly" + else + name = "secure windoor assembly" + + //Adding cable to the assembly. Step 5 complete. + else if(istype(W, /obj/item/stack/cable_coil) && anchored) + user.visible_message("[user] wires the windoor assembly.", "You start to wire the windoor assembly...") + + if(do_after(user, 40, target = src)) + if(!src || !anchored || src.state != "01") + return + var/obj/item/stack/cable_coil/CC = W + if(!CC.use(1)) + to_chat(user, "You need more cable to do this!") + return + to_chat(user, "You wire the windoor.") + state = "02" + if(secure) + name = "secure wired windoor assembly" + else + name = "wired windoor assembly" + else + return ..() + + if("02") + + //Removing wire from the assembly. Step 5 undone. + if(istype(W, /obj/item/wirecutters)) + playsound(loc, W.usesound, 100, 1) + user.visible_message("[user] cuts the wires from the airlock assembly.", "You start to cut the wires from airlock assembly...") + + if(do_after(user, 40*W.toolspeed, target = src)) + if(!src || state != "02") + return + + to_chat(user, "You cut the windoor wires.") + new/obj/item/stack/cable_coil(get_turf(user), 1) + state = "01" + if(secure) + name = "secure anchored windoor assembly" + else + name = "anchored windoor assembly" + + //Adding airlock electronics for access. Step 6 complete. + else if(istype(W, /obj/item/electronics/airlock)) + if(!user.drop_item()) + return + playsound(loc, W.usesound, 100, 1) + user.visible_message("[user] installs the electronics into the airlock assembly.", "You start to install electronics into the airlock assembly...") + W.loc = src + + if(do_after(user, 40, target = src)) + if(!src || electronics) + W.loc = src.loc + return + to_chat(user, "You install the airlock electronics.") + name = "near finished windoor assembly" + electronics = W + else + W.loc = loc + + //Screwdriver to remove airlock electronics. Step 6 undone. + else if(istype(W, /obj/item/screwdriver)) + if(!electronics) + return + + playsound(loc, W.usesound, 100, 1) + user.visible_message("[user] removes the electronics from the airlock assembly.", "You start to uninstall electronics from the airlock assembly...") + + if(do_after(user, 40*W.toolspeed, target = src)) + if(!src || !electronics) + return + to_chat(user, "You remove the airlock electronics.") + name = "wired windoor assembly" + var/obj/item/electronics/airlock/ae + ae = electronics + electronics = null + ae.loc = loc + + else if(istype(W, /obj/item/pen)) + var/t = stripped_input(user, "Enter the name for the door.", name, created_name,MAX_NAME_LEN) + if(!t) + return + if(!in_range(src, usr) && loc != usr) + return + created_name = t + return + + + + //Crowbar to complete the assembly, Step 7 complete. + else if(istype(W, /obj/item/crowbar)) + if(!electronics) + to_chat(usr, "The assembly is missing electronics!") + return + usr << browse(null, "window=windoor_access") + playsound(loc, W.usesound, 100, 1) + user.visible_message("[user] pries the windoor into the frame.", "You start prying the windoor into the frame...") + + if(do_after(user, 40*W.toolspeed, target = src)) + + if(loc && electronics) + density = TRUE //Shouldn't matter but just incase - to_chat(user, "You finish the windoor.") - - if(secure) - var/obj/machinery/door/window/brigdoor/windoor = new /obj/machinery/door/window/brigdoor(loc) - if(facing == "l") - windoor.icon_state = "leftsecureopen" - windoor.base_state = "leftsecure" - else - windoor.icon_state = "rightsecureopen" - windoor.base_state = "rightsecure" - windoor.setDir(dir) + to_chat(user, "You finish the windoor.") + + if(secure) + var/obj/machinery/door/window/brigdoor/windoor = new /obj/machinery/door/window/brigdoor(loc) + if(facing == "l") + windoor.icon_state = "leftsecureopen" + windoor.base_state = "leftsecure" + else + windoor.icon_state = "rightsecureopen" + windoor.base_state = "rightsecure" + windoor.setDir(dir) windoor.density = FALSE - - if(electronics.one_access) - windoor.req_one_access = electronics.accesses - else - windoor.req_access = electronics.accesses - windoor.electronics = electronics - electronics.loc = windoor - if(created_name) - windoor.name = created_name - qdel(src) - windoor.close() - - - else - var/obj/machinery/door/window/windoor = new /obj/machinery/door/window(loc) - if(facing == "l") - windoor.icon_state = "leftopen" - windoor.base_state = "left" - else - windoor.icon_state = "rightopen" - windoor.base_state = "right" - windoor.setDir(dir) + + if(electronics.one_access) + windoor.req_one_access = electronics.accesses + else + windoor.req_access = electronics.accesses + windoor.electronics = electronics + electronics.loc = windoor + if(created_name) + windoor.name = created_name + qdel(src) + windoor.close() + + + else + var/obj/machinery/door/window/windoor = new /obj/machinery/door/window(loc) + if(facing == "l") + windoor.icon_state = "leftopen" + windoor.base_state = "left" + else + windoor.icon_state = "rightopen" + windoor.base_state = "right" + windoor.setDir(dir) windoor.density = FALSE - - windoor.req_access = electronics.accesses - windoor.electronics = electronics - electronics.loc = windoor - if(created_name) - windoor.name = created_name - qdel(src) - windoor.close() - - - else - return ..() - - //Update to reflect changes(if applicable) - update_icon() - - -//Rotates the windoor assembly clockwise -/obj/structure/windoor_assembly/verb/revrotate() - set name = "Rotate Windoor Assembly" - set category = "Object" - set src in oview(1) - if(usr.stat || !usr.canmove || usr.restrained()) - return - if(anchored) - to_chat(usr, "[src] cannot be rotated while it is fastened to the floor!") - return FALSE - - var/target_dir = turn(dir, 270) - - if(!valid_window_location(loc, target_dir)) - to_chat(usr, "[src] cannot be rotated in that direction!") - return FALSE - - setDir(target_dir) - - ini_dir = dir - update_icon() - return TRUE - -/obj/structure/windoor_assembly/AltClick(mob/user) - ..() - if(user.incapacitated()) - to_chat(user, "You can't do that right now!") - return - if(!in_range(src, user)) - return - else - revrotate() - -//Flips the windoor assembly, determines whather the door opens to the left or the right -/obj/structure/windoor_assembly/verb/flip() - set name = "Flip Windoor Assembly" - set category = "Object" - set src in oview(1) - if(usr.stat || !usr.canmove || usr.restrained()) - return - - if(facing == "l") - to_chat(usr, "The windoor will now slide to the right.") - facing = "r" - else - facing = "l" - to_chat(usr, "The windoor will now slide to the left.") - - update_icon() - return + + windoor.req_access = electronics.accesses + windoor.electronics = electronics + electronics.loc = windoor + if(created_name) + windoor.name = created_name + qdel(src) + windoor.close() + + + else + return ..() + + //Update to reflect changes(if applicable) + update_icon() + + +//Rotates the windoor assembly clockwise +/obj/structure/windoor_assembly/verb/revrotate() + set name = "Rotate Windoor Assembly" + set category = "Object" + set src in oview(1) + if(usr.stat || !usr.canmove || usr.restrained()) + return + if(anchored) + to_chat(usr, "[src] cannot be rotated while it is fastened to the floor!") + return FALSE + + var/target_dir = turn(dir, 270) + + if(!valid_window_location(loc, target_dir)) + to_chat(usr, "[src] cannot be rotated in that direction!") + return FALSE + + setDir(target_dir) + + ini_dir = dir + update_icon() + return TRUE + +/obj/structure/windoor_assembly/AltClick(mob/user) + ..() + if(user.incapacitated()) + to_chat(user, "You can't do that right now!") + return + if(!in_range(src, user)) + return + else + revrotate() + +//Flips the windoor assembly, determines whather the door opens to the left or the right +/obj/structure/windoor_assembly/verb/flip() + set name = "Flip Windoor Assembly" + set category = "Object" + set src in oview(1) + if(usr.stat || !usr.canmove || usr.restrained()) + return + + if(facing == "l") + to_chat(usr, "The windoor will now slide to the right.") + facing = "r" + else + facing = "l" + to_chat(usr, "The windoor will now slide to the left.") + + update_icon() + return diff --git a/code/game/shuttle_engines.dm b/code/game/shuttle_engines.dm index 4722991309..80329f20a1 100644 --- a/code/game/shuttle_engines.dm +++ b/code/game/shuttle_engines.dm @@ -12,6 +12,7 @@ /obj/structure/shuttle/engine name = "engine" + desc = "A bluespace engine used to make shuttles move." density = TRUE anchored = TRUE var/engine_power = 1 @@ -81,18 +82,21 @@ M.alter_engines(mod) /obj/structure/shuttle/engine/heater - name = "heater" + name = "engine heater" icon_state = "heater" + desc = "Directs energy into compressed particles in order to power engines." engine_power = 0 // todo make these into 2x1 parts /obj/structure/shuttle/engine/platform - name = "platform" + name = "engine platform" icon_state = "platform" + desc = "A platform for engine components." engine_power = 0 /obj/structure/shuttle/engine/propulsion name = "propulsion engine" icon_state = "propulsion" + desc = "A standard reliable bluespace engine used by many forms of shuttles." opacity = 1 /obj/structure/shuttle/engine/propulsion/left @@ -105,6 +109,7 @@ /obj/structure/shuttle/engine/propulsion/burst name = "burst engine" + desc = "An engine that releases a large bluespace burst to propel it." /obj/structure/shuttle/engine/propulsion/burst/cargo state = ENGINE_UNWRENCHED @@ -119,14 +124,16 @@ icon_state = "burst_r" /obj/structure/shuttle/engine/router - name = "router" + name = "engine router" icon_state = "router" + desc = "Redirects around energized particles in engine structures." /obj/structure/shuttle/engine/large name = "engine" opacity = 1 icon = 'icons/obj/2x2.dmi' icon_state = "large_engine" + desc = "A very large bluespace engine used to propel very large ships." bound_width = 64 bound_height = 64 appearance_flags = 0 @@ -136,6 +143,7 @@ opacity = 1 icon = 'icons/obj/3x3.dmi' icon_state = "huge_engine" + desc = "An extremely large bluespace engine used to propel extremely large ships." bound_width = 96 bound_height = 96 - appearance_flags = 0 \ No newline at end of file + appearance_flags = 0 diff --git a/code/modules/atmospherics/machinery/components/binary_devices/valve.dm b/code/modules/atmospherics/machinery/components/binary_devices/valve.dm index 7ef6cf2142..dbe1343667 100644 --- a/code/modules/atmospherics/machinery/components/binary_devices/valve.dm +++ b/code/modules/atmospherics/machinery/components/binary_devices/valve.dm @@ -5,7 +5,7 @@ It's like a regular ol' straight pipe, but you can turn it on and off. /obj/machinery/atmospherics/components/binary/valve icon_state = "mvalve_map" name = "manual valve" - desc = "A pipe valve" + desc = "A pipe with a valve that can be used to disable flow of gas through it." can_unwrench = TRUE diff --git a/code/modules/atmospherics/machinery/components/trinary_devices/filter.dm b/code/modules/atmospherics/machinery/components/trinary_devices/filter.dm index c777e5fe17..2b5a94ef64 100644 --- a/code/modules/atmospherics/machinery/components/trinary_devices/filter.dm +++ b/code/modules/atmospherics/machinery/components/trinary_devices/filter.dm @@ -1,6 +1,7 @@ /obj/machinery/atmospherics/components/trinary/filter name = "gas filter" icon_state = "filter_off" + desc = "Very useful for filtering gasses." density = FALSE can_unwrench = TRUE var/on = FALSE diff --git a/code/modules/atmospherics/machinery/components/trinary_devices/mixer.dm b/code/modules/atmospherics/machinery/components/trinary_devices/mixer.dm index cb515ec75f..1fb8b072c6 100644 --- a/code/modules/atmospherics/machinery/components/trinary_devices/mixer.dm +++ b/code/modules/atmospherics/machinery/components/trinary_devices/mixer.dm @@ -4,6 +4,7 @@ name = "gas mixer" can_unwrench = TRUE + desc = "Very useful for mixing gasses." var/on = FALSE diff --git a/code/modules/atmospherics/machinery/other/zvent.dm b/code/modules/atmospherics/machinery/other/zvent.dm index 3490c972d9..d12c6196ec 100644 --- a/code/modules/atmospherics/machinery/other/zvent.dm +++ b/code/modules/atmospherics/machinery/other/zvent.dm @@ -5,6 +5,7 @@ icon_state = "vent_map" density = FALSE anchored=1 + desc = "This may be needed some day." var/on = FALSE var/volume_rate = 800 diff --git a/code/modules/clothing/head/misc.dm b/code/modules/clothing/head/misc.dm index db3bcd3538..87106d65b4 100644 --- a/code/modules/clothing/head/misc.dm +++ b/code/modules/clothing/head/misc.dm @@ -283,7 +283,7 @@ /obj/item/clothing/head/crown/fancy name = "magnificent crown" - desc = "A crown worn by only the highest emperors of the land." + desc = "A crown worn by only the highest emperors of the land space." icon_state = "fancycrown" /obj/item/clothing/head/scarecrow_hat diff --git a/code/modules/library/lib_items.dm b/code/modules/library/lib_items.dm index 17d626b3a0..ae5f5c2fbb 100644 --- a/code/modules/library/lib_items.dm +++ b/code/modules/library/lib_items.dm @@ -1,320 +1,323 @@ -/* Library Items - * - * Contains: - * Bookcase - * Book - * Barcode Scanner - */ - -/* - * Bookcase - */ - -/obj/structure/bookcase - name = "bookcase" - icon = 'icons/obj/library.dmi' - icon_state = "bookempty" - anchored = FALSE - density = TRUE - opacity = 0 - resistance_flags = FLAMMABLE - max_integrity = 200 - armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 50, acid = 0) - var/state = 0 - var/list/allowed_books = list(/obj/item/book, /obj/item/spellbook, /obj/item/storage/book) //Things allowed in the bookcase - - -/obj/structure/bookcase/Initialize(mapload) - . = ..() - if(!mapload) - return - state = 2 - icon_state = "book-0" - anchored = TRUE - for(var/obj/item/I in loc) - if(istype(I, /obj/item/book)) - I.loc = src - update_icon() - - -/obj/structure/bookcase/attackby(obj/item/I, mob/user, params) - switch(state) - if(0) - if(istype(I, /obj/item/wrench)) - playsound(loc, I.usesound, 100, 1) - if(do_after(user, 20*I.toolspeed, target = src)) - to_chat(user, "You wrench the frame into place.") - anchored = TRUE - state = 1 - if(istype(I, /obj/item/crowbar)) - playsound(loc, I.usesound, 100, 1) - if(do_after(user, 20*I.toolspeed, target = src)) - to_chat(user, "You pry the frame apart.") - deconstruct(TRUE) - - if(1) - if(istype(I, /obj/item/stack/sheet/mineral/wood)) - var/obj/item/stack/sheet/mineral/wood/W = I - if(W.get_amount() >= 2) - W.use(2) - to_chat(user, "You add a shelf.") - state = 2 - icon_state = "book-0" - if(istype(I, /obj/item/wrench)) - playsound(loc, I.usesound, 100, 1) - to_chat(user, "You unwrench the frame.") - anchored = FALSE - state = 0 - - if(2) - if(is_type_in_list(I, allowed_books)) - if(!user.drop_item()) - return - I.loc = src - update_icon() - else if(istype(I, /obj/item/storage/bag/books)) - var/obj/item/storage/bag/books/B = I - for(var/obj/item/T in B.contents) - if(istype(T, /obj/item/book) || istype(T, /obj/item/spellbook)) - B.remove_from_storage(T, src) - to_chat(user, "You empty \the [I] into \the [src].") - update_icon() - else if(istype(I, /obj/item/pen)) - var/newname = stripped_input(user, "What would you like to title this bookshelf?") - if(!newname) - return - else - name = ("bookcase ([sanitize(newname)])") - else if(istype(I, /obj/item/crowbar)) - if(contents.len) - to_chat(user, "You need to remove the books first!") - else - playsound(loc, I.usesound, 100, 1) - to_chat(user, "You pry the shelf out.") - new /obj/item/stack/sheet/mineral/wood(loc, 2) - state = 1 - icon_state = "bookempty" - else - return ..() - - -/obj/structure/bookcase/attack_hand(mob/user) - if(contents.len) - var/obj/item/book/choice = input("Which book would you like to remove from the shelf?") as null|obj in contents - if(choice) - if(!usr.canmove || usr.stat || usr.restrained() || !in_range(loc, usr)) - return - if(ishuman(user)) - if(!user.get_active_held_item()) - user.put_in_hands(choice) - else - choice.loc = get_turf(src) - update_icon() - - -/obj/structure/bookcase/deconstruct(disassembled = TRUE) - new /obj/item/stack/sheet/mineral/wood(loc, 4) - for(var/obj/item/book/B in contents) - B.forceMove(get_turf(src)) - qdel(src) - - -/obj/structure/bookcase/update_icon() - if(contents.len < 5) - icon_state = "book-[contents.len]" - else - icon_state = "book-5" - - -/obj/structure/bookcase/manuals/medical - name = "medical manuals bookcase" - -/obj/structure/bookcase/manuals/medical/New() - ..() - new /obj/item/book/manual/medical_cloning(src) - update_icon() - - -/obj/structure/bookcase/manuals/engineering - name = "engineering manuals bookcase" - -/obj/structure/bookcase/manuals/engineering/New() - ..() - new /obj/item/book/manual/wiki/engineering_construction(src) - new /obj/item/book/manual/engineering_particle_accelerator(src) - new /obj/item/book/manual/wiki/engineering_hacking(src) - new /obj/item/book/manual/wiki/engineering_guide(src) - new /obj/item/book/manual/engineering_singularity_safety(src) - new /obj/item/book/manual/robotics_cyborgs(src) - update_icon() - - -/obj/structure/bookcase/manuals/research_and_development - name = "\improper R&D manuals bookcase" - -/obj/structure/bookcase/manuals/research_and_development/New() - ..() - new /obj/item/book/manual/research_and_development(src) - update_icon() - - -/* - * Book - */ -/obj/item/book - name = "book" - icon = 'icons/obj/library.dmi' - icon_state ="book" - throw_speed = 1 - throw_range = 5 - w_class = WEIGHT_CLASS_NORMAL //upped to three because books are, y'know, pretty big. (and you could hide them inside eachother recursively forever) - attack_verb = list("bashed", "whacked", "educated") - resistance_flags = FLAMMABLE - var/dat //Actual page content - var/due_date = 0 //Game time in 1/10th seconds - var/author //Who wrote the thing, can be changed by pen or PC. It is not automatically assigned - var/unique = 0 //0 - Normal book, 1 - Should not be treated as normal book, unable to be copied, unable to be modified - var/title //The real name of the book. - var/window_size = null // Specific window size for the book, i.e: "1920x1080", Size x Width - -/obj/item/book/attack_self(mob/user) - if(is_blind(user)) - to_chat(user, "As you are trying to read, you suddenly feel very stupid!") - return - if(ismonkey(user)) - to_chat(user, "You skim through the book but can't comprehend any of it.") - return - if(dat) - user << browse("Penned by [author].
" + "[dat]", "window=book[window_size != null ? ";size=[window_size]" : ""]") - user.visible_message("[user] opens a book titled \"[title]\" and begins reading intently.") - onclose(user, "book") - else - to_chat(user, "This book is completely blank!") - - -/obj/item/book/attackby(obj/item/I, mob/user, params) - if(istype(I, /obj/item/pen)) - if(is_blind(user)) - to_chat(user, " As you are trying to write on the book, you suddenly feel very stupid!") - return - if(unique) - to_chat(user, "These pages don't seem to take the ink well! Looks like you can't modify it.") - return - var/choice = input("What would you like to change?") in list("Title", "Contents", "Author", "Cancel") - switch(choice) - if("Title") - var/newtitle = reject_bad_text(stripped_input(usr, "Write a new title:")) - if (length(newtitle) > 20) - to_chat(usr, "That title won't fit on the cover!") - return - if(!newtitle) - to_chat(usr, "That title is invalid.") - return - else - name = newtitle - title = newtitle - if("Contents") - var/content = stripped_input(usr, "Write your book's contents (HTML NOT allowed):","","",8192) - if(!content) - to_chat(usr, "The content is invalid.") - return - else - dat += content - if("Author") - var/newauthor = stripped_input(usr, "Write the author's name:") - if(!newauthor) - to_chat(usr, "The name is invalid.") - return - else - author = newauthor - else - return - - else if(istype(I, /obj/item/barcodescanner)) - var/obj/item/barcodescanner/scanner = I - if(!scanner.computer) - to_chat(user, "[I]'s screen flashes: 'No associated computer found!'") - else - switch(scanner.mode) - if(0) - scanner.book = src - to_chat(user, "[I]'s screen flashes: 'Book stored in buffer.'") - if(1) - scanner.book = src - scanner.computer.buffer_book = name - to_chat(user, "[I]'s screen flashes: 'Book stored in buffer. Book title stored in associated computer buffer.'") - if(2) - scanner.book = src - for(var/datum/borrowbook/b in scanner.computer.checkouts) - if(b.bookname == name) - scanner.computer.checkouts.Remove(b) - to_chat(user, "[I]'s screen flashes: 'Book stored in buffer. Book has been checked in.'") - return - to_chat(user, "[I]'s screen flashes: 'Book stored in buffer. No active check-out record found for current title.'") - if(3) - scanner.book = src - for(var/obj/item/book in scanner.computer.inventory) - if(book == src) - to_chat(user, "[I]'s screen flashes: 'Book stored in buffer. Title already present in inventory, aborting to avoid duplicate entry.'") - return - scanner.computer.inventory.Add(src) - to_chat(user, "[I]'s screen flashes: 'Book stored in buffer. Title added to general inventory.'") - - else if(istype(I, /obj/item/kitchen/knife) || istype(I, /obj/item/wirecutters)) - to_chat(user, "You begin to carve out [title]...") - if(do_after(user, 30, target = src)) - to_chat(user, "You carve out the pages from [title]! You didn't want to read it anyway.") - var/obj/item/storage/book/B = new - B.name = src.name - B.title = src.title - B.icon_state = src.icon_state - if(user.is_holding(src)) - qdel(src) - user.put_in_hands(B) - return - else - B.loc = src.loc - qdel(src) - return - return - else - ..() - - -/* - * Barcode Scanner - */ -/obj/item/barcodescanner - name = "barcode scanner" - icon = 'icons/obj/library.dmi' - icon_state ="scanner" - throw_speed = 3 - throw_range = 5 - w_class = WEIGHT_CLASS_TINY - var/obj/machinery/computer/libraryconsole/bookmanagement/computer //Associated computer - Modes 1 to 3 use this - var/obj/item/book/book //Currently scanned book - var/mode = 0 //0 - Scan only, 1 - Scan and Set Buffer, 2 - Scan and Attempt to Check In, 3 - Scan and Attempt to Add to Inventory - -/obj/item/barcodescanner/attack_self(mob/user) - mode += 1 - if(mode > 3) - mode = 0 - to_chat(user, "[src] Status Display:") - var/modedesc - switch(mode) - if(0) - modedesc = "Scan book to local buffer." - if(1) - modedesc = "Scan book to local buffer and set associated computer buffer to match." - if(2) - modedesc = "Scan book to local buffer, attempt to check in scanned book." - if(3) - modedesc = "Scan book to local buffer, attempt to add book to general inventory." - else - modedesc = "ERROR" - to_chat(user, " - Mode [mode] : [modedesc]") - if(computer) - to_chat(user, "Computer has been associated with this unit.") - else - to_chat(user, "No associated computer found. Only local scans will function properly.") - to_chat(user, "\n") \ No newline at end of file +/* Library Items + * + * Contains: + * Bookcase + * Book + * Barcode Scanner + */ + +/* + * Bookcase + */ + +/obj/structure/bookcase + name = "bookcase" + icon = 'icons/obj/library.dmi' + icon_state = "bookempty" + desc = "A great place for storing knowledge." + anchored = FALSE + density = TRUE + opacity = 0 + resistance_flags = FLAMMABLE + max_integrity = 200 + armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 50, acid = 0) + var/state = 0 + var/list/allowed_books = list(/obj/item/book, /obj/item/spellbook, /obj/item/storage/book) //Things allowed in the bookcase + + +/obj/structure/bookcase/Initialize(mapload) + . = ..() + if(!mapload) + return + state = 2 + icon_state = "book-0" + anchored = TRUE + for(var/obj/item/I in loc) + if(istype(I, /obj/item/book)) + I.loc = src + update_icon() + + +/obj/structure/bookcase/attackby(obj/item/I, mob/user, params) + switch(state) + if(0) + if(istype(I, /obj/item/wrench)) + playsound(loc, I.usesound, 100, 1) + if(do_after(user, 20*I.toolspeed, target = src)) + to_chat(user, "You wrench the frame into place.") + anchored = TRUE + state = 1 + if(istype(I, /obj/item/crowbar)) + playsound(loc, I.usesound, 100, 1) + if(do_after(user, 20*I.toolspeed, target = src)) + to_chat(user, "You pry the frame apart.") + deconstruct(TRUE) + + if(1) + if(istype(I, /obj/item/stack/sheet/mineral/wood)) + var/obj/item/stack/sheet/mineral/wood/W = I + if(W.get_amount() >= 2) + W.use(2) + to_chat(user, "You add a shelf.") + state = 2 + icon_state = "book-0" + if(istype(I, /obj/item/wrench)) + playsound(loc, I.usesound, 100, 1) + to_chat(user, "You unwrench the frame.") + anchored = FALSE + state = 0 + + if(2) + if(is_type_in_list(I, allowed_books)) + if(!user.drop_item()) + return + I.loc = src + update_icon() + else if(istype(I, /obj/item/storage/bag/books)) + var/obj/item/storage/bag/books/B = I + for(var/obj/item/T in B.contents) + if(istype(T, /obj/item/book) || istype(T, /obj/item/spellbook)) + B.remove_from_storage(T, src) + to_chat(user, "You empty \the [I] into \the [src].") + update_icon() + else if(istype(I, /obj/item/pen)) + var/newname = stripped_input(user, "What would you like to title this bookshelf?") + if(!newname) + return + else + name = ("bookcase ([sanitize(newname)])") + else if(istype(I, /obj/item/crowbar)) + if(contents.len) + to_chat(user, "You need to remove the books first!") + else + playsound(loc, I.usesound, 100, 1) + to_chat(user, "You pry the shelf out.") + new /obj/item/stack/sheet/mineral/wood(loc, 2) + state = 1 + icon_state = "bookempty" + else + return ..() + + +/obj/structure/bookcase/attack_hand(mob/user) + if(contents.len) + var/obj/item/book/choice = input("Which book would you like to remove from the shelf?") as null|obj in contents + if(choice) + if(!usr.canmove || usr.stat || usr.restrained() || !in_range(loc, usr)) + return + if(ishuman(user)) + if(!user.get_active_held_item()) + user.put_in_hands(choice) + else + choice.loc = get_turf(src) + update_icon() + + +/obj/structure/bookcase/deconstruct(disassembled = TRUE) + new /obj/item/stack/sheet/mineral/wood(loc, 4) + for(var/obj/item/book/B in contents) + B.forceMove(get_turf(src)) + qdel(src) + + +/obj/structure/bookcase/update_icon() + if(contents.len < 5) + icon_state = "book-[contents.len]" + else + icon_state = "book-5" + + +/obj/structure/bookcase/manuals/medical + name = "medical manuals bookcase" + +/obj/structure/bookcase/manuals/medical/New() + ..() + new /obj/item/book/manual/medical_cloning(src) + update_icon() + + +/obj/structure/bookcase/manuals/engineering + name = "engineering manuals bookcase" + +/obj/structure/bookcase/manuals/engineering/New() + ..() + new /obj/item/book/manual/wiki/engineering_construction(src) + new /obj/item/book/manual/engineering_particle_accelerator(src) + new /obj/item/book/manual/wiki/engineering_hacking(src) + new /obj/item/book/manual/wiki/engineering_guide(src) + new /obj/item/book/manual/engineering_singularity_safety(src) + new /obj/item/book/manual/robotics_cyborgs(src) + update_icon() + + +/obj/structure/bookcase/manuals/research_and_development + name = "\improper R&D manuals bookcase" + +/obj/structure/bookcase/manuals/research_and_development/New() + ..() + new /obj/item/book/manual/research_and_development(src) + update_icon() + + +/* + * Book + */ +/obj/item/book + name = "book" + icon = 'icons/obj/library.dmi' + icon_state ="book" + desc = "Crack it open, inhale the musk of its pages, and learn something new." + throw_speed = 1 + throw_range = 5 + w_class = WEIGHT_CLASS_NORMAL //upped to three because books are, y'know, pretty big. (and you could hide them inside eachother recursively forever) + attack_verb = list("bashed", "whacked", "educated") + resistance_flags = FLAMMABLE + var/dat //Actual page content + var/due_date = 0 //Game time in 1/10th seconds + var/author //Who wrote the thing, can be changed by pen or PC. It is not automatically assigned + var/unique = 0 //0 - Normal book, 1 - Should not be treated as normal book, unable to be copied, unable to be modified + var/title //The real name of the book. + var/window_size = null // Specific window size for the book, i.e: "1920x1080", Size x Width + +/obj/item/book/attack_self(mob/user) + if(is_blind(user)) + to_chat(user, "As you are trying to read, you suddenly feel very stupid!") + return + if(ismonkey(user)) + to_chat(user, "You skim through the book but can't comprehend any of it.") + return + if(dat) + user << browse("Penned by [author].
" + "[dat]", "window=book[window_size != null ? ";size=[window_size]" : ""]") + user.visible_message("[user] opens a book titled \"[title]\" and begins reading intently.") + onclose(user, "book") + else + to_chat(user, "This book is completely blank!") + + +/obj/item/book/attackby(obj/item/I, mob/user, params) + if(istype(I, /obj/item/pen)) + if(is_blind(user)) + to_chat(user, " As you are trying to write on the book, you suddenly feel very stupid!") + return + if(unique) + to_chat(user, "These pages don't seem to take the ink well! Looks like you can't modify it.") + return + var/choice = input("What would you like to change?") in list("Title", "Contents", "Author", "Cancel") + switch(choice) + if("Title") + var/newtitle = reject_bad_text(stripped_input(usr, "Write a new title:")) + if (length(newtitle) > 20) + to_chat(usr, "That title won't fit on the cover!") + return + if(!newtitle) + to_chat(usr, "That title is invalid.") + return + else + name = newtitle + title = newtitle + if("Contents") + var/content = stripped_input(usr, "Write your book's contents (HTML NOT allowed):","","",8192) + if(!content) + to_chat(usr, "The content is invalid.") + return + else + dat += content + if("Author") + var/newauthor = stripped_input(usr, "Write the author's name:") + if(!newauthor) + to_chat(usr, "The name is invalid.") + return + else + author = newauthor + else + return + + else if(istype(I, /obj/item/barcodescanner)) + var/obj/item/barcodescanner/scanner = I + if(!scanner.computer) + to_chat(user, "[I]'s screen flashes: 'No associated computer found!'") + else + switch(scanner.mode) + if(0) + scanner.book = src + to_chat(user, "[I]'s screen flashes: 'Book stored in buffer.'") + if(1) + scanner.book = src + scanner.computer.buffer_book = name + to_chat(user, "[I]'s screen flashes: 'Book stored in buffer. Book title stored in associated computer buffer.'") + if(2) + scanner.book = src + for(var/datum/borrowbook/b in scanner.computer.checkouts) + if(b.bookname == name) + scanner.computer.checkouts.Remove(b) + to_chat(user, "[I]'s screen flashes: 'Book stored in buffer. Book has been checked in.'") + return + to_chat(user, "[I]'s screen flashes: 'Book stored in buffer. No active check-out record found for current title.'") + if(3) + scanner.book = src + for(var/obj/item/book in scanner.computer.inventory) + if(book == src) + to_chat(user, "[I]'s screen flashes: 'Book stored in buffer. Title already present in inventory, aborting to avoid duplicate entry.'") + return + scanner.computer.inventory.Add(src) + to_chat(user, "[I]'s screen flashes: 'Book stored in buffer. Title added to general inventory.'") + + else if(istype(I, /obj/item/kitchen/knife) || istype(I, /obj/item/wirecutters)) + to_chat(user, "You begin to carve out [title]...") + if(do_after(user, 30, target = src)) + to_chat(user, "You carve out the pages from [title]! You didn't want to read it anyway.") + var/obj/item/storage/book/B = new + B.name = src.name + B.title = src.title + B.icon_state = src.icon_state + if(user.is_holding(src)) + qdel(src) + user.put_in_hands(B) + return + else + B.loc = src.loc + qdel(src) + return + return + else + ..() + + +/* + * Barcode Scanner + */ +/obj/item/barcodescanner + name = "barcode scanner" + icon = 'icons/obj/library.dmi' + icon_state ="scanner" + desc = "A fabulous tool if you need to scan a barcode." + throw_speed = 3 + throw_range = 5 + w_class = WEIGHT_CLASS_TINY + var/obj/machinery/computer/libraryconsole/bookmanagement/computer //Associated computer - Modes 1 to 3 use this + var/obj/item/book/book //Currently scanned book + var/mode = 0 //0 - Scan only, 1 - Scan and Set Buffer, 2 - Scan and Attempt to Check In, 3 - Scan and Attempt to Add to Inventory + +/obj/item/barcodescanner/attack_self(mob/user) + mode += 1 + if(mode > 3) + mode = 0 + to_chat(user, "[src] Status Display:") + var/modedesc + switch(mode) + if(0) + modedesc = "Scan book to local buffer." + if(1) + modedesc = "Scan book to local buffer and set associated computer buffer to match." + if(2) + modedesc = "Scan book to local buffer, attempt to check in scanned book." + if(3) + modedesc = "Scan book to local buffer, attempt to add book to general inventory." + else + modedesc = "ERROR" + to_chat(user, " - Mode [mode] : [modedesc]") + if(computer) + to_chat(user, "Computer has been associated with this unit.") + else + to_chat(user, "No associated computer found. Only local scans will function properly.") + to_chat(user, "\n") diff --git a/code/modules/library/lib_machines.dm b/code/modules/library/lib_machines.dm index 99127cd595..dc48bbae2d 100644 --- a/code/modules/library/lib_machines.dm +++ b/code/modules/library/lib_machines.dm @@ -20,6 +20,7 @@ icon_screen = "library" icon_keyboard = null circuit = /obj/item/circuitboard/computer/libraryconsole + desc = "Checked out books MUST be returned on time." var/screenstate = 0 var/title var/category = "Any" @@ -161,6 +162,7 @@ GLOBAL_LIST(cachedbooks) // List of our cached book datums // It's December 25th, 2014, and this is STILL here, and it's STILL relevant. Kill me /obj/machinery/computer/libraryconsole/bookmanagement name = "book inventory management console" + desc = "Librarian's command station." var/arcanecheckout = 0 screenstate = 0 // 0 - Main Menu, 1 - Inventory, 2 - Checked Out, 3 - Check Out a Book verb_say = "beeps" @@ -498,6 +500,7 @@ GLOBAL_LIST(cachedbooks) // List of our cached book datums name = "scanner control interface" icon = 'icons/obj/library.dmi' icon_state = "bigscanner" + desc = "It servers the purpose of scanning stuff." anchored = TRUE density = TRUE var/obj/item/book/cache // Last scanned book @@ -554,6 +557,7 @@ GLOBAL_LIST(cachedbooks) // List of our cached book datums name = "book binder" icon = 'icons/obj/library.dmi' icon_state = "binder" + desc = "Only intended for binding paper products." anchored = TRUE density = TRUE var/busy = FALSE diff --git a/code/modules/mining/machine_stacking.dm b/code/modules/mining/machine_stacking.dm index 96589fb575..0c9bcdc170 100644 --- a/code/modules/mining/machine_stacking.dm +++ b/code/modules/mining/machine_stacking.dm @@ -4,6 +4,7 @@ name = "stacking machine console" icon = 'icons/obj/machines/mining_machines.dmi' icon_state = "console" + desc = "Controls a stacking machine... in theory." density = FALSE anchored = TRUE var/obj/machinery/mineral/stacking_machine/machine = null @@ -60,6 +61,7 @@ name = "stacking machine" icon = 'icons/obj/machines/mining_machines.dmi' icon_state = "stacker" + desc = "A machine that automatically stacks acquired materials. Controlled by a nearby console." density = TRUE anchored = TRUE var/obj/machinery/mineral/stacking_unit_console/CONSOLE @@ -90,4 +92,4 @@ var/obj/item/stack/sheet/out = new inp.type() out.amount = stack_amt unload_mineral(out) - storage.amount -= stack_amt \ No newline at end of file + storage.amount -= stack_amt diff --git a/code/modules/research/message_server.dm b/code/modules/research/message_server.dm index 650eebba1a..0cef65c07c 100644 --- a/code/modules/research/message_server.dm +++ b/code/modules/research/message_server.dm @@ -67,6 +67,7 @@ GLOBAL_LIST_INIT(message_servers, list()) icon = 'icons/obj/machines/research.dmi' icon_state = "server" name = "Messaging Server" + desc = "A machine that attempts to gather the secret knowledge of the universe." density = TRUE anchored = TRUE use_power = IDLE_POWER_USE diff --git a/code/modules/shuttle/computer.dm b/code/modules/shuttle/computer.dm index 8384e978e5..47ceaef99e 100644 --- a/code/modules/shuttle/computer.dm +++ b/code/modules/shuttle/computer.dm @@ -1,5 +1,6 @@ /obj/machinery/computer/shuttle name = "shuttle console" + desc = "A shuttle control computer." icon_screen = "shuttle" icon_keyboard = "tech_key" light_color = LIGHT_COLOR_CYAN diff --git a/code/modules/shuttle/ferry.dm b/code/modules/shuttle/ferry.dm index 5b27e562f3..07103088d1 100644 --- a/code/modules/shuttle/ferry.dm +++ b/code/modules/shuttle/ferry.dm @@ -1,5 +1,6 @@ /obj/machinery/computer/shuttle/ferry name = "transport ferry console" + desc = "A console that controls the transport ferry." circuit = /obj/item/circuitboard/computer/ferry shuttleId = "ferry" possible_destinations = "ferry_home;ferry_away" diff --git a/code/modules/shuttle/syndicate.dm b/code/modules/shuttle/syndicate.dm index ac1339d33e..4574e62bd1 100644 --- a/code/modules/shuttle/syndicate.dm +++ b/code/modules/shuttle/syndicate.dm @@ -2,6 +2,7 @@ /obj/machinery/computer/shuttle/syndicate name = "syndicate shuttle terminal" + desc = "The terminal used to control the syndicate transport shuttle." circuit = /obj/item/circuitboard/computer/syndicate_shuttle icon_screen = "syndishuttle" icon_keyboard = "syndie_key" @@ -13,6 +14,7 @@ /obj/machinery/computer/shuttle/syndicate/recall name = "syndicate shuttle recall terminal" + desc = "Use this if your friends left you behind." possible_destinations = "syndicate_away" @@ -27,6 +29,7 @@ /obj/machinery/computer/shuttle/syndicate/drop_pod name = "syndicate assault pod control" + desc = "Controls the drop pod's launch system." icon = 'icons/obj/terminals.dmi' icon_state = "dorm_available" light_color = LIGHT_COLOR_BLUE