Merge remote-tracking branch 'upstream/dev' into 150817-SynthAccess

This commit is contained in:
PsiOmegaDelta
2015-08-20 10:01:19 +02:00
269 changed files with 11310 additions and 10989 deletions
+1
View File
@@ -338,6 +338,7 @@ Alien plants should do something if theres a lot of poison
var/health = 100
var/status = GROWING //can be GROWING, GROWN or BURST; all mutually exclusive
flags = PROXMOVE
/obj/effect/alien/egg/New()
if(config.aliens_allowed)
@@ -1,26 +0,0 @@
/obj/effect/vaultspawner
var/maxX = 6
var/maxY = 6
var/minX = 2
var/minY = 2
/obj/effect/vaultspawner/New(turf/location as turf,lX = minX,uX = maxX,lY = minY,uY = maxY,var/type = null)
if(!type)
type = pick("sandstone","rock","alien")
var/lowBoundX = location.x
var/lowBoundY = location.y
var/hiBoundX = location.x + rand(lX,uX)
var/hiBoundY = location.y + rand(lY,uY)
var/z = location.z
for(var/i = lowBoundX,i<=hiBoundX,i++)
for(var/j = lowBoundY,j<=hiBoundY,j++)
if(i == lowBoundX || i == hiBoundX || j == lowBoundY || j == hiBoundY)
new /turf/simulated/wall/vault(locate(i,j,z),type)
else
new /turf/simulated/floor/vault(locate(i,j,z),type)
qdel(src)
+2 -2
View File
@@ -40,7 +40,7 @@
var/mob/living/bot/secbot/active // the active bot; if null, show bot list
var/list/botstatus // the status signal sent by the bot
var/control_freq = AI_FREQ
var/control_freq = BOT_FREQ
// create a new QM cartridge, and register to receive bot control & beacon message
New()
@@ -112,7 +112,7 @@
var/list/beacons
var/beacon_freq = 1400
var/control_freq = AI_FREQ
var/control_freq = BOT_FREQ
// create a new QM cartridge, and register to receive bot control & beacon message
New()
+1 -1
View File
@@ -19,7 +19,7 @@
matter = list(DEFAULT_WALL_MATERIAL = 50,"glass" = 20)
origin_tech = list(TECH_MAGNET = 1, TECH_ENGINERING = 1)
origin_tech = list(TECH_MAGNET = 1, TECH_ENGINEERING = 1)
var/obj/machinery/telecomms/buffer // simple machine buffer for device linkage
/obj/item/device/debugger/is_used_on(obj/O, mob/user)
+176 -195
View File
@@ -4,212 +4,193 @@
icon_state = "labeler1"
item_state = "flight"
var/mode_nice = "standard"
var/mode = "floor"
var/tile_dir_mode = 0
var/decal = "remove all decals"
var/paint_dir = "precise"
var/paint_colour = "white"
// mode 0 ignore direction; sets dir=0
// mode 1 all-direction
// mode 2 corner selecting the side CW from the selected corner
// mode 3 cardinal
// mode 4 warningcorner and warnwhitecorner direction fix
// mode 5 Opposite corner tiles where the second icon_state is "[mode]_inv"
/obj/item/device/floor_painter/afterattack(atom/A, mob/user as mob, proximity)
var/list/decals = list(
"quarter-turf" = list("path" = /obj/effect/floor_decal/corner, "precise" = 1, "coloured" = 1),
"hazard stripes" = list("path" = /obj/effect/floor_decal/industrial/warning),
"corner, hazard" = list("path" = /obj/effect/floor_decal/industrial/warning/corner),
"hatched marking" = list("path" = /obj/effect/floor_decal/industrial/hatch),
"dotted outline" = list("path" = /obj/effect/floor_decal/industrial/outline, "coloured" = 1),
"loading sign" = list("path" = /obj/effect/floor_decal/industrial/loading),
"1" = list("path" = /obj/effect/floor_decal/sign),
"2" = list("path" = /obj/effect/floor_decal/sign/two),
"A" = list("path" = /obj/effect/floor_decal/sign/a),
"B" = list("path" = /obj/effect/floor_decal/sign/b),
"C" = list("path" = /obj/effect/floor_decal/sign/c),
"D" = list("path" = /obj/effect/floor_decal/sign/d),
"Ex" = list("path" = /obj/effect/floor_decal/sign/ex),
"M" = list("path" = /obj/effect/floor_decal/sign/m),
"CMO" = list("path" = /obj/effect/floor_decal/sign/cmo),
"V" = list("path" = /obj/effect/floor_decal/sign/v),
"Psy" = list("path" = /obj/effect/floor_decal/sign/p),
"remove all decals" = list("path" = /obj/effect/floor_decal/reset)
)
var/list/paint_dirs = list(
"north" = NORTH,
"northwest" = NORTHWEST,
"west" = WEST,
"southwest" = SOUTHWEST,
"south" = SOUTH,
"southeast" = SOUTHEAST,
"east" = EAST,
"northeast" = NORTHEAST,
"precise" = 0
)
var/list/paint_colours = list(
"white" = COLOR_WHITE,
"light gray" = COLOR_SILVER,
"dark gray" = COLOR_GRAY,
"blue-grey" = "#6A97B0",
"pale blue-grey" = "#8BBBD5",
"green-grey" = "#8DAF6A",
"pale green-gray" = "#AED18B",
"red-gray" = "#AA5F61",
"pale red-gray" = "#CC9090",
"purple-gray" = "#A2819E",
"pale purple-gray" = "#BDA2BA",
"black" = COLOR_BLACK,
"red" = COLOR_RED,
"dark red" = COLOR_MAROON,
"yellow" = COLOR_YELLOW,
"dark yellow" = COLOR_OLIVE,
"green" = COLOR_LIME,
"dark green" = COLOR_GREEN,
"cyan" = COLOR_CYAN,
"teal" = COLOR_TEAL,
"blue" = COLOR_BLUE,
"dark blue" = COLOR_NAVY,
"magenta" = COLOR_PINK,
"purple" = COLOR_PURPLE,
"orange" = COLOR_ORANGE,
"dark orange" = "#B95A00",
"dark brown" = "#917448",
"brown" = "#B19664",
"pale brown" = "#CEB689"
)
/obj/item/device/floor_painter/afterattack(var/atom/A, var/mob/user, proximity, params)
if(!proximity)
return
if(istype(A, /turf/simulated/floor))
var/turf/simulated/floor/F = A
var/turf/simulated/floor/F = A
if(!istype(F))
user << "<span class='warning'>\The [src] can only be used on station flooring.</span>"
return
if(F.is_steel_floor()) // only tiled floors
if(tile_dir_mode)
var/D = get_dir(usr, F)
if(usr.loc == F)
D = usr.dir
if(!F.flooring || !F.flooring.can_paint || F.broken || F.burnt)
user << "<span class='warning'>\The [src] cannot paint broken or missing tiles.</span>"
return
switch(tile_dir_mode)
if(1) // All directions accepted
F.set_dir(D)
F.icon_state = mode
if(2) // Corner mode - diagonal directions converted CW around.
switch(D)
if(NORTHEAST)
D = EAST
if(SOUTHEAST)
D = SOUTH
if(SOUTHWEST)
D = WEST
if(NORTHWEST)
D = NORTH
F.set_dir(D)
F.icon_state = mode
if(3) // cardinal directions only. I've adjusted diagonals the same way the facing code does.
switch(D)
if(NORTHEAST)
D = EAST
if(SOUTHEAST)
D = EAST
if(SOUTHWEST)
D = WEST
if(NORTHWEST)
D = WEST
F.set_dir(D)
F.icon_state = mode
if(4) // floors.dmi icon_states "warningcorner" and "warnwhitecorner" are incorrect, this fixes it
var/D2
switch(D)
if(NORTHEAST)
D2 = WEST
if(SOUTHEAST)
D2 = SOUTH
if(SOUTHWEST)
D2 = NORTH
if(NORTHWEST)
D2 = EAST
F.set_dir(D2)
F.icon_state = mode
if(5)
F.set_dir(0)
if(D == NORTH || D == SOUTH || D == NORTHEAST || D == SOUTHWEST)
F.icon_state = mode
else
F.icon_state = "[mode]_inv"
else
F.set_dir(0)
F.icon_state = mode
var/list/decal_data = decals[decal]
var/config_error
if(!islist(decal_data))
config_error = 1
var/painting_decal
if(!config_error)
painting_decal = decal_data["path"]
if(!ispath(painting_decal))
config_error = 1
if(config_error)
user << "<span class='warning'>\The [src] flashes an error light. You might need to reconfigure it.</span>"
return
if(F.decals && F.decals.len > 5 && painting_decal != /obj/effect/floor_decal/reset)
user << "<span class='warning'>\The [F] has been painted too much; you need to clear it off.</span>"
return
var/painting_dir = 0
if(paint_dir == "precise")
if(!decal_data["precise"])
painting_dir = user.dir
else
usr << "You can't paint that!"
var/list/mouse_control = params2list(params)
var/mouse_x = text2num(mouse_control["icon-x"])
var/mouse_y = text2num(mouse_control["icon-y"])
if(isnum(mouse_x) && isnum(mouse_y))
if(mouse_x <= 16)
if(mouse_y <= 16)
painting_dir = WEST
else
painting_dir = NORTH
else
if(mouse_y <= 16)
painting_dir = SOUTH
else
painting_dir = EAST
else
painting_dir = user.dir
else if(paint_dirs[paint_dir])
painting_dir = paint_dirs[paint_dir]
var/painting_colour
if(paint_colour && !isnull(paint_colours[paint_colour]) && decal_data["coloured"])
painting_colour = paint_colours[paint_colour]
new painting_decal(F, painting_dir, painting_colour)
/obj/item/device/floor_painter/attack_self(mob/user as mob)
var/type = input("What type of floor?", "Floor painter", "solid") in list("solid", "corner", "opposite corners", "side/three corners", "special", "letters")
tile_dir_mode = 0
var/choice = input("Do you wish to change the decal type, paint direction, or paint colour?") as null|anything in list("Decal","Direction", "Colour")
switch(type)
if("solid")
tile_dir_mode = 0
var/design = input("Which color?", "Floor painter") in list("standard", "dark", "red", "blue", "green", "yellow", "purple", "neutral", "white", "white-red", "white-blue", "white-green", "white-yellow", "white-purple", "freezer", "hydro", "showroom")
if(design == "standard")
mode = "floor"
mode_nice = "standard"
return
if(design == "white")
mode = "white"
mode_nice = "white"
return
if(design == "dark")
mode = "dark"
mode_nice = "dark"
return
if(design == "showroom" || design == "hydro" || design == "freezer")
mode = "[design]floor"
mode_nice = design
return
mode_nice = design
mode = "[replacetext(design, "-", "")]full"
if("corner")
var/design = input("Which design?", "Floor painter") in list("black", "red", "blue", "green", "yellow", "purple", "neutral", "white", "white-red", "white-blue", "white-green", "white-yellow", "white-purple")
mode_nice = "[design] corner"
mode = "[replacetext(design, "-", "")]corner"
tile_dir_mode = 2
if("opposite corners")
var/design = input("Which design?", "Floor painter") in list("bar", "cmo", "yellowpatch", "cafeteria", "red-yellow", "red-blue", "red-green", "green-yellow", "green-blue", "blue-yellow")
mode_nice = design
if(design == "bar" || design == "cmo" || design == "yellowpatch" || design == "cafeteria")
mode = design
else
mode = "[replacetext(design, "-", "")]full"
if(design == "yellowpatch")
tile_dir_mode = 5
else
tile_dir_mode = 0
if("side/three corners")
var/design = input("Which design?", "Floor painter") in list("black", "red", "blue", "green", "yellow", "purple", "neutral", "white", "white-red", "white-blue", "white-green", "white-yellow", "white-purple", "red-yellow", "red-blue", "blue-red", "red-green", "green-yellow", "green-blue", "blue-yellow")
if(design == "white")
mode = "whitehall"
mode_nice = "white side"
else if(design == "black") // because SOMEONE made the black/grey side/corner sprite have the same name as the 'empty space' sprite :(
mode = "blackfloor"
mode_nice = design
else
mode_nice = design
mode = replacetext(design, "-", "")
tile_dir_mode = 1
if("special")
var/design = input("Which design?", "Floor painter") in list("arrival", "escape", "caution", "warning", "white-warning", "white-blue-green", "loadingarea", "delivery", "bot", "white-delivery", "white-bot")
if(design == "white-blue-green")
mode_nice = design
mode = "whitebluegreencorners"
tile_dir_mode = 2
else if(design == "delivery" || design == "bot" || design == "white-delivery" || design == "white-bot")
mode_nice = design
mode = replacetext(design, "-", "")
tile_dir_mode = 0
else if(design == "loadingarea")
mode_nice = design
mode = design
tile_dir_mode = 3
else
if(design == "white-warning")
mode_nice = design
design = "warnwhite"
var/s_corner = alert("Do you want to paint a single corner of the tile?", "Floor painter","Yes","No") == "Yes"
if(s_corner)
mode_nice = "[design] corner"
mode = "[design]corner"
if(design == "warning" || design == "white-warning") // sprites for these are weird, need to fix dirs (icons/turf/floors.dmi, "warningcorner" and "warnwhitecorner")
tile_dir_mode = 4
else
tile_dir_mode = 2
else
mode_nice = design
mode = design
tile_dir_mode = 1
if("letters")
var/which = input("Which letters/design?", "Floor painter") in list("A1", "A2", "DI", "SA", "SA (red)", "SB", "SB (red)", "SC", "SC (red)", "W (red)", "V (green)", "Psy", "Ex", "Ex (blue)", "CMO", "O (OP)", "P (OP)")
mode_nice = which
switch(which)
if("A1")
mode = "white_1"
if("A2")
mode = "white_2"
if("DI")
mode = "white_d"
if("SA")
mode = "white_a"
if("SA (red)")
mode = "whitered_a"
tile_dir_mode = 3
if("SB")
mode = "white_b"
if("SB (red)")
mode = "whitered_b"
tile_dir_mode = 3
if("SC")
mode = "white_c"
if("SC (red)")
mode = "whitered_c"
tile_dir_mode = 3
if("W (red)")
mode = "whitered_w"
tile_dir_mode = 3
if("V (green)")
mode = "whitegreen_v"
tile_dir_mode = 3
if("Psy")
mode = "white_p"
if("Ex")
mode = "white_ex"
if("Ex (blue)")
mode = "whiteblue_ex"
tile_dir_mode = 3
if("CMO") // yes this is also in "opposite corners" choices, but it's a different icon_state (!!)
mode = "white_cmo"
if("O (OP)")
mode = "white_halfo"
if("P (OP)")
mode = "white_halfp"
if(choice == "Decal")
var/new_decal = input("Select a decal.") as null|anything in decals
if(new_decal && !isnull(decals[new_decal]))
decal = new_decal
user << "<span class='notice'>You set \the [src] decal to '[decal]'.</span>"
else if(choice == "Direction")
var/new_dir = input("Select a direction.") as null|anything in paint_dirs
if(new_dir && !isnull(paint_dirs[new_dir]))
paint_dir = new_dir
user << "<span class='notice'>You set \the [src] direction to '[paint_dir]'.</span>"
else if(choice == "Colour")
var/new_colour = input("Select a colour.") as null|anything in paint_colours
if(new_colour && !isnull(paint_colours[new_colour]))
paint_colour = new_colour
user << "<span class='notice'>You set \the [src] colour to '[paint_colour]'.</span>"
/obj/item/device/floor_painter/examine(mob/user)
..(user)
user << "It is in [mode_nice] mode."
user << "It is configured to produce the '[decal]' decal with a direction of '[paint_dir]' using [paint_colour] paint."
/obj/item/device/floor_painter/verb/choose_colour(new_colour in paint_colours)
set name = "Choose Colour"
set desc = "Choose a floor painter colour."
set category = "Object"
set src in usr
if(usr.incapacitated())
return
if(new_colour && !isnull(paint_colours[new_colour]))
paint_colour = new_colour
usr << "<span class='notice'>You set \the [src] colour to '[paint_colour]'.</span>"
/obj/item/device/floor_painter/verb/choose_decal(new_decal in decals)
set name = "Choose Decal"
set desc = "Choose a floor painter decal."
set category = "Object"
set src in usr
if(usr.incapacitated())
return
if(new_decal && !isnull(decals[new_decal]))
decal = new_decal
usr << "<span class='notice'>You set \the [src] decal to '[decal]'.</span>"
/obj/item/device/floor_painter/verb/choose_direction(new_dir in paint_dirs)
set name = "Choose Direction"
set desc = "Choose a floor painter direction."
set category = "Object"
set src in usr
if(usr.incapacitated())
return
if(new_dir && !isnull(paint_dirs[new_dir]))
paint_dir = new_dir
usr << "<span class='notice'>You set \the [src] direction to '[paint_dir]'.</span>"
+1 -1
View File
@@ -18,6 +18,6 @@
matter = list(DEFAULT_WALL_MATERIAL = 50,"glass" = 20)
origin_tech = list(TECH_MAGNET = 1, TECH_ENGINERING = 1)
origin_tech = list(TECH_MAGNET = 1, TECH_ENGINEERING = 1)
var/obj/machinery/telecomms/buffer // simple machine buffer for device linkage
var/obj/machinery/clonepod/connecting //same for cryopod linkage
@@ -16,16 +16,11 @@
/obj/item/device/pipe_painter/afterattack(atom/A, mob/user as mob, proximity)
if(!proximity)
return
if(!istype(A,/obj/machinery/atmospherics/pipe) || istype(A,/obj/machinery/atmospherics/pipe/tank) || istype(A,/obj/machinery/atmospherics/pipe/vent) || istype(A,/obj/machinery/atmospherics/pipe/simple/heat_exchanging) || istype(A,/obj/machinery/atmospherics/pipe/simple/insulated) || !in_range(user, A))
return
var/obj/machinery/atmospherics/pipe/P = A
var/turf/T = P.loc
if (P.level < 2 && T.level==1 && isturf(T) && T.intact)
user << "<span class='warning'>You must remove the plating first.</span>"
return
P.change_color(pipe_colors[mode])
/obj/item/device/pipe_painter/attack_self(mob/user as mob)
+2 -2
View File
@@ -22,7 +22,7 @@
var/mode = 0 // 0 = off, 1=clamped (off), 2=operating
var/drained_this_tick = 0 // This is unfortunately necessary to ensure we process powersinks BEFORE other machinery such as APCs.
var/datum/powernet/PN // Our powernet
var/datum/powernet/PN // Our powernet
var/obj/structure/cable/attached // the attached cable
/obj/item/device/powersink/Destroy()
@@ -34,7 +34,7 @@
if(istype(I, /obj/item/weapon/screwdriver))
if(mode == 0)
var/turf/T = loc
if(isturf(T) && !T.intact)
if(isturf(T) && !!T.is_plating())
attached = locate() in T
if(!attached)
user << "No exposed cable here to attach to."
@@ -67,3 +67,10 @@
icon_state = "intercom-p"
else
icon_state = "intercom"
/obj/item/device/radio/intercom/locked
freerange = 1
var/locked_frequency
/obj/item/device/radio/intercom/locked/set_frequency()
..(locked_frequency)
+2 -1
View File
@@ -8,6 +8,7 @@ MASS SPECTROMETER
REAGENT SCANNER
*/
/obj/item/device/healthanalyzer
name = "health analyzer"
desc = "A hand-held body scanner able to distinguish vital signs of the subject."
@@ -200,7 +201,7 @@ REAGENT SCANNER
matter = list(DEFAULT_WALL_MATERIAL = 30,"glass" = 20)
origin_tech = list(TECH_MAGNET = 1, TECH_ENGINERING = 1)
origin_tech = list(TECH_MAGNET = 1, TECH_ENGINEERING = 1)
/obj/item/device/analyzer/atmosanalyze(var/mob/user)
var/air = user.return_air()
+2 -2
View File
@@ -14,7 +14,7 @@
throw_range = 15
throw_speed = 3
origin_tech = list(TECH_DATA = 1, TECH_ENGINERING = 1, TECH_ILLEGAL = 3)
origin_tech = list(TECH_DATA = 1, TECH_ENGINEERING = 1, TECH_ILLEGAL = 3)
var/obj/item/device/radio/spy/radio
var/obj/machinery/camera/spy/camera
@@ -53,7 +53,7 @@
w_class = 2.0
origin_tech = list(TECH_DATA = 1, TECH_ENGINERING = 1, TECH_ILLEGAL = 3)
origin_tech = list(TECH_DATA = 1, TECH_ENGINEERING = 1, TECH_ILLEGAL = 3)
var/operating = 0
var/obj/item/device/radio/spy/radio
+8 -8
View File
@@ -61,10 +61,10 @@
user_client.images += overlay
//Remove stale overlays
for(var/obj/O in update_remove)
for(var/obj/O in update_remove)
user_client.images -= active_scanned[O]
active_scanned -= O
//Flicker effect
for(var/obj/O in active_scanned)
var/image/overlay = active_scanned[O]
@@ -76,19 +76,19 @@
//creates a new overlay for a scanned object
/obj/item/device/t_scanner/proc/get_overlay(obj/scanned)
//Use a cache so we don't create a whole bunch of new images just because someone's walking back and forth in a room.
//Use a cache so we don't create a whole bunch of new images just because someone's walking back and forth in a room.
//Also means that images are reused if multiple people are using t-rays to look at the same objects.
if(scanned in overlay_cache)
. = overlay_cache[scanned]
else
var/image/I = image(loc = scanned, icon = scanned.icon, icon_state = scanned.icon_state, layer = HUD_LAYER)
//Pipes are special
if(istype(scanned, /obj/machinery/atmospherics/pipe))
var/obj/machinery/atmospherics/pipe/P = scanned
I.color = P.pipe_color
I.overlays += P.overlays
I.alpha = 128
I.mouse_opacity = 0
. = I
@@ -100,12 +100,12 @@
/obj/item/device/t_scanner/proc/get_scanned_objects(var/scan_dist)
. = list()
var/turf/center = get_turf(src.loc)
if(!center) return
for(var/turf/T in range(scan_range, center))
if(!T.intact)
if(!!T.is_plating())
continue
for(var/obj/O in T.contents)
@@ -9,6 +9,7 @@
var/mob/attacher = null
var/valve_open = 0
var/toggle = 1
flags = PROXMOVE
/obj/item/device/transfer_valve/proc/process_activation(var/obj/item/device/D)
@@ -69,7 +70,7 @@
/obj/item/device/transfer_valve/attack_self(mob/user as mob)
ui_interact(user)
/obj/item/device/transfer_valve/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1)
// this is the data which will be sent to the ui
@@ -80,7 +81,7 @@
data["valveOpen"] = valve_open ? 1 : 0
// update the ui if it exists, returns null if no ui is passed/found
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
if (!ui)
// the ui does not exist, so we'll create a new() one
// for a list of parameters and their descriptions see the code docs in \code\modules\nano\nanoui.dm
+1 -1
View File
@@ -4,7 +4,7 @@
desc = "A tube of paste containing swarms of repair nanites. Very effective in repairing robotic machinery."
icon = 'icons/obj/nanopaste.dmi'
icon_state = "tube"
origin_tech = list(TECH_MATERIAL = 4, TECH_ENGINERING = 3)
origin_tech = list(TECH_MATERIAL = 4, TECH_ENGINEERING = 3)
amount = 10
@@ -1,33 +0,0 @@
/obj/item/stack/light_w
name = "wired glass tile"
singular_name = "wired glass floor tile"
desc = "A glass tile, which is wired, somehow."
icon_state = "glass_wire"
w_class = 3.0
force = 3.0
throwforce = 5.0
throw_speed = 5
throw_range = 20
flags = CONDUCT
max_amount = 60
/obj/item/stack/light_w/attackby(var/obj/item/O as obj, var/mob/user as mob)
..()
if(istype(O,/obj/item/weapon/wirecutters))
var/obj/item/stack/cable_coil/CC = new/obj/item/stack/cable_coil(user.loc)
CC.amount = 5
amount--
new/obj/item/stack/material/glass(user.loc)
if(amount <= 0)
user.drop_from_inventory(src)
qdel(src)
if(istype(O,/obj/item/stack/material) && O.get_material_name() == DEFAULT_WALL_MATERIAL)
var/obj/item/stack/M = O
if (M.use(1))
use(1)
new/obj/item/stack/tile/light(get_turf(user))
user << "<span class='notice'>You make a light tile.</span>"
else
user << "<span class='warning'>You need one metal sheet to finish the light tile.</span>"
return
@@ -1,36 +0,0 @@
/obj/item/stack/tile/light
name = "light tile"
singular_name = "light floor tile"
desc = "A floor tile, made out off glass. It produces light."
icon_state = "tile_e"
w_class = 3.0
force = 3.0
throwforce = 5.0
throw_speed = 5
throw_range = 20
flags = CONDUCT
max_amount = 60
attack_verb = list("bashed", "battered", "bludgeoned", "thrashed", "smashed")
var/on = 1
var/state //0 = fine, 1 = flickering, 2 = breaking, 3 = broken
/obj/item/stack/tile/light/New(var/loc, var/amount=null)
..()
if(prob(5))
state = 3 //broken
else if(prob(5))
state = 2 //breaking
else if(prob(10))
state = 1 //flickering occasionally
else
state = 0 //fine
/obj/item/stack/tile/light/attackby(var/obj/item/O as obj, var/mob/user as mob)
..()
if(istype(O,/obj/item/weapon/crowbar))
new/obj/item/stack/material/steel(user.loc)
amount--
new/obj/item/stack/light_w(user.loc)
if(amount <= 0)
user.drop_from_inventory(src)
qdel(src)
@@ -1,34 +0,0 @@
/obj/item/stack/tile/steel
name = "floor tile"
singular_name = "floor tile"
desc = "Those could work as a pretty decent throwing weapon" //why?
icon_state = "tile"
force = 6.0
matter = list(DEFAULT_WALL_MATERIAL = 937.5)
throwforce = 15.0
throw_speed = 5
throw_range = 20
flags = CONDUCT
/obj/item/stack/tile/steel/New(var/loc, var/amount=null)
..()
src.pixel_x = rand(1, 14)
src.pixel_y = rand(1, 14)
return
/obj/item/stack/tile/steel/cyborg
name = "floor tile synthesizer"
desc = "A device that makes floor tiles."
gender = NEUTER
matter = null
uses_charge = 1
charge_costs = list(250)
stacktype = /obj/item/stack/tile/steel
build_type = /obj/item/stack/tile/steel
/obj/item/stack/tile/steel/proc/build(turf/S as turf)
if (istype(S,/turf/space))
S.ChangeTurf(/turf/simulated/floor/plating/airless)
else
S.ChangeTurf(/turf/simulated/floor/plating)
return
@@ -5,7 +5,7 @@
* Wood
* Carpet
*/
/obj/item/stack/tile
name = "tile"
singular_name = "tile"
@@ -14,6 +14,11 @@
max_amount = 60
var/build_type = null
/obj/item/stack/tile/New()
..()
pixel_x = rand(-7, 7)
pixel_y = rand(-7, 7)
/*
* Grass
*/
@@ -64,3 +69,59 @@
throw_speed = 5
throw_range = 20
flags = 0
/obj/item/stack/tile/floor
name = "floor tile"
singular_name = "floor tile"
desc = "Those could work as a pretty decent throwing weapon" //why?
icon_state = "tile"
force = 6.0
matter = list(DEFAULT_WALL_MATERIAL = 937.5)
throwforce = 15.0
throw_speed = 5
throw_range = 20
flags = CONDUCT
/obj/item/stack/tile/floor_red
name = "red floor tile"
singular_name = "red floor tile"
icon_state = "tile_red"
/obj/item/stack/tile/floor_steel
name = "steel floor tile"
singular_name = "steel floor tile"
icon_state = "tile_steel"
matter = list("plasteel" = 937.5)
/obj/item/stack/tile/floor_white
name = "white floor tile"
singular_name = "white floor tile"
icon_state = "tile_white"
matter = list("plastic" = 937.5)
/obj/item/stack/tile/floor_yellow
name = "yellow floor tile"
singular_name = "yellow floor tile"
icon_state = "tile_yellow"
/obj/item/stack/tile/floor_dark
name = "dark floor tile"
singular_name = "dark floor tile"
icon_state = "fr_tile"
matter = list("plasteel" = 937.5)
/obj/item/stack/tile/floor_freezer
name = "freezer floor tile"
singular_name = "freezer floor tile"
icon_state = "tile_freezer"
matter = list("plastic" = 937.5)
/obj/item/stack/tile/floor/cyborg
name = "floor tile synthesizer"
desc = "A device that makes floor tiles."
gender = NEUTER
matter = null
uses_charge = 1
charge_costs = list(250)
stacktype = /obj/item/stack/tile/floor
build_type = /obj/item/stack/tile/floor
+2 -2
View File
@@ -13,7 +13,7 @@
throw_speed = 1
throw_range = 5
w_class = 3.0
origin_tech = list(TECH_ENGINERING = 4, TECH_MATERIAL = 2)
origin_tech = list(TECH_ENGINEERING = 4, TECH_MATERIAL = 2)
matter = list(DEFAULT_WALL_MATERIAL = 50000)
var/datum/effect/effect/system/spark_spread/spark_system
var/stored_matter = 0
@@ -103,7 +103,7 @@
else if(!deconstruct && (istype(T,/turf/space) || istype(T,get_base_turf(T.z))))
build_cost = 1
build_type = "floor"
build_turf = /turf/simulated/floor/plating/airless
build_turf = /turf/simulated/floor/airless
else if(deconstruct && istype(T,/turf/simulated/wall))
var/turf/simulated/wall/W = T
build_delay = deconstruct ? 50 : 40
@@ -139,11 +139,6 @@
build_path = /obj/machinery/computer/crew
origin_tech = list(TECH_DATA = 3, TECH_BIO = 2, TECH_MAGNET = 2)
/obj/item/weapon/circuitboard/mech_bay_power_console
name = T_BOARD("mech bay power control console")
build_path = /obj/machinery/computer/mech_bay_power_console
origin_tech = list(TECH_DATA = 2, TECH_POWER = 3)
/obj/item/weapon/circuitboard/operating
name = T_BOARD("patient monitoring console")
build_path = /obj/machinery/computer/operating
@@ -195,4 +190,4 @@
/obj/item/weapon/circuitboard/rcon_console
name = T_BOARD("RCON remote control console")
build_path = /obj/machinery/computer/rcon
origin_tech = list(TECH_DATA = 4, TECH_ENGINERING = 3, TECH_POWER = 5)
origin_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 3, TECH_POWER = 5)
@@ -0,0 +1,13 @@
#ifndef T_BOARD
#error T_BOARD macro is not defined but we need it!
#endif
/obj/item/weapon/circuitboard/mech_recharger
name = T_BOARD("mech recharger")
build_path = "/obj/machinery/mech_recharger"
board_type = "machine"
origin_tech = list(TECH_DATA = 2, TECH_POWER = 2, TECH_ENGINEERING = 2)
req_components = list(
"/obj/item/weapon/stock_parts/capacitor" = 2,
"/obj/item/weapon/stock_parts/scanning_module" = 1,
"/obj/item/weapon/stock_parts/manipulator" = 2)
@@ -6,7 +6,7 @@
name = T_BOARD("mining drill head")
build_path = "/obj/machinery/mining/drill"
board_type = "machine"
origin_tech = list(TECH_DATA = 1, TECH_ENGINERING = 1)
origin_tech = list(TECH_DATA = 1, TECH_ENGINEERING = 1)
req_components = list(
"/obj/item/weapon/stock_parts/capacitor" = 1,
"/obj/item/weapon/cell" = 1,
@@ -6,7 +6,7 @@
name = T_BOARD("PACMAN-type generator")
build_path = "/obj/machinery/power/port_gen/pacman"
board_type = "machine"
origin_tech = list(TECH_DATA = 3, TECH_POWER = 3, TECH_PHORON = 3, TECH_ENGINERING = 3)
origin_tech = list(TECH_DATA = 3, TECH_POWER = 3, TECH_PHORON = 3, TECH_ENGINEERING = 3)
req_components = list(
"/obj/item/weapon/stock_parts/matter_bin" = 1,
"/obj/item/weapon/stock_parts/micro_laser" = 1,
@@ -16,9 +16,9 @@
/obj/item/weapon/circuitboard/pacman/super
name = T_BOARD("SUPERPACMAN-type generator")
build_path = "/obj/machinery/power/port_gen/pacman/super"
origin_tech = list(TECH_DATA = 3, TECH_POWER = 4, TECH_ENGINERING = 4)
origin_tech = list(TECH_DATA = 3, TECH_POWER = 4, TECH_ENGINEERING = 4)
/obj/item/weapon/circuitboard/pacman/mrs
name = T_BOARD("MRSPACMAN-type generator")
build_path = "/obj/machinery/power/port_gen/pacman/mrs"
origin_tech = list(TECH_DATA = 3, TECH_POWER = 5, TECH_ENGINERING = 5)
origin_tech = list(TECH_DATA = 3, TECH_POWER = 5, TECH_ENGINEERING = 5)
@@ -6,14 +6,14 @@
name = T_BOARD("superconductive magnetic energy storage")
build_path = "/obj/machinery/power/smes/buildable"
board_type = "machine"
origin_tech = list(TECH_POWER = 6, TECH_ENGINERING = 4)
origin_tech = list(TECH_POWER = 6, TECH_ENGINEERING = 4)
req_components = list("/obj/item/weapon/smes_coil" = 1, "/obj/item/stack/cable_coil" = 30)
/obj/item/weapon/circuitboard/batteryrack
name = T_BOARD("battery rack PSU")
build_path = "/obj/machinery/power/smes/batteryrack"
board_type = "machine"
origin_tech = list(TECH_POWER = 3, TECH_ENGINERING = 2)
origin_tech = list(TECH_POWER = 3, TECH_ENGINEERING = 2)
req_components = list("/obj/item/weapon/cell" = 3)
/obj/item/weapon/circuitboard/ghettosmes
@@ -6,7 +6,7 @@
name = T_BOARD("cyborg recharging station")
build_path = "/obj/machinery/recharge_station"
board_type = "machine"
origin_tech = list(TECH_DATA = 3, TECH_ENGINERING = 3)
origin_tech = list(TECH_DATA = 3, TECH_ENGINEERING = 3)
req_components = list(
"/obj/item/stack/cable_coil" = 5,
"/obj/item/weapon/stock_parts/capacitor" = 2,
@@ -15,7 +15,7 @@ obj/item/weapon/circuitboard/rdserver
name = T_BOARD("destructive analyzer")
build_path = "/obj/machinery/r_n_d/destructive_analyzer"
board_type = "machine"
origin_tech = list(TECH_MAGNET = 2, TECH_ENGINERING = 2, TECH_DATA = 2)
origin_tech = list(TECH_MAGNET = 2, TECH_ENGINEERING = 2, TECH_DATA = 2)
req_components = list(
"/obj/item/weapon/stock_parts/scanning_module" = 1,
"/obj/item/weapon/stock_parts/manipulator" = 1,
@@ -25,7 +25,7 @@ obj/item/weapon/circuitboard/rdserver
name = T_BOARD("autolathe")
build_path = "/obj/machinery/autolathe"
board_type = "machine"
origin_tech = list(TECH_ENGINERING = 2, TECH_DATA = 2)
origin_tech = list(TECH_ENGINEERING = 2, TECH_DATA = 2)
req_components = list(
"/obj/item/weapon/stock_parts/matter_bin" = 3,
"/obj/item/weapon/stock_parts/manipulator" = 1,
@@ -35,7 +35,7 @@ obj/item/weapon/circuitboard/rdserver
name = T_BOARD("protolathe")
build_path = "/obj/machinery/r_n_d/protolathe"
board_type = "machine"
origin_tech = list(TECH_ENGINERING = 2, TECH_DATA = 2)
origin_tech = list(TECH_ENGINEERING = 2, TECH_DATA = 2)
req_components = list(
"/obj/item/weapon/stock_parts/matter_bin" = 2,
"/obj/item/weapon/stock_parts/manipulator" = 2,
@@ -46,7 +46,7 @@ obj/item/weapon/circuitboard/rdserver
name = T_BOARD("circuit imprinter")
build_path = "/obj/machinery/r_n_d/circuit_imprinter"
board_type = "machine"
origin_tech = list(TECH_ENGINERING = 2, TECH_DATA = 2)
origin_tech = list(TECH_ENGINEERING = 2, TECH_DATA = 2)
req_components = list(
"/obj/item/weapon/stock_parts/matter_bin" = 1,
"/obj/item/weapon/stock_parts/manipulator" = 1,
@@ -56,7 +56,7 @@ obj/item/weapon/circuitboard/rdserver
name = "Circuit board (Exosuit Fabricator)"
build_path = "/obj/machinery/mecha_part_fabricator"
board_type = "machine"
origin_tech = list(TECH_DATA = 3, TECH_ENGINERING = 3)
origin_tech = list(TECH_DATA = 3, TECH_ENGINEERING = 3)
req_components = list(
"/obj/item/weapon/stock_parts/matter_bin" = 2,
"/obj/item/weapon/stock_parts/manipulator" = 1,
@@ -8,7 +8,7 @@
/obj/item/weapon/circuitboard/telecomms/receiver
name = T_BOARD("subspace receiver")
build_path = "/obj/machinery/telecomms/receiver"
origin_tech = list(TECH_DATA = 4, TECH_ENGINERING = 3, TECH_BLUESPACE = 2)
origin_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 3, TECH_BLUESPACE = 2)
req_components = list(
"/obj/item/weapon/stock_parts/subspace/ansible" = 1,
"/obj/item/weapon/stock_parts/subspace/filter" = 1,
@@ -18,7 +18,7 @@
/obj/item/weapon/circuitboard/telecomms/hub
name = T_BOARD("hub mainframe")
build_path = "/obj/machinery/telecomms/hub"
origin_tech = list(TECH_DATA = 4, TECH_ENGINERING = 4)
origin_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 4)
req_components = list(
"/obj/item/weapon/stock_parts/manipulator" = 2,
"/obj/item/stack/cable_coil" = 2,
@@ -27,7 +27,7 @@
/obj/item/weapon/circuitboard/telecomms/relay
name = T_BOARD("relay mainframe")
build_path = "/obj/machinery/telecomms/relay"
origin_tech = list(TECH_DATA = 3, TECH_ENGINERING = 4, TECH_BLUESPACE = 3)
origin_tech = list(TECH_DATA = 3, TECH_ENGINEERING = 4, TECH_BLUESPACE = 3)
req_components = list(
"/obj/item/weapon/stock_parts/manipulator" = 2,
"/obj/item/stack/cable_coil" = 2,
@@ -36,7 +36,7 @@
/obj/item/weapon/circuitboard/telecomms/bus
name = T_BOARD("bus mainframe")
build_path = "/obj/machinery/telecomms/bus"
origin_tech = list(TECH_DATA = 4, TECH_ENGINERING = 4)
origin_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 4)
req_components = list(
"/obj/item/weapon/stock_parts/manipulator" = 2,
"/obj/item/stack/cable_coil" = 1,
@@ -45,7 +45,7 @@
/obj/item/weapon/circuitboard/telecomms/processor
name = T_BOARD("processor unit")
build_path = "/obj/machinery/telecomms/processor"
origin_tech = list(TECH_DATA = 4, TECH_ENGINERING = 4)
origin_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 4)
req_components = list(
"/obj/item/weapon/stock_parts/manipulator" = 3,
"/obj/item/weapon/stock_parts/subspace/filter" = 1,
@@ -57,7 +57,7 @@
/obj/item/weapon/circuitboard/telecomms/server
name = T_BOARD("telecommunication server")
build_path = "/obj/machinery/telecomms/server"
origin_tech = list(TECH_DATA = 4, TECH_ENGINERING = 4)
origin_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 4)
req_components = list(
"/obj/item/weapon/stock_parts/manipulator" = 2,
"/obj/item/stack/cable_coil" = 1,
@@ -66,7 +66,7 @@
/obj/item/weapon/circuitboard/telecomms/broadcaster
name = T_BOARD("subspace broadcaster")
build_path = "/obj/machinery/telecomms/broadcaster"
origin_tech = list(TECH_DATA = 4, TECH_ENGINERING = 4, TECH_BLUESPACE = 2)
origin_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 4, TECH_BLUESPACE = 2)
req_components = list(
"/obj/item/weapon/stock_parts/manipulator" = 2,
"/obj/item/stack/cable_coil" = 1,
@@ -16,7 +16,7 @@
/obj/item/weapon/circuitboard/unary_atmos/heater
name = T_BOARD("gas heating system")
build_path = "/obj/machinery/atmospherics/unary/heater"
origin_tech = list(TECH_POWER = 2, TECH_ENGINERING = 1)
origin_tech = list(TECH_POWER = 2, TECH_ENGINEERING = 1)
req_components = list(
"/obj/item/stack/cable_coil" = 5,
"/obj/item/weapon/stock_parts/matter_bin" = 1,
@@ -25,7 +25,7 @@
/obj/item/weapon/circuitboard/unary_atmos/cooler
name = T_BOARD("gas cooling system")
build_path = "/obj/machinery/atmospherics/unary/freezer"
origin_tech = list(TECH_MAGNET = 2, TECH_ENGINERING = 2)
origin_tech = list(TECH_MAGNET = 2, TECH_ENGINEERING = 2)
req_components = list(
"/obj/item/stack/cable_coil" = 2,
"/obj/item/weapon/stock_parts/matter_bin" = 1,
@@ -31,9 +31,7 @@
overlays.Cut()
var/i = 0
for(var/obj/item/weapon/reagent_containers/food/snacks/donut/D in contents)
var/image/img = image('icons/obj/food.dmi', D.overlay_state)
img.pixel_x = i * 3
overlays += img
overlays += image('icons/obj/food.dmi', "[i][D.overlay_state]")
i++
/obj/item/weapon/storage/box/donut/empty
+7 -7
View File
@@ -24,7 +24,7 @@
force = 5.0
throwforce = 7.0
w_class = 2.0
origin_tech = list(TECH_MATERIAL = 1, TECH_ENGINERING = 1)
origin_tech = list(TECH_MATERIAL = 1, TECH_ENGINEERING = 1)
matter = list(DEFAULT_WALL_MATERIAL = 150)
attack_verb = list("bashed", "battered", "bludgeoned", "whacked")
@@ -103,7 +103,7 @@
throw_speed = 2
throw_range = 9
w_class = 2.0
origin_tech = list(TECH_MATERIAL = 1, TECH_ENGINERING = 1)
origin_tech = list(TECH_MATERIAL = 1, TECH_ENGINEERING = 1)
matter = list(DEFAULT_WALL_MATERIAL = 80)
attack_verb = list("pinched", "nipped")
sharp = 1
@@ -148,7 +148,7 @@
matter = list(DEFAULT_WALL_MATERIAL = 70, "glass" = 30)
//R&D tech level
origin_tech = list(TECH_ENGINERING = 1)
origin_tech = list(TECH_ENGINEERING = 1)
//Welding tool specific stuff
var/welding = 0 //Whether or not the welding tool is off(0), on(1) or currently welding(2)
@@ -372,21 +372,21 @@
/obj/item/weapon/weldingtool/largetank
name = "industrial welding tool"
max_fuel = 40
origin_tech = list(TECH_ENGINERING = 2)
origin_tech = list(TECH_ENGINEERING = 2)
matter = list(DEFAULT_WALL_MATERIAL = 70, "glass" = 60)
/obj/item/weapon/weldingtool/hugetank
name = "upgraded welding tool"
max_fuel = 80
w_class = 3.0
origin_tech = list(TECH_ENGINERING = 3)
origin_tech = list(TECH_ENGINEERING = 3)
matter = list(DEFAULT_WALL_MATERIAL = 70, "glass" = 120)
/obj/item/weapon/weldingtool/experimental
name = "experimental welding tool"
max_fuel = 40
w_class = 3.0
origin_tech = list(TECH_ENGINERING = 4, TECH_PHORON = 3)
origin_tech = list(TECH_ENGINEERING = 4, TECH_PHORON = 3)
matter = list(DEFAULT_WALL_MATERIAL = 70, "glass" = 120)
var/last_gen = 0
@@ -413,7 +413,7 @@
throwforce = 7.0
item_state = "crowbar"
w_class = 2.0
origin_tech = list(TECH_ENGINERING = 1)
origin_tech = list(TECH_ENGINEERING = 1)
matter = list(DEFAULT_WALL_MATERIAL = 50)
attack_verb = list("attacked", "bashed", "battered", "bludgeoned", "whacked")
+2
View File
@@ -136,6 +136,8 @@
/obj/proc/hide(h)
return
/obj/proc/hides_under_flooring()
return 0
/obj/proc/hear_talk(mob/M as mob, text, verb, datum/language/speaking)
if(talking_atom)
+37 -18
View File
@@ -3,26 +3,45 @@
icon_state = "empty"
anchored = 1
var/cult = 0
New()
ChangeSign(pick("pinkflamingo", "magmasea", "limbo", "rustyaxe", "armokbar", "brokendrum", "meadbay", "thedamnwall", "thecavern", "cindikate", "theorchard", "thesaucyclown", "theclownshead", "whiskeyimplant", "carpecarp", "robustroadhouse", "greytide", "theredshirt","thebark","theharmbaton","theharmedbaton","thesingulo","thedrukcarp","thedrunkcarp", "scotch","officerbeersky","on"))
return
proc/ChangeSign(var/Text)
src.icon_state = "[Text]"
//on = 0
//brightness_on = 4 //uncomment these when the lighting fixes get in
return
/obj/structure/sign/double/barsign/proc/get_valid_states(initial=1)
. = icon_states(icon)
. -= "on"
. -= "narsiebistro"
. -= "empty"
if(initial)
. -= "Off"
/obj/structure/sign/double/barsign/examine(mob/user)
..()
switch(icon_state)
if("Off")
user << "It appears to be switched off."
if("narsiebistro")
user << "It shows a picture of a large black and red being. Spooky!"
if("on", "empty")
user << "The lights are on, but there's no picture."
else
user << "It says '[icon_state]'"
/obj/structure/sign/double/barsign/New()
..()
icon_state = pick(get_valid_states())
/obj/structure/sign/double/barsign/attackby(obj/item/I, mob/user)
if(cult)
return ..()
var/obj/item/weapon/card/id/card = I.GetID()
if(istype(card))
if(access_bar in card.GetAccess())
var/sign_type = input(user, "What would you like to change the barsign to?") as null|anything in get_valid_states(0)
if(!sign_type)
return
icon_state = sign_type
user << "<span class='notice'>You change the barsign.</span>"
else
user << "<span class='warning'>Access denied.</span>"
return
if(istype(I, /obj/item/weapon/card/id))
var/obj/item/weapon/card/id/card = I
if(access_bar in card.GetAccess())
var/sign_type = input(user, "What would you like to change the barsign to?") as null|anything in list("Off", "Pink Flamingo", "Magma Sea", "Limbo", "Rusty Axe", "Armok Bar", "Broken Drum", "Mead Bay", "The Damn Wall", "The Cavern", "Cindi Kate", "The Orchard", "The Saucy Clown", "The Clowns Head", "Whiskey Implant", "Carpe Carp", "Robust Roadhouse", "Greytide", "The Redshirt", "The Bark", "The Harm Baton", "The Harmed Baton", "The Singulo", "The Druk Carp", "The Drunk Carp", "Scotch", "Officer Beersky", "On")
if(sign_type == null)
return
else
sign_type = replacetext(lowertext(sign_type), " ", "") // lowercase, strip spaces - along with choices for user options, avoids huge if-else-else
src.ChangeSign(sign_type)
user << "You change the barsign."
return ..()
@@ -68,7 +68,7 @@
new /obj/item/weapon/cartridge/janitor(src)
new /obj/item/clothing/gloves/black(src)
new /obj/item/clothing/head/soft/purple(src)
new /obj/item/clothing/head/beret/jan(src)
new /obj/item/clothing/head/beret/purple(src)
new /obj/item/device/flashlight(src)
new /obj/item/weapon/caution(src)
new /obj/item/weapon/caution(src)
@@ -122,7 +122,7 @@
new /obj/item/weapon/gun/energy/gun(src)
new /obj/item/clothing/accessory/holster/waist(src)
new /obj/item/weapon/melee/telebaton(src)
new /obj/item/clothing/head/beret/sec/hos(src)
new /obj/item/clothing/head/beret/sec/corporate/hos(src)
return
@@ -159,7 +159,7 @@
new /obj/item/weapon/melee/baton/loaded(src)
new /obj/item/weapon/gun/energy/gun(src)
new /obj/item/weapon/storage/box/holobadge(src)
new /obj/item/clothing/head/beret/sec/warden(src)
new /obj/item/clothing/head/beret/sec/corporate/warden(src)
return
@@ -26,9 +26,9 @@
new /obj/item/clothing/head/beret/sec(src)
new /obj/item/clothing/head/beret/sec(src)
new /obj/item/clothing/head/beret/sec(src)
new /obj/item/clothing/head/beret/sec/alt(src)
new /obj/item/clothing/head/beret/sec/alt(src)
new /obj/item/clothing/head/beret/sec/alt(src)
new /obj/item/clothing/head/beret/sec/corporate/officer(src)
new /obj/item/clothing/head/beret/sec/corporate/officer(src)
new /obj/item/clothing/head/beret/sec/corporate/officer(src)
return
@@ -167,9 +167,9 @@
new /obj/item/clothing/head/hardhat/red(src)
new /obj/item/clothing/head/hardhat/red(src)
new /obj/item/clothing/head/hardhat/red(src)
new /obj/item/clothing/head/beret/eng(src)
new /obj/item/clothing/head/beret/eng(src)
new /obj/item/clothing/head/beret/eng(src)
new /obj/item/clothing/head/beret/engineering(src)
new /obj/item/clothing/head/beret/engineering(src)
new /obj/item/clothing/head/beret/engineering(src)
return
@@ -190,9 +190,9 @@
new /obj/item/clothing/head/hardhat(src)
new /obj/item/clothing/head/hardhat(src)
new /obj/item/clothing/head/hardhat(src)
new /obj/item/clothing/head/beret/eng(src)
new /obj/item/clothing/head/beret/eng(src)
new /obj/item/clothing/head/beret/eng(src)
new /obj/item/clothing/head/beret/engineering(src)
new /obj/item/clothing/head/beret/engineering(src)
new /obj/item/clothing/head/beret/engineering(src)
return
+8
View File
@@ -44,6 +44,14 @@
color = "#B8F5E3"
alpha = 200
/obj/structure/curtain/open/bed
name = "bed curtain"
color = "#854636"
/obj/structure/curtain/open/privacy
name = "privacy curtain"
color = "#B8F5E3"
/obj/structure/curtain/open/shower
name = "shower curtain"
color = "#ACD1E9"
+1
View File
@@ -43,6 +43,7 @@
return
/obj/structure/girder/proc/reset_girder()
anchored = 1
cover = initial(cover)
health = min(health,initial(health))
state = 0
+1 -1
View File
@@ -53,7 +53,7 @@
/obj/structure/lattice/attackby(obj/item/C as obj, mob/user as mob)
if (istype(C, /obj/item/stack/tile/steel))
if (istype(C, /obj/item/stack/tile/floor))
var/turf/T = get_turf(src)
T.attackby(C, user) //BubbleWrap - hand this off to the underlying turf instead
return
+6 -3
View File
@@ -175,12 +175,15 @@ obj/structure/safe/ex_act(severity)
level = 1 //underfloor
layer = 2.5
/obj/structure/safe/floor/initialize()
..()
var/turf/T = loc
hide(T.intact)
if(istype(T) && !T.is_plating())
hide(1)
update_icon()
/obj/structure/safe/floor/hide(var/intact)
invisibility = intact ? 101 : 0
/obj/structure/safe/floor/hides_under_flooring()
return 1
+6
View File
@@ -291,6 +291,9 @@
set category = "Object"
set src in oview(1)
if(usr.incapacitated())
return 0
if(anchored)
usr << "It is fastened to the floor therefore you can't rotate it!"
return 0
@@ -307,6 +310,9 @@
set category = "Object"
set src in oview(1)
if(usr.incapacitated())
return 0
if(anchored)
usr << "It is fastened to the floor therefore you can't rotate it!"
return 0
@@ -68,6 +68,15 @@
icon_state = "r-wingrille"
win_path = /obj/structure/window/reinforced
/obj/effect/wingrille_spawn/reinforced/crescent
name = "Crescent window grille spawner"
icon_state = "r-wingrille"
win_path = /obj/structure/window/reinforced
/obj/effect/wingrille_spawn/reinforced/crescent/handle_window_spawn(var/obj/structure/window/W)
W.maxhealth = 1000000
W.health = 1000000
/obj/effect/wingrille_spawn/phoron
name = "phoron window grille spawner"
icon_state = "p-wingrille"