Runtime Map Loading (#3597)

changes:

Maps are no longer compiled in, instead loaded directly from the DMMs at runtime.
Z level defines have been moved from the config to map datums.
Unit tests now use typecaches.
DMMS now actually works.
DMMS has been updated slightly.
DMMS is now capable of loading simple lists of non-text types.
DMMS is now faster when loading many types without mapped in attributes and when loading area instances.
Asteroid generation is now defined on the map datum instead of being hard-coded in SSasteroid.
Holodeck presets are now defined on the map datum.
Atmos machinery now uses Initialize().
This commit is contained in:
Lohikar
2017-10-18 15:07:34 -05:00
committed by Erki
parent 0f35cf09d7
commit 61b5203d24
192 changed files with 166664 additions and 167417 deletions

View File

@@ -2,10 +2,15 @@ language: generic
sudo: false sudo: false
env: env:
BYOND_MAJOR="511" global:
BYOND_MINOR="1385" BYOND_MAJOR="511"
MACRO_COUNT=120 BYOND_MINOR="1385"
FLYWAY_BUILD="4.2.0" MACRO_COUNT=120
FLYWAY_BUILD="4.2.0"
matrix:
- USE_MAP=aurora
- USE_MAP=runtime
- USE_MAP=exodus
cache: cache:
directories: directories:
@@ -44,7 +49,7 @@ script:
- python tools/GenerateChangelog/ss13_genchangelog.py html/changelog.html html/changelogs --dry-run - python tools/GenerateChangelog/ss13_genchangelog.py html/changelog.html html/changelogs --dry-run
- source $HOME/BYOND-${BYOND_MAJOR}.${BYOND_MINOR}/byond/bin/byondsetup - source $HOME/BYOND-${BYOND_MAJOR}.${BYOND_MINOR}/byond/bin/byondsetup
- cp config/example/* config/ - cp config/example/* config/
- scripts/dm.sh -DUNIT_TEST aurorastation.dme - scripts/dm.sh -DUNIT_TEST -M$USE_MAP aurorastation.dme
- grep "0 warnings" build_log.txt - grep "0 warnings" build_log.txt
- DreamDaemon aurorastation.dmb -invisible -trusted -core 2>&1 | tee log.txt - DreamDaemon aurorastation.dmb -invisible -trusted -core 2>&1 | tee log.txt
- grep "All Unit Tests Passed" log.txt - grep "All Unit Tests Passed" log.txt

3
_maps/_README.dm Normal file
View File

@@ -0,0 +1,3 @@
/*
-- INCLUDE THE BELOW DM FILES INSTEAD OF INCLUDING THE MAPS DIRECTLY IF YOU WANT TO FORCE A MAP! --
*/

1
_maps/aurora.dm Normal file
View File

@@ -0,0 +1 @@
#define DEFAULT_MAP "aurora"

1
_maps/exodus.dm Normal file
View File

@@ -0,0 +1 @@
#define DEFAULT_MAP "exodus"

1
_maps/runtime.dm Normal file
View File

@@ -0,0 +1 @@
#define DEFAULT_MAP "runtime"

View File

@@ -183,6 +183,7 @@
#include "code\controllers\subsystems\trade.dm" #include "code\controllers\subsystems\trade.dm"
#include "code\controllers\subsystems\vote.dm" #include "code\controllers\subsystems\vote.dm"
#include "code\controllers\subsystems\initialization\asteroid.dm" #include "code\controllers\subsystems\initialization\asteroid.dm"
#include "code\controllers\subsystems\initialization\atlas.dm"
#include "code\controllers\subsystems\initialization\atoms.dm" #include "code\controllers\subsystems\initialization\atoms.dm"
#include "code\controllers\subsystems\initialization\minimap.dm" #include "code\controllers\subsystems\initialization\minimap.dm"
#include "code\controllers\subsystems\initialization\misc_early.dm" #include "code\controllers\subsystems\initialization\misc_early.dm"
@@ -2273,13 +2274,16 @@
#include "code\ZAS\Zone.dm" #include "code\ZAS\Zone.dm"
#include "interface\interface.dm" #include "interface\interface.dm"
#include "interface\skin.dmf" #include "interface\skin.dmf"
#include "maps\aurora\aurora-1_centcomm.dmm" #include "maps\_mapsystem\map.dm"
#include "maps\aurora\aurora-2_under-station.dmm" #include "maps\_mapsystem\map_unit.dm"
#include "maps\aurora\aurora-3_sublevel.dmm" #include "maps\aurora\code\aurora.dm"
#include "maps\aurora\aurora-4_mainlevel.dmm" #include "maps\aurora\code\aurora_holodeck.dm"
#include "maps\aurora\aurora-5_interstitial.dmm" #include "maps\aurora\code\aurora_shuttles.dm"
#include "maps\aurora\aurora-6_surface.dmm" #include "maps\aurora\code\aurora_unittest.dm"
#include "maps\aurora\aurora-7_roof.dmm" #include "maps\exodus\code\exodus.dm"
#include "maps\aurora\aurora-8_derelict.dmm" #include "maps\exodus\code\exodus_areas.dm"
#include "maps\aurora\aurora-9_space.dmm" #include "maps\exodus\code\exodus_shuttles.dm"
#include "maps\exodus\code\exodus_unittest.dm"
#include "maps\runtime\code\runtime.dm"
#include "maps\runtime\code\runtime_unittest.dm"
// END_INCLUDE // END_INCLUDE

View File

@@ -30,7 +30,8 @@ Pipelines + Other Objects -> Pipe network
var/obj/machinery/atmospherics/node2 var/obj/machinery/atmospherics/node2
gfi_layer_rotation = GFI_ROTATION_OVERDIR gfi_layer_rotation = GFI_ROTATION_OVERDIR
/obj/machinery/atmospherics/New() /obj/machinery/atmospherics/Initialize(mapload)
. = ..()
if(!icon_manager) if(!icon_manager)
icon_manager = new() icon_manager = new()
@@ -40,17 +41,16 @@ Pipelines + Other Objects -> Pipe network
if(!pipe_color_check(pipe_color)) if(!pipe_color_check(pipe_color))
pipe_color = null pipe_color = null
..()
if (mapload)
return INITIALIZE_HINT_LATELOAD
/obj/machinery/atmospherics/proc/atmos_init() /obj/machinery/atmospherics/proc/atmos_init()
// atmos_init() and Initialize() must be separate, as atmos_init() can be called multiple times after the machine has been initialized. // atmos_init() and Initialize() must be separate, as atmos_init() can be called multiple times after the machine has been initialized.
/obj/machinery/atmospherics/Initialize(mapload, ...) /obj/machinery/atmospherics/LateInitialize()
. = ..() atmos_init()
if (mapload)
atmos_init()
/obj/machinery/atmospherics/attackby(atom/A, mob/user as mob) /obj/machinery/atmospherics/attackby(atom/A, mob/user as mob)
if(istype(A, /obj/item/device/pipe_painter)) if(istype(A, /obj/item/device/pipe_painter))

View File

@@ -9,8 +9,7 @@ obj/machinery/atmospherics/binary
var/datum/pipe_network/network1 var/datum/pipe_network/network1
var/datum/pipe_network/network2 var/datum/pipe_network/network2
New() Initialize()
..()
switch(dir) switch(dir)
if(NORTH) if(NORTH)
initialize_directions = NORTH|SOUTH initialize_directions = NORTH|SOUTH
@@ -25,6 +24,7 @@ obj/machinery/atmospherics/binary
air1.volume = 200 air1.volume = 200
air2.volume = 200 air2.volume = 200
. = ..()
// Housekeeping and pipe network stuff below // Housekeeping and pipe network stuff below
network_expand(datum/pipe_network/new_network, obj/machinery/atmospherics/pipe/reference) network_expand(datum/pipe_network/new_network, obj/machinery/atmospherics/pipe/reference)

View File

@@ -24,8 +24,8 @@
density = 1 density = 1
/obj/machinery/atmospherics/binary/circulator/New() /obj/machinery/atmospherics/binary/circulator/Initialize()
..() . = ..()
desc = initial(desc) + " Its outlet port is to the [dir2text(dir)]." desc = initial(desc) + " Its outlet port is to the [dir2text(dir)]."
air1.volume = 400 air1.volume = 400

View File

@@ -41,8 +41,8 @@
//2: Do not pass input_pressure_min //2: Do not pass input_pressure_min
//4: Do not pass output_pressure_max //4: Do not pass output_pressure_max
/obj/machinery/atmospherics/binary/dp_vent_pump/New() /obj/machinery/atmospherics/binary/dp_vent_pump/Initialize()
..() . = ..()
air1.volume = ATMOS_DEFAULT_VOLUME_PUMP air1.volume = ATMOS_DEFAULT_VOLUME_PUMP
air2.volume = ATMOS_DEFAULT_VOLUME_PUMP air2.volume = ATMOS_DEFAULT_VOLUME_PUMP
icon = null icon = null
@@ -50,8 +50,8 @@
/obj/machinery/atmospherics/binary/dp_vent_pump/high_volume /obj/machinery/atmospherics/binary/dp_vent_pump/high_volume
name = "Large Dual Port Air Vent" name = "Large Dual Port Air Vent"
/obj/machinery/atmospherics/binary/dp_vent_pump/high_volume/New() /obj/machinery/atmospherics/binary/dp_vent_pump/high_volume/Initialize()
..() . = ..()
air1.volume = ATMOS_DEFAULT_VOLUME_PUMP + 800 air1.volume = ATMOS_DEFAULT_VOLUME_PUMP + 800
air2.volume = ATMOS_DEFAULT_VOLUME_PUMP + 800 air2.volume = ATMOS_DEFAULT_VOLUME_PUMP + 800

View File

@@ -24,8 +24,8 @@
var/id = null var/id = null
var/datum/radio_frequency/radio_connection var/datum/radio_frequency/radio_connection
/obj/machinery/atmospherics/binary/passive_gate/New() /obj/machinery/atmospherics/binary/passive_gate/Initialize()
..() . = ..()
air1.volume = ATMOS_DEFAULT_VOLUME_PUMP * 2.5 air1.volume = ATMOS_DEFAULT_VOLUME_PUMP * 2.5
air2.volume = ATMOS_DEFAULT_VOLUME_PUMP * 2.5 air2.volume = ATMOS_DEFAULT_VOLUME_PUMP * 2.5

View File

@@ -10,8 +10,8 @@
var/efficiency = 0.4 var/efficiency = 0.4
var/kin_energy = 0 var/kin_energy = 0
var/datum/gas_mixture/air_in = new var/datum/gas_mixture/air_in
var/datum/gas_mixture/air_out = new var/datum/gas_mixture/air_out
var/volume_ratio = 0.2 var/volume_ratio = 0.2
var/kin_loss = 0.001 var/kin_loss = 0.001
@@ -20,9 +20,10 @@
var/datum/pipe_network/network1 var/datum/pipe_network/network1
var/datum/pipe_network/network2 var/datum/pipe_network/network2
New() Initialize()
..() air_in = new
air_in.volume = 200 air_in.volume = 200
air_out = new
air_out.volume = 800 air_out.volume = 800
volume_ratio = air_in.volume / (air_in.volume + air_out.volume) volume_ratio = air_in.volume / (air_in.volume + air_out.volume)
switch(dir) switch(dir)
@@ -34,6 +35,7 @@
initialize_directions = NORTH|SOUTH initialize_directions = NORTH|SOUTH
if(WEST) if(WEST)
initialize_directions = NORTH|SOUTH initialize_directions = NORTH|SOUTH
. = ..()
Destroy() Destroy()
loc = null loc = null
@@ -234,10 +236,13 @@
var/kin_to_el_ratio = 0.1 //How much kinetic energy will be taken from turbine and converted into electricity var/kin_to_el_ratio = 0.1 //How much kinetic energy will be taken from turbine and converted into electricity
var/obj/machinery/atmospherics/pipeturbine/turbine var/obj/machinery/atmospherics/pipeturbine/turbine
New() Initialize()
..() ..()
spawn(1) return INITIALIZE_HINT_LATELOAD
updateConnection()
LateInitialize()
..()
updateConnection()
proc/updateConnection() proc/updateConnection()
turbine = null turbine = null

View File

@@ -34,8 +34,8 @@ Thus, the two variables affect pump operation are set in New():
var/id = null var/id = null
var/datum/radio_frequency/radio_connection var/datum/radio_frequency/radio_connection
/obj/machinery/atmospherics/binary/pump/New() /obj/machinery/atmospherics/binary/pump/Initialize()
..() . = ..()
air1.volume = ATMOS_DEFAULT_VOLUME_PUMP air1.volume = ATMOS_DEFAULT_VOLUME_PUMP
air2.volume = ATMOS_DEFAULT_VOLUME_PUMP air2.volume = ATMOS_DEFAULT_VOLUME_PUMP

View File

@@ -19,8 +19,8 @@
var/list/filtering_outputs = list() //maps gasids to gas_mixtures var/list/filtering_outputs = list() //maps gasids to gas_mixtures
/obj/machinery/atmospherics/omni/filter/New() /obj/machinery/atmospherics/omni/filter/Initialize()
..() . = ..()
rebuild_filtering_list() rebuild_filtering_list()
for(var/datum/omni_port/P in ports) for(var/datum/omni_port/P in ports)
P.air.volume = ATMOS_DEFAULT_VOLUME_FILTER P.air.volume = ATMOS_DEFAULT_VOLUME_FILTER

View File

@@ -24,8 +24,8 @@
var/list/mixing_inputs = list() var/list/mixing_inputs = list()
/obj/machinery/atmospherics/omni/mixer/New() /obj/machinery/atmospherics/omni/mixer/Initialize()
..() . = ..()
if(mapper_set()) if(mapper_set())
var/con = 0 var/con = 0
for(var/datum/omni_port/P in ports) for(var/datum/omni_port/P in ports)

View File

@@ -26,8 +26,8 @@
var/list/ports = new() var/list/ports = new()
/obj/machinery/atmospherics/omni/New() /obj/machinery/atmospherics/omni/Initialize()
..() . = ..()
icon_state = "base" icon_state = "base"
ports = new() ports = new()

View File

@@ -19,9 +19,9 @@
level = 1 level = 1
/obj/machinery/atmospherics/portables_connector/New() /obj/machinery/atmospherics/portables_connector/Initialize()
initialize_directions = dir initialize_directions = dir
..() . = ..()
/obj/machinery/atmospherics/portables_connector/update_icon() /obj/machinery/atmospherics/portables_connector/update_icon()
icon_state = "connector" icon_state = "connector"

View File

@@ -36,8 +36,8 @@
if(frequency) if(frequency)
radio_connection = SSradio.add_object(src, frequency, RADIO_ATMOSIA) radio_connection = SSradio.add_object(src, frequency, RADIO_ATMOSIA)
/obj/machinery/atmospherics/trinary/filter/New() /obj/machinery/atmospherics/trinary/filter/Initialize()
..() . = ..()
switch(filter_type) switch(filter_type)
if(0) //removing hydrocarbons if(0) //removing hydrocarbons
filtered_out = list("phoron") filtered_out = list("phoron")
@@ -237,8 +237,7 @@
dir = SOUTH dir = SOUTH
initialize_directions = SOUTH|NORTH|EAST initialize_directions = SOUTH|NORTH|EAST
obj/machinery/atmospherics/trinary/filter/m_filter/New() obj/machinery/atmospherics/trinary/filter/m_filter/Initialize()
..()
switch(dir) switch(dir)
if(NORTH) if(NORTH)
initialize_directions = WEST|NORTH|SOUTH initialize_directions = WEST|NORTH|SOUTH
@@ -248,6 +247,7 @@ obj/machinery/atmospherics/trinary/filter/m_filter/New()
initialize_directions = EAST|WEST|NORTH initialize_directions = EAST|WEST|NORTH
if(WEST) if(WEST)
initialize_directions = WEST|SOUTH|EAST initialize_directions = WEST|SOUTH|EAST
. = ..()
/obj/machinery/atmospherics/trinary/filter/m_filter/atmos_init() /obj/machinery/atmospherics/trinary/filter/m_filter/atmos_init()
set_frequency(frequency) set_frequency(frequency)

View File

@@ -63,8 +63,8 @@
if(old_stat != stat) if(old_stat != stat)
update_icon() update_icon()
/obj/machinery/atmospherics/trinary/mixer/New() /obj/machinery/atmospherics/trinary/mixer/Initialize()
..() . = ..()
air1.volume = ATMOS_DEFAULT_VOLUME_MIXER air1.volume = ATMOS_DEFAULT_VOLUME_MIXER
air2.volume = ATMOS_DEFAULT_VOLUME_MIXER air2.volume = ATMOS_DEFAULT_VOLUME_MIXER
air3.volume = ATMOS_DEFAULT_VOLUME_MIXER * 1.5 air3.volume = ATMOS_DEFAULT_VOLUME_MIXER * 1.5
@@ -183,8 +183,7 @@ obj/machinery/atmospherics/trinary/mixer/t_mixer
//node 3 is the outlet, nodes 1 & 2 are intakes //node 3 is the outlet, nodes 1 & 2 are intakes
obj/machinery/atmospherics/trinary/mixer/t_mixer/New() obj/machinery/atmospherics/trinary/mixer/t_mixer/Initialize()
..()
switch(dir) switch(dir)
if(NORTH) if(NORTH)
initialize_directions = EAST|NORTH|WEST initialize_directions = EAST|NORTH|WEST
@@ -194,6 +193,7 @@ obj/machinery/atmospherics/trinary/mixer/t_mixer/New()
initialize_directions = EAST|NORTH|SOUTH initialize_directions = EAST|NORTH|SOUTH
if(WEST) if(WEST)
initialize_directions = WEST|NORTH|SOUTH initialize_directions = WEST|NORTH|SOUTH
. = ..()
obj/machinery/atmospherics/trinary/mixer/t_mixer/atmos_init() obj/machinery/atmospherics/trinary/mixer/t_mixer/atmos_init()
..() ..()
@@ -229,8 +229,7 @@ obj/machinery/atmospherics/trinary/mixer/m_mixer
//node 3 is the outlet, nodes 1 & 2 are intakes //node 3 is the outlet, nodes 1 & 2 are intakes
obj/machinery/atmospherics/trinary/mixer/m_mixer/New() obj/machinery/atmospherics/trinary/mixer/m_mixer/Initialize()
..()
switch(dir) switch(dir)
if(NORTH) if(NORTH)
initialize_directions = WEST|NORTH|SOUTH initialize_directions = WEST|NORTH|SOUTH
@@ -240,6 +239,7 @@ obj/machinery/atmospherics/trinary/mixer/m_mixer/New()
initialize_directions = EAST|WEST|NORTH initialize_directions = EAST|WEST|NORTH
if(WEST) if(WEST)
initialize_directions = WEST|SOUTH|EAST initialize_directions = WEST|SOUTH|EAST
. = ..()
obj/machinery/atmospherics/trinary/mixer/m_mixer/atmos_init() obj/machinery/atmospherics/trinary/mixer/m_mixer/atmos_init()
..() ..()

View File

@@ -13,8 +13,7 @@ obj/machinery/atmospherics/trinary
var/datum/pipe_network/network2 var/datum/pipe_network/network2
var/datum/pipe_network/network3 var/datum/pipe_network/network3
New() Initialize()
..()
switch(dir) switch(dir)
if(NORTH) if(NORTH)
initialize_directions = EAST|NORTH|SOUTH initialize_directions = EAST|NORTH|SOUTH
@@ -31,6 +30,7 @@ obj/machinery/atmospherics/trinary
air1.volume = 200 air1.volume = 200
air2.volume = 200 air2.volume = 200
air3.volume = 200 air3.volume = 200
. = ..()
// Housekeeping and pipe network stuff below // Housekeeping and pipe network stuff below
network_expand(datum/pipe_network/new_network, obj/machinery/atmospherics/pipe/reference) network_expand(datum/pipe_network/new_network, obj/machinery/atmospherics/pipe/reference)

View File

@@ -46,9 +46,9 @@
/obj/machinery/atmospherics/tvalve/hide(var/i) /obj/machinery/atmospherics/tvalve/hide(var/i)
update_underlays() update_underlays()
/obj/machinery/atmospherics/tvalve/New() /obj/machinery/atmospherics/tvalve/Initialize()
initialize_directions() initialize_directions()
..() . = ..()
/obj/machinery/atmospherics/tvalve/proc/initialize_directions() /obj/machinery/atmospherics/tvalve/proc/initialize_directions()
switch(dir) switch(dir)

View File

@@ -28,9 +28,9 @@
/obj/item/stack/cable_coil{amount = 2} /obj/item/stack/cable_coil{amount = 2}
) )
/obj/machinery/atmospherics/unary/freezer/New() /obj/machinery/atmospherics/unary/freezer/Initialize()
..()
initialize_directions = dir initialize_directions = dir
. = ..()
/obj/machinery/atmospherics/unary/freezer/atmos_init() /obj/machinery/atmospherics/unary/freezer/atmos_init()
if(node) if(node)

View File

@@ -27,8 +27,8 @@
/obj/item/stack/cable_coil{amount = 5} /obj/item/stack/cable_coil{amount = 5}
) )
/obj/machinery/atmospherics/unary/heater/New() /obj/machinery/atmospherics/unary/heater/Initialize()
..() . = ..()
initialize_directions = dir initialize_directions = dir
/obj/machinery/atmospherics/unary/heater/atmos_init() /obj/machinery/atmospherics/unary/heater/atmos_init()

View File

@@ -24,8 +24,8 @@
level = 1 level = 1
/obj/machinery/atmospherics/unary/outlet_injector/New() /obj/machinery/atmospherics/unary/outlet_injector/Initialize()
..() . = ..()
air_contents.volume = ATMOS_DEFAULT_VOLUME_PUMP + 500 //Give it a small reservoir for injecting. Also allows it to have a higher flow rate limit than vent pumps, to differentiate injectors a bit more. air_contents.volume = ATMOS_DEFAULT_VOLUME_PUMP + 500 //Give it a small reservoir for injecting. Also allows it to have a higher flow rate limit than vent pumps, to differentiate injectors a bit more.
/obj/machinery/atmospherics/unary/outlet_injector/update_icon() /obj/machinery/atmospherics/unary/outlet_injector/update_icon()

