FestiveMap 2021

This commit is contained in:
keronshb
2021-11-20 12:04:35 -05:00
parent 4ec0de352c
commit af83fb9611
53 changed files with 125728 additions and 77 deletions

1
_maps/festivestation.dm Normal file
View File

@@ -0,0 +1 @@
#define FORCE_MAP "_maps/FestiveStation.json"

11
_maps/festivestation.json Normal file
View File

@@ -0,0 +1,11 @@
{
"map_name": "FestiveStation",
"map_path": "map_files/FestiveBall",
"map_file": "FestiveStation.dmm",
"shuttles": {
"cargo": "cargo_box",
"ferry": "ferry_fancy",
"whiteship": "whiteship_box",
"emergency": "emergency_box"
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,10 @@
// This will let me avoid having to edit all of these variables in every instance, while also avoiding var-editing.
/obj/machinery/button/door/dorms
name = "Dorm 1 Lock"
normaldoorcontrol = 1
id = "dorm01"
specialfunctions = 4
/obj/machinery/door/airlock/wood/dorms
name = "Dorm 1"
id_tag = "dorm01"

View File

@@ -36662,31 +36662,31 @@
/area/service/library)
"bxG" = (
/turf/closed/wall,
/area/service/library/lounge)
/area/commons/lounge)
"bxH" = (
/obj/structure/table,
/obj/item/storage/crayons,
/turf/open/floor/wood,
/area/service/library/lounge)
/area/commons/lounge)
"bxI" = (
/obj/machinery/vending/games,
/turf/open/floor/wood,
/area/service/library/lounge)
/area/commons/lounge)
"bxJ" = (
/obj/machinery/photocopier,
/turf/open/floor/wood,
/area/service/library/lounge)
/area/commons/lounge)
"bxK" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3,
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer1,
/turf/open/floor/carpet,
/area/service/library/lounge)
/area/commons/lounge)
"bxL" = (
/obj/structure/cable{
icon_state = "1-2"
},
/turf/open/floor/carpet,
/area/service/library/lounge)
/area/commons/lounge)
"bxM" = (
/obj/structure/grille,
/turf/closed/wall/r_wall,
@@ -36902,7 +36902,7 @@
/area/service/library)
"byQ" = (
/turf/open/floor/wood,
/area/service/library/lounge)
/area/commons/lounge)
"byR" = (
/obj/effect/turf_decal/tile/neutral{
dir = 4
@@ -36920,14 +36920,14 @@
dir = 4
},
/turf/open/floor/wood,
/area/service/library/lounge)
/area/commons/lounge)
"byT" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3,
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer1{
dir = 9
},
/turf/open/floor/carpet,
/area/service/library/lounge)
/area/commons/lounge)
"byU" = (
/obj/structure/chair{
dir = 4
@@ -37071,18 +37071,18 @@
dir = 4
},
/turf/open/floor/wood,
/area/service/library/lounge)
/area/commons/lounge)
"bzP" = (
/obj/structure/table/wood,
/turf/open/floor/wood,
/area/service/library/lounge)
/area/commons/lounge)
"bzQ" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3,
/obj/structure/chair/office/dark{
dir = 8
},
/turf/open/floor/carpet,
/area/service/library/lounge)
/area/commons/lounge)
"bzR" = (
/obj/structure/cable{
icon_state = "1-2"
@@ -37091,7 +37091,7 @@
dir = 4
},
/turf/open/floor/carpet,
/area/service/library/lounge)
/area/commons/lounge)
"bzT" = (
/obj/effect/turf_decal/tile/neutral{
dir = 8
@@ -37334,7 +37334,7 @@
dir = 4
},
/turf/open/floor/wood,
/area/service/library/lounge)
/area/commons/lounge)
"bAP" = (
/obj/structure/table/wood,
/obj/item/paper_bin{
@@ -37342,7 +37342,7 @@
pixel_y = 9
},
/turf/open/floor/wood,
/area/service/library/lounge)
/area/commons/lounge)
"bAQ" = (
/obj/structure/cable{
icon_state = "1-2"
@@ -37617,13 +37617,13 @@
dir = 4
},
/turf/open/floor/wood,
/area/service/library/lounge)
/area/commons/lounge)
"bBT" = (
/obj/structure/chair/office/dark{
dir = 8
},
/turf/open/floor/carpet,
/area/service/library/lounge)
/area/commons/lounge)
"bBU" = (
/obj/structure/table,
/obj/machinery/light/small{
@@ -37935,22 +37935,22 @@
pixel_y = -24
},
/turf/open/floor/wood,
/area/service/library/lounge)
/area/commons/lounge)
"bCL" = (
/obj/machinery/camera/autoname{
dir = 1
},
/turf/open/floor/wood,
/area/service/library/lounge)
/area/commons/lounge)
"bCM" = (
/turf/open/floor/carpet,
/area/service/library/lounge)
/area/commons/lounge)
"bCN" = (
/obj/structure/cable{
icon_state = "1-4"
},
/turf/open/floor/carpet,
/area/service/library/lounge)
/area/commons/lounge)
"bCO" = (
/obj/machinery/door/airlock/maintenance{
name = "Library Maintenance";
@@ -38403,7 +38403,7 @@
dir = 4
},
/turf/open/floor/wood,
/area/service/library/lounge)
/area/commons/lounge)
"bEb" = (
/obj/effect/turf_decal/tile/neutral{
dir = 1
@@ -39760,7 +39760,7 @@
icon_state = "1-2"
},
/obj/machinery/power/apc{
areastring = "/area/service/library/lounge";
areastring = "/area/commons/lounge";
dir = 4;
name = "Library Lounge APC";
pixel_x = 24
@@ -39769,7 +39769,7 @@
icon_state = "0-2"
},
/turf/open/floor/carpet,
/area/service/library/lounge)
/area/commons/lounge)
"bHp" = (
/obj/structure/cable{
icon_state = "4-8"
@@ -45616,7 +45616,7 @@
dir = 1
},
/turf/open/floor/carpet,
/area/service/library/lounge)
/area/commons/lounge)
"bWB" = (
/obj/machinery/requests_console{
department = "AI";
@@ -60035,7 +60035,7 @@
name = "library camera"
},
/turf/open/floor/carpet,
/area/service/library/lounge)
/area/commons/lounge)
"cNb" = (
/obj/machinery/light/small{
dir = 4;

View File

@@ -45848,7 +45848,7 @@
/obj/structure/window/reinforced/fulltile,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/open/floor/plating,
/area/service/library/lounge)
/area/commons/lounge)
"cdW" = (
/obj/structure/reflector/box/anchored,
/turf/open/floor/plasteel/dark,
@@ -47328,7 +47328,7 @@
"ckp" = (
/obj/structure/closet/crate/bin,
/turf/open/floor/plasteel/dark,
/area/service/library/lounge)
/area/commons/lounge)
"ckt" = (
/obj/effect/spawner/lootdrop/maintenance,
/turf/open/floor/plating/asteroid/airless,
@@ -47423,7 +47423,7 @@
dir = 8
},
/turf/open/floor/plasteel/dark,
/area/service/library/lounge)
/area/commons/lounge)
"ckH" = (
/turf/open/floor/plasteel/dark,
/area/service/library)
@@ -47432,7 +47432,7 @@
dir = 8
},
/turf/open/floor/plasteel/dark,
/area/service/library/lounge)
/area/commons/lounge)
"ckJ" = (
/obj/structure/sign/warning/securearea,
/turf/closed/wall/r_wall,
@@ -47487,12 +47487,12 @@
},
/obj/machinery/libraryscanner,
/turf/open/floor/plasteel/dark,
/area/service/library/lounge)
/area/commons/lounge)
"ckV" = (
/obj/effect/landmark/barthpot,
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/open/floor/carpet,
/area/service/library/lounge)
/area/commons/lounge)
"ckW" = (
/obj/structure/disposalpipe/segment{
dir = 4
@@ -47503,7 +47503,7 @@
/obj/structure/table/wood,
/obj/machinery/computer/libraryconsole,
/turf/open/floor/plasteel/dark,
/area/service/library/lounge)
/area/commons/lounge)
"clb" = (
/obj/structure/window/reinforced{
dir = 1;
@@ -47556,7 +47556,7 @@
"clm" = (
/obj/machinery/photocopier,
/turf/open/floor/plasteel/dark,
/area/service/library/lounge)
/area/commons/lounge)
"cln" = (
/obj/machinery/newscaster{
pixel_x = -32;
@@ -47564,7 +47564,7 @@
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/open/floor/carpet,
/area/service/library/lounge)
/area/commons/lounge)
"cls" = (
/obj/effect/spawner/lootdrop/maintenance,
/turf/closed/mineral,
@@ -50542,7 +50542,7 @@
/area/maintenance/department/security/brig)
"cwe" = (
/turf/closed/wall/mineral/iron,
/area/service/library/lounge)
/area/commons/lounge)
"cwg" = (
/obj/structure/grille,
/turf/open/floor/plating,
@@ -50617,7 +50617,7 @@
pixel_y = 26
},
/turf/open/floor/plasteel/dark,
/area/service/library/lounge)
/area/commons/lounge)
"cww" = (
/obj/structure/cable{
icon_state = "4-8"
@@ -50711,7 +50711,7 @@
/obj/item/folder/yellow,
/obj/item/pen,
/turf/open/floor/plasteel/dark,
/area/service/library/lounge)
/area/commons/lounge)
"cxb" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/visible,
/obj/effect/turf_decal/tile/purple,
@@ -50794,7 +50794,7 @@
dir = 6
},
/turf/closed/wall,
/area/service/library/lounge)
/area/commons/lounge)
"cxL" = (
/obj/machinery/door/window/eastright{
base_state = "left";
@@ -50828,7 +50828,7 @@
/obj/structure/window/reinforced/fulltile,
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/open/floor/plating,
/area/service/library/lounge)
/area/commons/lounge)
"cxX" = (
/obj/structure/table/wood,
/obj/item/folder/red,
@@ -50864,7 +50864,7 @@
dir = 5
},
/turf/closed/wall,
/area/service/library/lounge)
/area/commons/lounge)
"cyP" = (
/obj/structure/closet/secure_closet/warden,
/obj/item/clothing/mask/gas/sechailer,
@@ -51577,7 +51577,7 @@
/obj/effect/mapping_helpers/airlock/cyclelink_helper,
/obj/machinery/door/firedoor,
/turf/open/floor/plasteel/dark,
/area/service/library/lounge)
/area/commons/lounge)
"cJo" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 5
@@ -52249,7 +52249,7 @@
"dRT" = (
/obj/structure/bookcase/random/reference,
/turf/open/floor/plasteel/dark,
/area/service/library/lounge)
/area/commons/lounge)
"dSp" = (
/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/engine_waste{
dir = 1
@@ -52371,7 +52371,7 @@
"eeG" = (
/obj/machinery/bookbinder,
/turf/open/floor/plasteel/dark,
/area/service/library/lounge)
/area/commons/lounge)
"eeQ" = (
/obj/machinery/door/firedoor,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
@@ -52662,7 +52662,7 @@
},
/obj/machinery/door/firedoor,
/turf/open/floor/plasteel/dark,
/area/service/library/lounge)
/area/commons/lounge)
"eLt" = (
/obj/structure/closet/firecloset,
/obj/effect/turf_decal/tile/neutral{
@@ -53265,7 +53265,7 @@
"fWv" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/open/floor/carpet,
/area/service/library/lounge)
/area/commons/lounge)
"fZq" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 6
@@ -53383,7 +53383,7 @@
dir = 8
},
/turf/open/floor/plasteel/dark,
/area/service/library/lounge)
/area/commons/lounge)
"giI" = (
/obj/machinery/light/small{
dir = 1
@@ -53557,7 +53557,7 @@
"gqi" = (
/obj/structure/bookcase/random/religion,
/turf/open/floor/plasteel/dark,
/area/service/library/lounge)
/area/commons/lounge)
"gtX" = (
/obj/structure/barricade/wooden,
/turf/open/floor/plating,
@@ -53943,7 +53943,7 @@
/area/maintenance/department/science)
"gXv" = (
/turf/open/floor/plasteel/dark,
/area/service/library/lounge)
/area/commons/lounge)
"gXZ" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/machinery/camera{
@@ -53995,7 +53995,7 @@
dir = 8
},
/turf/open/floor/plasteel/dark,
/area/service/library/lounge)
/area/commons/lounge)
"heC" = (
/obj/machinery/power/apc/highcap/five_k{
dir = 8;
@@ -54807,7 +54807,7 @@
dir = 9
},
/turf/closed/wall,
/area/service/library/lounge)
/area/commons/lounge)
"iyP" = (
/obj/structure/disposaloutlet,
/turf/open/floor/plating,
@@ -55080,7 +55080,7 @@
dir = 8
},
/turf/open/floor/plasteel/dark,
/area/service/library/lounge)
/area/commons/lounge)
"iYQ" = (
/obj/structure/cable{
icon_state = "4-8"
@@ -55101,7 +55101,7 @@
dir = 10
},
/turf/closed/wall,
/area/service/library/lounge)
/area/commons/lounge)
"jen" = (
/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
dir = 4
@@ -55386,7 +55386,7 @@
dir = 8
},
/turf/open/floor/plasteel/dark,
/area/service/library/lounge)
/area/commons/lounge)
"jzz" = (
/obj/effect/spawner/structure/window/reinforced,
/obj/structure/sign/warning/vacuum/external,
@@ -55599,7 +55599,7 @@
dir = 1
},
/turf/open/floor/plasteel/dark,
/area/service/library/lounge)
/area/commons/lounge)
"jXA" = (
/obj/structure/table,
/obj/item/stack/ore/iron,
@@ -56081,7 +56081,7 @@
icon_state = "1-2"
},
/turf/open/floor/carpet,
/area/service/library/lounge)
/area/commons/lounge)
"kPi" = (
/obj/structure/table,
/obj/machinery/microwave,
@@ -56169,7 +56169,7 @@
dir = 8
},
/turf/open/floor/plasteel/dark,
/area/service/library/lounge)
/area/commons/lounge)
"kSb" = (
/obj/structure/chair/office/light{
dir = 8
@@ -57232,7 +57232,7 @@
icon_state = "1-2"
},
/turf/open/floor/carpet,
/area/service/library/lounge)
/area/commons/lounge)
"mKk" = (
/obj/structure/cable{
icon_state = "1-8"
@@ -57319,7 +57319,7 @@
dir = 8
},
/turf/open/floor/plasteel/dark,
/area/service/library/lounge)
/area/commons/lounge)
"mXq" = (
/obj/item/taperecorder,
/obj/item/cartridge/lawyer,
@@ -57861,7 +57861,7 @@
dir = 8
},
/turf/open/floor/plasteel/dark,
/area/service/library/lounge)
/area/commons/lounge)
"nOY" = (
/obj/effect/turf_decal/stripes/line{
dir = 4
@@ -58407,7 +58407,7 @@
icon_state = "1-2"
},
/turf/open/floor/carpet,
/area/service/library/lounge)
/area/commons/lounge)
"oIU" = (
/obj/structure/table/wood,
/obj/item/folder/yellow,
@@ -59536,7 +59536,7 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/machinery/door/firedoor,
/turf/open/floor/plasteel/dark,
/area/service/library/lounge)
/area/commons/lounge)
"qBv" = (
/obj/item/clothing/head/ushanka,
/turf/open/floor/plating,
@@ -59684,7 +59684,7 @@
dir = 8
},
/turf/open/floor/carpet,
/area/service/library/lounge)
/area/commons/lounge)
"qOH" = (
/obj/structure/cable{
icon_state = "1-2"
@@ -59880,7 +59880,7 @@
"qYW" = (
/obj/structure/bookcase/random/nonfiction,
/turf/open/floor/plasteel/dark,
/area/service/library/lounge)
/area/commons/lounge)
"rar" = (
/obj/machinery/door/firedoor,
/obj/structure/disposalpipe/segment{
@@ -60004,7 +60004,7 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/machinery/door/firedoor,
/turf/open/floor/plasteel/dark,
/area/service/library/lounge)
/area/commons/lounge)
"roc" = (
/obj/structure/cable,
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
@@ -60284,13 +60284,13 @@
icon_state = "cobweb2"
},
/turf/open/floor/plasteel/dark,
/area/service/library/lounge)
/area/commons/lounge)
"rSE" = (
/obj/machinery/light/small{
dir = 4
},
/turf/open/floor/plasteel/dark,
/area/service/library/lounge)
/area/commons/lounge)
"rSH" = (
/obj/item/trash/can,
/turf/open/floor/wood,
@@ -60422,7 +60422,7 @@
"sgD" = (
/obj/structure/bookcase/random/adult,
/turf/open/floor/plasteel/dark,
/area/service/library/lounge)
/area/commons/lounge)
"shw" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/structure/cable{
@@ -61731,7 +61731,7 @@
dir = 8
},
/turf/open/floor/plasteel/dark,
/area/service/library/lounge)
/area/commons/lounge)
"uzB" = (
/obj/machinery/atmospherics/components/unary/vent_pump/on{
dir = 1
@@ -62173,7 +62173,7 @@
dir = 8
},
/turf/open/floor/plasteel/dark,
/area/service/library/lounge)
/area/commons/lounge)
"vrQ" = (
/obj/machinery/power/terminal{
dir = 8
@@ -62452,7 +62452,7 @@
dir = 8
},
/turf/open/floor/plasteel/dark,
/area/service/library/lounge)
/area/commons/lounge)
"vRi" = (
/obj/structure/disposalpipe/segment,
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
@@ -62906,7 +62906,7 @@
"wDq" = (
/obj/structure/bookcase/random/fiction,
/turf/open/floor/plasteel/dark,
/area/service/library/lounge)
/area/commons/lounge)
"wDZ" = (
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
dir = 1
@@ -63325,7 +63325,7 @@
icon_state = "1-2"
},
/turf/open/floor/carpet,
/area/service/library/lounge)
/area/commons/lounge)
"xje" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/machinery/door/firedoor,
@@ -63385,7 +63385,7 @@
dir = 8
},
/turf/open/floor/plasteel/dark,
/area/service/library/lounge)
/area/commons/lounge)
"xlg" = (
/obj/effect/spawner/structure/window/reinforced,
/obj/machinery/atmospherics/pipe/heat_exchanging/junction,
@@ -63697,7 +63697,7 @@
pixel_y = 22
},
/turf/open/floor/plasteel/dark,
/area/service/library/lounge)
/area/commons/lounge)
"xNy" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/effect/turf_decal/stripes/line{

View File

@@ -209,6 +209,9 @@
/datum/weather/proc/weather_act(mob/living/L)
return
/datum/weather/proc/weather_act_turf(area/N) //What effect does this weather have on the area?
return
/**
* Updates the overlays on impacted areas
*
@@ -224,6 +227,7 @@
N.icon_state = telegraph_overlay
if(MAIN_STAGE)
N.icon_state = weather_overlay
weather_act_turf(N)
if(WIND_DOWN_STAGE)
N.icon_state = end_overlay
if(END_STAGE)

View File

@@ -0,0 +1,36 @@
//Same as snow_storm basically, but cools outside turf temps. StreetStation only
#define ICY_SNOW_TEMP 200
/datum/weather/ice_storm
name = "Icestorm"
desc = "Harsh snowstorms roam the topside of this arctic planet, burying any area unfortunate enough to be in its path."
probability = 90
telegraph_message = "<span class='notice'>Drifting particles of snow begin to dust the surrounding area..</span>"
telegraph_duration = 300
telegraph_overlay = "light_snow"
weather_message = "<span class='notice'><i>Dense snow begins to fall from the sky, how festive!</i></span>"
weather_overlay = "snow_storm"
weather_duration_lower = 600
weather_duration_upper = 1500
end_duration = 100
end_message = "<span class='notice'>The snowfall dies down.</span>"
area_type = /area/edina
protected_areas = list(/area/edina/protected)
target_trait = ZTRAIT_STATION
immunity_type = "rad"
/datum/weather/ice_storm/weather_act(mob/living/L)
//L.adjust_bodytemperature(-rand(10,20))
/datum/weather/ice_storm/weather_act_turf(area/N)
.=..()
//could be done better but would need a rewrite of weather which is beyond scope.
/*
for(var/turf/open/T in N)
var/datum/gas_mixture/turf/G = T.air
G.temperature = ICY_SNOW_TEMP
*/

View File

@@ -924,7 +924,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
area_flags = BLOBS_ALLOWED | UNIQUE_AREA | CULT_PERMITTED
sound_environment = SOUND_AREA_LARGE_SOFTFLOOR
/area/service/library/lounge
/area/commons/lounge
name = "Library Lounge"
icon_state = "library_lounge"
sound_environment = SOUND_AREA_SMALL_SOFTFLOOR

View File

@@ -0,0 +1,204 @@
/area/edina
name = "Nova Edina wilderness"
icon_state = "edina"
has_gravity = STANDARD_GRAVITY
clockwork_warp_allowed = FALSE // Can servants warp into this area from Reebe?
clockwork_warp_fail = "The aurora borealis is interfering with your teleport! Try somewhere closer to the city."
always_unpowered = TRUE
//dynamic_lighting = DYNAMIC_LIGHTING_DISABLED
power_light = FALSE
power_equip = FALSE
power_environ = FALSE
outdoors = TRUE
//ambientsounds = SPACE //For later
/area/edina/backstreet
name = "Nova Edina backstreets"
icon_state = "edina_alley"
clockwork_warp_allowed = TRUE
ambientsounds = MAINTENANCE
always_unpowered = FALSE //Sure you can have power if you want
/area/edina/backstreet/supply
name = "Supply Backstreets"
icon_state = "edina_alley"
clockwork_warp_allowed = TRUE
ambientsounds = MAINTENANCE
always_unpowered = FALSE //Sure you can have power if you want
/area/edina/backstreet/research
name = "Research Backstreets"
icon_state = "edina_alley"
clockwork_warp_allowed = TRUE
ambientsounds = MAINTENANCE
always_unpowered = FALSE //Sure you can have power if you want
/area/edina/backstreet/med
name = "Hospital Backstreets"
icon_state = "edina_alley"
clockwork_warp_allowed = TRUE
ambientsounds = MAINTENANCE
always_unpowered = FALSE //Sure you can have power if you want
///Nova Edina Streets///
/area/edina/street
name = "Nova Edina Streets"
icon_state = "edina_street"
ambientsounds = null //TODO:add ?
/area/edina/street/primary
name = "Nova Edina Streets"
icon_state = "edina_street"
ambientsounds = null //TODO:add ?
/area/edina/street/primary/princess
name = "Princess Street"
icon_state = "edina_street"
ambientsounds = null //TODO:add ?
/area/edina/street/primary/progress
name = "Progress Street"
icon_state = "edina_street"
ambientsounds = null //TODO:add ?
/area/edina/street/primary/perimeter
name = "Perimeter Way"
icon_state = "edina_street"
ambientsounds = null //TODO:add ?
/area/edina/street/primary/servitor
name = "Servitor Street"
icon_state = "edina_street"
ambientsounds = null //TODO:add ?
/area/edina/street/secondary
name = "Nova Edina Streets"
icon_state = "edina_street2"
ambientsounds = null //TODO:add ?
/area/edina/street/secondary/command
name = "Command Court"
icon_state = "edina_street2"
ambientsounds = null //TODO:add ?
/area/edina/street/secondary/supply
name = "Supply Street"
icon_state = "edina_street2"
ambientsounds = null //TODO:add ?
/area/edina/street/secondary/castle
name = "Castle Way"
icon_state = "edina_street2"
ambientsounds = null //TODO:add ?
/area/edina/street/secondary/aux
name = "Auxiliary Avenue"
icon_state = "edina_street2"
ambientsounds = null //TODO:add ?
/area/edina/street/intersection
name = "Nova Edina Streets"
icon_state = "edina_street2"
ambientsounds = null //TODO:add ?
/area/edina/street/intersection/princessprogress
name = "Princess & Progress"
icon_state = "edina_street2"
ambientsounds = null //TODO:add ?
/area/edina/street/intersection/princessperimeter
name = "Princess & Perimeter"
icon_state = "edina_street2"
ambientsounds = null //TODO:add ?
/area/edina/street/intersection/princessperimeter/north
name = "Perimeter & N Princess"
icon_state = "edina_street2"
ambientsounds = null //TODO:add ?
/area/edina/street/intersection/princessperimeter/south
name = "Perimeter & S Princess"
icon_state = "edina_street2"
ambientsounds = null //TODO:add ?
/area/edina/street/intersection/princessservitor
name = "Servitor & Princess"
icon_state = "edina_street2"
ambientsounds = null //TODO:add ?
/area/edina/street/intersection/servsuppaux
name = "Servitor, Supply, & Auxiliary"
icon_state = "edina_street2"
ambientsounds = null //TODO:add ?
/area/edina/street/intersection/progcastaux
name = "Progress, Castle, & Auxiliary"
icon_state = "edina_street2"
ambientsounds = null //TODO:add ?
/area/edina/street/street2 //Just so laying areas is easier
icon_state = "edina_street2"
/area/edina/protected //Prevents ice storms
name = "Sheltered Nova Edina"
/////////////////Edina specific derivitives///////////////////////////////////
/area/edina/crew_quarters
clockwork_warp_allowed = TRUE
area_flags = BLOBS_ALLOWED | VALID_TERRITORY
/area/edina/crew_quarters/holo_atrium
name = "Hologram atrium"
/area/edina/crew_quarters/store/clothes
name = "Clothes Store"
/area/edina/crew_quarters/store/plushies
name = "Plushies Store"
/area/edina/crew_quarters/store/pet
name = "Pet Store"
/turf/open/floor/grass/snow/edina//But for now, we just handle what is outside, for light control etc.
name = "Scottish snow"
desc = "Looks super chilly!"
light_range = 3 //MIDNIGHT BLUE
light_power = 0.15 //NOT PITCH BLACK, JUST REALLY DARK
light_color = "#00111a" //The light can technically cycle on a timer worldwide, but no daynight cycle.
baseturfs = /turf/open/floor/grass/snow/edina //If we explode or die somehow, we just make more! Ahahaha!!!
tiled_dirt = 0 //NO TILESMOOTHING DIRT/DIRT SPAWNS OR SOME SHIT
//lets people build
/turf/open/floor/grass/snow/edina/attackby(obj/item/C, mob/user, params)
.=..()
if(istype(C, /obj/item/stack/tile))
for(var/obj/O in src)
if(O.level == 1) //ex. pipes laid underneath a tile
for(var/M in O.buckled_mobs)
to_chat(user, "<span class='warning'>Someone is buckled to \the [O]! Unbuckle [M] to move \him out of the way.</span>")
return
var/obj/item/stack/tile/W = C
if(!W.use(1))
return
var/turf/open/floor/T = PlaceOnTop(W.turf_type)
T.icon_state = initial(T.icon_state)
if(istype(W, /obj/item/stack/tile/light)) //TODO: get rid of this ugly check somehow
var/obj/item/stack/tile/light/L = W
var/turf/open/floor/light/F = T
F.state = L.state
playsound(src, 'sound/weapons/genhit.ogg', 50, 1)
////////////////Mapping helper/////////////////////////
/obj/effect/mapping_helpers/planet_z
name = "planet z helper"
layer = POINT_LAYER
/obj/effect/mapping_helpers/planet_z/Initialize()
. = ..()
var/datum/space_level/S = SSmapping.get_level(z)
S.traits["Planet"] = TRUE //This probably doesn't work as I expect. But maybe!!

View File

@@ -57,6 +57,7 @@
hole_size = LARGE_HOLE
/obj/structure/fence/attackby(obj/item/W, mob/user)
var/current_stage = hole_size
if(W.tool_behaviour == TOOL_WIRECUTTER)
if(!cuttable)
to_chat(user, "<span class='notice'>This section of the fence can't be cut.</span>")
@@ -64,7 +65,6 @@
if(invulnerable)
to_chat(user, "<span class='notice'>This fence is too strong to cut through.</span>")
return
var/current_stage = hole_size
if(current_stage >= MAX_HOLE_SIZE)
to_chat(user, "<span class='notice'>This fence has too much cut out of it already.</span>")
return
@@ -86,6 +86,25 @@
update_cut_status()
else if(istype(W, /obj/item/stack/rods) && broken)
if(!hole_size)
to_chat(user, "<span class='info'>The [src] has no cuts in it!</span>")
return
var/obj/item/stack/rods/R = W
if(do_after(user, CUT_TIME, target = src))
if(current_stage == hole_size)
switch(--hole_size)
if(NO_HOLE)
visible_message("<span class='notice'>\The [user] repairs \the [src] fully.</span>")
to_chat(user, "<span class='info'>You repaire the [src] back to it's former glory.</span>")
climbable = TRUE
if(MEDIUM_HOLE)
visible_message("<span class='notice'>\The [user] patches up \the [src].</span>")
to_chat(user, "<span class='info'>The hole in \the [src] is reduced slightly, though someone could probably sill squeeze though if you don't patch it up more.</span>")
climbable = FALSE
R.use(1)
update_cut_status()
return TRUE
/obj/structure/fence/proc/update_cut_status()

View File

@@ -78,6 +78,12 @@
deconstructible = FALSE
layer = EDGED_TURF_LAYER
/obj/structure/fluff/lightpost/light
desc = "That which most enchants the Edinians is the lighting by gas of the boulevards... These humble rows of lamps, shining with a clarity white and pure, have a marvelous effect upon the streets on Nova Edina. Adorned with a cheery garb, in tune with the festive spirits of the city."
light_power = 0.8
light_range = 10
light_color = "#ffeeab"
/obj/structure/fluff/bus
name = "bus"
desc = "GO TO SCHOOL. READ A BOOK."

View File

@@ -0,0 +1,30 @@
/obj/item/clothing/gloves/mittens
desc = "These gloves will keep your hands warm!"
name = "mittens"
icon_state = "mittens"
item_state = "wgloves"
//item_color = "white"
cold_protection = HANDS
min_cold_protection_temperature = GLOVES_MIN_TEMP_PROTECT
resistance_flags = NONE
/obj/item/clothing/gloves/mittens/random
/obj/item/clothing/gloves/mittens/random/Initialize()
..()
var/colours = list("black", "yellow", "lightbrown", "brown", "orange", "red", "purple", "green", "blue", "kitten")
var/picked_c = pick(colours)
if(picked_c == "kitten")
new /obj/item/clothing/gloves/mittens/kitten(loc)
qdel(src)
return INITIALIZE_HINT_QDEL
item_state = "[picked_c]gloves"
//item_color = "[picked_c]"
color = picked_c
/obj/item/clothing/gloves/mittens/kitten
name = "Kitten mittens"
desc = "These gloves will keep your hands warm, and feature cute kittens"
icon_state = "kittenmittens"
item_state = "blackgloves"
//item_color = "black"

View File

@@ -511,7 +511,151 @@
. |= MOBILITY_MOVE
mobility_flags = .
//Christmas car spawner
/mob/living/simple_animal/jacq/car_spawner
name = "Jacqueline cars terminal"
icon_state = "jacq_cars_spawner"
AIStatus = AI_OFF
anchored = TRUE
spawn_cars = TRUE
active = FALSE
/mob/living/simple_animal/jacq/car_spawner/Destroy()
visible_message("The <b>[src]</b> gives out an error sound, <span class='spooky'>\"Ey! Bugger off!\"</span>")
fully_heal(FALSE)
return ..()
/mob/living/simple_animal/jacq/car_spawner/death()
visible_message("The <b>[src]</b> gives out an error sound, <span class='spooky'>\"Ey! Bugger off!\"</span>")
fully_heal(FALSE)
/mob/living/simple_animal/jacq/car_spawner/poof()
if(!active)//if disabled, don't poof
return
var/datum/reagents/R = new/datum/reagents(100)//Hey, just in case.
var/datum/effect_system/smoke_spread/chem/s = new()
R.add_reagent(/datum/reagent/fermi/secretcatchem, 10)
s.set_up(R, 0, loc)
s.start()
stopmove()
health = 25
/mob/living/simple_animal/jacq/car_spawner/spawn_cars(mob/living/carbon/C)
visible_message("<b>[src]</b> boots up and displays jacq's glowing smile, <span class='spooky'>\"Hallo there user! Merry Christmas! What ken type o' craft ken Ah offer ye? I can magic up a vectorcraft in manual, automatic or customise it if yer feeling technical.\"</span>")
jacqrunes("Hallo there user! What ken type o' craft ken Ah offer ye? I can magic up a vectorcraft in manual, automatic or customise it if yer feeling technical.", C)
var/choices_reward = list("Manual", "Automatic", "Customise", "Are you a computer now Jacq?", "Nothing, thanks")
var/choice_reward = input(usr, "Merry Trick_or_Treat.exe initiated!", "Merry Trick_or_Treat.exe initiated!") in choices_reward
switch(choice_reward)
if("Manual")
visible_message("The <b>[src]</b> makes a magical booping sound, <span class='spooky'>\"Great choice! 'Ere's yer car.\"</span>")
jacqrunes("Great choice! 'Ere's yer car.", C)
new /obj/vehicle/sealed/vectorcraft(loc)
if("Automatic")
visible_message("<b>[src]</b> makes a magical booping sound, <span class='spooky'>\"'Ere's yer car. Not as fast as an automatic mind.\"</span>")
jacqrunes("'Ere's yer car. Not as fast as an automatic mind.", C)
new /obj/vehicle/sealed/vectorcraft/auto(loc)
if("Are you a computer now Jacq?")
visible_message("<b>[src]</b> makes a frustrated error sound, <span class='spooky'>\"Nae, are ye daft? Ah built these thingies tae magic up cars fer ye. Well, I got a speccy four eyes tae do it fer me, but me names on it like cause it was me idea.\"</span>")
jacqrunes("Nae, are ye daft? Ah built these thingies tae magic up cars fer ye. Well, I got a speccy four eyes tae do it fer me, but me names on it like cause it was me idea.", C)
if("Customise")
visible_message("The <b>[src]</b> pings, <span class='spooky'>\"Arright, Manual or Automatic?\"</span>")
var/choices_transm = list("Manual", "Automatic")
var/choice_transm = input(usr, "Choose transmission", "Choose transmission") in choices_transm
var/points = 0
var/obj/vehicle/sealed/vectorcraft/VC
switch(choice_transm)
if("Manual")
VC = new /obj/vehicle/sealed/vectorcraft(loc)
if("Automatic")
VC = new /obj/vehicle/sealed/vectorcraft/auto(loc)
points += 500
visible_message("The <b>[src]</b> pings, <span class='spooky'>\"Maximum acceleration? (default [VC.max_acceleration], max 10)\"</span>")
var/max_accl = text2num(input(usr, "Maximum acceleration? (default [VC.max_acceleration], max 10)", "[VC.max_acceleration]"))
max_accl = clamp(max_accl, 0, 10)
VC.max_acceleration = max_accl
VC.i_m_acell = max_accl
points += max_accl*10
/* This is internally used
visible_message("The <b>[src]</b> pings, <span class='spooky'>\"Acceleration step? (default 0.3, max 1)\"</span>")
var/max_accl_s = text2num(input(usr, "Acceleration step? (default 0.3, max 1)", "[VC.accel_step]"))
max_accl_s = clamp(max_accl_s, 0, 1)
VC.max_acceleration = max_accl_s
points += max_accl_s*100
*/
visible_message("The <b>[src]</b> pings, <span class='spooky'>\"Acceleration? (default [VC.acceleration], max 2)\"</span>")
var/accl = text2num(input(usr, "Acceleration? (default [VC.acceleration], max 2)", "[VC.acceleration]"))
accl = clamp(accl, 0, 2)
VC.acceleration = accl
VC.i_acell = accl
points += accl*100
visible_message("The <b>[src]</b> pings, <span class='spooky'>\"Maximum deceleration? (default [VC.max_deceleration], max 15)\"</span>")
var/deaccl = text2num(input(usr, "Max_deceleration? (default [VC.max_deceleration], max 15)", "[VC.max_deceleration]"))
deaccl = clamp(deaccl, 0, 15)
VC.max_deceleration = deaccl
VC.i_m_decell = deaccl
points += deaccl*10
visible_message("The <b>[src]</b> pings, <span class='spooky'>\"Maximum velocity? (default [VC.max_velocity], max 200)\"</span>")
var/m_velo = text2num(input(usr, "Maximum velocity? (default [VC.max_velocity], max 200)", "[VC.max_velocity]"))
m_velo = clamp(m_velo, 0, 200)
VC.max_velocity = m_velo
points += m_velo
visible_message("The <b>[src]</b> pings, <span class='spooky'>\"Boost power? (default [VC.boost_power], max 200)\"</span>")
var/boost = text2num(input(usr, "Boost power? (default [VC.boost_power], max 200)", "[VC.boost_power]"))
boost = clamp(boost, 0, 200)
VC.boost_power = boost
VC.i_boost = boost
points += boost
visible_message("The <b>[src]</b> pings, <span class='spooky'>\"Health points? (default [VC.max_integrity], max 1000)\"</span>")
var/health = text2num(input(usr, "Health points? (default [VC.max_integrity], max 1000)", "[VC.max_integrity]"))
health = clamp(health, 0, 500)
VC.max_integrity = health
points += health/2
visible_message("The <b>[src]</b> pings, <span class='spooky'>\"Arright, 'ow do ye want it tae look?\"</span>")
var/choices_icon = list("Racer", "Truck", "Cyber", "Ambulance", "Pod", "Clown")
var/choice_icon = input(usr, "Choose body", "Choose body") in choices_icon
switch(choice_icon)
if("Truck")
VC.icon_state = "truck"
if("Cyber")
VC.icon_state = "cyber"
if("Ambulance")
VC.icon_state = "ambutruck"
if("Pod")
VC.icon_state = "engineering_pod"
if("Clown")
VC.icon_state = "clowncar"
visible_message("The <b>[src]</b> pings, <span class='spooky'>\"Finally; what name are ye gonna give it?\"</span>")
var/choice_name = input(usr, "Pick a name!", "")
choice_name += " (Points cost:[points])"
VC.name = choice_name
visible_message("The <b>[src]</b> gives a final boop, <span class='spooky'>\"There ye be, enjoy!\"</span>")
if("How do Automatics work?")
visible_message("The image of Jacq on the <b>[src]</b> smiles, <span class='spooky'>\"Hold wasd to gain speed in a direction, c to enable/disable the clutch, 1 2 3 4 to change gears (help is gear 1, disarm is gear 2, grab is gear 3 and harm is gear 4) while holding a direction (make sure the clutch is enabled when you change gears, you should hear a sound when you've successfully changed gears), r to toggle handbrake, hold alt for brake and press shift for boost (the machine will beep when the boost is recharged)! If you hear an ebbing sound like \"brbrbrbrbr\" you need to gear down, the whining sound means you need to gear up. Hearing a pleasant \"whumwhumwhum\" is optimal gearage! It can be a lil slow to start, so make sure you're in the 1st gear, andusing a boost to get you started is a good idea. If you've got a good speed you'll likely never need to dip down to gear 1 again, and make sure to hold the acceleration pedal down while changing gears (hold a direction). 1st gear is for slow movement, and it's a good idea to mvoe to 2nd gear as quick as you can, you can coldstart a car from gear one by slowly moving, then using the boost to jump you up to gear 2 speeds. The upper gears are for unlimiting your top speed.\"</span>")
jacqrunes("They're a bit tricky, aye. Basically;", C)
if("Nothing, thanks")
visible_message("The image of Jacq on the <b>[src]</b> shrugs, <span class='spooky'>\"Suit yerself.\"</span>")
jacqrunes("Suit yerself.", C)
visible_message("The <b>[src]</b> beeps, <span class='spooky'>\"Oh and look after the crafts, aye? They can get a wee bit... explosive if banged up a tad too much. They move slower damaged too like. Ye can repair 'em with the welders o'er there.\"</span>")
jacqrunes("Oh and look after the crafts, aye? They can get a wee bit... explosive if banged up a tad too much. They move slower damaged too like. Ye can repair 'em with the welders o'er there. ", C)
/obj/item/clothing/head/hardhat/pumpkinhead/jaqc
name = "Jacq o' latern"

View File

@@ -13,3 +13,24 @@
desc = "A keyring with a small steel key, and a pink fob reading \"Pussy Wagon\"."
icon_state = "keyjanitor"
//START VECTORCARKEYS
/obj/item/key/CMO
desc = "A keyring with a small steel key to the CMO\'s race hovercar."
/obj/item/key/RD
desc = "A keyring with a small steel key to the RD\'s race hovercar."
/obj/item/key/hop
desc = "A keyring with a small steel key to the HOP\'s race hovercar."
/obj/item/key/hos
desc = "A keyring with a small steel key to the HOS\'s race hovercar."
/obj/item/key/CE
desc = "A keyring with a small steel key to the CE\'s race hovercar."
/obj/item/key/QM
desc = "A keyring with a small steel key to the QM\'s race hovercar."
/obj/item/key/CAPT
desc = "A keyring with a small steel key to the Captain\'s race hovercar."

View File

@@ -47,6 +47,10 @@ map spookystation
minplayers 150
endmap
map festivestation
minplayers 150
endmap
map multiz_debug
endmap

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.0 KiB

After

Width:  |  Height:  |  Size: 12 KiB

BIN
icons/obj/sofaclean.dmi Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 41 KiB

After

Width:  |  Height:  |  Size: 42 KiB

View File

@@ -0,0 +1,60 @@
//Festive Light Poles
/obj/structure/streetdecor/lamp
name = "lamp pole"
desc = "A metal pole with latern. Very effective at lighting up the cold streets on a breezy night."
layer = 4
density = TRUE
anchored = TRUE
light_power = 1.4
light_range = 15
light_color = "#ffffdd"
icon = 'modular_citadel/code/modules/festive/32x64icons.dmi'
icon_state = "lamp_post"
max_integrity = 9999999
/obj/structure/streetdecor/lampfestive
name = "festive lamp pole"
desc = "A metal pole with latern and christmas decorations. Very effective at warming up the spirits of people."
layer = 4
density = TRUE
anchored = TRUE
light_power = 1.6
light_range = 15
light_color = "#ffffdd"
icon = 'modular_citadel/code/modules/festive/32x64icons.dmi'
icon_state = "lamp_post_festive"
max_integrity = 9999999
/obj/structure/streetdecor/wreathpole
name = "wreath pole"
desc = "A metal pole with a fancy wreath."
layer = 4
density = TRUE
anchored = TRUE
icon = 'modular_citadel/code/modules/festive/32x64icons.dmi'
icon_state = "wreath_post"
/obj/structure/streetdecor/welcomesign
name = "Welcome sign"
desc = "A tartan trapped sign welcoming you to Nova Edina."
layer = 4
density = TRUE
anchored = TRUE
icon = 'modular_citadel/code/modules/festive/city_sign.dmi'
icon_state = "sign"
/obj/structure/streetdecor/bigtree
name = "Big festive tree"
desc = "Big tree. Big heck. Big festive cheer!"
layer = 4
density = TRUE
anchored = TRUE
light_power = 2
light_range = 30
light_color = "#ffeeab"
icon = 'modular_citadel/code/modules/festive/bigtree.dmi'
icon_state = "bigtree"
max_integrity = 9999999

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 753 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 230 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@@ -0,0 +1,53 @@
/obj/effect/decal/festive
name = "Festive item!"
desc = "It fills you with holiday cheer."
icon = 'modular_citadel/code/modules/festive/festive_objects.dmi'
icon_state = "holly"
plane = -5 //makes the graffiti visible over a wall. I think
/obj/effect/decal/festive/holly
name = "Holly"
desc = "A prickly, yet cheerful flora laden with ripe berries of festive joy."
/obj/effect/decal/festive/fairylights
name = "Fairy lights"
desc = "A strand of smol glowing lights, almost as if the lights themselves were faries."
icon_state = "y_fairylights"
light_power = 1.6
light_range = 3
light_color = "#ffeeab"
/obj/effect/decal/festive/mistletoe
name = "Mistletoe"
desc = "A plant that causes 2 victims underneath to engage in a smooch!"
icon_state = "mistletoe"
/obj/effect/decal/festive/christmas_reef
name = "Christmas reef"
desc = "A ring reef of festive plants."
icon_state = "christmas_reef"
/obj/effect/decal/festive/green_stockings
name = "Green stockings"
desc = "3 wee booties out on a row, hoping for presents from the fat man's tow."
icon_state = "green_stockings"
/obj/effect/decal/festive/red_stockings
name = "Red stockings"
desc = "Santa seems to enjoy socks a lot, huh."
icon_state = "red_stockings"
/obj/effect/decal/festive/large_red_stocking
name = "Large red stocking"
desc = "A big hecking chonker of a sock, a braisen display of greed, or simply the sock of a large man?"
icon_state = "large_red_stocking"
/obj/effect/decal/festive/large_green_stocking
name = "Large green stocking"
desc = "They say his sock grew 3 sizes that day."
icon_state = "large_green_stocking"
/obj/effect/decal/festive/christmas_ivy_string
name = "Festive ivy"
desc = "In a recent study performed by the local university, it was found that ivy doesn't grow to live and thrive, but instead to spread festive cheer. You cannot help but feel the holiday spirit wrangle around you fantastically." //I am super tired and I wordswordswords
icon_state = "christmas_ivy_string"

View File

@@ -0,0 +1,7 @@
/obj/item/paper/fluff/festive/note_for_qm
name = "To the Quartermaster(s)"
info = "Seeing as this is an event for employees spanning the entire sector, it's possible you may not be the only Quartermaster present today and you'll have to share this office should that be the case. Fortunately, you shouldn't need to share a locker - you shall find some additional lockers with quartermaster access in your department's locker room. Should you require additional lockers however, you will need to contact Central Command directly.<br>Additionally, the successful capture of a Syndicate freighter has left us with a surplus of Donksoft weaponry. Considering they pose far less of a concern than their real counterparts, your department has been put in charge of their distribution. Just be sure not to keep them all for yourself - 'tis the season of giving, after all.<br>- Administrator Roux"
/obj/item/paper/fluff/festive/note_for_chap
name = "A letter to the Chaplain"
info = "Chaplain,<br>You might not be alone in your duties today. Seeing as these are special circumstances, you will find additional supplies with which to arm your fellow clergymen.<br>Do we expect you to need to use what's inside? Thankfully, no. Alas, should malicious occult forces strike, we want your compatriots to be equipped to face them.<br>At the very least, don't just give these out to anyone. Every time I see an assistant running around with a holy 'sord', I can feel my insides crumble...<br>Soulstone Obelisk<br>Department of Higher Dimensional Affairs"

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -0,0 +1,26 @@
//How to use:
//Set the name of off the the objects you want controlled by 1 button to the same name
//Set the tar_name of this to the same name
//Press the button in game.
/obj/machinery/button/privacy
name = "Privacy toggle"
var/tar_name
var/tint_objs = list()
/obj/machinery/button/privacy/setup_device()
if(!device)
for(var/obj/O in get_area(src))
if(O.name == tar_name)
tint_objs += O
..()
/obj/machinery/button/privacy/attack_hand(mob/user)
.=..()
for(var/obj/O in tint_objs)
if(O.opacity)
O.color = "#919191"
O.opacity = 0
else
O.opacity = 1
O.color = "#000000"

Binary file not shown.

After

Width:  |  Height:  |  Size: 707 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 506 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 444 B

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,114 @@
/obj/vehicle/sealed/vectorcraft/rideable/Initialize()
. = ..()
/obj/vehicle/sealed/vectorcraft/rideable/post_unbuckle_mob(mob/living/M)
remove_occupant(M)
M.pixel_x = 0
M.pixel_y = 0
return ..()
/obj/vehicle/sealed/vectorcraft/rideable/post_buckle_mob(mob/living/M)
add_occupant(M)
return ..()
/obj/vehicle/sealed/vectorcraft/rideable/move_car()
.=..()
driver.pixel_x = pixel_x
driver.pixel_y = pixel_y
driver.forceMove(src.loc)
driver.setDir(dir)
/obj/vehicle/sealed/vectorcraft/rideable/mob_enter(mob/living/M)
if(!istype(M))
return FALSE
M.visible_message("<span class='notice'>[M] climbs into \the [src]!</span>")
M.forceMove(src.loc)
add_occupant(M)
if(!driver)
driver = M
if(gear != "auto")
gear = driver.a_intent
start_engine()
driver.pixel_x = pixel_x
driver.pixel_y = pixel_y
return TRUE
/obj/vehicle/sealed/vectorcraft/rideable/mob_exit(mob/living/M)
.=..()
driver.pixel_x = 0
driver.pixel_y = 0
/obj/vehicle/sealed/vectorcraft/rideable/wheelchair
name = "Hoverchair"
desc = "A chair with big hoverpads. It looks like you can move in this on your own."
icon = 'icons/obj/vehicles.dmi'
icon_state = "wheelchair"
layer = OBJ_LAYER
max_integrity = 100
armor = list("melee" = 10, "bullet" = 10, "laser" = 10, "energy" = 0, "bomb" = 10, "bio" = 0, "rad" = 0, "fire" = 20, "acid" = 30) //Wheelchairs aren't super tough yo
canmove = TRUE
density = FALSE //Thought I couldn't fix this one easily, phew
max_acceleration = 1.5
accel_step = 0.5
acceleration = 0.35
max_deceleration = 1
max_velocity = 20
boost_power = 15
gear = "auto"
/obj/vehicle/sealed/vectorcraft/rideable/wheelchair/ComponentInitialize() //Since it's technically a chair I want it to have chair properties
. = ..()
AddComponent(/datum/component/simple_rotation,ROTATION_ALTCLICK | ROTATION_CLOCKWISE, CALLBACK(src, .proc/can_user_rotate),CALLBACK(src, .proc/can_be_rotated),null)
/obj/vehicle/sealed/vectorcraft/rideable/wheelchair/Destroy()
if(has_buckled_mobs())
var/mob/living/carbon/H = buckled_mobs[1]
unbuckle_mob(H)
return ..()
/obj/vehicle/sealed/vectorcraft/rideable/wheelchair/move_car()
. = ..()
cut_overlays()
playsound(src, 'sound/effects/roll.ogg', 75, 1)
if(has_buckled_mobs())
handle_rotation_overlayed()
/obj/vehicle/sealed/vectorcraft/rideable/wheelchair/post_buckle_mob(mob/living/user)
. = ..()
handle_rotation_overlayed()
/obj/vehicle/sealed/vectorcraft/rideable/wheelchair/post_unbuckle_mob()
. = ..()
cut_overlays()
/obj/vehicle/sealed/vectorcraft/rideable/wheelchair/setDir(newdir)
..()
handle_rotation(newdir)
/obj/vehicle/sealed/vectorcraft/rideable/wheelchair/proc/handle_rotation(direction)
if(has_buckled_mobs())
handle_rotation_overlayed()
for(var/m in buckled_mobs)
var/mob/living/buckled_mob = m
buckled_mob.setDir(direction)
/obj/vehicle/sealed/vectorcraft/rideable/wheelchair/proc/handle_rotation_overlayed()
cut_overlays()
var/image/V = image(icon = icon, icon_state = "wheelchair_overlay", layer = FLY_LAYER, dir = src.dir)
add_overlay(V)
/obj/vehicle/sealed/vectorcraft/rideable/wheelchair/proc/can_be_rotated(mob/living/user)
return TRUE
/obj/vehicle/sealed/vectorcraft/rideable/wheelchair/proc/can_user_rotate(mob/living/user)
var/mob/living/L = driver
if(istype(L))
if(!user.canUseTopic(src, BE_CLOSE, ismonkey(user)))
return FALSE
if(isobserver(user) && CONFIG_GET(flag/ghost_interaction))
return TRUE
return FALSE

Binary file not shown.

After

Width:  |  Height:  |  Size: 753 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 423 B

View File

@@ -27,9 +27,21 @@
var/gear
var/boost_cooldown
//Changes for custom
var/i_m_acell
var/i_m_decell
var/i_boost
var/i_acell
var/mob/living/carbon/human/driver
/obj/vehicle/sealed/vectorcraft/Initialize()
..()
i_m_acell = max_acceleration
i_m_decell = max_deceleration
i_boost = boost_power
i_acell = acceleration
/obj/vehicle/sealed/vectorcraft/mob_enter(mob/living/M)
if(!driver)
driver = M

View File

@@ -0,0 +1,147 @@
/obj/vehicle/sealed/vectorcraft/boot
name = "Hovertruck"
desc = "An all-terrain vehicle built for traversing rough terrain with ease. This one comes equipt with a sizeable boot that can store up to 3 items!"
icon_state = "truck"
max_integrity = 200
var/obj/structure/boot = list()//Trunkspace of craft
var/boot_size = 3
max_acceleration = 3
accel_step = 0.15
acceleration = 0.3
max_deceleration = 5
max_velocity = 80
boost_power = 20
enginesound_delay = 0
var/static/radial_heal = image(icon = 'icons/mob/radial.dmi', icon_state = "radial_heal")
var/static/radial_eject_car = image(icon = 'icons/mob/radial.dmi', icon_state = "radial_eject_car")
var/static/radial_eject_key = image(icon = 'icons/mob/radial.dmi', icon_state = "radial_eject_key")
var/static/radial_eject_boot = image(icon = 'icons/mob/radial.dmi', icon_state = "radial_eject_boot")
/obj/vehicle/sealed/vectorcraft/boot/MouseDrop_T(atom/dropping, mob/user)
if(istype(dropping, /obj/))
if(LAZYLEN(boot) < boot_size)
boot += dropping
to_chat(user, "<span class='notice'>You add the [dropping] to the [src]'s boot!</span>")
return TRUE
if(iscarbon(dropping))
var/mob/living/carbon/M = dropping
mob_try_enter(M)
to_chat(user, "<span class='notice'>You put [M] into the [src]!</span>")
return TRUE
/obj/vehicle/sealed/vectorcraft/boot/proc/eject_boot()
for(var/obj/o in boot)
o.forceMove(drop_location())
/obj/vehicle/sealed/vectorcraft/boot/ambulance //weewoos have to go fast
name = "Ambulance"
var/obj/machinery/sleeper/Sl
max_acceleration = 3
accel_step = 0.15
acceleration = 0.3
max_deceleration = 5
max_velocity = 100
boost_power = 25
enginesound_delay = 0
icon_state = "ambutruck"
var/weewoo = FALSE
var/weewoocount = 0
/obj/vehicle/sealed/vectorcraft/boot/ambulance/Initialize()
. = ..()
Sl = new /obj/machinery/sleeper
/obj/vehicle/sealed/vectorcraft/boot/ambulance/process()
..()
if(weewoo)
weewoo()
/obj/vehicle/sealed/vectorcraft/boot/ambulance/MouseDrop_T(mob/living/L, mob/user)
if(isliving(L))
Sl.close_machine(L)
to_chat(user, "<span class='notice'>You put [L] into the [src]'s emergency sleeper!</span>")
return TRUE
..()
/obj/vehicle/sealed/vectorcraft/boot/ambulance/proc/weewoo()
if(weewoocount>10)
weewoocount = 0
return
weewoo++
/obj/vehicle/sealed/vectorcraft/boot/ambulance/ui_interact(mob/user) // taken from the microwave/grinder
. = ..()
var/list/options = list()
if(isAI(user))
options["radial_eject_car"] = radial_eject_car
else
if(vector["y"] == 0 && vector["x"] == 0)
options["radial_eject_car"] = radial_eject_car
if(Sl.occupant)
options["radial_heal"] = radial_heal
if(inserted_key)
if(!driver)
options["radial_eject_key"] = radial_eject_key
if(length(boot))
options["radial_eject_boot"] = radial_eject_boot
var/choice
if(length(options) < 1)
return
if(length(options) == 1)
for(var/key in options)
choice = key
else
choice = show_radial_menu(user, src, options, require_near = !issilicon(user))
// post choice verification
if(isAI(user) || !user.canUseTopic(src, !issilicon(user)))
return
switch(choice)
if("eject_car")
if(driver)
remove_occupant(driver)
else
for(var/mob/m in occupants)
remove_occupant(m)
if("radial_heal")
Sl.ui_interact(user)
if("eject_key")
to_chat(user, "<span class='notice'>You remove \the [inserted_key] from \the [src].</span>")
inserted_key.forceMove(drop_location())
user.put_in_hands(inserted_key)
inserted_key = null
if("eject_boot")
eject_boot(user)
/obj/vehicle/sealed/vectorcraft/boot/ambulance/attackby(obj/item/I, mob/user, params)
if(istype(I, /obj/item/reagent_containers/sleeper_buffer))
var/obj/item/reagent_containers/sleeper_buffer/SB = I
if((SB.reagents.total_volume + Sl.reagents.total_volume) < Sl.reagents.maximum_volume)
SB.reagents.trans_to(Sl.reagents, SB.reagents.total_volume)
visible_message("[user] places the [SB] into the [src].")
qdel(SB)
return
else
SB.reagents.trans_to(Sl.reagents, SB.reagents.total_volume)
visible_message("[user] adds as much as they can to the [src] from the [SB].")
return
if(istype(I, /obj/item/reagent_containers))
var/obj/item/reagent_containers/RC = I
if(RC.reagents.total_volume == 0)
to_chat(user, "<span class='notice'>The [I] is empty!</span>")
for(var/datum/reagent/R in RC.reagents.reagent_list)
if((obj_flags & EMAGGED) || (allowed(usr)))
break
if(!istype(R, /datum/reagent/medicine))
visible_message("The [src] gives out a hearty boop and rejects the [I]. The Sleeper's screen flashes with a pompous \"Medicines only, please.\"")
return
RC.reagents.trans_to(Sl.reagents, 1000)
visible_message("[user] adds as much as they can to the [src] from the [I].")
return

View File

@@ -15,6 +15,7 @@
// BEGIN_INCLUDE
#include "_maps\_basemap.dm"
#include "_maps\map_files\FestiveBall\doorButtonOrganizer.dm"
#include "code\_compile_options.dm"
#include "code\world.dm"
#include "code\__DEFINES\_auxtools.dm"
@@ -744,6 +745,7 @@
#include "code\datums\weather\weather_types\acid_rain.dm"
#include "code\datums\weather\weather_types\ash_storm.dm"
#include "code\datums\weather\weather_types\floor_is_lava.dm"
#include "code\datums\weather\weather_types\ice_storm.dm"
#include "code\datums\weather\weather_types\radiation_storm.dm"
#include "code\datums\weather\weather_types\snow_storm.dm"
#include "code\datums\weather\weather_types\void_storm.dm"
@@ -786,6 +788,7 @@
#include "code\game\area\Space_Station_13_areas.dm"
#include "code\game\area\areas\away_content.dm"
#include "code\game\area\areas\centcom.dm"
#include "code\game\area\areas\edina.dm"
#include "code\game\area\areas\holodeck.dm"
#include "code\game\area\areas\mining.dm"
#include "code\game\area\areas\shuttles.dm"
@@ -2008,6 +2011,7 @@
#include "code\modules\clothing\gloves\boxing.dm"
#include "code\modules\clothing\gloves\color.dm"
#include "code\modules\clothing\gloves\miscellaneous.dm"
#include "code\modules\clothing\gloves\mittens.dm"
#include "code\modules\clothing\gloves\ring.dm"
#include "code\modules\clothing\gloves\tacklers.dm"
#include "code\modules\clothing\head\_head.dm"
@@ -3754,6 +3758,12 @@
#include "modular_citadel\code\modules\custom_loadout\read_from_file.dm"
#include "modular_citadel\code\modules\eventmaps\Spookystation\halloweenPersiWork.dm"
#include "modular_citadel\code\modules\eventmaps\Spookystation\JTGSZwork.dm"
#include "modular_citadel\code\modules\festive\32x64.dm"
#include "modular_citadel\code\modules\festive\festive_decals.dm"
#include "modular_citadel\code\modules\festive\festive_notes.dm"
#include "modular_citadel\code\modules\festive\privacy.dm"
#include "modular_citadel\code\modules\festive\turfs.dm"
#include "modular_citadel\code\modules\festive\wheelchair.dm"
#include "modular_citadel\code\modules\mentor\dementor.dm"
#include "modular_citadel\code\modules\mentor\follow.dm"
#include "modular_citadel\code\modules\mentor\mentor.dm"
@@ -3795,5 +3805,6 @@
#include "modular_citadel\code\modules\vectorcrafts\vector_process.dm"
#include "modular_citadel\code\modules\vectorcrafts\vectorcar_heads.dm"
#include "modular_citadel\code\modules\vectorcrafts\vectorcraft.dm"
#include "modular_citadel\code\modules\vectorcrafts\vectortruck.dm"
#include "modular_citadel\code\modules\vectorcrafts\vectorvariants.dm"
// END_INCLUDE