Aurora 2: The 3/4thening (#17186)

* after dark

* FIXES

* breakin

* butt

* Update code/game/objects/items/devices/floor_painter.dm

Co-authored-by: Cody Brittain <cbrittain10@yahoo.com>

* Update code/game/objects/items/devices/floor_painter.dm

Co-authored-by: Cody Brittain <cbrittain10@yahoo.com>

* Update code/game/objects/structures/lattice.dm

Co-authored-by: Cody Brittain <cbrittain10@yahoo.com>

* testing 1

* a

* FUCK THIS PRESET!!!

* allah

* OTEMACHI

* tis' done

* Project Exorcism : Sneed's Snairs (Formerly Chuck's)

* Update code/game/objects/structures/stool_bed_chair_nest/chairs.dm

* Update code/game/objects/structures/stool_bed_chair_nest/chairs.dm

* Update stools.dm

* Update code/game/objects/structures/stool_bed_chair_nest/stools.dm

* Update code/game/objects/structures/stool_bed_chair_nest/stools.dm

* Update stools.dm

* Update chairs.dm

* Update code/game/objects/structures/stool_bed_chair_nest/chairs.dm

* inhand fixes

* airlocks (matt has cooked)

fuck

* my cody plays the mamba

* fuck

* fixes layering issue

* airlocks and everything else Please fucking kill me

* underlays

* unfuck blending

* finished replacing old ass shit

* your ass is geass

* conflicts die now

* public fat'wa

* progress on walls and windows

* more mapping

* baltimore accents be like

* minor progress

* monitors

* fire alarms and apc adjustments

* apcs pixel adjustments, final airlock look

* also grilles

* shuttle wall start plus shuttle windows

* starting consoles

* table outlines

* I love broke ass sprites

* fixing the stupid ass exterior walls

* light fuckery

* terminal directionals, external airlocks, table fixes, blahblahblah

* fix 1

* fix 2

* some more fixes

* fix chairs

* basic untested railings and updating colors from atteria

* bridge and some fixes

* removing some artifacts on the new walls

* breaking wood tables and adding 4 wall materials

* fix

* compile & wood fixes

* make the horizon compile again

* railings, firedoors, ATMs, intercomms and tables again

* mapping begins also some tweaks to map view of icons

* full tile steel walls

* i sure hope nothing bad happens

* airlock updates (untested)

* reverts most wall machinery

* skull

* wall coloring

* makes the tg wood chill out

* work on airlocks

* hull consistency

* cause you live forever in the lights you make

* whoops can't show that in a christian manga

* terminals should be on walls and everything's hunky dory now

also i changed the wood stuff as per atteria's suggestion

* fixing airlocks

* fixes

* window resprite, coloring adjustments

* scc hull resprite

* new grilles, frame edits, and borosilicate

* greyscale wood palette improvement

* shuttle windows

* window frame fix

* apc update

* refit and reshaded fire alarms

* mapping icon fixes

* table fixes

* map fixes, platforms and stairs

* updates cutter, new walls and terminals

* mapping fixes

* fix preview

* preview fix stone

* stairs

* initial work for the map

* railing and windowpane fuckery

* new external airlocks

* a

* fix the maps in preparation

* wall object pixel offsets

* air alarms D1

* extinguisher cabinets

* APC DESTROYED MISSION ACCOMPLISHED GOOD WORK

* deck 3: floor decals, APCs, air alarms, fire extinguisher cabinets

* deck 3: fireaxe cabinet

* /shuttle_landmark/distress/blue, move base_turf from map to obj def

* intercom presets

* formatting

* deck 1: floor decals

* deck 2: named area fix (LMAO), signs to use single quotes

* deck 2: floor decals, APCs, air alarms, fire extinguisher cabinets, fireaxe cabinets

* Platforms and stairs!

* grates and bugfixes

* Angled ship walls + grate color fix

* corrects apc anim overlay

* deck 2 and away site fixes

# Conflicts:
#	maps/sccv_horizon/sccv_horizon-2_deck_2.dmm

* deck 2 missing grate

* warning stripes

* railings and ledges

* windows and fixtures

* windoorsagain

* airlocks pt1

* windows de-seamed and transparent

* airlocks and pixel offsets

* fixes for airlocks

* more airlock fixes

* presets for ringer, request console and newscaster

* 132

* asfsaf

* kitchen tiling

* thicker freezer tile bevels

* More angled walls

* New shutters and blast doors

* directional corrections

* ops railing fixes

* updated window map things and shutters

* value changes and blast door changes

* Ledges and platforms galore (D2/D3)

* all decks: fix door dirs

* all decks: newscasters, intercoms, requests consoles, ringer consoles

* helm light blue decals to dark blue

* supermatter door dir fix

* fix directional presets (dirs/offsets): newscaster, intercom, requests console, ringer console

* firedoor changes

* deck 3: overlapping wall mountables fixes

* map changes

* airlock changes

* map tweaks

* airlock & stair icons

* various mapping modifications

* Double airlocks + fixing denied states + fixing airlocks on all levels

* Rebase

* directional terminals buttons and lights again, platform tweaks

terminal north facing sprites, atm/food terminal directionals
proper door control and lightswitch directionals (presets still need to be set up, mapping)
re-adds new light tube sprites, again
new sprites for floor lights and the other stuff that got added
adjusted platforms to be recolorable, added light and dark versions, fixed some shading

* missing ERT outfit thingy fix

* floor lights fixed

* deck 3: various small fixes

* deck 1: various small fixes

* deck 2: various small fixes

* fixes

* d2 fixes & multitile door fix

* d2 fixes, remove unused airlock files, button icon fixes, window icon fixes

* make it actually compile, oops!

* make it actually compile, pt2

* CE office camera

* pew pew pew

* pew pew pew 2

* fixes

* deck 3: buttons fixes

* deck 3: button and other fixes

* deck 3: fixes and stuff

* D1 fixes & skrell airlocks

* minor D2 tweaks

* a lot of airlock-related fixes, glass tables, paint sprayer fixes, decal fixes, changelog

* maintenance hatch sprites

* fixing double doors

* flips multi-tiles, fixes multi-tiles, adds desk windoors

* new plastic flaps

* deck 2: a few buttons

* side + middle doors

* created paths for 3-tiles doors

* apply to map the 3 tiles airlocks

* some fixes, windoor alpha

* remove this random ass potted plant

* more map fixes

* holodeck disposal pipe fix

* secure airlock sprites

no code or obj definitions yet

* vault airlock

* vault door fixes

* scc window alpha

* adjusts double door glass, firedoor open state

* adjusts construction states for doors

* remove some defunct icons and fix anims

* assembly stuff

* pharma fixes

* vault door dir

* firedoor smart generation moved to its own proc

* lift doors, d1 fixes

* firedoor smart generation: adjacent wall check

* firedoor smart generation: adjacent firedoor check

* all decks: missing firedoor and other fixes

* deck 2: weird maint stairs fix

* oops

* diona airlock fix

* the shuttle wall gigadeath

* fixes

* some fixes for leftover map item paths, and double lattices

* new diona walls

* more fixes

* and more

* deck 1: fix out of bounds keys

* deck 3: fix out of bounds keys

* runtime 3: duplicate APCs fix

* all decks: make all 3 tile wide doors glass

---------