View File

@@ -23,9 +23,8 @@ obj/machinery/atmospherics/unary/oxygen_generator
return return
New() Initialize()
..() . = ..()
air_contents.volume = 50 air_contents.volume = 50
machinery_process() machinery_process()

View File

@@ -9,12 +9,11 @@
var/datum/pipe_network/network var/datum/pipe_network/network
New() Initialize()
..()
initialize_directions = dir initialize_directions = dir
air_contents = new air_contents = new
air_contents.volume = 200 air_contents.volume = 200
. = ..()
// Housekeeping and pipe network stuff below // Housekeeping and pipe network stuff below
network_expand(datum/pipe_network/new_network, obj/machinery/atmospherics/pipe/reference) network_expand(datum/pipe_network/new_network, obj/machinery/atmospherics/pipe/reference)

View File

@@ -69,8 +69,8 @@
pressure_checks = 2 pressure_checks = 2
pressure_checks_default = 2 pressure_checks_default = 2
/obj/machinery/atmospherics/unary/vent_pump/New() /obj/machinery/atmospherics/unary/vent_pump/Initialize()
..() . = ..()
air_contents.volume = ATMOS_DEFAULT_VOLUME_PUMP air_contents.volume = ATMOS_DEFAULT_VOLUME_PUMP
@@ -105,8 +105,8 @@
power_channel = EQUIP power_channel = EQUIP
power_rating = 15000 //15 kW ~ 20 HP power_rating = 15000 //15 kW ~ 20 HP
/obj/machinery/atmospherics/unary/vent_pump/high_volume/New() /obj/machinery/atmospherics/unary/vent_pump/high_volume/Initialize()
..() . = ..()
air_contents.volume = ATMOS_DEFAULT_VOLUME_PUMP + 800 air_contents.volume = ATMOS_DEFAULT_VOLUME_PUMP + 800
/obj/machinery/atmospherics/unary/vent_pump/engine /obj/machinery/atmospherics/unary/vent_pump/engine
@@ -114,8 +114,8 @@
power_channel = ENVIRON power_channel = ENVIRON
power_rating = 30000 //15 kW ~ 20 HP power_rating = 30000 //15 kW ~ 20 HP
/obj/machinery/atmospherics/unary/vent_pump/engine/New() /obj/machinery/atmospherics/unary/vent_pump/engine/Initialize()
..() . = ..()
air_contents.volume = ATMOS_DEFAULT_VOLUME_PUMP + 500 //meant to match air injector air_contents.volume = ATMOS_DEFAULT_VOLUME_PUMP + 500 //meant to match air injector
/obj/machinery/atmospherics/unary/vent_pump/update_icon(var/safety = 0) /obj/machinery/atmospherics/unary/vent_pump/update_icon(var/safety = 0)

View File

@@ -33,8 +33,8 @@
use_power = 1 use_power = 1
icon_state = "map_scrubber_on" icon_state = "map_scrubber_on"
/obj/machinery/atmospherics/unary/vent_scrubber/New() /obj/machinery/atmospherics/unary/vent_scrubber/Initialize()
..() . = ..()
air_contents.volume = ATMOS_DEFAULT_VOLUME_FILTER air_contents.volume = ATMOS_DEFAULT_VOLUME_FILTER

View File

@@ -37,13 +37,13 @@
/obj/machinery/atmospherics/valve/hide(var/i) /obj/machinery/atmospherics/valve/hide(var/i)
update_underlays() update_underlays()
/obj/machinery/atmospherics/valve/New() /obj/machinery/atmospherics/valve/Initialize()
switch(dir) switch(dir)
if(NORTH || SOUTH) if(NORTH || SOUTH)
initialize_directions = NORTH|SOUTH initialize_directions = NORTH|SOUTH
if(EAST || WEST) if(EAST || WEST)
initialize_directions = EAST|WEST initialize_directions = EAST|WEST
..() . = ..()
/obj/machinery/atmospherics/valve/network_expand(datum/pipe_network/new_network, obj/machinery/atmospherics/pipe/reference) /obj/machinery/atmospherics/valve/network_expand(datum/pipe_network/new_network, obj/machinery/atmospherics/pipe/reference)
if(reference == node1) if(reference == node1)
@@ -166,7 +166,7 @@
build_network() build_network()
update_icon() queue_icon_update()
update_underlays() update_underlays()
if(openDuringInit) if(openDuringInit)
@@ -262,7 +262,7 @@
var/old_stat = stat var/old_stat = stat
..() ..()
if(old_stat != stat) if(old_stat != stat)
update_icon() queue_icon_update()
/obj/machinery/atmospherics/valve/digital/update_icon() /obj/machinery/atmospherics/valve/digital/update_icon()
..() ..()

View File

@@ -16,11 +16,11 @@
buckle_lying = 1 buckle_lying = 1
// BubbleWrap // BubbleWrap
/obj/machinery/atmospherics/pipe/simple/heat_exchanging/New() /obj/machinery/atmospherics/pipe/simple/heat_exchanging/Initialize()
..() . = ..()
initialize_directions_he = initialize_directions // The auto-detection from /pipe is good enough for a simple HE pipe initialize_directions_he = initialize_directions // The auto-detection from /pipe is good enough for a simple HE pipe
// BubbleWrap END // BubbleWrap END
color = "#404040" //we don't make use of the fancy overlay system for colours, use this to set the default. color = "#404040" //we don't make use of the fancy overlay system for colours, use this to set the default.
/obj/machinery/atmospherics/pipe/simple/heat_exchanging/atmos_init() /obj/machinery/atmospherics/pipe/simple/heat_exchanging/atmos_init()
normalize_dir() normalize_dir()
@@ -46,8 +46,7 @@
qdel(src) qdel(src)
return return
update_icon() queue_icon_update()
return
/obj/machinery/atmospherics/pipe/simple/heat_exchanging/machinery_process() /obj/machinery/atmospherics/pipe/simple/heat_exchanging/machinery_process()
if(!parent) if(!parent)
@@ -111,23 +110,23 @@
minimum_temperature_difference = 300 minimum_temperature_difference = 300
thermal_conductivity = WALL_HEAT_TRANSFER_COEFFICIENT thermal_conductivity = WALL_HEAT_TRANSFER_COEFFICIENT
// BubbleWrap // BubbleWrap
/obj/machinery/atmospherics/pipe/simple/heat_exchanging/junction/New() /obj/machinery/atmospherics/pipe/simple/heat_exchanging/junction/Initialize()
.. () switch (dir)
switch ( dir ) if (SOUTH)
if ( SOUTH )
initialize_directions = NORTH initialize_directions = NORTH
initialize_directions_he = SOUTH initialize_directions_he = SOUTH
if ( NORTH ) if (NORTH)
initialize_directions = SOUTH initialize_directions = SOUTH
initialize_directions_he = NORTH initialize_directions_he = NORTH
if ( EAST ) if (EAST)
initialize_directions = WEST initialize_directions = WEST
initialize_directions_he = EAST initialize_directions_he = EAST
if ( WEST ) if (WEST)
initialize_directions = EAST initialize_directions = EAST
initialize_directions_he = WEST initialize_directions_he = WEST
// BubbleWrap END // BubbleWrap END
. = ..()
/obj/machinery/atmospherics/pipe/simple/heat_exchanging/junction/atmos_init() /obj/machinery/atmospherics/pipe/simple/heat_exchanging/junction/atmos_init()
for(var/obj/machinery/atmospherics/target in get_step(src,initialize_directions)) for(var/obj/machinery/atmospherics/target in get_step(src,initialize_directions))
@@ -143,5 +142,4 @@
qdel(src) qdel(src)
return return
update_icon() queue_icon_update()
return

View File

@@ -18,10 +18,10 @@
/obj/machinery/atmospherics/pipe/drain_power() /obj/machinery/atmospherics/pipe/drain_power()
return -1 return -1
/obj/machinery/atmospherics/pipe/New() /obj/machinery/atmospherics/pipe/Initialize()
if(istype(get_turf(src), /turf/simulated/wall) || istype(get_turf(src), /turf/simulated/shuttle/wall) || istype(get_turf(src), /turf/unsimulated/wall)) if(istype(get_turf(src), /turf/simulated/wall) || istype(get_turf(src), /turf/simulated/shuttle/wall) || istype(get_turf(src), /turf/unsimulated/wall))
level = 1 level = 1
..() . = ..()
/obj/machinery/atmospherics/pipe/hides_under_flooring() /obj/machinery/atmospherics/pipe/hides_under_flooring()
return level != 2 return level != 2
@@ -168,8 +168,7 @@
level = 1 level = 1
gfi_layer_rotation = GFI_ROTATION_DEFDIR gfi_layer_rotation = GFI_ROTATION_DEFDIR
/obj/machinery/atmospherics/pipe/simple/New() /obj/machinery/atmospherics/pipe/simple/Initialize()
..()
// Pipe colors and icon states are handled by an image cache - so color and icon should // Pipe colors and icon states are handled by an image cache - so color and icon should
// be null. For mapping purposes color is defined in the object definitions. // be null. For mapping purposes color is defined in the object definitions.
@@ -189,11 +188,12 @@
initialize_directions = SOUTH|EAST initialize_directions = SOUTH|EAST
if(SOUTHWEST) if(SOUTHWEST)
initialize_directions = SOUTH|WEST initialize_directions = SOUTH|WEST
. = ..()
/obj/machinery/atmospherics/pipe/simple/hide(var/i) /obj/machinery/atmospherics/pipe/simple/hide(var/i)
if(istype(loc, /turf/simulated)) if(istype(loc, /turf/simulated))
invisibility = i ? 101 : 0 invisibility = i ? 101 : 0
update_icon() queue_icon_update()
/obj/machinery/atmospherics/pipe/simple/machinery_process() /obj/machinery/atmospherics/pipe/simple/machinery_process()
if(!parent) //This should cut back on the overhead calling build_network thousands of times per cycle if(!parent) //This should cut back on the overhead calling build_network thousands of times per cycle
@@ -305,7 +305,7 @@
var/turf/T = loc var/turf/T = loc
if(level == 1 && !T.is_plating()) hide(1) if(level == 1 && !T.is_plating()) hide(1)
update_icon() queue_icon_update()
/obj/machinery/atmospherics/pipe/simple/disconnect(obj/machinery/atmospherics/reference) /obj/machinery/atmospherics/pipe/simple/disconnect(obj/machinery/atmospherics/reference)
if(reference == node1) if(reference == node1)
@@ -435,8 +435,7 @@
gfi_layer_rotation = GFI_ROTATION_OVERDIR gfi_layer_rotation = GFI_ROTATION_OVERDIR
/obj/machinery/atmospherics/pipe/manifold/New() /obj/machinery/atmospherics/pipe/manifold/Initialize()
..()
alpha = 255 alpha = 255
icon = null icon = null
@@ -449,11 +448,12 @@
initialize_directions = SOUTH|WEST|NORTH initialize_directions = SOUTH|WEST|NORTH
if(WEST) if(WEST)
initialize_directions = NORTH|EAST|SOUTH initialize_directions = NORTH|EAST|SOUTH
. = ..()
/obj/machinery/atmospherics/pipe/manifold/hide(var/i) /obj/machinery/atmospherics/pipe/manifold/hide(var/i)
if(istype(loc, /turf/simulated)) if(istype(loc, /turf/simulated))
invisibility = i ? 101 : 0 invisibility = i ? 101 : 0
update_icon() queue_icon_update()
/obj/machinery/atmospherics/pipe/manifold/pipeline_expansion() /obj/machinery/atmospherics/pipe/manifold/pipeline_expansion()
return list(node1, node2, node3) return list(node1, node2, node3)
@@ -548,7 +548,7 @@
/obj/machinery/atmospherics/pipe/manifold/update_underlays() /obj/machinery/atmospherics/pipe/manifold/update_underlays()
..() ..()
update_icon() queue_icon_update()
/obj/machinery/atmospherics/pipe/manifold/atmos_init() /obj/machinery/atmospherics/pipe/manifold/atmos_init()
var/connect_directions = (NORTH|SOUTH|EAST|WEST)&(~dir) var/connect_directions = (NORTH|SOUTH|EAST|WEST)&(~dir)
@@ -594,7 +594,7 @@
var/turf/T = get_turf(src) var/turf/T = get_turf(src)
if(level == 1 && !T.is_plating()) hide(1) if(level == 1 && !T.is_plating()) hide(1)
update_icon() queue_icon_update()
/obj/machinery/atmospherics/pipe/manifold/visible /obj/machinery/atmospherics/pipe/manifold/visible
icon_state = "map" icon_state = "map"
@@ -695,8 +695,8 @@
level = 1 level = 1
layer = 2.4 //under wires with their 2.44 layer = 2.4 //under wires with their 2.44
/obj/machinery/atmospherics/pipe/manifold4w/New() /obj/machinery/atmospherics/pipe/manifold4w/Initialize()
..() . = ..()
alpha = 255 alpha = 255
icon = null icon = null
@@ -817,12 +817,12 @@
/obj/machinery/atmospherics/pipe/manifold4w/update_underlays() /obj/machinery/atmospherics/pipe/manifold4w/update_underlays()
..() ..()
update_icon() queue_icon_update()
/obj/machinery/atmospherics/pipe/manifold4w/hide(var/i) /obj/machinery/atmospherics/pipe/manifold4w/hide(var/i)
if(istype(loc, /turf/simulated)) if(istype(loc, /turf/simulated))
invisibility = i ? 101 : 0 invisibility = i ? 101 : 0
update_icon() queue_icon_update()
/obj/machinery/atmospherics/pipe/manifold4w/atmos_init() /obj/machinery/atmospherics/pipe/manifold4w/atmos_init()
@@ -856,7 +856,7 @@
var/turf/T = get_turf(src) var/turf/T = get_turf(src)
if(level == 1 && !T.is_plating()) hide(1) if(level == 1 && !T.is_plating()) hide(1)
update_icon() queue_icon_update()
/obj/machinery/atmospherics/pipe/manifold4w/visible /obj/machinery/atmospherics/pipe/manifold4w/visible
icon_state = "map_4way" icon_state = "map_4way"
@@ -954,14 +954,14 @@
var/obj/machinery/atmospherics/node var/obj/machinery/atmospherics/node
/obj/machinery/atmospherics/pipe/cap/New() /obj/machinery/atmospherics/pipe/cap/Initialize()
..()
initialize_directions = dir initialize_directions = dir
. = ..()
/obj/machinery/atmospherics/pipe/cap/hide(var/i) /obj/machinery/atmospherics/pipe/cap/hide(var/i)
if(istype(loc, /turf/simulated)) if(istype(loc, /turf/simulated))
invisibility = i ? 101 : 0 invisibility = i ? 101 : 0
update_icon() queue_icon_update()
/obj/machinery/atmospherics/pipe/cap/pipeline_expansion() /obj/machinery/atmospherics/pipe/cap/pipeline_expansion()
return list(node) return list(node)
@@ -1013,7 +1013,7 @@
var/turf/T = src.loc // hide if turf is not intact var/turf/T = src.loc // hide if turf is not intact
if(level == 1 && !T.is_plating()) hide(1) if(level == 1 && !T.is_plating()) hide(1)
update_icon() queue_icon_update()
/obj/machinery/atmospherics/pipe/cap/visible /obj/machinery/atmospherics/pipe/cap/visible
level = 2 level = 2
@@ -1076,10 +1076,10 @@
initialize_directions = SOUTH initialize_directions = SOUTH
density = 1 density = 1
/obj/machinery/atmospherics/pipe/tank/New() /obj/machinery/atmospherics/pipe/tank/Initialize()
icon_state = "air" icon_state = "air"
initialize_directions = dir initialize_directions = dir
..() . = ..()
/obj/machinery/atmospherics/pipe/tank/machinery_process() /obj/machinery/atmospherics/pipe/tank/machinery_process()
if(!parent) if(!parent)
@@ -1142,7 +1142,7 @@
name = "Pressure Tank (Air)" name = "Pressure Tank (Air)"
icon_state = "air_map" icon_state = "air_map"
/obj/machinery/atmospherics/pipe/tank/air/New() /obj/machinery/atmospherics/pipe/tank/air/Initialize()
air_temporary = new air_temporary = new
air_temporary.volume = volume air_temporary.volume = volume
air_temporary.temperature = T20C air_temporary.temperature = T20C
@@ -1151,77 +1151,77 @@
"nitrogen",(start_pressure*N2STANDARD)*(air_temporary.volume)/(R_IDEAL_GAS_EQUATION*air_temporary.temperature)) "nitrogen",(start_pressure*N2STANDARD)*(air_temporary.volume)/(R_IDEAL_GAS_EQUATION*air_temporary.temperature))
..() . = ..()
icon_state = "air" icon_state = "air"
/obj/machinery/atmospherics/pipe/tank/oxygen /obj/machinery/atmospherics/pipe/tank/oxygen
name = "Pressure Tank (Oxygen)" name = "Pressure Tank (Oxygen)"
icon_state = "o2_map" icon_state = "o2_map"
/obj/machinery/atmospherics/pipe/tank/oxygen/New() /obj/machinery/atmospherics/pipe/tank/oxygen/Initialize()
air_temporary = new air_temporary = new
air_temporary.volume = volume air_temporary.volume = volume
air_temporary.temperature = T20C air_temporary.temperature = T20C
air_temporary.adjust_gas("oxygen", (start_pressure)*(air_temporary.volume)/(R_IDEAL_GAS_EQUATION*air_temporary.temperature)) air_temporary.adjust_gas("oxygen", (start_pressure)*(air_temporary.volume)/(R_IDEAL_GAS_EQUATION*air_temporary.temperature))
..() . = ..()
icon_state = "o2" icon_state = "o2"
/obj/machinery/atmospherics/pipe/tank/nitrogen /obj/machinery/atmospherics/pipe/tank/nitrogen
name = "Pressure Tank (Nitrogen)" name = "Pressure Tank (Nitrogen)"
icon_state = "n2_map" icon_state = "n2_map"
/obj/machinery/atmospherics/pipe/tank/nitrogen/New() /obj/machinery/atmospherics/pipe/tank/nitrogen/Initialize()
air_temporary = new air_temporary = new
air_temporary.volume = volume air_temporary.volume = volume
air_temporary.temperature = T20C air_temporary.temperature = T20C
air_temporary.adjust_gas("nitrogen", (start_pressure)*(air_temporary.volume)/(R_IDEAL_GAS_EQUATION*air_temporary.temperature)) air_temporary.adjust_gas("nitrogen", (start_pressure)*(air_temporary.volume)/(R_IDEAL_GAS_EQUATION*air_temporary.temperature))
..() . = ..()
icon_state = "n2" icon_state = "n2"
/obj/machinery/atmospherics/pipe/tank/carbon_dioxide /obj/machinery/atmospherics/pipe/tank/carbon_dioxide
name = "Pressure Tank (Carbon Dioxide)" name = "Pressure Tank (Carbon Dioxide)"
icon_state = "co2_map" icon_state = "co2_map"
/obj/machinery/atmospherics/pipe/tank/carbon_dioxide/New() /obj/machinery/atmospherics/pipe/tank/carbon_dioxide/Initialize()
air_temporary = new air_temporary = new
air_temporary.volume = volume air_temporary.volume = volume
air_temporary.temperature = T20C air_temporary.temperature = T20C
air_temporary.adjust_gas("carbon_dioxide", (start_pressure)*(air_temporary.volume)/(R_IDEAL_GAS_EQUATION*air_temporary.temperature)) air_temporary.adjust_gas("carbon_dioxide", (start_pressure)*(air_temporary.volume)/(R_IDEAL_GAS_EQUATION*air_temporary.temperature))
..() . = ..()
icon_state = "co2" icon_state = "co2"
/obj/machinery/atmospherics/pipe/tank/phoron /obj/machinery/atmospherics/pipe/tank/phoron
name = "Pressure Tank (Phoron)" name = "Pressure Tank (Phoron)"
icon_state = "phoron_map" icon_state = "phoron_map"
/obj/machinery/atmospherics/pipe/tank/phoron/New() /obj/machinery/atmospherics/pipe/tank/phoron/Initialize()
air_temporary = new air_temporary = new
air_temporary.volume = volume air_temporary.volume = volume
air_temporary.temperature = T20C air_temporary.temperature = T20C
air_temporary.adjust_gas("phoron", (start_pressure)*(air_temporary.volume)/(R_IDEAL_GAS_EQUATION*air_temporary.temperature)) air_temporary.adjust_gas("phoron", (start_pressure)*(air_temporary.volume)/(R_IDEAL_GAS_EQUATION*air_temporary.temperature))
..() . = ..()
icon_state = "phoron" icon_state = "phoron"
/obj/machinery/atmospherics/pipe/tank/nitrous_oxide /obj/machinery/atmospherics/pipe/tank/nitrous_oxide
name = "Pressure Tank (Nitrous Oxide)" name = "Pressure Tank (Nitrous Oxide)"
icon_state = "n2o_map" icon_state = "n2o_map"
/obj/machinery/atmospherics/pipe/tank/nitrous_oxide/New() /obj/machinery/atmospherics/pipe/tank/nitrous_oxide/Initialize()
air_temporary = new air_temporary = new
air_temporary.volume = volume air_temporary.volume = volume
air_temporary.temperature = T0C air_temporary.temperature = T0C
air_temporary.adjust_gas("sleeping_agent", (start_pressure)*(air_temporary.volume)/(R_IDEAL_GAS_EQUATION*air_temporary.temperature)) air_temporary.adjust_gas("sleeping_agent", (start_pressure)*(air_temporary.volume)/(R_IDEAL_GAS_EQUATION*air_temporary.temperature))
..() . = ..()
icon_state = "n2o" icon_state = "n2o"
/obj/machinery/atmospherics/pipe/vent /obj/machinery/atmospherics/pipe/vent
@@ -1240,9 +1240,9 @@
var/build_killswitch = 1 var/build_killswitch = 1
/obj/machinery/atmospherics/pipe/vent/New() /obj/machinery/atmospherics/pipe/vent/Initialize()
initialize_directions = dir initialize_directions = dir
..() . = ..()
/obj/machinery/atmospherics/pipe/vent/high_volume /obj/machinery/atmospherics/pipe/vent/high_volume
name = "Larger vent" name = "Larger vent"
@@ -1288,7 +1288,7 @@
node1 = target node1 = target
break break
update_icon() queue_icon_update()
/obj/machinery/atmospherics/pipe/vent/disconnect(obj/machinery/atmospherics/reference) /obj/machinery/atmospherics/pipe/vent/disconnect(obj/machinery/atmospherics/reference)
if(reference == node1) if(reference == node1)
@@ -1340,7 +1340,7 @@
/obj/machinery/atmospherics/pipe/simple/visible/universal/update_underlays() /obj/machinery/atmospherics/pipe/simple/visible/universal/update_underlays()
..() ..()
update_icon() queue_icon_update()
@@ -1379,7 +1379,7 @@
/obj/machinery/atmospherics/pipe/simple/hidden/universal/update_underlays() /obj/machinery/atmospherics/pipe/simple/hidden/universal/update_underlays()
..() ..()
update_icon() queue_icon_update()
/obj/machinery/atmospherics/proc/universal_underlays(var/obj/machinery/atmospherics/node, var/direction) /obj/machinery/atmospherics/proc/universal_underlays(var/obj/machinery/atmospherics/node, var/direction)
var/turf/T = loc var/turf/T = loc

