mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-08-22 12:29:46 +01:00
[WORK IN PROGRESS] Konyang and Point Verdant (#16714)
* starting point verdant * major progress * PAIN * test * zlevels AAGHHH OH NO * im scream * kawnyang * dam thats good * Biff Largehuge * Look Gordon, ropes! * wawagh * rgrhgrhrgrh * Gordon, you're alive! Thank God for that hazard suit. * help * frownie face * wegh * Gordon! Get away from the beams! * Good morning, Gordon. * Signs * fix multiple proc definition * initial ambience * gay rain * beach and some pebbles literally * fixing conflicts aUGH * generation * guh? * sewers and beach additions * maping * map * womp womp * landing zone * fixing missing shit * buddha * ass * major map updates * implemented key doors, fixed baloon alert and tasks * mineral color, adds ozone layer * real fake walls * vending subtypes for the regional market * mooooar * minimart pt 1 * haneunim skybox * station mapping progress * minimart and roboclinic * offices progress * bar work * size change, some polishing of the office + police station * map size update. Also a fuckton * tunnels * more work * Why doesnt the map initialize * broke shit * fixing point verdant spawning, also ocean landing zone * finishing some buildings * mapping, village, not finished * village, main road * village stuff * village stuff * village stuff * village stuff * anchoring * village stuff * random space tiles fix * random space tiles fix * bin fixes * missing initialize hint on new floors * fix open space on basement level * idk * missing initialize hint * tests again please * tests rerun please * oven/small be gone * remove shuttle landmarks idk * bad stairs fix maybe * fix missing open space above stairs * tests rerun please * CircularRandomTurfAround fix * spaces to tabs --------- 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>
This commit is contained in:
co-authored by
atteria
Fluffy
DreamySkrell
parent
ec2cbcef4c
commit
f18d4128ad
@@ -0,0 +1,74 @@
|
||||
/obj/effect/decal/curb
|
||||
icon = 'icons/obj/structure/urban/road_edges.dmi'
|
||||
icon_state = "curb"
|
||||
layer = 2
|
||||
mouse_opacity = 0
|
||||
|
||||
/obj/effect/decal/curb/corner
|
||||
icon_state = "curb_corner"
|
||||
|
||||
/obj/effect/decal/road_marking
|
||||
icon = 'icons/obj/decals/street/road_markings.dmi'
|
||||
icon_state = "line"
|
||||
layer = 2
|
||||
mouse_opacity = 0
|
||||
|
||||
/obj/effect/decal/road_marking/thin
|
||||
icon_state = "line_thin"
|
||||
|
||||
/obj/effect/decal/road_marking/center
|
||||
icon_state = "center-line"
|
||||
|
||||
/obj/effect/decal/road_marking/no_pass
|
||||
icon_state = "no_pass"
|
||||
|
||||
/obj/effect/decal/road_marking/no_park
|
||||
icon_state = "no_park"
|
||||
|
||||
/obj/effect/decal/road_marking/crosswalk
|
||||
icon_state = "pedestrian"
|
||||
|
||||
/obj/effect/decal/road_marking/turn_right
|
||||
icon_state = "turn_right"
|
||||
|
||||
/obj/effect/decal/road_marking/turn_left
|
||||
icon_state = "turn_left"
|
||||
|
||||
/obj/effect/decal/road_marking/fork
|
||||
icon_state = "fork"
|
||||
|
||||
/obj/effect/decal/road_marking/reflector
|
||||
icon_state = "reflector"
|
||||
|
||||
/obj/effect/decal/road_marking/incline
|
||||
icon_state = "incline_line"
|
||||
layer = 2.03
|
||||
|
||||
/obj/effect/decal/road_marking/incline/center
|
||||
icon_state = "incline_center-line"
|
||||
|
||||
/obj/effect/decal/exterior_stairs
|
||||
icon = 'icons/obj/structure/urban/ledges.dmi'
|
||||
icon_state = "stairs-single"
|
||||
layer = 2
|
||||
|
||||
/obj/effect/decal/exterior_stairs/center
|
||||
icon_state = "stairs-center"
|
||||
|
||||
/obj/effect/decal/exterior_stairs/left
|
||||
icon_state = "stairs-left"
|
||||
|
||||
/obj/effect/decal/exterior_stairs/right
|
||||
icon_state = "stairs-right"
|
||||
|
||||
/obj/effect/decal/exterior_stairs/half
|
||||
icon_state = "half-stairs-single"
|
||||
|
||||
/obj/effect/decal/exterior_stairs/half/center
|
||||
icon_state = "half-stairs-center"
|
||||
|
||||
/obj/effect/decal/exterior_stairs/half/left
|
||||
icon_state = "half-stairs-left"
|
||||
|
||||
/obj/effect/decal/exterior_stairs/half/right
|
||||
icon_state = "half-stairs-right"
|
||||
@@ -0,0 +1,16 @@
|
||||
/obj/effect/decal/plaster
|
||||
icon = 'icons/turf/wood_wall_testing.dmi'
|
||||
icon_state = "plaster_end"
|
||||
layer = 2
|
||||
|
||||
/obj/effect/decal/plaster/yellow
|
||||
color = "#e6b927"
|
||||
|
||||
/obj/effect/decal/plaster/green
|
||||
color = "#93e627"
|
||||
|
||||
/obj/effect/decal/plaster/red
|
||||
color = "#e62727"
|
||||
|
||||
/obj/effect/decal/plaster/blue
|
||||
color = "#2b5eaa"
|
||||
@@ -561,6 +561,17 @@
|
||||
starts_with = list(/obj/item/reagent_containers/food/snacks/donkpocket/sinpocket = 6)
|
||||
desc_antag = "Crush bottom of package to initiate chemical heating. Wait for 20 seconds before consumption. Product will cool if not eaten within seven minutes."
|
||||
|
||||
/obj/item/storage/box/donkpockets/gwok
|
||||
name = "box of teriyaki Gwok-pockets"
|
||||
icon_state = "gwokpocketbox"
|
||||
item_state = "redbox"
|
||||
illustration = null
|
||||
starts_with = list(/obj/item/reagent_containers/food/snacks/donkpocket/teriyaki = 6)
|
||||
|
||||
/obj/item/storage/box/donkpockets/gwok/takoyaki
|
||||
name = "box of takoyaki Gwok-pockets"
|
||||
starts_with = list(/obj/item/reagent_containers/food/snacks/donkpocket/takoyaki = 6)
|
||||
|
||||
/obj/item/storage/box/janitorgloves
|
||||
name = "janitorial gloves box"
|
||||
desc = "A box full of janitorial gloves of all shapes and sizes."
|
||||
|
||||
@@ -0,0 +1,47 @@
|
||||
/obj/structure/beach_umbrella
|
||||
name = "overhead beach umbrella"
|
||||
desc = "A tightly secured beach umbrella which looks pretty elegant against the sun."
|
||||
icon = 'icons/obj/structure/urban/misc_64x64.dmi'
|
||||
icon_state = "umbrella"
|
||||
anchored = TRUE
|
||||
layer = 9
|
||||
|
||||
/obj/structure/beach_umbrella/alt
|
||||
icon_state = "umbrella_alt"
|
||||
|
||||
/obj/structure/dock_structure
|
||||
name = "docking tie"
|
||||
desc = "A large, very secure tie-off point for a dock."
|
||||
icon = 'icons/obj/structure/industrial/docks.dmi'
|
||||
icon_state = "dock_tie"
|
||||
anchored = TRUE
|
||||
|
||||
/obj/structure/dock_structure/rail
|
||||
name = "docking rail line"
|
||||
desc = "A large railing mechanism to lift vessels out of the water with ease."
|
||||
icon_state = "rail"
|
||||
|
||||
/obj/structure/dock_structure/rail/start
|
||||
icon_state = "rail_start"
|
||||
|
||||
/obj/structure/dock_structure/rail/end
|
||||
icon_state = "rail_end"
|
||||
|
||||
/obj/structure/boat
|
||||
name = "surface water craft"
|
||||
desc = "A large boat floating steadily atop the water."
|
||||
icon = 'icons/obj/structure/industrial/watercraft.dmi'
|
||||
icon_state = "radio_ship"
|
||||
anchored = TRUE
|
||||
density = TRUE
|
||||
layer = 9
|
||||
|
||||
/obj/structure/crane
|
||||
name = "overhead guiding crane"
|
||||
desc = "A towering crane for lifting industrial sized cargo."
|
||||
icon = 'icons/obj/structure/industrial/cranes.dmi'
|
||||
icon_state = "crane"
|
||||
anchored = TRUE
|
||||
density = TRUE
|
||||
layer = 9
|
||||
pixel_x = -16
|
||||
@@ -140,6 +140,9 @@
|
||||
if(istype(W))
|
||||
W.hitby(AM)
|
||||
|
||||
/obj/structure/window_frame/wood
|
||||
color = "#8f5847"
|
||||
|
||||
/obj/structure/window_frame/unanchored // Used during in-game construction.
|
||||
should_check_mapload = FALSE // No glass.
|
||||
anchored = FALSE
|
||||
|
||||
@@ -185,3 +185,38 @@
|
||||
|
||||
/obj/structure/lattice/catwalk/indoor/grate/dark
|
||||
color = COLOR_DARK_GUNMETAL
|
||||
|
||||
/obj/structure/lattice/catwalk/indoor/urban
|
||||
name = "grate"
|
||||
desc = "A metal grate."
|
||||
icon = 'icons/obj/structure/over_turf.dmi'
|
||||
icon_state = "city_grate"
|
||||
return_amount = 1
|
||||
smooth = null
|
||||
|
||||
/obj/structure/lattice/catwalk/indoor/tatami
|
||||
name = "tatami spread"
|
||||
desc = "A straw mat rug of some sort, frequently referred to as a tatami."
|
||||
icon = 'icons/obj/structure/over_turf.dmi'
|
||||
icon_state = "tatami"
|
||||
return_amount = null
|
||||
smooth = null
|
||||
footstep_sound = /singleton/sound_category/carpet_footstep
|
||||
|
||||
/obj/structure/lattice/catwalk/indoor/planks
|
||||
name = "flooring plank"
|
||||
desc = "A ricket assortment of planks meant to be stood upon."
|
||||
icon = 'icons/obj/structure/urban/wood.dmi'
|
||||
icon_state = "plank"
|
||||
return_amount = null
|
||||
smooth = null
|
||||
footstep_sound = /singleton/sound_category/wood_footstep
|
||||
|
||||
/obj/structure/lattice/catwalk/indoor/planks/opaque
|
||||
icon_state = "plank_dark"
|
||||
|
||||
/obj/structure/lattice/catwalk/indoor/planks/stairs
|
||||
icon_state = "plank_stairs"
|
||||
|
||||
/obj/structure/lattice/catwalk/indoor/planks/deep
|
||||
icon_state = "plank_deep"
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
/obj/structure/light_pole
|
||||
name = "light pole"
|
||||
desc = "A tall light source."
|
||||
light_color = COLOR_ORANGE
|
||||
icon = 'icons/effects/32x96.dmi'
|
||||
icon_state = "rustlamp_l"
|
||||
anchored = TRUE
|
||||
@@ -12,4 +11,137 @@
|
||||
light_power = 8
|
||||
|
||||
/obj/structure/light_pole/r
|
||||
icon_state = "rustlamp_r"
|
||||
icon_state = "rustlamp_r"
|
||||
|
||||
/obj/structure/light_pole/konyang
|
||||
name = "dangling lamp"
|
||||
desc = "A flame-lit lamp dangling precariously from a tall pole."
|
||||
icon = 'icons/obj/structure/urban/poles.dmi'
|
||||
icon_state = "right_lamp"
|
||||
layer = 9.1
|
||||
anchored = TRUE
|
||||
density = FALSE
|
||||
light_color = "#FA644B"
|
||||
light_wedge = LIGHT_OMNI
|
||||
light_range = 6
|
||||
light_power = 1
|
||||
|
||||
/obj/structure/light_pole/konyang/left
|
||||
icon_state = "left_lamp"
|
||||
|
||||
/obj/structure/utility_pole
|
||||
name = "tall pole"
|
||||
desc = "A very tall utility pole for urban infrastructure."
|
||||
icon = 'icons/obj/structure/urban/poles.dmi'
|
||||
icon_state = "junction"
|
||||
layer = 9
|
||||
anchored = TRUE
|
||||
|
||||
/obj/structure/utility_pole/gwok
|
||||
name = "Go Go Gwok street sign"
|
||||
desc = "A very tall street sign which alerts you of a Go Go Gwok eating establishment, where you can eat establishments."
|
||||
icon = 'icons/obj/structure/urban/konyang64x96.dmi'
|
||||
icon_state = "nice_gwok"
|
||||
|
||||
/obj/structure/utility_pole/street
|
||||
desc = "A tall light source. This one seems to be off."
|
||||
icon = 'icons/obj/structure/urban/poles.dmi'
|
||||
icon_state = "street"
|
||||
|
||||
/obj/effect/overlay/street_light
|
||||
icon = 'icons/obj/structure/urban/poles.dmi'
|
||||
icon_state = "street_light"
|
||||
layer = EFFECTS_ABOVE_LIGHTING_LAYER
|
||||
|
||||
/obj/effect/overlay/street_light/classic
|
||||
icon_state = "classic_lamp_light"
|
||||
density = 1
|
||||
|
||||
/obj/structure/utility_pole/street/on
|
||||
desc = "A tall light source. This one shines brightly."
|
||||
light_wedge = LIGHT_OMNI
|
||||
light_color = "#e8ffeb"
|
||||
light_range = 8
|
||||
light_power = 1.9
|
||||
|
||||
/obj/structure/utility_pole/street/on/Initialize(mapload)
|
||||
. = ..()
|
||||
cut_overlays()
|
||||
overlays += /obj/effect/overlay/street_light
|
||||
return
|
||||
|
||||
/obj/structure/utility_pole/street/classic
|
||||
icon_state = "classic_lamp"
|
||||
|
||||
/obj/structure/utility_pole/street/classic/on
|
||||
desc = "A tall light source. This one shines brightly."
|
||||
light_wedge = LIGHT_OMNI
|
||||
light_color = LIGHT_COLOR_TUNGSTEN
|
||||
light_range = 8
|
||||
light_power = 1.9
|
||||
|
||||
/obj/structure/utility_pole/street/classic/on/Initialize(mapload)
|
||||
. = ..()
|
||||
cut_overlays()
|
||||
overlays += /obj/effect/overlay/street_light/classic
|
||||
return
|
||||
|
||||
/obj/effect/overlay/street_light/crosswalk
|
||||
icon_state = "crosswalk_go"
|
||||
|
||||
/obj/structure/utility_pole/street/crosswalk
|
||||
name = "crosswalk indicator"
|
||||
desc = "A very tall crosswalk indicator which can be manually used to scan for danger, before letting the viewer know whether it's safe to cross the road or not."
|
||||
icon_state = "crosswalk"
|
||||
light_color = LIGHT_COLOR_GREEN
|
||||
light_range = 3.1
|
||||
light_power = 2.6
|
||||
|
||||
/obj/structure/utility_pole/street/crosswalk/Initialize(mapload)
|
||||
. = ..()
|
||||
cut_overlays()
|
||||
overlays += /obj/effect/overlay/street_light/crosswalk
|
||||
return
|
||||
|
||||
/obj/effect/overlay/street_light/traffic
|
||||
icon_state = "traffic_lights"
|
||||
|
||||
/obj/effect/overlay/street_light/traffic/inverted
|
||||
icon_state = "traffic_lights_inverse"
|
||||
|
||||
/obj/structure/utility_pole/street/traffic
|
||||
name = "traffic indicator"
|
||||
desc = "A very tall crosswalk indicator which can be used to better run red lights."
|
||||
icon_state = "traffic"
|
||||
light_color = LIGHT_COLOR_HALOGEN
|
||||
light_range = 3.1
|
||||
light_power = 2.6
|
||||
|
||||
/obj/structure/utility_pole/street/traffic/base/Initialize(mapload)
|
||||
. = ..()
|
||||
cut_overlays()
|
||||
overlays += /obj/effect/overlay/street_light/traffic
|
||||
return
|
||||
|
||||
/obj/structure/utility_pole/street/traffic/inverted/Initialize(mapload)
|
||||
. = ..()
|
||||
cut_overlays()
|
||||
overlays += /obj/effect/overlay/street_light/traffic/inverted
|
||||
return
|
||||
|
||||
/obj/structure/utility_pole/power
|
||||
name = "power pole"
|
||||
desc = "A very tall utility pole for urban infrastructure. This one is a basis for power lines overhead."
|
||||
icon_state = "power"
|
||||
|
||||
/obj/structure/utility_pole/power/central
|
||||
icon_state = "central"
|
||||
|
||||
/obj/effect/overlay/overhead_line
|
||||
name = "overhead utility line"
|
||||
icon = 'icons/obj/structure/urban/poles.dmi'
|
||||
icon_state = "line"
|
||||
layer = 9.1
|
||||
|
||||
/obj/effect/overlay/overhead_line/end
|
||||
icon_state = "line_end"
|
||||
|
||||
@@ -0,0 +1,718 @@
|
||||
/obj/structure/automobile
|
||||
name = "generic automotive"
|
||||
desc = "A newer model of automotive."
|
||||
icon = 'icons/obj/structure/urban/cars.dmi'
|
||||
icon_state = "car"
|
||||
anchored = TRUE
|
||||
density = TRUE
|
||||
layer = 7
|
||||
|
||||
/obj/structure/automobile/random/Initialize(mapload)
|
||||
. = ..()
|
||||
cut_overlays()
|
||||
name = "[pick("deluxe Shibata Sport automotive","beat-up Poplar Auto Group automotive","weathered Shibata Sport automotive","beat-up Langenfeld automotive","deluxe Langenfeld automotive","weathered Langenfeld automotive")]"
|
||||
desc = "A [name] vehicle of working condition."
|
||||
icon_state = "car[rand(1, 10)]"
|
||||
return
|
||||
|
||||
/obj/structure/automobile/police
|
||||
name = "police cruiser"
|
||||
desc = "A police vehicle with all the bells and whistles you'd expect from a decently-funded agency."
|
||||
icon_state = "copcar"
|
||||
|
||||
/obj/structure/automobile_filler
|
||||
name = "vehicle"
|
||||
desc = "A piece of a larger vehicle."
|
||||
icon = 'icons/obj/structure/urban/cars.dmi'
|
||||
icon_state = "blank"
|
||||
anchored = TRUE
|
||||
density = TRUE
|
||||
|
||||
/obj/structure/road_sign
|
||||
name = "stop sign"
|
||||
desc = "A stop sign to direct traffic. Sometimes a demand."
|
||||
icon = 'icons/obj/structure/urban/road_signs.dmi'
|
||||
icon_state = "stop"
|
||||
layer = 9
|
||||
anchored = TRUE
|
||||
|
||||
/obj/structure/road_sign/yield
|
||||
name = "yield sign"
|
||||
desc = "A yield sign which tells you to slow down, rather politely. Let's hope you listen."
|
||||
icon_state = "yield"
|
||||
|
||||
/obj/structure/road_sign/pedestrian
|
||||
name = "pedestrian passing sign"
|
||||
desc = "A yellow sign which alerts you of bonus points ahead."
|
||||
icon_state = "pedestrian"
|
||||
|
||||
/obj/structure/road_sign/turn
|
||||
name = "turn ahead sign"
|
||||
desc = "A sign which warns of an approaching turn to the right. Is it the right choice?"
|
||||
icon_state = "right"
|
||||
|
||||
/obj/structure/road_sign/turn/left
|
||||
desc = "A sign which warns of an approaching turn to the left. Is anything left?"
|
||||
icon_state = "left"
|
||||
|
||||
/obj/structure/road_sign/street
|
||||
name = "street sign"
|
||||
desc = "A green, wide street sign with words telling you that you are indeed on a street."
|
||||
icon_state = "street_big"
|
||||
|
||||
var/street_name = null
|
||||
|
||||
/obj/structure/road_sign/street/Initialize(mapload)
|
||||
. = ..()
|
||||
name = "[street_name]"
|
||||
desc = "This sign indicates this crossing street is called [street_name]."
|
||||
|
||||
/obj/structure/stairs/urban
|
||||
icon = 'icons/obj/structure/urban/ledges.dmi'
|
||||
icon_state = "stairs-single"
|
||||
layer = 2.01
|
||||
opacity = 1
|
||||
|
||||
/obj/structure/stairs/urban/road_ramp
|
||||
name = "inclined asphalt ramp"
|
||||
desc = "A solid asphalt ramp to allow your vehicle to traverse inclines with ease."
|
||||
icon_state = "road-ramp-center"
|
||||
layer = 2.02
|
||||
|
||||
/obj/structure/stairs/urban/road_ramp/right
|
||||
icon_state = "road-ramp-right"
|
||||
|
||||
/obj/structure/stairs/urban/road_ramp/left
|
||||
icon_state = "road-ramp-left"
|
||||
|
||||
/obj/structure/closet/crate/bin/urban
|
||||
name = "tall garbage can"
|
||||
desc = "Garbage day!"
|
||||
icon = 'icons/obj/structure/urban/infrastructure.dmi'
|
||||
icon_state = "bin"
|
||||
|
||||
/obj/structure/closet/crate/bin/urban/compact
|
||||
name = "discrete garbage can"
|
||||
icon_state = "city-bin"
|
||||
anchored = TRUE
|
||||
|
||||
/obj/structure/closet/crate/bin/urban/dumpster
|
||||
name = "extra-wide hefty dumpster"
|
||||
desc = "This trunk carries a lot of junk."
|
||||
icon_state = "dumpster"
|
||||
anchored = TRUE
|
||||
|
||||
/obj/structure/structural_support
|
||||
name = "support structure"
|
||||
desc = "A big, sturdy support beam to hold up a huge mass above your head."
|
||||
icon = 'icons/obj/structure/industrial/infrastructure.dmi'
|
||||
icon_state = "truss"
|
||||
density = TRUE
|
||||
anchored = TRUE
|
||||
|
||||
/obj/structure/structural_support/side
|
||||
icon_state = "truss_side"
|
||||
|
||||
/obj/structure/urban/pylon
|
||||
name = "vehicle charging pylon"
|
||||
desc = "A vehicle-grade charging pylon attached to a nearby port."
|
||||
icon = 'icons/obj/structure/urban/infrastructure.dmi'
|
||||
icon_state = "chargepylon"
|
||||
light_color = LIGHT_COLOR_CYAN
|
||||
light_range = 1.2
|
||||
density = TRUE
|
||||
anchored = TRUE
|
||||
|
||||
/obj/structure/manhole
|
||||
name = "sewer access manhole"
|
||||
desc = "Probably a bad idea to open this."
|
||||
icon = 'icons/obj/structure/urban/infrastructure.dmi'
|
||||
icon_state = "manhole_closed"
|
||||
anchored = TRUE
|
||||
var/open = 0
|
||||
|
||||
/obj/structure/manhole/attackby(obj/item/W as obj, mob/user as mob)
|
||||
if(W.iscrowbar())
|
||||
playsound(src.loc, 'sound/effects/stonedoor_openclose.ogg', 50, 1)
|
||||
to_chat(user, "You forcibly relocate the manhole, hopefully in the right way.")
|
||||
if(!open)
|
||||
visible_message("<span class='warning'>A horrid smell erupts from the abyss of the manhole, not one any soul should inhale. Some mistakes were made.</span>")
|
||||
icon_state = "manhole_open"
|
||||
desc = "This looks pretty dangerous, stinks horribly, and doesn't have a ladder inside. Watch out!"
|
||||
open = 1
|
||||
var/turf/turf = loc
|
||||
turf.is_hole = TRUE
|
||||
return
|
||||
if(open)
|
||||
visible_message("<span class='warning'>The manhole clunks and seals back into place, safely burying our problems underground for someone else later.</span>")
|
||||
icon_state = "manhole_closed"
|
||||
desc = "It looks recently opened and sloppily closed."
|
||||
open = 0
|
||||
var/turf/turf = loc
|
||||
turf.is_hole = FALSE
|
||||
return
|
||||
|
||||
/obj/structure/hydrant
|
||||
name = "water line hydrant"
|
||||
desc = "An emergency water hydrant for emergency watering of things."
|
||||
icon = 'icons/obj/structure/urban/infrastructure.dmi'
|
||||
icon_state = "hydrant"
|
||||
layer = ABOVE_ALL_MOB_LAYER
|
||||
anchored = TRUE
|
||||
|
||||
/obj/structure/parking_meter
|
||||
name = "parking meter"
|
||||
desc = "A parking meter that seems to be turned off."
|
||||
icon = 'icons/obj/structure/urban/infrastructure.dmi'
|
||||
icon_state = "parking"
|
||||
layer = ABOVE_ALL_MOB_LAYER
|
||||
anchored = TRUE
|
||||
|
||||
/obj/structure/television
|
||||
name = "wide-screen television"
|
||||
desc = "A fancy wide-screen television with a wide selection of channels."
|
||||
icon = 'icons/obj/structure/urban/infrastructure.dmi'
|
||||
icon_state = "television"
|
||||
anchored = TRUE
|
||||
|
||||
/obj/structure/dressing_divider
|
||||
name = "wardrobe dressing divider"
|
||||
desc = "A divider for an environment where you're probably swapping clothes, made with your privacy in mind."
|
||||
icon = 'icons/obj/structure/urban/tailoring.dmi'
|
||||
icon_state = "divider1"
|
||||
layer = ABOVE_ALL_MOB_LAYER
|
||||
anchored = TRUE
|
||||
|
||||
/obj/structure/neon_sign
|
||||
name = "large neon sign"
|
||||
desc = "A bright neon sign, an advertisement of some dystopian sort."
|
||||
icon = 'icons/obj/structure/urban/konyang_neon.dmi'
|
||||
icon_state = "sign1"
|
||||
anchored = TRUE
|
||||
layer = 7
|
||||
|
||||
/obj/structure/shipping_container
|
||||
name = "freight container"
|
||||
desc = "A hulking industrial shipping container, bound for who knows where."
|
||||
icon = 'icons/obj/structure/industrial/shipping_containers.dmi'
|
||||
icon_state = "blue1"
|
||||
anchored = TRUE
|
||||
density = TRUE
|
||||
layer = 7
|
||||
|
||||
/obj/effect/overlay/container_logo
|
||||
name = "Hephaestus Industries emblem"
|
||||
icon = 'icons/obj/structure/industrial/shipping_containers.dmi'
|
||||
icon_state = "heph1"
|
||||
layer = 7.01
|
||||
|
||||
/obj/effect/overlay/container_logo/einstein
|
||||
name = "Einstein Engines emblem"
|
||||
icon_state = "ee1"
|
||||
|
||||
/obj/effect/overlay/container_logo/zenghu
|
||||
name = "Zeng-Hu Pharmaceuticals emblem"
|
||||
icon_state = "zeng1"
|
||||
|
||||
//Special railings for urban environments. These have almost no reason to be seen anywhere else so they exclude all of the complexities of normal railings
|
||||
/obj/structure/rod_railing
|
||||
name = "rod railing"
|
||||
desc = "A flimsy rod railing bound together by screws and prayers."
|
||||
icon = 'icons/obj/structure/urban/blockers.dmi'
|
||||
icon_state = "rod_railing"
|
||||
density = TRUE
|
||||
throwpass = TRUE
|
||||
climbable = TRUE
|
||||
layer = 4.01
|
||||
anchored = TRUE
|
||||
|
||||
/obj/structure/rod_railing/CanPass(atom/movable/mover, turf/target, height=0, air_group=0)
|
||||
if(istype(mover,/obj/item/projectile))
|
||||
return TRUE
|
||||
if(!istype(mover) || mover.checkpass(PASSRAILING))
|
||||
return TRUE
|
||||
if(mover.throwing)
|
||||
return TRUE
|
||||
if(get_dir(loc, target) == dir)
|
||||
return !density
|
||||
return TRUE
|
||||
|
||||
/obj/structure/rod_railing/CheckExit(var/atom/movable/O, var/turf/target)
|
||||
if(istype(O) && CanPass(O, target))
|
||||
return TRUE
|
||||
if(get_dir(O.loc, target) == dir)
|
||||
if(!density)
|
||||
return TRUE
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
/obj/structure/dam
|
||||
name = "concrete dam"
|
||||
desc = "A hulking mass of concrete meant to hold in a large reservoir of water from passing downwards."
|
||||
icon = 'icons/obj/structure/urban/blockers.dmi'
|
||||
icon_state = "dam1"
|
||||
density = TRUE
|
||||
throwpass = TRUE
|
||||
anchored = TRUE
|
||||
layer = 4.01
|
||||
|
||||
/obj/structure/road_barrier
|
||||
name = "roadway barrier"
|
||||
desc = "A set of expendable plates meant to deflect the impact of vehicles, lest they intend to go into more dangerous areas off the road."
|
||||
icon = 'icons/obj/structure/urban/road_edges.dmi'
|
||||
icon_state = "guard"
|
||||
density = TRUE
|
||||
throwpass = TRUE
|
||||
climbable = TRUE
|
||||
anchored = TRUE
|
||||
layer = 4.01
|
||||
|
||||
//smoothing these things would suck so here you go. i have no idea why you would want these buildable. map them manually
|
||||
/obj/structure/road_barrier/bot_in
|
||||
icon_state = "guard_bot_in"
|
||||
|
||||
/obj/structure/road_barrier/top_in
|
||||
icon_state = "guard_top_in"
|
||||
|
||||
/obj/structure/road_barrier/bot_end
|
||||
icon_state = "guard_bot_end"
|
||||
|
||||
/obj/structure/road_barrier/top_end
|
||||
icon_state = "guard_top_end"
|
||||
|
||||
/obj/structure/road_barrier/CanPass(atom/movable/mover, turf/target, height=0, air_group=0)
|
||||
if(istype(mover,/obj/item/projectile))
|
||||
return TRUE
|
||||
if(!istype(mover) || mover.checkpass(PASSRAILING))
|
||||
return TRUE
|
||||
if(mover.throwing)
|
||||
return TRUE
|
||||
if(get_dir(loc, target) == dir)
|
||||
return !density
|
||||
return TRUE
|
||||
|
||||
/obj/structure/road_barrier/CheckExit(var/atom/movable/O, var/turf/target)
|
||||
if(istype(O) && CanPass(O, target))
|
||||
return TRUE
|
||||
if(get_dir(O.loc, target) == dir)
|
||||
if(!density)
|
||||
return TRUE
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
/obj/structure/chainlink_fence
|
||||
name = "chainlink industrial fencing"
|
||||
desc = "A tall, imposing metal fence. Not to be confused with the slightly more popular Chainlink of recent years."
|
||||
icon = 'icons/obj/structure/industrial/fencing_tall.dmi'
|
||||
density = TRUE
|
||||
icon_state = "fence"
|
||||
color = null
|
||||
anchored = TRUE
|
||||
can_be_unanchored = FALSE
|
||||
layer = ABOVE_ALL_MOB_LAYER
|
||||
|
||||
/obj/structure/chainlink_fence/CanPass(atom/movable/mover, turf/target, height=0, air_group=0)
|
||||
if(istype(mover,/obj/item/projectile))
|
||||
return TRUE
|
||||
if(!istype(mover) || mover.checkpass(PASSRAILING))
|
||||
return TRUE
|
||||
if(mover.throwing)
|
||||
return TRUE
|
||||
if(get_dir(loc, target) == dir)
|
||||
return !density
|
||||
return TRUE
|
||||
|
||||
/obj/structure/chainlink_fence/CheckExit(var/atom/movable/O, var/turf/target)
|
||||
if(istype(O) && CanPass(O, target))
|
||||
return TRUE
|
||||
if(get_dir(O.loc, target) == dir)
|
||||
if(!density)
|
||||
return TRUE
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
/obj/structure/rope_railing
|
||||
name = "wooden rope"
|
||||
desc = "A simple rope tied off to protect against careless trespass."
|
||||
icon = 'icons/obj/structure/urban/wood.dmi'
|
||||
icon_state = "rope-railing"
|
||||
density = TRUE
|
||||
color = null
|
||||
anchored = TRUE
|
||||
can_be_unanchored = FALSE
|
||||
layer = 3.01
|
||||
|
||||
/obj/structure/rope_railing/CanPass(atom/movable/mover, turf/target, height=0, air_group=0)
|
||||
if(istype(mover,/obj/item/projectile))
|
||||
return TRUE
|
||||
if(!istype(mover) || mover.checkpass(PASSRAILING))
|
||||
return TRUE
|
||||
if(mover.throwing)
|
||||
return TRUE
|
||||
if(get_dir(loc, target) == dir)
|
||||
return !density
|
||||
return TRUE
|
||||
|
||||
/obj/structure/rope_railing/CheckExit(var/atom/movable/O, var/turf/target)
|
||||
if(istype(O) && CanPass(O, target))
|
||||
return TRUE
|
||||
if(get_dir(O.loc, target) == dir)
|
||||
if(!density)
|
||||
return TRUE
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
/obj/structure/rope_post
|
||||
name = "wooden rope post"
|
||||
desc = "A simple pole driven into something, for tying ropes onto."
|
||||
icon = 'icons/obj/structure/urban/wood.dmi'
|
||||
icon_state = "post"
|
||||
density = FALSE
|
||||
anchored = TRUE
|
||||
layer = 3
|
||||
|
||||
/obj/structure/statue
|
||||
name = "statue of Neopolymus"
|
||||
desc = "A statue of Neopolymus, an IPC brought to fame in Tau Ceti as the first to be held to trial for the murder of a Human. A heated debate continues today as to the validity and bias of the court as the positronic ultimately met a memory wipe, followed by deconstruction."
|
||||
icon = 'icons/obj/structure/urban/statues.dmi'
|
||||
icon_state = "neopolymus"
|
||||
density = TRUE
|
||||
anchored = TRUE
|
||||
layer = ABOVE_ALL_MOB_LAYER
|
||||
|
||||
/obj/structure/statue/buddha
|
||||
name = "buddha statue"
|
||||
desc = "A bronze statue of the Amitabha Buddha, the Buddha of Limitless Light."
|
||||
icon_state = "buddha"
|
||||
|
||||
/obj/structure/sign/urban
|
||||
name = "exit sign"
|
||||
desc = "A sign indicating where you should probably go in a hurry."
|
||||
icon = 'icons/obj/structure/urban/infrastructure.dmi'
|
||||
icon_state = "exit"
|
||||
layer = ABOVE_ALL_MOB_LAYER
|
||||
|
||||
/obj/structure/sign/urban/drive_thru
|
||||
name = "drive thru sign"
|
||||
desc = "A drive-thru sign."
|
||||
icon = 'icons/obj/structure/urban/restaurant.dmi'
|
||||
icon_state = "drivethru"
|
||||
density = 1
|
||||
|
||||
/obj/structure/sign/urban/restroom
|
||||
name = "restroom sign"
|
||||
desc = "A sign indicating where you can find a restroom."
|
||||
icon_state = "restroom"
|
||||
|
||||
/obj/structure/sign/urban/staff
|
||||
name = "staff only sign"
|
||||
desc = "A sign that warns of this entry being barred to the public."
|
||||
icon_state = "staff"
|
||||
|
||||
/obj/structure/restaurant_menu
|
||||
name = "restaurant menu"
|
||||
desc = "A sign displaying a variety of delectable meals."
|
||||
icon = 'icons/obj/structure/urban/restaurant.dmi'
|
||||
icon_state = "menu_off"
|
||||
density = 1
|
||||
layer = ABOVE_ALL_MOB_LAYER
|
||||
light_color = LIGHT_COLOR_CYAN
|
||||
light_range = 1.8
|
||||
var/menu_text = ""
|
||||
|
||||
/obj/structure/restaurant_menu/attack_hand(mob/user)
|
||||
var/new_text = sanitize(input(user, "Enter new text for the hologram to display.", "Hologram Display", html2pencode(menu_text, TRUE)) as null|message)
|
||||
if(!isnull(new_text))
|
||||
menu_text = pencode2html(new_text)
|
||||
update_icon()
|
||||
|
||||
/obj/structure/restaurant_menu/attackby(obj/item/I, mob/user)
|
||||
if(istype(I, /obj/item/paper))
|
||||
var/obj/item/paper/P = I
|
||||
to_chat(user, SPAN_NOTICE("You scan \the [I.name] into \the [name]."))
|
||||
menu_text = P.info
|
||||
menu_text = replacetext(menu_text, "color=black>", "color=white>")
|
||||
icon_state = "menu_active"
|
||||
update_icon()
|
||||
return TRUE
|
||||
return ..()
|
||||
|
||||
/obj/structure/sign/urban/konyang
|
||||
name = "convenience store sign"
|
||||
desc = "A sign labeling the structure as a 24-7 MINI MART. Convenient!"
|
||||
icon = 'icons/obj/structure/urban/konyang_signs.dmi'
|
||||
icon_state = "shop_sign"
|
||||
|
||||
/obj/structure/sign/urban/konyang/police
|
||||
name = "police station sign"
|
||||
desc = "A sign labeling the structure as a Konyang police department building."
|
||||
icon_state = "police_sign"
|
||||
|
||||
/obj/structure/sign/urban/konyang/robotics
|
||||
name = "robotics clinic sign"
|
||||
desc = "A sign labeling the structure as a robotics and clinical support building."
|
||||
icon_state = "krc_sign"
|
||||
|
||||
/obj/structure/sign/urban/konyang/bar
|
||||
name = "club and bar sign"
|
||||
desc = "A sign labeling the structure as the Resting Tiger nightclub and bar."
|
||||
icon_state = "bar_sign"
|
||||
|
||||
/obj/structure/sign/urban/konyang/arcade
|
||||
name = "arcade sign"
|
||||
desc = "A sign labeling the structure as a very cool arcade."
|
||||
icon_state = "arcade_sign"
|
||||
|
||||
/obj/structure/sign/urban/konyang/pharmacy
|
||||
name = "pharmacy sign"
|
||||
desc = "A sign labeling the structure as a Konyang health and supply pharmacy."
|
||||
icon_state = "pharmacy_sign"
|
||||
|
||||
/obj/structure/window/urban
|
||||
icon = 'icons/obj/structure/urban/windows_tall.dmi'
|
||||
icon_state = "wood"
|
||||
basestate = "wood"
|
||||
maxhealth = 60
|
||||
alpha = 255
|
||||
|
||||
/obj/structure/window/urban/framed
|
||||
icon_state = "wood_framed"
|
||||
basestate = "wood_framed"
|
||||
|
||||
/obj/structure/window/urban/external
|
||||
icon = 'icons/obj/structure/urban/building_external.dmi'
|
||||
icon_state = "window_half"
|
||||
basestate = "window_half"
|
||||
|
||||
/obj/structure/window/urban/full
|
||||
icon = 'icons/obj/structure/urban/building_external.dmi'
|
||||
icon_state = "window_full"
|
||||
basestate = "window_full"
|
||||
|
||||
/obj/structure/window_frame/urban
|
||||
name = "window frame"
|
||||
desc = "A window frame."
|
||||
icon = 'icons/obj/structure/urban/building_external.dmi'
|
||||
icon_state = "frame_half"
|
||||
//basestate = "frame_half"
|
||||
color = COLOR_GUNMETAL
|
||||
smooth = null
|
||||
|
||||
/obj/structure/window_frame/urban/full
|
||||
name = "window frame"
|
||||
desc = "A window frame."
|
||||
icon = 'icons/obj/structure/urban/building_external.dmi'
|
||||
icon_state = "frame_full"
|
||||
//basestate = "frame_full"
|
||||
color = COLOR_WHITE
|
||||
|
||||
/obj/structure/window_frame/urban/red
|
||||
color = COLOR_PALE_RED_GRAY
|
||||
|
||||
/obj/structure/window_frame/urban/blue
|
||||
color = COLOR_COMMAND_BLUE
|
||||
|
||||
/obj/structure/blocker/exterior_wall//for planting against urban structure sprites to resemble buildings better. Should be manually mapped over wall types.
|
||||
name = "tall building wall"
|
||||
desc = "The exterior of a large building."
|
||||
color = COLOR_GUNMETAL
|
||||
icon = 'icons/obj/structure/urban/building_external.dmi'
|
||||
icon_state = "wall_half"
|
||||
//basestate = "wall_half"
|
||||
health = 200
|
||||
maxhealth = 200
|
||||
layer = ABOVE_ALL_MOB_LAYER
|
||||
|
||||
/obj/structure/blocker/exterior_wall/red
|
||||
color = COLOR_PALE_RED_GRAY
|
||||
|
||||
/obj/structure/blocker/exterior_wall/blue
|
||||
color = COLOR_COMMAND_BLUE
|
||||
|
||||
/obj/structure/cash_register
|
||||
name = "cash register machine"
|
||||
desc = "A retail nightmare object."
|
||||
desc_info = "Drag this onto yourself to open the cash compartment."
|
||||
icon = 'icons/obj/structure/urban/infrastructure.dmi'
|
||||
icon_state = "cashier"
|
||||
layer = 2.99
|
||||
density = 0
|
||||
anchored = 0
|
||||
var/storage_type = /obj/item/storage/toolbox/cash_register_storage
|
||||
var/obj/item/storage/storage_compartment
|
||||
|
||||
/obj/structure/cash_register/Initialize(mapload)
|
||||
. = ..()
|
||||
if(storage_type)
|
||||
storage_compartment = new storage_type(src)
|
||||
|
||||
/obj/item/storage/toolbox/cash_register_storage
|
||||
name = "cash compartment"
|
||||
|
||||
/obj/structure/cash_register/MouseDrop(atom/over)
|
||||
if(usr == over && ishuman(over))
|
||||
var/mob/living/carbon/human/H = over
|
||||
storage_compartment.open(H)
|
||||
|
||||
/**
|
||||
* # Urban doors
|
||||
*
|
||||
* Your average house door, gets locked and unlocked by a [/obj/item/key/door_key] and can optionally support IDs too
|
||||
*
|
||||
* Once unlocked with a key, it basically becomes a free access door, until locked back with a key
|
||||
*
|
||||
* Use `req_one_access` and `req_access`, like normal doors, to control which keys can unlock the door
|
||||
* Set `support_ids` to TRUE to also use the IDs logic
|
||||
*
|
||||
* If `support_ids` is TRUE and a door is opened using an ID, it will not become a public door
|
||||
*/
|
||||
/obj/machinery/door/urban
|
||||
name = "wooden panel door"
|
||||
desc = "A delicate wooden door with a pristine bronze knob."
|
||||
icon = 'icons/obj/structure/urban/unique_simple_doors.dmi'
|
||||
icon_state = "wood_closed"
|
||||
pixel_x = -16
|
||||
pixel_y = -16
|
||||
|
||||
autoclose = FALSE
|
||||
|
||||
var/base_icon = "wood"
|
||||
|
||||
///Boolean, if the door also supports normal ID openings (read the ID access), or it's key only
|
||||
var/support_ids = FALSE
|
||||
|
||||
///Stores the previous list of req_one_access, that gets readded when the door is locked with the key
|
||||
var/list/previous_req_one_access = list()
|
||||
|
||||
///Stores the previous list of req_access, that gets readded when the door is locked with the key
|
||||
var/list/previous_req_access = list()
|
||||
|
||||
/obj/machinery/door/urban/update_icon()
|
||||
if(density)
|
||||
icon_state = "[base_icon]_closed"
|
||||
else
|
||||
icon_state = "[base_icon]_open"
|
||||
return
|
||||
|
||||
/obj/machinery/door/urban/do_animate(animation)
|
||||
switch(animation)
|
||||
if("opening")
|
||||
|
||||
//Don't play the animation if it's already open
|
||||
if(!src.density)
|
||||
return
|
||||
|
||||
if(p_open)
|
||||
flick("[base_icon]c0", src)
|
||||
else
|
||||
flick("[base_icon]c0", src)
|
||||
|
||||
if("closing")
|
||||
|
||||
//Don't play the animation if it's already closed
|
||||
if(src.density)
|
||||
return
|
||||
|
||||
if(p_open)
|
||||
flick("[base_icon]c1", src)
|
||||
else
|
||||
flick("[base_icon]c1", src)
|
||||
return
|
||||
|
||||
/obj/machinery/door/urban/attackby(obj/item/I, mob/user)
|
||||
|
||||
if(istype(I, /obj/item/key/door_key))
|
||||
|
||||
if(check_access(I))
|
||||
if(src.density && !(length(previous_req_one_access) || length(previous_req_access)))
|
||||
|
||||
//Only say that it's unlocked if there actually was an access list that did the locking
|
||||
if(length(src.req_one_access) || length(src.req_access))
|
||||
balloon_alert_to_viewers("*unlocks*")
|
||||
to_chat(user, SPAN_NOTICE("You unlock \the [src]."))
|
||||
|
||||
open()
|
||||
|
||||
//Save the list of accesses and empty them up
|
||||
if(length(src.req_one_access))
|
||||
previous_req_one_access = src.req_one_access.Copy()
|
||||
src.req_one_access = list()
|
||||
|
||||
if(length(src.req_access))
|
||||
previous_req_access = src.req_access.Copy()
|
||||
src.req_access = list()
|
||||
|
||||
else
|
||||
|
||||
//Only say that it's locked if there actually is an access list that does the locking
|
||||
if(length(previous_req_one_access) || length(previous_req_access))
|
||||
balloon_alert_to_viewers("*locks*")
|
||||
to_chat(user, SPAN_NOTICE("You lock \the [src]."))
|
||||
|
||||
close()
|
||||
|
||||
//Readd the list of accesses, and empty up the previous access lists
|
||||
if(length(previous_req_one_access))
|
||||
src.req_one_access = previous_req_one_access.Copy()
|
||||
previous_req_one_access = list()
|
||||
|
||||
if(length(previous_req_access))
|
||||
src.req_access = previous_req_access.Copy()
|
||||
previous_req_access = list()
|
||||
|
||||
else
|
||||
balloon_alert_to_viewers("*rattles*")
|
||||
|
||||
//Check with our parent, in case it's not a key
|
||||
else
|
||||
|
||||
. = ..()
|
||||
|
||||
/obj/machinery/door/urban/allowed(mob/M)
|
||||
var/parent_allowed = ..()
|
||||
|
||||
//If we support IDs, or we are a public door, return the result of the parent, otherwise we're locked
|
||||
if(support_ids || !(length(src.req_one_access) || length(src.req_access)))
|
||||
return parent_allowed
|
||||
else
|
||||
return FALSE //Keys only
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* # Door keys
|
||||
*
|
||||
* A key that opens a door, you probably use this everyday
|
||||
*
|
||||
* Locks and unlocks doors of type [/obj/machinery/door/urban]
|
||||
*
|
||||
* Set in `access_list` a list of IDs that the key has, which in turn determine which doors it can open, based on
|
||||
* `req_one_access` and `req_access` logic
|
||||
*/
|
||||
/obj/item/key/door_key
|
||||
name = "Door key"
|
||||
desc = "A key that unlocks a door"
|
||||
|
||||
///A list of IDs that the key can lock/unlock
|
||||
var/list/access_list = list()
|
||||
|
||||
/**
|
||||
* Initializes a door_key
|
||||
*
|
||||
* * accesses - A list with accesses that the key has, or null if defined in either the map, public access door or other means
|
||||
*/
|
||||
/obj/item/key/door_key/Initialize(var/list/accesses = null)
|
||||
SHOULD_CALL_PARENT(TRUE)
|
||||
|
||||
. = ..()
|
||||
|
||||
if(accesses)
|
||||
if(islist(access_list))
|
||||
src.access_list = accesses.Copy()
|
||||
|
||||
else
|
||||
crash_with("Someone is trying to initialize a door_key without a list or null!")
|
||||
|
||||
|
||||
/obj/item/key/door_key/GetAccess()
|
||||
return access_list
|
||||
Reference in New Issue
Block a user