mirror of
https://github.com/vgstation-coders/vgstation13.git
synced 2025-12-10 10:21:11 +00:00
Weather Control Device (#28604)
* Weather Control Device * defines name change * Fixes * New sprite and map tweaks
This commit is contained in:
@@ -10,6 +10,9 @@
|
||||
//Forecast will stay unchanged until there are less than PREDICTION_MINIMUM weathers, at which point it will make a new forecast
|
||||
//Every forecast is freshly generated, which means forecasts change!
|
||||
|
||||
#define INTENSIFY 1
|
||||
#define ABATE -1
|
||||
|
||||
var/list/weathertracker = list() //associative list, gathers time spent one each weather for scoreboard
|
||||
|
||||
/datum/climate
|
||||
@@ -38,6 +41,8 @@ var/list/weathertracker = list() //associative list, gathers time spent one each
|
||||
else
|
||||
var/datum/weather/future = new path(src)
|
||||
forecasts += future
|
||||
if(W.next_weather.len == 1)
|
||||
break //Forecast no further.
|
||||
cycle++
|
||||
forecasts -= current_weather //remove it from our future weather
|
||||
|
||||
@@ -57,6 +62,29 @@ var/list/weathertracker = list() //associative list, gathers time spent one each
|
||||
if(forecasts.len < PREDICTION_MINIMUM)
|
||||
forecast()
|
||||
|
||||
#define INVALID_STEP -1
|
||||
#define CANNOT_CHANGE -2
|
||||
//step -1 to go down a step, 1 to go up a step
|
||||
/datum/climate/proc/weather_shift(var/direction = INTENSIFY)
|
||||
if(direction**2 != 1)
|
||||
return INVALID_STEP //must be 1 or -1
|
||||
if(current_weather)
|
||||
var/weathers = current_weather.next_weather.len
|
||||
if(weathers == 1)
|
||||
return CANNOT_CHANGE
|
||||
var/preferred_weather
|
||||
if(direction == INTENSIFY)
|
||||
preferred_weather = current_weather.next_weather[weathers] //the last value
|
||||
else if(direction == ABATE)
|
||||
preferred_weather = current_weather.next_weather[1] //the first value
|
||||
if(preferred_weather == current_weather.type)
|
||||
return FALSE
|
||||
current_weather.timeleft = min(1 MINUTES, current_weather.timeleft)
|
||||
current_weather.next_weather.Cut()
|
||||
current_weather.next_weather[preferred_weather] = 100
|
||||
forecast()
|
||||
return TRUE
|
||||
|
||||
/datum/climate/proc/change_weather(weather)
|
||||
if(ispath(weather))
|
||||
//We have been provided a path. Let's see if it's identical to the one we have.
|
||||
@@ -89,6 +117,8 @@ var/list/weathertracker = list() //associative list, gathers time spent one each
|
||||
/datum/weather
|
||||
var/name = "weather"
|
||||
var/list/next_weather = list() //associative list
|
||||
//for next_weather, order matters: put in order of weather intensity, so that step() will work
|
||||
//only one in list means it can't be changed by the weather control device
|
||||
var/timeleft = 1
|
||||
var/datum/climate/parent
|
||||
var/temperature = T20C
|
||||
|
||||
@@ -1496,3 +1496,15 @@ obj/item/weapon/circuitboard/rdserver
|
||||
/obj/item/weapon/stock_parts/manipulator = 1,
|
||||
/obj/item/weapon/stock_parts/capacitor = 1,
|
||||
)
|
||||
|
||||
/obj/item/weapon/circuitboard/weathercontrol
|
||||
name = "Circuit Board (Weather Control Device)"
|
||||
desc = "A circuit board used to operate a weather control device."
|
||||
build_path = /obj/machinery/weathercontrol
|
||||
board_type = MACHINE
|
||||
origin_tech = Tc_PROGRAMMING + "=4"
|
||||
req_components = list(
|
||||
/obj/item/weapon/stock_parts/matter_bin/adv/super/bluespace = 1,
|
||||
/obj/item/weapon/stock_parts/micro_laser/high/ultra = 2,
|
||||
/obj/item/weapon/cell/rad = 1,
|
||||
)
|
||||
184
code/game/machinery/weathercontrol.dm
Normal file
184
code/game/machinery/weathercontrol.dm
Normal file
@@ -0,0 +1,184 @@
|
||||
/obj/machinery/weathercontrol
|
||||
name = "weather control device"
|
||||
desc = "A device which uses weather control techniques such as cloud seeding to manipulate atmospheric conditions. It runs on bluespace crystals."
|
||||
icon = 'icons/obj/stationobjs_32x64.dmi'
|
||||
icon_state = "wcd0"
|
||||
use_power = 1
|
||||
density = 1
|
||||
anchored = 1
|
||||
machine_flags = SCREWTOGGLE | CROWDESTROY | WRENCHMOVE | FIXED2WORK
|
||||
req_access = list(access_rnd)
|
||||
idle_power_usage = 100
|
||||
var/error_message = null
|
||||
var/efficiency_modifier = 0 //Subtract from crystal costs
|
||||
var/crystal_reserve = 0 //Powered by bluespace crystals, this represents how much.
|
||||
|
||||
/obj/machinery/weathercontrol/New()
|
||||
. = ..()
|
||||
component_parts = newlist(
|
||||
/obj/item/weapon/circuitboard/weathercontrol,
|
||||
/obj/item/weapon/cell/rad,
|
||||
/obj/item/weapon/stock_parts/matter_bin/adv/super/bluespace,
|
||||
/obj/item/weapon/stock_parts/micro_laser/high/ultra,
|
||||
/obj/item/weapon/stock_parts/micro_laser/high/ultra)
|
||||
RefreshParts()
|
||||
|
||||
/obj/machinery/weathercontrol/Destroy()
|
||||
if(crystal_reserve >= 300)
|
||||
new /obj/item/bluespace_crystal/flawless(loc)
|
||||
else
|
||||
while(crystal_reserve >= 3)
|
||||
new /obj/item/bluespace_crystal(loc)
|
||||
crystal_reserve -= 3
|
||||
while(crystal_reserve > 0)
|
||||
new /obj/item/bluespace_crystal/artificial(loc)
|
||||
crystal_reserve--
|
||||
..()
|
||||
|
||||
/obj/machinery/weathercontrol/RefreshParts()
|
||||
var/T = 0
|
||||
for(var/obj/item/weapon/stock_parts/micro_laser/ML in component_parts)
|
||||
T += ML.rating
|
||||
efficiency_modifier = (T/2)-3
|
||||
//Both tier 3: 0; one tier 4: 0.5, both tier 4: 1
|
||||
|
||||
/obj/machinery/weathercontrol/update_icon()
|
||||
icon_state = "wcd[crystal_reserve > 0]"
|
||||
|
||||
/obj/machinery/weathercontrol/attack_hand(mob/user)
|
||||
return ui_interact(user)
|
||||
|
||||
/obj/machinery/weathercontrol/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open=NANOUI_FOCUS)
|
||||
if (gcDestroyed || !get_turf(src) || !anchored)
|
||||
if(!ui)
|
||||
ui = nanomanager.get_open_ui(user, src, ui_key)
|
||||
if(ui)
|
||||
ui.close()
|
||||
return
|
||||
|
||||
var/data[0]
|
||||
data["error"] = error_message
|
||||
|
||||
if(map.climate)
|
||||
var/datum/climate/C = map.climate
|
||||
var/datum/weather/CW = C.current_weather
|
||||
var/forecast_dat
|
||||
for(var/datum/weather/W in C.forecasts)
|
||||
forecast_dat += "[W.name] "
|
||||
data["name"] = name
|
||||
data["currentweather"] = CW
|
||||
data["remaining_time"] = formatTimeDuration(CW.timeleft)
|
||||
data["forecast"] = forecast_dat
|
||||
data["crystals"] = crystal_reserve
|
||||
else
|
||||
data["error"] = "Error: No climate detected."
|
||||
|
||||
// update the ui if it exists, returns null if no ui is passed/found
|
||||
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
|
||||
if (!ui)
|
||||
ui = new(user, src, ui_key, "weathercontrol.tmpl", "Weather Control Device", 380, 250)
|
||||
ui.set_initial_data(data)
|
||||
ui.open()
|
||||
|
||||
#define DISRUPT_COST 1
|
||||
#define INTENSIFY_COST 1
|
||||
#define ABATE_COST 2
|
||||
|
||||
#define SUCCESS 1
|
||||
#define NOFIRE 2
|
||||
#define NEED_CRYSTALS -3
|
||||
#define POWER_ERROR -4
|
||||
/obj/machinery/weathercontrol/Topic(href, href_list)
|
||||
if(..())
|
||||
return
|
||||
if(usr.incapacitated() || (!Adjacent(usr)&&!isAdminGhost(usr)) || !usr.dexterity_check() || !map.climate)
|
||||
return
|
||||
if(!allowed(usr) && !emagged)
|
||||
to_chat(usr,"<span class='warning'>Access denied.</span>")
|
||||
return
|
||||
if(stat & NOPOWER)
|
||||
return
|
||||
var/datum/climate/C = map.climate
|
||||
var/datum/weather/CW = C.current_weather
|
||||
|
||||
var/feedback = NOFIRE
|
||||
var/usedcost = 0
|
||||
|
||||
if(stat & NOPOWER)
|
||||
feedback = POWER_ERROR
|
||||
else
|
||||
if(href_list["disrupt"])
|
||||
feedback = SUCCESS
|
||||
usedcost = DISRUPT_COST
|
||||
if(!burn_crystals(DISRUPT_COST))
|
||||
feedback = NEED_CRYSTALS
|
||||
else
|
||||
if(C.current_weather.next_weather.len < 2)
|
||||
feedback = CANNOT_CHANGE
|
||||
else
|
||||
CW.timeleft = min(1 MINUTES, CW.timeleft)
|
||||
C.forecast()
|
||||
if(href_list["intensify"])
|
||||
feedback = SUCCESS
|
||||
usedcost = INTENSIFY_COST
|
||||
if(!burn_crystals(INTENSIFY_COST))
|
||||
feedback = NEED_CRYSTALS
|
||||
else
|
||||
feedback = C.weather_shift(INTENSIFY)
|
||||
if(href_list["abate"])
|
||||
feedback = SUCCESS
|
||||
usedcost = ABATE_COST
|
||||
if(!burn_crystals(ABATE_COST))
|
||||
feedback = NEED_CRYSTALS
|
||||
else
|
||||
feedback = C.weather_shift(ABATE)
|
||||
|
||||
var/soundpath = 'sound/machines/warning-buzzer.ogg'
|
||||
switch(feedback)
|
||||
if(POWER_ERROR)
|
||||
error_message = "Error: Unpowered."
|
||||
if(NEED_CRYSTALS)
|
||||
error_message = "Error: Refraction index low. Load new bluespace crystals."
|
||||
if(CANNOT_CHANGE)
|
||||
error_message = "Error: Cannot change weather."
|
||||
refund(usedcost)
|
||||
if(INVALID_STEP)
|
||||
error_message = "Error: Machine malfunction."
|
||||
refund(usedcost)
|
||||
if(FALSE)
|
||||
error_message = "Error: Weather already present."
|
||||
refund(usedcost)
|
||||
if(SUCCESS)
|
||||
error_message = "Success: Atmoforming climate."
|
||||
soundpath = 'sound/machines/hiss.ogg'
|
||||
if(NOFIRE)
|
||||
return
|
||||
playsound(src, soundpath, vol = 50, vary = FALSE)
|
||||
nanomanager.update_uis(src)
|
||||
update_icon()
|
||||
spawn(4 SECONDS)
|
||||
error_message = null
|
||||
return 1
|
||||
|
||||
/obj/machinery/weathercontrol/proc/burn_crystals(var/cost)
|
||||
var/tcost = cost - efficiency_modifier
|
||||
if(tcost>crystal_reserve)
|
||||
return FALSE
|
||||
crystal_reserve = max(0, crystal_reserve - tcost)
|
||||
return TRUE
|
||||
|
||||
/obj/machinery/weathercontrol/proc/refund(var/num)
|
||||
var/tnum = num - efficiency_modifier
|
||||
crystal_reserve += tnum
|
||||
|
||||
/obj/machinery/weathercontrol/attackby(var/obj/item/I, var/mob/user)
|
||||
..()
|
||||
if(istype(I, /obj/item/bluespace_crystal))
|
||||
var/obj/item/bluespace_crystal/B = I
|
||||
if(user.drop_item(B, src))
|
||||
crystal_reserve += B.blueChargeValue
|
||||
B.playtoolsound(src, 50)
|
||||
to_chat(user, "<span class='notice'>You insert \the [B] into \the [src].")
|
||||
nanomanager.update_uis(src)
|
||||
qdel(B)
|
||||
update_icon()
|
||||
@@ -112,3 +112,13 @@
|
||||
materials = list(MAT_GLASS = 2000, SACID = 20)
|
||||
category = "Console Boards"
|
||||
build_path = /obj/item/weapon/circuitboard/suspension_gen
|
||||
|
||||
/datum/design/weathercontroldevice
|
||||
name = "Circuit Design (Weather Control Device)"
|
||||
desc = "The circuitboard for a weather control device."
|
||||
id = "weathercontrol"
|
||||
req_tech = list(Tc_PROGRAMMING = 4)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 2000, SACID = 20)
|
||||
category = "Console Boards"
|
||||
build_path = /obj/item/weapon/circuitboard/weathercontrol
|
||||
BIN
icons/obj/stationobjs_32x64.dmi
Normal file
BIN
icons/obj/stationobjs_32x64.dmi
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.0 KiB |
530
maps/snaxi.dmm
530
maps/snaxi.dmm
@@ -23260,6 +23260,7 @@
|
||||
icon_state = "1-2";
|
||||
tag = ""
|
||||
},
|
||||
/obj/machinery/holosign/morgue,
|
||||
/turf/simulated/floor{
|
||||
icon_state = "dark"
|
||||
},
|
||||
@@ -36520,13 +36521,17 @@
|
||||
},
|
||||
/area/science/server)
|
||||
"boN" = (
|
||||
/obj/machinery/light{
|
||||
dir = 8
|
||||
},
|
||||
/turf/simulated/floor{
|
||||
icon_state = "warnwhitecorner"
|
||||
icon_state = "white"
|
||||
},
|
||||
/area/science/lab)
|
||||
"boO" = (
|
||||
/turf/simulated/floor{
|
||||
icon_state = "warnwhite"
|
||||
dir = 1;
|
||||
icon_state = "rampbottom"
|
||||
},
|
||||
/area/science/lab)
|
||||
"boP" = (
|
||||
@@ -37036,46 +37041,18 @@
|
||||
},
|
||||
/area/science/server)
|
||||
"bpM" = (
|
||||
/obj/structure/table,
|
||||
/obj/item/clothing/suit/storage/wintercoat/medical/science,
|
||||
/obj/item/clothing/suit/storage/wintercoat/medical/science,
|
||||
/obj/item/clothing/suit/storage/wintercoat/medical/science,
|
||||
/obj/item/clothing/suit/storage/wintercoat/medical/science,
|
||||
/obj/item/clothing/suit/storage/wintercoat/medical/science,
|
||||
/obj/item/clothing/suit/storage/wintercoat/medical/science,
|
||||
/obj/machinery/firealarm{
|
||||
dir = 8;
|
||||
pixel_x = -24
|
||||
},
|
||||
/turf/simulated/floor{
|
||||
dir = 6;
|
||||
icon_state = "warnwhite"
|
||||
icon_state = "warnwhitecorner"
|
||||
},
|
||||
/area/science/lab)
|
||||
"bpN" = (
|
||||
/obj/machinery/r_n_d/destructive_analyzer,
|
||||
/turf/simulated/floor/bluegrid,
|
||||
/area/science/lab)
|
||||
"bpO" = (
|
||||
/obj/machinery/constructable_frame/machine_frame,
|
||||
/obj/machinery/media/receiver/boombox/wallmount/muzak{
|
||||
pixel_y = -24
|
||||
},
|
||||
/turf/simulated/floor/bluegrid,
|
||||
/area/science/lab)
|
||||
"bpP" = (
|
||||
/obj/machinery/computer/rdconsole/core,
|
||||
/obj/machinery/light,
|
||||
/turf/simulated/floor/bluegrid,
|
||||
/area/science/lab)
|
||||
"bpQ" = (
|
||||
/obj/machinery/r_n_d/fabricator/protolathe,
|
||||
/turf/simulated/floor/bluegrid,
|
||||
/area/science/lab)
|
||||
"bpR" = (
|
||||
/obj/machinery/r_n_d/fabricator/circuit_imprinter,
|
||||
/obj/item/weapon/reagent_containers/glass/beaker/sulphuric,
|
||||
/turf/simulated/floor/bluegrid,
|
||||
/turf/simulated/floor{
|
||||
icon_state = "warnwhite"
|
||||
},
|
||||
/area/science/lab)
|
||||
"bpS" = (
|
||||
/obj/item/clothing/glasses/simonglasses,
|
||||
@@ -37423,36 +37400,30 @@
|
||||
/area/science/server)
|
||||
"bqx" = (
|
||||
/obj/structure/window/reinforced{
|
||||
dir = 8
|
||||
icon = 'icons/obj/objects.dmi';
|
||||
icon_state = "rail";
|
||||
name = "safety rail"
|
||||
},
|
||||
/obj/structure/window/reinforced{
|
||||
dir = 1
|
||||
},
|
||||
/obj/structure/grille,
|
||||
/obj/structure/window/reinforced,
|
||||
/obj/structure/window/full/reinforced,
|
||||
/turf/simulated/floor/plating,
|
||||
/obj/machinery/r_n_d/destructive_analyzer,
|
||||
/turf/simulated/floor/bluegrid,
|
||||
/area/science/lab)
|
||||
"bqy" = (
|
||||
/obj/structure/window/reinforced{
|
||||
dir = 1
|
||||
icon = 'icons/obj/objects.dmi';
|
||||
icon_state = "rail";
|
||||
name = "safety rail"
|
||||
},
|
||||
/obj/structure/grille,
|
||||
/obj/structure/window/reinforced,
|
||||
/obj/structure/window/full/reinforced,
|
||||
/turf/simulated/floor/plating,
|
||||
/obj/machinery/r_n_d/fabricator/protolathe,
|
||||
/turf/simulated/floor/bluegrid,
|
||||
/area/science/lab)
|
||||
"bqz" = (
|
||||
/obj/structure/window/reinforced{
|
||||
dir = 1
|
||||
icon = 'icons/obj/objects.dmi';
|
||||
icon_state = "rail";
|
||||
name = "safety rail"
|
||||
},
|
||||
/obj/structure/window/reinforced{
|
||||
dir = 4
|
||||
},
|
||||
/obj/structure/grille,
|
||||
/obj/structure/window/reinforced,
|
||||
/obj/structure/window/full/reinforced,
|
||||
/turf/simulated/floor/plating,
|
||||
/obj/machinery/r_n_d/fabricator/circuit_imprinter,
|
||||
/turf/simulated/floor/bluegrid,
|
||||
/area/science/lab)
|
||||
"bqA" = (
|
||||
/obj/structure/bed/chair{
|
||||
@@ -44596,6 +44567,7 @@
|
||||
tag = ""
|
||||
},
|
||||
/obj/machinery/door_timer/cell_1{
|
||||
dir = 1;
|
||||
pixel_y = 32
|
||||
},
|
||||
/turf/simulated/floor{
|
||||
@@ -100582,6 +100554,12 @@
|
||||
/area/bridge/meeting_room{
|
||||
name = "\improper Security Station Bridge"
|
||||
})
|
||||
"dTR" = (
|
||||
/turf/simulated/floor{
|
||||
dir = 8;
|
||||
icon_state = "rampbottom"
|
||||
},
|
||||
/area/science/lab)
|
||||
"dWH" = (
|
||||
/obj/structure/disposalpipe/segment,
|
||||
/obj/machinery/door/firedoor/border_only{
|
||||
@@ -100706,6 +100684,16 @@
|
||||
icon_state = "freezerfloor"
|
||||
},
|
||||
/area/security/perma)
|
||||
"eVS" = (
|
||||
/obj/structure/fence{
|
||||
dir = 4
|
||||
},
|
||||
/obj/effect/decal/warning_stripes{
|
||||
icon_state = "warning";
|
||||
tag = "icon-warning"
|
||||
},
|
||||
/turf/unsimulated/floor/snow/asphalt,
|
||||
/area/science/lab)
|
||||
"eYF" = (
|
||||
/obj/machinery/computer/climate/wall{
|
||||
pixel_x = -30
|
||||
@@ -100904,6 +100892,13 @@
|
||||
/area/maintenance/fsmaint2{
|
||||
name = "Auxiliary Docking"
|
||||
})
|
||||
"haA" = (
|
||||
/obj/machinery/door/airlock/external{
|
||||
name = "Weather Control Access";
|
||||
req_one_access_txt = "7; 29"
|
||||
},
|
||||
/turf/simulated/floor/plating,
|
||||
/area/science/lab)
|
||||
"hiu" = (
|
||||
/turf/simulated/floor{
|
||||
dir = 1;
|
||||
@@ -100911,6 +100906,14 @@
|
||||
tag = "icon-darkblue (NORTH)"
|
||||
},
|
||||
/area/security/perma)
|
||||
"hlM" = (
|
||||
/obj/effect/decal/warning_stripes{
|
||||
dir = 8;
|
||||
icon_state = "warning_corner";
|
||||
tag = "icon-warning_corner (WEST)"
|
||||
},
|
||||
/turf/unsimulated/floor/snow/asphalt,
|
||||
/area/science/lab)
|
||||
"hrm" = (
|
||||
/obj/structure/cable{
|
||||
d1 = 1;
|
||||
@@ -100928,6 +100931,13 @@
|
||||
/area/maintenance/fsmaint2{
|
||||
name = "Auxiliary Docking"
|
||||
})
|
||||
"hta" = (
|
||||
/obj/effect/decal/cleanable/blood/oil{
|
||||
dir = 4;
|
||||
icon_state = "floor6"
|
||||
},
|
||||
/turf/unsimulated/floor/snow/asphalt,
|
||||
/area/science/lab)
|
||||
"hxZ" = (
|
||||
/obj/machinery/light,
|
||||
/obj/machinery/media/receiver/boombox/wallmount/muzak{
|
||||
@@ -101058,6 +101068,18 @@
|
||||
},
|
||||
/turf/simulated/floor/carpet,
|
||||
/area/security/hos)
|
||||
"ila" = (
|
||||
/obj/structure/window/reinforced{
|
||||
dir = 1
|
||||
},
|
||||
/obj/structure/window/reinforced{
|
||||
dir = 4
|
||||
},
|
||||
/obj/structure/grille,
|
||||
/obj/structure/window/reinforced,
|
||||
/obj/structure/window/full/reinforced,
|
||||
/turf/simulated/floor/plating,
|
||||
/area/science/lab)
|
||||
"ioN" = (
|
||||
/obj/machinery/door/airlock/external{
|
||||
req_access_txt = "13;24"
|
||||
@@ -101152,6 +101174,10 @@
|
||||
/area/engine/locker{
|
||||
name = "\improper Engineering Foyer"
|
||||
})
|
||||
"iZe" = (
|
||||
/obj/item/weapon/storage/toolbox/mechanical,
|
||||
/turf/unsimulated/floor/snow/asphalt,
|
||||
/area/science/lab)
|
||||
"jcq" = (
|
||||
/obj/machinery/disposal,
|
||||
/obj/structure/disposalpipe/trunk{
|
||||
@@ -101175,12 +101201,31 @@
|
||||
icon_state = "dark"
|
||||
},
|
||||
/area/security/brig)
|
||||
"jtQ" = (
|
||||
/obj/structure/fence{
|
||||
dir = 4
|
||||
},
|
||||
/obj/effect/decal/warning_stripes{
|
||||
icon_state = "warning";
|
||||
tag = "icon-warning"
|
||||
},
|
||||
/obj/effect/decal/warning_stripes{
|
||||
icon_state = "sci"
|
||||
},
|
||||
/turf/unsimulated/floor/snow/asphalt,
|
||||
/area/science/lab)
|
||||
"juJ" = (
|
||||
/obj/machinery/computer/climate/wall{
|
||||
pixel_y = -30
|
||||
},
|
||||
/turf/simulated/floor/plating,
|
||||
/area/supply/miningdelivery)
|
||||
"jCa" = (
|
||||
/turf/simulated/floor{
|
||||
dir = 8;
|
||||
icon_state = "neutralfull"
|
||||
},
|
||||
/area/science/lab)
|
||||
"jCX" = (
|
||||
/obj/machinery/door/airlock/vault{
|
||||
name = "The Hole";
|
||||
@@ -101200,6 +101245,12 @@
|
||||
icon_state = "dark vault stripe"
|
||||
},
|
||||
/area/security/perma)
|
||||
"jNt" = (
|
||||
/obj/machinery/light,
|
||||
/turf/simulated/floor{
|
||||
icon_state = "purple"
|
||||
},
|
||||
/area/science/lab)
|
||||
"jTM" = (
|
||||
/obj/machinery/door_control{
|
||||
desc = "A remote control-switch for a door to space.";
|
||||
@@ -101301,6 +101352,9 @@
|
||||
icon_state = "dark"
|
||||
},
|
||||
/area/security/brig)
|
||||
"kHu" = (
|
||||
/turf/simulated/floor,
|
||||
/area/science/lab)
|
||||
"kJd" = (
|
||||
/obj/structure/window/reinforced{
|
||||
dir = 8
|
||||
@@ -101586,6 +101640,15 @@
|
||||
},
|
||||
/turf/unsimulated/floor/snow,
|
||||
/area/surface/forest/south)
|
||||
"mmF" = (
|
||||
/obj/structure/window/reinforced{
|
||||
icon = 'icons/obj/objects.dmi';
|
||||
icon_state = "rail";
|
||||
name = "safety rail"
|
||||
},
|
||||
/obj/machinery/computer/rdconsole/core,
|
||||
/turf/simulated/floor/bluegrid,
|
||||
/area/science/lab)
|
||||
"mwy" = (
|
||||
/obj/machinery/atmospherics/unary/vent_scrubber/on{
|
||||
dir = 8;
|
||||
@@ -101639,6 +101702,21 @@
|
||||
icon_state = "dark"
|
||||
},
|
||||
/area/security/perma)
|
||||
"naM" = (
|
||||
/obj/structure/window/reinforced{
|
||||
dir = 8;
|
||||
icon = 'icons/obj/objects.dmi';
|
||||
icon_state = "rail";
|
||||
name = "safety rail"
|
||||
},
|
||||
/obj/structure/window/reinforced{
|
||||
icon = 'icons/obj/objects.dmi';
|
||||
icon_state = "rail";
|
||||
name = "safety rail"
|
||||
},
|
||||
/obj/machinery/constructable_frame/machine_frame,
|
||||
/turf/simulated/floor/bluegrid,
|
||||
/area/science/lab)
|
||||
"ndg" = (
|
||||
/obj/structure/closet/wardrobe/pjs,
|
||||
/obj/item/stack/sheet/wood{
|
||||
@@ -101674,6 +101752,11 @@
|
||||
},
|
||||
/turf/simulated/floor/plating,
|
||||
/area/engineering/atmos)
|
||||
"noa" = (
|
||||
/turf/simulated/floor{
|
||||
icon_state = "purple"
|
||||
},
|
||||
/area/science/lab)
|
||||
"nop" = (
|
||||
/obj/item/device/flashlight/lamp,
|
||||
/obj/structure/table/woodentable,
|
||||
@@ -101681,6 +101764,17 @@
|
||||
/area/security/toilet{
|
||||
name = "Brig Dormitories"
|
||||
})
|
||||
"ntc" = (
|
||||
/obj/machinery/constructable_frame/machine_frame{
|
||||
build_state = 2;
|
||||
icon_state = "box_1"
|
||||
},
|
||||
/obj/item/weapon/circuitboard/weathercontrol,
|
||||
/obj/effect/decal/warning_stripes{
|
||||
icon_state = "bot"
|
||||
},
|
||||
/turf/unsimulated/floor/snow/asphalt,
|
||||
/area/science/lab)
|
||||
"nzq" = (
|
||||
/obj/structure/grille,
|
||||
/obj/structure/window/reinforced,
|
||||
@@ -101719,6 +101813,18 @@
|
||||
icon_state = "dark"
|
||||
},
|
||||
/area/security/perma)
|
||||
"nJG" = (
|
||||
/obj/effect/decal/warning_stripes{
|
||||
dir = 8;
|
||||
icon_state = "warning";
|
||||
tag = "icon-warning (WEST)"
|
||||
},
|
||||
/obj/structure/fence,
|
||||
/turf/unsimulated/floor/snow/asphalt,
|
||||
/area/science/lab)
|
||||
"nJR" = (
|
||||
/turf/unsimulated/floor/snow/asphalt,
|
||||
/area/science/lab)
|
||||
"nZp" = (
|
||||
/obj/structure/cable{
|
||||
d1 = 1;
|
||||
@@ -101890,6 +101996,18 @@
|
||||
/area/maintenance/fsmaint2{
|
||||
name = "Auxiliary Docking"
|
||||
})
|
||||
"pcf" = (
|
||||
/obj/structure/window/reinforced{
|
||||
dir = 8
|
||||
},
|
||||
/obj/structure/window/reinforced{
|
||||
dir = 1
|
||||
},
|
||||
/obj/structure/grille,
|
||||
/obj/structure/window/reinforced,
|
||||
/obj/structure/window/full/reinforced,
|
||||
/turf/simulated/floor/plating,
|
||||
/area/science/lab)
|
||||
"pqb" = (
|
||||
/obj/structure/cable{
|
||||
d1 = 1;
|
||||
@@ -102033,6 +102151,13 @@
|
||||
icon_state = "dark"
|
||||
},
|
||||
/area/security/brig)
|
||||
"qwz" = (
|
||||
/obj/effect/decal/warning_stripes{
|
||||
icon_state = "warning";
|
||||
tag = "icon-warning"
|
||||
},
|
||||
/turf/unsimulated/floor/snow/asphalt,
|
||||
/area/science/lab)
|
||||
"qxT" = (
|
||||
/obj/structure/sign/securearea{
|
||||
desc = "A warning sign which reads 'HIGH VOLTAGE'";
|
||||
@@ -102097,6 +102222,24 @@
|
||||
},
|
||||
/turf/simulated/floor/plating,
|
||||
/area/security/perma)
|
||||
"qZv" = (
|
||||
/obj/machinery/space_heater,
|
||||
/obj/structure/window/reinforced{
|
||||
icon = 'icons/obj/objects.dmi';
|
||||
icon_state = "rail";
|
||||
name = "safety rail"
|
||||
},
|
||||
/turf/simulated/floor{
|
||||
dir = 4;
|
||||
icon_state = "purple"
|
||||
},
|
||||
/area/science/lab)
|
||||
"rev" = (
|
||||
/turf/simulated/floor{
|
||||
dir = 8;
|
||||
icon_state = "purple"
|
||||
},
|
||||
/area/science/lab)
|
||||
"rgk" = (
|
||||
/obj/machinery/door/airlock/glass_security{
|
||||
name = "Prison Medbay";
|
||||
@@ -102180,6 +102323,14 @@
|
||||
/area/maintenance/fsmaint2{
|
||||
name = "Auxiliary Docking"
|
||||
})
|
||||
"rFQ" = (
|
||||
/obj/effect/decal/warning_stripes{
|
||||
dir = 1;
|
||||
icon_state = "warning_corner";
|
||||
tag = "icon-warning_corner (NORTH)"
|
||||
},
|
||||
/turf/unsimulated/floor/snow/asphalt,
|
||||
/area/science/lab)
|
||||
"rGr" = (
|
||||
/obj/structure/punching_bag/clown,
|
||||
/turf/simulated/floor{
|
||||
@@ -102288,11 +102439,23 @@
|
||||
},
|
||||
/turf/simulated/floor/plating,
|
||||
/area/engineering/atmos)
|
||||
"rVw" = (
|
||||
/obj/structure/hanging_lantern{
|
||||
dir = 1
|
||||
},
|
||||
/turf/unsimulated/floor/snow/asphalt,
|
||||
/area/science/lab)
|
||||
"rXG" = (
|
||||
/turf/simulated/floor{
|
||||
icon_state = "freezerfloor"
|
||||
},
|
||||
/area/security/perma)
|
||||
"sdG" = (
|
||||
/obj/structure/hanging_lantern{
|
||||
dir = 4
|
||||
},
|
||||
/turf/unsimulated/floor/snow/asphalt,
|
||||
/area/science/lab)
|
||||
"sel" = (
|
||||
/obj/machinery/door/firedoor/border_only{
|
||||
name = "Firelock South"
|
||||
@@ -102427,6 +102590,14 @@
|
||||
tag = "icon-darkred (SOUTHWEST)"
|
||||
},
|
||||
/area/security/brig)
|
||||
"tYI" = (
|
||||
/obj/effect/decal/warning_stripes{
|
||||
dir = 4;
|
||||
icon_state = "warning";
|
||||
tag = "icon-warning (EAST)"
|
||||
},
|
||||
/turf/unsimulated/floor/snow/asphalt,
|
||||
/area/science/lab)
|
||||
"ucb" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
|
||||
/obj/structure/cable{
|
||||
@@ -102567,6 +102738,22 @@
|
||||
/area/maintenance/fsmaint2{
|
||||
name = "Auxiliary Docking"
|
||||
})
|
||||
"uUg" = (
|
||||
/obj/effect/decal/warning_stripes{
|
||||
dir = 4;
|
||||
icon_state = "warning_corner";
|
||||
tag = "icon-warning_corner (EAST)"
|
||||
},
|
||||
/turf/unsimulated/floor/snow/asphalt,
|
||||
/area/science/lab)
|
||||
"uWm" = (
|
||||
/obj/effect/decal/warning_stripes{
|
||||
dir = 8;
|
||||
icon_state = "warning";
|
||||
tag = "icon-warning (WEST)"
|
||||
},
|
||||
/turf/unsimulated/floor/snow/asphalt,
|
||||
/area/science/lab)
|
||||
"vXP" = (
|
||||
/obj/structure/cable{
|
||||
d1 = 1;
|
||||
@@ -102634,6 +102821,13 @@
|
||||
icon_state = "dark"
|
||||
},
|
||||
/area/security/perma)
|
||||
"wTp" = (
|
||||
/obj/effect/decal/warning_stripes{
|
||||
icon_state = "warning_corner";
|
||||
tag = "icon-warning_corner"
|
||||
},
|
||||
/turf/unsimulated/floor/snow/asphalt,
|
||||
/area/science/lab)
|
||||
"wWo" = (
|
||||
/obj/structure/cable{
|
||||
d1 = 1;
|
||||
@@ -102660,6 +102854,15 @@
|
||||
/area/maintenance/fsmaint2{
|
||||
name = "Auxiliary Docking"
|
||||
})
|
||||
"xiv" = (
|
||||
/obj/structure/window/reinforced{
|
||||
dir = 1
|
||||
},
|
||||
/obj/structure/grille,
|
||||
/obj/structure/window/reinforced,
|
||||
/obj/structure/window/full/reinforced,
|
||||
/turf/simulated/floor/plating,
|
||||
/area/science/lab)
|
||||
"xix" = (
|
||||
/obj/structure/window/reinforced{
|
||||
dir = 1
|
||||
@@ -102736,6 +102939,15 @@
|
||||
},
|
||||
/turf/simulated/floor/plating,
|
||||
/area/engineering/atmos)
|
||||
"xvF" = (
|
||||
/obj/machinery/light/small{
|
||||
dir = 4
|
||||
},
|
||||
/turf/simulated/floor/plating,
|
||||
/area/science/lab)
|
||||
"xyP" = (
|
||||
/turf/simulated/wall,
|
||||
/area/science/lab)
|
||||
"xFx" = (
|
||||
/obj/structure/disposaloutlet,
|
||||
/obj/structure/window/reinforced{
|
||||
@@ -102754,6 +102966,14 @@
|
||||
/area/maintenance/fsmaint2{
|
||||
name = "Auxiliary Docking"
|
||||
})
|
||||
"xGd" = (
|
||||
/obj/effect/decal/warning_stripes{
|
||||
dir = 1;
|
||||
icon_state = "warning";
|
||||
tag = "icon-warning (NORTH)"
|
||||
},
|
||||
/turf/unsimulated/floor/snow/asphalt,
|
||||
/area/science/lab)
|
||||
"xIN" = (
|
||||
/obj/effect/decal/warning_stripes{
|
||||
icon_state = "warning";
|
||||
@@ -102826,6 +103046,17 @@
|
||||
},
|
||||
/turf/unsimulated/floor/snow,
|
||||
/area/surface/forest/south)
|
||||
"xTs" = (
|
||||
/obj/structure/fence/end{
|
||||
dir = 4
|
||||
},
|
||||
/obj/effect/decal/warning_stripes{
|
||||
dir = 10;
|
||||
icon_state = "warning";
|
||||
tag = "icon-warning (SOUTHWEST)"
|
||||
},
|
||||
/turf/unsimulated/floor/snow/asphalt,
|
||||
/area/science/lab)
|
||||
"xTt" = (
|
||||
/obj/structure/cable{
|
||||
d1 = 1;
|
||||
@@ -102853,6 +103084,7 @@
|
||||
/area/security/perma)
|
||||
"yaW" = (
|
||||
/obj/machinery/door_timer/cell_3{
|
||||
dir = 8;
|
||||
pixel_x = -32;
|
||||
pixel_y = 0
|
||||
},
|
||||
@@ -102862,6 +103094,22 @@
|
||||
tag = "icon-darkred (WEST)"
|
||||
},
|
||||
/area/security/brig)
|
||||
"yjp" = (
|
||||
/obj/structure/table,
|
||||
/obj/item/clothing/suit/storage/wintercoat/medical/science,
|
||||
/obj/item/clothing/suit/storage/wintercoat/medical/science,
|
||||
/obj/item/clothing/suit/storage/wintercoat/medical/science,
|
||||
/obj/item/clothing/suit/storage/wintercoat/medical/science,
|
||||
/obj/item/clothing/suit/storage/wintercoat/medical/science,
|
||||
/obj/item/clothing/suit/storage/wintercoat/medical/science,
|
||||
/obj/machinery/media/receiver/boombox/wallmount/muzak{
|
||||
pixel_y = -24
|
||||
},
|
||||
/turf/simulated/floor{
|
||||
dir = 10;
|
||||
icon_state = "purple"
|
||||
},
|
||||
/area/science/lab)
|
||||
"ykP" = (
|
||||
/obj/structure/window/reinforced{
|
||||
dir = 1
|
||||
@@ -126901,7 +127149,7 @@ aYZ
|
||||
aYZ
|
||||
aYZ
|
||||
aYZ
|
||||
aYZ
|
||||
aZb
|
||||
aYZ
|
||||
aYZ
|
||||
aZb
|
||||
@@ -127203,7 +127451,7 @@ aYZ
|
||||
aYZ
|
||||
aYZ
|
||||
aYZ
|
||||
aZb
|
||||
aYZ
|
||||
aYZ
|
||||
aYZ
|
||||
aYZ
|
||||
@@ -127501,11 +127749,11 @@ boL
|
||||
boL
|
||||
boL
|
||||
boL
|
||||
aYZ
|
||||
aYZ
|
||||
aYZ
|
||||
aYZ
|
||||
aYZ
|
||||
bjP
|
||||
nJG
|
||||
nJG
|
||||
nJG
|
||||
xTs
|
||||
aYZ
|
||||
aYZ
|
||||
aYZ
|
||||
@@ -127800,14 +128048,14 @@ bmX
|
||||
bmd
|
||||
boN
|
||||
bpM
|
||||
boO
|
||||
rev
|
||||
yjp
|
||||
bjP
|
||||
aYZ
|
||||
aYZ
|
||||
aYZ
|
||||
aYZ
|
||||
aYZ
|
||||
aYZ
|
||||
aYZ
|
||||
rVw
|
||||
nJR
|
||||
nJR
|
||||
eVS
|
||||
aYZ
|
||||
aYZ
|
||||
aYZ
|
||||
@@ -128100,19 +128348,19 @@ bkR
|
||||
blY
|
||||
bmX
|
||||
bmd
|
||||
boO
|
||||
bpO
|
||||
bjP
|
||||
aYZ
|
||||
aYZ
|
||||
aYZ
|
||||
aYZ
|
||||
aYZ
|
||||
aYZ
|
||||
aYZ
|
||||
aYZ
|
||||
bmd
|
||||
bpR
|
||||
naM
|
||||
kHu
|
||||
noa
|
||||
pcf
|
||||
iZe
|
||||
hta
|
||||
nJR
|
||||
jtQ
|
||||
aYZ
|
||||
aYZ
|
||||
boz
|
||||
aYZ
|
||||
aYZ
|
||||
aYZ
|
||||
@@ -128402,16 +128650,16 @@ bkQ
|
||||
blX
|
||||
bmY
|
||||
bmd
|
||||
boO
|
||||
bpN
|
||||
bmd
|
||||
bpR
|
||||
bqx
|
||||
aYZ
|
||||
aYZ
|
||||
aYZ
|
||||
bdN
|
||||
aYZ
|
||||
aYZ
|
||||
aYZ
|
||||
kHu
|
||||
noa
|
||||
xiv
|
||||
wTp
|
||||
tYI
|
||||
uUg
|
||||
eVS
|
||||
aYZ
|
||||
aYZ
|
||||
aYZ
|
||||
@@ -128704,16 +128952,16 @@ bkT
|
||||
bma
|
||||
bmZ
|
||||
bmd
|
||||
boO
|
||||
bpQ
|
||||
bmd
|
||||
bpR
|
||||
bqy
|
||||
aYZ
|
||||
aYZ
|
||||
aYZ
|
||||
aYZ
|
||||
aYZ
|
||||
aYZ
|
||||
aYZ
|
||||
kHu
|
||||
noa
|
||||
xiv
|
||||
qwz
|
||||
ntc
|
||||
xGd
|
||||
eVS
|
||||
aYZ
|
||||
aYZ
|
||||
aZb
|
||||
@@ -129006,18 +129254,18 @@ bkS
|
||||
blZ
|
||||
bmd
|
||||
bmd
|
||||
boO
|
||||
bpP
|
||||
bqy
|
||||
bmd
|
||||
bpR
|
||||
mmF
|
||||
kHu
|
||||
jNt
|
||||
xiv
|
||||
hlM
|
||||
uWm
|
||||
rFQ
|
||||
eVS
|
||||
aYZ
|
||||
aYZ
|
||||
aYZ
|
||||
aYZ
|
||||
aYZ
|
||||
aYZ
|
||||
aYZ
|
||||
baU
|
||||
aYZ
|
||||
boz
|
||||
aYZ
|
||||
aYZ
|
||||
@@ -129308,18 +129556,18 @@ bkV
|
||||
blY
|
||||
bnb
|
||||
bmd
|
||||
boO
|
||||
bmd
|
||||
bpR
|
||||
bqz
|
||||
kHu
|
||||
noa
|
||||
ila
|
||||
nJR
|
||||
sdG
|
||||
nJR
|
||||
eVS
|
||||
aYZ
|
||||
aYZ
|
||||
aYZ
|
||||
aYZ
|
||||
aYZ
|
||||
aYZ
|
||||
aYZ
|
||||
boz
|
||||
aYZ
|
||||
baU
|
||||
aYZ
|
||||
aYZ
|
||||
aYZ
|
||||
@@ -129612,14 +129860,14 @@ bna
|
||||
bnV
|
||||
boP
|
||||
boP
|
||||
bnX
|
||||
aYZ
|
||||
aYZ
|
||||
aYZ
|
||||
aYZ
|
||||
aYZ
|
||||
aYZ
|
||||
aYZ
|
||||
boP
|
||||
kHu
|
||||
dTR
|
||||
xyP
|
||||
haA
|
||||
xyP
|
||||
nJR
|
||||
eVS
|
||||
aYZ
|
||||
aYZ
|
||||
aYZ
|
||||
@@ -129914,17 +130162,17 @@ bnc
|
||||
bnW
|
||||
boP
|
||||
bpS
|
||||
bnX
|
||||
aYZ
|
||||
aYZ
|
||||
aYZ
|
||||
aYZ
|
||||
aYZ
|
||||
aYZ
|
||||
aYZ
|
||||
aYZ
|
||||
boP
|
||||
qZv
|
||||
jCa
|
||||
haA
|
||||
xvF
|
||||
xyP
|
||||
nJR
|
||||
jtQ
|
||||
aYZ
|
||||
aYZ
|
||||
bdN
|
||||
aYZ
|
||||
aYZ
|
||||
aYZ
|
||||
@@ -130216,14 +130464,14 @@ bkW
|
||||
bjP
|
||||
boP
|
||||
bnX
|
||||
boP
|
||||
boP
|
||||
bnX
|
||||
bnX
|
||||
bnX
|
||||
aYZ
|
||||
aYZ
|
||||
aYZ
|
||||
aYZ
|
||||
aYZ
|
||||
xyP
|
||||
xyP
|
||||
xyP
|
||||
nJR
|
||||
eVS
|
||||
aYZ
|
||||
aYZ
|
||||
aYZ
|
||||
|
||||
42
nano/templates/weathercontrol.tmpl
Normal file
42
nano/templates/weathercontrol.tmpl
Normal file
@@ -0,0 +1,42 @@
|
||||
<!--
|
||||
Used In File(s): \code\game\machinery\weathercontrol.dm
|
||||
-->
|
||||
{{if data.error}}
|
||||
<div class='item'>
|
||||
<div class='statusDisplay'>
|
||||
<div class="line">
|
||||
<span class='bad'>{{:data.error}}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{else}}
|
||||
<div class='item'>
|
||||
<div class='statusDisplay'>
|
||||
<div class="line">
|
||||
<div class="statusLabel">Crystal refraction:</div>
|
||||
<div class="statusValue">{{:data.crystals}}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='item'>
|
||||
<div class='statusDisplay'>
|
||||
<div class="line">
|
||||
<div class="statusLabel">Current snowfall:</div>
|
||||
<div class="statusValue">{{:data.currentweather}} ({{:data.remaining_time}})</div>
|
||||
</div>
|
||||
<div class="line">
|
||||
<div class="statusLabel">Forecast:</div>
|
||||
<div class="statusValue">{{:data.forecast}}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='item'>
|
||||
<div class='statusDisplay'>
|
||||
<div class="line">
|
||||
{{:helper.link("Disrupt", "arrowrefresh-1-w", {'disrupt': '1'})}}
|
||||
{{:helper.link("Intensify", "arrowstop-1-n", {'intensify': '1'})}}
|
||||
{{:helper.link("Abate", "arrowstop-1-s", {'abate': '1'})}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
@@ -698,6 +698,7 @@
|
||||
#include "code\game\machinery\vending.dm"
|
||||
#include "code\game\machinery\vending_packs.dm"
|
||||
#include "code\game\machinery\washing_machine.dm"
|
||||
#include "code\game\machinery\weathercontrol.dm"
|
||||
#include "code\game\machinery\wishgranter.dm"
|
||||
#include "code\game\machinery\atmoalter\area_atmos_computer.dm"
|
||||
#include "code\game\machinery\atmoalter\canister.dm"
|
||||
@@ -2676,7 +2677,7 @@
|
||||
#include "maprendering\maprendering.dm"
|
||||
#include "maps\_map.dm"
|
||||
#include "maps\_map_override.dm"
|
||||
#include "maps\snaxi.dm"
|
||||
#include "maps\tgstation.dm"
|
||||
#include "maps\defficiency\areas.dm"
|
||||
#include "maps\lampreystation\lamprey.dm"
|
||||
#include "maps\packedstation\telecomms.dm"
|
||||
|
||||
Reference in New Issue
Block a user