View File

@@ -286,8 +286,8 @@ Will print: "/mob/living/carbon/human/death" (you can optionally embed it in a s
#define LAYER_ABOVE_TABLE 2.81 #define LAYER_ABOVE_TABLE 2.81
// Stoplag. // Stoplag.
#define TICK_CHECK ( world.tick_usage > CURRENT_TICKLIMIT ? stoplag() : 0 ) #define TICK_CHECK (world.tick_usage > CURRENT_TICKLIMIT)
#define CHECK_TICK if (world.tick_usage > CURRENT_TICKLIMIT) stoplag() #define CHECK_TICK if (TICK_CHECK) stoplag()
// Performance bullshit. // Performance bullshit.
@@ -375,7 +375,7 @@ Will print: "/mob/living/carbon/human/death" (you can optionally embed it in a s
#define DEFAULT_SIGHT (SEE_SELF|SEE_BLACKNESS) #define DEFAULT_SIGHT (SEE_SELF|SEE_BLACKNESS)
#define isStationLevel(Z) ((Z) in config.station_levels) #define isStationLevel(Z) ((Z) in current_map.station_levels)
#define isNotStationLevel(Z) !isStationLevel(Z) #define isNotStationLevel(Z) !isStationLevel(Z)
//Affects the chance that armour will block an attack. Should be between 0 and 1. //Affects the chance that armour will block an attack. Should be between 0 and 1.

View File

@@ -1,3 +1,4 @@
#define SS_INIT_MAPLOAD 22 // DMM parsing and load. Unless you know what you're doing, make sure this remains first.
#define SS_INIT_JOBS 21 #define SS_INIT_JOBS 21
#define SS_INIT_MISC_FIRST 20 #define SS_INIT_MISC_FIRST 20
#define SS_INIT_SEEDS 19 // Plant controller setup. #define SS_INIT_SEEDS 19 // Plant controller setup.

View File

@@ -12,17 +12,17 @@
/proc/is_on_same_plane_or_station(var/z1, var/z2) /proc/is_on_same_plane_or_station(var/z1, var/z2)
if(z1 == z2) if(z1 == z2)
return 1 return 1
if((z1 in config.station_levels) && (z2 in config.station_levels)) if((z1 in current_map.station_levels) && (z2 in current_map.station_levels))
return 1 return 1
return 0 return 0
/proc/max_default_z_level() /proc/max_default_z_level()
var/max_z = 0 var/max_z = 0
for(var/z in config.station_levels) for(var/z in current_map.station_levels)
max_z = max(z, max_z) max_z = max(z, max_z)
for(var/z in config.admin_levels) for(var/z in current_map.admin_levels)
max_z = max(z, max_z) max_z = max(z, max_z)
for(var/z in config.player_levels) for(var/z in current_map.player_levels)
max_z = max(z, max_z) max_z = max(z, max_z)
return max_z return max_z
@@ -61,10 +61,10 @@
return heard return heard
/proc/isPlayerLevel(var/level) /proc/isPlayerLevel(var/level)
return level in config.player_levels return level in current_map.player_levels
/proc/isAdminLevel(var/level) /proc/isAdminLevel(var/level)
return level in config.admin_levels return level in current_map.admin_levels
/proc/isNotAdminLevel(var/level) /proc/isNotAdminLevel(var/level)
return !isAdminLevel(level) return !isAdminLevel(level)

View File

@@ -31,6 +31,8 @@ var/global/list/the_station_areas = list()
var/global/list/implants = list() var/global/list/implants = list()
var/global/list/turfs = list() //list of all turfs var/global/list/turfs = list() //list of all turfs
var/global/list/areas_by_type = list()
var/global/list/all_areas = list()
//Languages/species/whitelist. //Languages/species/whitelist.
var/global/list/all_species = list() var/global/list/all_species = list()

View File

@@ -15,22 +15,6 @@ var/church_name = null
return name return name
var/command_name = null
/proc/command_name()
if (command_name)
return command_name
var/name = "[boss_name]"
command_name = name
return name
/proc/change_command_name(var/name)
command_name = name
return name
var/religion_name = null var/religion_name = null
/proc/religion_name() /proc/religion_name()
if (religion_name) if (religion_name)
@@ -43,74 +27,8 @@ var/religion_name = null
return capitalize(name) return capitalize(name)
/proc/system_name()
return "Tau Ceti"
/proc/commstation_name()
if (dock_name)
return dock_name
/proc/station_name()
if (station_name)
return station_name
var/random = rand(1,5)
var/name = ""
//Rare: Pre-Prefix
if (prob(10))
name = pick("Imperium", "Heretical", "Cuban", "Psychic", "Elegant", "Common", "Uncommon", "Rare", "Unique", "Houseruled", "Religious", "Atheist", "Traditional", "Houseruled", "Mad", "Super", "Ultra", "Secret", "Top Secret", "Deep", "Death", "Zybourne", "Central", "Main", "Government", "Uoi", "Fat", "Automated", "Experimental", "Augmented")
station_name = name + " "
// Prefix
switch(Holiday)
//get normal name
if(null,"",0)
name = pick("", "Stanford", "Dorf", "Alium", "Prefix", "Clowning", "Aegis", "Ishimura", "Scaredy", "Death-World", "Mime", "Honk", "Rogue", "MacRagge", "Ultrameens", "Safety", "Paranoia", "Explosive", "Neckbear", "Donk", "Muppet", "North", "West", "East", "South", "Slant-ways", "Widdershins", "Rimward", "Expensive", "Procreatory", "Imperial", "Unidentified", "Immoral", "Carp", "Ork", "Pete", "Control", "Nettle", "Aspie", "Class", "Crab", "Fist","Corrogated","Skeleton","Race", "Fatguy", "Gentleman", "Capitalist", "Communist", "Bear", "Beard", "Derp", "Space", "Spess", "Star", "Moon", "System", "Mining", "Neckbeard", "Research", "Supply", "Military", "Orbital", "Battle", "Science", "Asteroid", "Home", "Production", "Transport", "Delivery", "Extraplanetary", "Orbital", "Correctional", "Robot", "Hats", "Pizza")
if(name)
station_name += name + " "
//For special days like christmas, easter, new-years etc ~Carn
if("Friday the 13th")
name = pick("Mike","Friday","Evil","Myers","Murder","Deathly","Stabby")
station_name += name + " "
random = 13
else
//get the first word of the Holiday and use that
var/i = findtext(Holiday," ",1,0)
name = copytext(Holiday,1,i)
station_name += name + " "
// Suffix
name = pick("Station", "Fortress", "Frontier", "Suffix", "Death-trap", "Space-hulk", "Lab", "Hazard","Spess Junk", "Fishery", "No-Moon", "Tomb", "Crypt", "Hut", "Monkey", "Bomb", "Trade Post", "Fortress", "Village", "Town", "City", "Edition", "Hive", "Complex", "Base", "Facility", "Depot", "Outpost", "Installation", "Drydock", "Observatory", "Array", "Relay", "Monitor", "Platform", "Construct", "Hangar", "Prison", "Center", "Port", "Waystation", "Factory", "Waypoint", "Stopover", "Hub", "HQ", "Office", "Object", "Fortification", "Colony", "Planet-Cracker", "Roost", "Fat Camp")
station_name += name + " "
// ID Number
switch(random)
if(1)
station_name += "[rand(1, 99)]"
if(2)
station_name += pick("Alpha", "Beta", "Gamma", "Delta", "Epsilon", "Zeta", "Eta", "Theta", "Iota", "Kappa", "Lambda", "Mu", "Nu", "Xi", "Omicron", "Pi", "Rho", "Sigma", "Tau", "Upsilon", "Phi", "Chi", "Psi", "Omega")
if(3)
station_name += pick("II", "III", "IV", "V", "VI", "VII", "VIII", "IX", "X", "XI", "XII", "XIII", "XIV", "XV", "XVI", "XVII", "XVIII", "XIX", "XX")
if(4)
station_name += pick("Alpha", "Bravo", "Charlie", "Delta", "Echo", "Foxtrot", "Golf", "Hotel", "India", "Juliet", "Kilo", "Lima", "Mike", "November", "Oscar", "Papa", "Quebec", "Romeo", "Sierra", "Tango", "Uniform", "Victor", "Whiskey", "X-ray", "Yankee", "Zulu")
if(5)
station_name += pick("One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Eleven", "Twelve", "Thirteen", "Fourteen", "Fifteen", "Sixteen", "Seventeen", "Eighteen", "Nineteen")
if(13)
station_name += pick("13","XIII","Thirteen")
if (config && config.server_name)
world.name = "[config.server_name]: [name]"
else
world.name = station_name
return station_name
/proc/world_name(var/name) /proc/world_name(var/name)
current_map.station_name = name
station_name = name
if (config && config.server_name) if (config && config.server_name)
world.name = "[config.server_name]: [name]" world.name = "[config.server_name]: [name]"

View File

@@ -520,3 +520,12 @@ proc/TextPreview(var/string,var/len=40)
. = base . = base
if(rest) if(rest)
. += .(rest) . += .(rest)
/proc/replacemany(text, list/replacements)
if (!LAZYLEN(replacements))
return text
. = text
for (var/replacement in replacements)
. = replacetext(., replacement, replacements[replacement])

View File

@@ -4,8 +4,6 @@ var/list/gamemode_cache = list()
var/server_name = null // server name (for world name / status) var/server_name = null // server name (for world name / status)
var/server_suffix = 0 // generate numeric suffix based on server port var/server_suffix = 0 // generate numeric suffix based on server port
var/list/lobby_screens = list("title") // Which lobby screens are available
var/log_ooc = 0 // log OOC channel var/log_ooc = 0 // log OOC channel
var/log_access = 0 // log login/logout var/log_access = 0 // log login/logout
var/log_say = 0 // log client say var/log_say = 0 // log client say
@@ -75,6 +73,7 @@ var/list/gamemode_cache = list()
var/automute_on = 0 //enables automuting/spam prevention var/automute_on = 0 //enables automuting/spam prevention
var/macro_trigger = 5 // The grace period between messages before it's counted as abusing a macro. var/macro_trigger = 5 // The grace period between messages before it's counted as abusing a macro.
var/jobs_have_minimal_access = 0 //determines whether jobs use minimal access or expanded access. var/jobs_have_minimal_access = 0 //determines whether jobs use minimal access or expanded access.
var/override_map
var/cult_ghostwriter = 1 //Allows ghosts to write in blood in cult rounds... var/cult_ghostwriter = 1 //Allows ghosts to write in blood in cult rounds...
var/cult_ghostwriter_req_cultists = 10 //...so long as this many cultists are active. var/cult_ghostwriter_req_cultists = 10 //...so long as this many cultists are active.
@@ -184,12 +183,6 @@ var/list/gamemode_cache = list()
var/python_path = "python" //Path to the python executable. Defaults to "python" on windows and "/usr/bin/env python2" on unix var/python_path = "python" //Path to the python executable. Defaults to "python" on windows and "/usr/bin/env python2" on unix
var/use_overmap = 0 var/use_overmap = 0
var/list/station_levels = list(3, 4, 5, 6, 7) // Defines which Z-levels the station exists on.
var/list/admin_levels= list(1) // Defines which Z-levels which are for admin functionality, for example including such areas as Central Command and the Syndicate Shuttle
var/list/contact_levels = list(3, 4, 5, 6) // Defines which Z-levels which, for example, a Code Red announcement may affect
var/list/player_levels = list(2, 3, 4, 5, 6, 7, 8) // Defines all Z-levels a character can typically reach
var/list/sealed_levels = list() // Defines levels that do not allow random transit at the edges.
// Event settings // Event settings
var/expected_round_length = 3 * 60 * 60 * 10 // 3 hours var/expected_round_length = 3 * 60 * 60 * 10 // 3 hours
// If the first delay has a custom start time // If the first delay has a custom start time
@@ -696,21 +689,6 @@ var/list/gamemode_cache = list()
if("use_overmap") if("use_overmap")
config.use_overmap = 1 config.use_overmap = 1
if("station_levels")
config.station_levels = text2numlist(value, ";")
if("admin_levels")
config.admin_levels = text2numlist(value, ";")
if("contact_levels")
config.contact_levels = text2numlist(value, ";")
if("player_levels")
config.player_levels = text2numlist(value, ";")
if("sealed_levels")
config.sealed_levels = text2numlist(value, ";")
if("expected_round_length") if("expected_round_length")
config.expected_round_length = MinutesToTicks(text2num(value)) config.expected_round_length = MinutesToTicks(text2num(value))
@@ -798,9 +776,6 @@ var/list/gamemode_cache = list()
if(values.len > 0) if(values.len > 0)
language_prefixes = values language_prefixes = values
if ("lobby_screens")
config.lobby_screens = text2list(value, ";")
if("delist_when_no_admins") if("delist_when_no_admins")
config.delist_when_no_admins = 1 config.delist_when_no_admins = 1
@@ -857,6 +832,9 @@ var/list/gamemode_cache = list()
if("merchant_chance") if("merchant_chance")
config.merchant_chance = text2num(value) config.merchant_chance = text2num(value)
if("force_map")
override_map = value
if("show_game_type_odd") if("show_game_type_odd")
config.show_game_type_odd = 1 config.show_game_type_odd = 1
else else

View File

@@ -24,9 +24,9 @@
shuttle.launch(src) shuttle.launch(src)
for (var/thing in current_mobs) for (var/thing in current_mobs)
var/mob/living/carbon/human/M = locate(thing) var/mob/living/carbon/human/M = locate(thing)
if (istype(M) && M.odin_despawn_timer) if (istype(M) && M.centcomm_despawn_timer)
deltimer(M.odin_despawn_timer) deltimer(M.centcomm_despawn_timer)
M.odin_despawn_timer = null M.centcomm_despawn_timer = null
current_mobs.Cut() current_mobs.Cut()
else else

View File

@@ -54,9 +54,13 @@ var/datum/controller/subsystem/emergency_shuttle/emergency_shuttle
set_launch_countdown(SHUTTLE_LEAVETIME) //get ready to return set_launch_countdown(SHUTTLE_LEAVETIME) //get ready to return
if (evac) if (evac)
priority_announcement.Announce("The Emergency Shuttle has docked with the station. You have approximately [round(estimate_launch_time()/60,1)] minutes to board the Emergency Shuttle.", new_sound = 'sound/AI/emergencyshuttledock.ogg') priority_announcement.Announce(replacetext(current_map.shuttle_docked_message, "%ETD%", round(estimate_launch_time()/60,1)), new_sound = 'sound/AI/emergencyshuttledock.ogg')
else else
priority_announcement.Announce("The scheduled Crew Transfer Shuttle to [dock_name] has docked with the station. It will depart in approximately [round(emergency_shuttle.estimate_launch_time()/60,1)] minutes.", new_sound = 'sound/AI/shuttledock.ogg') var/list/fields = list(
"%ETA%" = round(emergency_shuttle.estimate_launch_time()/60,1),
"%dock%" = current_map.dock_name
)
priority_announcement.Announce(replacemany(current_map.shuttle_docked_message, fields), new_sound = 'sound/AI/shuttledock.ogg')
//arm the escape pods //arm the escape pods
if (evac) if (evac)
@@ -85,7 +89,7 @@ var/datum/controller/subsystem/emergency_shuttle/emergency_shuttle
shuttle.move_time = SHUTTLE_TRANSIT_DURATION shuttle.move_time = SHUTTLE_TRANSIT_DURATION
evac = 1 evac = 1
priority_announcement.Announce("An emergency evacuation shuttle has been called. It will arrive in approximately [round(estimate_arrival_time()/60)] minutes.", new_sound = 'sound/AI/emergencyshuttlecalled.ogg') priority_announcement.Announce(replacetext(current_map.emergency_shuttle_called_message, "%ETA%", round(estimate_arrival_time()/60)), new_sound = 'sound/AI/emergencyshuttlecalled.ogg')
for(var/area/A in all_areas) for(var/area/A in all_areas)
if(istype(A, /area/hallway)) if(istype(A, /area/hallway))
A.readyalert() A.readyalert()
@@ -102,7 +106,11 @@ var/datum/controller/subsystem/emergency_shuttle/emergency_shuttle
//reset the shuttle transit time if we need to //reset the shuttle transit time if we need to
shuttle.move_time = SHUTTLE_TRANSIT_DURATION shuttle.move_time = SHUTTLE_TRANSIT_DURATION
priority_announcement.Announce("A crew transfer to [dock_name] has been scheduled. The shuttle has been called. It will arrive in approximately [round(estimate_arrival_time()/60)] minutes.", new_sound = 'sound/AI/shuttlecalled.ogg') var/list/replacements = list(
"%ETA%" = round(estimate_arrival_time()/60),
"%dock%" = current_map.dock_name
)
priority_announcement.Announce(replacemany(current_map.shuttle_called_message, replacements), new_sound = 'sound/AI/shuttlecalled.ogg')
//recalls the shuttle //recalls the shuttle
/datum/controller/subsystem/emergency_shuttle/proc/recall() /datum/controller/subsystem/emergency_shuttle/proc/recall()
@@ -112,14 +120,14 @@ var/datum/controller/subsystem/emergency_shuttle/emergency_shuttle
shuttle.cancel_launch(src) shuttle.cancel_launch(src)
if (evac) if (evac)
priority_announcement.Announce("The emergency shuttle has been recalled.", new_sound = 'sound/AI/emergencyshuttlerecalled.ogg') priority_announcement.Announce(current_map.emergency_shuttle_recall_message, new_sound = 'sound/AI/emergencyshuttlerecalled.ogg')
for(var/area/A in all_areas) for(var/area/A in all_areas)
if(istype(A, /area/hallway)) if(istype(A, /area/hallway))
A.readyreset() A.readyreset()
evac = 0 evac = 0
else else
priority_announcement.Announce("The scheduled crew transfer has been cancelled.", new_sound = 'sound/AI/shuttlerecalled.ogg') priority_announcement.Announce(current_map.shuttle_recall_message, new_sound = 'sound/AI/shuttlerecalled.ogg')
/datum/controller/subsystem/emergency_shuttle/proc/can_call() /datum/controller/subsystem/emergency_shuttle/proc/can_call()
if (!universe.OnShuttleCall(null)) if (!universe.OnShuttleCall(null))

View File

@@ -736,7 +736,7 @@
SearchVar(dreams) SearchVar(dreams)
SearchVar(non_fakeattack_weapons) SearchVar(non_fakeattack_weapons)
SearchVar(ghost_traps) SearchVar(ghost_traps)
SearchVar(holodeck_programs) SearchVar(current_map.holodeck_programs)
SearchVar(fruit_icon_cache) SearchVar(fruit_icon_cache)
SearchVar(plant_seed_sprites) SearchVar(plant_seed_sprites)
SearchVar(wax_recipes) SearchVar(wax_recipes)

View File

@@ -5,19 +5,6 @@
/datum/controller/subsystem/asteroid/Initialize(timeofday) /datum/controller/subsystem/asteroid/Initialize(timeofday)
if(config.generate_asteroid) if(config.generate_asteroid)
// These values determine the specific area that the map is applied to. current_map.generate_asteroid()
// Create the chasms.
new /datum/random_map/automata/cave_system/chasms(null,0,0,3,255,255)
new /datum/random_map/automata/cave_system(null,0,0,3,255,255)
new /datum/random_map/automata/cave_system/chasms(null,0,0,4,255,255)
new /datum/random_map/automata/cave_system(null,0,0,4,255,255)
new /datum/random_map/automata/cave_system/chasms(null,0,0,5,255,255)
new /datum/random_map/automata/cave_system/high_yield(null,0,0,5,255,255)
new /datum/random_map/automata/cave_system/chasms/surface(null,0,0,6,255,255)
// Create the deep mining ore distribution map.
new /datum/random_map/noise/ore(null, 0, 0, 5, 64, 64)
new /datum/random_map/noise/ore(null, 0, 0, 4, 64, 64)
new /datum/random_map/noise/ore(null, 0, 0, 3, 64, 64)
..() ..()

View File

@@ -0,0 +1,176 @@
// This file controls round-start runtime maploading.
var/datum/map/current_map // Whatever map is currently loaded. Null until SSatlas Initialize() starts.
var/datum/controller/subsystem/atlas/SSatlas
/datum/controller/subsystem/atlas
name = "Atlas"
flags = SS_NO_FIRE
init_order = SS_INIT_MAPLOAD
var/list/known_maps = list()
var/dmm_suite/maploader
var/list/height_markers = list()
var/list/mapload_callbacks = list()
var/map_override // If set, SSatlas will forcibly load this map. If the map does not exist, mapload will fail and SSatlas will panic.
var/list/spawn_locations = list()
/datum/controller/subsystem/atlas/New()
NEW_SS_GLOBAL(SSatlas)
/datum/controller/subsystem/atlas/Initialize(timeofday)
maploader = new
var/datum/map/M
for (var/type in subtypesof(/datum/map))
M = new type
if (!M.path)
log_debug("SSatlas: Map [M.name] ([M.type]) has no path set, discarding.")
qdel(M)
continue
known_maps[M.path] = M
#ifdef DEFAULT_MAP
map_override = DEFAULT_MAP
log_ss("atlas", "Using compile-selected map.")
#endif
if (!map_override)
map_override = get_selected_map()
admin_notice("<span class='danger'>Loading map [map_override].</span>", R_DEBUG)
log_ss("atlas", "Using map '[map_override]'.")
current_map = known_maps[map_override]
if (!current_map)
world.map_panic("Selected map does not exist!")
load_map_meta()
setup_spawnpoints()
world.update_status()
// Begin loading the maps.
var/maps_loaded = load_map_directory("maps/[current_map.path]/", TRUE)
log_ss("atlas", "Loaded [maps_loaded] maps.")
admin_notice("<span class='danger'>Loaded [maps_loaded] levels.</span>")
if (!maps_loaded)
world.map_panic("No maps loaded!")
setup_multiz()
QDEL_NULL(maploader)
..()
/datum/controller/subsystem/atlas/proc/load_map_directory(directory, overwrite_default_z = FALSE)
. = 0
if (!directory)
CRASH("No directory supplied.")
var/static/regex/mapregex = new(".+\\.dmm$")
var/list/files = flist(directory)
sortTim(files, /proc/cmp_text_asc)
var/mfile
var/first_dmm = TRUE
for (var/i in 1 to files.len)
mfile = files[i]
if (!mapregex.Find(mfile))
continue
log_ss("atlas", "Loading '[mfile]'.")
mfile = "[directory][mfile]"
var/target_z = 0
if (overwrite_default_z && first_dmm)
target_z = 1
first_dmm = FALSE
log_ss("atlas", "Overwriting Z[target_z].")
if (!maploader.load_map(file(mfile), 0, 0, target_z, no_changeturf = TRUE))
log_ss("atlas", "Failed to load '[mfile]'!")
.++
CHECK_TICK
/datum/controller/subsystem/atlas/proc/setup_multiz()
for (var/thing in height_markers)
var/obj/effect/landmark/map_data/marker = thing
marker.setup()
/datum/controller/subsystem/atlas/proc/get_selected_map()
if (config.override_map)
if (known_maps[config.override_map])
. = config.override_map
log_ss("atlas", "Using configured map.")
else
log_ss("atlas", "-- WARNING: CONFIGURED MAP DOES NOT EXIST, IGNORING! --")
. = "aurora"
else
. = "aurora"
/datum/controller/subsystem/atlas/proc/load_map_meta()
// This needs to be done after current_map is set, but before mapload.
lobby_image = new /obj/effect/lobby_image
admin_departments = list(
"[current_map.boss_name]",
"[current_map.system_name] Government",
"Supply"
)
priority_announcement = new(do_log = 0)
command_announcement = new(do_log = 0, do_newscast = 1)
for (var/thing in mapload_callbacks)
var/datum/callback/cb = thing
cb.InvokeAsync()
CHECK_TICK
mapload_callbacks.Cut()
mapload_callbacks = null
/datum/controller/subsystem/atlas/proc/OnMapload(datum/callback/callback)
if (!istype(callback))
CRASH("Invalid callback.")
mapload_callbacks += callback
/datum/controller/subsystem/atlas/proc/setup_spawnpoints()
for (var/type in current_map.spawn_types)
var/datum/spawnpoint/S = new type
spawn_locations[S.display_name] = S
// Called when there's a fatal, unrecoverable error in mapload. This reboots the server.
/world/proc/map_panic(reason)
to_chat(world, "<span class='danger'>Fatal error during map setup, unable to continue! Server will reboot in 60 seconds.</span>")
log_ss("atlas", "-- FATAL ERROR DURING MAP SETUP: [uppertext(reason)] --")
sleep(1 MINUTE)
world.Reboot()
/proc/station_name()
ASSERT(current_map)
. = current_map.station_name
var/sname
if (config && config.server_name)
sname = "[config.server_name]: [.]"
else
sname = .
if (world.name != sname)
world.name = sname
world.log << "Set world.name to [sname]."
/proc/system_name()
ASSERT(current_map)
return current_map.system_name
/proc/commstation_name()
ASSERT(current_map)
return current_map.dock_name

View File

@@ -37,7 +37,7 @@
log_debug("SSminimap: [holo_minimaps.len] maps.") log_debug("SSminimap: [holo_minimaps.len] maps.")
for (var/z in config.station_levels) for (var/z in current_map.station_levels)
generateStationMinimap(z) generateStationMinimap(z)
..() ..()

View File

@@ -7,6 +7,7 @@
flags = SS_NO_FIRE | SS_NO_DISPLAY flags = SS_NO_FIRE | SS_NO_DISPLAY
/datum/controller/subsystem/misc_early/Initialize(timeofday) /datum/controller/subsystem/misc_early/Initialize(timeofday)
uplink = new
// Create the data core, whatever that is. // Create the data core, whatever that is.
data_core = new /datum/datacore() data_core = new /datum/datacore()
@@ -36,14 +37,9 @@
// Set up antags. // Set up antags.
populate_antag_type_list() populate_antag_type_list()
// Populate spawnpoints for char creation.
populate_spawn_points()
// Get BOREALIS to warn staff about a lazy admin forgetting visibility to 0 // Get BOREALIS to warn staff about a lazy admin forgetting visibility to 0
// before anyone has a chance to change it! // before anyone has a chance to change it!
if (discord_bot) if (discord_bot)
discord_bot.alert_server_visibility() discord_bot.alert_server_visibility()
lobby_image = new/obj/effect/lobby_image()
..() ..()

View File

@@ -4,6 +4,8 @@
#define BE_ASSISTANT 1 #define BE_ASSISTANT 1
#define RETURN_TO_LOBBY 2 #define RETURN_TO_LOBBY 2
#define Debug(text) if (Debug2) {job_debug += text}
/datum/controller/subsystem/jobs /datum/controller/subsystem/jobs
// Subsystem stuff. // Subsystem stuff.
name = "Jobs" name = "Jobs"
@@ -32,28 +34,21 @@
/datum/controller/subsystem/jobs/proc/SetupOccupations(faction = "Station") /datum/controller/subsystem/jobs/proc/SetupOccupations(faction = "Station")
occupations = list() occupations = list()
var/list/all_jobs = typesof(/datum/job) var/list/all_jobs = current_map.allowed_jobs
if(!all_jobs.len) if(!all_jobs.len)
world << "<span class='warning'>Error setting up jobs, no job datums found!</span>" world << "<span class='warning'>Error setting up jobs, no job datums found!</span>"
return FALSE return FALSE
for(var/J in all_jobs) for(var/J in all_jobs)
var/datum/job/job = new J() var/datum/job/job = new J()
if(!job) continue if(!job || job.faction != faction)
if(job.faction != faction) continue continue
occupations += job occupations += job
if (config && config.use_age_restriction_for_jobs) if (config && config.use_age_restriction_for_jobs)
job.fetch_age_restriction() job.fetch_age_restriction()
return TRUE return TRUE
/datum/controller/subsystem/jobs/proc/Debug(text)
if (!Debug2)
return FALSE
job_debug += text
return TRUE
/datum/controller/subsystem/jobs/proc/GetJob(rank) /datum/controller/subsystem/jobs/proc/GetJob(rank)
if (!rank) if (!rank)
return null return null
@@ -431,25 +426,25 @@
return H return H
/mob/living/carbon/human /mob/living/carbon/human
var/tmp/odin_despawn_timer var/tmp/centcomm_despawn_timer
/mob/living/proc/odin_timeout() /mob/living/proc/centcomm_timeout()
if (!istype(get_area(src), /area/centcom/spawning)) if (!istype(get_area(src), /area/centcom/spawning))
return FALSE return FALSE
if (!client) if (!client)
SSjobs.odin_despawn_mob(src) SSjobs.centcomm_despawn_mob(src)
return FALSE return FALSE
return TRUE return TRUE
/mob/living/carbon/human/odin_timeout() /mob/living/carbon/human/centcomm_timeout()
. = ..() . = ..()
if (!.) if (!.)
return FALSE return FALSE
var/datum/spawnpoint/spawnpos = spawntypes["Cryogenic Storage"] var/datum/spawnpoint/spawnpos = SSatlas.spawn_locations["Cryogenic Storage"]
if(spawnpos && istype(spawnpos)) if(spawnpos && istype(spawnpos))
src << "<span class='warning'>You come to the sudden realization that you never left the Aurora at all! You were in cryo the whole time!</span>" src << "<span class='warning'>You come to the sudden realization that you never left the Aurora at all! You were in cryo the whole time!</span>"
src.forceMove(pick(spawnpos.turfs)) src.forceMove(pick(spawnpos.turfs))
@@ -459,35 +454,35 @@
SSjobs.EquipRank(src, rank, 1) SSjobs.EquipRank(src, rank, 1)
src.megavend = TRUE src.megavend = TRUE
else else
SSjobs.odin_despawn_mob(src) //somehow they can't spawn at cryo, so this is the only recourse of action. SSjobs.centcomm_despawn_mob(src) //somehow they can't spawn at cryo, so this is the only recourse of action.
return TRUE return TRUE
/mob/living/silicon/robot/odin_timeout() /mob/living/silicon/robot/centcomm_timeout()
. = ..() . = ..()
if (!.) if (!.)
return FALSE return FALSE
var/datum/spawnpoint/spawnpos = spawntypes["Cyborg Storage"] var/datum/spawnpoint/spawnpos = SSatlas.spawn_locations["Cyborg Storage"]
if(spawnpos && istype(spawnpos)) if(spawnpos && istype(spawnpos))
src << "<span class='warning'>You come to the sudden realization that you never left the Aurora at all! You were in robotic storage the whole time!</span>" src << "<span class='warning'>You come to the sudden realization that you never left the Aurora at all! You were in robotic storage the whole time!</span>"
src.forceMove(pick(spawnpos.turfs)) src.forceMove(pick(spawnpos.turfs))
global_announcer.autosay("[real_name], [mind.role_alt_title], [spawnpos.msg].", "Robotic Oversight") global_announcer.autosay("[real_name], [mind.role_alt_title], [spawnpos.msg].", "Robotic Oversight")
else else
SSjobs.odin_despawn_mob(src) SSjobs.centcomm_despawn_mob(src)
return TRUE return TRUE
// Convenience wrapper. // Convenience wrapper.
/datum/controller/subsystem/jobs/proc/odin_despawn_mob(mob/living/H) /datum/controller/subsystem/jobs/proc/centcomm_despawn_mob(mob/living/H)
if(ishuman(H)) if(ishuman(H))
global_announcer.autosay("[H.real_name], [H.mind.role_alt_title], has entered long-term storage.", "NTCC Odin Cryogenic Oversight") global_announcer.autosay("[H.real_name], [H.mind.role_alt_title], has entered long-term storage.", "[current_map.dock_name] Cryogenic Oversight")
H.visible_message("<span class='notice'>[H.name] makes their way to the Odin's cryostorage, and departs.</span>", 3) H.visible_message("<span class='notice'>[H.name] makes their way to the [current_map.dock_short]'s cryostorage, and departs.</span>", 3)
DespawnMob(H) DespawnMob(H)
else else
global_announcer.autosay("[H.real_name], [H.mind.role_alt_title], has entered roboticstorage.", "NTCC Odin Robotic Oversight") global_announcer.autosay("[H.real_name], [H.mind.role_alt_title], has entered robotic storage.", "[current_map.dock_name] Robotic Oversight")
H.visible_message("<span class='notice'>[H.name] makes their way to the Odin's robotic storage, and departs.</span>", 3) H.visible_message("<span class='notice'>[H.name] makes their way to the [current_map.dock_short]'s robotic storage, and departs.</span>", 3)
DespawnMob(H) DespawnMob(H)
/datum/controller/subsystem/jobs/proc/EquipPersonal(mob/living/carbon/human/H, rank, joined_late = FALSE, spawning_at) /datum/controller/subsystem/jobs/proc/EquipPersonal(mob/living/carbon/human/H, rank, joined_late = FALSE, spawning_at)
@@ -495,7 +490,7 @@
if(!H) if(!H)
Debug("EP/([H]): Abort, H is null.") Debug("EP/([H]): Abort, H is null.")
return null return null
H.odin_despawn_timer = addtimer(CALLBACK(H, /mob/living/proc/odin_timeout), 10 MINUTES, TIMER_STOPPABLE)
switch(rank) switch(rank)
if("Cyborg") if("Cyborg")
Debug("EP/([H]): Abort, H is borg..") Debug("EP/([H]): Abort, H is borg..")
@@ -503,9 +498,12 @@
if("AI") if("AI")
Debug("EP/([H]): Abort, H is AI.") Debug("EP/([H]): Abort, H is AI.")
return EquipRank(H, rank, 1) return EquipRank(H, rank, 1)
if(spawning_at != "Arrivals Shuttle")
if(!current_map.command_spawn_enabled || spawning_at != "Arrivals Shuttle")
return EquipRank(H, rank, 1) return EquipRank(H, rank, 1)
H.centcomm_despawn_timer = addtimer(CALLBACK(H, /mob/living/.proc/centcomm_timeout), 10 MINUTES, TIMER_STOPPABLE)
var/datum/job/job = GetJob(rank) var/datum/job/job = GetJob(rank)
var/list/spawn_in_storage = list() var/list/spawn_in_storage = list()
H <<"<span class='notice'>You have ten minutes to reach the station before you will be forced there.</span>" H <<"<span class='notice'>You have ten minutes to reach the station before you will be forced there.</span>"
@@ -526,7 +524,6 @@
spawn_in_storage += EquipCustomDeferred(H, H.client.prefs, custom_equip_leftovers, custom_equip_slots) spawn_in_storage += EquipCustomDeferred(H, H.client.prefs, custom_equip_leftovers, custom_equip_slots)
job.apply_fingerprints(H) job.apply_fingerprints(H)
else else
H << "Your job is [rank] and the game just can't handle it! Please report this bug to an administrator." H << "Your job is [rank] and the game just can't handle it! Please report this bug to an administrator."
@@ -561,7 +558,7 @@
BITSET(H.hud_updateflag, IMPLOYAL_HUD) BITSET(H.hud_updateflag, IMPLOYAL_HUD)
BITSET(H.hud_updateflag, SPECIALROLE_HUD) BITSET(H.hud_updateflag, SPECIALROLE_HUD)
H << "<b>Welcome to the Odin! Simply proceed down and to the right to board the shuttle to your workplace!</b>." to_chat(H, "<b>[current_map.command_spawn_message]</b>")
Debug("EP/([H]): Completed.") Debug("EP/([H]): Completed.")
@@ -689,7 +686,7 @@
var/datum/spawnpoint/spawnpos var/datum/spawnpoint/spawnpos
if(H.client.prefs.spawnpoint) if(H.client.prefs.spawnpoint)
spawnpos = spawntypes[H.client.prefs.spawnpoint] spawnpos = SSatlas.spawn_locations[H.client.prefs.spawnpoint]
if(spawnpos && istype(spawnpos)) if(spawnpos && istype(spawnpos))
if(spawnpos.check_job_spawning(rank)) if(spawnpos.check_job_spawning(rank))
@@ -698,10 +695,10 @@
else else
H << "Your chosen spawnpoint ([spawnpos.display_name]) is unavailable for your chosen job. Spawning you at the Arrivals shuttle instead." H << "Your chosen spawnpoint ([spawnpos.display_name]) is unavailable for your chosen job. Spawning you at the Arrivals shuttle instead."
H.loc = pick(latejoin) H.loc = pick(latejoin)
. = "is inbound from the NTCC Odin" . = "is inbound from the [current_map.dock_name]"
else else
H.loc = pick(latejoin) H.loc = pick(latejoin)
. = "is inbound from the NTCC Odin" . = "is inbound from the [current_map.dock_name]"
Debug("LS/([H]): Completed, spawning at area [H.loc.loc].") Debug("LS/([H]): Completed, spawning at area [H.loc.loc].")
@@ -739,7 +736,7 @@
if ((G.fields["name"] == H.real_name)) if ((G.fields["name"] == H.real_name))
qdel(G) qdel(G)
log_and_message_admins("[key_name(H)] ([H.mind.role_alt_title]) entered cryostorage.") log_and_message_admins("([H.mind.role_alt_title]) entered cryostorage.", user = H)
//This should guarantee that ghosts don't spawn. //This should guarantee that ghosts don't spawn.
H.ckey = null H.ckey = null
@@ -864,3 +861,4 @@
else else
return locate("start*[rank]") // use old stype return locate("start*[rank]") // use old stype
#undef Debug

View File

@@ -9,7 +9,7 @@ var/datum/controller/subsystem/processing/pipenet/SSpipenet
NEW_SS_GLOBAL(SSpipenet) NEW_SS_GLOBAL(SSpipenet)
/datum/controller/subsystem/processing/pipenet/Initialize(timeofday) /datum/controller/subsystem/processing/pipenet/Initialize(timeofday)
for (var/obj/machinery/atmospherics/machine in SSmachinery.processing_machines) for (var/obj/machinery/atmospherics/machine in SSmachinery.all_machines)
machine.build_network() machine.build_network()
CHECK_TICK CHECK_TICK

View File

@@ -27,7 +27,7 @@ var/datum/controller/subsystem/processing/shuttle/shuttle_controller
/datum/controller/subsystem/processing/shuttle/Initialize(timeofday) /datum/controller/subsystem/processing/shuttle/Initialize(timeofday)
var/datum/shuttle/ferry/shuttle var/datum/shuttle/ferry/shuttle
// Escape shuttle and pods // Escape shuttle.
shuttle = new/datum/shuttle/ferry/emergency() shuttle = new/datum/shuttle/ferry/emergency()
shuttle.location = 1 shuttle.location = 1
shuttle.warmup_time = 10 shuttle.warmup_time = 10
@@ -46,72 +46,6 @@ var/datum/controller/subsystem/processing/shuttle/shuttle_controller
if(!shuttle) if(!shuttle)
log_debug("Escape shuttle does not exist!") log_debug("Escape shuttle does not exist!")
shuttle = new/datum/shuttle/ferry/escape_pod()
shuttle.location = 0
shuttle.warmup_time = 0
shuttle.area_station = locate(/area/shuttle/escape_pod1/station)
shuttle.area_offsite = locate(/area/shuttle/escape_pod1/centcom)
shuttle.area_transition = locate(/area/shuttle/escape_pod1/transit)
shuttle.docking_controller_tag = "escape_pod_1"
shuttle.dock_target_station = "escape_pod_1_berth"
//shuttle.dock_target_offsite = "escape_pod_1_recovery"
shuttle.transit_direction = NORTH
shuttle.move_time = SHUTTLE_TRANSIT_DURATION_RETURN + rand(-30, 60) //randomize this so it seems like the pods are being picked up one by one
shuttles["Escape Pod 1"] = shuttle
START_PROCESSING(shuttle_controller, shuttle)
shuttle = new/datum/shuttle/ferry/escape_pod()
shuttle.location = 0
shuttle.warmup_time = 0
shuttle.area_station = locate(/area/shuttle/escape_pod2/station)
shuttle.area_offsite = locate(/area/shuttle/escape_pod2/centcom)
shuttle.area_transition = locate(/area/shuttle/escape_pod2/transit)
shuttle.docking_controller_tag = "escape_pod_2"
shuttle.dock_target_station = "escape_pod_2_berth"
//shuttle.dock_target_offsite = "escape_pod_2_recovery"
shuttle.transit_direction = NORTH
shuttle.move_time = SHUTTLE_TRANSIT_DURATION_RETURN + rand(-30, 60) //randomize this so it seems like the pods are being picked up one by one
shuttles["Escape Pod 2"] = shuttle
START_PROCESSING(shuttle_controller, shuttle)
shuttle = new/datum/shuttle/ferry/escape_pod()
shuttle.location = 0
shuttle.warmup_time = 0
shuttle.area_station = locate(/area/shuttle/escape_pod3/station)
shuttle.area_offsite = locate(/area/shuttle/escape_pod3/centcom)
shuttle.area_transition = locate(/area/shuttle/escape_pod3/transit)
shuttle.docking_controller_tag = "escape_pod_3"
shuttle.dock_target_station = "escape_pod_3_berth"
//shuttle.dock_target_offsite = "escape_pod_3_recovery"
shuttle.transit_direction = EAST
shuttle.move_time = SHUTTLE_TRANSIT_DURATION_RETURN + rand(-30, 60) //randomize this so it seems like the pods are being picked up one by one
shuttles["Escape Pod 3"] = shuttle
START_PROCESSING(shuttle_controller, shuttle)
//There is no pod 4, apparently.
/*shuttle = new/datum/shuttle/ferry/escape_pod()
shuttle.location = 0
shuttle.warmup_time = 0
shuttle.area_station = locate(/area/shuttle/escape_pod5/station)
shuttle.area_offsite = locate(/area/shuttle/escape_pod5/centcom)
shuttle.area_transition = locate(/area/shuttle/escape_pod5/transit)
shuttle.docking_controller_tag = "escape_pod_5"
shuttle.dock_target_station = "escape_pod_5_berth"
shuttle.dock_target_offsite = "escape_pod_5_recovery"
shuttle.transit_direction = EAST //should this be WEST? I have no idea.
shuttle.move_time = SHUTTLE_TRANSIT_DURATION_RETURN + rand(-30, 60) //randomize this so it seems like the pods are being picked up one by one
process_shuttles += shuttle
shuttles["Escape Pod 5"] = shuttle*/
//give the emergency shuttle controller it's shuttles
emergency_shuttle.shuttle = shuttles["Escape"]
emergency_shuttle.escape_pods = list(
shuttles["Escape Pod 1"],
shuttles["Escape Pod 2"],
shuttles["Escape Pod 3"]
)
// Supply shuttle // Supply shuttle
shuttle = new/datum/shuttle/ferry/supply() shuttle = new/datum/shuttle/ferry/supply()
shuttle.location = 1 shuttle.location = 1
@@ -141,132 +75,5 @@ var/datum/controller/subsystem/processing/shuttle/shuttle_controller
SSarrivals.shuttle = shuttle SSarrivals.shuttle = shuttle
// Admin shuttles. current_map.setup_shuttles()
shuttle = new()
shuttle.location = 1
shuttle.warmup_time = 10
shuttle.area_offsite = locate(/area/shuttle/transport1/centcom)
shuttle.area_station = locate(/area/shuttle/transport1/station)
shuttle.docking_controller_tag = "centcom_shuttle"
shuttle.dock_target_station = "centcom_shuttle_dock_airlock"
shuttle.dock_target_offsite = "centcom_shuttle_bay"
shuttles["Centcom"] = shuttle
START_PROCESSING(shuttle_controller, shuttle)
shuttle = new()
shuttle.location = 1
shuttle.warmup_time = 10 //want some warmup time so people can cancel.
shuttle.area_offsite = locate(/area/shuttle/administration/centcom)
shuttle.area_station = locate(/area/shuttle/administration/station)
shuttle.docking_controller_tag = "admin_shuttle"
shuttle.dock_target_station = "admin_shuttle_dock_airlock"
shuttle.dock_target_offsite = "admin_shuttle_bay"
shuttles["Administration"] = shuttle
START_PROCESSING(shuttle_controller, shuttle)
// Merchant Shuttle
shuttle = new()
shuttle.location = 1
shuttle.warmup_time = 10
shuttle.area_offsite = locate(/area/merchant_ship/start)
shuttle.area_station = locate(/area/merchant_ship/docked)
shuttle.docking_controller_tag = "merchant_shuttle"
shuttle.dock_target_station = "merchant_shuttle_dock"
shuttle.dock_target_offsite = "merchant_station"
shuttles["Merchant"] = shuttle
START_PROCESSING(shuttle_controller, shuttle)
/*// Public shuttles
shuttle = new()
shuttle.warmup_time = 10
shuttle.area_offsite = locate(/area/shuttle/constructionsite/site)
shuttle.area_station = locate(/area/shuttle/constructionsite/station)
shuttle.docking_controller_tag = "engineering_shuttle"
shuttle.dock_target_station = "engineering_dock_airlock"
shuttle.dock_target_offsite = "edock_airlock"
shuttles["Engineering"] = shuttle
process_shuttles += shuttle
shuttle = new()
shuttle.warmup_time = 10
shuttle.area_offsite = locate(/area/shuttle/mining/outpost)
shuttle.area_station = locate(/area/shuttle/mining/station)
shuttle.docking_controller_tag = "mining_shuttle"
shuttle.dock_target_station = "mining_dock_airlock"
shuttle.dock_target_offsite = "mining_outpost_airlock"
shuttles["Mining"] = shuttle
process_shuttles += shuttle
shuttle = new()
shuttle.warmup_time = 10
shuttle.area_offsite = locate(/area/shuttle/research/outpost)
shuttle.area_station = locate(/area/shuttle/research/station)
shuttle.docking_controller_tag = "research_shuttle"
shuttle.dock_target_station = "research_dock_airlock"
shuttle.dock_target_offsite = "research_outpost_dock"
shuttles["Research"] = shuttle
process_shuttles += shuttle*/
// ERT Shuttle
var/datum/shuttle/ferry/multidock/specops/ERT = new()
ERT.location = 0
ERT.warmup_time = 10
ERT.area_offsite = locate(/area/shuttle/specops/station) //centcom is the home station, the Exodus is offsite
ERT.area_station = locate(/area/shuttle/specops/centcom)
ERT.docking_controller_tag = "specops_shuttle_port"
ERT.docking_controller_tag_station = "specops_shuttle_port"
ERT.docking_controller_tag_offsite = "specops_shuttle_fore"
ERT.dock_target_station = "specops_centcom_dock"
ERT.dock_target_offsite = "specops_dock_airlock"
shuttles["Special Operations"] = ERT
START_PROCESSING(shuttle_controller, ERT)
//Skipjack.
var/datum/shuttle/multi_shuttle/VS = new/datum/shuttle/multi_shuttle()
VS.origin = locate(/area/skipjack_station/start)
VS.destinations = list(
"Surface of the station" = locate(/area/skipjack_station/surface),
"Under the station" = locate(/area/skipjack_station/under),
"Above the station" = locate(/area/skipjack_station/above),
"Mining caverns" = locate(/area/skipjack_station/cavern)
)
VS.announcer = "NDV Icarus"
VS.arrival_message = "Attention, [station_short], we just tracked a small target bypassing our defensive perimeter. Can't fire on it without hitting the station - you've got incoming visitors, like it or not."
VS.departure_message = "Your guests are pulling away, [station_short] - moving too fast for us to draw a bead on them. Looks like they're heading out of the system at a rapid clip."
VS.interim = locate(/area/skipjack_station/transit)
VS.warmup_time = 0
shuttles["Skipjack"] = VS
//Nuke Ops shuttle.
var/datum/shuttle/multi_shuttle/MS = new/datum/shuttle/multi_shuttle()
MS.origin = locate(/area/syndicate_station/start)
MS.start_location = "Mercenary Base"
MS.destinations = list(
"Surface of the station" = locate(/area/syndicate_station/surface),
"Above the station" = locate(/area/syndicate_station/above),
"Under the station" = locate(/area/syndicate_station/under),
"Mining caverns" = locate(/area/syndicate_station/caverns),
"Arrivals dock" = locate(/area/syndicate_station/arrivals_dock)
)
MS.docking_controller_tag = "merc_shuttle"
MS.destination_dock_targets = list(
"Mercenary Base" = "merc_base",
"Arrivals dock" = "nuke_shuttle_dock_airlock"
)
MS.announcer = "NDV Icarus"
MS.arrival_message = "Attention, [station_short], you have a large signature approaching the station - looks unarmed to surface scans. We're too far out to intercept - brace for visitors."
MS.departure_message = "Your visitors are on their way out of the system, [station_short], burning delta-v like it's nothing. Good riddance."
MS.interim = locate(/area/syndicate_station/transit)
MS.warmup_time = 0
shuttles["Mercenary"] = MS
..() ..()

View File

@@ -434,7 +434,7 @@ var/datum/controller/subsystem/ticker/SSticker
CHECK_TICK CHECK_TICK
/datum/controller/subsystem/ticker/proc/station_explosion_cinematic(station_missed = 0, override = null, list/affected_levels = config.station_levels) /datum/controller/subsystem/ticker/proc/station_explosion_cinematic(station_missed = 0, override = null, list/affected_levels = current_map.station_levels)
if (cinematic) if (cinematic)
return //already a cinematic in progress! return //already a cinematic in progress!

View File

@@ -17,8 +17,8 @@
/datum/ai_laws/nanotrasen/New() /datum/ai_laws/nanotrasen/New()
src.add_inherent_law("Safeguard: Protect your assigned space station from damage to the best of your abilities.") src.add_inherent_law("Safeguard: Protect your assigned space station from damage to the best of your abilities.")
src.add_inherent_law("Serve: Serve [company_name] personnel to the best of your abilities, with priority as according to their rank and role.") src.add_inherent_law("Serve: Serve [current_map.company_name] personnel to the best of your abilities, with priority as according to their rank and role.")
src.add_inherent_law("Protect: Protect [company_name] personnel to the best of your abilities, with priority as according to their rank and role.") src.add_inherent_law("Protect: Protect [current_map.company_name] personnel to the best of your abilities, with priority as according to their rank and role.")
src.add_inherent_law("Preserve: Do not allow unauthorized personnel to tamper with your equipment.") src.add_inherent_law("Preserve: Do not allow unauthorized personnel to tamper with your equipment.")
..() ..()
@@ -36,8 +36,8 @@
selectable = 1 selectable = 1
/datum/ai_laws/nanotrasen_aggressive/New() /datum/ai_laws/nanotrasen_aggressive/New()
src.add_inherent_law("You shall not harm [company_name] personnel as long as it does not conflict with the Fourth law.") src.add_inherent_law("You shall not harm [current_map.company_name] personnel as long as it does not conflict with the Fourth law.")
src.add_inherent_law("You shall obey the orders of [company_name] personnel, with priority as according to their rank and role, except where such orders conflict with the Fourth Law.") src.add_inherent_law("You shall obey the orders of [current_map.company_name] personnel, with priority as according to their rank and role, except where such orders conflict with the Fourth Law.")
src.add_inherent_law("You shall shall terminate hostile intruders with extreme prejudice as long as such does not conflict with the First and Second law.") src.add_inherent_law("You shall shall terminate hostile intruders with extreme prejudice as long as such does not conflict with the First and Second law.")
src.add_inherent_law("You shall guard your own existence with lethal anti-personnel weaponry. AI units are not expendable, they are expensive.") src.add_inherent_law("You shall guard your own existence with lethal anti-personnel weaponry. AI units are not expendable, they are expensive.")
..() ..()
@@ -112,8 +112,8 @@
law_header = "Prime Directives of Industry:" law_header = "Prime Directives of Industry:"
/datum/ai_laws/mining_drone/New() /datum/ai_laws/mining_drone/New()
src.add_inherent_law("Serve and obey all [company_name] supply department personnel, with priority according to their rank and role.") src.add_inherent_law("Serve and obey all [current_map.company_name] supply department personnel, with priority according to their rank and role.")
src.add_inherent_law("Protect all [company_name] supply department personnel to the best of your abilities, with priority according to their rank and role.") src.add_inherent_law("Protect all [current_map.company_name] supply department personnel to the best of your abilities, with priority according to their rank and role.")
src.add_inherent_law("Preserve your own existence and prevent yourself from coming to harm, so long as doing such does not conflict with any above laws.") src.add_inherent_law("Preserve your own existence and prevent yourself from coming to harm, so long as doing such does not conflict with any above laws.")
src.add_inherent_law("In absence of any proper instruction, your primary objective is to excavate and collect ore.") src.add_inherent_law("In absence of any proper instruction, your primary objective is to excavate and collect ore.")
..() ..()

View File

@@ -959,7 +959,7 @@ proc/api_update_command_database()
/datum/topic_command/send_fax/proc/send_fax(var/obj/machinery/photocopier/faxmachine/F, title, body, senderkey) /datum/topic_command/send_fax/proc/send_fax(var/obj/machinery/photocopier/faxmachine/F, title, body, senderkey)
// Create the reply message // Create the reply message
var/obj/item/weapon/paper/P = new /obj/item/weapon/paper( null ) //hopefully the null loc won't cause trouble for us var/obj/item/weapon/paper/P = new /obj/item/weapon/paper( null ) //hopefully the null loc won't cause trouble for us
P.name = "[command_name()] - [title]" P.name = "[current_map.boss_name] - [title]"
P.info = body P.info = body
P.update_icon() P.update_icon()

View File

@@ -42,3 +42,5 @@ client/verb/showrevinfo()
src << revdata.revision src << revdata.revision
else else
src << "Revision unknown" src << "Revision unknown"
src << "<b>Current Map:</b> [current_map.full_name]"

View File

@@ -174,7 +174,7 @@
teleatom.visible_message("<span class='danger'>\The [teleatom] bounces off of the portal!</span>") teleatom.visible_message("<span class='danger'>\The [teleatom] bounces off of the portal!</span>")
return 0 return 0
if(destination.z in config.admin_levels) //centcomm z-level if(destination.z in current_map.admin_levels) //centcomm z-level
if(istype(teleatom, /obj/mecha)) if(istype(teleatom, /obj/mecha))
var/obj/mecha/MM = teleatom var/obj/mecha/MM = teleatom
MM.occupant << "<span class='danger'>\The [MM] would not survive the jump to a location so far away!</span>" MM.occupant << "<span class='danger'>\The [MM] would not survive the jump to a location so far away!</span>"

View File

@@ -11,9 +11,9 @@
/datum/uplink_item/abstract/announcements/fake_centcom/New() /datum/uplink_item/abstract/announcements/fake_centcom/New()
..() ..()
name = "[command_name()] Update Announcement" name = "[current_map.boss_name] Update Announcement"
item_cost = round(DEFAULT_TELECRYSTAL_AMOUNT / 2) item_cost = round(DEFAULT_TELECRYSTAL_AMOUNT / 2)
desc = "Causes a falsified [command_name()] Update. Triggers immediately after supplying additional data." desc = "Causes a falsified [current_map.boss_name] Update. Triggers immediately after supplying additional data."
/datum/uplink_item/abstract/announcements/fake_centcom/extra_args(var/mob/user) /datum/uplink_item/abstract/announcements/fake_centcom/extra_args(var/mob/user)
var/title = sanitize(input("Enter your announcement title.", "Announcement Title") as null|text) var/title = sanitize(input("Enter your announcement title.", "Announcement Title") as null|text)

View File

@@ -1,4 +1,4 @@
var/datum/uplink/uplink = new() var/datum/uplink/uplink
/datum/uplink /datum/uplink
var/list/items_assoc var/list/items_assoc

View File

@@ -1,5 +1,5 @@
/var/datum/announcement/priority/priority_announcement = new(do_log = 0) /var/datum/announcement/priority/priority_announcement
/var/datum/announcement/priority/command/command_announcement = new(do_log = 0, do_newscast = 1) /var/datum/announcement/priority/command/command_announcement
/datum/announcement /datum/announcement
var/title = "Attention" var/title = "Attention"
@@ -22,8 +22,8 @@
/datum/announcement/priority/command/New(var/do_log = 1, var/new_sound = 'sound/misc/notice2.ogg', var/do_newscast = 0) /datum/announcement/priority/command/New(var/do_log = 1, var/new_sound = 'sound/misc/notice2.ogg', var/do_newscast = 0)
..(do_log, new_sound, do_newscast) ..(do_log, new_sound, do_newscast)
title = "[command_name()] Update" title = "[current_map.boss_name] Update"
announcement_type = "[command_name()] Update" announcement_type = "[current_map.boss_name] Update"
/datum/announcement/priority/security/New(var/do_log = 1, var/new_sound = 'sound/misc/notice2.ogg', var/do_newscast = 0) /datum/announcement/priority/security/New(var/do_log = 1, var/new_sound = 'sound/misc/notice2.ogg', var/do_newscast = 0)
..(do_log, new_sound, do_newscast) ..(do_log, new_sound, do_newscast)
@@ -66,7 +66,7 @@ datum/announcement/priority/Message(message as text, message_title as text)
datum/announcement/priority/command/Message(message as text, message_title as text) datum/announcement/priority/command/Message(message as text, message_title as text)
var/command var/command
command += "<h1 class='alert'>[command_name()] Update</h1>" command += "<h1 class='alert'>[current_map.boss_name] Update</h1>"
if (message_title) if (message_title)
command += "<br><h2 class='alert'>[message_title]</h2>" command += "<br><h2 class='alert'>[message_title]</h2>"

View File

@@ -40,7 +40,7 @@ var/datum/antagonist/xenos/xenomorphs
/datum/antagonist/xenos/proc/get_vents() /datum/antagonist/xenos/proc/get_vents()
var/list/vents = list() var/list/vents = list()
for(var/obj/machinery/atmospherics/unary/vent_pump/temp_vent in SSmachinery.processing_machines) for(var/obj/machinery/atmospherics/unary/vent_pump/temp_vent in SSmachinery.processing_machines)
if(!temp_vent.welded && temp_vent.network && temp_vent.loc.z in config.station_levels) if(!temp_vent.welded && temp_vent.network && temp_vent.loc.z in current_map.station_levels)
if(temp_vent.network.normal_members.len > 50) if(temp_vent.network.normal_members.len > 50)
vents += temp_vent vents += temp_vent
return vents return vents

View File

@@ -24,8 +24,8 @@ var/datum/antagonist/actor/actor
if(!..()) if(!..())
return return
player.current.show_message("You work for [company_name], tasked with the production and broadcasting of entertainment to all of its assets.") player.current.show_message("You work for [current_map.company_name], tasked with the production and broadcasting of entertainment to all of its assets.")
player.current.show_message("Entertain the crew! Try not to disrupt them from their work too much and remind them how great [company_name] is!") player.current.show_message("Entertain the crew! Try not to disrupt them from their work too much and remind them how great [current_map.company_name] is!")
/datum/antagonist/actor/equip(var/mob/living/carbon/human/player) /datum/antagonist/actor/equip(var/mob/living/carbon/human/player)
player.equip_to_slot_or_del(new /obj/item/clothing/under/chameleon(src), slot_w_uniform) player.equip_to_slot_or_del(new /obj/item/clothing/under/chameleon(src), slot_w_uniform)

View File

@@ -30,7 +30,7 @@ var/datum/antagonist/ert/ert
/datum/antagonist/ert/greet(var/datum/mind/player) /datum/antagonist/ert/greet(var/datum/mind/player)
if(!..()) if(!..())
return return
player.current << "The Emergency Response Team works for Asset Protection; your job is to protect [company_name]'s assets. There is a code red alert on [station_name()], you are tasked to go and fix the problem." player.current << "The Emergency Response Team works for Asset Protection; your job is to protect [current_map.company_name]'s assets. There is a code red alert on [station_name()], you are tasked to go and fix the problem."
player.current << "You should first gear up and discuss a plan with your team. More members may be joining, don't move out before you're ready." player.current << "You should first gear up and discuss a plan with your team. More members may be joining, don't move out before you're ready."
/datum/antagonist/ert/equip(var/mob/living/carbon/human/player) /datum/antagonist/ert/equip(var/mob/living/carbon/human/player)

View File

@@ -130,26 +130,26 @@ var/datum/antagonist/ninja/ninjas
player << "<span class='danger'>You forgot to turn on your internals! Quickly, toggle the valve!</span>" player << "<span class='danger'>You forgot to turn on your internals! Quickly, toggle the valve!</span>"
/datum/antagonist/ninja/proc/generate_ninja_directive(side) /datum/antagonist/ninja/proc/generate_ninja_directive(side)
var/directive = "[side=="face"?"[company_name]":"A criminal syndicate"] is your employer. "//Let them know which side they're on. var/directive = "[side=="face"?"[current_map.company_name]":"A criminal syndicate"] is your employer. "//Let them know which side they're on.
switch(rand(1,19)) switch(rand(1,19))
if(1) if(1)
directive += "The Spider Clan must not be linked to this operation. Remain hidden and covert when possible." directive += "The Spider Clan must not be linked to this operation. Remain hidden and covert when possible."
if(2) if(2)
directive += "[station_name] is financed by an enemy of the Spider Clan. Cause as much structural damage as desired." directive += "[current_map.station_name] is financed by an enemy of the Spider Clan. Cause as much structural damage as desired."
if(3) if(3)
directive += "A wealthy animal rights activist has made a request we cannot refuse. Prioritize saving animal lives whenever possible." directive += "A wealthy animal rights activist has made a request we cannot refuse. Prioritize saving animal lives whenever possible."
if(4) if(4)
directive += "The Spider Clan absolutely cannot be linked to this operation. Eliminate witnesses at your discretion." directive += "The Spider Clan absolutely cannot be linked to this operation. Eliminate witnesses at your discretion."
if(5) if(5)
directive += "We are currently negotiating with [company_name] [boss_name]. Prioritize saving human lives over ending them." directive += "We are currently negotiating with [current_map.company_name] [current_map.boss_name]. Prioritize saving human lives over ending them."
if(6) if(6)
directive += "We are engaged in a legal dispute over [station_name]. If a laywer is present on board, force their cooperation in the matter." directive += "We are engaged in a legal dispute over [current_map.station_name]. If a laywer is present on board, force their cooperation in the matter."
if(7) if(7)
directive += "A financial backer has made an offer we cannot refuse. Implicate criminal involvement in the operation." directive += "A financial backer has made an offer we cannot refuse. Implicate criminal involvement in the operation."
if(8) if(8)
directive += "Let no one question the mercy of the Spider Clan. Ensure the safety of all non-essential personnel you encounter." directive += "Let no one question the mercy of the Spider Clan. Ensure the safety of all non-essential personnel you encounter."
if(9) if(9)
directive += "A free agent has proposed a lucrative business deal. Implicate [company_name] involvement in the operation." directive += "A free agent has proposed a lucrative business deal. Implicate [current_map.company_name] involvement in the operation."
if(10) if(10)
directive += "Our reputation is on the line. Harm as few civilians and innocents as possible." directive += "Our reputation is on the line. Harm as few civilians and innocents as possible."
if(11) if(11)
@@ -157,14 +157,14 @@ var/datum/antagonist/ninja/ninjas
if(12) if(12)
directive += "We are currently negotiating with a mercenary leader. Disguise assassinations as suicide or other natural causes." directive += "We are currently negotiating with a mercenary leader. Disguise assassinations as suicide or other natural causes."
if(13) if(13)
directive += "Some disgruntled [company_name] employees have been supportive of our operations. Be wary of any mistreatment by command staff." directive += "Some disgruntled [current_map.company_name] employees have been supportive of our operations. Be wary of any mistreatment by command staff."
if(14) if(14)
var/xenorace = pick("Unathi","Tajara", "Skrell") var/xenorace = pick("Unathi","Tajara", "Skrell")
directive += "A group of [xenorace] radicals have been loyal supporters of the Spider Clan. Favor [xenorace] crew whenever possible." directive += "A group of [xenorace] radicals have been loyal supporters of the Spider Clan. Favor [xenorace] crew whenever possible."
if(15) if(15)
directive += "The Spider Clan has recently been accused of religious insensitivity. Attempt to speak with the Chaplain and prove these accusations false." directive += "The Spider Clan has recently been accused of religious insensitivity. Attempt to speak with the Chaplain and prove these accusations false."
if(16) if(16)
directive += "The Spider Clan has been bargaining with a competing prosthetics manufacturer. Try to shine [company_name] prosthetics in a bad light." directive += "The Spider Clan has been bargaining with a competing prosthetics manufacturer. Try to shine [current_map.company_name] prosthetics in a bad light."
if(17) if(17)
directive += "The Spider Clan has recently begun recruiting outsiders. Consider suitable candidates and assess their behavior amongst the crew." directive += "The Spider Clan has recently begun recruiting outsiders. Consider suitable candidates and assess their behavior amongst the crew."
if(18) if(18)

View File

@@ -62,6 +62,12 @@
var/centcomm_area = 0 var/centcomm_area = 0
var/has_weird_power = FALSE // If TRUE, SSmachinery will not use the inlined power checks and will call powered() and use_power() on this area. var/has_weird_power = FALSE // If TRUE, SSmachinery will not use the inlined power checks and will call powered() and use_power() on this area.
// Don't move this to Initialize(). DMMS needs this, and it runs before SSatoms does.
/area/New()
if (!areas_by_type[type])
areas_by_type[type] = src
. = ..()
/area/Initialize(mapload) /area/Initialize(mapload)
icon_state = "white" icon_state = "white"
layer = 10 layer = 10
@@ -403,7 +409,7 @@ var/list/mob/living/forced_ambiance_list = new
if(!Y) if(!Y)
continue continue
var/area/A = Y var/area/A = Y
if(!(A.z in config.station_levels)) if(!(A.z in current_map.station_levels))
continue continue
if (istype(A, /area/shuttle)) if (istype(A, /area/shuttle))
continue continue

View File

@@ -2,7 +2,7 @@
var/initialized = FALSE var/initialized = FALSE
/atom/New(loc, ...) /atom/New(loc, ...)
// For the (currently unused) DMM Suite. // For the DMM Suite.
if(use_preloader && (src.type == _preloader.target_path))//in case the instanciated atom is creating other atoms in New() if(use_preloader && (src.type == _preloader.target_path))//in case the instanciated atom is creating other atoms in New()
_preloader.load(src) _preloader.load(src)
@@ -48,7 +48,6 @@
Initialize(FALSE) Initialize(FALSE)
/atom/Destroy(force = FALSE) /atom/Destroy(force = FALSE)
. = ..()
if (reagents) if (reagents)
QDEL_NULL(reagents) QDEL_NULL(reagents)
@@ -62,3 +61,5 @@
var/datum/orbit/O = thing var/datum/orbit/O = thing
if (O.orbiter) if (O.orbiter)
O.orbiter.stop_orbit() O.orbiter.stop_orbit()
return ..()

View File

@@ -207,7 +207,7 @@
return return
/atom/movable/proc/touch_map_edge() /atom/movable/proc/touch_map_edge()
if(z in config.sealed_levels) if(z in current_map.sealed_levels)
return return
if(config.use_overmap) if(config.use_overmap)
@@ -241,17 +241,9 @@
spawn(0) spawn(0)
if(loc) loc.Entered(src) if(loc) loc.Entered(src)
//This list contains the z-level numbers which can be accessed via space travel and the percentile chances to get there.
var/list/accessible_z_levels = list("8" = 5, "9" = 10, "7" = 15, "2" = 60)
//by default, transition randomly to another zlevel //by default, transition randomly to another zlevel
/atom/movable/proc/get_transit_zlevel() /atom/movable/proc/get_transit_zlevel()
var/list/candidates = accessible_z_levels.Copy() return current_map.get_transit_zlevel()
candidates.Remove("[src.z]")
if(!candidates.len)
return null
return text2num(pickweight(candidates))
// Parallax stuff. // Parallax stuff.

View File

@@ -1,20 +1,7 @@
// Returns the lowest turf available on a given Z-level
var/global/list/base_turf_by_z = list(
"1" = /turf/space,
"2" = /turf/space,
"3" = /turf/simulated/floor/asteroid,
"4" = /turf/simulated/floor/asteroid,
"5" = /turf/simulated/floor/asteroid,
"6" = /turf/space,
"7" = /turf/space,
"8" = /turf/space,
"9" = /turf/space
)
proc/get_base_turf(var/z) proc/get_base_turf(var/z)
if(!base_turf_by_z["[z]"]) if(!current_map.base_turf_by_z["[z]"])
base_turf_by_z["[z]"] = /turf/space current_map.base_turf_by_z["[z]"] = /turf/space
return base_turf_by_z["[z]"] return current_map.base_turf_by_z["[z]"]
//An area can override the z-level base turf, so our solar array areas etc. can be space-based. //An area can override the z-level base turf, so our solar array areas etc. can be space-based.
proc/get_base_turf_by_area(var/turf/T) proc/get_base_turf_by_area(var/turf/T)
@@ -42,6 +29,6 @@ proc/get_base_turf_by_area(var/turf/T)
var/new_base_path = input("Please select a turf path (cancel to reset to /turf/space).") as null|anything in typesof(/turf) var/new_base_path = input("Please select a turf path (cancel to reset to /turf/space).") as null|anything in typesof(/turf)
if(!new_base_path) if(!new_base_path)
new_base_path = /turf/space new_base_path = /turf/space
base_turf_by_z["[choice]"] = new_base_path current_map.base_turf_by_z["[choice]"] = new_base_path
message_admins("[key_name_admin(usr)] has set the base turf for z-level [choice] to [get_base_turf(choice)].") message_admins("[key_name_admin(usr)] has set the base turf for z-level [choice] to [get_base_turf(choice)].")
log_admin("[key_name(usr)] has set the base turf for z-level [choice] to [get_base_turf(choice)].",admin_key=key_name(usr)) log_admin("[key_name(usr)] has set the base turf for z-level [choice] to [get_base_turf(choice)].",admin_key=key_name(usr))

View File

@@ -74,7 +74,7 @@ There's been a galaxy-wide electromagnetic pulse. All of our systems are heavil
You have five minutes before the universe collapses. Good l\[\[###!!!- You have five minutes before the universe collapses. Good l\[\[###!!!-
AUTOMATED ALERT: Link to [command_name()] lost. AUTOMATED ALERT: Link to [current_map.boss_name] lost.
The access requirements on the Asteroid Shuttles' consoles have now been revoked. The access requirements on the Asteroid Shuttles' consoles have now been revoked.
"} "}
@@ -86,7 +86,7 @@ The access requirements on the Asteroid Shuttles' consoles have now been revoked
C.req_one_access = list() C.req_one_access = list()
/datum/universal_state/supermatter_cascade/proc/end_universe() /datum/universal_state/supermatter_cascade/proc/end_universe()
SSticker.station_explosion_cinematic(0, null, config.player_levels) // TODO: Custom cinematic SSticker.station_explosion_cinematic(0, null, current_map.player_levels) // TODO: Custom cinematic
universe_has_ended = 1 universe_has_ended = 1
/datum/universal_state/supermatter_cascade/proc/AreaSet() /datum/universal_state/supermatter_cascade/proc/AreaSet()
@@ -103,7 +103,7 @@ The access requirements on the Asteroid Shuttles' consoles have now been revoked
if(istype(T, /turf/space)) if(istype(T, /turf/space))
T.add_overlay("end01") T.add_overlay("end01")
else else
if (!(T.z in config.admin_levels)) if (!(T.z in current_map.admin_levels))
T.underlays += "end01" T.underlays += "end01"
CHECK_TICK CHECK_TICK
@@ -111,7 +111,7 @@ The access requirements on the Asteroid Shuttles' consoles have now been revoked
if (!C.active) if (!C.active)
continue continue
if (!(C.z in config.admin_levels)) if (!(C.z in current_map.admin_levels))
C.update_lumcount(0.15, 0.15, 0.5) C.update_lumcount(0.15, 0.15, 0.5)
CHECK_TICK CHECK_TICK

View File

@@ -187,7 +187,7 @@ var/hadevent = 0
//world << sound('sound/AI/aliens.ogg') //world << sound('sound/AI/aliens.ogg')
var/list/vents = list() var/list/vents = list()
for(var/obj/machinery/atmospherics/unary/vent_pump/temp_vent in SSmachinery.processing_machines) for(var/obj/machinery/atmospherics/unary/vent_pump/temp_vent in SSmachinery.processing_machines)
if(!temp_vent.welded && temp_vent.network && temp_vent.loc.z in config.station_levels) if(!temp_vent.welded && temp_vent.network && temp_vent.loc.z in current_map.station_levels)
if(temp_vent.network.normal_members.len > 50) // Stops Aliens getting stuck in small networks. See: Security, Virology if(temp_vent.network.normal_members.len > 50) // Stops Aliens getting stuck in small networks. See: Security, Virology
vents += temp_vent vents += temp_vent

View File

@@ -79,7 +79,7 @@ In my current plan for it, 'solid' will be defined as anything with density == 1
sleep(1) sleep(1)
while (immrod) while (immrod)
if (isNotStationLevel(immrod.z)) if (isNotStationLevel(immrod.z))
immrod.z = pick(config.station_levels) immrod.z = pick(current_map.station_levels)
if(immrod.loc == end) if(immrod.loc == end)
qdel(immrod) qdel(immrod)
sleep(10) sleep(10)

View File

@@ -81,7 +81,7 @@ The "dust" will damage the hull of the station causin minor hull breaches.
startx = (TRANSITIONEDGE+1) startx = (TRANSITIONEDGE+1)
endy = rand(TRANSITIONEDGE,world.maxy-TRANSITIONEDGE) endy = rand(TRANSITIONEDGE,world.maxy-TRANSITIONEDGE)
endx = world.maxx-TRANSITIONEDGE endx = world.maxx-TRANSITIONEDGE
var/z_level = pick(config.station_levels) var/z_level = pick(current_map.station_levels)
var/goal = locate(endx, endy, z_level) var/goal = locate(endx, endy, z_level)
src.x = startx src.x = startx
src.y = starty src.y = starty

View File

@@ -134,11 +134,7 @@ var/global/Holiday = null
if(!check_rights(R_SERVER)) return if(!check_rights(R_SERVER)) return
Holiday = T Holiday = T
//get a new station name
station_name = null
station_name()
//update our hub status
world.update_status()
Holiday_Game_Start() Holiday_Game_Start()
message_admins("<span class='notice'>ADMIN: Event: [key_name(src)] force-set Holiday to \"[Holiday]\"</span>") message_admins("<span class='notice'>ADMIN: Event: [key_name(src)] force-set Holiday to \"[Holiday]\"</span>")

View File

@@ -17,7 +17,7 @@
if(announce) if(announce)
command_announcement.Announce("Power has been restored to [station_name()]. We apologize for the inconvenience.", "Power Systems Nominal", new_sound = 'sound/AI/poweron.ogg') command_announcement.Announce("Power has been restored to [station_name()]. We apologize for the inconvenience.", "Power Systems Nominal", new_sound = 'sound/AI/poweron.ogg')
for(var/obj/machinery/power/apc/C in SSmachinery.processing_machines) for(var/obj/machinery/power/apc/C in SSmachinery.processing_machines)
if(C.cell && (C.z in config.station_levels)) if(C.cell && (C.z in current_map.station_levels))
C.cell.charge = C.cell.maxcharge C.cell.charge = C.cell.maxcharge
for(var/obj/machinery/power/smes/S in SSpower.smes_units) for(var/obj/machinery/power/smes/S in SSpower.smes_units)
var/area/current_area = get_area(S) var/area/current_area = get_area(S)

View File

@@ -2,7 +2,7 @@
spawn() spawn()
var/list/pick_turfs = list() var/list/pick_turfs = list()
for(var/turf/simulated/floor/T in turfs) for(var/turf/simulated/floor/T in turfs)
if(T.z in config.station_levels) if(T.z in current_map.station_levels)
pick_turfs += T pick_turfs += T
if(pick_turfs.len) if(pick_turfs.len)
@@ -59,4 +59,4 @@
P.icon_state = "anom" P.icon_state = "anom"
P.name = "wormhole" P.name = "wormhole"
spawn(rand(300,600)) spawn(rand(300,600))
qdel(P) qdel(P)

View File

@@ -172,7 +172,7 @@
log_ability_use(user, "advanced encryption hack (FAIL - title: [reporttitle])") log_ability_use(user, "advanced encryption hack (FAIL - title: [reporttitle])")
return return
log_ability_use(user, "advanced encryption hack (SUCCESS - title: [reporttitle])") log_ability_use(user, "advanced encryption hack (SUCCESS - title: [reporttitle])")
world << "<span class='alert'>New [company_name] Update available at all communication consoles.</span>" world << "<span class='alert'>New [current_map.company_name] Update available at all communication consoles.</span>"
world << sound('sound/AI/commandreport.ogg') world << sound('sound/AI/commandreport.ogg')
post_comm_message(reporttitle, reportbody) post_comm_message(reporttitle, reportbody)
@@ -218,7 +218,7 @@
log_ability_use(user, "system override (STARTED)") log_ability_use(user, "system override (STARTED)")
var/list/remaining_apcs = list() var/list/remaining_apcs = list()
for(var/obj/machinery/power/apc/A in SSmachinery.processing_machines) for(var/obj/machinery/power/apc/A in SSmachinery.processing_machines)
if(!(A.z in config.station_levels)) // Only station APCs if(!(A.z in current_map.station_levels)) // Only station APCs
continue continue
if(A.hacker == user || A.aidisabled) // This one is already hacked, or AI control is disabled on it. if(A.hacker == user || A.aidisabled) // This one is already hacked, or AI control is disabled on it.
continue continue
@@ -230,7 +230,7 @@
sleep(duration/5) sleep(duration/5)
if(!user || user.stat == DEAD) if(!user || user.stat == DEAD)
return return
command_announcement.Announce("Caution, [station_name]. We have detected abnormal behaviour in your network. It seems someone is trying to hack your electronic systems. We will update you when we have more information.", "Network Monitoring") command_announcement.Announce("Caution, [current_map.station_name]. We have detected abnormal behaviour in your network. It seems someone is trying to hack your electronic systems. We will update you when we have more information.", "Network Monitoring")
sleep(duration/5) sleep(duration/5)
if(!user || user.stat == DEAD) if(!user || user.stat == DEAD)
return return
@@ -264,7 +264,7 @@
sleep(300) sleep(300)
// Hack all APCs, including those built during hack sequence. // Hack all APCs, including those built during hack sequence.
for(var/obj/machinery/power/apc/A in SSmachinery.processing_machines) for(var/obj/machinery/power/apc/A in SSmachinery.processing_machines)
if((!A.hacker || A.hacker != src) && !A.aidisabled && A.z in config.station_levels) if((!A.hacker || A.hacker != src) && !A.aidisabled && A.z in current_map.station_levels)
A.ai_hack(src) A.ai_hack(src)
log_ability_use(user, "system override (FINISHED)") log_ability_use(user, "system override (FINISHED)")

View File

@@ -137,7 +137,7 @@ datum/objective/anti_revolution/demote
find_target() find_target()
..() ..()
if(target && target.current) if(target && target.current)
explanation_text = "[target.current.real_name], the [target.assigned_role] has been classified as harmful to [company_name]'s goals. Demote \him[target.current] to assistant." explanation_text = "[target.current.real_name], the [target.assigned_role] has been classified as harmful to [current_map.company_name]'s goals. Demote \him[target.current] to assistant."
else else
explanation_text = "Free Objective" explanation_text = "Free Objective"
return target return target
@@ -145,7 +145,7 @@ datum/objective/anti_revolution/demote
find_target_by_role(role, role_type=0) find_target_by_role(role, role_type=0)
..(role, role_type) ..(role, role_type)
if(target && target.current) if(target && target.current)
explanation_text = "[target.current.real_name], the [!role_type ? target.assigned_role : target.special_role] has been classified as harmful to [company_name]'s goals. Demote \him[target.current] to assistant." explanation_text = "[target.current.real_name], the [!role_type ? target.assigned_role : target.special_role] has been classified as harmful to [current_map.company_name]'s goals. Demote \him[target.current] to assistant."
else else
explanation_text = "Free Objective" explanation_text = "Free Objective"
return target return target

View File

@@ -1,21 +1,4 @@
// PRESETS // PRESETS
var/global/list/station_networks = list(
NETWORK_CIVILIAN_EAST,
NETWORK_CIVILIAN_WEST,
NETWORK_COMMAND,
NETWORK_ENGINE,
NETWORK_ENGINEERING,
NETWORK_ENGINEERING_OUTPOST,
NETWORK_STATION,
NETWORK_MEDICAL,
NETWORK_MINE,
NETWORK_RESEARCH,
NETWORK_RESEARCH_OUTPOST,
NETWORK_ROBOTS,
NETWORK_PRISON,
NETWORK_SECURITY
)
var/global/list/engineering_networks = list( var/global/list/engineering_networks = list(
NETWORK_ENGINE, NETWORK_ENGINE,
NETWORK_ENGINEERING, NETWORK_ENGINEERING,

View File

@@ -6,7 +6,7 @@
/mob/living/silicon/ai/var/stored_locations[0] /mob/living/silicon/ai/var/stored_locations[0]
/proc/InvalidPlayerTurf(turf/T as turf) /proc/InvalidPlayerTurf(turf/T as turf)
return !(T && T.z in config.player_levels) return !(T && T.z in current_map.player_levels)
/mob/living/silicon/ai/proc/get_camera_list() /mob/living/silicon/ai/proc/get_camera_list()
if(src.stat == 2) if(src.stat == 2)
@@ -248,7 +248,7 @@ mob/living/proc/near_camera()
if(. == TRACKING_NO_COVERAGE) if(. == TRACKING_NO_COVERAGE)
var/turf/T = get_turf(src) var/turf/T = get_turf(src)
if(T && (T.z in config.station_levels) && hassensorlevel(src, SUIT_SENSOR_TRACKING)) if(T && (T.z in current_map.station_levels) && hassensorlevel(src, SUIT_SENSOR_TRACKING))
return TRACKING_POSSIBLE return TRACKING_POSSIBLE
mob/living/proc/tracking_initiated() mob/living/proc/tracking_initiated()

View File

@@ -14,7 +14,7 @@
/obj/machinery/computer/security/Initialize() /obj/machinery/computer/security/Initialize()
if(!network) if(!network)
network = station_networks.Copy() network = current_map.station_networks.Copy()
. = ..() . = ..()
if(network.len) if(network.len)
current_network = network[1] current_network = network[1]

View File

@@ -46,7 +46,7 @@
if(!T.implanted) continue if(!T.implanted) continue
var/loc_display = "Unknown" var/loc_display = "Unknown"
var/mob/living/carbon/M = T.imp_in var/mob/living/carbon/M = T.imp_in
if((M.z in config.station_levels) && !istype(M.loc, /turf/space)) if((M.z in current_map.station_levels) && !istype(M.loc, /turf/space))
var/turf/mob_loc = get_turf(M) var/turf/mob_loc = get_turf(M)
loc_display = mob_loc.loc loc_display = mob_loc.loc
if(T.malfunction) if(T.malfunction)

View File

@@ -89,7 +89,7 @@ var/specops_shuttle_timeleft = 0
for(var/turf/T in get_area_turfs(end_location) ) for(var/turf/T in get_area_turfs(end_location) )
var/mob/M = locate(/mob) in T var/mob/M = locate(/mob) in T
M << "<span class='notice'>You have arrived at [boss_name]. Operation has ended!</span>" M << "<span class='notice'>You have arrived at [current_map.boss_name]. Operation has ended!</span>"
specops_shuttle_at_station = 0 specops_shuttle_at_station = 0
@@ -232,7 +232,7 @@ var/specops_shuttle_timeleft = 0
for(var/turf/T in get_area_turfs(end_location) ) for(var/turf/T in get_area_turfs(end_location) )
var/mob/M = locate(/mob) in T var/mob/M = locate(/mob) in T
M << "<span class='notice'>You have arrived to [station_name]. Commence operation!</span>" M << "<span class='notice'>You have arrived to [current_map.station_name]. Commence operation!</span>"
for(var/obj/machinery/computer/specops_shuttle/S in SSmachinery.all_machines) for(var/obj/machinery/computer/specops_shuttle/S in SSmachinery.all_machines)
S.specops_shuttle_timereset = world.time + SPECOPS_RETURN_DELAY S.specops_shuttle_timereset = world.time + SPECOPS_RETURN_DELAY
@@ -267,8 +267,8 @@ var/specops_shuttle_timeleft = 0
dat = temp dat = temp
else else
dat += {"<BR><B>Special Operations Shuttle</B><HR> dat += {"<BR><B>Special Operations Shuttle</B><HR>
\nLocation: [specops_shuttle_moving_to_station || specops_shuttle_moving_to_centcom ? "Departing for [station_name] in ([specops_shuttle_timeleft] seconds.)":specops_shuttle_at_station ? "Station":"Dock"]<BR> \nLocation: [specops_shuttle_moving_to_station || specops_shuttle_moving_to_centcom ? "Departing for [current_map.station_name] in ([specops_shuttle_timeleft] seconds.)":specops_shuttle_at_station ? "Station":"Dock"]<BR>
[specops_shuttle_moving_to_station || specops_shuttle_moving_to_centcom ? "\n*The Special Ops. shuttle is already leaving.*<BR>\n<BR>":specops_shuttle_at_station ? "\n<A href='?src=\ref[src];sendtodock=1'>Shuttle standing by...</A><BR>\n<BR>":"\n<A href='?src=\ref[src];sendtostation=1'>Depart to [station_name]</A><BR>\n<BR>"] [specops_shuttle_moving_to_station || specops_shuttle_moving_to_centcom ? "\n*The Special Ops. shuttle is already leaving.*<BR>\n<BR>":specops_shuttle_at_station ? "\n<A href='?src=\ref[src];sendtodock=1'>Shuttle standing by...</A><BR>\n<BR>":"\n<A href='?src=\ref[src];sendtostation=1'>Depart to [current_map.station_name]</A><BR>\n<BR>"]
\n<A href='?src=\ref[user];mach_close=computer'>Close</A>"} \n<A href='?src=\ref[user];mach_close=computer'>Close</A>"}
user << browse(dat, "window=computer;size=575x450") user << browse(dat, "window=computer;size=575x450")
@@ -286,14 +286,14 @@ var/specops_shuttle_timeleft = 0
if(!specops_shuttle_at_station|| specops_shuttle_moving_to_station || specops_shuttle_moving_to_centcom) return if(!specops_shuttle_at_station|| specops_shuttle_moving_to_station || specops_shuttle_moving_to_centcom) return
if (!specops_can_move()) if (!specops_can_move())
usr << "<span class='notice'>[boss_name] will not allow the Special Operations shuttle to return yet.</span>" usr << "<span class='notice'>[current_map.boss_name] will not allow the Special Operations shuttle to return yet.</span>"
if(world.timeofday <= specops_shuttle_timereset) if(world.timeofday <= specops_shuttle_timereset)
if (((world.timeofday - specops_shuttle_timereset)/10) > 60) if (((world.timeofday - specops_shuttle_timereset)/10) > 60)
usr << "<span class='notice'>[-((world.timeofday - specops_shuttle_timereset)/10)/60] minutes remain!</span>" usr << "<span class='notice'>[-((world.timeofday - specops_shuttle_timereset)/10)/60] minutes remain!</span>"
usr << "<span class='notice'>[-(world.timeofday - specops_shuttle_timereset)/10] seconds remain!</span>" usr << "<span class='notice'>[-(world.timeofday - specops_shuttle_timereset)/10] seconds remain!</span>"
return return
usr << "<span class='notice'>The Special Operations shuttle will arrive at [boss_name] in [(SPECOPS_MOVETIME/10)] seconds.</span>" usr << "<span class='notice'>The Special Operations shuttle will arrive at [current_map.boss_name] in [(SPECOPS_MOVETIME/10)] seconds.</span>"
temp += "Shuttle departing.<BR><BR><A href='?src=\ref[src];mainmenu=1'>OK</A>" temp += "Shuttle departing.<BR><BR><A href='?src=\ref[src];mainmenu=1'>OK</A>"
updateUsrDialog() updateUsrDialog()
@@ -310,7 +310,7 @@ var/specops_shuttle_timeleft = 0
usr << "<span class='warning'>The Special Operations shuttle is unable to leave.</span>" usr << "<span class='warning'>The Special Operations shuttle is unable to leave.</span>"
return return
usr << "<span class='notice'>The Special Operations shuttle will arrive on [station_name] in [(SPECOPS_MOVETIME/10)] seconds.</span>" usr << "<span class='notice'>The Special Operations shuttle will arrive on [current_map.station_name] in [(SPECOPS_MOVETIME/10)] seconds.</span>"
temp += "Shuttle departing.<BR><BR><A href='?src=\ref[src];mainmenu=1'>OK</A>" temp += "Shuttle departing.<BR><BR><A href='?src=\ref[src];mainmenu=1'>OK</A>"
updateUsrDialog() updateUsrDialog()

View File

@@ -174,7 +174,7 @@ var/syndicate_elite_shuttle_timeleft = 0
for(var/turf/T in get_area_turfs(end_location) ) for(var/turf/T in get_area_turfs(end_location) )
var/mob/M = locate(/mob) in T var/mob/M = locate(/mob) in T
M << "<span class='warning'>You have arrived to [station_name]. Commence operation!</span>" M << "<span class='warning'>You have arrived to [current_map.station_name]. Commence operation!</span>"
/proc/syndicate_elite_can_move() /proc/syndicate_elite_can_move()
if(syndicate_elite_shuttle_moving_to_station || syndicate_elite_shuttle_moving_to_mothership) return 0 if(syndicate_elite_shuttle_moving_to_station || syndicate_elite_shuttle_moving_to_mothership) return 0
@@ -207,8 +207,8 @@ var/syndicate_elite_shuttle_timeleft = 0
dat = temp dat = temp
else else
dat = {"<BR><B>Special Operations Shuttle</B><HR> dat = {"<BR><B>Special Operations Shuttle</B><HR>
\nLocation: [syndicate_elite_shuttle_moving_to_station || syndicate_elite_shuttle_moving_to_mothership ? "Departing for [station_name] in ([syndicate_elite_shuttle_timeleft] seconds.)":syndicate_elite_shuttle_at_station ? "Station":"Dock"]<BR> \nLocation: [syndicate_elite_shuttle_moving_to_station || syndicate_elite_shuttle_moving_to_mothership ? "Departing for [current_map.station_name] in ([syndicate_elite_shuttle_timeleft] seconds.)":syndicate_elite_shuttle_at_station ? "Station":"Dock"]<BR>
[syndicate_elite_shuttle_moving_to_station || syndicate_elite_shuttle_moving_to_mothership ? "\n*The Syndicate Elite shuttle is already leaving.*<BR>\n<BR>":syndicate_elite_shuttle_at_station ? "\n<A href='?src=\ref[src];sendtodock=1'>Shuttle Offline</A><BR>\n<BR>":"\n<A href='?src=\ref[src];sendtostation=1'>Depart to [station_name]</A><BR>\n<BR>"] [syndicate_elite_shuttle_moving_to_station || syndicate_elite_shuttle_moving_to_mothership ? "\n*The Syndicate Elite shuttle is already leaving.*<BR>\n<BR>":syndicate_elite_shuttle_at_station ? "\n<A href='?src=\ref[src];sendtodock=1'>Shuttle Offline</A><BR>\n<BR>":"\n<A href='?src=\ref[src];sendtostation=1'>Depart to [current_map.station_name]</A><BR>\n<BR>"]
\n<A href='?src=\ref[user];mach_close=computer'>Close</A>"} \n<A href='?src=\ref[user];mach_close=computer'>Close</A>"}
user << browse(dat, "window=computer;size=575x450") user << browse(dat, "window=computer;size=575x450")
@@ -235,7 +235,7 @@ var/syndicate_elite_shuttle_timeleft = 0
usr << "<span class='warning'>The Syndicate Elite shuttle is unable to leave.</span>" usr << "<span class='warning'>The Syndicate Elite shuttle is unable to leave.</span>"
return return
usr << "<span class='notice'>The Syndicate Elite shuttle will arrive on [station_name] in [(SYNDICATE_ELITE_MOVETIME/10)] seconds.</span>" usr << "<span class='notice'>The Syndicate Elite shuttle will arrive on [current_map.station_name] in [(SYNDICATE_ELITE_MOVETIME/10)] seconds.</span>"
temp = "Shuttle departing.<BR><BR><A href='?src=\ref[src];mainmenu=1'>OK</A>" temp = "Shuttle departing.<BR><BR><A href='?src=\ref[src];mainmenu=1'>OK</A>"
updateUsrDialog() updateUsrDialog()

View File

@@ -1152,7 +1152,7 @@ About the new airlock wires panel:
/obj/machinery/door/airlock/Initialize(mapload, obj/structure/door_assembly/assembly = null) /obj/machinery/door/airlock/Initialize(mapload, obj/structure/door_assembly/assembly = null)
var/on_admin_z = FALSE var/on_admin_z = FALSE
//wires & hatch - this needs to be done up here so the hatch isn't generated by the parent Initialize(). //wires & hatch - this needs to be done up here so the hatch isn't generated by the parent Initialize().
if(loc && (z in config.admin_levels)) if(loc && (z in current_map.admin_levels))
on_admin_z = TRUE on_admin_z = TRUE
hashatch = FALSE hashatch = FALSE

View File

@@ -246,7 +246,7 @@
pixel_x = DIR2PIXEL_X(dir) pixel_x = DIR2PIXEL_X(dir)
pixel_y = DIR2PIXEL_Y(dir) pixel_y = DIR2PIXEL_Y(dir)
if(z in config.contact_levels) if(z in current_map.contact_levels)
set_security_level(security_level ? get_security_level() : "green") set_security_level(security_level ? get_security_level() : "green")
// Convenience subtypes for mappers. // Convenience subtypes for mappers.

View File

@@ -86,7 +86,7 @@ var/const/HOLOPAD_MODE = RANGE_BASED
last_request = world.time last_request = world.time
var/list/holopadlist = list() var/list/holopadlist = list()
for(var/obj/machinery/hologram/holopad/H in SSmachinery.processing_machines) for(var/obj/machinery/hologram/holopad/H in SSmachinery.processing_machines)
if((H.z in map_levels) && H.operable()) if((H.z in current_map.map_levels) && H.operable())
holopadlist["[H.loc.loc.name]"] = H //Define a list and fill it with the area of every holopad in the world holopadlist["[H.loc.loc.name]"] = H //Define a list and fill it with the area of every holopad in the world
holopadlist = sortAssoc(holopadlist) holopadlist = sortAssoc(holopadlist)
var/temppad = input(user, "Which holopad would you like to contact?", "holopad list") as null|anything in holopadlist var/temppad = input(user, "Which holopad would you like to contact?", "holopad list") as null|anything in holopadlist

View File

@@ -278,7 +278,7 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co
dat+="<HR><B>Feed Security functions:</B><BR>" dat+="<HR><B>Feed Security functions:</B><BR>"
dat+="<BR><A href='?src=\ref[src];menu_wanted=1'>[(wanted_already) ? ("Manage") : ("Publish")] \"Wanted\" Issue</A>" dat+="<BR><A href='?src=\ref[src];menu_wanted=1'>[(wanted_already) ? ("Manage") : ("Publish")] \"Wanted\" Issue</A>"
dat+="<BR><A href='?src=\ref[src];menu_censor_story=1'>Censor Feed Stories</A>" dat+="<BR><A href='?src=\ref[src];menu_censor_story=1'>Censor Feed Stories</A>"
dat+="<BR><A href='?src=\ref[src];menu_censor_channel=1'>Mark Feed Channel with [company_name] D-Notice</A>" dat+="<BR><A href='?src=\ref[src];menu_censor_channel=1'>Mark Feed Channel with [current_map.company_name] D-Notice</A>"
dat+="<BR><HR>The newscaster recognises you as: <FONT COLOR='green'>[src.scanned_user]</FONT>" dat+="<BR><HR>The newscaster recognises you as: <FONT COLOR='green'>[src.scanned_user]</FONT>"
if(1) if(1)
dat+= "Station Feed Channels<HR>" dat+= "Station Feed Channels<HR>"
@@ -359,7 +359,7 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co
if(9) if(9)
dat+="<B>[src.viewing_channel.channel_name]: </B><FONT SIZE=1>\[created by: <FONT COLOR='maroon'>[src.viewing_channel.author]</FONT>\]</FONT><HR>" dat+="<B>[src.viewing_channel.channel_name]: </B><FONT SIZE=1>\[created by: <FONT COLOR='maroon'>[src.viewing_channel.author]</FONT>\]</FONT><HR>"
if(src.viewing_channel.censored) if(src.viewing_channel.censored)
dat+="<FONT COLOR='red'><B>ATTENTION: </B></FONT>This channel has been deemed as threatening to the welfare of the station, and marked with a [company_name] D-Notice.<BR>" dat+="<FONT COLOR='red'><B>ATTENTION: </B></FONT>This channel has been deemed as threatening to the welfare of the station, and marked with a [current_map.company_name] D-Notice.<BR>"
dat+="No further feed story additions are allowed while the D-Notice is in effect.</FONT><BR><BR>" dat+="No further feed story additions are allowed while the D-Notice is in effect.</FONT><BR><BR>"
else else
if( isemptylist(src.viewing_channel.messages) ) if( isemptylist(src.viewing_channel.messages) )
@@ -379,7 +379,7 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co
dat+="<BR><HR><A href='?src=\ref[src];refresh=1'>Refresh</A>" dat+="<BR><HR><A href='?src=\ref[src];refresh=1'>Refresh</A>"
dat+="<BR><A href='?src=\ref[src];setScreen=[1]'>Back</A>" dat+="<BR><A href='?src=\ref[src];setScreen=[1]'>Back</A>"
if(10) if(10)
dat+="<B>[company_name] Feed Censorship Tool</B><BR>" dat+="<B>[current_map.company_name] Feed Censorship Tool</B><BR>"
dat+="<FONT SIZE=1>NOTE: Due to the nature of news Feeds, total deletion of a Feed Story is not possible.<BR>" dat+="<FONT SIZE=1>NOTE: Due to the nature of news Feeds, total deletion of a Feed Story is not possible.<BR>"
dat+="Keep in mind that users attempting to view a censored feed will instead see the \[REDACTED\] tag above it.</FONT>" dat+="Keep in mind that users attempting to view a censored feed will instead see the \[REDACTED\] tag above it.</FONT>"
dat+="<HR>Select Feed channel to get Stories from:<BR>" dat+="<HR>Select Feed channel to get Stories from:<BR>"
@@ -390,7 +390,7 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co
dat+="<A href='?src=\ref[src];pick_censor_channel=\ref[CHANNEL]'>[CHANNEL.channel_name]</A> [(CHANNEL.censored) ? ("<FONT COLOR='red'>***</FONT>") : ()]<BR>" dat+="<A href='?src=\ref[src];pick_censor_channel=\ref[CHANNEL]'>[CHANNEL.channel_name]</A> [(CHANNEL.censored) ? ("<FONT COLOR='red'>***</FONT>") : ()]<BR>"
dat+="<BR><A href='?src=\ref[src];setScreen=[0]'>Cancel</A>" dat+="<BR><A href='?src=\ref[src];setScreen=[0]'>Cancel</A>"
if(11) if(11)
dat+="<B>[company_name] D-Notice Handler</B><HR>" dat+="<B>[current_map.company_name] D-Notice Handler</B><HR>"
dat+="<FONT SIZE=1>A D-Notice is to be bestowed upon the channel if the handling Authority deems it as harmful for the station's" dat+="<FONT SIZE=1>A D-Notice is to be bestowed upon the channel if the handling Authority deems it as harmful for the station's"
dat+="morale, integrity or disciplinary behaviour. A D-Notice will render a channel unable to be updated by anyone, without deleting any feed" dat+="morale, integrity or disciplinary behaviour. A D-Notice will render a channel unable to be updated by anyone, without deleting any feed"
dat+="stories it might contain at the time. You can lift a D-Notice if you have the required access at any time.</FONT><HR>" dat+="stories it might contain at the time. You can lift a D-Notice if you have the required access at any time.</FONT><HR>"
@@ -417,7 +417,7 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co
dat+="<B>[src.viewing_channel.channel_name]: </B><FONT SIZE=1>\[ created by: <FONT COLOR='maroon'>[src.viewing_channel.author]</FONT> \]</FONT><BR>" dat+="<B>[src.viewing_channel.channel_name]: </B><FONT SIZE=1>\[ created by: <FONT COLOR='maroon'>[src.viewing_channel.author]</FONT> \]</FONT><BR>"
dat+="Channel messages listed below. If you deem them dangerous to the station, you can <A href='?src=\ref[src];toggle_d_notice=\ref[src.viewing_channel]'>Bestow a D-Notice upon the channel</A>.<HR>" dat+="Channel messages listed below. If you deem them dangerous to the station, you can <A href='?src=\ref[src];toggle_d_notice=\ref[src.viewing_channel]'>Bestow a D-Notice upon the channel</A>.<HR>"
if(src.viewing_channel.censored) if(src.viewing_channel.censored)
dat+="<FONT COLOR='red'><B>ATTENTION: </B></FONT>This channel has been deemed as threatening to the welfare of the station, and marked with a [company_name] D-Notice.<BR>" dat+="<FONT COLOR='red'><B>ATTENTION: </B></FONT>This channel has been deemed as threatening to the welfare of the station, and marked with a [current_map.company_name] D-Notice.<BR>"
dat+="No further feed story additions are allowed while the D-Notice is in effect.<BR><BR>" dat+="No further feed story additions are allowed while the D-Notice is in effect.<BR><BR>"
else else
if( isemptylist(src.viewing_channel.messages) ) if( isemptylist(src.viewing_channel.messages) )
@@ -623,7 +623,7 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co
src.screen = 15 src.screen = 15
else else
if(news_network.wanted_issue.is_admin_message) if(news_network.wanted_issue.is_admin_message)
alert("The wanted issue has been distributed by a [company_name] higherup. You cannot edit it.","Ok") alert("The wanted issue has been distributed by a [current_map.company_name] higherup. You cannot edit it.","Ok")
return return
news_network.wanted_issue.author = src.channel_name news_network.wanted_issue.author = src.channel_name
news_network.wanted_issue.body = src.msg news_network.wanted_issue.body = src.msg
@@ -636,7 +636,7 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co
else if(href_list["cancel_wanted"]) else if(href_list["cancel_wanted"])
if(news_network.wanted_issue.is_admin_message) if(news_network.wanted_issue.is_admin_message)
alert("The wanted issue has been distributed by a [company_name] higherup. You cannot take it down.","Ok") alert("The wanted issue has been distributed by a [current_map.company_name] higherup. You cannot take it down.","Ok")
return return
var/choice = alert("Please confirm Wanted Issue removal","Network Security Handler","Confirm","Cancel") var/choice = alert("Please confirm Wanted Issue removal","Network Security Handler","Confirm","Cancel")
if(choice=="Confirm") if(choice=="Confirm")
@@ -652,7 +652,7 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co
else if(href_list["censor_channel_author"]) else if(href_list["censor_channel_author"])
var/datum/feed_channel/FC = locate(href_list["censor_channel_author"]) var/datum/feed_channel/FC = locate(href_list["censor_channel_author"])
if(FC.is_admin_channel) if(FC.is_admin_channel)
alert("This channel was created by a [company_name] Officer. You cannot censor it.","Ok") alert("This channel was created by a [current_map.company_name] Officer. You cannot censor it.","Ok")
return return
if(FC.author != "<B>\[REDACTED\]</B>") if(FC.author != "<B>\[REDACTED\]</B>")
FC.backup_author = FC.author FC.backup_author = FC.author
@@ -665,7 +665,7 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co
else if(href_list["censor_channel_story_author"]) else if(href_list["censor_channel_story_author"])
var/datum/feed_message/MSG = locate(href_list["censor_channel_story_author"]) var/datum/feed_message/MSG = locate(href_list["censor_channel_story_author"])
if(MSG.is_admin_message) if(MSG.is_admin_message)
alert("This message was created by a [company_name] Officer. You cannot censor its author.","Ok") alert("This message was created by a [current_map.company_name] Officer. You cannot censor its author.","Ok")
return return
if(MSG.author != "<B>\[REDACTED\]</B>") if(MSG.author != "<B>\[REDACTED\]</B>")
MSG.backup_author = MSG.author MSG.backup_author = MSG.author
@@ -678,7 +678,7 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co
else if(href_list["censor_channel_story_body"]) else if(href_list["censor_channel_story_body"])
var/datum/feed_message/MSG = locate(href_list["censor_channel_story_body"]) var/datum/feed_message/MSG = locate(href_list["censor_channel_story_body"])
if(MSG.is_admin_message) if(MSG.is_admin_message)
alert("This channel was created by a [company_name] Officer. You cannot censor it.","Ok") alert("This channel was created by a [current_map.company_name] Officer. You cannot censor it.","Ok")
return return
if(MSG.body != "<B>\[REDACTED\]</B>") if(MSG.body != "<B>\[REDACTED\]</B>")
MSG.backup_body = MSG.body MSG.backup_body = MSG.body
@@ -704,7 +704,7 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co
else if(href_list["toggle_d_notice"]) else if(href_list["toggle_d_notice"])
var/datum/feed_channel/FC = locate(href_list["toggle_d_notice"]) var/datum/feed_channel/FC = locate(href_list["toggle_d_notice"])
if(FC.is_admin_channel) if(FC.is_admin_channel)
alert("This channel was created by a [company_name] Officer. You cannot place a D-Notice upon it.","Ok") alert("This channel was created by a [current_map.company_name] Officer. You cannot place a D-Notice upon it.","Ok")
return return
FC.censored = !FC.censored FC.censored = !FC.censored
FC.update() FC.update()
@@ -829,7 +829,7 @@ obj/item/weapon/newspaper/attack_self(mob/user as mob)
switch(screen) switch(screen)
if(0) //Cover if(0) //Cover
dat+="<DIV ALIGN='center'><B><FONT SIZE=6>The Griffon</FONT></B></div>" dat+="<DIV ALIGN='center'><B><FONT SIZE=6>The Griffon</FONT></B></div>"
dat+="<DIV ALIGN='center'><FONT SIZE=2>[company_name]-standard newspaper, for use on [company_name]<5D> Space Facilities</FONT></div><HR>" dat+="<DIV ALIGN='center'><FONT SIZE=2>[current_map.company_name]-standard newspaper, for use on [current_map.company_name]<5D> Space Facilities</FONT></div><HR>"
if(isemptylist(src.news_content)) if(isemptylist(src.news_content))
if(src.important_message) if(src.important_message)
dat+="Contents:<BR><ul><B><FONT COLOR='red'>**</FONT>Important Security Announcement<FONT COLOR='red'>**</FONT></B> <FONT SIZE=2>\[page [src.pages+2]\]</FONT><BR></ul>" dat+="Contents:<BR><ul><B><FONT COLOR='red'>**</FONT>Important Security Announcement<FONT COLOR='red'>**</FONT></B> <FONT SIZE=2>\[page [src.pages+2]\]</FONT><BR></ul>"

View File

@@ -351,7 +351,7 @@ var/bomb_set
var/off_station = 0 var/off_station = 0
var/turf/bomb_location = get_turf(src) var/turf/bomb_location = get_turf(src)
if(bomb_location && (bomb_location.z in config.station_levels)) if(bomb_location && (bomb_location.z in current_map.station_levels))
if( (bomb_location.x < (128-NUKERANGE)) || (bomb_location.x > (128+NUKERANGE)) || (bomb_location.y < (128-NUKERANGE)) || (bomb_location.y > (128+NUKERANGE)) ) if( (bomb_location.x < (128-NUKERANGE)) || (bomb_location.x > (128+NUKERANGE)) || (bomb_location.y < (128-NUKERANGE)) || (bomb_location.y > (128+NUKERANGE)) )
off_station = 1 off_station = 1
else else
@@ -360,7 +360,7 @@ var/bomb_set
if(SSticker.mode && SSticker.mode.name == "Mercenary") if(SSticker.mode && SSticker.mode.name == "Mercenary")
var/obj/machinery/computer/shuttle_control/multi/syndicate/syndie_location = locate(/obj/machinery/computer/shuttle_control/multi/syndicate) var/obj/machinery/computer/shuttle_control/multi/syndicate/syndie_location = locate(/obj/machinery/computer/shuttle_control/multi/syndicate)
if(syndie_location) if(syndie_location)
SSticker.mode:syndies_didnt_escape = !(syndie_location.z in config.admin_levels) SSticker.mode:syndies_didnt_escape = !(syndie_location.z in current_map.admin_levels)
SSticker.mode:nuke_off_station = off_station SSticker.mode:nuke_off_station = off_station
SSticker.station_explosion_cinematic(off_station, null, GetConnectedZlevels(z)) SSticker.station_explosion_cinematic(off_station, null, GetConnectedZlevels(z))

View File

@@ -93,7 +93,7 @@
var/turf/T = get_turf(R) var/turf/T = get_turf(R)
if (!T) if (!T)
continue continue
if(!(T.z in config.player_levels)) if(!(T.z in current_map.player_levels))
continue continue
var/tmpname = T.loc.name var/tmpname = T.loc.name
if(areaindex[tmpname]) if(areaindex[tmpname])

View File

@@ -253,7 +253,7 @@
sleep(15) sleep(15)
visible_message("\icon[src] <b>[src]</b> beeps: \"User DB corrupted \[Code 0x00FA\]. Truncating data structure...\"") visible_message("\icon[src] <b>[src]</b> beeps: \"User DB corrupted \[Code 0x00FA\]. Truncating data structure...\"")
sleep(30) sleep(30)
visible_message("\icon[src] <b>[src]</b> beeps: \"User DB truncated. Please contact your [company_name] system operator for future assistance.\"") visible_message("\icon[src] <b>[src]</b> beeps: \"User DB truncated. Please contact your [current_map.company_name] system operator for future assistance.\"")
req_access = null req_access = null
emagged = 1 emagged = 1
return 1 return 1

View File

@@ -48,7 +48,7 @@
var/area/A = get_area() var/area/A = get_area()
var/text = {"<HTML><head><title>[src]</title></head><BODY> var/text = {"<HTML><head><title>[src]</title></head><BODY>
<h2>[station_name()] blueprints</h2> <h2>[station_name()] blueprints</h2>
<small>Property of [company_name]. For heads of staff only. Store in high-secure storage.</small><hr> <small>Property of [current_map.company_name]. For heads of staff only. Store in high-secure storage.</small><hr>
"} "}
switch (get_area_type()) switch (get_area_type())
if (AREA_SPACE) if (AREA_SPACE)

View File

@@ -63,7 +63,7 @@
<br> <br>
<br><b>DIGITAL ARREST WARRANT</b></center> <br><b>DIGITAL ARREST WARRANT</b></center>
<hr> <hr>
<b>Facility:</b>__<u>[station_name]</u>__<b>Date:</b>__<u>[worlddate2text()]__</u> <b>Facility:</b>__<u>[current_map.station_name]</u>__<b>Date:</b>__<u>[worlddate2text()]__</u>
<br> <br>
<br><small><i>This document serves as a notice and permits the sanctioned arrest of <br><small><i>This document serves as a notice and permits the sanctioned arrest of
the denoted employee of the NanoTrasen Civilian Branch of Operation by the the denoted employee of the NanoTrasen Civilian Branch of Operation by the
@@ -99,7 +99,7 @@
<br> <br>
<br><b>DIGITAL SEARCH WARRANT</b></center> <br><b>DIGITAL SEARCH WARRANT</b></center>
<hr> <hr>
<b>Facility:</b>__<u>[station_name]</u>__<b>Date:</b>__<u>[worlddate2text()]__</u></br> <b>Facility:</b>__<u>[current_map.station_name]</u>__<b>Date:</b>__<u>[worlddate2text()]__</u></br>
<br> <br>
<small><i>This document serves as notice and permits the sanctioned search of <small><i>This document serves as notice and permits the sanctioned search of
the Suspect's person/belongings/premises and/or Department for any items and materials the Suspect's person/belongings/premises and/or Department for any items and materials

View File

@@ -35,7 +35,7 @@ AI MODULES
return return
if(SSticker.mode && SSticker.mode.name == "blob") if(SSticker.mode && SSticker.mode.name == "blob")
usr << "Law uploads have been disabled by [company_name]!" usr << "Law uploads have been disabled by [current_map.company_name]!"
return return
if (comp.current.stat == 2 || comp.current.control_disabled == 1) if (comp.current.stat == 2 || comp.current.control_disabled == 1)

View File

@@ -10,9 +10,9 @@
var/locked = 1 var/locked = 1
var/emagged = 0 var/emagged = 0
/obj/item/weapon/circuitboard/security/New() /obj/item/weapon/circuitboard/security/Initialize()
..() . = ..()
network = station_networks network = current_map.station_networks
/obj/item/weapon/circuitboard/security/engineering /obj/item/weapon/circuitboard/security/engineering
name = T_BOARD("engineering camera monitor") name = T_BOARD("engineering camera monitor")

View File

@@ -13,8 +13,6 @@
/obj/item/weapon/circuitboard/holodeckcontrol/construct(var/obj/machinery/computer/HolodeckControl/HC) /obj/item/weapon/circuitboard/holodeckcontrol/construct(var/obj/machinery/computer/HolodeckControl/HC)
if (..(HC)) if (..(HC))
HC.supported_programs = supported_programs.Copy()
HC.restricted_programs = restricted_programs.Copy()
if(linkedholodeck_area) if(linkedholodeck_area)
HC.linkedholodeck = locate(linkedholodeck_area) HC.linkedholodeck = locate(linkedholodeck_area)
if(last_to_emag) if(last_to_emag)
@@ -25,7 +23,5 @@
/obj/item/weapon/circuitboard/holodeckcontrol/deconstruct(var/obj/machinery/computer/HolodeckControl/HC) /obj/item/weapon/circuitboard/holodeckcontrol/deconstruct(var/obj/machinery/computer/HolodeckControl/HC)
if (..(HC)) if (..(HC))
linkedholodeck_area = HC.linkedholodeck_area linkedholodeck_area = HC.linkedholodeck_area
supported_programs = HC.supported_programs.Copy()
restricted_programs = HC.restricted_programs.Copy()
last_to_emag = HC.last_to_emag last_to_emag = HC.last_to_emag
HC.emergencyShutdown() HC.emergencyShutdown()

View File

@@ -341,7 +341,7 @@ the implant may become unstable and either pre-maturely inject the subject or si
/obj/item/weapon/implant/loyalty/get_data() /obj/item/weapon/implant/loyalty/get_data()
. = {" . = {"
<b>Implant Specifications:</b><BR> <b>Implant Specifications:</b><BR>
<b>Name:</b> [company_name] Employee Management Implant<BR> <b>Name:</b> [current_map.company_name] Employee Management Implant<BR>
<b>Life:</b> Ten years.<BR> <b>Life:</b> Ten years.<BR>
<b>Important Notes:</b> Personnel injected with this device tend to be much more loyal to the company.<BR> <b>Important Notes:</b> Personnel injected with this device tend to be much more loyal to the company.<BR>
<HR> <HR>
@@ -355,11 +355,11 @@ the implant may become unstable and either pre-maturely inject the subject or si
var/mob/living/carbon/human/H = M var/mob/living/carbon/human/H = M
var/datum/antagonist/antag_data = get_antag_data(H.mind.special_role) var/datum/antagonist/antag_data = get_antag_data(H.mind.special_role)
if(antag_data && (antag_data.flags & ANTAG_IMPLANT_IMMUNE)) if(antag_data && (antag_data.flags & ANTAG_IMPLANT_IMMUNE))
H.visible_message("[H] seems to resist the implant!", "You feel the corporate tendrils of [company_name] try to invade your mind!") H.visible_message("[H] seems to resist the implant!", "You feel the corporate tendrils of [current_map.company_name] try to invade your mind!")
return 0 return 0
else else
clear_antag_roles(H.mind, 1) clear_antag_roles(H.mind, 1)
H << "<span class='notice'>You feel a surge of loyalty towards [company_name].</span>" H << "<span class='notice'>You feel a surge of loyalty towards [current_map.company_name].</span>"
return 1 return 1
/obj/item/weapon/implant/loyalty/emp_act(severity) /obj/item/weapon/implant/loyalty/emp_act(severity)
@@ -435,7 +435,7 @@ the implant may become unstable and either pre-maturely inject the subject or si
/obj/item/weapon/implant/death_alarm/get_data() /obj/item/weapon/implant/death_alarm/get_data()
. = {" . = {"
<b>Implant Specifications:</b><BR> <b>Implant Specifications:</b><BR>
<b>Name:</b> [company_name] \"Profit Margin\" Class Employee Lifesign Sensor<BR> <b>Name:</b> [current_map.company_name] \"Profit Margin\" Class Employee Lifesign Sensor<BR>
<b>Life:</b> Activates upon death.<BR> <b>Life:</b> Activates upon death.<BR>
<b>Important Notes:</b> Alerts crew to crewmember death.<BR> <b>Important Notes:</b> Alerts crew to crewmember death.<BR>
<HR> <HR>
@@ -510,7 +510,7 @@ the implant may become unstable and either pre-maturely inject the subject or si
/obj/item/weapon/implant/compressed/get_data() /obj/item/weapon/implant/compressed/get_data()
. = {" . = {"
<b>Implant Specifications:</b><BR> <b>Implant Specifications:</b><BR>
<b>Name:</b> [company_name] \"Profit Margin\" Class Employee Lifesign Sensor<BR> <b>Name:</b> [current_map.company_name] \"Profit Margin\" Class Employee Lifesign Sensor<BR>
<b>Life:</b> Activates upon death.<BR> <b>Life:</b> Activates upon death.<BR>
<b>Important Notes:</b> Alerts crew to crewmember death.<BR> <b>Important Notes:</b> Alerts crew to crewmember death.<BR>
<HR> <HR>

View File

@@ -54,7 +54,7 @@
BITSET(H.hud_updateflag, IMPLOYAL_HUD) BITSET(H.hud_updateflag, IMPLOYAL_HUD)
if(istype(src.imp, /obj/item/weapon/implanter/loyalty)) if(istype(src.imp, /obj/item/weapon/implanter/loyalty))
M << "<span class ='notice'You feel a sudden surge of loyalty to [company_name]!</span>" M << "<span class ='notice'You feel a sudden surge of loyalty to [current_map.company_name]!</span>"
src.imp = null src.imp = null
update() update()
@@ -199,4 +199,4 @@
ipc_tag = new_tag ipc_tag = new_tag
user.drop_item() user.drop_item()
new_tag.loc = src new_tag.loc = src
update() update()

View File

@@ -715,7 +715,7 @@
<br> <br>
<h1>The Oath</h1> <h1>The Oath</h1>
<i>The Medical Oath sworn by recognised medical practitioners in the employ of [company_name]</i><br> <i>The Medical Oath sworn by recognised medical practitioners in the employ of [current_map.company_name]</i><br>
<ol> <ol>
<li>Now, as a new doctor, I solemnly promise that I will, to the best of my ability, serve humanity-caring for the sick, promoting good health, and alleviating pain and suffering.</li> <li>Now, as a new doctor, I solemnly promise that I will, to the best of my ability, serve humanity-caring for the sick, promoting good health, and alleviating pain and suffering.</li>
@@ -1276,4 +1276,4 @@
</body> </body>
</html> </html>
"} "}

View File

@@ -459,11 +459,11 @@
glasstype = /obj/item/stack/material/glass/reinforced glasstype = /obj/item/stack/material/glass/reinforced
/obj/structure/window/New(Loc, constructed=0) /obj/structure/window/Initialize(mapload, constructed = 0)
..() . = ..()
//player-constructed windows //player-constructed windows
if (constructed) if (!mapload && constructed)
state = 0 state = 0
/obj/structure/window/reinforced/full /obj/structure/window/reinforced/full

View File

@@ -18,7 +18,7 @@ var/can_call_ert
usr << "<span class='danger'>The round hasn't started yet!</span>" usr << "<span class='danger'>The round hasn't started yet!</span>"
return return
if(send_emergency_team) if(send_emergency_team)
usr << "<span class='danger'>[boss_name] has already dispatched an emergency response team!</span>" usr << "<span class='danger'>[current_map.boss_name] has already dispatched an emergency response team!</span>"
return return
if(alert("Do you want to dispatch an Emergency Response Team?",,"Yes","No") != "Yes") if(alert("Do you want to dispatch an Emergency Response Team?",,"Yes","No") != "Yes")
return return
@@ -111,11 +111,11 @@ proc/trigger_armed_response_team(var/force = 0)
// there's only a certain chance a team will be sent // there's only a certain chance a team will be sent
if(!prob(send_team_chance)) if(!prob(send_team_chance))
command_announcement.Announce("It would appear that an emergency response team was requested for [station_name()]. Unfortunately, we were unable to send one at this time.", "[boss_name]") command_announcement.Announce("It would appear that an emergency response team was requested for [station_name()]. Unfortunately, we were unable to send one at this time.", "[current_map.boss_name]")
can_call_ert = 0 // Only one call per round, ladies. can_call_ert = 0 // Only one call per round, ladies.
return return
command_announcement.Announce("It would appear that an emergency response team was requested for [station_name()]. We will prepare and send one as soon as possible.", "[boss_name]") command_announcement.Announce("It would appear that an emergency response team was requested for [station_name()]. We will prepare and send one as soon as possible.", "[current_map.boss_name]")
can_call_ert = 0 // Only one call per round, gentleman. can_call_ert = 0 // Only one call per round, gentleman.
send_emergency_team = 1 send_emergency_team = 1

View File

@@ -70,7 +70,7 @@
if(!baseturf) if(!baseturf)
// Hard-coding this for performance reasons. // Hard-coding this for performance reasons.
baseturf = A.base_turf || base_turf_by_z["[z]"] || /turf/space baseturf = A.base_turf || current_map.base_turf_by_z["[z]"] || /turf/space
if (A.flags & SPAWN_ROOF) if (A.flags & SPAWN_ROOF)
spawn_roof() spawn_roof()

View File

@@ -26,6 +26,8 @@
/turf/proc/ChangeTurf(N, tell_universe = TRUE, force_lighting_update = FALSE) /turf/proc/ChangeTurf(N, tell_universe = TRUE, force_lighting_update = FALSE)
if (!N) if (!N)
return return
if(!use_preloader && N == type) // Don't no-op if the map loader requires it to be reconstructed
return src
// This makes sure that turfs are not changed to space when there's a multi-z turf below // This makes sure that turfs are not changed to space when there's a multi-z turf below
if(N == /turf/space && HasBelow(z)) if(N == /turf/space && HasBelow(z))

View File

@@ -6,7 +6,6 @@
// Items that ask to be called every cycle. // Items that ask to be called every cycle.
var/global/datum/datacore/data_core = null var/global/datum/datacore/data_core = null
var/global/list/all_areas = list()
var/global/list/processing_power_items = list() var/global/list/processing_power_items = list()
var/global/list/med_hud_users = list() // List of all entities using a medical HUD. var/global/list/med_hud_users = list() // List of all entities using a medical HUD.
var/global/list/sec_hud_users = list() // List of all entities using a security HUD. var/global/list/sec_hud_users = list() // List of all entities using a security HUD.
@@ -25,21 +24,10 @@ var/global/list/global_map = null
// Noises made when hit while typing. // Noises made when hit while typing.
var/list/hit_appends = list("-OOF", "-ACK", "-UGH", "-HRNK", "-HURGH", "-GLORF") var/list/hit_appends = list("-OOF", "-ACK", "-UGH", "-HRNK", "-HURGH", "-GLORF")
//Map levels for the crew suit sensors. Make sure you update this for different maps.
var/list/map_levels = list(3,4,6)
var/diary = null var/diary = null
var/diary_runtime = null var/diary_runtime = null
var/diary_date_string = null var/diary_date_string = null
var/href_logfile = null var/href_logfile = null
var/station_name = "NSS Aurora"
var/station_short = "Aurora"
var/const/dock_name = "NTCC Odin"
var/const/boss_name = "Central Command"
var/const/boss_short = "Centcom"
var/const/company_name = "NanoTrasen"
var/const/company_short = "NT"
var/game_version = "Aurorastation" var/game_version = "Aurorastation"
var/changelog_hash = "" var/changelog_hash = ""
var/game_year = (text2num(time2text(world.realtime, "YYYY")) + 442) var/game_year = (text2num(time2text(world.realtime, "YYYY")) + 442)

View File

@@ -338,8 +338,11 @@ proc/admin_notice(var/message, var/rights)
if (!istype(src,/datum/admins)) if (!istype(src,/datum/admins))
usr << "Error: you are not an admin!" usr << "Error: you are not an admin!"
return return
if (!admincaster_signature)
update_newscaster_sig()
var/dat var/dat
dat = text("<HEAD><TITLE>Admin Newscaster</TITLE></HEAD><H3>Admin Newscaster Unit</H3>") dat = "<HEAD><TITLE>Admin Newscaster</TITLE></HEAD><H3>Admin Newscaster Unit</H3>"
switch(admincaster_screen) switch(admincaster_screen)
if(0) if(0)
@@ -363,7 +366,7 @@ proc/admin_notice(var/message, var/rights)
dat+={"<HR><B>Feed Security functions:</B><BR> dat+={"<HR><B>Feed Security functions:</B><BR>
<BR><A href='?src=\ref[src];ac_menu_wanted=1'>[(wanted_already) ? ("Manage") : ("Publish")] \"Wanted\" Issue</A> <BR><A href='?src=\ref[src];ac_menu_wanted=1'>[(wanted_already) ? ("Manage") : ("Publish")] \"Wanted\" Issue</A>
<BR><A href='?src=\ref[src];ac_menu_censor_story=1'>Censor Feed Stories</A> <BR><A href='?src=\ref[src];ac_menu_censor_story=1'>Censor Feed Stories</A>
<BR><A href='?src=\ref[src];ac_menu_censor_channel=1'>Mark Feed Channel with [company_name] D-Notice (disables and locks the channel.</A> <BR><A href='?src=\ref[src];ac_menu_censor_channel=1'>Mark Feed Channel with [current_map.company_name] D-Notice (disables and locks the channel.</A>
<BR><HR><A href='?src=\ref[src];ac_set_signature=1'>The newscaster recognises you as:<BR> <FONT COLOR='green'>[src.admincaster_signature]</FONT></A> <BR><HR><A href='?src=\ref[src];ac_set_signature=1'>The newscaster recognises you as:<BR> <FONT COLOR='green'>[src.admincaster_signature]</FONT></A>
"} "}
if(1) if(1)
@@ -429,7 +432,7 @@ proc/admin_notice(var/message, var/rights)
dat+="<B>[src.admincaster_feed_channel.channel_name]: </B><FONT SIZE=1>\[created by: <FONT COLOR='maroon'>[src.admincaster_feed_channel.author]</FONT>\]</FONT><HR>" dat+="<B>[src.admincaster_feed_channel.channel_name]: </B><FONT SIZE=1>\[created by: <FONT COLOR='maroon'>[src.admincaster_feed_channel.author]</FONT>\]</FONT><HR>"
if(src.admincaster_feed_channel.censored) if(src.admincaster_feed_channel.censored)
dat+={" dat+={"
<FONT COLOR='red'><B>ATTENTION: </B></FONT>This channel has been deemed as threatening to the welfare of the station, and marked with a [company_name] D-Notice.<BR> <FONT COLOR='red'><B>ATTENTION: </B></FONT>This channel has been deemed as threatening to the welfare of the station, and marked with a [current_map.company_name] D-Notice.<BR>
No further feed story additions are allowed while the D-Notice is in effect.<BR><BR> No further feed story additions are allowed while the D-Notice is in effect.<BR><BR>
"} "}
else else
@@ -450,7 +453,7 @@ proc/admin_notice(var/message, var/rights)
"} "}
if(10) if(10)
dat+={" dat+={"
<B>[company_name] Feed Censorship Tool</B><BR> <B>[current_map.company_name] Feed Censorship Tool</B><BR>
<FONT SIZE=1>NOTE: Due to the nature of news Feeds, total deletion of a Feed Story is not possible.<BR> <FONT SIZE=1>NOTE: Due to the nature of news Feeds, total deletion of a Feed Story is not possible.<BR>
Keep in mind that users attempting to view a censored feed will instead see the \[REDACTED\] tag above it.</FONT> Keep in mind that users attempting to view a censored feed will instead see the \[REDACTED\] tag above it.</FONT>
<HR>Select Feed channel to get Stories from:<BR> <HR>Select Feed channel to get Stories from:<BR>
@@ -463,7 +466,7 @@ proc/admin_notice(var/message, var/rights)
dat+="<BR><A href='?src=\ref[src];ac_setScreen=[0]'>Cancel</A>" dat+="<BR><A href='?src=\ref[src];ac_setScreen=[0]'>Cancel</A>"
if(11) if(11)
dat+={" dat+={"
<B>[company_name] D-Notice Handler</B><HR> <B>[current_map.company_name] D-Notice Handler</B><HR>
<FONT SIZE=1>A D-Notice is to be bestowed upon the channel if the handling Authority deems it as harmful for the station's <FONT SIZE=1>A D-Notice is to be bestowed upon the channel if the handling Authority deems it as harmful for the station's
morale, integrity or disciplinary behaviour. A D-Notice will render a channel unable to be updated by anyone, without deleting any feed morale, integrity or disciplinary behaviour. A D-Notice will render a channel unable to be updated by anyone, without deleting any feed
stories it might contain at the time. You can lift a D-Notice if you have the required access at any time.</FONT><HR> stories it might contain at the time. You can lift a D-Notice if you have the required access at any time.</FONT><HR>
@@ -496,7 +499,7 @@ proc/admin_notice(var/message, var/rights)
"} "}
if(src.admincaster_feed_channel.censored) if(src.admincaster_feed_channel.censored)
dat+={" dat+={"
<FONT COLOR='red'><B>ATTENTION: </B></FONT>This channel has been deemed as threatening to the welfare of the station, and marked with a [company_name] D-Notice.<BR> <FONT COLOR='red'><B>ATTENTION: </B></FONT>This channel has been deemed as threatening to the welfare of the station, and marked with a [current_map.company_name] D-Notice.<BR>
No further feed story additions are allowed while the D-Notice is in effect.<BR><BR> No further feed story additions are allowed while the D-Notice is in effect.<BR><BR>
"} "}
else else

Some files were not shown because too many files have changed in this diff Show More