Co-authored-by: Wezzy <wowzewow@gmail.com>
Co-authored-by: Wowzewow (Wezzy) <42310821+alsoandanswer@users.noreply.github.com>
Co-authored-by: Cody Brittain <cbrittain10@yahoo.com>
Co-authored-by: kyres1 <noodle.buster31@gmail.com>
Co-authored-by: Matt Atlas <liermattia@gmail.com>
Co-authored-by: atteria <tarkona@protonmail.com>
Co-authored-by: Fluffy <65877598+FluffyGhoster@users.noreply.github.com>
Co-authored-by: DreamySkrell <107256943+DreamySkrell@users.noreply.github.com>
Co-authored-by: naut <nautilussplat@gmail.com>
Co-authored-by: naut <55491249+nauticall@users.noreply.github.com>
This commit is contained in:
Matt Atlas
2023-08-30 21:18:10 +00:00
committed by GitHub
co-authored by Wezzy Wowzewow Cody Brittain kyres1 Matt Atlas atteria Fluffy DreamySkrell naut naut
parent 1e4d8bd6e0
commit 99b4033ca5
414 changed files with 84945 additions and 81661 deletions
+1 -1
View File
@@ -8,7 +8,7 @@
opacity = 0
anchored = 1
density = 0
layer = OBJ_LAYER + 0.9
layer = TURF_LAYER + 0.2
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
animate_movement = 0
var/solid_time = 120
+2 -3
View File
@@ -1,5 +1,5 @@
/obj/effect/floor_decal/snow
icon = 'icons/turf/snow.dmi'
icon = 'icons/turf/flooring/snow.dmi'
icon_state = "snow"
/obj/effect/floor_decal/snow/corner
@@ -9,8 +9,7 @@
icon_state = "snow_surround"
/obj/effect/floor_decal/snowdrift
name = "snow drift"
icon = 'icons/turf/snow.dmi'
icon = 'icons/turf/flooring/snow.dmi'
icon_state = "drift"
/obj/effect/floor_decal/snowdrift/random/Initialize(mapload, newdir, newcolour, bypass, set_icon_state)
+1 -1
View File
@@ -62,7 +62,7 @@
return FALSE
if(istype(target, /obj/machinery/door/airlock))
var/obj/machinery/door/airlock/door = target
if(door.hackProof)
if(door.hack_proof)
to_chat(user, SPAN_WARNING("Hacking [target] is beyond the capabilities of this device!"))
return FALSE
var/found = known_targets.Find(target)
@@ -1,8 +1,13 @@
/obj/item/device/floor_painter
#define AIRLOCK_REGION_PAINT "Paint"
#define AIRLOCK_REGION_STRIPE "Stripe"
#define AIRLOCK_REGION_WINDOW "Window"
/obj/item/device/paint_sprayer
name = "paint gun"
desc = "A Hephaestus-made paint gun that uses microbes to replenish its paint storage. Very high-tech and fancy too!"
desc_info = "Use control-click on a coloured decal on a turf to copy its colour. You can also use shift-click on a turf with the paint gun in hand to clear all decals on it."
icon = 'icons/obj/item/tools/floor_painter.dmi'
icon = 'icons/obj/item/tools/paint_sprayer.dmi'
icon_state = "floor_painter"
item_state = "floor_painter"
contained_sprite = TRUE
@@ -12,11 +17,8 @@
var/list/decals = list(
"quarter-turf" = list("path" = /obj/effect/floor_decal/corner, "precise" = 1, "coloured" = 1),
"wide quarter-turf" = list("path" = /obj/effect/floor_decal/corner_wide, "precise" = 1, "coloured" = 1),
"full quarter-turf" = list("path" = /obj/effect/floor_decal/corner_full, "precise" = 1, "coloured" = 1),
"light corner" = list("path" = /obj/effect/floor_decal/corner/light, "precise" = 1, "coloured" = 1),
"full light corner" = list("path" = /obj/effect/floor_decal/corner/light/full, "precise" = 1, "coloured" = 1),
"light, wide corner" = list("path" = /obj/effect/floor_decal/corner_wide/light, "precise" = 1, "coloured" = 1),
"full, light, wide corner" = list("path" = /obj/effect/floor_decal/corner_wide/light/full, "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, "coloured" = 1),
@@ -70,8 +72,7 @@
"bulkhead black" = COLOR_WALL_GUNMETAL
)
/obj/item/device/floor_painter/afterattack(var/atom/A, var/mob/user, proximity, params)
/obj/item/device/paint_sprayer/afterattack(var/atom/A, var/mob/user, proximity, params)
if(!proximity)
return
@@ -99,13 +100,19 @@
B.update_icon()
return
var/turf/simulated/floor/F = A
if(!istype(F))
to_chat(user, "<span class='warning'>\The [src] can only be used on station flooring.</span>")
else if (istype(A, /obj/machinery/door/airlock))
return paint_airlock(A, user)
else if (istype(A, /turf/simulated/floor))
return paint_floor(A, user, params)
/obj/item/device/paint_sprayer/proc/paint_floor(turf/simulated/floor/F, mob/user, params)
if(!F.flooring.can_paint)
to_chat(user, SPAN_WARNING("\The [src] cannot paint this type of flooring."))
return
if(!F.flooring || !F.flooring.can_paint || F.broken || F.burnt)
to_chat(user, "<span class='warning'>\The [src] cannot paint broken or missing tiles.</span>")
if(!F.flooring || F.broken || F.burnt)
to_chat(user, SPAN_WARNING("\The [src] cannot paint damaged or missing tiles."))
return
var/list/decal_data = decals[decal]
@@ -157,7 +164,7 @@
playsound(get_turf(src), 'sound/effects/spray3.ogg', 30, 1, -6)
new painting_decal(F, painting_dir, painting_colour)
/obj/item/device/floor_painter/attack_self(var/mob/user)
/obj/item/device/paint_sprayer/attack_self(var/mob/user)
var/choice = input("Do you wish to change the decal type, paint direction, or paint colour?") as null|anything in list("Decal","Direction", "Colour")
if(choice == "Decal")
choose_decal()
@@ -166,7 +173,7 @@
else if(choice == "Colour")
choose_colour()
/obj/item/device/floor_painter/proc/change_colour(new_colour, mob/user)
/obj/item/device/paint_sprayer/proc/change_colour(new_colour, mob/user)
if (new_colour)
paint_colour = new_colour
if (user)
@@ -181,7 +188,7 @@
if(ishuman(usr))
var/mob/living/carbon/human/H = usr
var/list/modifiers = params2list(params)
var/obj/item/device/floor_painter/paint_sprayer = H.get_active_hand()
var/obj/item/device/paint_sprayer/paint_sprayer = H.get_active_hand()
if(istype(paint_sprayer))
if(!istype(H.buckled_to))
H.face_atom(src)
@@ -191,21 +198,25 @@
return
. = ..()
/obj/item/device/floor_painter/proc/pick_color(atom/A, mob/user)
/obj/item/device/paint_sprayer/proc/pick_color(atom/A, mob/user)
if (!user.Adjacent(A) || user.incapacitated())
return FALSE
var/new_color
if (istype(A, /turf/simulated/floor))
new_color = pick_color_from_floor(A, user)
else if (istype(A, /obj/machinery/door/airlock))
new_color = pick_color_from_airlock(A, user)
if (!change_colour(new_color, user))
to_chat(user, SPAN_WARNING("\The [A] does not have a colour that you could pick from."))
return TRUE // There was an attempt to pick a color.
/obj/item/device/floor_painter/proc/pick_color_from_floor(turf/simulated/floor/F, mob/user)
/obj/item/device/paint_sprayer/proc/pick_color_from_floor(turf/simulated/floor/F, mob/user)
if (!F.decals || !F.decals.len)
return FALSE
var/list/available_colors = list()
for (var/image/I in F.decals)
for (var/img in F.decals)
/// This snowflake code is necessary because for some reason images added to the decals list at roundstart become appearances.
var/image/I = image(img)
available_colors |= isnull(I.color) ? COLOR_WHITE : I.color
var/picked_color = available_colors[1]
if (available_colors.len > 1)
@@ -214,7 +225,50 @@
return FALSE
return picked_color
/obj/item/device/floor_painter/proc/remove_paint(atom/A, mob/user)
/obj/item/device/paint_sprayer/proc/pick_color_from_airlock(obj/machinery/door/airlock/D, mob/user)
if (!D.paintable)
return FALSE
switch (select_airlock_region(D, user, "Where do you wish to pick the color from?"))
if (AIRLOCK_REGION_PAINT)
return D.door_color
if (AIRLOCK_REGION_STRIPE)
return D.stripe_color
if (AIRLOCK_REGION_WINDOW)
return D.window_color
else
return FALSE
/obj/item/device/paint_sprayer/proc/paint_airlock(obj/machinery/door/airlock/D, mob/user)
if (!D.paintable)
to_chat(user, SPAN_WARNING("You can't paint this airlock type."))
return FALSE
switch (select_airlock_region(D, user, "What do you wish to paint?"))
if (AIRLOCK_REGION_PAINT)
D.paint_airlock(paint_colour)
if (AIRLOCK_REGION_STRIPE)
D.stripe_airlock(paint_colour)
if (AIRLOCK_REGION_WINDOW)
D.paint_window(paint_colour)
else
return FALSE
return TRUE
/obj/item/device/paint_sprayer/proc/select_airlock_region(obj/machinery/door/airlock/D, mob/user, input_text)
var/choice
var/list/choices = list()
if (D.paintable & AIRLOCK_PAINTABLE_MAIN)
choices |= AIRLOCK_REGION_PAINT
if (D.paintable & AIRLOCK_PAINTABLE_STRIPE)
choices |= AIRLOCK_REGION_STRIPE
if (D.paintable & AIRLOCK_PAINTABLE_WINDOW)
choices |= AIRLOCK_REGION_WINDOW
choice = input(user, input_text) as null|anything in sortList(choices)
if (!user.use_check_and_message() || !D || !user.Adjacent(D))
return FALSE
return choice
/obj/item/device/paint_sprayer/proc/remove_paint(atom/A, mob/user)
if(!user.Adjacent(A) || user.incapacitated())
return FALSE
if (istype(A, /turf/simulated/floor))
@@ -223,16 +277,23 @@
F.decals.len--
F.update_icon()
. = TRUE
else if (istype(A, /obj/machinery/door/airlock))
var/obj/machinery/door/airlock/D = A
if (D.paintable)
D.paint_airlock(null)
D.stripe_airlock(null)
D.paint_window(null)
. = TRUE
if (.)
add_fingerprint(user)
playsound(get_turf(src), 'sound/effects/spray3.ogg', 30, 1, -6)
return .
/obj/item/device/floor_painter/examine(mob/user)
/obj/item/device/paint_sprayer/examine(mob/user)
. = ..(user)
to_chat(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()
/obj/item/device/paint_sprayer/verb/choose_colour()
set name = "Choose Colour"
set desc = "Choose a paintgun colour."
set category = "Object"
@@ -243,7 +304,7 @@
var/new_colour = input(usr, "Choose a colour.", "paintgun", paint_colour) as color|null
change_colour(new_colour, usr)
/obj/item/device/floor_painter/verb/choose_preset_colour()
/obj/item/device/paint_sprayer/verb/choose_preset_colour()
set name = "Choose Preset Colour"
set desc = "Choose a paintgun colour."
set category = "Object"
@@ -256,7 +317,7 @@
paint_colour = preset_colors[new_colour]
to_chat(usr, "<span class='notice'>You set \the [src] to paint with <font color='[paint_colour]'>a new colour</font>.</span>")
/obj/item/device/floor_painter/verb/choose_decal()
/obj/item/device/paint_sprayer/verb/choose_decal()
set name = "Choose Decal"
set desc = "Choose a paintgun decal."
set category = "Object"
@@ -270,7 +331,7 @@
decal = new_decal
to_chat(usr, "<span class='notice'>You set \the [src] decal to '[decal]'.</span>")
/obj/item/device/floor_painter/verb/choose_direction()
/obj/item/device/paint_sprayer/verb/choose_direction()
set name = "Choose Direction"
set desc = "Choose a paintgun direction."
set category = "Object"
@@ -283,3 +344,6 @@
if(new_dir && !isnull(paint_dirs[new_dir]))
paint_dir = new_dir
to_chat(usr, "<span class='notice'>You set \the [src] direction to '[paint_dir]'.</span>")
#undef AIRLOCK_REGION_PAINT
#undef AIRLOCK_REGION_STRIPE
@@ -1,8 +1,26 @@
#define PRESET_NORTH \
dir = NORTH; \
pixel_y = 20;
#define PRESET_SOUTH \
dir = SOUTH; \
pixel_y = -6;
#define PRESET_WEST \
dir = WEST; \
pixel_x = -8;
#define PRESET_EAST \
dir = EAST; \
pixel_x = 8;
/obj/item/device/radio/intercom
name = "intercom (general)"
desc = "An intercom with buttons for transmitting, receiving, and for volume control."
desc_extended = "Has a touch display for inputting a frequency, with proper authentication. Used to communicate when you have lost your radio. \
Otherwise, you would likely just use a handheld shortwave radio instead."
icon = 'icons/obj/machinery/wall/terminals.dmi'
icon_state = "intercom"
layer = 2.99
anchored = TRUE
@@ -17,10 +35,34 @@
var/radio_sound = null
clickvol = 40
/obj/item/device/radio/intercom/north
PRESET_NORTH
/obj/item/device/radio/intercom/south
PRESET_SOUTH
/obj/item/device/radio/intercom/west
PRESET_WEST
/obj/item/device/radio/intercom/east
PRESET_EAST
/obj/item/device/radio/intercom/ship
channels = list()
var/default_hailing = FALSE
/obj/item/device/radio/intercom/ship/north
PRESET_NORTH
/obj/item/device/radio/intercom/ship/south
PRESET_SOUTH
/obj/item/device/radio/intercom/ship/west
PRESET_WEST
/obj/item/device/radio/intercom/ship/east
PRESET_EAST
/obj/item/device/radio/intercom/ship/Initialize()
if(!current_map.use_overmap)
return ..()
@@ -44,9 +86,34 @@
/obj/item/device/radio/intercom/ship/hailing
default_hailing = TRUE
/obj/item/device/radio/intercom/ship/north
PRESET_NORTH
/obj/item/device/radio/intercom/ship/south
PRESET_SOUTH
/obj/item/device/radio/intercom/ship/west
PRESET_WEST
/obj/item/device/radio/intercom/ship/east
PRESET_EAST
/obj/item/device/radio/intercom/custom
name = "intercom (custom)"
/obj/item/device/radio/intercom/custom/north
PRESET_NORTH
/obj/item/device/radio/intercom/custom/south
PRESET_SOUTH
/obj/item/device/radio/intercom/custom/west
PRESET_WEST
/obj/item/device/radio/intercom/custom/east
PRESET_EAST
/obj/item/device/radio/intercom/custom/Initialize()
. = ..()
set_broadcasting(FALSE)
@@ -55,6 +122,18 @@
/obj/item/device/radio/intercom/hailing
name = "intercom (hailing)"
/obj/item/device/radio/intercom/hailing/north
PRESET_NORTH
/obj/item/device/radio/intercom/hailing/south
PRESET_SOUTH
/obj/item/device/radio/intercom/hailing/west
PRESET_WEST
/obj/item/device/radio/intercom/hailing/east
PRESET_EAST
/obj/item/device/radio/intercom/hailing/Initialize()
. = ..()
set_frequency(HAIL_FREQ)
@@ -62,10 +141,34 @@
/obj/item/device/radio/intercom/interrogation
name = "intercom (interrogation)"
/obj/item/device/radio/intercom/interrogation/north
PRESET_NORTH
/obj/item/device/radio/intercom/interrogation/south
PRESET_SOUTH
/obj/item/device/radio/intercom/interrogation/west
PRESET_WEST
/obj/item/device/radio/intercom/interrogation/east
PRESET_EAST
/obj/item/device/radio/intercom/interrogation/Initialize()
. = ..()
set_frequency(1449)
/obj/item/device/radio/intercom/interrogation/broadcasting/north
PRESET_NORTH
/obj/item/device/radio/intercom/interrogation/broadcasting/south
PRESET_SOUTH
/obj/item/device/radio/intercom/interrogation/broadcasting/west
PRESET_WEST
/obj/item/device/radio/intercom/interrogation/broadcasting/east
PRESET_EAST
/obj/item/device/radio/intercom/interrogation/broadcasting/Initialize() // The detainee's side.
. = ..()
set_broadcasting(TRUE)
@@ -74,6 +177,18 @@
/obj/item/device/radio/intercom/private
name = "intercom (private)"
/obj/item/device/radio/intercom/private/north
PRESET_NORTH
/obj/item/device/radio/intercom/private/south
PRESET_SOUTH
/obj/item/device/radio/intercom/private/west
PRESET_WEST
/obj/item/device/radio/intercom/private/east
PRESET_EAST
/obj/item/device/radio/intercom/private/Initialize()
. = ..()
set_frequency(AI_FREQ)
@@ -81,6 +196,18 @@
/obj/item/device/radio/intercom/specops
name = "intercom (spec ops)"
/obj/item/device/radio/intercom/specops/north
PRESET_NORTH
/obj/item/device/radio/intercom/specops/south
PRESET_SOUTH
/obj/item/device/radio/intercom/specops/west
PRESET_WEST
/obj/item/device/radio/intercom/specops/east
PRESET_EAST
/obj/item/device/radio/intercom/specops/Initialize()
. = ..()
set_frequency(ERT_FREQ)
@@ -88,6 +215,18 @@
/obj/item/device/radio/intercom/department
canhear_range = 5
/obj/item/device/radio/intercom/department/north
PRESET_NORTH
/obj/item/device/radio/intercom/department/south
PRESET_SOUTH
/obj/item/device/radio/intercom/department/west
PRESET_WEST
/obj/item/device/radio/intercom/department/east
PRESET_EAST
/obj/item/device/radio/intercom/department/Initialize()
. = ..()
set_broadcasting(FALSE)
@@ -96,6 +235,18 @@
/obj/item/device/radio/intercom/department/medbay
name = "intercom (medical)"
/obj/item/device/radio/intercom/department/medbay/north
PRESET_NORTH
/obj/item/device/radio/intercom/department/medbay/south
PRESET_SOUTH
/obj/item/device/radio/intercom/department/medbay/west
PRESET_WEST
/obj/item/device/radio/intercom/department/medbay/east
PRESET_EAST
/obj/item/device/radio/intercom/department/medbay/Initialize()
. = ..()
set_frequency(MED_I_FREQ)
@@ -104,6 +255,18 @@
/obj/item/device/radio/intercom/department/security
name = "intercom (security)"
/obj/item/device/radio/intercom/department/security/north
PRESET_NORTH
/obj/item/device/radio/intercom/department/security/south
PRESET_SOUTH
/obj/item/device/radio/intercom/department/security/west
PRESET_WEST
/obj/item/device/radio/intercom/department/security/east
PRESET_EAST
/obj/item/device/radio/intercom/department/security/Initialize()
. = ..()
set_frequency(SEC_I_FREQ)
@@ -116,6 +279,18 @@
name = "intercom (entertainment)"
canhear_range = 4
/obj/item/device/radio/intercom/entertainment/north
PRESET_NORTH
/obj/item/device/radio/intercom/entertainment/south
PRESET_SOUTH
/obj/item/device/radio/intercom/entertainment/west
PRESET_WEST
/obj/item/device/radio/intercom/entertainment/east
PRESET_EAST
/obj/item/device/radio/intercom/entertainment/Initialize()
. = ..()
set_frequency(ENT_FREQ)
@@ -145,6 +320,18 @@
subspace_transmission = TRUE
syndie = TRUE
/obj/item/device/radio/intercom/syndicate/north
PRESET_NORTH
/obj/item/device/radio/intercom/syndicate/south
PRESET_SOUTH
/obj/item/device/radio/intercom/syndicate/west
PRESET_WEST
/obj/item/device/radio/intercom/syndicate/east
PRESET_EAST
/obj/item/device/radio/intercom/syndicate/Initialize()
. = ..()
set_frequency(SYND_FREQ)
@@ -156,6 +343,18 @@
subspace_transmission = TRUE
syndie = TRUE
/obj/item/device/radio/intercom/raider/north
PRESET_NORTH
/obj/item/device/radio/intercom/raider/south
PRESET_SOUTH
/obj/item/device/radio/intercom/raider/west
PRESET_WEST
/obj/item/device/radio/intercom/raider/east
PRESET_EAST
/obj/item/device/radio/intercom/syndicate/Initialize()
. = ..()
set_frequency(RAID_FREQ)
@@ -221,6 +420,18 @@
/obj/item/device/radio/intercom/locked
var/locked_frequency
/obj/item/device/radio/intercom/locked/north
PRESET_NORTH
/obj/item/device/radio/intercom/locked/south
PRESET_SOUTH
/obj/item/device/radio/intercom/locked/west
PRESET_WEST
/obj/item/device/radio/intercom/locked/east
PRESET_EAST
/obj/item/device/radio/intercom/locked/set_frequency(var/frequency)
if(frequency == locked_frequency)
..(locked_frequency)
@@ -243,3 +454,8 @@
/obj/item/device/radio/intercom/locked/confessional/Initialize()
. = ..()
set_frequency(1480)
#undef PRESET_NORTH
#undef PRESET_SOUTH
#undef PRESET_WEST
#undef PRESET_EAST
@@ -11,7 +11,7 @@
/obj/item/stack/tile
name = "tile"
singular_name = "tile"
desc = "A non-descript floor tile"
desc = "A non-descript floor tile."
w_class = ITEMSIZE_NORMAL
max_amount = 60
recyclable = TRUE
@@ -45,20 +45,6 @@
drop_sound = 'sound/items/drop/herb.ogg'
pickup_sound = 'sound/items/pickup/herb.ogg'
/obj/item/stack/tile/grass_alt
name = "grass tile"
singular_name = "grass floor tile"
desc = "A soft patch of grass."
icon_state = "tile_grass_alt"
force = 1.0
throwforce = 1.0
throw_speed = 5
throw_range = 20
flags = 0
origin_tech = list(TECH_BIO = 1)
drop_sound = 'sound/items/drop/herb.ogg'
pickup_sound = 'sound/items/pickup/herb.ogg'
/*
* Wood
*/
@@ -75,43 +61,40 @@
drop_sound = 'sound/items/drop/wooden.ogg'
pickup_sound = 'sound/items/pickup/wooden.ogg'
/obj/item/stack/tile/wood/coloured
icon_state = "tile_woodcoloured"
/obj/item/stack/tile/wood/coloured/birch
/obj/item/stack/tile/wood/birch
name = "birch wood floor tile"
color = WOOD_COLOR_BIRCH
build_type = /obj/item/stack/tile/wood/coloured/birch
build_type = /obj/item/stack/tile/wood/birch
/obj/item/stack/tile/wood/coloured/mahogany
/obj/item/stack/tile/wood/mahogany
name = "mahogany wood floor tile"
color = WOOD_COLOR_RICH
build_type = /obj/item/stack/tile/wood/coloured/mahogany
build_type = /obj/item/stack/tile/wood/mahogany
/obj/item/stack/tile/wood/coloured/maple
/obj/item/stack/tile/wood/maple
name = "maple wood floor tile"
color = WOOD_COLOR_PALE
build_type = /obj/item/stack/tile/wood/coloured/maple
build_type = /obj/item/stack/tile/wood/maple
/obj/item/stack/tile/wood/coloured/bamboo
/obj/item/stack/tile/wood/bamboo
name = "bamboo wood floor tile"
color = WOOD_COLOR_PALE2
build_type = /obj/item/stack/tile/wood/coloured/bamboo
build_type = /obj/item/stack/tile/wood/bamboo
/obj/item/stack/tile/wood/coloured/ebony
/obj/item/stack/tile/wood/ebony
name = "ebony wood floor tile"
color = WOOD_COLOR_BLACK
build_type = /obj/item/stack/tile/wood/coloured/ebony
build_type = /obj/item/stack/tile/wood/ebony
/obj/item/stack/tile/wood/coloured/walnut
/obj/item/stack/tile/wood/walnut
name = "walnut wood floor tile"
color = WOOD_COLOR_CHOCOLATE
build_type = /obj/item/stack/tile/wood/coloured/walnut
build_type = /obj/item/stack/tile/wood/walnut
/obj/item/stack/tile/wood/coloured/yew
/obj/item/stack/tile/wood/yew
name = "yew wood floor tile"
color = WOOD_COLOR_YELLOW
build_type = /obj/item/stack/tile/wood/coloured/yew
build_type = /obj/item/stack/tile/wood/yew
/*
* Carpets
@@ -205,7 +188,7 @@
icon_state = "tile_carpetmagenta"
/obj/item/stack/tile/lino
name = "old linoleum"
name = "linoleum"
singular_name = "linoleum"
desc = "A piece of linoleum. It is the same size as a normal floor tile!"
icon_state = "tile_linoleum"
@@ -218,19 +201,9 @@
pickup_sound = 'sound/items/pickup/cloth.ogg'
matter = list(MATERIAL_PLASTIC = TILE_MATERIAL_AMOUNT)
/obj/item/stack/tile/lino_grey
name = "linoleum"
singular_name = "linoleum"
desc = "A piece of linoleum. It is the same size as a normal floor tile!"
icon_state = "tile_linoleum_grey"
force = 1.0
throwforce = 1.0
throw_speed = 5
throw_range = 20
flags = 0
drop_sound = 'sound/items/drop/cloth.ogg'
pickup_sound = 'sound/items/pickup/cloth.ogg'
matter = list(MATERIAL_PLASTIC = TILE_MATERIAL_AMOUNT)
/obj/item/stack/tile/lino/diamond
name = "diamond linoleum"
icon_state = "tile_linoleum_diamond"
/*
* Circuits
@@ -281,7 +254,7 @@
amount = max_amount
update_icon()
/obj/item/stack/tile/floor/full
/obj/item/stack/tile/mono
name = "full steel tiles"
desc = "A set of full steel floor tiles."
singular_name = "full steel tile"
@@ -293,11 +266,9 @@
color = COLOR_RED_GRAY
icon_state = "tile_white"
/obj/item/stack/tile/floor_steel
name = "steel floor tile"
singular_name = "steel floor tile"
icon_state = "tile_steel"
matter = list(MATERIAL_PLASTEEL = TILE_MATERIAL_AMOUNT)
/obj/item/stack/tile/floor/rust
name = "rusted steel floor tile"
desc = "A set of steel floor tiles. Seems to be only good for recycling."
/obj/item/stack/tile/floor_white
name = "white floor tile"
@@ -362,16 +333,11 @@
matter = list(MATERIAL_DIAMOND = TILE_MATERIAL_AMOUNT)
/obj/item/stack/tile/marble
name = "light marble floor tile"
singular_name = "light marble floor tile"
name = "marble floor tile"
singular_name = "marble floor tile"
icon_state = "tile_lightmarble"
matter = list(MATERIAL_MARBLE = TILE_MATERIAL_AMOUNT)
/obj/item/stack/tile/marble/dark
name = "dark marble floor tile"
singular_name = "dark marble floor tile"
icon_state = "tile_darkmarble"
/*
* Cyborg modules
*/
+3
View File
@@ -256,3 +256,6 @@
. |= DAMAGE_FLAG_SHARP
if(damtype == DAMAGE_BURN)
. |= DAMAGE_FLAG_LASER
/obj/proc/set_pixel_offsets()
return
+1 -1
View File
@@ -62,7 +62,7 @@
/obj/item/device/flashlight/heavy = 0.5,
/obj/item/device/flashlight/lantern = 0.4,
/obj/item/device/flashlight/maglight = 0.4,
/obj/item/device/floor_painter = 0.6,
/obj/item/device/paint_sprayer = 0.6,
/obj/item/device/gps/engineering = 0.6,
/obj/item/device/kinetic_analyzer = 0.1,
/obj/item/device/laser_pointer/purple = 0.1,
+7 -6
View File
@@ -3,6 +3,7 @@
w_class = ITEMSIZE_IMMENSE
layer = OBJ_LAYER - 0.01
var/material_alteration = MATERIAL_ALTERATION_ALL // Overrides for material shit. Set them manually if you don't want colors etc. See wood chairs/office chairs.
var/climbable
var/breakable
var/parts
@@ -102,17 +103,17 @@
/obj/structure/proc/can_climb(var/mob/living/user, post_climb_check=0)
if (!climbable || !can_touch(user) || (!post_climb_check && (user in climbers)))
return 0
return FALSE
if (!user.Adjacent(src))
to_chat(user, "<span class='danger'>You can't climb there, the way is blocked.</span>")
return 0
to_chat(user, SPAN_WARNING("You must be next to \the [src] to climb it."))
return FALSE
var/obj/occupied = turf_is_crowded()
if(occupied)
to_chat(user, "<span class='danger'>There's \a [occupied] in the way.</span>")
return 0
return 1
to_chat(user, SPAN_WARNING("There's \a [occupied] in the way."))
return FALSE
return TRUE
/obj/structure/proc/turf_is_crowded(var/exclude_self = FALSE)
var/turf/T = get_turf(src)
@@ -78,7 +78,7 @@
new /obj/item/grenade/chem_grenade/antifuel(src)
// Painters
new /obj/item/device/floor_painter(src)
new /obj/item/device/paint_sprayer(src)
new /obj/item/device/pipe_painter(src)
// Atmospherics Technician
@@ -111,7 +111,7 @@
new /obj/item/grenade/chem_grenade/antifuel(src)
// Painters
new /obj/item/device/floor_painter(src)
new /obj/item/device/paint_sprayer(src)
new /obj/item/device/pipe_painter(src)
// Electrical Supplies
+62 -176
View File
@@ -4,159 +4,73 @@
/obj/structure/door_assembly
name = "airlock assembly"
icon = 'icons/obj/doors/door_assembly.dmi'
icon_state = "door_as_0"
anchored = 0
density = 1
desc = "An airlock assembly."
desc_info = "To create a glass airlock, add two reinforced glass sheets."
icon = 'icons/obj/doors/basic/single/generic/door.dmi'
icon_state = "construction"
anchored = FALSE
density = TRUE
w_class = ITEMSIZE_HUGE
build_amt = 4
obj_flags = OBJ_FLAG_ROTATABLE|OBJ_FLAG_MOVES_UNSUPPORTED
pixel_x = -16
pixel_y = -16
var/state = STATE_UNWIRED
var/base_icon_state = ""
var/base_name = "Airlock"
var/obj/item/airlock_electronics/electronics = null
var/airlock_type = "" //the type path of the airlock once completed
var/glass_type = "/glass"
var/glass = FALSE // 0 = glass can be installed. -1 = glass can't be installed. 1 = glass is already installed. Text = mineral plating is installed instead.
var/created_name = null
var/base_name = "airlock"
var/obj/item/airlock_electronics/electronics
/// The type path of the airlock once completed.
var/airlock_type
/// Glass version of this airlock.
var/glass_type
/// If glass is installed.
var/glass = FALSE
var/created_name
var/width = 1
/obj/structure/door_assembly/Initialize(mapload)
. = ..()
update_state()
/obj/structure/door_assembly/door_assembly_ser
base_icon_state = "ser"
base_name = "Service Airlock"
glass_type = "/glass_service"
airlock_type = "/service"
/obj/structure/door_assembly/examine(mob/user)
. = ..()
to_chat(user, "It is currently facing [dir2text(dir)].")
/obj/structure/door_assembly/door_assembly_com
base_icon_state = "com"
base_name = "Command Airlock"
glass_type = "/glass_command"
airlock_type = "/command"
/obj/structure/door_assembly/door_assembly_sec
base_icon_state = "sec"
base_name = "Security Airlock"
glass_type = "/glass_security"
airlock_type = "/security"
/obj/structure/door_assembly/door_assembly_eng
base_icon_state = "eng"
base_name = "Engineering Airlock"
glass_type = "/glass_engineering"
airlock_type = "/engineering"
/obj/structure/door_assembly/door_assembly_min
base_icon_state = "min"
base_name = "Mining Airlock"
glass_type = "/glass_mining"
airlock_type = "/mining"
/obj/structure/door_assembly/door_assembly_atmo
base_icon_state = "atmo"
base_name = "Atmospherics Airlock"
glass_type = "/glass_atmos"
airlock_type = "/atmos"
/obj/structure/door_assembly/door_assembly_research
base_icon_state = "res"
base_name = "Research Airlock"
glass_type = "/glass_research"
airlock_type = "/research"
/obj/structure/door_assembly/door_assembly_science
base_icon_state = "sci"
base_name = "Science Airlock"
glass_type = "/glass_science"
airlock_type = "/science"
/obj/structure/door_assembly/door_assembly_med
base_icon_state = "med"
base_name = "Medical Airlock"
glass_type = "/glass_medical"
airlock_type = "/medical"
/obj/structure/door_assembly/door_assembly_generic
base_name = "airlock"
airlock_type = /obj/machinery/door/airlock
glass_type = /obj/machinery/door/airlock/glass
/obj/structure/door_assembly/door_assembly_mai
base_icon_state = "mai"
base_name = "Maintenance Airlock"
airlock_type = "/maintenance"
glass = -1
base_name = "maintenance airlock"
airlock_type = /obj/machinery/door/airlock/maintenance
/obj/structure/door_assembly/door_assembly_ext
base_icon_state = "ext"
base_name = "External Airlock"
airlock_type = "/external"
glass = -1
/obj/structure/door_assembly/door_assembly_fre
base_icon_state = "fre"
base_name = "Freezer Airlock"
airlock_type = "/freezer"
glass = -1
/obj/structure/door_assembly/door_assembly_fma
base_icon_state = "mai"
base_name = "Freezer Maintenance Access"
airlock_type = "/freezer_maint"
glass = -1
base_name = "external airlock"
airlock_type = /obj/machinery/door/airlock/external
/obj/structure/door_assembly/door_assembly_hatch
base_icon_state = "hatch"
base_name = "Airtight Hatch"
airlock_type = "/hatch"
glass = -1
base_name = "airtight hatch"
icon = 'icons/obj/doors/basic/single/external/door.dmi'
airlock_type = /obj/machinery/door/airlock/hatch
/obj/structure/door_assembly/door_assembly_mhatch
base_icon_state = "mhatch"
base_name = "Maintenance Hatch"
airlock_type = "/maintenance_hatch"
glass = -1
base_name = "maintenance hatch"
icon = 'icons/obj/doors/basic/single/external/door.dmi'
airlock_type = /obj/machinery/door/airlock/maintenance_hatch
/obj/structure/door_assembly/door_assembly_highsecurity
base_icon_state = "highsec"
base_name = "High Security Airlock"
airlock_type = "/highsecurity"
glass = -1
/obj/structure/door_assembly/door_assembly_vault
base_icon_state = "vault"
base_name = "Vault"
airlock_type = "/vault"
glass = -1
/obj/structure/door_assembly/door_assembly_lift
base_icon_state = "lift"
base_name = "Elevator Door"
airlock_type = "/lift"
glass = -1
/obj/structure/door_assembly/door_assembly_skrell
base_icon_state = "skrell_purple"
base_name = "Airlock"
airlock_type = "/skrell"
glass = -1
/obj/structure/door_assembly/door_assembly_skrell/grey
base_icon_state = "skrell_grey"
base_name = "Airlock"
airlock_type = "/skrell/grey"
base_name = "high security airlock"
icon = 'icons/obj/doors/basic/single/secure/door.dmi'
airlock_type = /obj/machinery/door/airlock/highsecurity
/obj/structure/door_assembly/multi_tile
icon = 'icons/obj/doors/door_assembly2x1.dmi'
icon_state = null //only have icons for the glass version
icon = 'icons/obj/doors/basic/double/generic/door.dmi'
dir = EAST
pixel_x = -32
pixel_y = -32
width = 2
/*Temporary until we get sprites.
glass_type = "/multi_tile/glass"
airlock_type = "/multi_tile/maint"
glass = 1*/
base_icon_state = "g" //Remember to delete this line when reverting "glass" var to 1.
airlock_type = "/multi_tile/glass"
glass = -1 //To prevent bugs in deconstruction process.
airlock_type = /obj/machinery/door/airlock/multi_tile
glass_type = /obj/machinery/door/airlock/multi_tile/glass
/obj/structure/door_assembly/multi_tile/Initialize()
. = ..()
@@ -181,22 +95,13 @@
created_name = door_name
else if(W.iswelder())
if(!(istext(glass) || glass == TRUE || !anchored))
to_chat(user, SPAN_WARNING("\The [src] isn't ready to be welded yet. It doesn't have any installed material to remove, and it has to be unsecured to deconstruct it."))
if(!glass || anchored)
to_chat(user, SPAN_WARNING("\The [src] isn't ready to be welded yet. It doesn't have any installed glass to remove, and it has to be unsecured to deconstruct it."))
return
var/obj/item/weldingtool/WT = W
if(WT.use(0, user))
playsound(src.loc, 'sound/items/welder_pry.ogg', 50, 1)
if(istext(glass))
user.visible_message("<b>[user]</b> starts welding the [glass] plating off the airlock assembly.", SPAN_NOTICE("You start welding the [glass] plating off the airlock assembly."))
if(W.use_tool(src, user, 40, volume = 50))
if(!src || !WT.isOn())
return
to_chat(user, SPAN_NOTICE("You weld the [glass] plating off."))
var/M = text2path("/obj/item/stack/material/[glass]")
new M(src.loc, 2)
glass = FALSE
else if(glass == TRUE)
if(glass)
user.visible_message("<b>[user]</b> starts welding the glass panel out of the airlock assembly.", SPAN_NOTICE("You start welding the glass panel out of the airlock assembly."))
if(W.use_tool(src, user, 40, volume = 50))
if(!src || !WT.isOn())
@@ -313,32 +218,19 @@
electronics.forceMove(src.loc)
electronics = null
else if(istype(W, /obj/item/stack/material))
else if(istype(W, /obj/item/stack/material) && glass_type)
if(glass)
to_chat(user, SPAN_WARNING("\The [src] already has material plating installed."))
to_chat(user, SPAN_WARNING("\The [src] already has glass installed."))
return
var/obj/item/stack/S = W
var/material_name = S.get_material_name()
if(S)
if(S.get_amount() >= 1)
if(material_name == MATERIAL_GLASS_REINFORCED)
user.visible_message("<b>[user]</b> starts installing \the [S] into the airlock assembly.", "You start installing \the [S] into the airlock assembly.")
if(W.use_tool(src, user, 40, volume = 50) && !glass)
if(S.use(1))
to_chat(user, SPAN_NOTICE("You install reinforced glass windows into the airlock assembly."))
glass = TRUE
else if(material_name)
// Ugly hack, will suffice for now. Need to fix it upstream as well, may rewrite mineral walls. ~Z
if(!(material_name in list("gold", "silver", "diamond", "uranium", "phoron", "sandstone")))
to_chat(user, SPAN_WARNING("You cannot make an airlock out of [S]."))
return
if(S.get_amount() >= 2)
playsound(src.loc, /singleton/sound_category/crowbar_sound, 100, 1)
user.visible_message("<b>[user]</b> starts installing [S] into the airlock assembly.", "You start installing [S] into the airlock assembly.")
if(W.use_tool(src, user, 40, volume = 50) && !glass)
if (S.use(2))
to_chat(user, SPAN_NOTICE("You install [SSmaterials.material_display_name(material_name)] plating into the airlock assembly."))
glass = material_name
if(S.get_amount() >= 2)
if(material_name == MATERIAL_GLASS_REINFORCED)
user.visible_message("<b>[user]</b> starts installing \the [S] into the airlock assembly.", SPAN_WARNING("You start installing \the [S] into the airlock assembly."))
if(W.use_tool(src, user, 40, volume = 50) && !glass)
if(S.use(2))
to_chat(user, SPAN_NOTICE("You install reinforced glass windows into the airlock assembly."))
glass = TRUE
else if(W.isscrewdriver())
if(state != STATE_ELECTRONICS_INSTALLED)
@@ -351,16 +243,11 @@
if(!src)
return
to_chat(user, SPAN_NOTICE("You finish the airlock!"))
var/path
if(istext(glass))
path = text2path("/obj/machinery/door/airlock/[glass]")
else if (glass == TRUE)
path = text2path("/obj/machinery/door/airlock[glass_type]")
else
path = text2path("/obj/machinery/door/airlock[airlock_type]")
SetBounds()
new path(loc, dir, FALSE, src)
if(glass && glass_type)
new glass_type(loc, dir, FALSE, src)
else
new airlock_type(loc, dir, FALSE, src)
qdel(src)
else if(istype(W, /obj/item/material/twohanded/chainsaw))
@@ -397,16 +284,15 @@
return (ChainSawVar.powered)
/obj/structure/door_assembly/proc/update_state()
icon_state = "door_as_[glass == TRUE ? "g" : ""][istext(glass) ? glass : base_icon_state][state]"
name = ""
switch (state)
if(STATE_UNWIRED)
name = anchored ? "Secured " : "Unsecured "
name = anchored ? "secured " : "unsecured "
if(STATE_WIRED)
name = "Wired "
name = "wired "
if(STATE_ELECTRONICS_INSTALLED)
name = "Near-finished "
name += "[glass == TRUE ? "Window " : ""][istext(glass) ? "[glass] Airlock" : base_name] Assembly"
name = "near-finished "
name += "[glass == TRUE ? "window " : ""][glass ? "glass airlock" : base_name] assembly"
if(created_name)
name += " ([created_name])"
+27 -2
View File
@@ -10,11 +10,36 @@
var/obj/item/extinguisher/has_extinguisher
var/opened = 0
/obj/structure/extinguisher_cabinet/Initialize()
/obj/structure/extinguisher_cabinet/north
dir = NORTH
pixel_y = 24
/obj/structure/extinguisher_cabinet/east
dir = EAST
pixel_x = 21
pixel_y = 4
/obj/structure/extinguisher_cabinet/west
dir = WEST
pixel_x = -21
pixel_y = 4
/obj/structure/extinguisher_cabinet/south
dir = SOUTH
pixel_y = -23
/obj/structure/extinguisher_cabinet/Initialize(mapload)
. = ..()
has_extinguisher = new/obj/item/extinguisher(src)
has_extinguisher = new /obj/item/extinguisher(src)
update_icon()
if(!mapload)
set_pixel_offsets()
/obj/structure/extinguisher_cabinet/set_pixel_offsets()
pixel_x = dir & (NORTH|SOUTH) ? 0 : (dir == EAST ? 21 : 4)
pixel_y = dir & (NORTH|SOUTH) ? (dir == NORTH ? 24 : -23) : 4
/obj/structure/extinguisher_cabinet/attackby(obj/item/O, mob/user)
if(isrobot(user))
return
@@ -14,6 +14,22 @@
var/shattered
var/obj/item/material/twohanded/fireaxe/fireaxe
/obj/structure/fireaxecabinet/north
dir = NORTH
pixel_y = 24
/obj/structure/fireaxecabinet/east
dir = EAST
pixel_x = 19
/obj/structure/fireaxecabinet/west
dir = WEST
pixel_x = -19
/obj/structure/fireaxecabinet/south
dir = SOUTH
pixel_y = -20
/obj/structure/fireaxecabinet/attack_generic(var/mob/user, var/damage, var/attack_verb, var/wallbreaker)
user.do_attack_animation(src)
playsound(user, 'sound/effects/glass_hit.ogg', 50, 1)
@@ -50,6 +66,16 @@
fireaxe = new(src)
update_icon()
/obj/structure/fireaxecabinet/Initialize(mapload)
. = ..()
if(!mapload)
set_pixel_offsets()
/obj/structure/fireaxecabinet/set_pixel_offsets()
pixel_x = ((src.dir & (NORTH|SOUTH)) ? 0 : (src.dir == EAST ? 19 : -(19)))
pixel_y = ((src.dir & (NORTH|SOUTH)) ? (src.dir == NORTH ? 24 : -(20)) : 0)
/obj/structure/fireaxecabinet/attack_ai(var/mob/user)
if(!ai_can_interact(user))
return
@@ -141,4 +167,4 @@
unlocked = !unlocked
to_chat(user, SPAN_NOTICE("You [unlocked ? "disable" : "enable"] the maglock."))
update_icon()
update_icon()
@@ -1,24 +1,33 @@
/obj/structure/window_frame
name = "steel window frame"
desc = "A steel window frame."
icon = 'icons/obj/smooth/full_window_frame.dmi'
icon = 'icons/obj/smooth/window/full_window_frame_color.dmi'
icon_state = "window_frame"
color = COLOR_GRAY20
build_amt = 4
layer = LAYER_ABOVE_TABLE
anchored = TRUE
density = TRUE
climbable = TRUE
smooth = SMOOTH_TRUE
smooth = SMOOTH_MORE
breakable = TRUE
can_be_unanchored = TRUE
canSmoothWith = list(
/turf/simulated/wall,
/turf/simulated/wall/r_wall,
/turf/simulated/wall/shuttle/scc_space_ship,
/turf/unsimulated/wall/steel, // Centcomm wall.
/turf/unsimulated/wall/darkshuttlewall, // Centcomm wall.
/turf/unsimulated/wall/riveted, // Centcomm wall.
/obj/structure/window_frame,
/obj/structure/window_frame/unanchored,
/obj/structure/window_frame/empty
/obj/structure/window_frame/empty,
/obj/machinery/door
)
blend_overlay = "wall"
can_blend_with = list(
/turf/simulated/wall,
/obj/machinery/door
)
obj_flags = OBJ_FLAG_MOVES_UNSUPPORTED
var/should_check_mapload = TRUE
@@ -26,47 +35,9 @@
var/glass_needed = 4
/obj/structure/window_frame/cardinal_smooth(adjacencies, var/list/dir_mods)
LAZYINITLIST(dir_mods)
var/north_wall = FALSE
var/east_wall = FALSE
var/south_wall = FALSE
var/west_wall = FALSE
if(adjacencies & N_NORTH)
var/turf/T = get_step(src, NORTH)
if(iswall(T))
dir_mods["[N_NORTH]"] = "-wall"
north_wall = TRUE
if(adjacencies & N_EAST)
var/turf/T = get_step(src, EAST)
if(iswall(T))
dir_mods["[N_EAST]"] = "-wall"
east_wall = TRUE
if(adjacencies & N_SOUTH)
var/turf/T = get_step(src, SOUTH)
if(iswall(T))
dir_mods["[N_SOUTH]"] = "-wall"
south_wall = TRUE
if(adjacencies & N_WEST)
var/turf/T = get_step(src, WEST)
if(iswall(T))
dir_mods["[N_WEST]"] = "-wall"
west_wall = TRUE
if(((adjacencies & N_NORTH) && (adjacencies & N_WEST)) && (north_wall || west_wall))
dir_mods["[N_NORTH][N_WEST]"] = "-n[north_wall ? "wall" : "win"]-w[west_wall ? "wall" : "win"]"
if(((adjacencies & N_NORTH) && (adjacencies & N_EAST)) && (north_wall || east_wall))
dir_mods["[N_NORTH][N_EAST]"] = "-n[north_wall ? "wall" : "win"]-e[east_wall ? "wall" : "win"]"
if(((adjacencies & N_SOUTH) && (adjacencies & N_WEST)) && (south_wall || west_wall))
dir_mods["[N_SOUTH][N_WEST]"] = "-s[south_wall ? "wall" : "win"]-w[west_wall ? "wall" : "win"]"
if((adjacencies & N_SOUTH) && (adjacencies & N_EAST) && (south_wall || east_wall))
dir_mods["[N_SOUTH][N_EAST]"] = "-s[south_wall ? "wall" : "win"]-e[east_wall ? "wall" : "win"]"
dir_mods = handle_blending(adjacencies, dir_mods)
return ..(adjacencies, dir_mods)
/obj/structure/window_frame/proc/update_nearby_icons()
queue_smooth_neighbors(src)
/obj/structure/window_frame/update_icon()
queue_smooth(src)
/obj/structure/window_frame/Initialize(mapload) // If the window frame is mapped in, it should be considered to have glass spawned in it by a window spawner.
. = ..()
if(mapload && should_check_mapload)
@@ -175,3 +146,37 @@
/obj/structure/window_frame/empty
should_check_mapload = FALSE // No glass.
/obj/structure/window_frame/shuttle
icon = 'icons/obj/smooth/window/full_window_frame_color.dmi'
color = null
smooth = SMOOTH_MORE
canSmoothWith = list(
/turf/simulated/wall/shuttle,
/turf/simulated/wall/shuttle/cardinal,
/turf/simulated/wall/shuttle/dark,
/turf/simulated/wall/shuttle/dark/cardinal,
/obj/structure/window_frame/shuttle,
/obj/machinery/door
)
can_blend_with = list(
/turf/simulated/wall/shuttle,
/turf/simulated/wall/shuttle/cardinal,
/obj/machinery/door
)
/obj/structure/window_frame/shuttle/merc
color = "#8b7d86"
/obj/structure/window_frame/shuttle/khaki
color = "#ac8b78"
/obj/structure/window_frame/shuttle/purple
color = "#7846b1"
/obj/structure/window_frame/shuttle/red
color = "#c24f4f"
/obj/structure/window_frame/shuttle/blue
color = "#6176a1"
+43
View File
@@ -15,6 +15,49 @@
var/health = 10
var/destroyed = 0
/obj/structure/grille/over
name = "over-frame grille"
icon = 'icons/obj/smooth/window/grille_over.dmi'
layer = BELOW_OBJ_LAYER
smooth = SMOOTH_MORE
canSmoothWith = list(
/turf/simulated/wall,
/turf/simulated/wall/r_wall,
/turf/unsimulated/wall/steel,
/turf/unsimulated/wall/darkshuttlewall,
/turf/unsimulated/wall/riveted,
/obj/structure/window_frame,
/obj/structure/window_frame/unanchored,
/obj/structure/window_frame/empty,
/obj/structure/window/full/reinforced,
/obj/structure/window/full/reinforced/indestructible,
/obj/structure/window/full/reinforced/polarized,
/obj/structure/window/full/reinforced/polarized/indestructible,
/obj/structure/window/full/phoron/reinforced,
/obj/structure/window/shuttle/scc_space_ship,
/turf/simulated/wall/shuttle/scc_space_ship,
/obj/machinery/door
)
blend_overlay = "wall"
attach_overlay = "attach"
can_blend_with = list(
/turf/simulated/wall,
/obj/structure/window_frame
)
/obj/structure/grille/over/cardinal_smooth(adjacencies, var/list/dir_mods)
dir_mods = handle_blending(adjacencies, dir_mods)
return ..(adjacencies, dir_mods)
/obj/structure/grille/over/large //for external windows
name = "large over-frame grille"
icon = 'icons/obj/smooth/window/grille_over_large.dmi'
can_blend_with = list(
/turf/simulated/wall,
/obj/structure/window_frame,
/turf/simulated/wall/shuttle/scc_space_ship
)
/obj/structure/grille/ex_act(severity)
qdel(src)
+42 -37
View File
@@ -10,7 +10,6 @@
w_class = ITEMSIZE_NORMAL
layer = UNDER_PIPE_LAYER //under pipes
obj_flags = OBJ_FLAG_MOVES_UNSUPPORTED
var/restrict_placement = TRUE
smooth = SMOOTH_MORE
canSmoothWith = list(
/obj/structure/lattice,
@@ -26,10 +25,6 @@
/obj/structure/lattice/Initialize()
. = ..()
// TG does not have this, and it seems to trigger on the horizon, I do not know what this is supposed to do, perhaps we could get rid of it?
if (restrict_placement)
if(!(istype(loc, /turf/space) || isopenturf(loc) || istype(loc, /turf/unsimulated/floor/asteroid)))
return INITIALIZE_HINT_QDEL
for(var/obj/structure/lattice/LAT in loc)
if(LAT == src)
continue
@@ -89,7 +84,6 @@
// Special catwalk that can be placed on regular flooring.
/obj/structure/lattice/catwalk/indoor
desc = "A floor-mounted catwalk designed to protect pipes & station wiring from passing feet."
restrict_placement = FALSE
can_be_unanchored = TRUE
layer = 2.7 // Above wires.
@@ -126,45 +120,23 @@
name = "grate"
desc = "A metal grate."
icon = 'icons/obj/grate.dmi'
icon_state = "grate_dark"
icon_state = "grate"
return_amount = 1
smooth = null
var/base_icon_state = "grate_dark"
color = COLOR_TILED
var/base_icon_state = "grate"
var/damaged = FALSE
/obj/structure/lattice/catwalk/indoor/grate/old
icon_state = "grate_dark_old"
/obj/structure/lattice/catwalk/indoor/grate/damaged
icon_state = "grate_dark_dam0"
damaged = TRUE
/obj/structure/lattice/catwalk/indoor/grate/damaged/Initialize()
. = ..()
icon_state = "[base_icon_state]_dam[rand(0,3)]"
/obj/structure/lattice/catwalk/indoor/grate/light
icon_state = "grate_light"
base_icon_state = "grate_light"
return_amount = 1
/obj/structure/lattice/catwalk/indoor/grate/light/old
icon_state = "grate_light_old"
/obj/structure/lattice/catwalk/indoor/grate/light/damaged
icon_state = "grate_light_dam0"
damaged = TRUE
/obj/structure/lattice/catwalk/indoor/grate/light/damaged/Initialize()
. = ..()
icon_state = "[base_icon_state]_dam[rand(0,3)]"
/obj/structure/lattice/catwalk/indoor/grate/attackby(obj/item/C, mob/user)
if(C.iswelder() && damaged)
var/obj/item/weldingtool/WT = C
if(C.use_tool(src, user, 5, volume = 50) && WT.use(1, user))
to_chat(user, SPAN_NOTICE("You slice apart the [src] leaving nothing useful behind."))
playsound(src, 'sound/items/Welder.ogg', 50, 1)
user.visible_message(
SPAN_NOTICE("\The [user] slices apart \the [src], leaving nothing useful behind."),
SPAN_NOTICE("You slice apart \the [src], leaving nothing useful behind."),
SPAN_NOTICE("You hear the sound of a welder, slicing apart metal.")
)
playsound(src, 'sound/items/welder.ogg', 50, 1)
qdel(src)
else
..()
@@ -180,3 +152,36 @@
else
qdel(src)
return
/obj/structure/lattice/catwalk/indoor/grate/old/Initialize()
. = ..()
add_overlay("rust")
/obj/structure/lattice/catwalk/indoor/grate/damaged
icon_state = "grate_dark_dam0"
damaged = TRUE
/obj/structure/lattice/catwalk/indoor/grate/damaged/Initialize()
. = ..()
icon_state = "[base_icon_state]_dam[rand(0,3)]"
/obj/structure/lattice/catwalk/indoor/grate/light
icon_state = "grate_light"
base_icon_state = "grate_light"
return_amount = 1
color = COLOR_GUNMETAL
/obj/structure/lattice/catwalk/indoor/grate/light/old/Initialize()
. = ..()
add_overlay("rust")
/obj/structure/lattice/catwalk/indoor/grate/light/damaged
icon_state = "grate_light_dam0"
damaged = TRUE
/obj/structure/lattice/catwalk/indoor/grate/light/damaged/Initialize()
. = ..()
icon_state = "[base_icon_state]_dam[rand(0,3)]"
/obj/structure/lattice/catwalk/indoor/grate/dark
color = COLOR_DARK_GUNMETAL
+14 -4
View File
@@ -1,14 +1,14 @@
/obj/structure/plasticflaps //HOW DO YOU CALL THOSE THINGS ANYWAY
name = "\improper plastic flaps"
desc = "Completely impassable - or are they?"
icon = 'icons/obj/stationobjs.dmi' //Change this.
icon_state = "plasticflaps"
icon = 'icons/obj/structure/plasticflaps.dmi'
icon_state = "plasticflaps_preview"
density = 0
anchored = 1
layer = 4
explosion_resistance = 5
build_amt = 4
color = COLOR_GRAY20 // ideally this would get_step() the material color from nearby walls but this works for now.
atmos_canpass = CANPASS_PROC
var/manipulating = FALSE //Prevents queueing up a ton of deconstructs
@@ -23,8 +23,18 @@
/obj/structure/plasticflaps/Initialize()
. = ..()
material = SSmaterials.get_material_by_name(MATERIAL_PLASTIC)
update_icon()
/obj/structure/plasticflaps/update_icon()
. = ..()
icon_state = "plasticflaps"
var/image/plasticflaps_overlay = overlay_image(icon, "plasticflaps_overlay", null, RESET_COLOR)
if(dir == WEST || dir == EAST)
plasticflaps_overlay.pixel_y = -13
add_overlay(plasticflaps_overlay)
/obj/structure/plasticflaps/Destroy()
cut_overlays()
if(airtight)
clear_airtight()
. = ..()
@@ -112,4 +122,4 @@
update_nearby_tiles()
/obj/structure/plasticflaps/airtight/CanPass(atom/A, turf/T)
return 1//Blocks nothing except air
return 1//Blocks nothing except air
+6 -2
View File
@@ -1,7 +1,7 @@
/obj/structure/railing
name = "railing"
desc = "A simple bar railing designed to protect against careless trespass."
icon = 'icons/obj/railing.dmi'
icon = 'icons/obj/structure/blocker/railing_basic.dmi'
icon_state = "railing0-1"
density = TRUE
throwpass = TRUE
@@ -144,6 +144,10 @@
/obj/structure/railing/update_icon(var/update_neighbors = TRUE)
NeighborsCheck(update_neighbors)
overlays.Cut()
if(dir == SOUTH)
layer = ABOVE_MOB_LAYER
else
layer = initial(layer)
if(!neighbor_status || !anchored)
icon_state = "railing0-[density]"
else
@@ -343,4 +347,4 @@
/obj/structure/railing/fence/New(var/newloc, var/material_key = MATERIAL_WOOD)
material = material_key
..(newloc)
..(newloc)
@@ -21,17 +21,15 @@
desc_info = "Click and drag yourself (or anyone) to this to buckle in. Click on this with an empty hand to undo the buckles.<br>\
Anyone with restraints, such as handcuffs, will not be able to unbuckle themselves. They must use the Resist button, or verb, to break free of \
the buckles, instead. \ To unbuckle people as a stationbound, click the bed with an empty gripper."
icon = 'icons/obj/furniture.dmi'
icon = 'icons/obj/structure/beds.dmi'
icon_state = "bed"
anchored = TRUE
buckle_dir = SOUTH
buckle_lying = 1
build_amt = 2
var/material/padding_material
var/override_material_color = FALSE //If set, material colour won't override the colour.
var/base_icon = "bed"
var/material_alteration = MATERIAL_ALTERATION_ALL
var/buckling_sound = 'sound/effects/buckle.ogg'
var/painted_colour // Used for paint gun and preset colours. I know this name sucks.
@@ -96,7 +94,7 @@
cache_key += "-[cache_type]"
if(painted_colour && apply_painted_colour)
cache_key += "-[painted_colour]"
else if(overlay_material.icon_colour && !override_material_color)
else if(overlay_material.icon_colour)
cache_key += "-[overlay_material.icon_colour]"
if(!furniture_cache[cache_key]) // Check for cache key. Generate if image does not exist yet.
var/cache_icon_state = cache_type ? "[base_icon]_[cache_type]" : "[base_icon]" // Modularized. Just change cache_type when calling the proc if you ever wanted to add a different overlay. Not like you'd need to.
@@ -104,7 +102,7 @@
if(material_alteration & MATERIAL_ALTERATION_COLOR)
if(painted_colour && apply_painted_colour) // apply_painted_color, when you only want the padding to be painted, NOT the chair itself.
I.color = painted_colour
else if(overlay_material.icon_colour && !override_material_color) // Either that, or just fall back on the regular material color.
else if(overlay_material.icon_colour) // Either that, or just fall back on the regular material color.
I.color = overlay_material.icon_colour
furniture_cache[cache_key] = I
add_overlay(furniture_cache[cache_key]) // Use image from cache key!
@@ -225,7 +223,7 @@
W.pixel_x = 10 //make sure they reach the pillow
W.pixel_y = -6
else if(istype(W, /obj/item/device/floor_painter))
else if(istype(W, /obj/item/device/paint_sprayer))
return
else if(!istype(W, /obj/item/bedsheet))
@@ -251,7 +249,7 @@
/obj/structure/bed/Move()
. = ..()
if(makes_rolling_sound)
if(makes_rolling_sound && has_gravity())
playsound(src, 'sound/effects/roll.ogg', 50, 1)
if(buckled && !istype(src, /obj/structure/bed/roller))
var/mob/living/occupant = buckled
@@ -8,7 +8,7 @@
buckle_dir = 0
buckle_lying = 0 //force people to sit up in chairs when buckled_to
obj_flags = OBJ_FLAG_ROTATABLE_ANCHORED
held_item = /obj/item/material/stool/chair/
held_item = /obj/item/material/stool/chair
/obj/structure/bed/stool/chair/Initialize()
. = ..()
@@ -55,6 +55,16 @@
return FALSE
return ..()
/obj/structure/bed/stool/chair/fancy
name = "fancy chair"
desc = "The armrests give you a signature feeling of superiority."
icon_state = "chair_fancy"
held_item = /obj/item/material/stool/chair/fancy
/obj/structure/bed/stool/chair/padded
name = "comfy chair"
desc = "It looks comfy, and the cushions sound just like old man pants!"
/obj/structure/bed/stool/chair/padded/brown/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_LEATHER)
@@ -91,172 +101,10 @@
/obj/structure/bed/stool/chair/padded/violet/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_VIOLET)
/obj/structure/bed/stool/chair/sofa
name = "sofa"
desc = "A sofa, how nice!"
icon_state = "sofamiddle_preview"
base_icon = "sofamiddle"
/obj/structure/bed/stool/chair/sofa/brown/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_LEATHER)
/obj/structure/bed/stool/chair/sofa/black/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_DARK_GRAY)
/obj/structure/bed/stool/chair/sofa/beige/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_BEIGE)
/obj/structure/bed/stool/chair/sofa/red/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CARPET)
/obj/structure/bed/stool/chair/sofa/orange/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_ORANGE)
/obj/structure/bed/stool/chair/sofa/yellow/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_YELLOW)
/obj/structure/bed/stool/chair/sofa/green/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_GREEN)
/obj/structure/bed/stool/chair/sofa/lime/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_LIME)
/obj/structure/bed/stool/chair/sofa/blue/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_BLUE)
/obj/structure/bed/stool/chair/sofa/teal/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_TEAL)
/obj/structure/bed/stool/chair/sofa/purple/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_PURPLE)
/obj/structure/bed/stool/chair/sofa/violet/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_VIOLET)
/obj/structure/bed/stool/chair/sofa/left
icon_state = "sofaend_left_preview"
base_icon = "sofaend_left"
/obj/structure/bed/stool/chair/sofa/left/brown/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_LEATHER)
/obj/structure/bed/stool/chair/sofa/left/black/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_DARK_GRAY)
/obj/structure/bed/stool/chair/sofa/left/beige/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_BEIGE)
/obj/structure/bed/stool/chair/sofa/left/red/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CARPET)
/obj/structure/bed/stool/chair/sofa/left/orange/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_ORANGE)
/obj/structure/bed/stool/chair/sofa/left/yellow/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_YELLOW)
/obj/structure/bed/stool/chair/sofa/left/green/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_GREEN)
/obj/structure/bed/stool/chair/sofa/left/lime/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_LIME)
/obj/structure/bed/stool/chair/sofa/left/blue/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_BLUE)
/obj/structure/bed/stool/chair/sofa/left/teal/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_TEAL)
/obj/structure/bed/stool/chair/sofa/left/purple/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_PURPLE)
/obj/structure/bed/stool/chair/sofa/left/violet/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_VIOLET)
/obj/structure/bed/stool/chair/sofa/right
icon_state = "sofaend_right_preview"
base_icon = "sofaend_right"
/obj/structure/bed/stool/chair/sofa/right/brown/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_LEATHER)
/obj/structure/bed/stool/chair/sofa/right/black/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_DARK_GRAY)
/obj/structure/bed/stool/chair/sofa/right/beige/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_BEIGE)
/obj/structure/bed/stool/chair/sofa/right/red/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CARPET)
/obj/structure/bed/stool/chair/sofa/right/orange/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_ORANGE)
/obj/structure/bed/stool/chair/sofa/right/yellow/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_YELLOW)
/obj/structure/bed/stool/chair/sofa/right/green/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_GREEN)
/obj/structure/bed/stool/chair/sofa/right/lime/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_LIME)
/obj/structure/bed/stool/chair/sofa/right/blue/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_BLUE)
/obj/structure/bed/stool/chair/sofa/right/teal/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_TEAL)
/obj/structure/bed/stool/chair/sofa/right/purple/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_PURPLE)
/obj/structure/bed/stool/chair/sofa/right/violet/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_VIOLET)
/obj/structure/bed/stool/chair/sofa/corner
icon_state = "sofacorner_preview"
base_icon = "sofacorner"
/obj/structure/bed/stool/chair/sofa/corner/brown/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_LEATHER)
/obj/structure/bed/stool/chair/sofa/corner/black/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_DARK_GRAY)
/obj/structure/bed/stool/chair/sofa/corner/beige/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_BEIGE)
/obj/structure/bed/stool/chair/sofa/corner/red/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CARPET)
/obj/structure/bed/stool/chair/sofa/corner/orange/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_ORANGE)
/obj/structure/bed/stool/chair/sofa/corner/yellow/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_YELLOW)
/obj/structure/bed/stool/chair/sofa/corner/green/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_GREEN)
/obj/structure/bed/stool/chair/sofa/corner/lime/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_LIME)
/obj/structure/bed/stool/chair/sofa/corner/blue/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_BLUE)
/obj/structure/bed/stool/chair/sofa/corner/teal/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_TEAL)
/obj/structure/bed/stool/chair/sofa/corner/purple/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_PURPLE)
/obj/structure/bed/stool/chair/sofa/corner/violet/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_VIOLET)
/obj/structure/bed/stool/chair/office // For the love of god, don't use this.
name = "office chair"
desc = "The propulsion of any lazy office worker, it has wheels."
icon_state = null
material_alteration = MATERIAL_ALTERATION_DESC
makes_rolling_sound = TRUE
anchored = FALSE
@@ -267,40 +115,40 @@
can_pad = FALSE
/obj/structure/bed/stool/chair/office/light
icon_state = "officechair_white_preview"
icon_state = "officechair_white"
base_icon = "officechair_white"
/obj/structure/bed/stool/chair/office/dark
icon_state = "officechair_dark_preview"
icon_state = "officechair_dark"
base_icon = "officechair_dark"
/obj/structure/bed/stool/chair/office/bridge
name = "command chair"
desc = "It exudes authority... and looks about as comfortable as a brick."
icon_state = "bridge_preview"
icon_state = "bridge"
base_icon = "bridge"
anchored = TRUE
/obj/structure/bed/stool/chair/office/bridge/legion
name = "legion pilot seat"
desc = "A comfortable seat for a pilot."
icon_state = "bridge_legion_preview"
icon_state = "bridge_legion"
base_icon = "bridge_legion"
/obj/structure/bed/stool/chair/office/bridge/generic
icon_state = "bridge_generic_preview"
icon_state = "bridge_generic"
base_icon = "bridge_generic"
/obj/structure/bed/stool/chair/office/bridge/pilot
name = "pilot seat"
desc = "A comfortable seat for a pilot."
icon_state = "pilot_preview"
icon_state = "pilot"
base_icon = "pilot"
/obj/structure/bed/stool/chair/office/hover
name = "hoverchair"
desc = "Adjusts itself to the sitter's weight resulting in a most comfortable sitting experience. Like floating on a cloud."
icon_state = "hover_chair_preview"
icon_state = "hover_chair"
base_icon = "hover_chair"
makes_rolling_sound = FALSE
can_dismantle = FALSE
@@ -312,21 +160,34 @@
set_light(1,1,LIGHT_COLOR_CYAN)
/obj/structure/bed/stool/chair/office/hover/command
icon_state = "hover_command_preview"
icon_state = "hover_command"
base_icon = "hover_command"
// Chair types
/obj/structure/bed/stool/chair/plastic
name = "chair"
desc = "The monobloc chair. You'll have to take it, whether you like it or not."
icon_state = "plastic_chair"
base_icon = "plastic_chair"
material_alteration = MATERIAL_ALTERATION_NAME || MATERIAL_ALTERATION_DESC
held_item = /obj/item/material/stool/chair/plastic
can_pad = FALSE
anchored = FALSE
/obj/structure/bed/stool/chair/plastic/New(var/newloc)
..(newloc, MATERIAL_PLASTIC)
/obj/structure/bed/stool/chair/plastic/post_buckle(atom/movable/MA) //you do not want to see an angry spaceman speeding while holding dearly onto it
. = ..()
if(MA == buckled)
anchored = TRUE
else
anchored = FALSE
/obj/structure/bed/stool/chair/wood
name = "classic chair"
desc = "Old is never too old to not be in fashion."
icon_state = "wooden_chair_preview"
icon_state = "wooden_chair"
base_icon = "wooden_chair"
material_alteration = MATERIAL_ALTERATION_NAME || MATERIAL_ALTERATION_DESC
build_amt = 3
held_item = /obj/item/material/stool/chair/wood
can_pad = FALSE
@@ -336,7 +197,7 @@
/obj/structure/bed/stool/chair/wood/wings
name = "winged chair"
icon_state = "wooden_chair_wings_preview"
icon_state = "wooden_chair_wings"
base_icon = "wooden_chair_wings"
held_item = /obj/item/material/stool/chair/wood/wings
@@ -346,7 +207,7 @@
/obj/structure/bed/stool/chair/shuttle
name = "shuttle chair"
icon_state = "shuttlechair_preview"
icon_state = "shuttlechair"
base_icon = "shuttlechair"
buckling_sound = 'sound/effects/metal_close.ogg'
material_alteration = MATERIAL_ALTERATION_NAME || MATERIAL_ALTERATION_DESC
@@ -377,7 +238,6 @@
held_item = null
desc = "A heavy set of belts and buckles, completed by a hinging arm mechanism that surrounds the occupant. Perfect for flying shuttles."
icon = 'icons/obj/spaceship/cockpit_chair.dmi'
override_material_color = TRUE
/obj/structure/bed/stool/chair/cockpit/CanPass(atom/movable/mover, turf/target, height, air_group)
return TRUE
@@ -412,15 +272,17 @@
/obj/structure/bed/stool/chair/folding
name = "folding chair"
desc = "Temporary seating perfect for your next office party and/or wrestling match."
icon_state = "folding_chair_preview"
icon_state = "folding_chair"
base_icon = "folding_chair"
held_item = /obj/item/material/stool/chair/folding
// Chair Items
/obj/item/material/stool/chair
name = "chair"
desc = "Bar brawl essential. Now all that's missing is a ragtime piano."
desc_info = "Click it while in hand to right it."
icon = 'icons/obj/furniture.dmi'
desc_info = "Click it while in-hand to right it."
icon = 'icons/obj/structure/chairs.dmi'
icon_state = "chair_item"
item_state = "chair"
base_icon = "chair"
@@ -432,6 +294,14 @@
force_divisor = 0.5
origin_type = /obj/structure/bed/stool/chair
/obj/item/material/stool/chair/fancy
name = "fancy chair"
desc = "Meeting brawl essential. Now all that's missing is corporate ukulele."
icon_state = "chair_fancy_item"
item_state = "chair_fancy"
base_icon = "chair_fancy"
origin_type = /obj/structure/bed/stool/chair/fancy
// Because wood chairs are snowflake sprites.
/obj/item/material/stool/chair/wood
icon_state = "wooden_chair_item"
@@ -452,6 +322,19 @@
base_icon = "folding_chair"
origin_type = /obj/structure/bed/stool/chair/folding
/obj/item/material/stool/chair/plastic
icon_state = "plastic_chair_item"
item_state = "plastic_chair"
base_icon = "plastic_chair"
origin_type = /obj/structure/bed/stool/chair/plastic
/obj/item/material/stool/chair/wood/wings
icon_state = "wooden_chair_wings_item"
item_state = "woodenchair"
base_icon = "wooden_chair_wings"
origin_type = /obj/structure/bed/stool/chair/wood/wings
//Maybe if you tried hard, you could sit on these too.
/obj/structure/bed/handrail
name = "handrail"
@@ -459,8 +342,8 @@
icon = 'icons/obj/handrail.dmi'
icon_state = "handrail"
base_icon = "handrail"
material_alteration = MATERIAL_ALTERATION_NONE
buckle_dir = FALSE
buckle_lying = FALSE
can_dismantle = FALSE
override_material_color = TRUE
obj_flags = OBJ_FLAG_MOVES_UNSUPPORTED
@@ -0,0 +1,225 @@
/obj/structure/bed/stool/chair/sofa
name = "sofa"
desc = "An old design, but it still does the job of being a sofa."
icon = 'icons/obj/structure/sofa.dmi'
icon_state = "sofa_middle"
base_icon = "sofa_middle"
/obj/structure/bed/stool/chair/sofa/brown/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_LEATHER)
/obj/structure/bed/stool/chair/sofa/black/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_DARK_GRAY)
/obj/structure/bed/stool/chair/sofa/beige/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_BEIGE)
/obj/structure/bed/stool/chair/sofa/red/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CARPET)
/obj/structure/bed/stool/chair/sofa/orange/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_ORANGE)
/obj/structure/bed/stool/chair/sofa/yellow/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_YELLOW)
/obj/structure/bed/stool/chair/sofa/green/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_GREEN)
/obj/structure/bed/stool/chair/sofa/lime/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_LIME)
/obj/structure/bed/stool/chair/sofa/blue/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_BLUE)
/obj/structure/bed/stool/chair/sofa/teal/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_TEAL)
/obj/structure/bed/stool/chair/sofa/purple/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_PURPLE)
/obj/structure/bed/stool/chair/sofa/violet/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_VIOLET)
/obj/structure/bed/stool/chair/sofa/left
icon_state = "sofa_end_left"
base_icon = "sofa_end_left"
/obj/structure/bed/stool/chair/sofa/left/brown/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_LEATHER)
/obj/structure/bed/stool/chair/sofa/left/black/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_DARK_GRAY)
/obj/structure/bed/stool/chair/sofa/left/beige/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_BEIGE)
/obj/structure/bed/stool/chair/sofa/left/red/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CARPET)
/obj/structure/bed/stool/chair/sofa/left/orange/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_ORANGE)
/obj/structure/bed/stool/chair/sofa/left/yellow/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_YELLOW)
/obj/structure/bed/stool/chair/sofa/left/green/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_GREEN)
/obj/structure/bed/stool/chair/sofa/left/lime/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_LIME)
/obj/structure/bed/stool/chair/sofa/left/blue/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_BLUE)
/obj/structure/bed/stool/chair/sofa/left/teal/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_TEAL)
/obj/structure/bed/stool/chair/sofa/left/purple/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_PURPLE)
/obj/structure/bed/stool/chair/sofa/left/violet/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_VIOLET)
/obj/structure/bed/stool/chair/sofa/right
icon_state = "sofa_end_right"
base_icon = "sofa_end_right"
/obj/structure/bed/stool/chair/sofa/right/brown/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_LEATHER)
/obj/structure/bed/stool/chair/sofa/right/black/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_DARK_GRAY)
/obj/structure/bed/stool/chair/sofa/right/beige/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_BEIGE)
/obj/structure/bed/stool/chair/sofa/right/red/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CARPET)
/obj/structure/bed/stool/chair/sofa/right/orange/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_ORANGE)
/obj/structure/bed/stool/chair/sofa/right/yellow/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_YELLOW)
/obj/structure/bed/stool/chair/sofa/right/green/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_GREEN)
/obj/structure/bed/stool/chair/sofa/right/lime/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_LIME)
/obj/structure/bed/stool/chair/sofa/right/blue/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_BLUE)
/obj/structure/bed/stool/chair/sofa/right/teal/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_TEAL)
/obj/structure/bed/stool/chair/sofa/right/purple/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_PURPLE)
/obj/structure/bed/stool/chair/sofa/right/violet/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_VIOLET)
/obj/structure/bed/stool/chair/sofa/corner
name = "sofa corner"
icon_state = "sofa_cursed"
/obj/structure/bed/stool/chair/sofa/corner/concave
icon_state = "sofa_corner_in"
base_icon = "sofa_corner_in"
/obj/structure/bed/stool/chair/sofa/corner/concave/brown/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_LEATHER)
/obj/structure/bed/stool/chair/sofa/corner/concave/black/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_DARK_GRAY)
/obj/structure/bed/stool/chair/sofa/corner/concave/beige/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_BEIGE)
/obj/structure/bed/stool/chair/sofa/corner/concave/red/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CARPET)
/obj/structure/bed/stool/chair/sofa/corner/concave/orange/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_ORANGE)
/obj/structure/bed/stool/chair/sofa/corner/concave/yellow/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_YELLOW)
/obj/structure/bed/stool/chair/sofa/corner/concave/green/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_GREEN)
/obj/structure/bed/stool/chair/sofa/corner/concave/lime/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_LIME)
/obj/structure/bed/stool/chair/sofa/corner/concave/blue/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_BLUE)
/obj/structure/bed/stool/chair/sofa/corner/concave/teal/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_TEAL)
/obj/structure/bed/stool/chair/sofa/corner/concave/purple/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_PURPLE)
/obj/structure/bed/stool/chair/sofa/corner/concave/violet/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_VIOLET)
/obj/structure/bed/stool/chair/sofa/corner/convex
icon_state = "sofa_corner_in"
base_icon = "sofa_corner_in"
/obj/structure/bed/stool/chair/sofa/corner/convex/brown/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_LEATHER)
/obj/structure/bed/stool/chair/sofa/corner/convex/black/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_DARK_GRAY)
/obj/structure/bed/stool/chair/sofa/corner/convex/beige/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_BEIGE)
/obj/structure/bed/stool/chair/sofa/corner/convex/red/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CARPET)
/obj/structure/bed/stool/chair/sofa/corner/convex/orange/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_ORANGE)
/obj/structure/bed/stool/chair/sofa/corner/convex/yellow/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_YELLOW)
/obj/structure/bed/stool/chair/sofa/corner/convex/green/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_GREEN)
/obj/structure/bed/stool/chair/sofa/corner/convex/lime/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_LIME)
/obj/structure/bed/stool/chair/sofa/corner/convex/blue/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_BLUE)
/obj/structure/bed/stool/chair/sofa/corner/convex/teal/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_TEAL)
/obj/structure/bed/stool/chair/sofa/corner/convex/purple/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_PURPLE)
/obj/structure/bed/stool/chair/sofa/corner/convex/violet/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_VIOLET)
/obj/structure/bed/stool/chair/sofa/pew
name = "pew"
desc = "A long, simple bench with a backboard, commonly found in places of worship, courtrooms and so on. Not known for being particularly comfortable."
icon_state = "pewmiddle"
base_icon = "pewmiddle"
build_amt = 3
/obj/structure/bed/stool/chair/sofa/pew/New(var/newloc)
..(newloc, MATERIAL_WOOD)
/obj/structure/bed/stool/chair/sofa/pew/left
icon_state = "pewend_left"
base_icon = "pewend_left"
/obj/structure/bed/stool/chair/sofa/pew/right
icon_state = "pewend_right"
base_icon = "pewend_right"
@@ -1,6 +1,7 @@
/obj/structure/bed/stool
name = "stool"
desc = "Apply butt."
icon = 'icons/obj/structure/chairs.dmi'
icon_state = "stool_preview"
base_icon = "stool"
anchored = FALSE
@@ -153,8 +154,24 @@
..(newloc, MATERIAL_SHUTTLE_SKRELL)
set_light(1,1,LIGHT_COLOR_CYAN)
/obj/structure/bed/chair/stool/bamboo
name = "bamboo stool"
desc = "A makeshift bamboo stool with a rustic look."
icon_state = "bamboo_stool_item"
item_state = "bamboo_stool"
base_icon = "bamboo_stool"
icon_state = "bamboo_stool"
material_alteration = MATERIAL_ALTERATION_NAME || MATERIAL_ALTERATION_DESC
held_item = /obj/item/material/stool/bamboo
can_pad = FALSE
/obj/structure/bed/stool/bamboo/New(var/newloc)
..(newloc, MATERIAL_BAMBOO)
// Stool Items
/obj/item/material/stool
icon = 'icons/obj/furniture.dmi'
icon = 'icons/obj/structure/chairs.dmi'
item_icons = list(
slot_l_hand_str = 'icons/mob/items/lefthand_chairs.dmi',
slot_r_hand_str = 'icons/mob/items/righthand_chairs.dmi',
@@ -300,6 +317,12 @@
base_icon = "hover_stool"
origin_type = /obj/structure/bed/stool/hover
/obj/item/material/stool/bamboo
icon_state = "bamboo_stool_item"
item_state = "bamboo_stool"
base_icon = "bamboo_stool"
origin_type = /obj/structure/bed/stool/bamboo
/obj/structure/flora/log_bench
name = "log bench"
desc = "Apply butt."
+83 -81
View File
@@ -7,10 +7,12 @@
/obj/structure/window
name = "glass pane"
desc = "A glass pane."
icon = 'icons/obj/structures.dmi'
icon = 'icons/obj/structure/window/window_panes.dmi'
icon_state = "pane"
alpha = 196
density = TRUE
w_class = ITEMSIZE_NORMAL
layer = 3.2 // Just above doors.
layer = WINDOW_PANE_LAYER
anchored = TRUE
flags = ON_BORDER
obj_flags = OBJ_FLAG_ROTATABLE|OBJ_FLAG_MOVES_UNSUPPORTED
@@ -27,6 +29,7 @@
var/glasstype = null // Set this in subtypes. Null is assumed strange or otherwise impossible to dismantle, such as for shuttle glass.
var/silicate = 0 // number of units of silicate
var/base_frame = null
var/full = FALSE
atmos_canpass = CANPASS_PROC
@@ -57,6 +60,11 @@
queue_smooth_neighbors(src)
/obj/structure/window/update_icon()
if(!full)
if(dir == SOUTH)
layer = ABOVE_MOB_LAYER
else
layer = WINDOW_PANE_LAYER
queue_smooth(src)
/obj/structure/window/proc/take_damage(var/damage = 0, var/sound_effect = 1, message = TRUE)
@@ -346,9 +354,8 @@
/obj/structure/window/Initialize(mapload, start_dir = null, constructed = 0)
. = ..()
if (constructed)
anchored = 0
if(!full && constructed)
anchored = FALSE
if (!mapload && constructed)
state = 0
@@ -362,6 +369,7 @@
update_nearby_tiles(need_rebuild=1)
update_nearby_icons()
update_icon()
/obj/structure/window/Destroy()
density = 0
@@ -373,7 +381,6 @@
loc = location
return ..()
/obj/structure/window/Move()
var/ini_dir = dir
update_nearby_tiles(need_rebuild=1)
@@ -502,8 +509,7 @@
/obj/structure/window/borosilicate
name = "borosilicate glass pane"
desc = "A borosilicate alloy window. It seems to be quite strong."
basestate = "phoronwindow"
icon_state = "phoronwindow"
color = GLASS_COLOR_PHORON
shardtype = /obj/item/material/shard/phoron
glasstype = /obj/item/stack/material/glass/phoronglass
maximal_heat = T0C + 2000
@@ -513,8 +519,7 @@
/obj/structure/window/borosilicate/reinforced
name = "reinforced borosilicate glass pane"
desc = "A borosilicate alloy window, with rods supporting it. It seems to be very strong."
basestate = "phoronrwindow"
icon_state = "phoronrwindow"
color = GLASS_COLOR_PHORON_R
glasstype = /obj/item/stack/material/glass/phoronrglass
reinf = TRUE
maximal_heat = T0C + 4000
@@ -523,8 +528,7 @@
/obj/structure/window/borosilicate/reinforced/skrell
name = "advanced borosilicate alloy window"
desc = "A window made out of a higly advanced borosilicate alloy. It seems to be extremely strong."
basestate = "phoronwindow"
icon_state = "phoronwindow"
color = GLASS_COLOR_PHORON
maxhealth = 250
/********** Shuttle Windows **********/
@@ -568,19 +572,31 @@
/obj/structure/window/shuttle/scc_space_ship
name = "advanced borosilicate alloy window"
desc = "It looks extremely strong. Might take many good hits to crack it."
icon = 'icons/obj/smooth/scc_space_ship.dmi'
icon_state = "scc_space_ship"
icon = 'icons/turf/smooth/scc_ship/scc_ship_windows.dmi'
icon_state = "map_window"
health = 500
maxhealth = 500
smooth = SMOOTH_MORE | SMOOTH_DIAGONAL
alpha = 255
smooth = SMOOTH_MORE
canSmoothWith = list(
/obj/structure/window/shuttle/scc_space_ship,
/turf/simulated/wall/shuttle/scc_space_ship
)
blend_overlay = "-wall"
attach_overlay = "attach"
can_blend_with = list(
/turf/simulated/wall/shuttle/scc_space_ship,
/obj/structure/window/shuttle/scc_space_ship
)
/obj/structure/window/shuttle/scc_space_ship/cardinal
smooth = SMOOTH_MORE
/obj/structure/window/shuttle/scc_space_ship/cardinal_smooth(adjacencies, var/list/dir_mods)
dir_mods = handle_blending(adjacencies, dir_mods)
return ..(adjacencies, dir_mods)
/obj/structure/window/shuttle/scc
icon = 'icons/obj/smooth/scc_shuttle_window.dmi'
health = 160
@@ -604,68 +620,35 @@
maxhealth = 28 // Two glass panes worth of health, since that's the minimum you need to break through to get to the other side.
glasstype = /obj/item/stack/material/glass
shardtype = /obj/item/material/shard
full = TRUE
layer = 2.99
base_frame = /obj/structure/window_frame
smooth = SMOOTH_TRUE
smooth = SMOOTH_MORE
canSmoothWith = list(
/turf/simulated/wall,
/turf/simulated/wall/r_wall,
/turf/unsimulated/wall/steel,
/turf/unsimulated/wall/darkshuttlewall,
/turf/unsimulated/wall/riveted,
/obj/structure/window_frame,
/obj/structure/window_frame/unanchored,
/obj/structure/window_frame/empty,
/obj/structure/window/full/reinforced,
/obj/structure/window/full/reinforced/indestructible,
/obj/structure/window/full/reinforced/polarized,
/obj/structure/window/full/phoron/reinforced
/obj/structure/window/full/reinforced/polarized/indestructible,
/obj/structure/window/full/phoron/reinforced,
/obj/structure/window/shuttle/scc_space_ship,
/turf/simulated/wall/shuttle/scc_space_ship,
/obj/machinery/door
)
blend_overlay = "wall"
attach_overlay = "attach"
can_blend_with = list(
/turf/simulated/wall,
/obj/machinery/door,
/obj/structure/window_frame
)
/obj/structure/window/full/cardinal_smooth(adjacencies, var/list/dir_mods)
LAZYINITLIST(dir_mods)
var/north_wall = FALSE
var/east_wall = FALSE
var/south_wall = FALSE
var/west_wall = FALSE
if(adjacencies & N_NORTH)
var/turf/T = get_step(src, NORTH)
if(iswall(T))
dir_mods["[N_NORTH]"] = "-wall"
north_wall = TRUE
if(adjacencies & N_EAST)
var/turf/T = get_step(src, EAST)
if(iswall(T))
dir_mods["[N_EAST]"] = "-wall"
east_wall = TRUE
if(adjacencies & N_SOUTH)
var/turf/T = get_step(src, SOUTH)
if(iswall(T))
dir_mods["[N_SOUTH]"] = "-wall"
south_wall = TRUE
if(adjacencies & N_WEST)
var/turf/T = get_step(src, WEST)
if(iswall(T))
dir_mods["[N_WEST]"] = "-wall"
west_wall = TRUE
if(((adjacencies & N_NORTH) && (adjacencies & N_WEST)) && (north_wall || west_wall))
dir_mods["[N_NORTH][N_WEST]"] = "-n[north_wall ? "wall" : "win"]-w[west_wall ? "wall" : "win"]"
if(((adjacencies & N_NORTH) && (adjacencies & N_EAST)) && (north_wall || east_wall))
dir_mods["[N_NORTH][N_EAST]"] = "-n[north_wall ? "wall" : "win"]-e[east_wall ? "wall" : "win"]"
if(((adjacencies & N_SOUTH) && (adjacencies & N_WEST)) && (south_wall || west_wall))
dir_mods["[N_SOUTH][N_WEST]"] = "-s[south_wall ? "wall" : "win"]-w[west_wall ? "wall" : "win"]"
if((adjacencies & N_SOUTH) && (adjacencies & N_EAST) && (south_wall || east_wall))
dir_mods["[N_SOUTH][N_EAST]"] = "-s[south_wall ? "wall" : "win"]-e[east_wall ? "wall" : "win"]"
return ..(adjacencies, dir_mods)
/obj/structure/window/full/Initialize(mapload, start_dir = null, constructed = 0)
if (!mapload && constructed)
state = 0
if (start_dir)
set_dir(start_dir)
health = maxhealth
ini_dir = dir
update_nearby_tiles(need_rebuild=1)
update_icon()
update_nearby_icons()
initialized = TRUE
return INITIALIZE_HINT_NORMAL
/obj/structure/window/full/Destroy()
var/obj/structure/window_frame/WF = locate(/obj/structure/window_frame) in get_turf(src)
@@ -783,7 +766,7 @@
/obj/structure/window/full/reinforced
name = "reinforced window"
desc = "It looks rather strong. Might take a few good hits to shatter it."
icon = 'icons/obj/smooth/full_window.dmi'
icon = 'icons/obj/smooth/window/full_window.dmi'
icon_state = "window_glass"
basestate = "window_glass"
maxhealth = 80 // Two reinforced panes worth of health, since that's the minimum you need to break through to get to the other side.
@@ -792,14 +775,17 @@
glasstype = /obj/item/stack/material/glass/reinforced
layer = 2.99
base_frame = /obj/structure/window_frame
smooth = SMOOTH_TRUE
canSmoothWith = list(
/obj/structure/window/full/reinforced,
/obj/structure/window/full/reinforced/indestructible,
/obj/structure/window/full/reinforced/polarized,
/obj/structure/window/full/reinforced/polarized/indestructible,
/obj/structure/window/full/phoron/reinforced
)
smooth = SMOOTH_MORE
/obj/structure/window/full/cardinal_smooth(adjacencies, var/list/dir_mods)
dir_mods = handle_blending(adjacencies, dir_mods)
return ..(adjacencies, dir_mods)
/obj/structure/window_frame/proc/update_nearby_icons()
queue_smooth_neighbors(src)
/obj/structure/window_frame/update_icon()
queue_smooth(src)
// Indestructible Reinforced Window
/obj/structure/window/full/reinforced/indestructible/attack_hand()
@@ -853,11 +839,27 @@
/obj/structure/window/full/reinforced/polarized/indestructible/shatter()
return
//Shuttle exterior window
/obj/structure/window/full/reinforced/shuttle
icon = 'icons/obj/smooth/window/shuttle_window_dark.dmi'
color = "#006eff"
icon_state = "window_glass"
basestate = "window_glass"
/obj/structure/window/full/reinforced/shuttle/red
color = "#ff0000"
/obj/structure/window/full/reinforced/shuttle/green
color = "#00ff40"
/obj/structure/window/full/reinforced/shuttle/black
color = "#150b41"
// Borosilicate Window (I.e. Phoron Window)
/obj/structure/window/full/phoron
name = "borosilicate window"
desc = "You aren't supposed to see this."
icon = 'icons/obj/smooth/full_window_phoron.dmi'
icon = 'icons/obj/smooth/window/full_window_phoron.dmi'
icon_state = "window_glass"
basestate = "window_glass"
glasstype = /obj/item/stack/material/glass/phoronglass