Merge branch 'master' into upstream-merge-34686
@@ -345,9 +345,7 @@ eg:
|
||||
var/mob/living/carbon/human/H = YOU_THE_READER
|
||||
H.gib()
|
||||
```
|
||||
However, DM also has a dot variable, accessed just as ```.``` on its own, defaulting to a value of null. Now, what's special about the dot operator is that it is automatically returned (as in the ```return``` statement) at the end of a proc, provided the proc does not already manually return (```return count``` for example.) Why is this special?
|
||||
|
||||
Well, the ```return``` statement should ideally be free from overhead (functionally free, although of course nothing's free), but DM fails to fulfill this. DM's return statement is actually fairly costly for what it does and for what it's used for.
|
||||
However, DM also has a dot variable, accessed just as ```.``` on its own, defaulting to a value of null. Now, what's special about the dot operator is that it is automatically returned (as in the ```return``` statement) at the end of a proc, provided the proc does not already manually return (```return count``` for example.) Why is this special?
|
||||
|
||||
With ```.``` being everpresent in every proc, can we use it as a temporary variable? Of course we can! However, the ```.``` operator cannot replace a typecasted variable - it can hold data any other var in DM can, it just can't be accessed as one, although the ```.``` operator is compatible with a few operators that look weird but work perfectly fine, such as: ```.++``` for incrementing ```.'s``` value, or ```.[1]``` for accessing the first element of ```.```, provided that it's a list.
|
||||
|
||||
|
||||
@@ -34,6 +34,8 @@ code tab of https://github.com/tgstation/tgstation
|
||||
(note: this will use a lot of bandwidth if you wish to update and is a lot of
|
||||
hassle if you want to make any changes at all, so it's not recommended.)
|
||||
|
||||
Option 3: Download a pre-compiled nightly at https://tgstation13.download/nightlies/ (same caveats as option 2)
|
||||
|
||||
## INSTALLATION
|
||||
|
||||
First-time installation should be fairly straightforward. First, you'll need
|
||||
@@ -128,6 +130,15 @@ To enable an away mission open `config/awaymissionconfig.txt` and uncomment one
|
||||
|
||||
The SQL backend requires a Mariadb server running 10.2 or later. Mysql is not supported but Mariadb is a drop in replacement for mysql. SQL is required for the library, stats tracking, admin notes, and job-only bans, among other features, mostly related to server administration. Your server details go in /config/dbconfig.txt, and the SQL schema is in /SQL/tgstation_schema.sql and /SQL/tgstation_schema_prefix.sql depending on if you want table prefixes. More detailed setup instructions are located here: https://www.tgstation13.org/wiki/Downloading_the_source_code#Setting_up_the_database
|
||||
|
||||
## WEB/CDN RESOURCE DELIVERY
|
||||
|
||||
Web delivery of game resources makes it quicker for players to join and reduces some of the stress on the game server.
|
||||
|
||||
1. Edit compile_options.dm to set the `PRELOAD_RSC` define to `0`
|
||||
1. Add a url to config/external_rsc_urls pointing to a .zip file containing the .rsc.
|
||||
* If you keep up to date with /tg/ you could reuse /tg/'s rsc cdn at http://tgstation13.download/byond/tgstation.zip. Otherwise you can use cdn services like CDN77 or cloudflare (requires adding a page rule to enable caching of the zip), or roll your own cdn using route 53 and vps providers.
|
||||
* Regardless even offloading the rsc to a website without a CDN will be a massive improvement over the in game system for transferring files.
|
||||
|
||||
## IRC BOT SETUP
|
||||
|
||||
Included in the repository is a python3 compatible IRC bot capable of relaying adminhelps to a specified
|
||||
|
||||
@@ -120,9 +120,6 @@
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/ruin/unpowered)
|
||||
"t" = (
|
||||
/turf/open/floor/plasteel/cult{
|
||||
initial_gas_mix = "o2=14;n2=23;TEMP=300"
|
||||
},
|
||||
/obj/effect/baseturf_helper/lava_land/surface,
|
||||
/turf/closed/wall/mineral/cult,
|
||||
/area/ruin/unpowered)
|
||||
@@ -169,7 +166,7 @@ s
|
||||
d
|
||||
c
|
||||
c
|
||||
n
|
||||
g
|
||||
c
|
||||
c
|
||||
d
|
||||
@@ -234,7 +231,7 @@ b
|
||||
b
|
||||
c
|
||||
c
|
||||
h
|
||||
g
|
||||
i
|
||||
b
|
||||
b
|
||||
@@ -252,14 +249,14 @@ b
|
||||
g
|
||||
b
|
||||
b
|
||||
j
|
||||
d
|
||||
b
|
||||
o
|
||||
b
|
||||
j
|
||||
d
|
||||
b
|
||||
b
|
||||
r
|
||||
g
|
||||
b
|
||||
c
|
||||
"}
|
||||
@@ -285,10 +282,10 @@ a
|
||||
c
|
||||
c
|
||||
c
|
||||
h
|
||||
g
|
||||
b
|
||||
m
|
||||
j
|
||||
d
|
||||
q
|
||||
b
|
||||
b
|
||||
@@ -339,7 +336,7 @@ s
|
||||
d
|
||||
c
|
||||
c
|
||||
p
|
||||
g
|
||||
c
|
||||
c
|
||||
d
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
|
||||
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
|
||||
"a" = (
|
||||
/turf/closed/mineral/volcanic/lava_land_surface,
|
||||
/area/lavaland/surface/outdoors)
|
||||
@@ -145,9 +145,6 @@
|
||||
/turf/open/floor/pod/dark,
|
||||
/area/ruin/powered)
|
||||
"E" = (
|
||||
/turf/open/floor/plating{
|
||||
initial_gas_mix = "o2=14;n2=23;TEMP=300"
|
||||
},
|
||||
/obj/structure/shuttle/engine/propulsion/burst{
|
||||
dir = 8
|
||||
},
|
||||
|
||||
@@ -30,7 +30,6 @@
|
||||
/turf/closed/wall/mineral/titanium,
|
||||
/area/ruin/unpowered)
|
||||
"k" = (
|
||||
/turf/open/floor/plating,
|
||||
/obj/item/stack/sheet/mineral/bananium{
|
||||
amount = 15
|
||||
},
|
||||
|
||||
@@ -355,7 +355,6 @@
|
||||
/turf/closed/wall/mineral/titanium,
|
||||
/area/ruin/unpowered)
|
||||
"bm" = (
|
||||
/turf/open/floor/plating,
|
||||
/obj/machinery/door/poddoor{
|
||||
id = "caravantrade1";
|
||||
name = "cargo blastdoor"
|
||||
@@ -399,17 +398,6 @@
|
||||
/obj/structure/lattice,
|
||||
/turf/template_noop,
|
||||
/area/template_noop)
|
||||
"bt" = (
|
||||
/turf/open/floor/plating/airless{
|
||||
icon_plating = "platingdmg3";
|
||||
icon_state = "platingdmg3"
|
||||
},
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/turf/open/floor/plating/airless{
|
||||
icon_plating = "platingdmg2";
|
||||
icon_state = "platingdmg2"
|
||||
},
|
||||
/area/ruin/unpowered)
|
||||
"bu" = (
|
||||
/obj/item/stack/sheet/metal,
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
@@ -493,7 +481,6 @@
|
||||
/turf/open/floor/mineral/titanium/blue/airless,
|
||||
/area/ruin/unpowered)
|
||||
"bJ" = (
|
||||
/turf/open/floor/plating,
|
||||
/obj/effect/spawner/structure/window/shuttle,
|
||||
/turf/open/floor/plating/airless{
|
||||
icon_plating = "platingdmg2";
|
||||
@@ -649,7 +636,6 @@
|
||||
/turf/template_noop,
|
||||
/area/template_noop)
|
||||
"ch" = (
|
||||
/turf/template_noop,
|
||||
/obj/item/stack/rods,
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/turf/open/floor/plating/airless{
|
||||
@@ -754,7 +740,6 @@
|
||||
},
|
||||
/area/ruin/unpowered)
|
||||
"cx" = (
|
||||
/turf/template_noop,
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/turf/open/floor/plating/airless{
|
||||
icon_plating = "platingdmg2";
|
||||
@@ -1159,12 +1144,6 @@
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/ruin/powered)
|
||||
"dB" = (
|
||||
/obj/machinery/computer{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/mineral/plastitanium,
|
||||
/area/ruin/powered)
|
||||
"dC" = (
|
||||
/obj/machinery/computer{
|
||||
dir = 8
|
||||
@@ -1862,7 +1841,7 @@ aa
|
||||
aa
|
||||
ab
|
||||
ce
|
||||
dB
|
||||
dC
|
||||
ce
|
||||
ab
|
||||
aa
|
||||
@@ -3497,7 +3476,7 @@ aa
|
||||
aa
|
||||
aa
|
||||
bl
|
||||
bt
|
||||
ci
|
||||
bB
|
||||
bB
|
||||
bU
|
||||
|
||||
@@ -11,16 +11,8 @@
|
||||
icon_plating = "platingdmg3";
|
||||
icon_state = "platingdmg3"
|
||||
},
|
||||
/turf/open/floor/plating/airless{
|
||||
icon_plating = "platingdmg2";
|
||||
icon_state = "platingdmg2"
|
||||
},
|
||||
/area/ruin/unpowered)
|
||||
"ad" = (
|
||||
/turf/open/floor/plating/airless{
|
||||
icon_plating = "platingdmg3";
|
||||
icon_state = "platingdmg3"
|
||||
},
|
||||
/obj/structure/girder,
|
||||
/turf/open/floor/plating/airless{
|
||||
icon_plating = "platingdmg2";
|
||||
@@ -33,10 +25,6 @@
|
||||
/turf/template_noop,
|
||||
/area/template_noop)
|
||||
"af" = (
|
||||
/turf/open/floor/plating/airless{
|
||||
icon_plating = "platingdmg3";
|
||||
icon_state = "platingdmg3"
|
||||
},
|
||||
/obj/item/stack/sheet/metal,
|
||||
/turf/open/floor/plating/airless{
|
||||
icon_plating = "platingdmg2";
|
||||
@@ -63,10 +51,6 @@
|
||||
/turf/template_noop,
|
||||
/area/template_noop)
|
||||
"ak" = (
|
||||
/turf/open/floor/plating/airless{
|
||||
icon_plating = "platingdmg3";
|
||||
icon_state = "platingdmg3"
|
||||
},
|
||||
/obj/item/stack/rods,
|
||||
/turf/open/floor/plating/airless{
|
||||
icon_plating = "platingdmg2";
|
||||
@@ -116,7 +100,6 @@
|
||||
/turf/open/floor/plating/airless,
|
||||
/area/ruin/unpowered)
|
||||
"as" = (
|
||||
/turf/open/floor/plating/airless,
|
||||
/obj/item/stack/sheet/metal,
|
||||
/turf/open/floor/plating/airless{
|
||||
icon_plating = "platingdmg2";
|
||||
@@ -147,7 +130,6 @@
|
||||
/turf/open/floor/plasteel/airless,
|
||||
/area/ruin/unpowered)
|
||||
"ay" = (
|
||||
/turf/open/floor/plating/airless,
|
||||
/obj/item/stack/tile/plasteel,
|
||||
/turf/open/floor/plating/airless{
|
||||
icon_plating = "platingdmg2";
|
||||
@@ -328,9 +310,6 @@
|
||||
/turf/open/floor/plasteel/airless/bar,
|
||||
/area/ruin/unpowered)
|
||||
"be" = (
|
||||
/turf/open/floor/plasteel/bar{
|
||||
initial_gas_mix = "TEMP=2.7"
|
||||
},
|
||||
/turf/open/floor/plating/airless{
|
||||
icon_plating = "platingdmg2";
|
||||
icon_state = "platingdmg2"
|
||||
|
||||
@@ -162,7 +162,6 @@
|
||||
/turf/open/floor/plating/asteroid/airless,
|
||||
/area/ruin/unpowered/no_grav)
|
||||
"I" = (
|
||||
/turf/open/space,
|
||||
/obj/effect/turf_decal/sand,
|
||||
/turf/open/floor/plasteel/airless/asteroid,
|
||||
/area/ruin/unpowered/no_grav)
|
||||
|
||||
@@ -137,9 +137,6 @@
|
||||
},
|
||||
/area/awaymission/caves/BMP_asteroid/level_four)
|
||||
"ax" = (
|
||||
/turf/open/floor/engine/cult{
|
||||
initial_gas_mix = "n2=23;o2=14"
|
||||
},
|
||||
/turf/closed/wall/mineral/cult,
|
||||
/area/awaymission/caves/BMP_asteroid/level_four)
|
||||
"ay" = (
|
||||
@@ -377,9 +374,6 @@
|
||||
},
|
||||
/area/awaymission/caves/BMP_asteroid/level_three)
|
||||
"bd" = (
|
||||
/turf/open/floor/plating/asteroid/basalt/lava{
|
||||
initial_gas_mix = "n2=23;o2=14"
|
||||
},
|
||||
/turf/closed/wall/mineral/cult,
|
||||
/area/awaymission/caves/BMP_asteroid/level_four)
|
||||
"be" = (
|
||||
|
||||
@@ -350,9 +350,6 @@
|
||||
},
|
||||
/area/awaymission/centcomAway/hangar)
|
||||
"bn" = (
|
||||
/turf/open/floor/plasteel/vault{
|
||||
dir = 5
|
||||
},
|
||||
/turf/closed/wall/mineral/titanium/interior,
|
||||
/area/awaymission/centcomAway/hangar)
|
||||
"bo" = (
|
||||
@@ -1884,7 +1881,6 @@
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/awaymission/centcomAway/hangar)
|
||||
"gS" = (
|
||||
/turf/open/floor/plating,
|
||||
/obj/structure/shuttle/engine/propulsion/burst{
|
||||
dir = 8
|
||||
},
|
||||
|
||||
@@ -5685,10 +5685,6 @@
|
||||
},
|
||||
/area/awaymission/moonoutpost19/arrivals)
|
||||
"lc" = (
|
||||
/turf/open/floor/plating/asteroid{
|
||||
initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251";
|
||||
heat_capacity = 1e+006
|
||||
},
|
||||
/turf/closed/wall/mineral/titanium/interior,
|
||||
/area/awaymission/moonoutpost19/arrivals)
|
||||
"ld" = (
|
||||
|
||||
@@ -20,8 +20,7 @@
|
||||
/area/awaymission/research/exterior)
|
||||
"ag" = (
|
||||
/turf/closed/wall/mineral/plastitanium{
|
||||
dir = 8;
|
||||
icon_state = "diagonalWall3"
|
||||
dir = 8
|
||||
},
|
||||
/area/awaymission/research/interior/engineering)
|
||||
"ah" = (
|
||||
@@ -42,8 +41,7 @@
|
||||
/area/awaymission/research/interior/engineering)
|
||||
"ak" = (
|
||||
/turf/closed/wall/mineral/plastitanium{
|
||||
dir = 1;
|
||||
icon_state = "diagonalWall3"
|
||||
dir = 1
|
||||
},
|
||||
/area/awaymission/research/interior/engineering)
|
||||
"al" = (
|
||||
@@ -231,9 +229,7 @@
|
||||
/turf/open/floor/plasteel{
|
||||
icon_state = "damaged4"
|
||||
},
|
||||
/turf/closed/wall/mineral/plastitanium{
|
||||
icon_state = "diagonalWall3"
|
||||
},
|
||||
/turf/closed/wall/mineral/plastitanium,
|
||||
/area/awaymission/research/interior/engineering)
|
||||
"aT" = (
|
||||
/mob/living/simple_animal/hostile/syndicate/melee,
|
||||
@@ -244,8 +240,7 @@
|
||||
icon_state = "damaged1"
|
||||
},
|
||||
/turf/closed/wall/mineral/plastitanium{
|
||||
dir = 4;
|
||||
icon_state = "diagonalWall3"
|
||||
dir = 4
|
||||
},
|
||||
/area/awaymission/research/interior/engineering)
|
||||
"aV" = (
|
||||
@@ -303,9 +298,7 @@
|
||||
/turf/open/floor/plasteel{
|
||||
icon_state = "damaged5"
|
||||
},
|
||||
/turf/closed/wall/mineral/plastitanium{
|
||||
icon_state = "diagonalWall3"
|
||||
},
|
||||
/turf/closed/wall/mineral/plastitanium,
|
||||
/area/awaymission/research/interior/engineering)
|
||||
"bd" = (
|
||||
/turf/open/floor/plasteel{
|
||||
@@ -320,12 +313,8 @@
|
||||
},
|
||||
/area/awaymission/research/interior/engineering)
|
||||
"bf" = (
|
||||
/turf/open/floor/plasteel{
|
||||
icon_state = "damaged3"
|
||||
},
|
||||
/turf/closed/wall/mineral/plastitanium{
|
||||
dir = 4;
|
||||
icon_state = "diagonalWall3"
|
||||
dir = 4
|
||||
},
|
||||
/area/awaymission/research/interior/engineering)
|
||||
"bg" = (
|
||||
@@ -4041,7 +4030,6 @@
|
||||
/turf/closed/wall/mineral/titanium,
|
||||
/area/awaymission/research/exterior)
|
||||
"mf" = (
|
||||
/turf/open/floor/plating/asteroid/airless,
|
||||
/obj/structure/shuttle/engine/propulsion/burst{
|
||||
dir = 4
|
||||
},
|
||||
@@ -4152,7 +4140,6 @@
|
||||
/turf/closed/wall/mineral/titanium/interior,
|
||||
/area/awaymission/research/exterior)
|
||||
"mz" = (
|
||||
/turf/open/floor/plating/asteroid/airless,
|
||||
/obj/structure/shuttle/engine/propulsion/burst{
|
||||
dir = 8
|
||||
},
|
||||
@@ -4357,6 +4344,12 @@
|
||||
"ne" = (
|
||||
/turf/open/floor/mineral/plasma,
|
||||
/area/space/nearstation)
|
||||
"nf" = (
|
||||
/turf/closed/wall/mineral/plastitanium/nodiagonal,
|
||||
/area/awaymission/research/interior/engineering)
|
||||
"ng" = (
|
||||
/turf/closed/wall/mineral/plastitanium/nodiagonal,
|
||||
/area/awaymission/research/interior/engineering)
|
||||
|
||||
(1,1,1) = {"
|
||||
aa
|
||||
@@ -41728,7 +41721,7 @@ ap
|
||||
ap
|
||||
an
|
||||
aJ
|
||||
al
|
||||
nf
|
||||
bc
|
||||
bp
|
||||
bH
|
||||
@@ -42499,7 +42492,7 @@ aq
|
||||
ay
|
||||
an
|
||||
aL
|
||||
al
|
||||
ng
|
||||
bf
|
||||
bs
|
||||
bK
|
||||
|
||||
@@ -1464,7 +1464,6 @@
|
||||
/turf/open/floor/plating/ice/colder,
|
||||
/area/awaymission/snowdin/dungeon1)
|
||||
"eK" = (
|
||||
/turf/open/space,
|
||||
/obj/structure/girder,
|
||||
/turf/open/floor/plating/snowed,
|
||||
/area/awaymission/snowdin/post)
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
//#define LOWMEMORYMODE //uncomment this to load centcom and runtime station and thats it.
|
||||
|
||||
#include "map_files\generic\CentCom.dmm"
|
||||
#include "map_files\generic\SpaceStation.dmm"
|
||||
|
||||
#ifndef LOWMEMORYMODE
|
||||
|
||||
#include "map_files\generic\Space.dmm"
|
||||
#include "map_files\generic\SpaceDock.dmm"
|
||||
#include "map_files\Mining\Lavaland.dmm"
|
||||
#include "map_files\generic\City_of_Cogs.dmm"
|
||||
|
||||
#ifdef ALL_MAPS
|
||||
#include "map_files\debug\runtimestation.dmm"
|
||||
#include "cit_map_files\Deltastation\DeltaStation2.dmm"
|
||||
#include "cit_map_files\MetaStation\MetaStation.dmm"
|
||||
#include "cit_map_files\OmegaStation\OmegaStation.dmm"
|
||||
#include "cit_map_files\PubbyStation\PubbyStation.dmm"
|
||||
#include "cit_map_files\BoxStation\BoxStation.dmm"
|
||||
|
||||
#ifdef TRAVISBUILDING
|
||||
#include "templates.dm"
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
@@ -57126,15 +57126,12 @@
|
||||
/area/science/circuit)
|
||||
"Qpp" = (
|
||||
/turf/closed/wall,
|
||||
/turf/open/floor/circuit,
|
||||
/area/science/circuit)
|
||||
"Qpq" = (
|
||||
/turf/closed/wall,
|
||||
/turf/open/floor/circuit,
|
||||
/area/science/circuit)
|
||||
"Qpr" = (
|
||||
/turf/closed/wall,
|
||||
/turf/open/floor/circuit,
|
||||
/area/science/circuit)
|
||||
"Qps" = (
|
||||
/turf/closed/wall/r_wall,
|
||||
@@ -57155,7 +57152,6 @@
|
||||
/area/maintenance/starboard/aft)
|
||||
"Qpw" = (
|
||||
/turf/closed/wall,
|
||||
/turf/open/floor/circuit,
|
||||
/area/science/circuit)
|
||||
"Qpx" = (
|
||||
/obj/structure/table/reinforced,
|
||||
@@ -57186,7 +57182,6 @@
|
||||
/area/maintenance/starboard/aft)
|
||||
"QpB" = (
|
||||
/turf/closed/wall,
|
||||
/turf/open/floor/circuit,
|
||||
/area/science/circuit)
|
||||
"QpC" = (
|
||||
/obj/structure/table/reinforced,
|
||||
@@ -57212,7 +57207,6 @@
|
||||
/area/science/circuit)
|
||||
"QpG" = (
|
||||
/turf/closed/wall,
|
||||
/turf/open/floor/circuit,
|
||||
/area/science/circuit)
|
||||
"QpH" = (
|
||||
/turf/open/floor/plasteel/white,
|
||||
@@ -57229,7 +57223,6 @@
|
||||
/area/science/circuit)
|
||||
"QpK" = (
|
||||
/turf/closed/wall,
|
||||
/turf/open/floor/circuit,
|
||||
/area/science/circuit)
|
||||
"QpL" = (
|
||||
/turf/open/floor/plasteel/white,
|
||||
@@ -57243,7 +57236,6 @@
|
||||
/area/science/circuit)
|
||||
"QpO" = (
|
||||
/turf/closed/wall,
|
||||
/turf/open/floor/circuit,
|
||||
/area/science/circuit)
|
||||
"QpP" = (
|
||||
/obj/machinery/light_switch{
|
||||
@@ -57264,9 +57256,8 @@
|
||||
/turf/open/floor/plasteel,
|
||||
/area/science/circuit)
|
||||
"QpS" = (
|
||||
/turf/closed/wall,
|
||||
/obj/structure/sign/nanotrasen,
|
||||
/turf/open/floor/circuit,
|
||||
/turf/closed/wall,
|
||||
/area/science/circuit)
|
||||
"QpT" = (
|
||||
/obj/machinery/light{
|
||||
@@ -57367,16 +57358,14 @@
|
||||
/turf/open/floor/plating,
|
||||
/area/maintenance/starboard/aft)
|
||||
"Qqg" = (
|
||||
/turf/closed/wall,
|
||||
/obj/structure/sign/nanotrasen,
|
||||
/turf/open/floor/circuit,
|
||||
/turf/closed/wall,
|
||||
/area/science/circuit)
|
||||
"Qqh" = (
|
||||
/turf/open/floor/plasteel/white,
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/item/paper_bin,
|
||||
/obj/item/pen,
|
||||
/turf/open/floor/circuit,
|
||||
/turf/open/floor/plasteel/white,
|
||||
/area/science/circuit)
|
||||
"Qqi" = (
|
||||
/obj/machinery/light{
|
||||
@@ -57391,7 +57380,6 @@
|
||||
/area/science/misc_lab)
|
||||
"Qqk" = (
|
||||
/turf/closed/wall,
|
||||
/turf/open/floor/circuit,
|
||||
/area/science/circuit)
|
||||
"Qql" = (
|
||||
/obj/structure/table/reinforced,
|
||||
@@ -57413,7 +57401,6 @@
|
||||
/area/science/circuit)
|
||||
"Qqo" = (
|
||||
/turf/closed/wall,
|
||||
/turf/open/floor/circuit,
|
||||
/area/science/circuit)
|
||||
"Qqp" = (
|
||||
/obj/structure/table/reinforced,
|
||||
|
||||
@@ -19457,7 +19457,6 @@
|
||||
/turf/open/floor/plasteel/redyellow/side,
|
||||
/area/security/prison)
|
||||
"aPt" = (
|
||||
/turf/open/floor/plasteel/redyellow/side,
|
||||
/obj/machinery/vending/sustenance,
|
||||
/turf/open/floor/plating{
|
||||
icon_state = "platingdmg2"
|
||||
@@ -59948,7 +59947,6 @@
|
||||
/turf/open/floor/plating,
|
||||
/area/maintenance/starboard)
|
||||
"crA" = (
|
||||
/turf/open/floor/plating,
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/turf/open/floor/plating{
|
||||
icon_state = "platingdmg2"
|
||||
|
||||
@@ -2113,7 +2113,6 @@
|
||||
/turf/open/floor/plasteel,
|
||||
/area/asteroid/nearstation)
|
||||
"aep" = (
|
||||
/turf/open/floor/plating,
|
||||
/turf/open/floor/plating{
|
||||
icon_state = "platingdmg2"
|
||||
},
|
||||
|
||||
@@ -195,7 +195,6 @@
|
||||
/turf/open/floor/mineral/titanium,
|
||||
/area/shuttle/escape)
|
||||
"F" = (
|
||||
/turf/closed/wall/mineral/titanium,
|
||||
/obj/structure/table,
|
||||
/obj/item/storage/firstaid/fire,
|
||||
/obj/item/storage/firstaid/regular{
|
||||
@@ -204,7 +203,7 @@
|
||||
},
|
||||
/obj/item/crowbar,
|
||||
/obj/item/extinguisher,
|
||||
/turf/open/floor/mineral/titanium,
|
||||
/turf/closed/wall/mineral/titanium,
|
||||
/area/shuttle/escape)
|
||||
"G" = (
|
||||
/turf/closed/wall/mineral/titanium,
|
||||
@@ -246,11 +245,10 @@
|
||||
/turf/open/floor/mineral/titanium/blue,
|
||||
/area/shuttle/escape)
|
||||
"N" = (
|
||||
/turf/closed/wall/mineral/titanium,
|
||||
/obj/machinery/computer/security{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/mineral/titanium,
|
||||
/turf/closed/wall/mineral/titanium,
|
||||
/area/shuttle/escape)
|
||||
"O" = (
|
||||
/obj/machinery/computer/crew{
|
||||
|
||||
@@ -20,19 +20,6 @@
|
||||
"d" = (
|
||||
/turf/closed/wall/mineral/plastitanium,
|
||||
/area/ruin/powered/shuttle/medium_1)
|
||||
"e" = (
|
||||
/turf/closed/wall/mineral/plastitanium{
|
||||
dir = 1;
|
||||
icon_state = "diagonalWall3"
|
||||
},
|
||||
/area/ruin/powered/shuttle/medium_1)
|
||||
"f" = (
|
||||
/turf/closed/wall/mineral/plastitanium{
|
||||
dir = 4;
|
||||
icon_state = "diagonalWall3"
|
||||
},
|
||||
/turf/closed/wall/mineral/titanium,
|
||||
/area/ruin/powered/shuttle/medium_1)
|
||||
"g" = (
|
||||
/turf/closed/wall/mineral/titanium,
|
||||
/area/ruin/powered/shuttle/medium_1)
|
||||
@@ -100,19 +87,6 @@
|
||||
},
|
||||
/turf/open/space,
|
||||
/area/ruin/powered/shuttle/medium_1)
|
||||
"x" = (
|
||||
/turf/closed/wall/mineral/plastitanium{
|
||||
dir = 1;
|
||||
icon_state = "diagonalWall3"
|
||||
},
|
||||
/turf/closed/wall/mineral/titanium,
|
||||
/area/ruin/powered/shuttle/medium_1)
|
||||
"y" = (
|
||||
/turf/closed/wall/mineral/plastitanium{
|
||||
dir = 4;
|
||||
icon_state = "diagonalWall3"
|
||||
},
|
||||
/area/ruin/powered/shuttle/medium_1)
|
||||
|
||||
(1,1,1) = {"
|
||||
a
|
||||
@@ -202,7 +176,7 @@ c
|
||||
(6,1,1) = {"
|
||||
d
|
||||
d
|
||||
f
|
||||
g
|
||||
g
|
||||
k
|
||||
g
|
||||
@@ -212,7 +186,7 @@ g
|
||||
g
|
||||
k
|
||||
g
|
||||
x
|
||||
g
|
||||
d
|
||||
d
|
||||
"}
|
||||
@@ -248,10 +222,10 @@ j
|
||||
j
|
||||
g
|
||||
d
|
||||
y
|
||||
d
|
||||
"}
|
||||
(9,1,1) = {"
|
||||
e
|
||||
d
|
||||
d
|
||||
g
|
||||
j
|
||||
@@ -264,12 +238,12 @@ g
|
||||
j
|
||||
j
|
||||
g
|
||||
y
|
||||
d
|
||||
a
|
||||
"}
|
||||
(10,1,1) = {"
|
||||
a
|
||||
e
|
||||
d
|
||||
g
|
||||
g
|
||||
g
|
||||
|
||||
@@ -20,37 +20,18 @@
|
||||
"d" = (
|
||||
/turf/closed/wall/mineral/plastitanium,
|
||||
/area/ruin/powered/shuttle/medium_2)
|
||||
"e" = (
|
||||
/turf/closed/wall/mineral/plastitanium{
|
||||
dir = 1;
|
||||
icon_state = "diagonalWall3"
|
||||
},
|
||||
/area/ruin/powered/shuttle/medium_2)
|
||||
"f" = (
|
||||
/obj/structure/shuttle/engine/propulsion/burst/right{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/space,
|
||||
/area/ruin/powered/shuttle/medium_2)
|
||||
"g" = (
|
||||
/turf/closed/wall/mineral/plastitanium{
|
||||
dir = 4;
|
||||
icon_state = "diagonalWall3"
|
||||
},
|
||||
/turf/closed/wall/mineral/titanium,
|
||||
/area/ruin/powered/shuttle/medium_2)
|
||||
"h" = (
|
||||
/turf/closed/wall/mineral/titanium,
|
||||
/area/ruin/powered/shuttle/medium_2)
|
||||
"i" = (
|
||||
/turf/closed/wall/mineral/titanium/overspace,
|
||||
/area/ruin/powered/shuttle/medium_2)
|
||||
"j" = (
|
||||
/turf/closed/wall/mineral/plastitanium{
|
||||
dir = 8;
|
||||
icon_state = "diagonalWall3"
|
||||
},
|
||||
/area/ruin/powered/shuttle/medium_2)
|
||||
"k" = (
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/ruin/powered/shuttle/medium_2)
|
||||
@@ -71,11 +52,6 @@
|
||||
"p" = (
|
||||
/turf/open/floor/plasteel/darkyellow,
|
||||
/area/ruin/powered/shuttle/medium_2)
|
||||
"q" = (
|
||||
/turf/closed/wall/mineral/plastitanium{
|
||||
icon_state = "diagonalWall3"
|
||||
},
|
||||
/area/ruin/powered/shuttle/medium_2)
|
||||
"r" = (
|
||||
/obj/structure/table,
|
||||
/turf/open/floor/plasteel,
|
||||
@@ -114,19 +90,6 @@
|
||||
},
|
||||
/turf/open/floor/plasteel/darkyellow,
|
||||
/area/ruin/powered/shuttle/medium_2)
|
||||
"z" = (
|
||||
/turf/closed/wall/mineral/plastitanium{
|
||||
dir = 1;
|
||||
icon_state = "diagonalWall3"
|
||||
},
|
||||
/turf/closed/wall/mineral/titanium,
|
||||
/area/ruin/powered/shuttle/medium_2)
|
||||
"A" = (
|
||||
/turf/closed/wall/mineral/plastitanium{
|
||||
dir = 4;
|
||||
icon_state = "diagonalWall3"
|
||||
},
|
||||
/area/ruin/powered/shuttle/medium_2)
|
||||
"B" = (
|
||||
/turf/closed/wall/mineral/titanium/nodiagonal,
|
||||
/area/ruin/powered/shuttle/medium_2)
|
||||
@@ -179,15 +142,15 @@ a
|
||||
(4,1,1) = {"
|
||||
b
|
||||
f
|
||||
j
|
||||
d
|
||||
d
|
||||
q
|
||||
d
|
||||
d
|
||||
a
|
||||
j
|
||||
d
|
||||
d
|
||||
q
|
||||
d
|
||||
d
|
||||
b
|
||||
f
|
||||
"}
|
||||
@@ -196,11 +159,11 @@ c
|
||||
c
|
||||
d
|
||||
d
|
||||
g
|
||||
h
|
||||
h
|
||||
l
|
||||
h
|
||||
z
|
||||
h
|
||||
d
|
||||
d
|
||||
c
|
||||
@@ -209,7 +172,7 @@ c
|
||||
(6,1,1) = {"
|
||||
d
|
||||
d
|
||||
g
|
||||
h
|
||||
h
|
||||
h
|
||||
r
|
||||
@@ -217,7 +180,7 @@ m
|
||||
r
|
||||
h
|
||||
h
|
||||
z
|
||||
h
|
||||
d
|
||||
d
|
||||
"}
|
||||
@@ -238,7 +201,7 @@ d
|
||||
"}
|
||||
(8,1,1) = {"
|
||||
d
|
||||
g
|
||||
h
|
||||
h
|
||||
n
|
||||
h
|
||||
@@ -248,7 +211,7 @@ B
|
||||
h
|
||||
n
|
||||
h
|
||||
z
|
||||
h
|
||||
d
|
||||
"}
|
||||
(9,1,1) = {"
|
||||
@@ -267,7 +230,7 @@ h
|
||||
d
|
||||
"}
|
||||
(10,1,1) = {"
|
||||
e
|
||||
d
|
||||
h
|
||||
k
|
||||
k
|
||||
@@ -279,7 +242,7 @@ h
|
||||
k
|
||||
k
|
||||
h
|
||||
A
|
||||
d
|
||||
"}
|
||||
(11,1,1) = {"
|
||||
a
|
||||
|
||||
@@ -17,34 +17,13 @@
|
||||
},
|
||||
/turf/open/floor/plating/airless,
|
||||
/area/ruin/powered/shuttle/medium_3)
|
||||
"e" = (
|
||||
/turf/closed/wall/mineral/plastitanium{
|
||||
dir = 8;
|
||||
icon_state = "diagonalWall3"
|
||||
},
|
||||
/area/ruin/powered/shuttle/medium_3)
|
||||
"f" = (
|
||||
/turf/closed/wall/mineral/plastitanium{
|
||||
dir = 1;
|
||||
icon_state = "diagonalWall3"
|
||||
},
|
||||
/area/ruin/powered/shuttle/medium_3)
|
||||
"g" = (
|
||||
/turf/closed/wall/mineral/plastitanium{
|
||||
dir = 4;
|
||||
icon_state = "diagonalWall3"
|
||||
},
|
||||
/turf/closed/wall/mineral/plastitanium,
|
||||
/turf/closed/wall/mineral/titanium,
|
||||
/area/ruin/powered/shuttle/medium_3)
|
||||
"h" = (
|
||||
/turf/closed/wall/mineral/titanium,
|
||||
/area/ruin/powered/shuttle/medium_3)
|
||||
"i" = (
|
||||
/turf/closed/wall/mineral/plastitanium{
|
||||
icon_state = "diagonalWall3"
|
||||
},
|
||||
/turf/closed/wall/mineral/titanium,
|
||||
/area/ruin/powered/shuttle/medium_3)
|
||||
"j" = (
|
||||
/obj/machinery/door/airlock/external/glass,
|
||||
/turf/open/floor/plating,
|
||||
@@ -87,24 +66,10 @@
|
||||
},
|
||||
/turf/open/space,
|
||||
/area/ruin/powered/shuttle/medium_3)
|
||||
"s" = (
|
||||
/turf/closed/wall/mineral/plastitanium{
|
||||
dir = 1;
|
||||
icon_state = "diagonalWall3"
|
||||
},
|
||||
/turf/closed/wall/mineral/titanium,
|
||||
/area/ruin/powered/shuttle/medium_3)
|
||||
"t" = (
|
||||
/obj/effect/spawner/structure/window/reinforced,
|
||||
/turf/open/floor/plating,
|
||||
/area/ruin/powered/shuttle/medium_3)
|
||||
"u" = (
|
||||
/turf/closed/wall/mineral/plastitanium{
|
||||
dir = 8;
|
||||
icon_state = "diagonalWall3"
|
||||
},
|
||||
/turf/closed/wall/mineral/titanium,
|
||||
/area/ruin/powered/shuttle/medium_3)
|
||||
"v" = (
|
||||
/obj/structure/table,
|
||||
/turf/open/floor/plasteel/darkyellow,
|
||||
@@ -118,11 +83,6 @@
|
||||
},
|
||||
/turf/open/floor/plasteel/darkyellow,
|
||||
/area/ruin/powered/shuttle/medium_3)
|
||||
"y" = (
|
||||
/turf/closed/wall/mineral/plastitanium{
|
||||
icon_state = "diagonalWall3"
|
||||
},
|
||||
/area/ruin/powered/shuttle/medium_3)
|
||||
"z" = (
|
||||
/obj/machinery/sleeper,
|
||||
/turf/open/floor/plasteel/darkblue,
|
||||
@@ -130,12 +90,6 @@
|
||||
"A" = (
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/ruin/powered/shuttle/medium_3)
|
||||
"B" = (
|
||||
/turf/closed/wall/mineral/plastitanium{
|
||||
dir = 4;
|
||||
icon_state = "diagonalWall3"
|
||||
},
|
||||
/area/ruin/powered/shuttle/medium_3)
|
||||
"C" = (
|
||||
/turf/open/floor/plasteel/darkblue,
|
||||
/area/ruin/powered/shuttle/medium_3)
|
||||
@@ -210,18 +164,18 @@ a
|
||||
a
|
||||
a
|
||||
a
|
||||
e
|
||||
c
|
||||
o
|
||||
c
|
||||
c
|
||||
y
|
||||
c
|
||||
a
|
||||
a
|
||||
e
|
||||
c
|
||||
c
|
||||
c
|
||||
o
|
||||
y
|
||||
c
|
||||
a
|
||||
a
|
||||
a
|
||||
@@ -233,7 +187,7 @@ a
|
||||
a
|
||||
a
|
||||
a
|
||||
e
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
@@ -246,7 +200,7 @@ c
|
||||
c
|
||||
c
|
||||
c
|
||||
y
|
||||
c
|
||||
a
|
||||
a
|
||||
a
|
||||
@@ -256,22 +210,22 @@ a
|
||||
a
|
||||
a
|
||||
a
|
||||
e
|
||||
g
|
||||
h
|
||||
h
|
||||
s
|
||||
c
|
||||
g
|
||||
j
|
||||
j
|
||||
s
|
||||
c
|
||||
g
|
||||
h
|
||||
h
|
||||
s
|
||||
y
|
||||
g
|
||||
c
|
||||
g
|
||||
j
|
||||
j
|
||||
g
|
||||
c
|
||||
g
|
||||
h
|
||||
h
|
||||
g
|
||||
c
|
||||
a
|
||||
a
|
||||
a
|
||||
@@ -279,7 +233,7 @@ a
|
||||
(6,1,1) = {"
|
||||
a
|
||||
a
|
||||
e
|
||||
c
|
||||
c
|
||||
h
|
||||
k
|
||||
@@ -296,7 +250,7 @@ l
|
||||
k
|
||||
h
|
||||
c
|
||||
y
|
||||
c
|
||||
a
|
||||
a
|
||||
"}
|
||||
@@ -329,7 +283,7 @@ a
|
||||
c
|
||||
c
|
||||
c
|
||||
i
|
||||
g
|
||||
G
|
||||
l
|
||||
l
|
||||
@@ -342,7 +296,7 @@ l
|
||||
l
|
||||
l
|
||||
G
|
||||
u
|
||||
g
|
||||
c
|
||||
c
|
||||
c
|
||||
@@ -375,7 +329,7 @@ F
|
||||
(10,1,1) = {"
|
||||
a
|
||||
a
|
||||
f
|
||||
c
|
||||
c
|
||||
g
|
||||
G
|
||||
@@ -390,9 +344,9 @@ A
|
||||
G
|
||||
p
|
||||
G
|
||||
s
|
||||
g
|
||||
c
|
||||
c
|
||||
B
|
||||
a
|
||||
a
|
||||
"}
|
||||
@@ -447,9 +401,9 @@ a
|
||||
(13,1,1) = {"
|
||||
a
|
||||
a
|
||||
e
|
||||
c
|
||||
i
|
||||
c
|
||||
g
|
||||
G
|
||||
p
|
||||
G
|
||||
@@ -462,9 +416,9 @@ A
|
||||
G
|
||||
p
|
||||
G
|
||||
u
|
||||
g
|
||||
c
|
||||
c
|
||||
y
|
||||
a
|
||||
a
|
||||
"}
|
||||
@@ -510,7 +464,7 @@ l
|
||||
l
|
||||
l
|
||||
G
|
||||
s
|
||||
g
|
||||
c
|
||||
c
|
||||
c
|
||||
@@ -543,7 +497,7 @@ a
|
||||
(17,1,1) = {"
|
||||
a
|
||||
a
|
||||
f
|
||||
c
|
||||
c
|
||||
h
|
||||
k
|
||||
@@ -560,7 +514,7 @@ l
|
||||
k
|
||||
h
|
||||
c
|
||||
B
|
||||
c
|
||||
a
|
||||
a
|
||||
"}
|
||||
@@ -568,22 +522,22 @@ a
|
||||
a
|
||||
a
|
||||
a
|
||||
f
|
||||
i
|
||||
h
|
||||
h
|
||||
u
|
||||
c
|
||||
i
|
||||
g
|
||||
h
|
||||
h
|
||||
g
|
||||
c
|
||||
g
|
||||
j
|
||||
j
|
||||
u
|
||||
g
|
||||
c
|
||||
i
|
||||
g
|
||||
h
|
||||
h
|
||||
u
|
||||
B
|
||||
g
|
||||
c
|
||||
a
|
||||
a
|
||||
a
|
||||
@@ -593,7 +547,7 @@ a
|
||||
a
|
||||
a
|
||||
a
|
||||
f
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
@@ -606,7 +560,7 @@ c
|
||||
c
|
||||
c
|
||||
c
|
||||
B
|
||||
c
|
||||
a
|
||||
a
|
||||
a
|
||||
@@ -618,18 +572,18 @@ a
|
||||
a
|
||||
a
|
||||
a
|
||||
f
|
||||
c
|
||||
q
|
||||
c
|
||||
c
|
||||
B
|
||||
c
|
||||
a
|
||||
a
|
||||
f
|
||||
c
|
||||
c
|
||||
c
|
||||
q
|
||||
B
|
||||
c
|
||||
a
|
||||
a
|
||||
a
|
||||
|
||||
@@ -86,16 +86,18 @@
|
||||
#define HAZARD_LOW_PRESSURE 20 //This is when the black ultra-low pressure icon is displayed. (This one is set as a constant)
|
||||
|
||||
#define TEMPERATURE_DAMAGE_COEFFICIENT 1.5 //This is used in handle_temperature_damage() for humans, and in reagents that affect body temperature. Temperature damage is multiplied by this amount.
|
||||
#define BODYTEMP_AUTORECOVERY_DIVISOR 12 //This is the divisor which handles how much of the temperature difference between the current body temperature and 310.15K (optimal temperature) humans auto-regenerate each tick. The higher the number, the slower the recovery. This is applied each tick, so long as the mob is alive.
|
||||
#define BODYTEMP_AUTORECOVERY_MINIMUM 10 //Minimum amount of kelvin moved toward 310.15K per tick. So long as abs(310.15 - bodytemp) is more than 50.
|
||||
#define BODYTEMP_NORMAL 310.15 //98.6F, or 37C, the normal temprature of the human body.
|
||||
#define BODYTEMP_COLD_DIVISOR 6 //Similar to the BODYTEMP_AUTORECOVERY_DIVISOR, but this is the divisor which is applied at the stage that follows autorecovery. This is the divisor which comes into play when the human's loc temperature is lower than their body temperature. Make it lower to lose bodytemp faster.
|
||||
#define BODYTEMP_HEAT_DIVISOR 6 //Similar to the BODYTEMP_AUTORECOVERY_DIVISOR, but this is the divisor which is applied at the stage that follows autorecovery. This is the divisor which comes into play when the human's loc temperature is higher than their body temperature. Make it lower to gain bodytemp faster.
|
||||
#define BODYTEMP_COOLING_MAX 30 //The maximum number of degrees that your body can cool in 1 tick, when in a cold area.
|
||||
#define BODYTEMP_HEATING_MAX 30 //The maximum number of degrees that your body can heat up in 1 tick, when in a hot area.
|
||||
|
||||
#define BODYTEMP_HEAT_DAMAGE_LIMIT 360.15 // The limit the human body can take before it starts taking damage from heat.
|
||||
#define BODYTEMP_COLD_DAMAGE_LIMIT 260.15 // The limit the human body can take before it starts taking damage from coldness.
|
||||
#define BODYTEMP_NORMAL 310.15 //The natural temperature for a body
|
||||
#define BODYTEMP_AUTORECOVERY_DIVISOR 11 //This is the divisor which handles how much of the temperature difference between the current body temperature and 310.15K (optimal temperature) humans auto-regenerate each tick. The higher the number, the slower the recovery. This is applied each tick, so long as the mob is alive.
|
||||
#define BODYTEMP_AUTORECOVERY_MINIMUM 12 //Minimum amount of kelvin moved toward 310K per tick. So long as abs(310.15 - bodytemp) is more than 50.
|
||||
#define BODYTEMP_COLD_DIVISOR 6 //Similar to the BODYTEMP_AUTORECOVERY_DIVISOR, but this is the divisor which is applied at the stage that follows autorecovery. This is the divisor which comes into play when the human's loc temperature is lower than their body temperature. Make it lower to lose bodytemp faster.
|
||||
#define BODYTEMP_HEAT_DIVISOR 15 //Similar to the BODYTEMP_AUTORECOVERY_DIVISOR, but this is the divisor which is applied at the stage that follows autorecovery. This is the divisor which comes into play when the human's loc temperature is higher than their body temperature. Make it lower to gain bodytemp faster.
|
||||
#define BODYTEMP_COOLING_MAX -100 //The maximum number of degrees that your body can cool in 1 tick, due to the environment, when in a cold area.
|
||||
#define BODYTEMP_HEATING_MAX 30 //The maximum number of degrees that your body can heat up in 1 tick, due to the environment, when in a hot area.
|
||||
|
||||
#define BODYTEMP_HEAT_DAMAGE_LIMIT (BODYTEMP_NORMAL + 50) // The limit the human body can take before it starts taking damage from heat.
|
||||
#define BODYTEMP_COLD_DAMAGE_LIMIT (BODYTEMP_NORMAL - 50) // The limit the human body can take before it starts taking damage from coldness.
|
||||
|
||||
|
||||
#define SPACE_HELM_MIN_TEMP_PROTECT 2.0 //what min_cold_protection_temperature is set to for space-helmet quality headwear. MUST NOT BE 0.
|
||||
#define SPACE_HELM_MAX_TEMP_PROTECT 1500 //Thermal insulation works both ways /Malkevin
|
||||
|
||||
@@ -75,36 +75,31 @@
|
||||
// Subsystem fire priority, from lowest to highest priority
|
||||
// If the subsystem isn't listed here it's either DEFAULT or PROCESS (if it's a processing subsystem child)
|
||||
|
||||
#define FIRE_PRIORITY_IDLE_NPC 1
|
||||
#define FIRE_PRIORITY_SERVER_MAINT 1
|
||||
|
||||
#define FIRE_PRIORITY_GARBAGE 4
|
||||
#define FIRE_PRIORITY_RESEARCH 4
|
||||
#define FIRE_PRIORITY_AIR 5
|
||||
#define FIRE_PRIORITY_NPC 5
|
||||
#define FIRE_PRIORITY_PROCESS 6
|
||||
#define FIRE_PRIORITY_THROWING 6
|
||||
#define FIRE_PRIORITY_FLIGHTPACKS 7
|
||||
#define FIRE_PRIORITY_SPACEDRIFT 7
|
||||
#define FIRE_PRIOTITY_SMOOTHING 8
|
||||
#define FIRE_PRIORITY_ORBIT 8
|
||||
#define FIRE_PRIORITY_OBJ 9
|
||||
#define FIRE_PRIORUTY_FIELDS 9
|
||||
#define FIRE_PRIORITY_ACID 9
|
||||
#define FIRE_PRIOTITY_BURNING 9
|
||||
#define FIRE_PRIORITY_INBOUNDS 9
|
||||
|
||||
#define FIRE_PRIORITY_DEFAULT 10
|
||||
|
||||
#define FIRE_PRIORITY_PARALLAX 11
|
||||
#define FIRE_PRIORITY_NETWORKS 12
|
||||
#define FIRE_PRIORITY_MOBS 13
|
||||
#define FIRE_PRIORITY_TGUI 14
|
||||
|
||||
#define FIRE_PRIORITY_TICKER 19
|
||||
#define FIRE_PRIORITY_OVERLAYS 20
|
||||
|
||||
#define FIRE_PRIORITY_INPUT 100 // This must always always be the max highest priority. Player input must never be lost.
|
||||
#define FIRE_PRIORITY_IDLE_NPC 10
|
||||
#define FIRE_PRIORITY_SERVER_MAINT 10
|
||||
#define FIRE_PRIORITY_GARBAGE 15
|
||||
#define FIRE_PRIORITY_RESEARCH 15
|
||||
#define FIRE_PRIORITY_AIR 20
|
||||
#define FIRE_PRIORITY_NPC 20
|
||||
#define FIRE_PRIORITY_PROCESS 25
|
||||
#define FIRE_PRIORITY_THROWING 25
|
||||
#define FIRE_PRIORITY_FLIGHTPACKS 30
|
||||
#define FIRE_PRIORITY_SPACEDRIFT 30
|
||||
#define FIRE_PRIOTITY_SMOOTHING 35
|
||||
#define FIRE_PRIORITY_ORBIT 35
|
||||
#define FIRE_PRIORITY_OBJ 40
|
||||
#define FIRE_PRIORUTY_FIELDS 40
|
||||
#define FIRE_PRIORITY_ACID 40
|
||||
#define FIRE_PRIOTITY_BURNING 40
|
||||
#define FIRE_PRIORITY_INBOUNDS 40
|
||||
#define FIRE_PRIORITY_DEFAULT 50
|
||||
#define FIRE_PRIORITY_PARALLAX 65
|
||||
#define FIRE_PRIORITY_NETWORKS 80
|
||||
#define FIRE_PRIORITY_MOBS 100
|
||||
#define FIRE_PRIORITY_TGUI 110
|
||||
#define FIRE_PRIORITY_TICKER 200
|
||||
#define FIRE_PRIORITY_OVERLAYS 500
|
||||
#define FIRE_PRIORITY_INPUT 1000 // This must always always be the max highest priority. Player input must never be lost.
|
||||
|
||||
// SS runlevels
|
||||
|
||||
|
||||
@@ -15,10 +15,10 @@
|
||||
return T ? T.loc : null
|
||||
|
||||
/proc/get_area_name(atom/X, format_text = FALSE)
|
||||
var/area/Y = get_area(X)
|
||||
if(format_text)
|
||||
return format_text(Y.name)
|
||||
return Y.name
|
||||
var/area/A = isarea(X) ? X : get_area(X)
|
||||
if(!A)
|
||||
return null
|
||||
return format_text ? format_text(A.name) : A.name
|
||||
|
||||
/proc/get_area_by_name(N) //get area by its name
|
||||
for(var/area/A in world)
|
||||
|
||||
@@ -18,6 +18,9 @@
|
||||
#endif // 1 to use the default behaviour;
|
||||
// 2 for preloading absolutely everything;
|
||||
|
||||
#ifdef LOWMEMORYMODE
|
||||
#define FORCE_MAP "_maps/runtimestation.json"
|
||||
#endif
|
||||
|
||||
#define BACKGROUND_ENABLED 0 // The default value for all uses of set background. Set background can cause gradual lag and is recommended you only turn this on if necessary.
|
||||
// 1 will enable set background. 0 will disable set background.
|
||||
|
||||
@@ -38,4 +38,4 @@ GLOBAL_LIST_EMPTY(wire_name_directory)
|
||||
GLOBAL_LIST_EMPTY(ai_status_displays)
|
||||
|
||||
GLOBAL_LIST_EMPTY(mob_spawners) // All mob_spawn objects
|
||||
GLOBAL_LIST_EMPTY(alert_consoles) // Station alert consoles, /obj/machinery/computer/station_alert
|
||||
GLOBAL_LIST_EMPTY(alert_consoles) // Station alert consoles, /obj/machinery/computer/station_alert
|
||||
|
||||
@@ -1,84 +1,87 @@
|
||||
/obj/screen/ghost
|
||||
icon = 'icons/mob/screen_ghost.dmi'
|
||||
|
||||
/obj/screen/ghost/MouseEntered()
|
||||
flick(icon_state + "_anim", src)
|
||||
|
||||
/obj/screen/ghost/jumptomob
|
||||
name = "Jump to mob"
|
||||
icon_state = "jumptomob"
|
||||
|
||||
/obj/screen/ghost/jumptomob/Click()
|
||||
var/mob/dead/observer/G = usr
|
||||
G.jumptomob()
|
||||
|
||||
/obj/screen/ghost/orbit
|
||||
name = "Orbit"
|
||||
icon_state = "orbit"
|
||||
|
||||
/obj/screen/ghost/orbit/Click()
|
||||
var/mob/dead/observer/G = usr
|
||||
G.follow()
|
||||
|
||||
/obj/screen/ghost/reenter_corpse
|
||||
name = "Reenter corpse"
|
||||
icon_state = "reenter_corpse"
|
||||
|
||||
/obj/screen/ghost/reenter_corpse/Click()
|
||||
var/mob/dead/observer/G = usr
|
||||
G.reenter_corpse()
|
||||
|
||||
/obj/screen/ghost/teleport
|
||||
name = "Teleport"
|
||||
icon_state = "teleport"
|
||||
|
||||
/obj/screen/ghost/teleport/Click()
|
||||
var/mob/dead/observer/G = usr
|
||||
G.dead_tele()
|
||||
|
||||
/obj/screen/ghost/pai
|
||||
name = "pAI Candidate"
|
||||
icon_state = "pai"
|
||||
|
||||
/obj/screen/ghost/pai/Click()
|
||||
var/mob/dead/observer/G = usr
|
||||
G.register_pai()
|
||||
|
||||
/datum/hud/ghost/New(mob/owner, ui_style = 'icons/mob/screen_midnight.dmi')
|
||||
..()
|
||||
var/obj/screen/using
|
||||
|
||||
using = new /obj/screen/ghost/jumptomob()
|
||||
using.screen_loc = ui_ghost_jumptomob
|
||||
static_inventory += using
|
||||
|
||||
using = new /obj/screen/ghost/orbit()
|
||||
using.screen_loc = ui_ghost_orbit
|
||||
static_inventory += using
|
||||
|
||||
using = new /obj/screen/ghost/reenter_corpse()
|
||||
using.screen_loc = ui_ghost_reenter_corpse
|
||||
static_inventory += using
|
||||
|
||||
using = new /obj/screen/ghost/teleport()
|
||||
using.screen_loc = ui_ghost_teleport
|
||||
static_inventory += using
|
||||
|
||||
using = new /obj/screen/ghost/pai()
|
||||
using.screen_loc = ui_ghost_pai
|
||||
static_inventory += using
|
||||
|
||||
using = new /obj/screen/language_menu
|
||||
using.icon = ui_style
|
||||
static_inventory += using
|
||||
|
||||
/datum/hud/ghost/show_hud(version = 0, mob/viewmob)
|
||||
..()
|
||||
if(!mymob.client.prefs.ghost_hud)
|
||||
mymob.client.screen -= static_inventory
|
||||
else
|
||||
mymob.client.screen += static_inventory
|
||||
|
||||
/mob/dead/observer/create_mob_hud()
|
||||
if(client && !hud_used)
|
||||
hud_used = new /datum/hud/ghost(src, ui_style2icon(client.prefs.UI_style))
|
||||
/obj/screen/ghost
|
||||
icon = 'icons/mob/screen_ghost.dmi'
|
||||
|
||||
/obj/screen/ghost/MouseEntered()
|
||||
flick(icon_state + "_anim", src)
|
||||
|
||||
/obj/screen/ghost/jumptomob
|
||||
name = "Jump to mob"
|
||||
icon_state = "jumptomob"
|
||||
|
||||
/obj/screen/ghost/jumptomob/Click()
|
||||
var/mob/dead/observer/G = usr
|
||||
G.jumptomob()
|
||||
|
||||
/obj/screen/ghost/orbit
|
||||
name = "Orbit"
|
||||
icon_state = "orbit"
|
||||
|
||||
/obj/screen/ghost/orbit/Click()
|
||||
var/mob/dead/observer/G = usr
|
||||
G.follow()
|
||||
|
||||
/obj/screen/ghost/reenter_corpse
|
||||
name = "Reenter corpse"
|
||||
icon_state = "reenter_corpse"
|
||||
|
||||
/obj/screen/ghost/reenter_corpse/Click()
|
||||
var/mob/dead/observer/G = usr
|
||||
G.reenter_corpse()
|
||||
|
||||
/obj/screen/ghost/teleport
|
||||
name = "Teleport"
|
||||
icon_state = "teleport"
|
||||
|
||||
/obj/screen/ghost/teleport/Click()
|
||||
var/mob/dead/observer/G = usr
|
||||
G.dead_tele()
|
||||
|
||||
/obj/screen/ghost/pai
|
||||
name = "pAI Candidate"
|
||||
icon_state = "pai"
|
||||
|
||||
/obj/screen/ghost/pai/Click()
|
||||
var/mob/dead/observer/G = usr
|
||||
G.register_pai()
|
||||
|
||||
/datum/hud/ghost/New(mob/owner, ui_style = 'icons/mob/screen_midnight.dmi')
|
||||
..()
|
||||
var/obj/screen/using
|
||||
|
||||
using = new /obj/screen/ghost/jumptomob()
|
||||
using.screen_loc = ui_ghost_jumptomob
|
||||
static_inventory += using
|
||||
|
||||
using = new /obj/screen/ghost/orbit()
|
||||
using.screen_loc = ui_ghost_orbit
|
||||
static_inventory += using
|
||||
|
||||
using = new /obj/screen/ghost/reenter_corpse()
|
||||
using.screen_loc = ui_ghost_reenter_corpse
|
||||
static_inventory += using
|
||||
|
||||
using = new /obj/screen/ghost/teleport()
|
||||
using.screen_loc = ui_ghost_teleport
|
||||
static_inventory += using
|
||||
|
||||
using = new /obj/screen/ghost/pai()
|
||||
using.screen_loc = ui_ghost_pai
|
||||
static_inventory += using
|
||||
|
||||
using = new /obj/screen/language_menu
|
||||
using.icon = ui_style
|
||||
static_inventory += using
|
||||
|
||||
/datum/hud/ghost/show_hud(version = 0, mob/viewmob)
|
||||
. = ..()
|
||||
if(!.)
|
||||
return
|
||||
var/mob/screenmob = viewmob || mymob
|
||||
if(!screenmob.client.prefs.ghost_hud)
|
||||
screenmob.client.screen -= static_inventory
|
||||
else
|
||||
screenmob.client.screen += static_inventory
|
||||
|
||||
/mob/dead/observer/create_mob_hud()
|
||||
if(client && !hud_used)
|
||||
hud_used = new /datum/hud/ghost(src, ui_style2icon(client.prefs.UI_style))
|
||||
|
||||
@@ -7,11 +7,10 @@
|
||||
/datum/hud
|
||||
var/mob/mymob
|
||||
|
||||
var/hud_shown = 1 //Used for the HUD toggle (F12)
|
||||
var/hud_version = 1 //Current displayed version of the HUD
|
||||
var/inventory_shown = 0 //Equipped item inventory
|
||||
var/show_intent_icons = 0
|
||||
var/hotkey_ui_hidden = 0 //This is to hide the buttons that can be used via hotkeys. (hotkeybuttons list of buttons)
|
||||
var/hud_shown = TRUE //Used for the HUD toggle (F12)
|
||||
var/hud_version = HUD_STYLE_STANDARD //Current displayed version of the HUD
|
||||
var/inventory_shown = FALSE //Equipped item inventory
|
||||
var/hotkey_ui_hidden = FALSE //This is to hide the buttons that can be used via hotkeys. (hotkeybuttons list of buttons)
|
||||
|
||||
var/obj/screen/ling/chems/lingchemdisplay
|
||||
var/obj/screen/ling/sting/lingstingdisplay
|
||||
@@ -23,7 +22,6 @@
|
||||
|
||||
var/obj/screen/devil/soul_counter/devilsouldisplay
|
||||
|
||||
var/obj/screen/nightvisionicon
|
||||
var/obj/screen/action_intent
|
||||
var/obj/screen/zone_select
|
||||
var/obj/screen/pull_icon
|
||||
@@ -40,7 +38,7 @@
|
||||
var/list/obj/screen/plane_master/plane_masters = list() // see "appearance_flags" in the ref, assoc list of "[plane]" = object
|
||||
|
||||
var/obj/screen/movable/action_button/hide_toggle/hide_actions_toggle
|
||||
var/action_buttons_hidden = 0
|
||||
var/action_buttons_hidden = FALSE
|
||||
|
||||
var/obj/screen/healths
|
||||
var/obj/screen/healthdoll
|
||||
@@ -111,7 +109,6 @@
|
||||
blobpwrdisplay = null
|
||||
alien_plasma_display = null
|
||||
alien_queen_finder = null
|
||||
nightvisionicon = null
|
||||
|
||||
if(plane_masters.len)
|
||||
for(var/thing in plane_masters)
|
||||
@@ -134,10 +131,10 @@
|
||||
//Version denotes which style should be displayed. blank or 0 means "next version"
|
||||
/datum/hud/proc/show_hud(version = 0,mob/viewmob)
|
||||
if(!ismob(mymob))
|
||||
return 0
|
||||
return FALSE
|
||||
var/mob/screenmob = viewmob || mymob
|
||||
if(!screenmob.client)
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
screenmob.client.screen = list()
|
||||
screenmob.client.apply_clickcatcher()
|
||||
@@ -150,7 +147,7 @@
|
||||
|
||||
switch(display_hud_version)
|
||||
if(HUD_STYLE_STANDARD) //Default HUD
|
||||
hud_shown = 1 //Governs behavior of other procs
|
||||
hud_shown = TRUE //Governs behavior of other procs
|
||||
if(static_inventory.len)
|
||||
screenmob.client.screen += static_inventory
|
||||
if(toggleable_inventory.len && screenmob.hud_used && screenmob.hud_used.inventory_shown)
|
||||
@@ -166,7 +163,7 @@
|
||||
action_intent.screen_loc = initial(action_intent.screen_loc) //Restore intent selection to the original position
|
||||
|
||||
if(HUD_STYLE_REDUCED) //Reduced HUD
|
||||
hud_shown = 0 //Governs behavior of other procs
|
||||
hud_shown = FALSE //Governs behavior of other procs
|
||||
if(static_inventory.len)
|
||||
screenmob.client.screen -= static_inventory
|
||||
if(toggleable_inventory.len)
|
||||
@@ -186,7 +183,7 @@
|
||||
action_intent.screen_loc = ui_acti_alt //move this to the alternative position, where zone_select usually is.
|
||||
|
||||
if(HUD_STYLE_NOHUD) //No HUD
|
||||
hud_shown = 0 //Governs behavior of other procs
|
||||
hud_shown = FALSE //Governs behavior of other procs
|
||||
if(static_inventory.len)
|
||||
screenmob.client.screen -= static_inventory
|
||||
if(toggleable_inventory.len)
|
||||
@@ -201,17 +198,23 @@
|
||||
|
||||
hud_version = display_hud_version
|
||||
persistent_inventory_update(screenmob)
|
||||
mymob.update_action_buttons(1)
|
||||
screenmob.update_action_buttons(1)
|
||||
reorganize_alerts()
|
||||
mymob.reload_fullscreen()
|
||||
screenmob.reload_fullscreen()
|
||||
update_parallax_pref(screenmob)
|
||||
return TRUE
|
||||
|
||||
/datum/hud/human/show_hud(version = 0,mob/viewmob)
|
||||
..()
|
||||
hidden_inventory_update(viewmob)
|
||||
. = ..()
|
||||
if(!.)
|
||||
return
|
||||
var/mob/screenmob = viewmob || mymob
|
||||
hidden_inventory_update(screenmob)
|
||||
|
||||
/datum/hud/robot/show_hud(version = 0, mob/viewmob)
|
||||
..()
|
||||
. = ..()
|
||||
if(!.)
|
||||
return
|
||||
update_robot_modules_display()
|
||||
|
||||
/datum/hud/proc/hidden_inventory_update()
|
||||
@@ -224,7 +227,7 @@
|
||||
//Triggered when F12 is pressed (Unless someone changed something in the DMF)
|
||||
/mob/verb/button_pressed_F12()
|
||||
set name = "F12"
|
||||
set hidden = 1
|
||||
set hidden = TRUE
|
||||
|
||||
if(hud_used && client)
|
||||
hud_used.show_hud() //Shows the next hud preset
|
||||
|
||||
@@ -15,10 +15,10 @@
|
||||
targetmob = M
|
||||
|
||||
if(usr.hud_used.inventory_shown && targetmob.hud_used)
|
||||
usr.hud_used.inventory_shown = 0
|
||||
usr.hud_used.inventory_shown = FALSE
|
||||
usr.client.screen -= targetmob.hud_used.toggleable_inventory
|
||||
else
|
||||
usr.hud_used.inventory_shown = 1
|
||||
usr.hud_used.inventory_shown = TRUE
|
||||
usr.client.screen += targetmob.hud_used.toggleable_inventory
|
||||
|
||||
targetmob.hud_used.hidden_inventory_update(usr)
|
||||
@@ -438,7 +438,7 @@
|
||||
|
||||
if(hud_used.hotkey_ui_hidden)
|
||||
client.screen += hud_used.hotkeybuttons
|
||||
hud_used.hotkey_ui_hidden = 0
|
||||
hud_used.hotkey_ui_hidden = FALSE
|
||||
else
|
||||
client.screen -= hud_used.hotkeybuttons
|
||||
hud_used.hotkey_ui_hidden = 1
|
||||
hud_used.hotkey_ui_hidden = TRUE
|
||||
|
||||
@@ -42,7 +42,7 @@ SUBSYSTEM_DEF(mapping)
|
||||
repopulate_sorted_areas()
|
||||
process_teleport_locs() //Sets up the wizard teleport locations
|
||||
preloadTemplates()
|
||||
|
||||
#ifndef LOWMEMORYMODE
|
||||
// Create space levels
|
||||
for(var/I in 1 to ZLEVEL_SPACE_RUIN_COUNT)
|
||||
add_new_zlevel("Empty Area [2 + I]", CROSSLINKED, list(ZTRAIT_SPACE_RUINS = TRUE))
|
||||
@@ -67,7 +67,7 @@ SUBSYSTEM_DEF(mapping)
|
||||
if (space_ruins.len)
|
||||
seedRuins(space_ruins, CONFIG_GET(number/space_budget), /area/space, space_ruins_templates)
|
||||
loading_ruins = FALSE
|
||||
|
||||
#endif
|
||||
repopulate_sorted_areas()
|
||||
// Set up Z-level transitions.
|
||||
setup_map_transitions()
|
||||
|
||||
@@ -17,14 +17,15 @@
|
||||
|
||||
/datum/antagonist/brother/on_gain()
|
||||
SSticker.mode.brothers += owner
|
||||
owner.objectives += team.objectives
|
||||
objectives += team.objectives
|
||||
owner.objectives += objectives
|
||||
owner.special_role = special_role
|
||||
finalize_brother()
|
||||
return ..()
|
||||
|
||||
/datum/antagonist/brother/on_removal()
|
||||
SSticker.mode.brothers -= owner
|
||||
owner.objectives -= team.objectives
|
||||
owner.objectives -= objectives
|
||||
if(owner.current)
|
||||
to_chat(owner.current,"<span class='userdanger'>You are no longer the [special_role]!</span>")
|
||||
owner.special_role = null
|
||||
|
||||
@@ -124,3 +124,20 @@ GLOBAL_LIST_EMPTY(active_alternate_appearances)
|
||||
|
||||
/datum/atom_hud/alternate_appearance/basic/observers/mobShouldSee(mob/M)
|
||||
return isobserver(M)
|
||||
|
||||
/datum/atom_hud/alternate_appearance/basic/blessedAware
|
||||
|
||||
/datum/atom_hud/alternate_appearance/basic/blessedAware/New()
|
||||
..()
|
||||
for(var/mob in GLOB.mob_list)
|
||||
if(mobShouldSee(mob))
|
||||
add_hud_to(mob)
|
||||
|
||||
/datum/atom_hud/alternate_appearance/basic/blessedAware/mobShouldSee(mob/M)
|
||||
if(M.mind && (M.mind.assigned_role == "Chaplain"))
|
||||
return TRUE
|
||||
if (istype(M, /mob/living/simple_animal/hostile/construct/wraith))
|
||||
return TRUE
|
||||
if(isrevenant(M) || iseminence(M) || iswizard(M))
|
||||
return TRUE
|
||||
return FALSE
|
||||
@@ -26,7 +26,7 @@
|
||||
var/OldLoc = loc
|
||||
if(NewLoc && !istype(NewLoc, /turf/open/indestructible/reebe_void))
|
||||
var/turf/T = get_turf(NewLoc)
|
||||
if(T.flags_1 & NOJAUNT_1)
|
||||
for(var/obj/effect/blessing/B in T)
|
||||
if(last_failed_turf != T)
|
||||
T.visible_message("<span class='warning'>[T] suddenly emits a ringing sound!</span>", ignore_mob = src)
|
||||
playsound(T, 'sound/machines/clockcult/ark_damage.ogg', 75, FALSE)
|
||||
|
||||
@@ -88,10 +88,14 @@
|
||||
set_security_level("delta")
|
||||
for(var/V in SSticker.mode.servants_of_ratvar)
|
||||
var/datum/mind/M = V
|
||||
if(!M)
|
||||
continue
|
||||
if(ishuman(M.current))
|
||||
M.current.add_overlay(mutable_appearance('icons/effects/genetics.dmi', "servitude", -MUTATIONS_LAYER))
|
||||
for(var/V in GLOB.brass_recipes)
|
||||
var/datum/stack_recipe/R = V
|
||||
if(!R)
|
||||
continue
|
||||
if(R.title == "wall gear")
|
||||
R.time *= 2 //Building walls becomes slower when the Ark activates
|
||||
mass_recall()
|
||||
@@ -123,6 +127,8 @@
|
||||
/obj/structure/destructible/clockwork/massive/celestial_gateway/proc/mass_recall()
|
||||
for(var/V in SSticker.mode.servants_of_ratvar)
|
||||
var/datum/mind/M = V
|
||||
if(!M)
|
||||
continue
|
||||
if(isliving(M.current) && M.current.stat != DEAD)
|
||||
M.current.forceMove(get_turf(src))
|
||||
M.current.overlay_fullscreen("flash", /obj/screen/fullscreen/flash)
|
||||
@@ -262,7 +268,7 @@
|
||||
return
|
||||
if(!first_sound_played || prob(7))
|
||||
for(var/mob/M in GLOB.player_list)
|
||||
if(M && !isnewplayer(M))
|
||||
if(!isnewplayer(M))
|
||||
var/turf/T = get_turf(M)
|
||||
if(T && T.z == z)
|
||||
to_chat(M, "<span class='warning'><b>You hear otherworldly sounds from the [dir2text(get_dir(get_turf(M), get_turf(src)))]...</span>")
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
|
||||
/obj/structure/destructible/clockwork/trap/brass_skewer/Destroy()
|
||||
STOP_PROCESSING(SSfastprocess, src)
|
||||
if(buckled_mobs && buckled_mobs.len)
|
||||
if(buckled_mobs && LAZYLEN(buckled_mobs))
|
||||
var/mob/living/L = buckled_mobs[1]
|
||||
if(iscarbon(L))
|
||||
L.Knockdown(100)
|
||||
@@ -30,18 +30,18 @@
|
||||
|
||||
/obj/structure/destructible/clockwork/trap/brass_skewer/process()
|
||||
if(density)
|
||||
if(buckled_mobs.len)
|
||||
if(buckled_mobs && LAZYLEN(buckled_mobs))
|
||||
var/mob/living/spitroast = buckled_mobs[1]
|
||||
spitroast.adjustBruteLoss(0.1)
|
||||
|
||||
/obj/structure/destructible/clockwork/trap/attackby(obj/item/I, mob/living/user, params)
|
||||
if(user in buckled_mobs)
|
||||
if(buckled_mobs && (user in buckled_mobs))
|
||||
to_chat(user, "<span class='warning'>You can't reach!</span>")
|
||||
return
|
||||
..()
|
||||
|
||||
/obj/structure/destructible/clockwork/trap/brass_skewer/bullet_act(obj/item/projectile/P)
|
||||
if(buckled_mobs.len)
|
||||
if(buckled_mobs && LAZYLEN(buckled_mobs))
|
||||
var/mob/living/L = buckled_mobs[1]
|
||||
return L.bullet_act(P)
|
||||
return ..()
|
||||
|
||||
@@ -224,7 +224,6 @@
|
||||
invisibility = INVISIBILITY_ABSTRACT
|
||||
revealed = FALSE
|
||||
ghostize(0)//Don't re-enter invisible corpse
|
||||
return
|
||||
|
||||
|
||||
//reveal, stun, icon updates, cast checks, and essence changing
|
||||
|
||||
@@ -238,9 +238,10 @@
|
||||
INVOKE_ASYNC(src, .proc/defile, T)
|
||||
|
||||
/obj/effect/proc_holder/spell/aoe_turf/revenant/defile/proc/defile(turf/T)
|
||||
if(T.flags_1 & NOJAUNT_1)
|
||||
T.flags_1 &= ~NOJAUNT_1
|
||||
for(var/obj/effect/blessing/B in T)
|
||||
qdel(B)
|
||||
new /obj/effect/temp_visual/revenant(T)
|
||||
|
||||
if(!isplatingturf(T) && !istype(T, /turf/open/floor/engine/cult) && isfloorturf(T) && prob(15))
|
||||
var/turf/open/floor/floor = T
|
||||
if(floor.intact && floor.floor_tile)
|
||||
|
||||
@@ -13,8 +13,8 @@
|
||||
antag_flag = ROLE_REV
|
||||
false_report_weight = 10
|
||||
restricted_jobs = list("Security Officer", "Warden", "Detective", "AI", "Cyborg","Captain", "Head of Personnel", "Head of Security", "Chief Engineer", "Research Director", "Chief Medical Officer")
|
||||
required_players = 20
|
||||
required_enemies = 1
|
||||
required_players = 30
|
||||
required_enemies = 2
|
||||
recommended_enemies = 3
|
||||
enemy_minimum_age = 14
|
||||
|
||||
|
||||
@@ -185,56 +185,56 @@
|
||||
FOR_DVIEW(var/turf/t, 3, get_turf(src),INVISIBILITY_LIGHTING)
|
||||
if(t.x == cen.x && t.y > cen.y)
|
||||
var/obj/item/device/flashlight/spotlight/L = new /obj/item/device/flashlight/spotlight(t)
|
||||
L.light_color = "red"
|
||||
L.light_color = LIGHT_COLOR_RED
|
||||
L.light_power = 30-(get_dist(src,L)*8)
|
||||
L.range = 1+get_dist(src, L)
|
||||
spotlights+=L
|
||||
continue
|
||||
if(t.x == cen.x && t.y < cen.y)
|
||||
var/obj/item/device/flashlight/spotlight/L = new /obj/item/device/flashlight/spotlight(t)
|
||||
L.light_color = "purple"
|
||||
L.light_color = LIGHT_COLOR_PURPLE
|
||||
L.light_power = 30-(get_dist(src,L)*8)
|
||||
L.range = 1+get_dist(src, L)
|
||||
spotlights+=L
|
||||
continue
|
||||
if(t.x > cen.x && t.y == cen.y)
|
||||
var/obj/item/device/flashlight/spotlight/L = new /obj/item/device/flashlight/spotlight(t)
|
||||
L.light_color = "#ffff00"
|
||||
L.light_color = LIGHT_COLOR_YELLOW
|
||||
L.light_power = 30-(get_dist(src,L)*8)
|
||||
L.range = 1+get_dist(src, L)
|
||||
spotlights+=L
|
||||
continue
|
||||
if(t.x < cen.x && t.y == cen.y)
|
||||
var/obj/item/device/flashlight/spotlight/L = new /obj/item/device/flashlight/spotlight(t)
|
||||
L.light_color = "green"
|
||||
L.light_color = LIGHT_COLOR_GREEN
|
||||
L.light_power = 30-(get_dist(src,L)*8)
|
||||
L.range = 1+get_dist(src, L)
|
||||
spotlights+=L
|
||||
continue
|
||||
if((t.x+1 == cen.x && t.y+1 == cen.y) || (t.x+2==cen.x && t.y+2 == cen.y))
|
||||
var/obj/item/device/flashlight/spotlight/L = new /obj/item/device/flashlight/spotlight(t)
|
||||
L.light_color = "sw"
|
||||
L.light_color = LIGHT_COLOR_ORANGE
|
||||
L.light_power = 30-(get_dist(src,L)*8)
|
||||
L.range = 1.4+get_dist(src, L)
|
||||
spotlights+=L
|
||||
continue
|
||||
if((t.x-1 == cen.x && t.y-1 == cen.y) || (t.x-2==cen.x && t.y-2 == cen.y))
|
||||
var/obj/item/device/flashlight/spotlight/L = new /obj/item/device/flashlight/spotlight(t)
|
||||
L.light_color = "ne"
|
||||
L.light_color = LIGHT_COLOR_CYAN
|
||||
L.light_power = 30-(get_dist(src,L)*8)
|
||||
L.range = 1.4+get_dist(src, L)
|
||||
spotlights+=L
|
||||
continue
|
||||
if((t.x-1 == cen.x && t.y+1 == cen.y) || (t.x-2==cen.x && t.y+2 == cen.y))
|
||||
var/obj/item/device/flashlight/spotlight/L = new /obj/item/device/flashlight/spotlight(t)
|
||||
L.light_color = "se"
|
||||
L.light_color = LIGHT_COLOR_BLUEGREEN
|
||||
L.light_power = 30-(get_dist(src,L)*8)
|
||||
L.range = 1.4+get_dist(src, L)
|
||||
spotlights+=L
|
||||
continue
|
||||
if((t.x+1 == cen.x && t.y-1 == cen.y) || (t.x+2==cen.x && t.y-2 == cen.y))
|
||||
var/obj/item/device/flashlight/spotlight/L = new /obj/item/device/flashlight/spotlight(t)
|
||||
L.light_color = "nw"
|
||||
L.light_color = LIGHT_COLOR_BLUE
|
||||
L.light_power = 30-(get_dist(src,L)*8)
|
||||
L.range = 1.4+get_dist(src, L)
|
||||
spotlights+=L
|
||||
@@ -247,6 +247,8 @@
|
||||
spawn_atom_to_turf(/obj/effect/temp_visual/hierophant/telegraph/edge, src, 1, FALSE)
|
||||
sleep(5)
|
||||
|
||||
#define DISCO_INFENO_RANGE (rand(85, 115)*0.01)
|
||||
|
||||
/obj/machinery/disco/proc/lights_spin()
|
||||
for(var/i in 1 to 25)
|
||||
if(QDELETED(src) || !active)
|
||||
@@ -273,56 +275,57 @@
|
||||
for(var/obj/item/device/flashlight/spotlight/glow in spotlights) // The multiples reflects custom adjustments to each colors after dozens of tests
|
||||
if(QDELETED(src) || !active || QDELETED(glow))
|
||||
return
|
||||
if(glow.light_color == "red")
|
||||
glow.light_color = "nw"
|
||||
if(glow.light_color == LIGHT_COLOR_RED)
|
||||
glow.light_color = LIGHT_COLOR_BLUE
|
||||
glow.light_power = glow.light_power * 1.48
|
||||
glow.light_range = 0
|
||||
glow.update_light()
|
||||
continue
|
||||
if(glow.light_color == "nw")
|
||||
glow.light_color = "green"
|
||||
glow.light_range = glow.range * 1.1
|
||||
if(glow.light_color == LIGHT_COLOR_BLUE)
|
||||
glow.light_color = LIGHT_COLOR_GREEN
|
||||
glow.light_range = glow.range * DISCO_INFENO_RANGE
|
||||
glow.light_power = glow.light_power * 2 // Any changes to power must come in pairs to neutralize it for other colors
|
||||
glow.update_light()
|
||||
continue
|
||||
if(glow.light_color == "green")
|
||||
glow.light_color = "sw"
|
||||
if(glow.light_color == LIGHT_COLOR_GREEN)
|
||||
glow.light_color = LIGHT_COLOR_ORANGE
|
||||
glow.light_power = glow.light_power * 0.5
|
||||
glow.light_range = 0
|
||||
glow.update_light()
|
||||
continue
|
||||
if(glow.light_color == "sw")
|
||||
glow.light_color = "purple"
|
||||
if(glow.light_color == LIGHT_COLOR_ORANGE)
|
||||
glow.light_color = LIGHT_COLOR_PURPLE
|
||||
glow.light_power = glow.light_power * 2.27
|
||||
glow.light_range = glow.range * 1.15
|
||||
glow.light_range = glow.range * DISCO_INFENO_RANGE
|
||||
glow.update_light()
|
||||
continue
|
||||
if(glow.light_color == "purple")
|
||||
glow.light_color = "se"
|
||||
if(glow.light_color == LIGHT_COLOR_PURPLE)
|
||||
glow.light_color = LIGHT_COLOR_BLUEGREEN
|
||||
glow.light_power = glow.light_power * 0.44
|
||||
glow.light_range = 0
|
||||
glow.update_light()
|
||||
continue
|
||||
if(glow.light_color == "se")
|
||||
glow.light_color = "#ffff00"
|
||||
glow.light_range = glow.range * 0.9
|
||||
if(glow.light_color == LIGHT_COLOR_BLUEGREEN)
|
||||
glow.light_color = LIGHT_COLOR_YELLOW
|
||||
glow.light_range = glow.range * DISCO_INFENO_RANGE
|
||||
glow.update_light()
|
||||
continue
|
||||
if(glow.light_color == "#ffff00")
|
||||
glow.light_color = "ne"
|
||||
if(glow.light_color == LIGHT_COLOR_YELLOW)
|
||||
glow.light_color = LIGHT_COLOR_CYAN
|
||||
glow.light_range = 0
|
||||
glow.update_light()
|
||||
continue
|
||||
if(glow.light_color == "ne")
|
||||
glow.light_color = "red"
|
||||
if(glow.light_color == LIGHT_COLOR_CYAN)
|
||||
glow.light_color = LIGHT_COLOR_RED
|
||||
glow.light_power = glow.light_power * 0.68
|
||||
glow.light_range = glow.range * 0.85
|
||||
glow.light_range = glow.range * DISCO_INFENO_RANGE
|
||||
glow.update_light()
|
||||
continue
|
||||
if(prob(2)) // Unique effects for the dance floor that show up randomly to mix things up
|
||||
INVOKE_ASYNC(src, .proc/hierofunk)
|
||||
sleep(selection.song_beat)
|
||||
|
||||
#undef DISCO_INFENO_RANGE
|
||||
|
||||
/obj/machinery/disco/proc/dance(var/mob/living/M) //Show your moves
|
||||
set waitfor = FALSE
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
/obj/effect/blessing
|
||||
name = "holy blessing"
|
||||
desc = "Holy energies interfere with ethereal travel at this location."
|
||||
icon = 'icons/effects/effects.dmi'
|
||||
icon_state = null
|
||||
anchored = TRUE
|
||||
density = FALSE
|
||||
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
|
||||
|
||||
/obj/effect/blessing/Initialize(mapload)
|
||||
. = ..()
|
||||
for(var/obj/effect/blessing/B in loc)
|
||||
if(B != src)
|
||||
return INITIALIZE_HINT_QDEL
|
||||
var/image/I = image(icon = 'icons/effects/effects.dmi', icon_state = "blessed", layer = ABOVE_OPEN_TURF_LAYER, loc = src)
|
||||
I.alpha = 64
|
||||
I.appearance_flags = RESET_ALPHA
|
||||
add_alt_appearance(/datum/atom_hud/alternate_appearance/basic/blessedAware, "blessing", I)
|
||||
@@ -189,7 +189,7 @@
|
||||
location = get_turf(loca)
|
||||
|
||||
amount = round(sqrt(amt / 2), 1)
|
||||
carry.copy_to(chemholder, 4*carry.total_volume) //The foam holds 4 times the total reagents volume for balance purposes.
|
||||
carry.copy_to(chemholder, carry.total_volume, 4) //The foam holds 4 times the total reagents volume for balance purposes.
|
||||
|
||||
/datum/effect_system/foam_spread/metal/set_up(amt=5, loca, datum/reagents/carry = null, metaltype)
|
||||
..()
|
||||
|
||||
@@ -271,7 +271,7 @@
|
||||
else
|
||||
location = get_turf(loca)
|
||||
amount = radius
|
||||
carry.copy_to(chemholder, 4*carry.total_volume) //The smoke holds 4 times the total reagents volume for balance purposes.
|
||||
carry.copy_to(chemholder, carry.total_volume, 4) //The smoke holds 4 times the total reagents volume for balance purposes.
|
||||
|
||||
if(!silent)
|
||||
var/contained = ""
|
||||
|
||||
@@ -188,6 +188,6 @@
|
||||
var/turf/T = get_turf(loc)
|
||||
if(isopenturf(T))
|
||||
var/turf/open/theturf = T
|
||||
theturf.MakeSlippery(min_wet_time = 10, wet_time_to_add = 5)
|
||||
theturf.MakeSlippery(TURF_WET_WATER, min_wet_time = 10, wet_time_to_add = 5)
|
||||
|
||||
user.visible_message("[user] empties out \the [src] onto the floor using the release valve.", "<span class='info'>You quietly empty out \the [src] using its release valve.</span>")
|
||||
|
||||
@@ -23,12 +23,12 @@
|
||||
var/random_color = TRUE //if the screwdriver uses random coloring
|
||||
var/static/list/screwdriver_colors = list(
|
||||
"blue" = rgb(24, 97, 213),
|
||||
"red" = rgb(149, 23, 16),
|
||||
"red" = rgb(255, 0, 0),
|
||||
"pink" = rgb(213, 24, 141),
|
||||
"brown" = rgb(160, 82, 18),
|
||||
"green" = rgb(14, 127, 27),
|
||||
"cyan" = rgb(24, 162, 213),
|
||||
"yellow" = rgb(213, 140, 24)
|
||||
"yellow" = rgb(255, 165, 0)
|
||||
)
|
||||
|
||||
/obj/item/screwdriver/suicide_act(mob/user)
|
||||
|
||||
@@ -236,7 +236,7 @@
|
||||
soundloop.stop()
|
||||
if(isopenturf(loc))
|
||||
var/turf/open/tile = loc
|
||||
tile.MakeSlippery(min_wet_time = 5, wet_time_to_add = 1)
|
||||
tile.MakeSlippery(TURF_WET_WATER, min_wet_time = 5, wet_time_to_add = 1)
|
||||
|
||||
|
||||
/obj/machinery/shower/attackby(obj/item/I, mob/user, params)
|
||||
|
||||
@@ -168,7 +168,7 @@
|
||||
return 1
|
||||
|
||||
/turf/open/proc/water_vapor_gas_act()
|
||||
MakeSlippery(min_wet_time = 10, wet_time_to_add = 5)
|
||||
MakeSlippery(TURF_WET_WATER, min_wet_time = 10, wet_time_to_add = 5)
|
||||
|
||||
for(var/mob/living/simple_animal/slime/M in src)
|
||||
M.apply_water()
|
||||
|
||||
@@ -264,7 +264,7 @@
|
||||
M.take_damage(damage*2, BRUTE, "melee", 1)
|
||||
|
||||
/turf/proc/Bless()
|
||||
flags_1 |= NOJAUNT_1
|
||||
new /obj/effect/blessing(src)
|
||||
|
||||
/turf/storage_contents_dump_act(obj/item/storage/src_object, mob/user)
|
||||
if(src_object.contents.len)
|
||||
|
||||
@@ -74,6 +74,8 @@
|
||||
|
||||
/datum/emote/living/carbon/human/wag/run_emote(mob/user, params)
|
||||
. = ..()
|
||||
if(!.)
|
||||
return
|
||||
var/mob/living/carbon/human/H = user
|
||||
if(!H.is_wagging_tail())
|
||||
H.startTailWag()
|
||||
|
||||
@@ -1623,24 +1623,29 @@ GLOBAL_LIST_EMPTY(roundstart_races)
|
||||
|
||||
var/loc_temp = H.get_temperature(environment)
|
||||
|
||||
//Body temperature is adjusted in two steps. First, your body tries to stabilize itself a bit.
|
||||
if(H.stat != DEAD)
|
||||
H.natural_bodytemperature_stabilization()
|
||||
|
||||
//Then, it reacts to the surrounding atmosphere based on your thermal protection
|
||||
//Body temperature is adjusted in two parts: first there your body tries to naturally preserve homeostasis (shivering/sweating), then it reacts to the surrounding environment
|
||||
//Thermal protection (insulation) has mixed benefits in two situations (hot in hot places, cold in hot places)
|
||||
if(!H.on_fire) //If you're on fire, you do not heat up or cool down based on surrounding gases
|
||||
if(loc_temp < H.bodytemperature)
|
||||
//Place is colder than we are
|
||||
var/thermal_protection = H.get_cold_protection(loc_temp) //This returns a 0 - 1 value, which corresponds to the percentage of protection based on what you're wearing and what you're exposed to.
|
||||
if(thermal_protection < 1)
|
||||
H.bodytemperature += min((1-thermal_protection) * ((loc_temp - H.bodytemperature) / BODYTEMP_COLD_DIVISOR), BODYTEMP_COOLING_MAX)
|
||||
else
|
||||
//Place is hotter than we are
|
||||
var/thermal_protection = H.get_heat_protection(loc_temp) //This returns a 0 - 1 value, which corresponds to the percentage of protection based on what you're wearing and what you're exposed to.
|
||||
if(thermal_protection < 1)
|
||||
H.bodytemperature += min((1-thermal_protection) * ((loc_temp - H.bodytemperature) / BODYTEMP_HEAT_DIVISOR), BODYTEMP_HEATING_MAX)
|
||||
if((abs(BODYTEMP_NORMAL - H.bodytemperature) <= 5) && (abs(BODYTEMP_NORMAL - loc_temp) <= 25))
|
||||
return //Performance saver
|
||||
var/natural = 0
|
||||
if(H.stat != DEAD)
|
||||
natural = H.natural_bodytemperature_stabilization()
|
||||
var/thermal_protection = 1
|
||||
if(loc_temp < H.bodytemperature) //Place is colder than we are
|
||||
thermal_protection -= H.get_cold_protection(loc_temp) //This returns a 0 - 1 value, which corresponds to the percentage of protection based on what you're wearing and what you're exposed to.
|
||||
if(H.bodytemperature < BODYTEMP_NORMAL) //we're cold, insulation helps us retain body heat and will reduce the heat we lose to the environment
|
||||
H.bodytemperature += (thermal_protection+1)*natural + max(thermal_protection * (loc_temp - H.bodytemperature) / BODYTEMP_COLD_DIVISOR, BODYTEMP_COOLING_MAX)
|
||||
else //we're sweating, insulation hinders our ability to reduce heat - and it will reduce the amount of cooling you get from the environment
|
||||
H.bodytemperature += natural*(1/(thermal_protection+1)) + max((thermal_protection * (loc_temp - H.bodytemperature) + BODYTEMP_NORMAL - H.bodytemperature) / BODYTEMP_COLD_DIVISOR , BODYTEMP_COOLING_MAX) //Extra calculation for hardsuits to bleed off heat
|
||||
else //Place is hotter than we are
|
||||
thermal_protection -= H.get_heat_protection(loc_temp) //This returns a 0 - 1 value, which corresponds to the percentage of protection based on what you're wearing and what you're exposed to.
|
||||
if(H.bodytemperature < BODYTEMP_NORMAL) //and we're cold, insulation enhances our ability to retain body heat but reduces the heat we get from the environment
|
||||
H.bodytemperature += (thermal_protection+1)*natural + min(thermal_protection * (loc_temp - H.bodytemperature) / BODYTEMP_HEAT_DIVISOR, BODYTEMP_HEATING_MAX)
|
||||
else //we're sweating, insulation hinders out ability to reduce heat - but will reduce the amount of heat we get from the environment
|
||||
H.bodytemperature += natural*(1/(thermal_protection+1)) + min(thermal_protection * (loc_temp - H.bodytemperature) / BODYTEMP_HEAT_DIVISOR, BODYTEMP_HEATING_MAX)
|
||||
|
||||
// +/- 50 degrees from 310.15K is the 'safe' zone, where no damage is dealt.
|
||||
// +/- 50 degrees from 310K is the 'safe' zone, where no damage is dealt.
|
||||
if(H.bodytemperature > BODYTEMP_HEAT_DAMAGE_LIMIT && !(RESISTHOT in species_traits))
|
||||
//Body temperature is too hot.
|
||||
var/burn_damage
|
||||
|
||||
@@ -396,15 +396,14 @@
|
||||
/mob/living/carbon/proc/natural_bodytemperature_stabilization()
|
||||
var/body_temperature_difference = BODYTEMP_NORMAL - bodytemperature
|
||||
switch(bodytemperature)
|
||||
if(-INFINITY to BODYTEMP_COLD_DAMAGE_LIMIT) //BODYTEMP_COLD_DAMAGE_LIMIT is BODYTEMP_NORMAL(310.15) - 50, the temperature where you start to feel effects.
|
||||
bodytemperature += max((body_temperature_difference * metabolism_efficiency / BODYTEMP_AUTORECOVERY_DIVISOR), BODYTEMP_AUTORECOVERY_MINIMUM)
|
||||
if(-INFINITY to BODYTEMP_COLD_DAMAGE_LIMIT) //Cold damage limit is 50 below the default, the temperature where you start to feel effects.
|
||||
return max((body_temperature_difference * metabolism_efficiency / BODYTEMP_AUTORECOVERY_DIVISOR), BODYTEMP_AUTORECOVERY_MINIMUM)
|
||||
if(BODYTEMP_COLD_DAMAGE_LIMIT to BODYTEMP_NORMAL)
|
||||
bodytemperature += max(body_temperature_difference * metabolism_efficiency / BODYTEMP_AUTORECOVERY_DIVISOR, min(body_temperature_difference, BODYTEMP_AUTORECOVERY_MINIMUM/4))
|
||||
if(BODYTEMP_NORMAL to BODYTEMP_HEAT_DAMAGE_LIMIT)
|
||||
bodytemperature += min(body_temperature_difference * metabolism_efficiency / BODYTEMP_AUTORECOVERY_DIVISOR, max(body_temperature_difference, -BODYTEMP_AUTORECOVERY_MINIMUM/4))
|
||||
if(BODYTEMP_HEAT_DAMAGE_LIMIT to INFINITY) //BODYTEMP_HEAT_DAMAGE_LIMIT is BODYTEMP_NORMAL(310.15) + 50, the temperature where you start to feel effects.
|
||||
//We totally need a sweat system cause it totally makes sense...~
|
||||
bodytemperature += min((body_temperature_difference / BODYTEMP_AUTORECOVERY_DIVISOR), -BODYTEMP_AUTORECOVERY_MINIMUM) //We're dealing with negative numbers
|
||||
return max(body_temperature_difference * metabolism_efficiency / BODYTEMP_AUTORECOVERY_DIVISOR, min(body_temperature_difference, BODYTEMP_AUTORECOVERY_MINIMUM/4))
|
||||
if(BODYTEMP_NORMAL to BODYTEMP_HEAT_DAMAGE_LIMIT) // Heat damage limit is 50 above the default, the temperature where you start to feel effects.
|
||||
return min(body_temperature_difference * metabolism_efficiency / BODYTEMP_AUTORECOVERY_DIVISOR, max(body_temperature_difference, -BODYTEMP_AUTORECOVERY_MINIMUM/4))
|
||||
if(BODYTEMP_HEAT_DAMAGE_LIMIT to INFINITY)
|
||||
return min((body_temperature_difference / BODYTEMP_AUTORECOVERY_DIVISOR), -BODYTEMP_AUTORECOVERY_MINIMUM) //We're dealing with negative numbers
|
||||
/////////
|
||||
//LIVER//
|
||||
/////////
|
||||
@@ -460,4 +459,4 @@
|
||||
death()
|
||||
var/obj/item/organ/brain/B = getorganslot(ORGAN_SLOT_BRAIN)
|
||||
if(B)
|
||||
B.damaged_brain = TRUE
|
||||
B.damaged_brain = TRUE
|
||||
|
||||
@@ -66,7 +66,7 @@
|
||||
var/loc_temp = get_temperature(environment)
|
||||
|
||||
if(stat != DEAD)
|
||||
natural_bodytemperature_stabilization()
|
||||
bodytemperature += natural_bodytemperature_stabilization()
|
||||
|
||||
if(!on_fire) //If you're on fire, you do not heat up or cool down based on surrounding gases
|
||||
if(loc_temp < bodytemperature)
|
||||
|
||||
@@ -247,7 +247,7 @@
|
||||
if(prob(75))
|
||||
var/turf/open/T = loc
|
||||
if(istype(T))
|
||||
T.MakeSlippery(min_wet_time = 20, wet_time_to_add = 15)
|
||||
T.MakeSlippery(TURF_WET_WATER, min_wet_time = 20, wet_time_to_add = 15)
|
||||
else
|
||||
visible_message("<span class='danger'>[src] whirs and bubbles violently, before releasing a plume of froth!</span>")
|
||||
new /obj/effect/particle_effect/foam(loc)
|
||||
|
||||
@@ -231,7 +231,7 @@
|
||||
var/atom/A = src.loc
|
||||
if(isturf(A))
|
||||
var/areatemp = get_temperature(environment)
|
||||
if( abs(areatemp - bodytemperature) > 40 )
|
||||
if( abs(areatemp - bodytemperature) > 5)
|
||||
var/diff = areatemp - bodytemperature
|
||||
diff = diff / 5
|
||||
bodytemperature += diff
|
||||
|
||||
@@ -339,6 +339,14 @@
|
||||
if(L in Friends) // No eating friends!
|
||||
continue
|
||||
|
||||
var/ally = FALSE
|
||||
for(var/F in faction)
|
||||
if(F in L.faction)
|
||||
ally = TRUE
|
||||
break
|
||||
if(ally)
|
||||
continue
|
||||
|
||||
if(issilicon(L) && (rabid || attacked)) // They can't eat silicons, but they can glomp them in defence
|
||||
targets += L // Possible target found!
|
||||
|
||||
|
||||
@@ -212,9 +212,13 @@
|
||||
R.stun(20)
|
||||
return
|
||||
if(stepTurf.flags_1 & NOJAUNT_1)
|
||||
to_chat(L, "<span class='warning'>Holy energies block your path.</span>")
|
||||
else
|
||||
L.loc = get_step(L, direct)
|
||||
to_chat(L, "<span class='warning'>Some strange aura is blocking the way.</span>")
|
||||
return
|
||||
if (locate(/obj/effect/blessing, stepTurf))
|
||||
to_chat(L, "<span class='warning'>Holy energies block your path!</span>")
|
||||
return
|
||||
|
||||
L.loc = get_step(L, direct)
|
||||
L.setDir(direct)
|
||||
return TRUE
|
||||
|
||||
|
||||
@@ -492,7 +492,7 @@
|
||||
// if a light is turned off, it won't activate emergency power
|
||||
/obj/machinery/light/proc/turned_off()
|
||||
var/area/A = get_area(src)
|
||||
return !A.lightswitch && A.power_light || !flickering
|
||||
return !A.lightswitch && A.power_light || flickering
|
||||
|
||||
// returns whether this light has power
|
||||
// true if area has power and lightswitch is on
|
||||
|
||||
@@ -158,7 +158,7 @@
|
||||
if(istype(target, /datum/reagents))
|
||||
R = target
|
||||
else
|
||||
if(!target.reagents || src.total_volume<=0)
|
||||
if(!target.reagents)
|
||||
return
|
||||
R = target.reagents
|
||||
amount = min(min(amount, src.total_volume), R.maximum_volume-R.total_volume)
|
||||
@@ -181,14 +181,14 @@
|
||||
|
||||
/datum/reagents/proc/copy_to(obj/target, amount=1, multiplier=1, preserve_data=1)
|
||||
var/list/cached_reagents = reagent_list
|
||||
if(!target)
|
||||
if(!target || !total_volume)
|
||||
return
|
||||
|
||||
var/datum/reagents/R
|
||||
if(istype(target, /datum/reagents))
|
||||
R = target
|
||||
else
|
||||
if(!target.reagents || src.total_volume<=0)
|
||||
if(!target.reagents)
|
||||
return
|
||||
R = target.reagents
|
||||
|
||||
|
||||
@@ -459,7 +459,7 @@
|
||||
reac_volume = ..()
|
||||
var/turf/open/T = get_turf(M)
|
||||
if(istype(T) && prob(reac_volume))
|
||||
T.MakeSlippery(min_wet_time = 10, wet_time_to_add = 5)
|
||||
T.MakeSlippery(TURF_WET_WATER, min_wet_time = 10, wet_time_to_add = 5)
|
||||
M.adjust_fire_stacks(-(reac_volume / 10))
|
||||
M.ExtinguishMob()
|
||||
M.apply_damage(0.4*reac_volume, BRUTE)
|
||||
@@ -481,7 +481,7 @@
|
||||
/datum/reagent/blob/pressurized_slime/proc/extinguisharea(obj/structure/blob/B, probchance)
|
||||
for(var/turf/open/T in range(1, B))
|
||||
if(prob(probchance))
|
||||
T.MakeSlippery(min_wet_time = 10, wet_time_to_add = 5)
|
||||
T.MakeSlippery(TURF_WET_WATER, min_wet_time = 10, wet_time_to_add = 5)
|
||||
for(var/obj/O in T)
|
||||
O.extinguish()
|
||||
for(var/mob/living/L in T)
|
||||
|
||||
@@ -124,7 +124,7 @@
|
||||
if(!istype(T))
|
||||
return
|
||||
if(reac_volume >= 5)
|
||||
T.MakeSlippery(min_wet_time = 10, wet_time_to_add = reac_volume * 1.5)
|
||||
T.MakeSlippery(TURF_WET_LUBE, min_wet_time = 10, wet_time_to_add = reac_volume * 1.5)
|
||||
T.name = "deep-fried [initial(T.name)]"
|
||||
T.add_atom_colour(color, TEMPORARY_COLOUR_PRIORITY)
|
||||
|
||||
@@ -213,29 +213,31 @@
|
||||
taste_description = "mint"
|
||||
|
||||
/datum/reagent/consumable/frostoil/on_mob_life(mob/living/M)
|
||||
switch(current_cycle)
|
||||
if(1 to 15)
|
||||
M.bodytemperature -= 10 * TEMPERATURE_DAMAGE_COEFFICIENT
|
||||
if(holder.has_reagent("capsaicin"))
|
||||
holder.remove_reagent("capsaicin", 5)
|
||||
if(isslime(M))
|
||||
M.bodytemperature -= rand(5,20)
|
||||
if(15 to 25)
|
||||
M.bodytemperature -= 20 * TEMPERATURE_DAMAGE_COEFFICIENT
|
||||
if(isslime(M))
|
||||
M.bodytemperature -= rand(10,20)
|
||||
if(25 to 35)
|
||||
M.bodytemperature -= 30 * TEMPERATURE_DAMAGE_COEFFICIENT
|
||||
if(prob(1))
|
||||
M.emote("shiver")
|
||||
if(isslime(M))
|
||||
M.bodytemperature -= rand(15,20)
|
||||
if(35 to INFINITY)
|
||||
M.bodytemperature -= 40 * TEMPERATURE_DAMAGE_COEFFICIENT
|
||||
if(prob(5))
|
||||
M.emote("shiver")
|
||||
if(isslime(M))
|
||||
M.bodytemperature -= rand(20,25)
|
||||
if(M.bodytemperature > 50)
|
||||
switch(current_cycle)
|
||||
if(1 to 15)
|
||||
M.bodytemperature -= 10 * TEMPERATURE_DAMAGE_COEFFICIENT
|
||||
if(holder.has_reagent("capsaicin"))
|
||||
holder.remove_reagent("capsaicin", 5)
|
||||
if(isslime(M))
|
||||
M.bodytemperature -= rand(5,20)
|
||||
if(15 to 25)
|
||||
M.bodytemperature -= 20 * TEMPERATURE_DAMAGE_COEFFICIENT
|
||||
if(isslime(M))
|
||||
M.bodytemperature -= rand(10,20)
|
||||
if(25 to 35)
|
||||
M.bodytemperature -= 30 * TEMPERATURE_DAMAGE_COEFFICIENT
|
||||
if(prob(1))
|
||||
M.emote("shiver")
|
||||
if(isslime(M))
|
||||
M.bodytemperature -= rand(15,20)
|
||||
if(35 to INFINITY)
|
||||
M.bodytemperature -= 40 * TEMPERATURE_DAMAGE_COEFFICIENT
|
||||
if(prob(5))
|
||||
M.emote("shiver")
|
||||
if(isslime(M))
|
||||
M.bodytemperature -= rand(20,25)
|
||||
M.bodytemperature = max(50, M.bodytemperature)
|
||||
..()
|
||||
|
||||
/datum/reagent/consumable/frostoil/reaction_turf(turf/T, reac_volume)
|
||||
@@ -430,7 +432,7 @@
|
||||
/datum/reagent/consumable/cornoil/reaction_turf(turf/open/T, reac_volume)
|
||||
if (!istype(T))
|
||||
return
|
||||
T.MakeSlippery(min_wet_time = 10, wet_time_to_add = reac_volume*2)
|
||||
T.MakeSlippery(TURF_WET_LUBE, min_wet_time = 10, wet_time_to_add = reac_volume*2)
|
||||
var/obj/effect/hotspot/hotspot = (locate(/obj/effect/hotspot) in T)
|
||||
if(hotspot)
|
||||
var/datum/gas_mixture/lowertemp = T.remove_air(T.air.total_moles())
|
||||
|
||||
@@ -130,7 +130,7 @@
|
||||
var/CT = cooling_temperature
|
||||
|
||||
if(reac_volume >= 5)
|
||||
T.MakeSlippery(min_wet_time = 10, wet_time_to_add = min(reac_volume*1.5, 60))
|
||||
T.MakeSlippery(TURF_WET_WATER, min_wet_time = 10, wet_time_to_add = min(reac_volume*1.5, 60))
|
||||
|
||||
for(var/mob/living/simple_animal/slime/M in T)
|
||||
M.apply_water()
|
||||
@@ -614,11 +614,13 @@
|
||||
/datum/reagent/oxygen/reaction_obj(obj/O, reac_volume)
|
||||
if((!O) || (!reac_volume))
|
||||
return 0
|
||||
O.atmos_spawn_air("o2=[reac_volume/2];TEMP=[T20C]")
|
||||
var/temp = holder ? holder.chem_temp : T20C
|
||||
O.atmos_spawn_air("o2=[reac_volume/2];TEMP=[temp]")
|
||||
|
||||
/datum/reagent/oxygen/reaction_turf(turf/open/T, reac_volume)
|
||||
if(istype(T))
|
||||
T.atmos_spawn_air("o2=[reac_volume/2];TEMP=[T20C]")
|
||||
var/temp = holder ? holder.chem_temp : T20C
|
||||
T.atmos_spawn_air("o2=[reac_volume/2];TEMP=[temp]")
|
||||
return
|
||||
|
||||
/datum/reagent/copper
|
||||
@@ -640,11 +642,13 @@
|
||||
/datum/reagent/nitrogen/reaction_obj(obj/O, reac_volume)
|
||||
if((!O) || (!reac_volume))
|
||||
return 0
|
||||
O.atmos_spawn_air("n2=[reac_volume/2];TEMP=[T20C]")
|
||||
var/temp = holder ? holder.chem_temp : T20C
|
||||
O.atmos_spawn_air("n2=[reac_volume/2];TEMP=[temp]")
|
||||
|
||||
/datum/reagent/nitrogen/reaction_turf(turf/open/T, reac_volume)
|
||||
if(istype(T))
|
||||
T.atmos_spawn_air("n2=[reac_volume/2];TEMP=[T20C]")
|
||||
var/temp = holder ? holder.chem_temp : T20C
|
||||
T.atmos_spawn_air("n2=[reac_volume/2];TEMP=[temp]")
|
||||
return
|
||||
|
||||
/datum/reagent/hydrogen
|
||||
@@ -1119,11 +1123,13 @@
|
||||
/datum/reagent/carbondioxide/reaction_obj(obj/O, reac_volume)
|
||||
if((!O) || (!reac_volume))
|
||||
return 0
|
||||
O.atmos_spawn_air("co2=[reac_volume/5];TEMP=[T20C]")
|
||||
var/temp = holder ? holder.chem_temp : T20C
|
||||
O.atmos_spawn_air("co2=[reac_volume/5];TEMP=[temp]")
|
||||
|
||||
/datum/reagent/carbondioxide/reaction_turf(turf/open/T, reac_volume)
|
||||
if(istype(T))
|
||||
T.atmos_spawn_air("co2=[reac_volume/5];TEMP=[T20C]")
|
||||
var/temp = holder ? holder.chem_temp : T20C
|
||||
T.atmos_spawn_air("co2=[reac_volume/5];TEMP=[temp]")
|
||||
return
|
||||
|
||||
/datum/reagent/nitrous_oxide
|
||||
@@ -1138,11 +1144,13 @@
|
||||
/datum/reagent/nitrous_oxide/reaction_obj(obj/O, reac_volume)
|
||||
if((!O) || (!reac_volume))
|
||||
return 0
|
||||
O.atmos_spawn_air("n2o=[reac_volume/5];TEMP=[T20C]")
|
||||
var/temp = holder ? holder.chem_temp : T20C
|
||||
O.atmos_spawn_air("n2o=[reac_volume/5];TEMP=[temp]")
|
||||
|
||||
/datum/reagent/nitrous_oxide/reaction_turf(turf/open/T, reac_volume)
|
||||
if(istype(T))
|
||||
T.atmos_spawn_air("n2o=[reac_volume/5];TEMP=[T20C]")
|
||||
var/temp = holder ? holder.chem_temp : T20C
|
||||
T.atmos_spawn_air("n2o=[reac_volume/5];TEMP=[temp]")
|
||||
|
||||
/datum/reagent/nitrous_oxide/reaction_mob(mob/M, method=TOUCH, reac_volume)
|
||||
if(method == VAPOR)
|
||||
|
||||
@@ -187,7 +187,7 @@
|
||||
/datum/reagent/cryostylane/on_mob_life(mob/living/M) //TODO: code freezing into an ice cube
|
||||
if(M.reagents.has_reagent("oxygen"))
|
||||
M.reagents.remove_reagent("oxygen", 0.5)
|
||||
M.bodytemperature -= 15
|
||||
M.bodytemperature = max(M.bodytemperature - 15,0)
|
||||
..()
|
||||
|
||||
/datum/reagent/cryostylane/reaction_turf(turf/T, reac_volume)
|
||||
|
||||
@@ -73,11 +73,13 @@
|
||||
/datum/reagent/toxin/plasma/reaction_obj(obj/O, reac_volume)
|
||||
if((!O) || (!reac_volume))
|
||||
return 0
|
||||
O.atmos_spawn_air("plasma=[reac_volume];TEMP=[T20C]")
|
||||
var/temp = holder ? holder.chem_temp : T20C
|
||||
O.atmos_spawn_air("plasma=[reac_volume];TEMP=[temp]")
|
||||
|
||||
/datum/reagent/toxin/plasma/reaction_turf(turf/open/T, reac_volume)
|
||||
if(istype(T))
|
||||
T.atmos_spawn_air("plasma=[reac_volume];TEMP=[T20C]")
|
||||
var/temp = holder ? holder.chem_temp : T20C
|
||||
T.atmos_spawn_air("plasma=[reac_volume];TEMP=[temp]")
|
||||
return
|
||||
|
||||
/datum/reagent/toxin/plasma/reaction_mob(mob/living/M, method=TOUCH, reac_volume)//Splashing people with plasma is stronger than fuel!
|
||||
|
||||
@@ -346,15 +346,17 @@
|
||||
id = "cryostylane_oxygen"
|
||||
results = list("cryostylane" = 1)
|
||||
required_reagents = list("cryostylane" = 1, "oxygen" = 1)
|
||||
mob_react = FALSE
|
||||
|
||||
/datum/chemical_reaction/cryostylane_oxygen/on_reaction(datum/reagents/holder, created_volume)
|
||||
holder.chem_temp -= 10*created_volume
|
||||
holder.chem_temp = max(holder.chem_temp - 10*created_volume,0)
|
||||
|
||||
/datum/chemical_reaction/pyrosium_oxygen
|
||||
name = "ephemeral pyrosium reaction"
|
||||
id = "pyrosium_oxygen"
|
||||
results = list("pyrosium" = 1)
|
||||
required_reagents = list("pyrosium" = 1, "oxygen" = 1)
|
||||
mob_react = FALSE
|
||||
|
||||
/datum/chemical_reaction/pyrosium_oxygen/on_reaction(datum/reagents/holder, created_volume)
|
||||
holder.chem_temp += 10*created_volume
|
||||
|
||||
@@ -85,12 +85,18 @@
|
||||
return
|
||||
var/turf/newLoc = get_step(src,direction)
|
||||
setDir(direction)
|
||||
if(!(newLoc.flags_1 & NOJAUNT_1))
|
||||
forceMove(newLoc)
|
||||
else
|
||||
to_chat(user, "<span class='warning'>Some strange aura is blocking the way!</span>")
|
||||
|
||||
movedelay = world.time + movespeed
|
||||
|
||||
if(newLoc.flags_1 & NOJAUNT_1)
|
||||
to_chat(user, "<span class='warning'>Some strange aura is blocking the way.</span>")
|
||||
return
|
||||
if (locate(/obj/effect/blessing, newLoc))
|
||||
to_chat(user, "<span class='warning'>Holy energies block your path!</span>")
|
||||
return
|
||||
|
||||
forceMove(newLoc)
|
||||
|
||||
/obj/effect/dummy/spell_jaunt/ex_act(blah)
|
||||
return
|
||||
/obj/effect/dummy/spell_jaunt/bullet_act(blah)
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
author: "Robustin"
|
||||
delete-after: True
|
||||
changes:
|
||||
- bugfix: "Fixed frost oil (cryosting) sending insulated crewmembers below absolute zero temperatures."
|
||||
- bugfix: "Fixed damaging cold temps being a death sentence to simple mobs (they wouldn't heat back up to safe temps at room temperature)."
|
||||
- refactor: "Refactored human temperature code, insulating clothing now helps you stay warm but going unprotected will help you cool off. However, you will now benefit from colder temps when you're overheating even in full EVA/hardsuit gear and you will warm up faster at room temperature in insulated gear as well (i.e. putting on a winter coat will no longer suppress your temperature if your already cold)."
|
||||
@@ -0,0 +1,4 @@
|
||||
author: "XDTM"
|
||||
delete-after: True
|
||||
changes:
|
||||
- bugfix: "Slimes no longer attack people with their same faction."
|
||||
@@ -0,0 +1,4 @@
|
||||
author: "WJohnston"
|
||||
delete-after: True
|
||||
changes:
|
||||
- imageadd: "Wirecutter greyscaling is now less ugly"
|
||||
@@ -0,0 +1,9 @@
|
||||
author: "CitadelStationBot"
|
||||
delete-after: True
|
||||
changes:
|
||||
- balance: "foam and smoke now get 4x the reagents as they should according to the comments"
|
||||
- bugfix: "fixes pyrosium and cryostylane not heating or cooling humans at all"
|
||||
- bugfix: "fixes cryostylane cooling beakers to negative kelvin, it's now limited to what the description says"
|
||||
- bugfix: "fixes cryostylane cooling people to negative body temperature"
|
||||
- code_imp: "removed redundant check in trans_to"
|
||||
- code_imp: "fixes a runtime when total_volume is 0 in copy_to"
|
||||
@@ -0,0 +1,4 @@
|
||||
author: "CitadelStationBot"
|
||||
delete-after: True
|
||||
changes:
|
||||
- tweak: "Gas reagents (o2, plasma, ...) now dump out gas based on container temperature instead of room temperature"
|
||||
@@ -0,0 +1,4 @@
|
||||
author: "Dax Dupont & Coiax"
|
||||
delete-after: True
|
||||
changes:
|
||||
- rscadd: "Praise the lord for he has granted thy chaplains, wizards, revenants and eminences with holy vision. They can now see blessed tiles."
|
||||
@@ -0,0 +1,4 @@
|
||||
author: "CitadelStationBot"
|
||||
delete-after: True
|
||||
changes:
|
||||
- bugfix: "Bananium shows up on mining scanners again"
|
||||
@@ -0,0 +1,4 @@
|
||||
author: "Xhuis"
|
||||
delete-after: True
|
||||
changes:
|
||||
- bugfix: "Emergency lights now function correctly."
|
||||
@@ -0,0 +1,4 @@
|
||||
author: "CitadelStationBot"
|
||||
delete-after: True
|
||||
changes:
|
||||
- tweak: "min player req for rev is 30 now"
|
||||
|
Before Width: | Height: | Size: 853 KiB After Width: | Height: | Size: 854 KiB |
|
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 22 KiB |
|
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 22 KiB |
|
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 25 KiB |
|
Before Width: | Height: | Size: 112 KiB After Width: | Height: | Size: 113 KiB |
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 16 KiB |
@@ -13,7 +13,7 @@
|
||||
// END_PREFERENCES
|
||||
|
||||
// BEGIN_INCLUDE
|
||||
#include "_maps\basemap.dm"
|
||||
#include "_maps\_basemap.dm"
|
||||
#include "code\_compile_options.dm"
|
||||
#include "code\world.dm"
|
||||
#include "code\__DATASTRUCTURES\globals.dm"
|
||||
@@ -820,6 +820,7 @@
|
||||
#include "code\game\objects\structures.dm"
|
||||
#include "code\game\objects\effects\alien_acid.dm"
|
||||
#include "code\game\objects\effects\anomalies.dm"
|
||||
#include "code\game\objects\effects\blessing.dm"
|
||||
#include "code\game\objects\effects\bump_teleporter.dm"
|
||||
#include "code\game\objects\effects\contraband.dm"
|
||||
#include "code\game\objects\effects\countdown.dm"
|
||||
|
||||
@@ -4,5 +4,5 @@ REM Get the documents folder from the registry.
|
||||
for /f "tokens=3*" %%p in ('REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v Personal') do (
|
||||
set DocumentsFolder=%%p
|
||||
)
|
||||
REM Copy assets to the BYOND cache
|
||||
cmd /c copy assets\* "%DocumentsFolder%\BYOND\cache" /y
|
||||
REM Copy to tmp subdirectories
|
||||
FOR /D %%G in ("%DocumentsFolder%\BYOND\cache\tmp*") DO (cmd /c copy assets\* %%G /y)
|
||||