Merge remote-tracking branch 'citadel/master' into combat_rework
This commit is contained in:
@@ -17,6 +17,7 @@ jobs:
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
python -m pip install pyyaml
|
||||
sudo apt-get install dos2unix
|
||||
- name: "Checkout"
|
||||
uses: actions/checkout@v1
|
||||
with:
|
||||
@@ -24,6 +25,9 @@ jobs:
|
||||
- name: "Compile"
|
||||
run: |
|
||||
python tools/ss13_genchangelog.py html/changelog.html html/changelogs
|
||||
- name: "Convert Lineendings"
|
||||
run: |
|
||||
unix2dos html/changelogs/.all_changelog.yml
|
||||
- name: Commit
|
||||
run: |
|
||||
git config --local user.email "action@github.com"
|
||||
|
||||
@@ -1,26 +1,28 @@
|
||||
## Citadel Station 13
|
||||
Based and maintained from /tg/station.
|
||||
|
||||
[](https://forthebadge.com) [](https://forthebadge.com) [](http://forthebadge.com)
|
||||
[](https://travis-ci.org/Citadel-Station-13/Citadel-Station-13)
|
||||
[](http://isitmaintained.com/project/Citadel-Station-13/Citadel-Station-13 "Percentage of issues still open")
|
||||
[](http://isitmaintained.com/project/Citadel-Station-13/Citadel-Station-13 "Average time to resolve an issue")
|
||||
|
||||
[](https://www.reddit.com/r/SS13/comments/5oplxp/what_is_the_main_problem_with_byond_as_an_engine/dclbu1a)
|
||||
|
||||
[](https://travis-ci.org/Citadel-Station-13/Citadel-Station-13) [](http://www.krihelinator.xyz)
|
||||
|
||||
[](http://isitmaintained.com/project/Citadel-Station-13/Citadel-Station-13 "Percentage of issues still open") [](http://isitmaintained.com/project/Citadel-Station-13/Citadel-Station-13 "Average time to resolve an issue")
|
||||
[](https://forthebadge.com) [](https://forthebadge.com) [](http://forthebadge.com) [](https://www.reddit.com/r/SS13/comments/5oplxp/what_is_the_main_problem_with_byond_as_an_engine/dclbu1a)
|
||||
|
||||
**Upstream Information**
|
||||
**Website:** https://tgstation13.org
|
||||
**Code:** https://github.com/tgstation/tgstation
|
||||
**Wiki** https://tgstation13.org/wiki/Main_Page
|
||||
**IRC:** irc://irc.rizon.net/coderbus or if you dont have an IRC client, you can click [here](https://kiwiirc.com/client/irc.rizon.net:6667/?&theme=cli#coderbus).
|
||||
|
||||
* **Website:** <https://www.tgstation13.org>
|
||||
* **Code:** <https://github.com/tgstation/tgstation>
|
||||
* **Wiki:** <https://tgstation13.org/wiki/Main_Page>
|
||||
* **Codedocs:** <https://codedocs.tgstation13.org>
|
||||
* **/tg/station Discord:** <https://tgstation13.org/phpBB/viewforum.php?f=60>
|
||||
* **Coderbus Discord:** <https://discord.gg/Vh8TJp9>
|
||||
* ~~**IRC:** <irc://irc.rizon.net/coderbus>~~ (dead)
|
||||
|
||||
**Citadel Station Information**
|
||||
**Website:** http://citadel-station.net
|
||||
**Forums:** http://citadel-station.net/forum
|
||||
**Ban Appeals:** http://citadel-station.net/forum/forumdisplay.php?fid=8
|
||||
**Code:** https://github.com/Citadel-Station-13/Citadel-Station-13
|
||||
**Discord:** [Here](https://discord.gg/E6SQuhz)
|
||||
* **Website:** <http://citadel-station.net>
|
||||
* **Code:** <https://github.com/Citadel-Station-13/Citadel-Station-13>
|
||||
* **Wiki:** <https://citadel-station.net/wiki/index.php?title=Main_Page>
|
||||
* **Forums:** <http://citadel-station.net/forum>
|
||||
* **Ban Appeals:** <http://citadel-station.net/forum/forumdisplay.php?fid=8>
|
||||
* **Discord:** <https://discord.gg/E6SQuhz>
|
||||
|
||||
## DOWNLOADING
|
||||
|
||||
@@ -162,13 +164,12 @@ All code before [commit 333c566b88108de218d882840e61928a9b759d8f on 2014/31/12 a
|
||||
|
||||
See LICENSE and GPLv3.txt for more details.
|
||||
|
||||
The TGS3 API is licensed as a subproject under the MIT license.
|
||||
|
||||
See the footers of code/\_\_DEFINES/server\_tools.dm, code/modules/server\_tools/st\_commands.dm, and code/modules/server\_tools/st\_inteface.dm for the MIT license.
|
||||
|
||||
tgui clientside is licensed as a subproject under the MIT license.
|
||||
Font Awesome font files, used by tgui, are licensed under the SIL Open Font License v1.1
|
||||
tgui assets are licensed under a [Creative Commons Attribution-ShareAlike 4.0 International License](http://creativecommons.org/licenses/by-sa/4.0/).
|
||||
The TGS3 API is licensed as a subproject under the MIT license.
|
||||
|
||||
See tgui/LICENSE.md for the MIT license.
|
||||
See tgui/assets/fonts/SIL-OFL-1.1-LICENSE.md for the SIL Open Font License.
|
||||
See the footers of code/\_\_DEFINES/server\_tools.dm, code/modules/server\_tools/st\_commands.dm, and code/modules/server\_tools/st\_inteface.dm for the MIT license.
|
||||
|
||||
All assets including icons and sound are under a [Creative Commons 3.0 BY-SA license](http://creativecommons.org/licenses/by-sa/3.0/) unless otherwise indicated.
|
||||
All assets including icons and sound are under a [Creative Commons 3.0 BY-SA license](https://creativecommons.org/licenses/by-sa/3.0/) unless otherwise indicated.
|
||||
|
||||
@@ -5,10 +5,6 @@
|
||||
"ab" = (
|
||||
/turf/open/floor/plating/snowed/smoothed/icemoon,
|
||||
/area/icemoon/surface/outdoors)
|
||||
"ac" = (
|
||||
/obj/effect/mob_spawn/human/engineer/rig,
|
||||
/turf/open/floor/plating/snowed/smoothed/icemoon,
|
||||
/area/icemoon/surface/outdoors)
|
||||
"ad" = (
|
||||
/obj/machinery/power/floodlight,
|
||||
/obj/structure/cable{
|
||||
@@ -176,10 +172,9 @@
|
||||
/turf/open/floor/plating/snowed/smoothed/icemoon,
|
||||
/area/icemoon/surface/outdoors)
|
||||
"aI" = (
|
||||
/obj/item/pda/engineering{
|
||||
note = "To-do: Check on singularity status. Get a pint at eat. Nag the research manager for RCDs."
|
||||
},
|
||||
/turf/open/floor/plating/asteroid/snow/icemoon,
|
||||
/obj/effect/turf_decal/stripes/line,
|
||||
/obj/item/clothing/suit/space/hardsuit/engine,
|
||||
/turf/open/floor/plating/snowed/smoothed/icemoon,
|
||||
/area/icemoon/surface/outdoors)
|
||||
"aJ" = (
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
@@ -270,12 +265,6 @@
|
||||
/obj/machinery/atmospherics/pipe/manifold/cyan/visible{
|
||||
dir = 1
|
||||
},
|
||||
/obj/effect/turf_decal/stripes/corner{
|
||||
dir = 4
|
||||
},
|
||||
/obj/effect/turf_decal/stripes/corner{
|
||||
dir = 1
|
||||
},
|
||||
/obj/machinery/light/small{
|
||||
dir = 1
|
||||
},
|
||||
@@ -304,9 +293,6 @@
|
||||
/obj/machinery/atmospherics/pipe/manifold/green/visible{
|
||||
dir = 1
|
||||
},
|
||||
/obj/effect/turf_decal/stripes/corner{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plating/snowed/smoothed/icemoon,
|
||||
/area/icemoon/surface/outdoors)
|
||||
"ba" = (
|
||||
@@ -346,20 +332,10 @@
|
||||
/obj/effect/decal/cleanable/blood/splatter,
|
||||
/turf/open/floor/plating/asteroid/snow/icemoon,
|
||||
/area/icemoon/surface/outdoors)
|
||||
"be" = (
|
||||
/obj/item/card/id{
|
||||
access = list(200,204,11,12,10);
|
||||
assignment = "Senior Station Engineer";
|
||||
desc = "A card used to provide ID and determine access across the station. There's blood dripping from the corner. Ew.";
|
||||
name = "George 'Plastic' Miller's ID Card (Senior Station Engineer)";
|
||||
registered_name = "George 'Plastic' Miller"
|
||||
},
|
||||
/turf/open/floor/plating/asteroid/snow/icemoon,
|
||||
/area/icemoon/surface/outdoors)
|
||||
"bf" = (
|
||||
/obj/effect/gibspawner/generic,
|
||||
/obj/effect/decal/cleanable/blood,
|
||||
/obj/effect/decal/cleanable/blood/gibs/core,
|
||||
/obj/item/clothing/suit/space/hardsuit/engine,
|
||||
/turf/open/floor/plating/asteroid/snow/icemoon,
|
||||
/area/icemoon/surface/outdoors)
|
||||
"bg" = (
|
||||
@@ -544,10 +520,6 @@
|
||||
/obj/item/shard/plasma,
|
||||
/turf/open/floor/plating/snowed/smoothed/icemoon,
|
||||
/area/icemoon/surface/outdoors)
|
||||
"bz" = (
|
||||
/obj/item/clothing/suit/space/hardsuit/engine,
|
||||
/turf/open/floor/plating/asteroid/snow/icemoon,
|
||||
/area/icemoon/surface/outdoors)
|
||||
"bA" = (
|
||||
/obj/item/flashlight/flare,
|
||||
/turf/open/floor/plating/asteroid/snow/icemoon,
|
||||
@@ -964,10 +936,6 @@
|
||||
/turf/open/floor/plating/snowed/smoothed/icemoon,
|
||||
/area/icemoon/surface/outdoors)
|
||||
"cO" = (
|
||||
/obj/effect/turf_decal/stripes/corner,
|
||||
/obj/effect/turf_decal/stripes/corner{
|
||||
dir = 8
|
||||
},
|
||||
/obj/machinery/light/small,
|
||||
/turf/open/floor/plating/snowed/smoothed/icemoon,
|
||||
/area/icemoon/surface/outdoors)
|
||||
@@ -982,9 +950,6 @@
|
||||
/obj/machinery/atmospherics/pipe/simple/dark/visible{
|
||||
dir = 9
|
||||
},
|
||||
/obj/effect/turf_decal/stripes/corner{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/plating/snowed/smoothed/icemoon,
|
||||
/area/icemoon/surface/outdoors)
|
||||
"cR" = (
|
||||
@@ -1013,13 +978,6 @@
|
||||
},
|
||||
/turf/open/floor/plating/icemoon,
|
||||
/area/icemoon/surface/outdoors)
|
||||
"cU" = (
|
||||
/obj/effect/mob_spawn/human/engineer/rig,
|
||||
/obj/structure/cable{
|
||||
icon_state = "4-8"
|
||||
},
|
||||
/turf/open/floor/plating/icemoon,
|
||||
/area/icemoon/surface/outdoors)
|
||||
"cV" = (
|
||||
/obj/effect/turf_decal/trimline/neutral/filled/line,
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
|
||||
@@ -1032,12 +990,7 @@
|
||||
},
|
||||
/turf/open/floor/plating/snowed/smoothed/icemoon,
|
||||
/area/icemoon/surface/outdoors)
|
||||
"cX" = (
|
||||
/obj/machinery/rnd/production/circuit_imprinter,
|
||||
/turf/open/floor/plating/snowed/smoothed/icemoon,
|
||||
/area/icemoon/surface/outdoors)
|
||||
"cY" = (
|
||||
/obj/machinery/rnd/production/protolathe/department/engineering,
|
||||
/obj/machinery/light/small/broken,
|
||||
/turf/open/floor/plating/snowed/smoothed/icemoon,
|
||||
/area/icemoon/surface/outdoors)
|
||||
@@ -1249,6 +1202,10 @@
|
||||
},
|
||||
/turf/open/floor/plating/icemoon,
|
||||
/area/icemoon/surface/outdoors)
|
||||
"xh" = (
|
||||
/mob/living/simple_animal/hostile/bear/snow,
|
||||
/turf/open/floor/plating/snowed/smoothed/icemoon,
|
||||
/area/icemoon/surface/outdoors)
|
||||
"CR" = (
|
||||
/obj/structure/cable{
|
||||
icon_state = "0-8"
|
||||
@@ -1310,17 +1267,17 @@ aa
|
||||
ak
|
||||
an
|
||||
ak
|
||||
ae
|
||||
ak
|
||||
an
|
||||
ab
|
||||
aa
|
||||
by
|
||||
bQ
|
||||
bQ
|
||||
aO
|
||||
ae
|
||||
ae
|
||||
ae
|
||||
ae
|
||||
ak
|
||||
ak
|
||||
ae
|
||||
aO
|
||||
aa
|
||||
@@ -1437,9 +1394,9 @@ aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aI
|
||||
aa
|
||||
be
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
@@ -1452,7 +1409,7 @@ ak
|
||||
aa
|
||||
"}
|
||||
(9,1,1) = {"
|
||||
ac
|
||||
ab
|
||||
ab
|
||||
al
|
||||
ap
|
||||
@@ -1461,7 +1418,7 @@ aa
|
||||
aa
|
||||
aa
|
||||
bf
|
||||
bz
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
af
|
||||
@@ -1507,7 +1464,7 @@ bA
|
||||
aa
|
||||
aa
|
||||
af
|
||||
cA
|
||||
aI
|
||||
DM
|
||||
dc
|
||||
al
|
||||
@@ -1529,7 +1486,7 @@ aa
|
||||
ab
|
||||
ab
|
||||
cF
|
||||
cU
|
||||
gA
|
||||
al
|
||||
al
|
||||
aO
|
||||
@@ -1595,28 +1552,28 @@ al
|
||||
al
|
||||
al
|
||||
ds
|
||||
ae
|
||||
aO
|
||||
aa
|
||||
"}
|
||||
(16,1,1) = {"
|
||||
ae
|
||||
ae
|
||||
ae
|
||||
ae
|
||||
aO
|
||||
aO
|
||||
ae
|
||||
ae
|
||||
ae
|
||||
aO
|
||||
ae
|
||||
aO
|
||||
bi
|
||||
ae
|
||||
aO
|
||||
ae
|
||||
ae
|
||||
aO
|
||||
ae
|
||||
aO
|
||||
ae
|
||||
ae
|
||||
ae
|
||||
ae
|
||||
ae
|
||||
aO
|
||||
aa
|
||||
"}
|
||||
(17,1,1) = {"
|
||||
@@ -1630,7 +1587,7 @@ ae
|
||||
aL
|
||||
bb
|
||||
bD
|
||||
ae
|
||||
aO
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
@@ -1665,9 +1622,9 @@ aa
|
||||
af
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
ak
|
||||
an
|
||||
aB
|
||||
dj
|
||||
ae
|
||||
aP
|
||||
bk
|
||||
@@ -1675,7 +1632,7 @@ aP
|
||||
ae
|
||||
aB
|
||||
aB
|
||||
aB
|
||||
dj
|
||||
aB
|
||||
aB
|
||||
aB
|
||||
@@ -1698,7 +1655,7 @@ cf
|
||||
cr
|
||||
cB
|
||||
cI
|
||||
cX
|
||||
ab
|
||||
aB
|
||||
aa
|
||||
aa
|
||||
@@ -1720,7 +1677,7 @@ aB
|
||||
cE
|
||||
ab
|
||||
cY
|
||||
aB
|
||||
dj
|
||||
aa
|
||||
aa
|
||||
"}
|
||||
@@ -1731,7 +1688,7 @@ af
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
xh
|
||||
ab
|
||||
bj
|
||||
ab
|
||||
@@ -1741,7 +1698,7 @@ aP
|
||||
cH
|
||||
ab
|
||||
de
|
||||
aB
|
||||
dj
|
||||
aa
|
||||
aa
|
||||
"}
|
||||
@@ -1857,7 +1814,7 @@ aa
|
||||
aa
|
||||
an
|
||||
an
|
||||
aB
|
||||
dj
|
||||
ae
|
||||
bj
|
||||
bH
|
||||
@@ -1903,7 +1860,7 @@ aa
|
||||
ae
|
||||
bq
|
||||
bH
|
||||
ae
|
||||
aO
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
@@ -1926,9 +1883,9 @@ bq
|
||||
bJ
|
||||
ae
|
||||
ae
|
||||
aO
|
||||
ae
|
||||
ae
|
||||
ae
|
||||
aO
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
@@ -1949,10 +1906,10 @@ bZ
|
||||
ck
|
||||
cs
|
||||
cL
|
||||
aO
|
||||
ae
|
||||
ae
|
||||
ae
|
||||
ae
|
||||
aO
|
||||
aa
|
||||
"}
|
||||
(33,1,1) = {"
|
||||
@@ -2004,7 +1961,7 @@ aa
|
||||
ae
|
||||
ae
|
||||
ae
|
||||
ae
|
||||
aO
|
||||
aW
|
||||
bu
|
||||
bN
|
||||
@@ -2013,9 +1970,9 @@ cn
|
||||
cv
|
||||
cO
|
||||
ae
|
||||
ae
|
||||
ae
|
||||
ae
|
||||
aO
|
||||
aO
|
||||
aO
|
||||
aa
|
||||
"}
|
||||
(36,1,1) = {"
|
||||
@@ -2065,8 +2022,8 @@ aa
|
||||
aa
|
||||
aa
|
||||
ae
|
||||
ae
|
||||
ae
|
||||
aO
|
||||
aO
|
||||
ae
|
||||
aZ
|
||||
bu
|
||||
@@ -2076,9 +2033,9 @@ cd
|
||||
cy
|
||||
cQ
|
||||
ae
|
||||
ae
|
||||
ae
|
||||
ae
|
||||
aO
|
||||
aO
|
||||
aO
|
||||
aa
|
||||
"}
|
||||
(39,1,1) = {"
|
||||
@@ -2110,14 +2067,14 @@ aa
|
||||
aa
|
||||
aa
|
||||
ae
|
||||
aO
|
||||
aO
|
||||
ae
|
||||
ae
|
||||
ae
|
||||
aO
|
||||
ae
|
||||
ae
|
||||
ae
|
||||
ae
|
||||
ae
|
||||
aO
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
|
||||
"a" = (
|
||||
/turf/open/floor/plating/asteroid/snow/icemoon,
|
||||
/turf/closed/indestructible/riveted/uranium,
|
||||
/area/icemoon/surface/outdoors)
|
||||
"b" = (
|
||||
/turf/closed/mineral/random/snow/no_caves,
|
||||
@@ -12,7 +12,17 @@
|
||||
/obj/item/paper/crumpled{
|
||||
info = "When one falls into this hot spring, they shall forever be turned into..."
|
||||
},
|
||||
/turf/open/floor/plating/asteroid/snow/icemoon,
|
||||
/turf/open/floor/plating/beach/sand,
|
||||
/area/icemoon/surface/outdoors)
|
||||
"I" = (
|
||||
/turf/closed/indestructible/fakeglass,
|
||||
/area/icemoon/surface/outdoors)
|
||||
"L" = (
|
||||
/obj/structure/fluff/beach_umbrella,
|
||||
/turf/open/floor/plating/beach/sand,
|
||||
/area/icemoon/surface/outdoors)
|
||||
"U" = (
|
||||
/turf/open/floor/plating/beach/sand,
|
||||
/area/icemoon/surface/outdoors)
|
||||
|
||||
(1,1,1) = {"
|
||||
@@ -34,7 +44,7 @@ b
|
||||
b
|
||||
a
|
||||
a
|
||||
a
|
||||
I
|
||||
a
|
||||
a
|
||||
b
|
||||
@@ -45,11 +55,11 @@ b
|
||||
b
|
||||
b
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
U
|
||||
U
|
||||
U
|
||||
U
|
||||
U
|
||||
a
|
||||
b
|
||||
b
|
||||
@@ -57,65 +67,65 @@ b
|
||||
(4,1,1) = {"
|
||||
b
|
||||
a
|
||||
a
|
||||
a
|
||||
U
|
||||
L
|
||||
c
|
||||
c
|
||||
c
|
||||
a
|
||||
a
|
||||
U
|
||||
U
|
||||
a
|
||||
b
|
||||
"}
|
||||
(5,1,1) = {"
|
||||
b
|
||||
a
|
||||
a
|
||||
U
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
a
|
||||
U
|
||||
a
|
||||
b
|
||||
"}
|
||||
(6,1,1) = {"
|
||||
b
|
||||
a
|
||||
a
|
||||
I
|
||||
U
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
a
|
||||
a
|
||||
U
|
||||
I
|
||||
b
|
||||
"}
|
||||
(7,1,1) = {"
|
||||
b
|
||||
a
|
||||
a
|
||||
U
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
a
|
||||
U
|
||||
a
|
||||
b
|
||||
"}
|
||||
(8,1,1) = {"
|
||||
b
|
||||
a
|
||||
a
|
||||
a
|
||||
U
|
||||
L
|
||||
c
|
||||
c
|
||||
c
|
||||
a
|
||||
a
|
||||
U
|
||||
U
|
||||
a
|
||||
b
|
||||
"}
|
||||
@@ -123,11 +133,11 @@ b
|
||||
b
|
||||
b
|
||||
a
|
||||
a
|
||||
a
|
||||
U
|
||||
U
|
||||
d
|
||||
a
|
||||
a
|
||||
U
|
||||
U
|
||||
a
|
||||
b
|
||||
b
|
||||
@@ -138,7 +148,7 @@ b
|
||||
b
|
||||
a
|
||||
a
|
||||
a
|
||||
I
|
||||
a
|
||||
a
|
||||
b
|
||||
|
||||
@@ -20,12 +20,6 @@
|
||||
},
|
||||
/turf/open/floor/mineral/diamond,
|
||||
/area/icemoon/surface/outdoors)
|
||||
"f" = (
|
||||
/obj/structure/sign/poster/contraband/lusty_xenomorph,
|
||||
/obj/structure/falsewall/abductor,
|
||||
/obj/structure/fans/tiny,
|
||||
/turf/open/floor/mineral/diamond,
|
||||
/area/icemoon/surface/outdoors)
|
||||
|
||||
(1,1,1) = {"
|
||||
a
|
||||
@@ -101,7 +95,7 @@ d
|
||||
e
|
||||
d
|
||||
c
|
||||
f
|
||||
b
|
||||
a
|
||||
a
|
||||
"}
|
||||
|
||||
@@ -198,6 +198,9 @@
|
||||
/obj/structure/toilet{
|
||||
dir = 1
|
||||
},
|
||||
/mob/living/simple_animal/hostile/skeleton/eskimo{
|
||||
name = "Village Hunter"
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/ruin/powered)
|
||||
"sY" = (
|
||||
@@ -216,6 +219,9 @@
|
||||
/area/icemoon/underground/explored)
|
||||
"tt" = (
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/mob/living/simple_animal/hostile/skeleton/eskimo{
|
||||
name = "Village Hunter"
|
||||
},
|
||||
/turf/open/floor/plasteel/freezer,
|
||||
/area/ruin/powered)
|
||||
"tF" = (
|
||||
@@ -415,6 +421,12 @@
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/turf/open/floor/carpet,
|
||||
/area/ruin/powered)
|
||||
"IT" = (
|
||||
/mob/living/simple_animal/hostile/skeleton/eskimo{
|
||||
name = "Village Hunter"
|
||||
},
|
||||
/turf/open/floor/wood,
|
||||
/area/ruin/powered)
|
||||
"Kd" = (
|
||||
/obj/structure/flora/grass/green,
|
||||
/turf/open/floor/plating/asteroid/snow/icemoon,
|
||||
@@ -816,7 +828,7 @@ tF
|
||||
ac
|
||||
Vn
|
||||
AG
|
||||
aM
|
||||
IT
|
||||
yb
|
||||
Vn
|
||||
wQ
|
||||
|
||||
@@ -476,7 +476,7 @@
|
||||
},
|
||||
/obj/item/storage/bag/plants/portaseeder,
|
||||
/obj/item/seeds/cotton,
|
||||
/obj/item/seeds/cotton,
|
||||
/obj/item/seeds/cotton/durathread,
|
||||
/turf/open/indestructible/boss,
|
||||
/area/ruin/unpowered/ash_walkers)
|
||||
"bk" = (
|
||||
|
||||
@@ -61,8 +61,7 @@
|
||||
},
|
||||
/obj/structure/sign/barsign{
|
||||
pixel_y = -32;
|
||||
req_access = null;
|
||||
req_access_txt = "0"
|
||||
req_access = null
|
||||
},
|
||||
/turf/open/floor/wood,
|
||||
/area/ruin/unpowered/syndicate_lava_base/bar)
|
||||
@@ -212,7 +211,6 @@
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/machinery/computer/arcade/orion_trail{
|
||||
icon_state = "arcade";
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plasteel/dark,
|
||||
@@ -270,7 +268,6 @@
|
||||
dir = 4
|
||||
},
|
||||
/obj/machinery/firealarm{
|
||||
dir = 2;
|
||||
pixel_y = 24
|
||||
},
|
||||
/obj/machinery/light/small{
|
||||
@@ -1501,7 +1498,6 @@
|
||||
/area/ruin/unpowered/syndicate_lava_base/virology)
|
||||
"fk" = (
|
||||
/obj/machinery/power/apc/syndicate{
|
||||
dir = 2;
|
||||
name = "Experimentation Lab APC";
|
||||
pixel_y = -24
|
||||
},
|
||||
@@ -1565,15 +1561,10 @@
|
||||
/obj/machinery/door/firedoor,
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/machinery/door/window/southleft{
|
||||
base_state = "left";
|
||||
dir = 2;
|
||||
icon_state = "left";
|
||||
name = "Chemistry"
|
||||
},
|
||||
/obj/machinery/door/window/southleft{
|
||||
base_state = "left";
|
||||
dir = 1;
|
||||
icon_state = "left";
|
||||
name = "Chemistry";
|
||||
req_access_txt = "150"
|
||||
},
|
||||
@@ -1968,9 +1959,7 @@
|
||||
/area/ruin/unpowered/syndicate_lava_base/virology)
|
||||
"gs" = (
|
||||
/obj/machinery/atmospherics/pipe/manifold/supply/hidden,
|
||||
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3{
|
||||
dir = 2
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3,
|
||||
/obj/machinery/light/small,
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/turf/open/floor/plasteel/white,
|
||||
@@ -2153,9 +2142,7 @@
|
||||
icon_state = "4-8"
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/manifold/supply/hidden,
|
||||
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3{
|
||||
dir = 2
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3,
|
||||
/obj/structure/cable/yellow{
|
||||
icon_state = "1-8"
|
||||
},
|
||||
@@ -2864,7 +2851,6 @@
|
||||
/area/ruin/unpowered/syndicate_lava_base/main)
|
||||
"ib" = (
|
||||
/obj/effect/mob_spawn/human/lavaland_syndicate{
|
||||
icon_state = "sleeper_s";
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plasteel/grimy,
|
||||
@@ -2904,8 +2890,7 @@
|
||||
/area/ruin/unpowered/syndicate_lava_base/dormitories)
|
||||
"ie" = (
|
||||
/obj/effect/mob_spawn/human/lavaland_syndicate/comms{
|
||||
dir = 8;
|
||||
icon_state = "sleeper_s"
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/plasteel/grimy,
|
||||
/area/ruin/unpowered/syndicate_lava_base/dormitories)
|
||||
@@ -3029,10 +3014,10 @@
|
||||
dir = 1
|
||||
},
|
||||
/obj/machinery/turretid{
|
||||
ailock = 1;
|
||||
control_area = "/area/ruin/unpowered/syndicate_lava_base/main";
|
||||
dir = 1;
|
||||
icon_state = "control_kill";
|
||||
ailock = 1;
|
||||
lethal = 1;
|
||||
name = "Base turret controls";
|
||||
pixel_y = 30;
|
||||
@@ -3149,7 +3134,6 @@
|
||||
dir = 1
|
||||
},
|
||||
/obj/machinery/firealarm{
|
||||
dir = 2;
|
||||
pixel_y = 24
|
||||
},
|
||||
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3,
|
||||
@@ -3321,9 +3305,7 @@
|
||||
"iT" = (
|
||||
/obj/machinery/light/small,
|
||||
/obj/machinery/atmospherics/pipe/manifold/supply/hidden,
|
||||
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3{
|
||||
dir = 2
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3,
|
||||
/obj/structure/cable/yellow{
|
||||
icon_state = "4-8"
|
||||
},
|
||||
@@ -3356,7 +3338,6 @@
|
||||
dir = 4
|
||||
},
|
||||
/obj/machinery/power/apc/syndicate{
|
||||
dir = 2;
|
||||
name = "Dormitories APC";
|
||||
pixel_y = -24
|
||||
},
|
||||
@@ -3565,7 +3546,6 @@
|
||||
/area/ruin/unpowered/syndicate_lava_base/main)
|
||||
"jn" = (
|
||||
/obj/effect/mob_spawn/human/lavaland_syndicate{
|
||||
icon_state = "sleeper_s";
|
||||
dir = 4
|
||||
},
|
||||
/obj/machinery/airalarm/syndicate{
|
||||
@@ -3591,8 +3571,7 @@
|
||||
/area/ruin/unpowered/syndicate_lava_base/main)
|
||||
"jq" = (
|
||||
/obj/effect/mob_spawn/human/lavaland_syndicate{
|
||||
dir = 8;
|
||||
icon_state = "sleeper_s"
|
||||
dir = 8
|
||||
},
|
||||
/obj/machinery/airalarm/syndicate{
|
||||
pixel_y = 24
|
||||
@@ -3986,9 +3965,7 @@
|
||||
/area/ruin/unpowered/syndicate_lava_base/main)
|
||||
"kd" = (
|
||||
/obj/machinery/atmospherics/pipe/manifold/supply/hidden,
|
||||
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3{
|
||||
dir = 2
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3,
|
||||
/obj/structure/cable/yellow{
|
||||
icon_state = "1-4"
|
||||
},
|
||||
@@ -4059,9 +4036,7 @@
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
|
||||
dir = 9
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3{
|
||||
dir = 2
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/ruin/unpowered/syndicate_lava_base/main)
|
||||
"kj" = (
|
||||
@@ -4247,8 +4222,10 @@
|
||||
icon_state = "4-8"
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/visible,
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/visible/layer3,
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/machinery/atmospherics/pipe/manifold/scrubbers/visible/layer3{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/ruin/unpowered/syndicate_lava_base/engineering)
|
||||
"kA" = (
|
||||
@@ -4266,11 +4243,9 @@
|
||||
/obj/structure/cable/yellow{
|
||||
icon_state = "0-8"
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer3{
|
||||
dir = 9
|
||||
},
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/on,
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer3,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/ruin/unpowered/syndicate_lava_base/engineering)
|
||||
"kB" = (
|
||||
@@ -4285,6 +4260,7 @@
|
||||
/obj/machinery/computer/atmos_control/tank{
|
||||
dir = 8;
|
||||
frequency = 1442;
|
||||
input_tag = "syndie_lavaland_n2_in";
|
||||
name = "Nitrogen Supply Control";
|
||||
output_tag = "syndie_lavaland_n2_out";
|
||||
sensors = list("syndie_lavaland_n2_sensor" = "Tank")
|
||||
@@ -4477,12 +4453,19 @@
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/visible{
|
||||
dir = 5
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer3,
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/machinery/atmospherics/components/trinary/filter/atmos/flipped/n2{
|
||||
dir = 1;
|
||||
piping_layer = 3
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/ruin/unpowered/syndicate_lava_base/engineering)
|
||||
"kY" = (
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/supply/visible,
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer3,
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer3{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/ruin/unpowered/syndicate_lava_base/engineering)
|
||||
"kZ" = (
|
||||
@@ -4490,6 +4473,9 @@
|
||||
dir = 4
|
||||
},
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer3{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/ruin/unpowered/syndicate_lava_base/engineering)
|
||||
"la" = (
|
||||
@@ -4503,6 +4489,9 @@
|
||||
/obj/effect/turf_decal/tile/red{
|
||||
dir = 4
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer3{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/ruin/unpowered/syndicate_lava_base/engineering)
|
||||
"lb" = (
|
||||
@@ -4511,6 +4500,9 @@
|
||||
/obj/machinery/atmospherics/pipe/simple/supplymain/visible{
|
||||
dir = 4
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{
|
||||
dir = 10
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/ruin/unpowered/syndicate_lava_base/engineering)
|
||||
"lc" = (
|
||||
@@ -4523,6 +4515,11 @@
|
||||
/turf/open/floor/plating/airless,
|
||||
/area/ruin/unpowered/syndicate_lava_base/engineering)
|
||||
"ld" = (
|
||||
/obj/machinery/atmospherics/components/unary/outlet_injector/layer3{
|
||||
dir = 4;
|
||||
id = "syndie_lavaland_n2_in";
|
||||
piping_layer = 3
|
||||
},
|
||||
/turf/open/floor/plating/airless,
|
||||
/area/ruin/unpowered/syndicate_lava_base/engineering)
|
||||
"le" = (
|
||||
@@ -4676,15 +4673,24 @@
|
||||
/turf/open/floor/plating,
|
||||
/area/ruin/unpowered/syndicate_lava_base/engineering)
|
||||
"lr" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer3,
|
||||
/turf/open/floor/plasteel,
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{
|
||||
dir = 10
|
||||
},
|
||||
/turf/closed/wall/mineral/plastitanium/nodiagonal,
|
||||
/area/ruin/unpowered/syndicate_lava_base/engineering)
|
||||
"ls" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/visible,
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer3,
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer3{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/ruin/unpowered/syndicate_lava_base/engineering)
|
||||
"lt" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/supplymain/visible,
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer3{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/ruin/unpowered/syndicate_lava_base/engineering)
|
||||
"lu" = (
|
||||
@@ -4694,6 +4700,9 @@
|
||||
/obj/machinery/portable_atmospherics/scrubber,
|
||||
/obj/effect/turf_decal/bot,
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer3{
|
||||
dir = 10
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/ruin/unpowered/syndicate_lava_base/engineering)
|
||||
"lv" = (
|
||||
@@ -4848,29 +4857,33 @@
|
||||
/turf/open/floor/plasteel,
|
||||
/area/ruin/unpowered/syndicate_lava_base/engineering)
|
||||
"lM" = (
|
||||
/obj/structure/cable{
|
||||
icon_state = "1-2"
|
||||
/obj/machinery/atmospherics/components/unary/outlet_injector/layer3{
|
||||
id = "syndie_lavaland_tox_in";
|
||||
piping_layer = 3
|
||||
},
|
||||
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/turf/open/floor/plating/airless,
|
||||
/area/ruin/unpowered/syndicate_lava_base/engineering)
|
||||
"lN" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer3{
|
||||
dir = 9
|
||||
/obj/machinery/atmospherics/components/trinary/filter/atmos/flipped/o2{
|
||||
dir = 1;
|
||||
piping_layer = 3
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/ruin/unpowered/syndicate_lava_base/engineering)
|
||||
"lO" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/visible,
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer3,
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer3{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/ruin/unpowered/syndicate_lava_base/engineering)
|
||||
"lP" = (
|
||||
/obj/machinery/computer/atmos_control/tank{
|
||||
dir = 8;
|
||||
frequency = 1442;
|
||||
input_tag = "syndie_lavaland_o2_in";
|
||||
name = "Oxygen Supply Control";
|
||||
output_tag = "syndie_lavaland_o2_out";
|
||||
sensors = list("syndie_lavaland_o2_sensor" = "Tank")
|
||||
@@ -4879,12 +4892,15 @@
|
||||
/obj/effect/turf_decal/tile/blue{
|
||||
dir = 4
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer3{
|
||||
dir = 5
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/ruin/unpowered/syndicate_lava_base/engineering)
|
||||
"lQ" = (
|
||||
/obj/machinery/air_sensor{
|
||||
frequency = 1442;
|
||||
id_tag = "Syndicate_Construction_o2_sensor"
|
||||
id_tag = "syndie_lavaland_o2_sensor"
|
||||
},
|
||||
/turf/open/floor/plating/airless,
|
||||
/area/ruin/unpowered/syndicate_lava_base/engineering)
|
||||
@@ -5083,6 +5099,9 @@
|
||||
dir = 6
|
||||
},
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer3{
|
||||
dir = 5
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/ruin/unpowered/syndicate_lava_base/engineering)
|
||||
"mj" = (
|
||||
@@ -5093,11 +5112,15 @@
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/visible,
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer3{
|
||||
dir = 9
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/ruin/unpowered/syndicate_lava_base/engineering)
|
||||
"mk" = (
|
||||
/obj/machinery/atmospherics/pipe/manifold/supplymain/visible,
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer3,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/ruin/unpowered/syndicate_lava_base/engineering)
|
||||
"ml" = (
|
||||
@@ -5170,7 +5193,6 @@
|
||||
/obj/machinery/light/small,
|
||||
/obj/structure/cable/yellow,
|
||||
/obj/machinery/power/apc/syndicate{
|
||||
dir = 2;
|
||||
name = "Bar APC";
|
||||
pixel_y = -24
|
||||
},
|
||||
@@ -5297,6 +5319,9 @@
|
||||
/obj/structure/reagent_dispensers/watertank,
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer3{
|
||||
dir = 5
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/ruin/unpowered/syndicate_lava_base/engineering)
|
||||
"mK" = (
|
||||
@@ -5304,12 +5329,16 @@
|
||||
/obj/machinery/computer/atmos_control/tank{
|
||||
dir = 1;
|
||||
frequency = 1442;
|
||||
input_tag = "syndie_lavaland_tox_in";
|
||||
name = "Toxins Supply Control";
|
||||
output_tag = "syndie_lavaland_tox_out";
|
||||
sensors = list("syndie_lavaland_tox_sensor" = "Tank")
|
||||
},
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer3{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/ruin/unpowered/syndicate_lava_base/engineering)
|
||||
"mM" = (
|
||||
@@ -5700,9 +5729,7 @@
|
||||
/area/ruin/unpowered/syndicate_lava_base/arrivals)
|
||||
"nw" = (
|
||||
/obj/machinery/atmospherics/pipe/manifold/supply/hidden,
|
||||
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3{
|
||||
dir = 2
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3,
|
||||
/obj/structure/cable/yellow{
|
||||
icon_state = "1-4"
|
||||
},
|
||||
@@ -5998,7 +6025,6 @@
|
||||
dir = 4
|
||||
},
|
||||
/obj/machinery/firealarm{
|
||||
dir = 2;
|
||||
pixel_y = 24
|
||||
},
|
||||
/obj/structure/cable/yellow{
|
||||
@@ -6212,7 +6238,6 @@
|
||||
},
|
||||
/obj/structure/cable/yellow,
|
||||
/obj/machinery/power/apc/syndicate{
|
||||
dir = 2;
|
||||
name = "Telecommunications APC";
|
||||
pixel_y = -24
|
||||
},
|
||||
@@ -6391,7 +6416,6 @@
|
||||
"oG" = (
|
||||
/obj/structure/cable,
|
||||
/obj/machinery/power/turbine{
|
||||
dir = 2;
|
||||
luminosity = 2
|
||||
},
|
||||
/turf/open/floor/engine/vacuum,
|
||||
@@ -6413,6 +6437,21 @@
|
||||
/obj/structure/sign/departments/chemistry,
|
||||
/turf/closed/wall/mineral/plastitanium/nodiagonal,
|
||||
/area/ruin/unpowered/syndicate_lava_base/testlab)
|
||||
"pC" = (
|
||||
/obj/structure/grille,
|
||||
/obj/structure/window/plastitanium,
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{
|
||||
dir = 10
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/ruin/unpowered/syndicate_lava_base/engineering)
|
||||
"qc" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/supplymain/visible,
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer3{
|
||||
dir = 10
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/ruin/unpowered/syndicate_lava_base/engineering)
|
||||
"tW" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
|
||||
/turf/closed/wall/mineral/plastitanium/nodiagonal,
|
||||
@@ -6466,12 +6505,29 @@
|
||||
/obj/effect/mapping_helpers/airlock/cyclelink_helper,
|
||||
/turf/open/floor/plating,
|
||||
/area/ruin/unpowered/syndicate_lava_base/arrivals)
|
||||
"Gm" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3,
|
||||
/turf/closed/wall/mineral/plastitanium/nodiagonal,
|
||||
/area/ruin/unpowered/syndicate_lava_base/engineering)
|
||||
"Go" = (
|
||||
/obj/machinery/atmospherics/components/trinary/filter/atmos/flipped/plasma{
|
||||
dir = 1;
|
||||
piping_layer = 3
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/ruin/unpowered/syndicate_lava_base/engineering)
|
||||
"IJ" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{
|
||||
dir = 1
|
||||
},
|
||||
/turf/closed/wall/mineral/plastitanium/nodiagonal,
|
||||
/area/ruin/unpowered/syndicate_lava_base/engineering)
|
||||
"KA" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{
|
||||
dir = 4
|
||||
},
|
||||
/turf/closed/wall/mineral/plastitanium/nodiagonal,
|
||||
/area/ruin/unpowered/syndicate_lava_base/engineering)
|
||||
"Lg" = (
|
||||
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3{
|
||||
dir = 4
|
||||
@@ -6487,6 +6543,12 @@
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/turf/closed/wall/mineral/plastitanium/nodiagonal,
|
||||
/area/ruin/unpowered/syndicate_lava_base/circuits)
|
||||
"Ng" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{
|
||||
dir = 9
|
||||
},
|
||||
/turf/closed/wall/mineral/plastitanium/nodiagonal,
|
||||
/area/ruin/unpowered/syndicate_lava_base/engineering)
|
||||
"Pa" = (
|
||||
/turf/closed/wall/mineral/plastitanium/nodiagonal,
|
||||
/area/ruin/unpowered/syndicate_lava_base/circuits)
|
||||
@@ -6520,6 +6582,14 @@
|
||||
},
|
||||
/turf/open/floor/engine,
|
||||
/area/ruin/unpowered/syndicate_lava_base/testlab)
|
||||
"Tt" = (
|
||||
/obj/machinery/atmospherics/components/unary/outlet_injector/layer3{
|
||||
dir = 4;
|
||||
id = "syndie_lavaland_o2_in";
|
||||
piping_layer = 3
|
||||
},
|
||||
/turf/open/floor/plating/airless,
|
||||
/area/ruin/unpowered/syndicate_lava_base/engineering)
|
||||
"TC" = (
|
||||
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3{
|
||||
dir = 4
|
||||
@@ -6529,6 +6599,24 @@
|
||||
},
|
||||
/turf/open/floor/engine,
|
||||
/area/ruin/unpowered/syndicate_lava_base/testlab)
|
||||
"Vw" = (
|
||||
/obj/structure/grille,
|
||||
/obj/structure/window/plastitanium,
|
||||
/obj/machinery/atmospherics/pipe/simple/supplymain/visible{
|
||||
dir = 4
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3,
|
||||
/turf/open/floor/plating,
|
||||
/area/ruin/unpowered/syndicate_lava_base/engineering)
|
||||
"Wq" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{
|
||||
dir = 5
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{
|
||||
dir = 10
|
||||
},
|
||||
/turf/closed/wall/mineral/plastitanium/nodiagonal,
|
||||
/area/ruin/unpowered/syndicate_lava_base/engineering)
|
||||
|
||||
(1,1,1) = {"
|
||||
aa
|
||||
@@ -8363,7 +8451,7 @@ ju
|
||||
ky
|
||||
kW
|
||||
lq
|
||||
lM
|
||||
mh
|
||||
mh
|
||||
mG
|
||||
nd
|
||||
@@ -8412,8 +8500,8 @@ jW
|
||||
kk
|
||||
kz
|
||||
kX
|
||||
lr
|
||||
lN
|
||||
Go
|
||||
mi
|
||||
mH
|
||||
ne
|
||||
@@ -8513,13 +8601,13 @@ km
|
||||
kB
|
||||
kZ
|
||||
lt
|
||||
lt
|
||||
qc
|
||||
mk
|
||||
mJ
|
||||
ng
|
||||
nF
|
||||
ld
|
||||
ju
|
||||
lM
|
||||
uB
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
@@ -8569,7 +8657,7 @@ mK
|
||||
kD
|
||||
nG
|
||||
og
|
||||
ju
|
||||
KA
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
@@ -8612,14 +8700,14 @@ ab
|
||||
ju
|
||||
kD
|
||||
lb
|
||||
ju
|
||||
kD
|
||||
lb
|
||||
ju
|
||||
ju
|
||||
ju
|
||||
ju
|
||||
ju
|
||||
uB
|
||||
pC
|
||||
Vw
|
||||
Wq
|
||||
Gm
|
||||
Gm
|
||||
Gm
|
||||
Ng
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
@@ -8662,10 +8750,10 @@ ab
|
||||
ju
|
||||
kE
|
||||
lc
|
||||
ju
|
||||
KA
|
||||
lQ
|
||||
mm
|
||||
ju
|
||||
KA
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
@@ -8712,10 +8800,10 @@ ab
|
||||
ju
|
||||
kF
|
||||
ld
|
||||
ju
|
||||
KA
|
||||
lR
|
||||
ld
|
||||
ju
|
||||
Tt
|
||||
KA
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
@@ -8761,11 +8849,11 @@ ab
|
||||
ab
|
||||
ju
|
||||
ju
|
||||
lr
|
||||
Ng
|
||||
ju
|
||||
ju
|
||||
ju
|
||||
ju
|
||||
ju
|
||||
lr
|
||||
Ng
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -168,7 +168,7 @@
|
||||
/turf/template_noop,
|
||||
/area/template_noop)
|
||||
"H" = (
|
||||
/obj/machinery/vending/boozeomat/all_access,
|
||||
/obj/machinery/vending/boozeomat,
|
||||
/turf/open/floor/plasteel/airless/cafeteria,
|
||||
/area/ruin/space)
|
||||
"I" = (
|
||||
|
||||
@@ -799,7 +799,7 @@
|
||||
/turf/open/floor/wood,
|
||||
/area/awaymission/beach)
|
||||
"cn" = (
|
||||
/obj/machinery/vending/boozeomat/all_access{
|
||||
/obj/machinery/vending/boozeomat{
|
||||
desc = "A technological marvel, supposedly able to mix just the mixture you'd like to drink the moment you ask for one. May not work for bartenders that don't have Nanotrasen bank accounts."
|
||||
},
|
||||
/turf/open/floor/wood,
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -17073,7 +17073,7 @@
|
||||
/area/security/brig)
|
||||
"aLl" = (
|
||||
/obj/effect/turf_decal/delivery,
|
||||
/obj/machinery/vending/autodrobe/all_access,
|
||||
/obj/machinery/vending/autodrobe,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/hallway/primary/port/fore)
|
||||
"aLm" = (
|
||||
@@ -28450,7 +28450,7 @@
|
||||
/turf/open/floor/plasteel,
|
||||
/area/quartermaster/warehouse)
|
||||
"bjN" = (
|
||||
/obj/machinery/vending/autodrobe/all_access,
|
||||
/obj/machinery/vending/autodrobe,
|
||||
/obj/effect/turf_decal/bot,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/quartermaster/office)
|
||||
@@ -72017,6 +72017,10 @@
|
||||
},
|
||||
/turf/open/space/basic,
|
||||
/area/space/nearstation)
|
||||
"mBP" = (
|
||||
/obj/machinery/rnd/bepis,
|
||||
/turf/open/floor/plasteel/white,
|
||||
/area/science/circuit)
|
||||
"mEa" = (
|
||||
/obj/machinery/atmospherics/pipe/manifold/cyan/visible,
|
||||
/obj/machinery/meter,
|
||||
@@ -72362,6 +72366,9 @@
|
||||
/obj/item/pen,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/engine/atmos)
|
||||
"xxP" = (
|
||||
/turf/closed/wall,
|
||||
/area/quartermaster/storage)
|
||||
"xCy" = (
|
||||
/obj/machinery/atmospherics/components/binary/pump,
|
||||
/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
|
||||
@@ -93369,7 +93376,7 @@ aTE
|
||||
bTG
|
||||
aVF
|
||||
cGs
|
||||
aVF
|
||||
mBP
|
||||
caw
|
||||
caA
|
||||
cHk
|
||||
@@ -121108,7 +121115,7 @@ bgT
|
||||
bjr
|
||||
bkr
|
||||
ble
|
||||
bgT
|
||||
xxP
|
||||
bnC
|
||||
boD
|
||||
bgT
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -29538,6 +29538,14 @@
|
||||
/obj/machinery/light/small{
|
||||
dir = 8
|
||||
},
|
||||
/obj/machinery/computer/security/telescreen{
|
||||
desc = "Used for watching the test chamber.";
|
||||
dir = 4;
|
||||
layer = 4;
|
||||
name = "Test Chamber Telescreen";
|
||||
network = list("toxins");
|
||||
pixel_x = -32
|
||||
},
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/science/mixing)
|
||||
"aVT" = (
|
||||
@@ -30469,9 +30477,8 @@
|
||||
dir = 4
|
||||
},
|
||||
/obj/machinery/light{
|
||||
dir = 4
|
||||
dir = 1
|
||||
},
|
||||
/obj/machinery/computer/nanite_cloud_controller,
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/science/research)
|
||||
"aXx" = (
|
||||
@@ -30583,7 +30590,8 @@
|
||||
name = "science camera";
|
||||
network = list("ss13","rd")
|
||||
},
|
||||
/obj/machinery/computer/nanite_chamber_control,
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/item/storage/bag/money,
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/science/research)
|
||||
"aXG" = (
|
||||
@@ -31251,8 +31259,6 @@
|
||||
dir = 1
|
||||
},
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/item/nanite_scanner,
|
||||
/obj/item/nanite_remote,
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/science/research)
|
||||
"aYO" = (
|
||||
@@ -33284,14 +33290,6 @@
|
||||
/obj/structure/chair{
|
||||
dir = 4
|
||||
},
|
||||
/obj/machinery/computer/security/telescreen{
|
||||
desc = "Used for watching the test chamber.";
|
||||
dir = 8;
|
||||
layer = 4;
|
||||
name = "Test Chamber Telescreen";
|
||||
network = list("toxins");
|
||||
pixel_x = 30
|
||||
},
|
||||
/obj/effect/turf_decal/tile/neutral{
|
||||
dir = 8
|
||||
},
|
||||
@@ -33793,14 +33791,6 @@
|
||||
pixel_x = 24;
|
||||
pixel_y = -24
|
||||
},
|
||||
/obj/machinery/computer/security/telescreen{
|
||||
desc = "Used for watching the test chamber.";
|
||||
dir = 8;
|
||||
layer = 4;
|
||||
name = "Test Chamber Telescreen";
|
||||
network = list("toxins");
|
||||
pixel_x = 30
|
||||
},
|
||||
/obj/effect/turf_decal/tile/neutral{
|
||||
dir = 8
|
||||
},
|
||||
@@ -35128,7 +35118,6 @@
|
||||
dir = 4
|
||||
},
|
||||
/obj/effect/landmark/event_spawn,
|
||||
/obj/machinery/nanite_program_hub,
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/science/research)
|
||||
"beE" = (
|
||||
@@ -54029,7 +54018,7 @@
|
||||
/obj/effect/turf_decal/tile/neutral{
|
||||
dir = 8
|
||||
},
|
||||
/obj/machinery/vending/autodrobe/all_access,
|
||||
/obj/machinery/vending/autodrobe,
|
||||
/obj/effect/turf_decal/delivery,
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/crew_quarters/locker)
|
||||
@@ -62906,6 +62895,11 @@
|
||||
/obj/structure/extinguisher_cabinet{
|
||||
pixel_x = 24
|
||||
},
|
||||
/obj/machinery/button/electrochromatic{
|
||||
pixel_x = 38;
|
||||
pixel_y = -5;
|
||||
id = "!interrogation_room"
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/security/warden)
|
||||
"bWO" = (
|
||||
@@ -73512,7 +73506,7 @@
|
||||
},
|
||||
/mob/living/simple_animal/bot/cleanbot{
|
||||
auto_patrol = 1;
|
||||
name = "\imprper Cleaner Bot"
|
||||
name = "\improper Cleaner Bot"
|
||||
},
|
||||
/turf/open/floor/plasteel/showroomfloor,
|
||||
/area/security/prison)
|
||||
@@ -78316,7 +78310,7 @@
|
||||
/obj/effect/turf_decal/tile/neutral{
|
||||
dir = 4
|
||||
},
|
||||
/obj/machinery/vending/autodrobe/all_access,
|
||||
/obj/machinery/vending/autodrobe,
|
||||
/obj/structure/noticeboard{
|
||||
dir = 4;
|
||||
pixel_x = -27
|
||||
@@ -84861,7 +84855,7 @@
|
||||
/turf/open/floor/engine,
|
||||
/area/engine/engineering)
|
||||
"iLn" = (
|
||||
/obj/machinery/vending/boozeomat/all_access,
|
||||
/obj/machinery/vending/boozeomat,
|
||||
/turf/open/floor/wood,
|
||||
/area/maintenance/port/fore)
|
||||
"iMb" = (
|
||||
@@ -85144,7 +85138,7 @@
|
||||
dir = 8
|
||||
},
|
||||
/obj/effect/turf_decal/bot,
|
||||
/obj/machinery/nanite_chamber,
|
||||
/obj/machinery/rnd/bepis,
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/science/research)
|
||||
"kSc" = (
|
||||
@@ -85411,14 +85405,6 @@
|
||||
initial_gas_mix = "o2=14;n2=23;TEMP=300"
|
||||
},
|
||||
/area/hallway/secondary/entry)
|
||||
"sfp" = (
|
||||
/obj/effect/turf_decal/tile/neutral,
|
||||
/obj/effect/turf_decal/tile/neutral{
|
||||
dir = 4
|
||||
},
|
||||
/obj/machinery/nanite_programmer,
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/science/research)
|
||||
"swG" = (
|
||||
/obj/item/reagent_containers/food/drinks/drinkingglass{
|
||||
pixel_x = 4;
|
||||
@@ -85513,6 +85499,12 @@
|
||||
"uRM" = (
|
||||
/turf/open/floor/wood,
|
||||
/area/security/vacantoffice)
|
||||
"vjT" = (
|
||||
/obj/effect/spawner/structure/window/reinforced/tinted/electrochromatic{
|
||||
electrochromatic_id = "!interrogation_room"
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/security/warden)
|
||||
"vle" = (
|
||||
/obj/structure/festivus,
|
||||
/turf/open/floor/wood,
|
||||
@@ -107879,7 +107871,7 @@ agX
|
||||
agX
|
||||
agX
|
||||
aef
|
||||
acH
|
||||
vjT
|
||||
aBH
|
||||
aef
|
||||
aef
|
||||
@@ -123517,7 +123509,7 @@ aZv
|
||||
aXw
|
||||
kRh
|
||||
aXI
|
||||
sfp
|
||||
aXI
|
||||
beD
|
||||
bbj
|
||||
aNF
|
||||
@@ -126371,7 +126363,7 @@ bki
|
||||
bhQ
|
||||
bkN
|
||||
bIG
|
||||
bki
|
||||
bhQ
|
||||
bMB
|
||||
blH
|
||||
bhQ
|
||||
|
||||
@@ -707,27 +707,11 @@
|
||||
/turf/open/floor/plasteel,
|
||||
/area/science/mixing)
|
||||
"acc" = (
|
||||
/obj/machinery/computer/security/telescreen/toxins{
|
||||
layer = 4;
|
||||
network = list("toxins");
|
||||
pixel_y = 30
|
||||
},
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 9
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/science/mixing)
|
||||
"acd" = (
|
||||
/obj/machinery/computer/security/telescreen/toxins{
|
||||
layer = 4;
|
||||
network = list("toxins");
|
||||
pixel_y = 30
|
||||
},
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/science/mixing)
|
||||
"ace" = (
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 1
|
||||
@@ -1183,6 +1167,10 @@
|
||||
name = "Mass Driver Door";
|
||||
req_access_txt = "7"
|
||||
},
|
||||
/obj/machinery/computer/security/telescreen/toxins{
|
||||
dir = 1;
|
||||
pixel_y = -32
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/science/mixing)
|
||||
"adg" = (
|
||||
@@ -23482,9 +23470,7 @@
|
||||
dir = 8
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3,
|
||||
/obj/structure/closet/l3closet/scientist{
|
||||
pixel_x = -2
|
||||
},
|
||||
/obj/structure/closet/l3closet/scientist,
|
||||
/turf/open/floor/plasteel/white,
|
||||
/area/science/explab)
|
||||
"aQI" = (
|
||||
@@ -38272,12 +38258,10 @@
|
||||
/turf/open/floor/plasteel/white,
|
||||
/area/medical/chemistry)
|
||||
"btD" = (
|
||||
/obj/machinery/chem_dispenser{
|
||||
layer = 2.7
|
||||
},
|
||||
/obj/effect/turf_decal/trimline/blue/filled/line{
|
||||
dir = 1
|
||||
},
|
||||
/obj/machinery/chem_dispenser/apothecary,
|
||||
/turf/open/floor/plasteel/white,
|
||||
/area/medical/chemistry)
|
||||
"btE" = (
|
||||
@@ -45021,7 +45005,7 @@
|
||||
/turf/open/floor/wood,
|
||||
/area/maintenance/bar)
|
||||
"bGM" = (
|
||||
/obj/machinery/vending/boozeomat/all_access,
|
||||
/obj/machinery/vending/boozeomat,
|
||||
/turf/open/floor/wood,
|
||||
/area/maintenance/bar)
|
||||
"bGN" = (
|
||||
@@ -47241,7 +47225,6 @@
|
||||
/area/hydroponics/garden/abandoned)
|
||||
"bKT" = (
|
||||
/obj/item/poster/random_contraband,
|
||||
/turf/open/floor/plating,
|
||||
/turf/open/floor/plating{
|
||||
icon_state = "platingdmg2"
|
||||
},
|
||||
@@ -58598,7 +58581,7 @@
|
||||
/turf/open/space,
|
||||
/area/space/nearstation)
|
||||
"cgJ" = (
|
||||
/obj/machinery/vending/autodrobe/all_access,
|
||||
/obj/machinery/vending/autodrobe,
|
||||
/turf/open/floor/plating,
|
||||
/area/maintenance/aft)
|
||||
"cgK" = (
|
||||
@@ -62158,7 +62141,6 @@
|
||||
/obj/structure/cable{
|
||||
icon_state = "0-4"
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/turf/open/floor/plating{
|
||||
icon_state = "platingdmg2"
|
||||
},
|
||||
@@ -63619,7 +63601,6 @@
|
||||
/obj/structure/disposalpipe/segment{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/turf/open/floor/plating{
|
||||
icon_state = "platingdmg2"
|
||||
},
|
||||
@@ -72658,7 +72639,7 @@
|
||||
/turf/open/floor/plasteel/grimy,
|
||||
/area/bridge)
|
||||
"cIV" = (
|
||||
/obj/machinery/vending/boozeomat/all_access,
|
||||
/obj/machinery/vending/boozeomat,
|
||||
/obj/machinery/status_display/evac{
|
||||
pixel_y = 32
|
||||
},
|
||||
@@ -75970,7 +75951,6 @@
|
||||
},
|
||||
/area/maintenance/department/medical)
|
||||
"cPo" = (
|
||||
/turf/open/floor/plating,
|
||||
/turf/open/floor/plating{
|
||||
icon_state = "platingdmg2"
|
||||
},
|
||||
@@ -76073,7 +76053,6 @@
|
||||
},
|
||||
/area/maintenance/fore/secondary)
|
||||
"cPB" = (
|
||||
/turf/open/floor/plating,
|
||||
/turf/open/floor/plating{
|
||||
icon_state = "platingdmg2"
|
||||
},
|
||||
@@ -76098,17 +76077,10 @@
|
||||
},
|
||||
/area/maintenance/department/crew_quarters/dorms)
|
||||
"cPE" = (
|
||||
/turf/open/floor/plating,
|
||||
/turf/open/floor/plating{
|
||||
icon_state = "platingdmg2"
|
||||
},
|
||||
/area/maintenance/department/crew_quarters/dorms)
|
||||
"cPF" = (
|
||||
/turf/open/floor/plating,
|
||||
/turf/open/floor/plating{
|
||||
icon_state = "platingdmg2"
|
||||
},
|
||||
/area/maintenance/aft)
|
||||
"cPG" = (
|
||||
/obj/structure/cable{
|
||||
icon_state = "4-8"
|
||||
@@ -81517,6 +81489,10 @@
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/hallway/primary/aft)
|
||||
"sZf" = (
|
||||
/obj/machinery/rnd/bepis,
|
||||
/turf/open/floor/engine,
|
||||
/area/science/explab)
|
||||
"tbT" = (
|
||||
/obj/machinery/power/emitter/anchored{
|
||||
dir = 1;
|
||||
@@ -112996,7 +112972,7 @@ aAY
|
||||
aAY
|
||||
aAY
|
||||
abK
|
||||
acd
|
||||
ace
|
||||
acH
|
||||
ajC
|
||||
abJ
|
||||
@@ -113803,7 +113779,7 @@ aFb
|
||||
aFO
|
||||
aGD
|
||||
aHo
|
||||
aGD
|
||||
aHp
|
||||
aDr
|
||||
aaA
|
||||
aaA
|
||||
@@ -114059,7 +114035,7 @@ aEj
|
||||
aFc
|
||||
aFO
|
||||
aGD
|
||||
aHp
|
||||
aGD
|
||||
aGD
|
||||
aDr
|
||||
apk
|
||||
@@ -114572,9 +114548,9 @@ aJP
|
||||
aKA
|
||||
aFe
|
||||
aDr
|
||||
aGD
|
||||
aHq
|
||||
aGD
|
||||
sZf
|
||||
aDr
|
||||
aJI
|
||||
aKB
|
||||
@@ -115439,7 +115415,7 @@ cgm
|
||||
thv
|
||||
uRw
|
||||
boU
|
||||
cPF
|
||||
cfm
|
||||
chI
|
||||
cqg
|
||||
cWW
|
||||
@@ -118541,7 +118517,7 @@ aaA
|
||||
ceG
|
||||
cqt
|
||||
bYa
|
||||
cPF
|
||||
cfm
|
||||
ceG
|
||||
aaA
|
||||
aaA
|
||||
@@ -119299,7 +119275,7 @@ cQK
|
||||
bYa
|
||||
bYa
|
||||
cRQ
|
||||
cPF
|
||||
cfm
|
||||
chI
|
||||
cRv
|
||||
bYa
|
||||
@@ -134623,7 +134599,7 @@ aab
|
||||
aab
|
||||
aJw
|
||||
aKk
|
||||
aKk
|
||||
aPB
|
||||
aLY
|
||||
aMU
|
||||
aNT
|
||||
|
||||
@@ -3807,7 +3807,8 @@
|
||||
movement_type = 1;
|
||||
name = "Sergeant Araneus";
|
||||
real_name = "Sergeant Araneus";
|
||||
response_help = "pets";
|
||||
response_help_continuous = "pets";
|
||||
response_help_simple = "pet";
|
||||
turns_per_move = 10
|
||||
},
|
||||
/turf/open/floor/carpet,
|
||||
@@ -6660,9 +6661,7 @@
|
||||
/obj/structure/cable/yellow{
|
||||
icon_state = "2-8"
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
|
||||
dir = 4
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden,
|
||||
/turf/open/floor/plasteel/showroomfloor,
|
||||
/area/security/warden)
|
||||
"amc" = (
|
||||
@@ -7778,9 +7777,6 @@
|
||||
"aop" = (
|
||||
/obj/structure/bed,
|
||||
/obj/item/bedsheet,
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
|
||||
dir = 9
|
||||
},
|
||||
/obj/structure/disposalpipe/segment{
|
||||
dir = 4
|
||||
},
|
||||
@@ -7792,6 +7788,9 @@
|
||||
/obj/effect/turf_decal/tile/red{
|
||||
dir = 8
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plasteel/white,
|
||||
/area/security/brig)
|
||||
"aoq" = (
|
||||
@@ -9147,6 +9146,7 @@
|
||||
/area/maintenance/port/fore)
|
||||
"aqY" = (
|
||||
/obj/machinery/computer/security/labor,
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/security/brig)
|
||||
"aqZ" = (
|
||||
@@ -10144,14 +10144,6 @@
|
||||
/obj/structure/chair,
|
||||
/turf/open/floor/plasteel/grimy,
|
||||
/area/security/main)
|
||||
"asN" = (
|
||||
/obj/structure/chair,
|
||||
/obj/machinery/computer/security/telescreen/interrogation{
|
||||
dir = 1;
|
||||
pixel_y = -30
|
||||
},
|
||||
/turf/open/floor/plasteel/grimy,
|
||||
/area/security/main)
|
||||
"asO" = (
|
||||
/obj/item/paper_bin{
|
||||
pixel_x = -3;
|
||||
@@ -10708,7 +10700,9 @@
|
||||
/turf/open/floor/plating,
|
||||
/area/security/main)
|
||||
"atZ" = (
|
||||
/obj/effect/spawner/structure/window/reinforced/tinted,
|
||||
/obj/effect/spawner/structure/window/reinforced/tinted/electrochromatic{
|
||||
electrochromatic_id = "!interrogation_room"
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/security/main)
|
||||
"aua" = (
|
||||
@@ -11924,9 +11918,6 @@
|
||||
/turf/open/floor/plating,
|
||||
/area/maintenance/fore)
|
||||
"awC" = (
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/on{
|
||||
dir = 1
|
||||
},
|
||||
/obj/machinery/light/small{
|
||||
dir = 1
|
||||
},
|
||||
@@ -14823,6 +14814,9 @@
|
||||
/obj/structure/cable/yellow{
|
||||
icon_state = "2-8"
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/security/brig)
|
||||
"aCr" = (
|
||||
@@ -14830,6 +14824,9 @@
|
||||
name = "Court Cell";
|
||||
req_access_txt = "63"
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/security/brig)
|
||||
"aCs" = (
|
||||
@@ -45054,7 +45051,7 @@
|
||||
/turf/open/floor/plating,
|
||||
/area/maintenance/port)
|
||||
"bLe" = (
|
||||
/obj/machinery/vending/autodrobe/all_access,
|
||||
/obj/machinery/vending/autodrobe,
|
||||
/turf/open/floor/plating,
|
||||
/area/maintenance/port)
|
||||
"bLf" = (
|
||||
@@ -46092,7 +46089,7 @@
|
||||
/area/bridge/showroom/corporate)
|
||||
"bNg" = (
|
||||
/obj/machinery/light_switch{
|
||||
pixel_y = 24
|
||||
pixel_y = 25
|
||||
},
|
||||
/obj/machinery/light/small{
|
||||
dir = 1
|
||||
@@ -52691,7 +52688,9 @@
|
||||
/area/maintenance/starboard)
|
||||
"caX" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
|
||||
/obj/machinery/light_switch,
|
||||
/obj/machinery/light_switch{
|
||||
pixel_y = 25
|
||||
},
|
||||
/turf/closed/wall,
|
||||
/area/maintenance/disposal/incinerator)
|
||||
"caY" = (
|
||||
@@ -56944,21 +56943,12 @@
|
||||
},
|
||||
/area/science/research)
|
||||
"ciS" = (
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/on{
|
||||
dir = 4
|
||||
},
|
||||
/mob/living/simple_animal/pet/dog/pug{
|
||||
desc = "It's Pugley IV, the research department's lovable pug clone. Hopefully nothing happens to this one - fourth time lucky!";
|
||||
name = "Pugley IV";
|
||||
real_name = "Pugley IV"
|
||||
},
|
||||
/obj/machinery/rnd/bepis,
|
||||
/turf/open/floor/engine,
|
||||
/area/science/explab)
|
||||
"ciT" = (
|
||||
/obj/item/beacon,
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
|
||||
dir = 10
|
||||
},
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/on,
|
||||
/turf/open/floor/engine,
|
||||
/area/science/explab)
|
||||
"ciU" = (
|
||||
@@ -57077,7 +57067,7 @@
|
||||
/turf/open/floor/plating/airless,
|
||||
/area/engine/atmos)
|
||||
"cjp" = (
|
||||
/obj/machinery/vending/boozeomat/all_access,
|
||||
/obj/machinery/vending/boozeomat,
|
||||
/turf/open/floor/wood,
|
||||
/area/maintenance/port/aft)
|
||||
"cjq" = (
|
||||
@@ -59557,6 +59547,11 @@
|
||||
/obj/structure/chair/office/light{
|
||||
dir = 4
|
||||
},
|
||||
/mob/living/simple_animal/pet/dog/pug{
|
||||
desc = "It's Pugley IV, the research department's lovable pug clone. Hopefully nothing happens to this one - fourth time lucky!";
|
||||
name = "Pugley IV";
|
||||
real_name = "Pugley IV"
|
||||
},
|
||||
/turf/open/floor/plasteel/white,
|
||||
/area/science/explab)
|
||||
"com" = (
|
||||
@@ -62405,7 +62400,7 @@
|
||||
dir = 10
|
||||
},
|
||||
/obj/machinery/light_switch{
|
||||
pixel_y = 24
|
||||
pixel_y = 25
|
||||
},
|
||||
/obj/effect/turf_decal/tile/blue,
|
||||
/obj/effect/turf_decal/tile/blue{
|
||||
@@ -63920,7 +63915,7 @@
|
||||
dir = 8
|
||||
},
|
||||
/obj/machinery/light_switch{
|
||||
pixel_y = 24
|
||||
pixel_y = 25
|
||||
},
|
||||
/obj/effect/turf_decal/tile/blue{
|
||||
dir = 1
|
||||
@@ -63928,9 +63923,7 @@
|
||||
/obj/effect/turf_decal/tile/blue{
|
||||
dir = 8
|
||||
},
|
||||
/obj/machinery/chem_dispenser{
|
||||
layer = 2.7
|
||||
},
|
||||
/obj/machinery/chem_dispenser/apothecary,
|
||||
/turf/open/floor/plasteel/white,
|
||||
/area/medical/medbay/aft)
|
||||
"cwp" = (
|
||||
@@ -66312,6 +66305,7 @@
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
|
||||
dir = 4
|
||||
},
|
||||
/obj/structure/sign/warning/biohazard,
|
||||
/turf/closed/wall,
|
||||
/area/science/mixing)
|
||||
"cAM" = (
|
||||
@@ -66337,14 +66331,6 @@
|
||||
/obj/structure/chair{
|
||||
dir = 4
|
||||
},
|
||||
/obj/machinery/computer/security/telescreen{
|
||||
desc = "Used for watching the test chamber.";
|
||||
dir = 8;
|
||||
layer = 4;
|
||||
name = "Test Chamber Telescreen";
|
||||
network = list("toxins");
|
||||
pixel_x = 30
|
||||
},
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 5
|
||||
},
|
||||
@@ -66768,14 +66754,6 @@
|
||||
pixel_x = 24;
|
||||
pixel_y = -24
|
||||
},
|
||||
/obj/machinery/computer/security/telescreen{
|
||||
desc = "Used for watching the test chamber.";
|
||||
dir = 8;
|
||||
layer = 4;
|
||||
name = "Test Chamber Telescreen";
|
||||
network = list("toxins");
|
||||
pixel_x = 30
|
||||
},
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 6
|
||||
},
|
||||
@@ -67188,6 +67166,15 @@
|
||||
req_access_txt = "7"
|
||||
},
|
||||
/obj/effect/turf_decal/loading_area,
|
||||
/obj/machinery/computer/security/telescreen{
|
||||
desc = "Used for watching the test chamber.";
|
||||
dir = 4;
|
||||
layer = 4;
|
||||
name = "Test Chamber Telescreen";
|
||||
network = list("toxins");
|
||||
pixel_x = -32;
|
||||
pixel_y = 0
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/science/mixing)
|
||||
"cCH" = (
|
||||
@@ -74543,7 +74530,7 @@
|
||||
dir = 8
|
||||
},
|
||||
/obj/machinery/light_switch{
|
||||
pixel_x = -23
|
||||
pixel_y = 25
|
||||
},
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 9
|
||||
@@ -79861,13 +79848,13 @@
|
||||
c_tag = "Chapel - Funeral Parlour";
|
||||
dir = 8
|
||||
},
|
||||
/obj/machinery/atmospherics/components/unary/vent_scrubber/on,
|
||||
/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/chapel/main)
|
||||
"djk" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
|
||||
dir = 5
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden,
|
||||
/turf/closed/wall,
|
||||
/area/chapel/main)
|
||||
"djr" = (
|
||||
@@ -80610,10 +80597,12 @@
|
||||
/area/security/brig)
|
||||
"dBH" = (
|
||||
/obj/effect/spawner/structure/window/reinforced,
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
|
||||
/obj/structure/cable/yellow{
|
||||
icon_state = "0-4"
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/security/brig)
|
||||
"dBI" = (
|
||||
@@ -81872,6 +81861,14 @@
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/hallway/primary/port)
|
||||
"kRi" = (
|
||||
/obj/structure/chair,
|
||||
/obj/machinery/button/electrochromatic{
|
||||
id = "!interrogation_room";
|
||||
pixel_x = -25
|
||||
},
|
||||
/turf/open/floor/plasteel/grimy,
|
||||
/area/security/main)
|
||||
"kVo" = (
|
||||
/obj/structure/cable/yellow{
|
||||
icon_state = "1-2"
|
||||
@@ -82162,6 +82159,12 @@
|
||||
/obj/item/storage/fancy/candle_box,
|
||||
/turf/open/floor/engine/cult,
|
||||
/area/library)
|
||||
"oaM" = (
|
||||
/obj/machinery/computer/security/telescreen/interrogation{
|
||||
pixel_y = 32
|
||||
},
|
||||
/turf/open/floor/plasteel/grimy,
|
||||
/area/security/main)
|
||||
"obb" = (
|
||||
/obj/structure/target_stake,
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
@@ -82215,6 +82218,10 @@
|
||||
/obj/machinery/status_display/supply,
|
||||
/turf/closed/wall,
|
||||
/area/quartermaster/sorting)
|
||||
"orJ" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
|
||||
/turf/closed/wall,
|
||||
/area/security/brig)
|
||||
"oub" = (
|
||||
/obj/structure/sign/poster/official/random,
|
||||
/turf/closed/wall,
|
||||
@@ -82299,6 +82306,12 @@
|
||||
},
|
||||
/turf/closed/wall/r_wall,
|
||||
/area/maintenance/disposal/incinerator)
|
||||
"pvk" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
|
||||
dir = 4
|
||||
},
|
||||
/turf/closed/wall/r_wall,
|
||||
/area/security/detectives_office)
|
||||
"pvA" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
|
||||
dir = 4
|
||||
@@ -99936,7 +99949,7 @@ aIg
|
||||
aIg
|
||||
aKN
|
||||
dIs
|
||||
aIg
|
||||
aUe
|
||||
dIs
|
||||
aQg
|
||||
aIg
|
||||
@@ -104390,7 +104403,7 @@ cLa
|
||||
cPF
|
||||
cQb
|
||||
djj
|
||||
djr
|
||||
cQb
|
||||
cRq
|
||||
cPA
|
||||
aaa
|
||||
@@ -107370,7 +107383,7 @@ akv
|
||||
alO
|
||||
anf
|
||||
aop
|
||||
ahx
|
||||
orJ
|
||||
aqY
|
||||
asn
|
||||
atK
|
||||
@@ -112777,7 +112790,7 @@ axp
|
||||
dBF
|
||||
azO
|
||||
aBi
|
||||
ajm
|
||||
axw
|
||||
ajm
|
||||
ajm
|
||||
ajm
|
||||
@@ -113291,7 +113304,7 @@ axr
|
||||
ayF
|
||||
ayF
|
||||
ayF
|
||||
ayF
|
||||
pvk
|
||||
ayJ
|
||||
ayJ
|
||||
aGt
|
||||
@@ -115339,7 +115352,7 @@ aiJ
|
||||
aoK
|
||||
aqa
|
||||
arv
|
||||
asM
|
||||
kRi
|
||||
atZ
|
||||
avk
|
||||
aww
|
||||
@@ -115595,8 +115608,8 @@ amr
|
||||
anD
|
||||
aoL
|
||||
ajD
|
||||
arv
|
||||
asN
|
||||
oaM
|
||||
asM
|
||||
atZ
|
||||
avk
|
||||
awx
|
||||
@@ -118507,7 +118520,7 @@ krD
|
||||
czD
|
||||
cAL
|
||||
cBG
|
||||
cyy
|
||||
czD
|
||||
czD
|
||||
czD
|
||||
cFu
|
||||
|
||||
@@ -2367,9 +2367,7 @@
|
||||
/obj/item/seeds/cotton{
|
||||
yield = 5
|
||||
},
|
||||
/obj/item/seeds/cotton{
|
||||
yield = 5
|
||||
},
|
||||
/obj/item/seeds/cotton/durathread,
|
||||
/turf/open/indestructible/boss,
|
||||
/area/ruin/unpowered/ash_walkers)
|
||||
"Vj" = (
|
||||
|
||||
@@ -2150,11 +2150,6 @@
|
||||
/obj/machinery/status_display/supply,
|
||||
/turf/closed/wall,
|
||||
/area/quartermaster/storage)
|
||||
"adq" = (
|
||||
/obj/effect/spawner/structure/window/reinforced,
|
||||
/obj/structure/sign/warning/vacuum,
|
||||
/turf/open/floor/plating,
|
||||
/area/quartermaster/storage)
|
||||
"adr" = (
|
||||
/obj/structure/cable{
|
||||
icon_state = "4-8"
|
||||
@@ -37688,6 +37683,10 @@
|
||||
/obj/machinery/atmospherics/miner/carbon_dioxide,
|
||||
/turf/open/floor/engine/co2,
|
||||
/area/engine/atmos)
|
||||
"hQH" = (
|
||||
/obj/structure/sign/warning/vacuum,
|
||||
/turf/closed/wall,
|
||||
/area/quartermaster/storage)
|
||||
"hTn" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
|
||||
/obj/machinery/door/airlock/research/glass{
|
||||
@@ -38292,14 +38291,6 @@
|
||||
/obj/structure/flora/ausbushes/ywflowers,
|
||||
/turf/open/floor/grass,
|
||||
/area/hallway/secondary/entry)
|
||||
"lvt" = (
|
||||
/obj/effect/spawner/structure/window/reinforced,
|
||||
/obj/structure/sign/warning/vacuum,
|
||||
/obj/machinery/light{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/quartermaster/storage)
|
||||
"lvw" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/orange/visible,
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
@@ -91224,7 +91215,7 @@ aac
|
||||
swM
|
||||
aeh
|
||||
agB
|
||||
ado
|
||||
adn
|
||||
agB
|
||||
ahq
|
||||
adp
|
||||
@@ -91478,13 +91469,13 @@ aaa
|
||||
aaa
|
||||
aaa
|
||||
aaa
|
||||
adq
|
||||
ado
|
||||
aeg
|
||||
aeX
|
||||
adp
|
||||
hQH
|
||||
agC
|
||||
ahr
|
||||
lvt
|
||||
ado
|
||||
aae
|
||||
aae
|
||||
aae
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -473,12 +473,6 @@
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/engine/gravity_generator)
|
||||
"bs" = (
|
||||
/obj/structure/cable{
|
||||
icon_state = "1-2"
|
||||
},
|
||||
/turf/closed/wall/r_wall,
|
||||
/area/engine/gravity_generator)
|
||||
"bt" = (
|
||||
/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
|
||||
dir = 8
|
||||
@@ -654,7 +648,9 @@
|
||||
pixel_x = -25
|
||||
},
|
||||
/obj/structure/closet/firecloset/full,
|
||||
/obj/structure/cable,
|
||||
/obj/structure/cable{
|
||||
icon_state = "0-2"
|
||||
},
|
||||
/turf/open/floor/plasteel{
|
||||
dir = 9
|
||||
},
|
||||
@@ -793,7 +789,9 @@
|
||||
},
|
||||
/area/hallway/primary/central)
|
||||
"cl" = (
|
||||
/obj/structure/cable,
|
||||
/obj/structure/cable{
|
||||
icon_state = "1-2"
|
||||
},
|
||||
/turf/open/floor/plasteel{
|
||||
dir = 8
|
||||
},
|
||||
@@ -3614,8 +3612,8 @@ ak
|
||||
aT
|
||||
ak
|
||||
ak
|
||||
bs
|
||||
bL
|
||||
ak
|
||||
bE
|
||||
bE
|
||||
bE
|
||||
cc
|
||||
@@ -3669,7 +3667,7 @@ aU
|
||||
bg
|
||||
bq
|
||||
ak
|
||||
bL
|
||||
bE
|
||||
bE
|
||||
bE
|
||||
cd
|
||||
@@ -3723,7 +3721,7 @@ bh
|
||||
bh
|
||||
br
|
||||
ak
|
||||
bL
|
||||
bE
|
||||
bE
|
||||
bE
|
||||
cc
|
||||
|
||||
@@ -2526,7 +2526,6 @@
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/on{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/space/basic,
|
||||
/turf/open/floor/carpet/blackred,
|
||||
/area/crew_quarters/bar)
|
||||
"gR" = (
|
||||
@@ -2806,7 +2805,6 @@
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/space/basic,
|
||||
/turf/open/floor/carpet/blackred,
|
||||
/area/crew_quarters/bar)
|
||||
"vP" = (
|
||||
@@ -2832,7 +2830,6 @@
|
||||
/turf/open/floor/plasteel,
|
||||
/area/hallway/primary/central)
|
||||
"wf" = (
|
||||
/turf/open/space/basic,
|
||||
/turf/open/floor/carpet/blackred,
|
||||
/area/crew_quarters/bar)
|
||||
"wS" = (
|
||||
@@ -2854,7 +2851,6 @@
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/space/basic,
|
||||
/turf/open/floor/carpet/blackred,
|
||||
/area/crew_quarters/bar)
|
||||
"xh" = (
|
||||
@@ -2869,7 +2865,6 @@
|
||||
/obj/structure/cable{
|
||||
icon_state = "4-8"
|
||||
},
|
||||
/turf/open/space/basic,
|
||||
/turf/open/floor/carpet/blackred,
|
||||
/area/crew_quarters/bar)
|
||||
"yt" = (
|
||||
@@ -3002,7 +2997,7 @@
|
||||
/turf/open/floor/grass,
|
||||
/area/hydroponics)
|
||||
"Ga" = (
|
||||
/obj/machinery/vending/boozeomat/all_access,
|
||||
/obj/machinery/vending/boozeomat,
|
||||
/obj/machinery/airalarm{
|
||||
dir = 8;
|
||||
pixel_x = 24
|
||||
@@ -3041,7 +3036,6 @@
|
||||
/area/bridge)
|
||||
"IB" = (
|
||||
/obj/structure/chair/stool/bar,
|
||||
/turf/open/space/basic,
|
||||
/turf/open/floor/carpet/blackred,
|
||||
/area/crew_quarters/bar)
|
||||
"JF" = (
|
||||
@@ -3086,7 +3080,6 @@
|
||||
/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/space/basic,
|
||||
/turf/open/floor/carpet/blackred,
|
||||
/area/crew_quarters/bar)
|
||||
"Ly" = (
|
||||
@@ -3115,7 +3108,6 @@
|
||||
icon_state = "1-4"
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
|
||||
/turf/open/space/basic,
|
||||
/turf/open/floor/carpet/blackred,
|
||||
/area/crew_quarters/bar)
|
||||
"MS" = (
|
||||
@@ -3334,7 +3326,6 @@
|
||||
/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/space/basic,
|
||||
/turf/open/floor/carpet/blackred,
|
||||
/area/crew_quarters/bar)
|
||||
|
||||
@@ -9446,7 +9437,7 @@ fh
|
||||
fh
|
||||
eY
|
||||
eR
|
||||
fh
|
||||
et
|
||||
eR
|
||||
fc
|
||||
fh
|
||||
|
||||
@@ -13278,7 +13278,7 @@
|
||||
/turf/open/floor/engine/cult,
|
||||
/area/wizard_station)
|
||||
"ED" = (
|
||||
/obj/machinery/vending/boozeomat/all_access,
|
||||
/obj/machinery/vending/boozeomat,
|
||||
/turf/closed/indestructible{
|
||||
icon = 'icons/turf/walls/wood_wall.dmi';
|
||||
icon_state = "wood";
|
||||
@@ -17650,7 +17650,7 @@
|
||||
/turf/open/floor/wood,
|
||||
/area/syndicate_mothership)
|
||||
"Sj" = (
|
||||
/obj/machinery/vending/autodrobe/all_access{
|
||||
/obj/machinery/vending/autodrobe{
|
||||
extended_inventory = 1
|
||||
},
|
||||
/obj/machinery/light,
|
||||
@@ -58771,7 +58771,7 @@ iX
|
||||
iX
|
||||
jm
|
||||
jr
|
||||
iX
|
||||
iF
|
||||
jr
|
||||
jK
|
||||
iX
|
||||
|
||||
@@ -326,10 +326,6 @@
|
||||
/mob/living/simple_animal/hostile/gorilla,
|
||||
/turf/open/floor/plasteel/shuttle,
|
||||
/area/shuttle/escape)
|
||||
"bn" = (
|
||||
/obj/structure/reagent_dispensers/keg/semen,
|
||||
/turf/open/floor/plating,
|
||||
/area/shuttle/escape)
|
||||
"bo" = (
|
||||
/obj/structure/closet/crate/freezer/surplus_limbs,
|
||||
/turf/open/floor/plasteel/shuttle,
|
||||
@@ -539,7 +535,7 @@ aD
|
||||
fV
|
||||
Pi
|
||||
bm
|
||||
bn
|
||||
ax
|
||||
bs
|
||||
bu
|
||||
"}
|
||||
@@ -610,7 +606,7 @@ aX
|
||||
aD
|
||||
fV
|
||||
bi
|
||||
bn
|
||||
ax
|
||||
bl
|
||||
fV
|
||||
ab
|
||||
|
||||
@@ -422,7 +422,7 @@
|
||||
/turf/open/floor/carpet/red,
|
||||
/area/shuttle/escape/luxury)
|
||||
"bD" = (
|
||||
/obj/machinery/vending/boozeomat/all_access,
|
||||
/obj/machinery/vending/boozeomat,
|
||||
/turf/open/floor/carpet/red,
|
||||
/area/shuttle/escape/luxury)
|
||||
"bE" = (
|
||||
|
||||
@@ -733,7 +733,7 @@
|
||||
/turf/open/floor/plasteel,
|
||||
/area/shuttle/pirate)
|
||||
"bH" = (
|
||||
/obj/machinery/vending/boozeomat/all_access,
|
||||
/obj/machinery/vending/boozeomat,
|
||||
/obj/effect/turf_decal/tile/bar,
|
||||
/obj/effect/turf_decal/tile/bar{
|
||||
dir = 1
|
||||
|
||||
@@ -145,7 +145,7 @@
|
||||
/turf/open/floor/plating,
|
||||
/area/shuttle/abandoned/crew)
|
||||
"ap" = (
|
||||
/obj/machinery/vending/boozeomat/all_access,
|
||||
/obj/machinery/vending/boozeomat,
|
||||
/obj/effect/decal/cleanable/dirt{
|
||||
desc = "A thin layer of dust coating the floor.";
|
||||
name = "dust"
|
||||
|
||||
+10
-7
@@ -25,35 +25,38 @@
|
||||
//SubSystem flags (Please design any new flags so that the default is off, to make adding flags to subsystems easier)
|
||||
|
||||
//subsystem does not initialize.
|
||||
#define SS_NO_INIT 1
|
||||
#define SS_NO_INIT (1<<0)
|
||||
|
||||
//subsystem does not fire.
|
||||
// (like can_fire = 0, but keeps it from getting added to the processing subsystems list)
|
||||
// (Requires a MC restart to change)
|
||||
#define SS_NO_FIRE 2
|
||||
#define SS_NO_FIRE (1<<1)
|
||||
|
||||
//subsystem only runs on spare cpu (after all non-background subsystems have ran that tick)
|
||||
// SS_BACKGROUND has its own priority bracket
|
||||
#define SS_BACKGROUND 4
|
||||
#define SS_BACKGROUND (1<<2)
|
||||
|
||||
//subsystem does not tick check, and should not run unless there is enough time (or its running behind (unless background))
|
||||
#define SS_NO_TICK_CHECK 8
|
||||
#define SS_NO_TICK_CHECK (1<<3)
|
||||
|
||||
//Treat wait as a tick count, not DS, run every wait ticks.
|
||||
// (also forces it to run first in the tick, above even SS_NO_TICK_CHECK subsystems)
|
||||
// (implies all runlevels because of how it works)
|
||||
// (overrides SS_BACKGROUND)
|
||||
// This is designed for basically anything that works as a mini-mc (like SStimer)
|
||||
#define SS_TICKER 16
|
||||
#define SS_TICKER (1<<4)
|
||||
|
||||
//keep the subsystem's timing on point by firing early if it fired late last fire because of lag
|
||||
// ie: if a 20ds subsystem fires say 5 ds late due to lag or what not, its next fire would be in 15ds, not 20ds.
|
||||
#define SS_KEEP_TIMING 32
|
||||
#define SS_KEEP_TIMING (1<<5)
|
||||
|
||||
//Calculate its next fire after its fired.
|
||||
// (IE: if a 5ds wait SS takes 2ds to run, its next fire should be 5ds away, not 3ds like it normally would be)
|
||||
// This flag overrides SS_KEEP_TIMING
|
||||
#define SS_POST_FIRE_TIMING 64
|
||||
#define SS_POST_FIRE_TIMING (1<<6)
|
||||
|
||||
/// Show in stat() by default even if SS_NO_FIRE
|
||||
#define SS_ALWAYS_SHOW_STAT (1<<7)
|
||||
|
||||
//SUBSYSTEM STATES
|
||||
#define SS_IDLE 0 //aint doing shit.
|
||||
|
||||
@@ -20,26 +20,41 @@ GLOBAL_LIST_INIT(bitflags, list(1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 204
|
||||
#define DF_ISPROCESSING (1<<2)
|
||||
|
||||
//FLAGS BITMASK
|
||||
|
||||
#define HEAR_1 (1<<3) // This flag is what recursive_hear_check() uses to determine wether to add an item to the hearer list or not.
|
||||
#define CHECK_RICOCHET_1 (1<<4) // Projectiels will check ricochet on things impacted that have this.
|
||||
#define CONDUCT_1 (1<<5) // conducts electricity (metal etc.)
|
||||
#define NODECONSTRUCT_1 (1<<7) // For machines and structures that should not break into parts, eg, holodeck stuff
|
||||
#define OVERLAY_QUEUED_1 (1<<8) // atom queued to SSoverlay
|
||||
#define ON_BORDER_1 (1<<9) // item has priority to check when entering or leaving
|
||||
#define PREVENT_CLICK_UNDER_1 (1<<11) //Prevent clicking things below it on the same turf eg. doors/ fulltile windows
|
||||
///This flag is what recursive_hear_check() uses to determine wether to add an item to the hearer list or not.
|
||||
#define HEAR_1 (1<<3)
|
||||
///Projectiels will check ricochet on things impacted that have this.
|
||||
#define CHECK_RICOCHET_1 (1<<4)
|
||||
///Conducts electricity (metal etc.).
|
||||
#define CONDUCT_1 (1<<5)
|
||||
///For machines and structures that should not break into parts, eg, holodeck stuff.
|
||||
#define NODECONSTRUCT_1 (1<<7)
|
||||
///Atom queued to SSoverlay.
|
||||
#define OVERLAY_QUEUED_1 (1<<8)
|
||||
///Item has priority to check when entering or leaving.
|
||||
#define ON_BORDER_1 (1<<9)
|
||||
///Prevent clicking things below it on the same turf eg. doors/ fulltile windows.
|
||||
#define PREVENT_CLICK_UNDER_1 (1<<11)
|
||||
#define HOLOGRAM_1 (1<<12)
|
||||
#define TESLA_IGNORE_1 (1<<13) // TESLA_IGNORE grants immunity from being targeted by tesla-style electricity
|
||||
#define INITIALIZED_1 (1<<14) //Whether /atom/Initialize() has already run for the object
|
||||
#define ADMIN_SPAWNED_1 (1<<15) //was this spawned by an admin? used for stat tracking stuff.
|
||||
#define PREVENT_CONTENTS_EXPLOSION_1 (1<<16) /// should not get harmed if this gets caught by an explosion?
|
||||
///Prevents mobs from getting chainshocked by teslas and the supermatter.
|
||||
#define SHOCKED_1 (1<<13)
|
||||
///Whether /atom/Initialize() has already run for the object.
|
||||
#define INITIALIZED_1 (1<<14)
|
||||
///was this spawned by an admin? used for stat tracking stuff.
|
||||
#define ADMIN_SPAWNED_1 (1<<15)
|
||||
/// should not get harmed if this gets caught by an explosion?
|
||||
#define PREVENT_CONTENTS_EXPLOSION_1 (1<<16)
|
||||
/// Early returns mob.face_atom()
|
||||
#define BLOCK_FACE_ATOM_1 (1<<17)
|
||||
|
||||
//turf-only flags
|
||||
#define NOJAUNT_1 (1<<0)
|
||||
#define UNUSED_RESERVATION_TURF_1 (1<<1)
|
||||
#define CAN_BE_DIRTY_1 (1<<2) // If a turf can be made dirty at roundstart. This is also used in areas.
|
||||
#define NO_LAVA_GEN_1 (1<<6) //Blocks lava rivers being generated on the turf
|
||||
#define NO_RUINS_1 (1<<10) //Blocks ruins spawning on the turf
|
||||
///If a turf can be made dirty at roundstart. This is also used in areas.
|
||||
#define CAN_BE_DIRTY_1 (1<<2)
|
||||
///Blocks lava rivers being generated on the turf.
|
||||
#define NO_LAVA_GEN_1 (1<<6)
|
||||
///Blocks ruins spawning on the turf.
|
||||
#define NO_RUINS_1 (1<<10)
|
||||
|
||||
/*
|
||||
These defines are used specifically with the atom/pass_flags bitmask
|
||||
@@ -75,14 +90,15 @@ GLOBAL_LIST_INIT(bitflags, list(1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 204
|
||||
#define GOLIATH_WEAKNESS (1<<9) //CIT CHANGE
|
||||
|
||||
//tesla_zap
|
||||
#define TESLA_MACHINE_EXPLOSIVE (1<<0)
|
||||
#define TESLA_ALLOW_DUPLICATES (1<<1)
|
||||
#define TESLA_OBJ_DAMAGE (1<<2)
|
||||
#define TESLA_MOB_DAMAGE (1<<3)
|
||||
#define TESLA_MOB_STUN (1<<4)
|
||||
#define ZAP_MACHINE_EXPLOSIVE (1<<0)
|
||||
#define ZAP_ALLOW_DUPLICATES (1<<1)
|
||||
#define ZAP_OBJ_DAMAGE (1<<2)
|
||||
#define ZAP_MOB_DAMAGE (1<<3)
|
||||
#define ZAP_MOB_STUN (1<<4)
|
||||
|
||||
#define TESLA_DEFAULT_FLAGS ALL
|
||||
#define TESLA_FUSION_FLAGS TESLA_OBJ_DAMAGE | TESLA_MOB_DAMAGE | TESLA_MOB_STUN
|
||||
#define ZAP_DEFAULT_FLAGS ALL
|
||||
#define ZAP_FUSION_FLAGS ZAP_OBJ_DAMAGE | ZAP_MOB_DAMAGE | ZAP_MOB_STUN
|
||||
#define ZAP_SUPERMATTER_FLAGS NONE
|
||||
|
||||
//EMP protection
|
||||
#define EMP_PROTECT_SELF (1<<0)
|
||||
|
||||
@@ -83,10 +83,3 @@
|
||||
|
||||
#define SPAM_TRIGGER_WARNING 5 //Number of identical messages required before the spam-prevention will warn you to stfu
|
||||
#define SPAM_TRIGGER_AUTOMUTE 10 //Number of identical messages required before the spam-prevention will automute you
|
||||
|
||||
///Max length of a keypress command before it's considered to be a forged packet/bogus command
|
||||
#define MAX_KEYPRESS_COMMANDLENGTH 16
|
||||
///Max amount of keypress messages per second over two seconds before client is autokicked
|
||||
#define MAX_KEYPRESS_AUTOKICK 100
|
||||
///Length of max held keys
|
||||
#define MAX_HELD_KEYS 15
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
// Defines for managed input/keybinding system.
|
||||
/// Max length of a keypress command before it's considered to be a forged packet/bogus command
|
||||
#define MAX_KEYPRESS_COMMANDLENGTH 16
|
||||
/// Maximum keys that can be bound to one button
|
||||
#define MAX_COMMANDS_PER_KEY 5
|
||||
/// Maximum keys per keybind
|
||||
#define MAX_KEYS_PER_KEYBIND 3
|
||||
/// Max amount of keypress messages per second over two seconds before client is autokicked
|
||||
#define MAX_KEYPRESS_AUTOKICK 100
|
||||
/// Max keys that can be held down at once by a client
|
||||
#define MAX_HELD_KEYS 15
|
||||
|
||||
/// Macroset name of hotkeys/keybind only/modern mode
|
||||
#define SKIN_MACROSET_HOTKEYS "hotkeys"
|
||||
/// Macroset name of classic hotkey mode
|
||||
#define SKIN_MACROSET_CLASSIC_HOTKEYS "oldhotkeys"
|
||||
/// Macroset name of classic input mode
|
||||
#define SKIN_MACROSET_CLASSIC_INPUT "oldinput"
|
||||
@@ -298,6 +298,8 @@ GLOBAL_LIST_INIT(atmos_adjacent_savings, list(0,0))
|
||||
|
||||
#define ARCHIVE_TEMPERATURE(gas) gas.temperature_archived = gas.temperature
|
||||
|
||||
#define ARCHIVE(gas) gas.temperature_archived = gas.temperature; gas.gas_archive = gas.gases.Copy();
|
||||
|
||||
GLOBAL_LIST_INIT(pipe_paint_colors, list(
|
||||
"amethyst" = rgb(130,43,255), //supplymain
|
||||
"blue" = rgb(0,0,255),
|
||||
|
||||
@@ -43,6 +43,7 @@
|
||||
#define COLOR_RED_GRAY "#B4696A"
|
||||
#define COLOR_PALE_BLUE_GRAY "#98C5DF"
|
||||
#define COLOR_PALE_GREEN_GRAY "#B7D993"
|
||||
#define COLOR_PALE_ORANGE "#FFC066"
|
||||
#define COLOR_PALE_RED_GRAY "#D59998"
|
||||
#define COLOR_PALE_PURPLE_GRAY "#CBB1CA"
|
||||
#define COLOR_PURPLE_GRAY "#AE8CA8"
|
||||
|
||||
@@ -35,9 +35,9 @@
|
||||
/// Default combat flags for those affected by ((stamina combat))
|
||||
#define COMBAT_FLAGS_DEFAULT NONE
|
||||
/// Default combat flags for everyone else (so literally everyone but humans)
|
||||
#define COMBAT_FLAGS_STAMSYSTEM_EXEMPT (COMBAT_FLAG_SPRINT_ACTIVE | COMBAT_FLAG_COMBAT_ACTIVE | COMBAT_FLAG_SPRINT_TOGGLED | COMBAT_FLAG_COMBAT_TOGGLED)
|
||||
#define COMBAT_FLAGS_STAMSYSTEM_EXEMPT (COMBAT_FLAG_SPRINT_ACTIVE | COMBAT_FLAG_COMBAT_ACTIVE | COMBAT_FLAG_SPRINT_TOGGLED | COMBAT_FLAG_COMBAT_TOGGLED | COMBAT_FLAG_SPRINT_FORCED | COMBAT_FLAG_COMBAT_FORCED)
|
||||
/// Default combat flags for those only affected by sprint (so just silicons)
|
||||
#define COMBAT_FLAGS_STAMEXEMPT_YESSPRINT (COMBAT_FLAG_COMBAT_ACTIVE | COMBAT_FLAG_COMBAT_TOGGLED)
|
||||
#define COMBAT_FLAGS_STAMEXEMPT_YESSPRINT (COMBAT_FLAG_COMBAT_ACTIVE | COMBAT_FLAG_COMBAT_TOGGLED | COMBAT_FLAG_COMBAT_FORCED)
|
||||
|
||||
/// The user wants combat mode on
|
||||
#define COMBAT_FLAG_COMBAT_TOGGLED (1<<0)
|
||||
@@ -57,6 +57,10 @@
|
||||
#define COMBAT_FLAG_INTENTIONALLY_RESTING (1<<7)
|
||||
/// Currently stamcritted but not as violently
|
||||
#define COMBAT_FLAG_SOFT_STAMCRIT (1<<8)
|
||||
/// Force combat mode on at all times, overrides everything including combat disable traits.
|
||||
#define COMBAT_FLAG_COMBAT_FORCED (1<<9)
|
||||
/// Force sprint mode on at all times, overrides everything including sprint disable traits.
|
||||
#define COMBAT_FLAG_SPRINT_FORCED (1<<10)
|
||||
|
||||
// Helpers for getting someone's stamcrit state. Cast to living.
|
||||
#define NOT_STAMCRIT 0
|
||||
@@ -248,6 +252,15 @@ GLOBAL_LIST_INIT(shove_disarming_types, typecacheof(list(
|
||||
#define TOTAL_MASS_MEDIEVAL_WEAPON 3.6 //very, very generic average sword/warpick/etc. weight in pounds.
|
||||
#define TOTAL_MASS_TOY_SWORD 1.5
|
||||
|
||||
//stamina cost defines.
|
||||
#define STAM_COST_ATTACK_OBJ_MULT 1.2
|
||||
#define STAM_COST_ATTACK_MOB_MULT 0.8
|
||||
#define STAM_COST_BATON_MOB_MULT 1
|
||||
#define STAM_COST_NO_COMBAT_MULT 1.25
|
||||
#define STAM_COST_W_CLASS_MULT 1.25
|
||||
#define STAM_COST_THROW_MULT 2
|
||||
|
||||
|
||||
//bullet_act() return values
|
||||
#define BULLET_ACT_HIT "HIT" //It's a successful hit, whatever that means in the context of the thing it's hitting.
|
||||
#define BULLET_ACT_BLOCK "BLOCK" //It's a blocked hit, whatever that means in the context of the thing it's hitting.
|
||||
|
||||
@@ -1,3 +1,13 @@
|
||||
/// Check whether or not we can block, without "triggering" a block. Basically run checks without effects like depleting shields.
|
||||
/// Wrapper for do_run_block(). The arguments on that means the same as for this.
|
||||
#define mob_check_block(object, damage, attack_text, attack_type, armour_penetration, attacker, def_zone, return_list)\
|
||||
do_run_block(FALSE, object, damage, attack_text, attack_type, armour_penetration, attacker, check_zone(def_zone), return_list)
|
||||
|
||||
/// Runs a block "sequence", effectively checking and then doing effects if necessary.
|
||||
/// Wrapper for do_run_block(). The arguments on that means the same as for this.
|
||||
#define mob_run_block(object, damage, attack_text, attack_type, armour_penetration, attacker, def_zone, return_list)\
|
||||
do_run_block(TRUE, object, damage, attack_text, attack_type, armour_penetration, attacker, check_zone(def_zone), return_list)
|
||||
|
||||
// Don't ask why there's block_parry.dm and this. This is for the run_block() system, which is the "parent" system of the directional block and parry systems.
|
||||
|
||||
/// Bitflags for check_block() and handle_block(). Meant to be combined. You can be hit and still reflect, for example, if you do not use BLOCK_SUCCESS.
|
||||
|
||||
@@ -103,4 +103,9 @@
|
||||
#define RCD_COMPUTER 16
|
||||
|
||||
#define RCD_UPGRADE_FRAMES 1
|
||||
#define RCD_UPGRADE_SIMPLE_CIRCUITS 2
|
||||
#define RCD_UPGRADE_SIMPLE_CIRCUITS 2
|
||||
|
||||
//Electrochromatic window defines.
|
||||
#define NOT_ELECTROCHROMATIC 0
|
||||
#define ELECTROCHROMATIC_OFF 1
|
||||
#define ELECTROCHROMATIC_DIMMED 2
|
||||
|
||||
@@ -89,7 +89,7 @@
|
||||
#define COMSIG_EXIT_AREA "exit_area" //from base of area/Exited(): (/area)
|
||||
|
||||
#define COMSIG_CLICK "atom_click" //from base of atom/Click(): (location, control, params, mob/user)
|
||||
#define COMSIG_CLICK_SHIFT "shift_click" //from base of atom/ShiftClick(): (/mob)
|
||||
#define COMSIG_CLICK_SHIFT "shift_click" //from base of atom/ShiftClick(): (/mob), return flags also used by other signals.
|
||||
#define COMPONENT_ALLOW_EXAMINATE 1
|
||||
#define COMPONENT_DENY_EXAMINATE 2 //Higher priority compared to the above one
|
||||
|
||||
@@ -141,13 +141,17 @@
|
||||
#define HEARING_SOURCE 8*/
|
||||
#define COMSIG_MOVABLE_DISPOSING "movable_disposing" //called when the movable is added to a disposal holder object for disposal movement: (obj/structure/disposalholder/holder, obj/machinery/disposal/source)
|
||||
#define COMSIG_MOVABLE_TELEPORTED "movable_teleported" //from base of do_teleport(): (channel, turf/origin, turf/destination)
|
||||
|
||||
// /mind signals
|
||||
#define COMSIG_PRE_MIND_TRANSFER "pre_mind_transfer" //from base of mind/transfer_to() before it's done: (new_character, old_character)
|
||||
#define COMPONENT_STOP_MIND_TRANSFER 1 //stops the mind transfer from happening.
|
||||
#define COMSIG_MIND_TRANSFER "mind_transfer" //from base of mind/transfer_to() when it's done: (new_character, old_character)
|
||||
|
||||
// /mob signals
|
||||
#define COMSIG_MOB_EXAMINATE "mob_examinate" //from base of /mob/verb/examinate(): (atom/A)
|
||||
#define COMSIG_MOB_CLICKED_SHIFT_ON "mob_shift_click_on" //from base of /atom/ShiftClick(): (atom/A), for return values, see COMSIG_CLICK_SHIFT
|
||||
#define COMSIG_MOB_FOV_VIEW "mob_visible_atoms" //from base of mob/fov_view(): (list/visible_atoms)
|
||||
#define COMSIG_MOB_EXAMINATE "mob_examinate" //from base of /mob/verb/examinate(): (atom/A), for return values, see COMSIG_CLICK_SHIFT
|
||||
#define COMPONENT_EXAMINATE_BLIND 3 //outputs the "something is there but you can't see it" message.
|
||||
#define COMSIG_MOB_DEATH "mob_death" //from base of mob/death(): (gibbed)
|
||||
#define COMPONENT_BLOCK_DEATH_BROADCAST 1 //stops the death from being broadcasted in deadchat.
|
||||
#define COMSIG_MOB_CLICKON "mob_clickon" //from base of mob/clickon(): (atom/A, params)
|
||||
@@ -181,9 +185,14 @@
|
||||
#define SPEECH_LANGUAGE 5
|
||||
// #define SPEECH_IGNORE_SPAM 6
|
||||
// #define SPEECH_FORCED 7
|
||||
#define COMSIG_MOB_FOV_VIEWER "mob_is_viewer" //from base of /fov_viewers(): (atom/center, depth, viewers_list)
|
||||
#define COMSIG_MOB_GET_VISIBLE_MESSAGE "mob_get_visible_message" //from base of atom/visible_message(): (atom/A, msg, range, ignored_mobs)
|
||||
#define COMPONENT_NO_VISIBLE_MESSAGE 1 //exactly what's said on the tin.
|
||||
#define COMSIG_MOB_ANTAG_ON_GAIN "mob_antag_on_gain" //from base of /datum/antagonist/on_gain(): (antag_datum)
|
||||
|
||||
#define COMSIG_MOB_SPELL_CAN_CAST "mob_spell_can_cast" //called from base of /obj/effect/proc_holder/spell/can_cast(): (spell)
|
||||
#define COMSIG_MOB_SPELL_CAN_CAST "mob_spell_can_cast" //from base of /obj/effect/proc_holder/spell/can_cast(): (spell)
|
||||
|
||||
#define COMSIG_ROBOT_UPDATE_ICONS "robot_update_icons" //from base of robot/update_icons(): ()
|
||||
|
||||
// /mob/living signals
|
||||
#define COMSIG_LIVING_REGENERATE_LIMBS "living_regenerate_limbs" //from base of /mob/living/regenerate_limbs(): (noheal, excluded_limbs)
|
||||
@@ -191,11 +200,16 @@
|
||||
#define COMSIG_LIVING_IGNITED "living_ignite" //from base of mob/living/IgniteMob() (/mob/living)
|
||||
#define COMSIG_LIVING_EXTINGUISHED "living_extinguished" //from base of mob/living/ExtinguishMob() (/mob/living)
|
||||
#define COMSIG_LIVING_ELECTROCUTE_ACT "living_electrocute_act" //from base of mob/living/electrocute_act(): (shock_damage, source, siemens_coeff, flags)
|
||||
#define COMSIG_LIVING_SHOCK_PREVENTED "living_shock_prevented" //sent when items with siemen coeff. of 0 block a shock: (power_source, source, siemens_coeff, dist_check)
|
||||
#define COMSIG_LIVING_MINOR_SHOCK "living_minor_shock" //sent by stuff like stunbatons and tasers: ()
|
||||
#define COMSIG_LIVING_REVIVE "living_revive" //from base of mob/living/revive() (full_heal, admin_revive)
|
||||
#define COMSIG_MOB_CLIENT_LOGIN "comsig_mob_client_login" //sent when a mob/login() finishes: (client)
|
||||
#define COMSIG_MOB_CLIENT_LOGOUT "comsig_mob_client_logout" //sent when a mob/logout() starts: (client)
|
||||
#define COMSIG_MOB_CLIENT_MOVE "comsig_mob_client_move" //sent when client/Move() finishes with no early returns: (client, direction, n, oldloc)
|
||||
|
||||
#define COMSIG_MOB_CLIENT_LOGIN "mob_client_login" //sent when a mob/login() finishes: (client)
|
||||
#define COMSIG_MOB_CLIENT_LOGOUT "mob_client_logout" //sent when a mob/logout() starts: (client)
|
||||
#define COMSIG_MOB_CLIENT_MOVE "mob_client_move" //sent when client/Move() finishes with no early returns: (client, direction, n, oldloc)
|
||||
#define COMSIG_MOB_CLIENT_CHANGE_VIEW "mob_client_change_view" //from base of /client/change_view(): (client, old_view, view)
|
||||
|
||||
#define COMSIG_MOB_RESET_PERSPECTIVE "mob_reset_perspective" //from base of /mob/reset_perspective(): (atom/target)
|
||||
#define COMSIG_LIVING_GUN_PROCESS_FIRE "living_gun_process_fire" //from base of /obj/item/gun/proc/process_fire(): (atom/target, params, zone_override)
|
||||
// This returns flags as defined for block in __DEFINES/combat.dm!
|
||||
#define COMSIG_LIVING_RUN_BLOCK "living_do_run_block" //from base of mob/living/do_run_block(): (real_attack, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone)
|
||||
@@ -256,6 +270,9 @@
|
||||
// THE FOLLOWING TWO BLOCKS SHOULD RETURN BLOCK FLAGS AS DEFINED IN __DEFINES/combat.dm!
|
||||
#define COMSIG_ITEM_CHECK_BLOCK "check_block" //from base of obj/item/check_block(): (mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return)
|
||||
#define COMSIG_ITEM_RUN_BLOCK "run_block" //from base of obj/item/run_block(): (mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return)
|
||||
// Item mouse siganls
|
||||
#define COMSIG_ITEM_MOUSE_EXIT "item_mouse_exit" //from base of obj/item/MouseExited(): (location, control, params)
|
||||
#define COMSIG_ITEM_MOUSE_ENTER "item_mouse_enter" //from base of obj/item/MouseEntered(): (location, control, params)
|
||||
#define COMSIG_ITEM_DECONSTRUCTOR_DEEPSCAN "deconstructor_deepscan" //Called by deconstructive analyzers deepscanning an item: (obj/machinery/rnd/destructive_analyzer/analyzer_machine, mob/user, list/information_list)
|
||||
// Uncovered information
|
||||
#define COMPONENT_DEEPSCAN_UNCOVERED_INFORMATION 1
|
||||
@@ -302,6 +319,9 @@
|
||||
#define COMSIG_SPECIES_GAIN "species_gain" //from datum/species/on_species_gain(): (datum/species/new_species, datum/species/old_species)
|
||||
#define COMSIG_SPECIES_LOSS "species_loss" //from datum/species/on_species_loss(): (datum/species/lost_species)
|
||||
|
||||
// /datum/mutation signals
|
||||
#define COMSIG_HUMAN_MUTATION_LOSS "human_mutation_loss" //from datum/mutation/human/on_losing(): (datum/mutation/human/lost_mutation)
|
||||
|
||||
/*******Component Specific Signals*******/
|
||||
//Janitor
|
||||
#define COMSIG_TURF_IS_WET "check_turf_wet" //(): Returns bitflags of wet values.
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
#define STARTING_PAYCHECKS 5
|
||||
|
||||
#define PAYCHECK_ASSISTANT 25
|
||||
#define PAYCHECK_MINIMAL 75
|
||||
#define PAYCHECK_EASY 125
|
||||
#define PAYCHECK_MEDIUM 175
|
||||
#define PAYCHECK_HARD 200
|
||||
#define PAYCHECK_COMMAND 250
|
||||
|
||||
#define MAX_GRANT_CIV 2500
|
||||
#define MAX_GRANT_ENG 3000
|
||||
#define MAX_GRANT_SCI 5000
|
||||
#define MAX_GRANT_SECMEDSRV 3000
|
||||
|
||||
#define ACCOUNT_CIV "CIV"
|
||||
#define ACCOUNT_CIV_NAME "Civil Budget"
|
||||
#define ACCOUNT_ENG "ENG"
|
||||
#define ACCOUNT_ENG_NAME "Engineering Budget"
|
||||
#define ACCOUNT_SCI "SCI"
|
||||
#define ACCOUNT_SCI_NAME "Scientific Budget"
|
||||
#define ACCOUNT_MED "MED"
|
||||
#define ACCOUNT_MED_NAME "Medical Budget"
|
||||
#define ACCOUNT_SRV "SRV"
|
||||
#define ACCOUNT_SRV_NAME "Service Budget"
|
||||
#define ACCOUNT_CAR "CAR"
|
||||
#define ACCOUNT_CAR_NAME "Cargo Budget"
|
||||
#define ACCOUNT_SEC "SEC"
|
||||
#define ACCOUNT_SEC_NAME "Defense Budget"
|
||||
|
||||
#define NO_FREEBIES "commies go home"
|
||||
|
||||
//ID bank account support defines.
|
||||
#define ID_NO_BANK_ACCOUNT 0
|
||||
#define ID_FREE_BANK_ACCOUNT 1
|
||||
#define ID_LOCKED_BANK_ACCOUNT 2
|
||||
@@ -24,6 +24,15 @@
|
||||
#define FOOTPRINT_SNAKE "snake"
|
||||
#define FOOTPRINT_DRAG "drag"
|
||||
|
||||
//footstep mob defines
|
||||
#define FOOTSTEP_MOB_CLAW 1
|
||||
#define FOOTSTEP_MOB_BAREFOOT 2
|
||||
#define FOOTSTEP_MOB_HEAVY 3
|
||||
#define FOOTSTEP_MOB_SHOE 4
|
||||
#define FOOTSTEP_MOB_HUMAN 5 //Warning: Only works on /mob/living/carbon/human
|
||||
#define FOOTSTEP_MOB_SLIME 6
|
||||
#define FOOTSTEP_MOB_CRAWL 7
|
||||
|
||||
/*
|
||||
|
||||
id = list(
|
||||
|
||||
@@ -148,50 +148,6 @@ GLOBAL_LIST_INIT(turfs_without_ground, typecacheof(list(
|
||||
|
||||
#define isclown(A) (istype(A, /mob/living/simple_animal/hostile/retaliate/clown))
|
||||
|
||||
GLOBAL_LIST_INIT(shoefootmob, typecacheof(list(
|
||||
/mob/living/carbon/human/,
|
||||
/mob/living/simple_animal/cow,
|
||||
/mob/living/simple_animal/hostile/cat_butcherer,
|
||||
/mob/living/simple_animal/hostile/faithless,
|
||||
/mob/living/simple_animal/hostile/nanotrasen,
|
||||
/mob/living/simple_animal/hostile/pirate,
|
||||
/mob/living/simple_animal/hostile/russian,
|
||||
/mob/living/simple_animal/hostile/syndicate,
|
||||
/mob/living/simple_animal/hostile/wizard,
|
||||
/mob/living/simple_animal/hostile/zombie,
|
||||
/mob/living/simple_animal/hostile/retaliate/clown,
|
||||
/mob/living/simple_animal/hostile/retaliate/spaceman,
|
||||
/mob/living/simple_animal/hostile/retaliate/nanotrasenpeace,
|
||||
/mob/living/simple_animal/hostile/retaliate/goat,
|
||||
/mob/living/carbon/true_devil,
|
||||
)))
|
||||
|
||||
GLOBAL_LIST_INIT(clawfootmob, typecacheof(list(
|
||||
/mob/living/carbon/alien/humanoid,
|
||||
/mob/living/simple_animal/hostile/alien,
|
||||
/mob/living/simple_animal/pet/cat,
|
||||
/mob/living/simple_animal/pet/dog,
|
||||
/mob/living/simple_animal/pet/fox,
|
||||
/mob/living/simple_animal/chicken,
|
||||
/mob/living/simple_animal/hostile/bear,
|
||||
/mob/living/simple_animal/hostile/jungle/mega_arachnid,
|
||||
/mob/living/simple_animal/hostile/asteroid/ice_whelp,
|
||||
/mob/living/simple_animal/hostile/asteroid/wolf,
|
||||
/mob/living/simple_animal/hostile/asteroid/polarbear
|
||||
)))
|
||||
|
||||
GLOBAL_LIST_INIT(barefootmob, typecacheof(list(
|
||||
/mob/living/carbon/monkey,
|
||||
/mob/living/simple_animal/pet/penguin,
|
||||
/mob/living/simple_animal/hostile/gorilla,
|
||||
/mob/living/simple_animal/hostile/jungle/mook
|
||||
)))
|
||||
|
||||
GLOBAL_LIST_INIT(heavyfootmob, typecacheof(list(
|
||||
/mob/living/simple_animal/hostile/megafauna,
|
||||
/mob/living/simple_animal/hostile/jungle/leaper
|
||||
)))
|
||||
|
||||
//Misc mobs
|
||||
#define isobserver(A) (istype(A, /mob/dead/observer))
|
||||
|
||||
|
||||
@@ -3,5 +3,24 @@
|
||||
#define LANGUAGE_HIDE_ICON_IF_UNDERSTOOD 4
|
||||
#define LANGUAGE_HIDE_ICON_IF_NOT_UNDERSTOOD 8
|
||||
|
||||
#define LANGUAGE_KNOWN "language_known"
|
||||
#define LANGUAGE_SHADOWED "language_shadowed"
|
||||
// LANGUAGE SOURCE DEFINES
|
||||
#define LANGUAGE_ALL "all" // For use in full removal only.
|
||||
#define LANGUAGE_ATOM "atom"
|
||||
#define LANGUAGE_MIND "mind"
|
||||
|
||||
#define LANGUAGE_ABSORB "absorb"
|
||||
#define LANGUAGE_APHASIA "aphasia"
|
||||
#define LANGUAGE_BLOODSUCKER "bloodsucker"
|
||||
#define LANGUAGE_CLOCKIE "clockie"
|
||||
#define LANGUAGE_CULTIST "cultist"
|
||||
#define LANGUAGE_CURATOR "curator"
|
||||
#define LANGUAGE_DEVIL "devil"
|
||||
#define LANGUAGE_GLAND "gland"
|
||||
#define LANGUAGE_HAT "hat"
|
||||
#define LANGUAGE_HIGH "high"
|
||||
#define LANGUAGE_MALF "malf"
|
||||
#define LANGUAGE_MASTER "master"
|
||||
#define LANGUAGE_SOFTWARE "software"
|
||||
#define LANGUAGE_STONER "stoner"
|
||||
#define LANGUAGE_VASSAL "vassal"
|
||||
#define LANGUAGE_VOICECHANGE "voicechange"
|
||||
|
||||
@@ -11,16 +11,38 @@
|
||||
#define PLANE_SPACE_PARALLAX_RENDER_TARGET "PLANE_SPACE_PARALLAX"
|
||||
|
||||
#define OPENSPACE_LAYER 17 //Openspace layer over all
|
||||
#define OPENSPACE_PLANE -4 //Openspace plane below all turfs
|
||||
#define OPENSPACE_BACKDROP_PLANE -3 //Black square just over openspace plane to guaranteed cover all in openspace turf
|
||||
#define OPENSPACE_PLANE -10 //Openspace plane below all turfs
|
||||
#define OPENSPACE_BACKDROP_PLANE -9 //Black square just over openspace plane to guaranteed cover all in openspace turf
|
||||
|
||||
#define FLOOR_PLANE -2
|
||||
#define FLOOR_PLANE -8
|
||||
#define FLOOR_PLANE_RENDER_TARGET "FLOOR_PLANE"
|
||||
#define GAME_PLANE -1
|
||||
|
||||
#define WALL_PLANE -7
|
||||
#define WALL_PLANE_RENDER_TARGET "WALL_PLANE"
|
||||
|
||||
#define ABOVE_WALL_PLANE -6
|
||||
#define ABOVE_WALL_PLANE_RENDER_TARGET "ABOVE_WALL_PLANE"
|
||||
|
||||
#define FIELD_OF_VISION_BLOCKER_PLANE -5
|
||||
#define FIELD_OF_VISION_BLOCKER_RENDER_TARGET "*FIELD_OF_VISION_BLOCKER_PLANE"
|
||||
|
||||
#define FIELD_OF_VISION_PLANE -4
|
||||
#define FIELD_OF_VISION_RENDER_TARGET "*FIELD_OF_VISION_PLANE"
|
||||
#define FIELD_OF_VISION_LAYER 17 //used to place the visual (not the mask) shadow cone above any other floor plane stuff.
|
||||
|
||||
#define GAME_PLANE -3
|
||||
#define GAME_PLANE_RENDER_TARGET "GAME_PLANE"
|
||||
|
||||
#define FIELD_OF_VISION_VISUAL_PLANE -2 //Yea, FoV does require quite a few planes to work with 513 filters to a decent degree.
|
||||
#define FIELD_OF_VISION_VISUAL_RENDER_TARGET "FIELD_OF_VISION_VISUAL_PLANE"
|
||||
|
||||
#define CHAT_PLANE -1 //We don't want heard messages to be hidden by FoV.
|
||||
#define CHAT_LAYER 12.1 //Legacy, it doesn't matter that much because we are displayed above the game plane anyway.
|
||||
|
||||
#define BLACKNESS_PLANE 0 //To keep from conflicts with SEE_BLACKNESS internals
|
||||
#define BLACKNESS_PLANE_RENDER_TARGET "BLACKNESS_PLANE"
|
||||
|
||||
///Layers most often used by atoms of plane lower than GAME_PLANE
|
||||
#define SPACE_LAYER 1.8
|
||||
//#define TURF_LAYER 2 //For easy recordkeeping; this is a byond define
|
||||
#define MID_TURF_LAYER 2.02
|
||||
@@ -40,11 +62,12 @@
|
||||
#define GAS_PIPE_VISIBLE_LAYER 2.47
|
||||
#define GAS_FILTER_LAYER 2.48
|
||||
#define GAS_PUMP_LAYER 2.49
|
||||
|
||||
#define LOW_OBJ_LAYER 2.5
|
||||
#define LOW_SIGIL_LAYER 2.52
|
||||
#define SIGIL_LAYER 2.54
|
||||
#define HIGH_SIGIL_LAYER 2.56
|
||||
|
||||
///Layers most often used by atoms of plane equal or higher than GAME_PLANE
|
||||
#define BELOW_OPEN_DOOR_LAYER 2.6
|
||||
#define BLASTDOOR_LAYER 2.65
|
||||
#define OPEN_DOOR_LAYER 2.7
|
||||
@@ -80,8 +103,9 @@
|
||||
#define SPACEVINE_LAYER 4.8
|
||||
#define SPACEVINE_MOB_LAYER 4.9
|
||||
//#define FLY_LAYER 5 //For easy recordkeeping; this is a byond define
|
||||
#define GASFIRE_LAYER 5.05
|
||||
#define RIPPLE_LAYER 5.1
|
||||
#define ABOVE_FLY_LAYER 5.1
|
||||
#define GASFIRE_LAYER 5.2
|
||||
#define RIPPLE_LAYER 5.3
|
||||
|
||||
#define GHOST_LAYER 6
|
||||
#define LOW_LANDMARK_LAYER 9
|
||||
@@ -91,8 +115,6 @@
|
||||
#define MASSIVE_OBJ_LAYER 11
|
||||
#define POINT_LAYER 12
|
||||
|
||||
#define CHAT_LAYER 12.1
|
||||
|
||||
#define EMISSIVE_BLOCKER_PLANE 12
|
||||
#define EMISSIVE_BLOCKER_LAYER 12
|
||||
#define EMISSIVE_BLOCKER_RENDER_TARGET "*EMISSIVE_BLOCKER_PLANE"
|
||||
@@ -136,19 +158,20 @@
|
||||
#define HUD_LAYER 21
|
||||
#define HUD_RENDER_TARGET "HUD_PLANE"
|
||||
|
||||
#define VOLUMETRIC_STORAGE_BOX_PLANE 23
|
||||
#define VOLUMETRIC_STORAGE_BOX_LAYER 23
|
||||
#define VOLUMETRIC_STORAGE_BOX_PLANE 22
|
||||
#define VOLUMETRIC_STORAGE_BOX_LAYER 22
|
||||
#define VOLUMETRIC_STORAGE_BOX_RENDER_TARGET "VOLUME_STORAGE_BOX_PLANE"
|
||||
|
||||
#define VOLUMETRIC_STORAGE_ITEM_PLANE 24
|
||||
#define VOLUMETRIC_STORAGE_ITEM_LAYER 24
|
||||
#define VOLUMETRIC_STORAGE_ITEM_PLANE 23
|
||||
#define VOLUMETRIC_STORAGE_ITEM_LAYER 23
|
||||
#define VOLUMETRIC_STORAGE_ACTIVE_ITEM_LAYER 25
|
||||
#define VOLUMETRIC_STORAGE_ACTIVE_ITEM_PLANE 25
|
||||
#define VOLUMETRIC_STORAGE_ITEM_RENDER_TARGET "VOLUME_STORAGE_ITEM_PLANE"
|
||||
|
||||
#define ABOVE_HUD_PLANE 25
|
||||
#define ABOVE_HUD_LAYER 25
|
||||
#define ABOVE_HUD_PLANE 30
|
||||
#define ABOVE_HUD_LAYER 30
|
||||
#define ABOVE_HUD_RENDER_TARGET "ABOVE_HUD_PLANE"
|
||||
|
||||
#define SPLASHSCREEN_LAYER 30
|
||||
#define SPLASHSCREEN_PLANE 30
|
||||
#define SPLASHSCREEN_LAYER 90
|
||||
#define SPLASHSCREEN_PLANE 90
|
||||
#define SPLASHSCREEN_RENDER_TARGET "SPLASHSCREEN_PLANE"
|
||||
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
#define INVESTIGATE_CIRCUIT "circuit"
|
||||
#define INVESTIGATE_FERMICHEM "fermichem"
|
||||
#define INVESTIGATE_RCD "rcd"
|
||||
#define INVESTIGATE_CRYOGENICS "cryogenics"
|
||||
|
||||
// Logging types for log_message()
|
||||
#define LOG_ATTACK (1 << 0)
|
||||
|
||||
@@ -41,6 +41,7 @@ require only minor tweaks.
|
||||
#define ZTRAIT_ICE_RUINS "Ice Ruins"
|
||||
#define ZTRAIT_ICE_RUINS_UNDERGROUND "Ice Ruins Underground"
|
||||
#define ZTRAIT_ISOLATED_RUINS "Isolated Ruins" //Placing ruins on z levels with this trait will use turf reservation instead of usual placement.
|
||||
#define ZTRAIT_VIRTUAL_REALITY "Virtual Reality"
|
||||
|
||||
//boolean - weather types that occur on the level
|
||||
#define ZTRAIT_SNOWSTORM "Weather_Snowstorm"
|
||||
@@ -80,6 +81,7 @@ require only minor tweaks.
|
||||
ZTRAIT_BOMBCAP_MULTIPLIER = 5, \
|
||||
ZTRAIT_BASETURF = /turf/open/lava/smooth/lava_land_surface)
|
||||
#define ZTRAITS_REEBE list(ZTRAIT_REEBE = TRUE, ZTRAIT_BOMBCAP_MULTIPLIER = 0.5)
|
||||
#define ZTRAITS_VR list(ZTRAIT_VIRTUAL_REALITY = TRUE, ZTRAIT_AWAY = TRUE)
|
||||
|
||||
#define DL_NAME "name"
|
||||
#define DL_TRAITS "traits"
|
||||
|
||||
@@ -209,3 +209,5 @@
|
||||
|
||||
/// Make sure something is a boolean TRUE/FALSE 1/0 value, since things like bitfield & bitflag doesn't always give 1s and 0s.
|
||||
#define FORCE_BOOLEAN(x) ((x)? TRUE : FALSE)
|
||||
|
||||
#define TILES_TO_PIXELS(tiles) (tiles * PIXELS)
|
||||
|
||||
@@ -9,6 +9,9 @@
|
||||
#define TEXT_EAST "[EAST]"
|
||||
#define TEXT_WEST "[WEST]"
|
||||
|
||||
/// world.icon_size
|
||||
#define PIXELS 32
|
||||
|
||||
//These get to go at the top, because they're special
|
||||
//You can use these defines to get the typepath of the currently running proc/verb (yes procs + verbs are objects)
|
||||
/* eg:
|
||||
@@ -463,7 +466,7 @@ GLOBAL_LIST_INIT(pda_reskins, list(PDA_SKIN_CLASSIC = 'icons/obj/pda.dmi', PDA_S
|
||||
#define PDAIMG(what) {"<span class="pda16x16 [#what]"></span>"}
|
||||
|
||||
//Filters
|
||||
#define AMBIENT_OCCLUSION list("type"="drop_shadow","x"=0,"y"=-2,"size"=4,"color"="#04080FAA")
|
||||
#define AMBIENT_OCCLUSION(_size, _color) list("type"="drop_shadow","x"=0,"y"=-2,"size"=_size,"color"=_color)
|
||||
#define EYE_BLUR(size) list("type"="blur", "size"=size)
|
||||
#define GRAVITY_MOTION_BLUR list("type"="motion_blur","x"=0,"y"=0)
|
||||
|
||||
|
||||
@@ -138,6 +138,7 @@
|
||||
#define MOOD_LEVEL_SAD4 -25
|
||||
|
||||
//Sanity levels for humans
|
||||
#define SANITY_AMAZING 150
|
||||
#define SANITY_GREAT 125
|
||||
#define SANITY_NEUTRAL 100
|
||||
#define SANITY_DISTURBED 75
|
||||
@@ -289,8 +290,15 @@
|
||||
|
||||
#define HUMAN_FIRE_STACK_ICON_NUM 3
|
||||
|
||||
#define TYPING_INDICATOR_TIMEOUT 5 MINUTES
|
||||
|
||||
#define GRAB_PIXEL_SHIFT_PASSIVE 6
|
||||
#define GRAB_PIXEL_SHIFT_AGGRESSIVE 12
|
||||
#define GRAB_PIXEL_SHIFT_NECK 16
|
||||
|
||||
#define SLEEP_CHECK_DEATH(X) sleep(X); if(QDELETED(src) || stat == DEAD) return;
|
||||
|
||||
/// Field of vision defines.
|
||||
#define FOV_90_DEGREES 90
|
||||
#define FOV_180_DEGREES 180
|
||||
#define FOV_270_DEGREES 270
|
||||
|
||||
@@ -30,8 +30,9 @@
|
||||
#define CHAT_GHOSTPDA (1<<8)
|
||||
#define CHAT_GHOSTRADIO (1<<9)
|
||||
#define CHAT_LOOC (1<<10)
|
||||
#define CHAT_BANKCARD (1<<11)
|
||||
|
||||
#define TOGGLES_DEFAULT_CHAT (CHAT_OOC|CHAT_DEAD|CHAT_GHOSTEARS|CHAT_GHOSTSIGHT|CHAT_PRAYER|CHAT_RADIO|CHAT_PULLR|CHAT_GHOSTWHISPER|CHAT_GHOSTPDA|CHAT_GHOSTRADIO|CHAT_LOOC)
|
||||
#define TOGGLES_DEFAULT_CHAT (CHAT_OOC|CHAT_DEAD|CHAT_GHOSTEARS|CHAT_GHOSTSIGHT|CHAT_PRAYER|CHAT_RADIO|CHAT_PULLR|CHAT_GHOSTWHISPER|CHAT_GHOSTPDA|CHAT_GHOSTRADIO|CHAT_LOOC|CHAT_BANKCARD)
|
||||
|
||||
#define PARALLAX_INSANE -1 //for show offs
|
||||
#define PARALLAX_HIGH 0 //default.
|
||||
|
||||
@@ -26,4 +26,4 @@
|
||||
|
||||
#define PROFILE_ITEM_LEN 2
|
||||
#define PROFILE_ITEM_TIME 1
|
||||
#define PROFILE_ITEM_COUNT 2
|
||||
#define PROFILE_ITEM_COUNT 2
|
||||
|
||||
@@ -51,6 +51,19 @@
|
||||
#define ASSEMBLY_FOURTH_STEP 3
|
||||
#define ASSEMBLY_FIFTH_STEP 4
|
||||
|
||||
//Bot Upgrade defines
|
||||
#define UPGRADE_CLEANER_ADVANCED_MOP (1<<0)
|
||||
#define UPGRADE_CLEANER_BROOM (1<<1)
|
||||
|
||||
#define UPGRADE_MEDICAL_HYPOSPRAY (1<<0)
|
||||
#define UPGRADE_MEDICAL_CHEM_BOARD (1<<1)
|
||||
#define UPGRADE_MEDICAL_CRYO_BOARD (1<<2)
|
||||
#define UPGRADE_MEDICAL_CHEM_MASTER (1<<3)
|
||||
#define UPGRADE_MEDICAL_SLEEP_BOARD (1<<4)
|
||||
#define UPGRADE_MEDICAL_PIERERCING (1<<5)
|
||||
|
||||
#define UPGRADE_FLOOR_ARTBOX (1<<0)
|
||||
#define UPGRADE_FLOOR_SYNDIBOX (1<<1)
|
||||
|
||||
//Checks to determine borg availability depending on the server's config. These are defines in the interest of reducing copypasta
|
||||
#define BORG_SEC_AVAILABLE (!CONFIG_GET(flag/disable_secborg) && GLOB.security_level >= CONFIG_GET(number/minimum_secborg_alert))
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
#define RUSTG_OVERRIDE_BUILTINS
|
||||
@@ -1,10 +1,27 @@
|
||||
// rust_g.dm - DM API for rust_g extension library
|
||||
#define RUST_G "rust_g"
|
||||
|
||||
#define RUSTG_JOB_NO_RESULTS_YET "NO RESULTS YET"
|
||||
#define RUSTG_JOB_NO_SUCH_JOB "NO SUCH JOB"
|
||||
#define RUSTG_JOB_ERROR "JOB PANICKED"
|
||||
|
||||
#define rustg_dmi_strip_metadata(fname) call(RUST_G, "dmi_strip_metadata")(fname)
|
||||
#define rustg_dmi_create_png(fname,width,height,data) call(RUST_G, "dmi_create_png")(fname,width,height,data)
|
||||
|
||||
#define rustg_git_revparse(rev) call(RUST_G, "rg_git_revparse")(rev)
|
||||
#define rustg_git_commit_date(rev) call(RUST_G, "rg_git_commit_date")(rev)
|
||||
|
||||
#define rustg_log_write(fname, text) call(RUST_G, "log_write")(fname, text)
|
||||
#define rustg_log_write(fname, text, format) call(RUST_G, "log_write")(fname, text, format)
|
||||
/proc/rustg_log_close_all() return call(RUST_G, "log_close_all")()
|
||||
|
||||
// RUST-G defines & procs for HTTP component
|
||||
#define RUSTG_HTTP_METHOD_GET "get"
|
||||
#define RUSTG_HTTP_METHOD_POST "post"
|
||||
#define RUSTG_HTTP_METHOD_PUT "put"
|
||||
#define RUSTG_HTTP_METHOD_DELETE "delete"
|
||||
#define RUSTG_HTTP_METHOD_PATCH "patch"
|
||||
#define RUSTG_HTTP_METHOD_HEAD "head"
|
||||
|
||||
#define rustg_http_request_blocking(method, url, body, headers) call(RUST_G, "http_request_blocking")(method, url, body, headers)
|
||||
#define rustg_http_request_async(method, url, body, headers) call(RUST_G, "http_request_async")(method, url, body, headers)
|
||||
#define rustg_http_check_request(req_id) call(RUST_G, "http_check_request")(req_id)
|
||||
|
||||
@@ -0,0 +1,103 @@
|
||||
|
||||
/// true/false
|
||||
#define SKILL_PROGRESSION_BINARY 1
|
||||
/// numerical
|
||||
#define SKILL_PROGRESSION_NUMERICAL 2
|
||||
/// Enum
|
||||
#define SKILL_PROGRESSION_ENUM 3
|
||||
/// Levels
|
||||
#define SKILL_PROGRESSION_LEVEL 4
|
||||
|
||||
|
||||
/// Max value of skill for numerical skills
|
||||
#define SKILL_NUMERICAL_MAX 100
|
||||
/// Min value of skill for numerical skills
|
||||
#define SKILL_NUMERICAL_MIN 0
|
||||
|
||||
// Standard values for job starting skills
|
||||
|
||||
#define STARTING_SKILL_SURGERY_MEDICAL 35 //out of SKILL_NUMERICAL_MAX
|
||||
|
||||
// Standard values for job starting skill affinities
|
||||
|
||||
#define STARTING_SKILL_AFFINITY_DEF_JOB 1.2
|
||||
|
||||
// Standard values for skill gain (this is multiplied by affinity)
|
||||
|
||||
#define DEF_SKILL_GAIN 1
|
||||
#define SKILL_GAIN_SURGERY_PER_STEP 0.25
|
||||
|
||||
//An extra point for each few seconds of delay when using a tool. Before the multiplier.
|
||||
#define SKILL_GAIN_DELAY_DIVISOR 3 SECONDS
|
||||
|
||||
///Items skill_traits and other defines
|
||||
#define SKILL_USE_TOOL "use_tool"
|
||||
#define SKILL_TRAINING_TOOL "training_tool"
|
||||
#define SKILL_ATTACK_MOB "attack_mob"
|
||||
#define SKILL_TRAIN_ATTACK_MOB "train_attack_mob"
|
||||
#define SKILL_ATTACK_OBJ "attack_obj"
|
||||
#define SKILL_TRAIN_ATTACK_OBJ "train_attack_obj"
|
||||
#define SKILL_STAMINA_COST "stamina_cost" //Influences the stamina cost from weapon usage.
|
||||
#define SKILL_THROW_STAM_COST "throw_stam_cost"
|
||||
#define SKILL_COMBAT_MODE "combat_mode" //The user must have combat mode on.
|
||||
#define SKILL_SANITY "sanity" //Is the skill affected by (in)sanity.
|
||||
#define SKILL_INTELLIGENCE "intelligence" //Is the skill affected by brain damage?
|
||||
|
||||
///competency_threshold defines
|
||||
#define THRESHOLD_UNTRAINED "untrained"
|
||||
#define THRESHOLD_COMPETENT "competent"
|
||||
#define THRESHOLD_EXPERT "expert"
|
||||
#define THRESHOLD_MASTER "master"
|
||||
|
||||
/// Level/Experience skills defines.
|
||||
#define STD_XP_LVL_UP 100
|
||||
#define STD_XP_LVL_MULTI 2
|
||||
#define STD_MAX_LVL 4
|
||||
|
||||
#define RPG_MAX_LVL 100
|
||||
|
||||
#define DORF_XP_LVL_UP 400
|
||||
#define DORF_XP_LVL_MULTI 100
|
||||
#define DORF_MAX_LVL 20 // Dabbling, novice, adequate, [...], legendary +3, legendary +4, legendary +5
|
||||
|
||||
//level up methods defines
|
||||
#define STANDARD_LEVEL_UP "standard_level_up"
|
||||
#define DWARFY_LEVEL_UP "dwarfy_level_up"
|
||||
|
||||
//job skill level defines
|
||||
#define JOB_SKILL_UNTRAINED 0
|
||||
#define JOB_SKILL_BASIC 1
|
||||
#define JOB_SKILL_TRAINED 2
|
||||
#define JOB_SKILL_EXPERT 3
|
||||
#define JOB_SKILL_MASTER 4
|
||||
|
||||
//other skill level defines, not an exhaustive catalogue, only contains be most relevant ones.
|
||||
#define DORF_SKILL_COMPETENT 3
|
||||
#define DORF_SKILL_EXPERT 8
|
||||
#define DORF_SKILL_MASTER 12
|
||||
|
||||
/// Skill modifier defines and flags.
|
||||
#define MODIFIER_SKILL_VALUE (1<<0)
|
||||
#define MODIFIER_SKILL_AFFINITY (1<<1)
|
||||
#define MODIFIER_SKILL_LEVEL (1<<2)
|
||||
///makes the skill modifier a multiplier, not an addendum.
|
||||
#define MODIFIER_SKILL_MULT (1<<3)
|
||||
///Sets the skill to the defined value if lower than that. Highly reccomended you don't use it with MODIFIER_SKILL_MULT.
|
||||
#define MODIFIER_SKILL_VIRTUE (1<<4)
|
||||
///Does the opposite of the above. combining both effectively results in the skill being locked to the specified value.
|
||||
#define MODIFIER_SKILL_HANDICAP (1<<5)
|
||||
///Makes it untransferred by mind.transfer_to()
|
||||
#define MODIFIER_SKILL_BODYBOUND (1<<6)
|
||||
///Adds the difference of the current value and the value stored at the time the modifier was added to the result.
|
||||
#define MODIFIER_SKILL_ORIGIN_DIFF (1<<7)
|
||||
///Will this skill use competency thresholds instead of preset values
|
||||
#define MODIFIER_USE_THRESHOLDS (1<<8)
|
||||
|
||||
#define MODIFIER_TARGET_VALUE "value"
|
||||
#define MODIFIER_TARGET_LEVEL "level"
|
||||
#define MODIFIER_TARGET_AFFINITY "affinity"
|
||||
|
||||
///Ascending priority defines.
|
||||
#define MODIFIER_SKILL_PRIORITY_LOW 100
|
||||
#define MODIFIER_SKILL_PRIORITY_DEF 50
|
||||
#define MODIFIER_SKILL_PRIORITY_MAX 1 //max priority, meant for job/antag modifiers so they don't null out other (de)buffs
|
||||
@@ -0,0 +1,48 @@
|
||||
|
||||
//How experience levels are calculated.
|
||||
#define XP_LEVEL(std, multi, lvl) (std*((multi**lvl)/(multi-1))-std/(multi-1)) //don't use 1 as multi, you'll get division by zero errors
|
||||
#define DORF_XP_LEVEL(std, extra, lvl) (std*lvl+extra*(lvl*(lvl/2+0.5)))
|
||||
|
||||
//More experience value getter macros
|
||||
#define GET_STANDARD_LVL(lvl) XP_LEVEL(STD_XP_LVL_UP, STD_XP_LVL_MULTI, lvl)
|
||||
#define GET_DORF_LVL(lvl) DORF_XP_LEVEL(DORF_XP_LVL_UP, DORF_XP_LVL_MULTI, lvl)
|
||||
|
||||
#define IS_SKILL_VALUE_GREATER(path, existing, new_value) GLOB.skill_datums[path].is_value_greater(existing, new_value)
|
||||
|
||||
#define SANITIZE_SKILL_VALUE(path, value) GLOB.skill_datums[path].sanitize_value(value)
|
||||
|
||||
///Doesn't automatically round the value.
|
||||
#define SANITIZE_SKILL_LEVEL(path, lvl) clamp(lvl, 0, GLOB.skill_datums[path].max_levels)
|
||||
|
||||
/// Simple generic identifier macro.
|
||||
#define GET_SKILL_MOD_ID(path, id) (id ? "[path]&[id]" : path)
|
||||
|
||||
/**
|
||||
* A simple universal comsig for body bound skill modifiers.
|
||||
* Technically they are still bound to the mind, but other signal procs will take care of adding and removing the modifier
|
||||
* from/to new/old minds.
|
||||
*/
|
||||
#define ADD_SKILL_MODIFIER_BODY(path, id, body, prototype) \
|
||||
prototype = GLOB.skill_modifiers[GET_SKILL_MOD_ID(path, id)] || new path(id, TRUE);\
|
||||
if(body.mind){\
|
||||
body.mind.add_skill_modifier(prototype.identifier)\
|
||||
} else {\
|
||||
prototype.RegisterSignal(body, COMSIG_MOB_ON_NEW_MIND, /datum/skill_modifier.proc/on_mob_new_mind, TRUE)\
|
||||
}
|
||||
|
||||
/// Same as above but to remove the skill modifier.
|
||||
#define REMOVE_SKILL_MODIFIER_BODY(path, id, body) \
|
||||
if(GLOB.skill_modifiers[GET_SKILL_MOD_ID(path, id)]){\
|
||||
if(body.mind){\
|
||||
body.mind.remove_skill_modifier(GET_SKILL_MOD_ID(path, id))\
|
||||
} else {\
|
||||
GLOB.skill_modifiers[GET_SKILL_MOD_ID(path, id)].UnregisterSignal(body, COMSIG_MOB_ON_NEW_MIND)\
|
||||
}\
|
||||
}
|
||||
|
||||
///Macro used when adding generic singleton skill modifiers.
|
||||
#define ADD_SINGLETON_SKILL_MODIFIER(mind, path, id) \
|
||||
if(!GLOB.skill_modifiers[GET_SKILL_MOD_ID(path, id)]){\
|
||||
new path(id, TRUE)\
|
||||
};\
|
||||
mind.add_skill_modifier(GET_SKILL_MOD_ID(path, id))
|
||||
@@ -1,28 +0,0 @@
|
||||
/// true/false
|
||||
#define SKILL_PROGRESSION_BINARY 1
|
||||
/// numerical
|
||||
#define SKILL_PROGRESSION_NUMERICAL 2
|
||||
/// Enum
|
||||
#define SKILL_PROGRESSION_ENUM 3
|
||||
|
||||
/// Max value of skill for numerical skills
|
||||
#define SKILL_NUMERICAL_MAX 100
|
||||
/// Min value of skill for numerical skills
|
||||
#define SKILL_NUMERICAL_MIN 0
|
||||
|
||||
// Standard values for job starting skills
|
||||
|
||||
#define STARTING_SKILL_SURGERY_MEDICAL 35 //out of SKILL_NUMERICAL_MAX
|
||||
|
||||
// Standard values for job starting skill affinities
|
||||
|
||||
#define STARTING_SKILL_AFFINITY_SURGERY_MEDICAL 1.2
|
||||
|
||||
// Standard values for skill gain (this is multiplied by affinity)
|
||||
|
||||
#define SKILL_GAIN_SURGERY_PER_STEP 0.25
|
||||
|
||||
// Misc
|
||||
|
||||
/// 40% speedup at 100 skill
|
||||
#define SURGERY_SKILL_SPEEDUP_NUMERICAL_SCALE(number) clamp(number / 250, 1, 2)
|
||||
@@ -11,7 +11,21 @@
|
||||
#define STORAGE_LIMIT_MAX_W_CLASS (1<<3)
|
||||
|
||||
#define STORAGE_FLAGS_LEGACY_DEFAULT (STORAGE_LIMIT_MAX_ITEMS | STORAGE_LIMIT_COMBINED_W_CLASS | STORAGE_LIMIT_MAX_W_CLASS)
|
||||
#define STORAGE_FLAGS_VOLUME_DEFAULT (STORAGE_LIMIT_MAX_ITEMS | STORAGE_LIMIT_VOLUME | STORAGE_LIMIT_MAX_W_CLASS)
|
||||
#define STORAGE_FLAGS_VOLUME_DEFAULT (STORAGE_LIMIT_VOLUME | STORAGE_LIMIT_MAX_W_CLASS)
|
||||
|
||||
// UI defines
|
||||
/// Size of volumetric box icon
|
||||
#define VOLUMETRIC_STORAGE_BOX_ICON_SIZE 32
|
||||
/// Size of EACH left/right border icon for volumetric boxes
|
||||
#define VOLUMETRIC_STORAGE_BOX_BORDER_SIZE 1
|
||||
/// Minimum pixels an item must have in volumetric scaled storage UI
|
||||
#define MINIMUM_PIXELS_PER_ITEM 8
|
||||
/// Maximum number of objects that will be allowed to be displayed using the volumetric display system. Arbitrary number to prevent server lockups.
|
||||
#define MAXIMUM_VOLUMETRIC_ITEMS 256
|
||||
/// How much padding to give between items
|
||||
#define VOLUMETRIC_STORAGE_ITEM_PADDING 4
|
||||
/// How much padding to give to edges
|
||||
#define VOLUMETRIC_STORAGE_EDGE_PADDING 1
|
||||
|
||||
//ITEM INVENTORY WEIGHT, FOR w_class
|
||||
/// Usually items smaller then a human hand, ex: Playing Cards, Lighter, Scalpel, Coins/Money
|
||||
@@ -26,22 +40,3 @@
|
||||
#define WEIGHT_CLASS_HUGE 5
|
||||
/// Essentially means it cannot be picked up or placed in an inventory, ex: Mech Parts, Safe - Can not fit in Boh
|
||||
#define WEIGHT_CLASS_GIGANTIC 6
|
||||
|
||||
/// Macro for automatically getting the volume of an item from its w_class.
|
||||
#define AUTO_SCALE_VOLUME(w_class) (2 ** w_class)
|
||||
/// Macro for automatically getting the volume of a storage item from its max_w_class and max_combined_w_class.
|
||||
#define AUTO_SCALE_STORAGE_VOLUME(w_class, max_combined_w_class) (AUTO_SCALE_VOLUME(w_class) * (max_combined_w_class / w_class))
|
||||
|
||||
// UI defines
|
||||
/// Size of volumetric box icon
|
||||
#define VOLUMETRIC_STORAGE_BOX_ICON_SIZE 32
|
||||
/// Size of EACH left/right border icon for volumetric boxes
|
||||
#define VOLUMETRIC_STORAGE_BOX_BORDER_SIZE 1
|
||||
/// Minimum pixels an item must have in volumetric scaled storage UI
|
||||
#define MINIMUM_PIXELS_PER_ITEM 6
|
||||
/// Maximum number of objects that will be allowed to be displayed using the volumetric display system. Arbitrary number to prevent server lockups.
|
||||
#define MAXIMUM_VOLUMETRIC_ITEMS 256
|
||||
/// How much padding to give between items
|
||||
#define VOLUMETRIC_STORAGE_ITEM_PADDING 1
|
||||
/// How much padding to give to edges
|
||||
#define VOLUMETRIC_STORAGE_EDGE_PADDING 1
|
||||
@@ -0,0 +1,39 @@
|
||||
// PLEASE KEEP ALL VOLUME DEFINES IN THIS FILE, it's going to be hell to keep track of them later.
|
||||
|
||||
#define DEFAULT_VOLUME_TINY 2
|
||||
#define DEFAULT_VOLUME_SMALL 3
|
||||
#define DEFAULT_VOLUME_NORMAL 4
|
||||
#define DEFAULT_VOLUME_BULKY 8
|
||||
#define DEFAULT_VOLUME_HUGE 16
|
||||
#define DEFAULT_VOLUME_GIGANTIC 32
|
||||
|
||||
GLOBAL_LIST_INIT(default_weight_class_to_volume, list(
|
||||
"[WEIGHT_CLASS_TINY]" = DEFAULT_VOLUME_TINY,
|
||||
"[WEIGHT_CLASS_SMALL]" = DEFAULT_VOLUME_SMALL,
|
||||
"[WEIGHT_CLASS_NORMAL]" = DEFAULT_VOLUME_NORMAL,
|
||||
"[WEIGHT_CLASS_BULKY]" = DEFAULT_VOLUME_BULKY,
|
||||
"[WEIGHT_CLASS_HUGE]" = DEFAULT_VOLUME_HUGE,
|
||||
"[WEIGHT_CLASS_GIGANTIC]" = DEFAULT_VOLUME_GIGANTIC
|
||||
))
|
||||
|
||||
/// Macro for automatically getting the volume of an item from its w_class.
|
||||
#define AUTO_SCALE_VOLUME(w_class) (GLOB.default_weight_class_to_volume["[w_class]"])
|
||||
/// Macro for automatically getting the volume of a storage item from its max_w_class and max_combined_w_class.
|
||||
#define AUTO_SCALE_STORAGE_VOLUME(w_class, max_combined_w_class) (AUTO_SCALE_VOLUME(w_class) * (max_combined_w_class / w_class))
|
||||
|
||||
// Let's keep all of this in one place. given what we put above anyways..
|
||||
|
||||
// volume amount for items
|
||||
#define ITEM_VOLUME_DISK DEFAULT_VOLUME_TINY
|
||||
|
||||
// #define SAMPLE_VOLUME_AMOUNT 2
|
||||
|
||||
// max_weight_class for storages
|
||||
#define MAX_WEIGHT_CLASS_BACKPACK WEIGHT_CLASS_NORMAL
|
||||
#define MAX_WEIGHT_CLASS_BAG_OF_HOLDING WEIGHT_CLASS_BULKY
|
||||
|
||||
// max_volume for storages
|
||||
#define STORAGE_VOLUME_BACKPACK (DEFAULT_VOLUME_NORMAL * 7)
|
||||
#define STORAGE_VOLUME_DUFFLEBAG (DEFAULT_VOLUME_NORMAL * 10)
|
||||
#define STORAGE_VOLUME_BAG_OF_HOLDING (DEFAULT_VOLUME_NORMAL * 20)
|
||||
|
||||
@@ -64,7 +64,8 @@
|
||||
#define INIT_ORDER_TICKER 55
|
||||
#define INIT_ORDER_INSTRUMENTS 53
|
||||
#define INIT_ORDER_MAPPING 50
|
||||
#define INIT_ORDER_NETWORKS 45
|
||||
#define INIT_ORDER_ECONOMY 45
|
||||
#define INIT_ORDER_NETWORKS 40
|
||||
#define INIT_ORDER_HOLODECK 35
|
||||
#define INIT_ORDER_ATOMS 30
|
||||
#define INIT_ORDER_LANGUAGE 25
|
||||
@@ -116,6 +117,7 @@
|
||||
#define FIRE_PRIORITY_NPC 80
|
||||
#define FIRE_PRIORITY_MOBS 100
|
||||
#define FIRE_PRIORITY_TGUI 110
|
||||
#define FIRE_PRIORITY_PROJECTILES 200
|
||||
#define FIRE_PRIORITY_TICKER 200
|
||||
#define FIRE_PRIORITY_ATMOS_ADJACENCY 300
|
||||
#define FIRE_PRIORITY_CHAT 400
|
||||
|
||||
@@ -4,8 +4,9 @@
|
||||
#define TGS_READ_GLOBAL(Name) GLOB.##Name
|
||||
#define TGS_WRITE_GLOBAL(Name, Value) GLOB.##Name = ##Value
|
||||
#define TGS_WORLD_ANNOUNCE(message) to_chat(world, "<span class='boldannounce'>[html_encode(##message)]</span>")
|
||||
#define TGS_INFO_LOG(message) log_world("TGS: Info: [##message]")
|
||||
#define TGS_ERROR_LOG(message) log_world("TGS: Error: [##message]")
|
||||
#define TGS_INFO_LOG(message) log_world("TGS Info: [##message]")
|
||||
#define TGS_WARNING_LOG(message) log_world("TGS Warn: [##message]")
|
||||
#define TGS_ERROR_LOG(message) log_world("TGS Error: [##message]")
|
||||
#define TGS_NOTIFY_ADMINS(event) message_admins(##event)
|
||||
#define TGS_CLIENT_COUNT GLOB.clients.len
|
||||
#define TGS_PROTECT_DATUM(Path) GENERAL_PROTECT_DATUM(##Path)
|
||||
|
||||
+56
-35
@@ -1,5 +1,7 @@
|
||||
//tgstation-server DMAPI
|
||||
|
||||
#define TGS_DMAPI_VERSION "5.1.1"
|
||||
|
||||
//All functions and datums outside this document are subject to change with any version and should not be relied on
|
||||
|
||||
//CONFIGURATION
|
||||
@@ -17,7 +19,6 @@
|
||||
//Required interfaces (fill in with your codebase equivalent):
|
||||
|
||||
//create a global variable named `Name` and set it to `Value`
|
||||
//These globals must not be modifiable from anywhere outside of the server tools
|
||||
#define TGS_DEFINE_AND_SET_GLOBAL(Name, Value)
|
||||
|
||||
//Read the value in the global variable `Name`
|
||||
@@ -26,10 +27,10 @@
|
||||
//Set the value in the global variable `Name` to `Value`
|
||||
#define TGS_WRITE_GLOBAL(Name, Value)
|
||||
|
||||
//Disallow ANYONE from reflecting a given `path`, security measure to prevent in-game priveledge escalation
|
||||
//Disallow ANYONE from reflecting a given `path`, security measure to prevent in-game use of DD -> TGS capabilities
|
||||
#define TGS_PROTECT_DATUM(Path)
|
||||
|
||||
//display an announcement `message` from the server to all players
|
||||
//Display an announcement `message` from the server to all players
|
||||
#define TGS_WORLD_ANNOUNCE(message)
|
||||
|
||||
//Notify current in-game administrators of a string `event`
|
||||
@@ -38,6 +39,9 @@
|
||||
//Write an info `message` to a server log
|
||||
#define TGS_INFO_LOG(message)
|
||||
|
||||
//Write an warning `message` to a server log
|
||||
#define TGS_WARNING_LOG(message)
|
||||
|
||||
//Write an error `message` to a server log
|
||||
#define TGS_ERROR_LOG(message)
|
||||
|
||||
@@ -48,10 +52,12 @@
|
||||
|
||||
//EVENT CODES
|
||||
|
||||
#define TGS_EVENT_PORT_SWAP -2 //before a port change is about to happen, extra parameter is new port
|
||||
#define TGS_EVENT_REBOOT_MODE_CHANGE -1 //before a reboot mode change, extras parameters are the current and new reboot mode enums
|
||||
#define TGS_EVENT_REBOOT_MODE_CHANGE -1 //Before a reboot mode change, extras parameters are the current and new reboot mode enums
|
||||
#define TGS_EVENT_PORT_SWAP -2 //Before a port change is about to happen, extra parameters is new port
|
||||
#define TGS_EVENT_INSTANCE_RENAMED -3 //Before the instance is renamed, extra parameter is the new name
|
||||
#define TGS_EVENT_WATCHDOG_REATTACH -4 //After the watchdog reattaches to DD, extra parameter is the new /datum/tgs_version of the server
|
||||
|
||||
//See the descriptions for these codes here: https://github.com/tgstation/tgstation-server/blob/master/src/Tgstation.Server.Host/Components/EventType.cs
|
||||
//See the descriptions for the parameters of these codes here: https://github.com/tgstation/tgstation-server/blob/master/src/Tgstation.Server.Host/Components/EventType.cs
|
||||
#define TGS_EVENT_REPO_RESET_ORIGIN 0
|
||||
#define TGS_EVENT_REPO_CHECKOUT 1
|
||||
#define TGS_EVENT_REPO_FETCH 2
|
||||
@@ -63,9 +69,12 @@
|
||||
#define TGS_EVENT_COMPILE_START 8
|
||||
#define TGS_EVENT_COMPILE_CANCELLED 9
|
||||
#define TGS_EVENT_COMPILE_FAILURE 10
|
||||
#define TGS_EVENT_COMPILE_COMPLETE 11
|
||||
#define TGS_EVENT_COMPILE_COMPLETE 11 // Note, this event fires before the new .dmb is loaded into the watchdog. Consider using the TGS_EVENT_DEPLOYMENT_COMPLETE instead
|
||||
#define TGS_EVENT_INSTANCE_AUTO_UPDATE_START 12
|
||||
#define TGS_EVENT_REPO_MERGE_CONFLICT 13
|
||||
#define TGS_EVENT_DEPLOYMENT_COMPLETE 14
|
||||
#define TGS_EVENT_WATCHDOG_SHUTDOWN 15
|
||||
#define TGS_EVENT_WATCHDOG_DETACH 16
|
||||
|
||||
//OTHER ENUMS
|
||||
|
||||
@@ -80,6 +89,7 @@
|
||||
//REQUIRED HOOKS
|
||||
|
||||
//Call this somewhere in /world/New() that is always run
|
||||
//IMPORTANT: This function may sleep!
|
||||
//event_handler: optional user defined event handler. The default behaviour is to broadcast the event in english to all connected admin channels
|
||||
//minimum_required_security_level: The minimum required security level to run the game in which the DMAPI is integrated
|
||||
/world/proc/TgsNew(datum/tgs_event_handler/event_handler, minimum_required_security_level = TGS_SECURITY_ULTRASAFE)
|
||||
@@ -109,12 +119,12 @@
|
||||
|
||||
//represents a version of tgstation-server
|
||||
/datum/tgs_version
|
||||
var/suite //The suite version, can be >=3
|
||||
var/suite //The suite/major version, can be >=3
|
||||
|
||||
//this group of variables can be null to represent a wild card
|
||||
var/major //The major version
|
||||
var/minor //The minor version
|
||||
var/patch //The patch version
|
||||
var/deprecated_patch //The legacy version
|
||||
|
||||
var/raw_parameter //The unparsed parameter
|
||||
var/deprefixed_parameter //The version only bit of raw_parameter
|
||||
@@ -123,6 +133,10 @@
|
||||
/datum/tgs_version/proc/Wildcard()
|
||||
return
|
||||
|
||||
//if the tgs_version equals some other_version
|
||||
/datum/tgs_version/proc/Equals(datum/tgs_version/other_version)
|
||||
return
|
||||
|
||||
//represents a merge of a GitHub pull request
|
||||
/datum/tgs_revision_information/test_merge
|
||||
var/number //pull request number
|
||||
@@ -179,14 +193,45 @@
|
||||
return
|
||||
|
||||
//Returns TRUE if the world was launched under the server tools and the API matches, FALSE otherwise
|
||||
//No function below this succeeds if it returns FALSE
|
||||
//No function below this succeeds if it returns FALSE or if TgsNew() has yet to be called
|
||||
/world/proc/TgsAvailable()
|
||||
return
|
||||
|
||||
//Forces a hard reboot of BYOND by ending the process
|
||||
//unlike del(world) clients will try to reconnect
|
||||
//If the service has not requested a shutdown, the next server will take over
|
||||
/world/proc/TgsEndProcess()
|
||||
return
|
||||
|
||||
//Send a message to non-admin connected chats
|
||||
//message: The message to send
|
||||
//admin_only: If TRUE, message will instead be sent to only admin connected chats
|
||||
/world/proc/TgsTargetedChatBroadcast(message, admin_only)
|
||||
return
|
||||
|
||||
//Send a private message to a specific user
|
||||
//message: The message to send
|
||||
//user: The /datum/tgs_chat_user to send to
|
||||
/world/proc/TgsChatPrivateMessage(message, datum/tgs_chat_user/user)
|
||||
return
|
||||
|
||||
//The following functions will sleep if a call to TgsNew() is sleeping
|
||||
|
||||
//Sends a message to connected game chats
|
||||
//message: The message to send
|
||||
//channels: optional channels to limit the broadcast to
|
||||
/world/proc/TgsChatBroadcast(message, list/channels)
|
||||
return
|
||||
|
||||
//Gets the current /datum/tgs_version of the server tools running the server
|
||||
/world/proc/TgsVersion()
|
||||
return
|
||||
|
||||
//Gets the current /datum/tgs_version of the DMAPI being used
|
||||
/world/proc/TgsApiVersion()
|
||||
return
|
||||
|
||||
//Gets the name of the TGS instance running the game
|
||||
/world/proc/TgsInstanceName()
|
||||
return
|
||||
|
||||
@@ -202,34 +247,10 @@
|
||||
/world/proc/TgsTestMerges()
|
||||
return
|
||||
|
||||
//Forces a hard reboot of BYOND by ending the process
|
||||
//unlike del(world) clients will try to reconnect
|
||||
//If the service has not requested a shutdown, the next server will take over
|
||||
/world/proc/TgsEndProcess()
|
||||
return
|
||||
|
||||
//Gets a list of connected tgs_chat_channel
|
||||
/world/proc/TgsChatChannelInfo()
|
||||
return
|
||||
|
||||
//Sends a message to connected game chats
|
||||
//message: The message to send
|
||||
//channels: optional channels to limit the broadcast to
|
||||
/world/proc/TgsChatBroadcast(message, list/channels)
|
||||
return
|
||||
|
||||
//Send a message to non-admin connected chats
|
||||
//message: The message to send
|
||||
//admin_only: If TRUE, message will instead be sent to only admin connected chats
|
||||
/world/proc/TgsTargetedChatBroadcast(message, admin_only)
|
||||
return
|
||||
|
||||
//Send a private message to a specific user
|
||||
//message: The message to send
|
||||
//user: The /datum/tgs_chat_user to send to
|
||||
/world/proc/TgsChatPrivateMessage(message, datum/tgs_chat_user/user)
|
||||
return
|
||||
|
||||
/*
|
||||
The MIT License
|
||||
|
||||
@@ -255,4 +276,4 @@ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
|
||||
ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
*/
|
||||
|
||||
@@ -88,6 +88,7 @@
|
||||
#define TRAIT_SLEEPIMMUNE "sleep_immunity"
|
||||
#define TRAIT_PUSHIMMUNE "push_immunity"
|
||||
#define TRAIT_SHOCKIMMUNE "shock_immunity"
|
||||
#define TRAIT_TESLA_SHOCKIMMUNE "tesla_shock_immunity"
|
||||
#define TRAIT_STABLEHEART "stable_heart"
|
||||
#define TRAIT_STABLELIVER "stable_liver"
|
||||
#define TRAIT_RESISTHEAT "resist_heat"
|
||||
@@ -134,6 +135,7 @@
|
||||
#define TRAIT_LAW_ENFORCEMENT_METABOLISM "law-enforcement-metabolism"
|
||||
#define TRAIT_QUICK_CARRY "quick-carry"
|
||||
#define TRAIT_QUICKER_CARRY "quicker-carry"
|
||||
#define TRAIT_QUICK_BUILD "quick-build"
|
||||
#define TRAIT_STRONG_GRABBER "strong_grabber"
|
||||
#define TRAIT_CALCIUM_HEALER "calcium_healer"
|
||||
#define TRAIT_MAGIC_CHOKE "magic_choke"
|
||||
@@ -146,6 +148,8 @@
|
||||
#define TRAIT_NORUNNING "norunning" // You walk!
|
||||
#define TRAIT_NOMARROW "nomarrow" // You don't make blood, with chemicals or nanites.
|
||||
#define TRAIT_NOPULSE "nopulse" // Your heart doesn't beat.
|
||||
#define TRAIT_NOGUT "nogutting" //Your chest cant be gutted of organs
|
||||
#define TRAIT_NODECAP "nodecapping" //Your head cant be cut off in combat
|
||||
#define TRAIT_EXEMPT_HEALTH_EVENTS "exempt-health-events"
|
||||
#define TRAIT_NO_MIDROUND_ANTAG "no-midround-antag" //can't be turned into an antag by random events
|
||||
#define TRAIT_PUGILIST "pugilist" //This guy punches people for a living
|
||||
|
||||
@@ -122,3 +122,6 @@
|
||||
|
||||
// misc
|
||||
#define VV_HK_SPACEVINE_PURGE "spacevine_purge"
|
||||
|
||||
// paintings
|
||||
#define VV_HK_REMOVE_PAINTING "remove_painting"
|
||||
|
||||
@@ -1,9 +1,6 @@
|
||||
//THIS FILE CONTAINS CONSTANTS, PROCS, AND OTHER THINGS//
|
||||
/////////////////////////////////////////////////////////
|
||||
|
||||
/mob/proc/setClickCooldown(var/timeout)
|
||||
next_move = max(world.time + timeout, next_move)
|
||||
|
||||
/proc/get_matrix_largest()
|
||||
var/matrix/mtrx=new()
|
||||
return mtrx.Scale(2)
|
||||
@@ -105,16 +102,6 @@ GLOBAL_VAR_INIT(miscreants_allowed, FALSE)
|
||||
if(!src.holder) return
|
||||
message_admins("[key_name_admin(usr)] manually reloaded mentors")
|
||||
|
||||
//LOOC toggles
|
||||
/client/verb/listen_looc()
|
||||
set name = "Show/Hide LOOC"
|
||||
set category = "Preferences"
|
||||
set desc = "Toggles seeing LocalOutOfCharacter chat"
|
||||
prefs.chat_toggles ^= CHAT_LOOC
|
||||
prefs.save_preferences()
|
||||
to_chat(src, "You will [(prefs.chat_toggles & CHAT_LOOC) ? "now" : "no longer"] see messages on the LOOC channel.")
|
||||
SSblackbox.record_feedback("tally", "admin_verb", 1, "TLOOC") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
/mob/living/carbon/proc/has_penis()
|
||||
var/obj/item/organ/genital/G = getorganslot(ORGAN_SLOT_PENIS)
|
||||
if(G && istype(G, /obj/item/organ/genital/penis))
|
||||
|
||||
@@ -37,6 +37,7 @@
|
||||
* TYPECONT: The typepath of the contents of the list
|
||||
* COMPARE: The object to compare against, usualy the same as INPUT
|
||||
* COMPARISON: The variable on the objects to compare
|
||||
* COMPTYPE: How the current bin item to compare against COMPARE is fetched. By key or value.
|
||||
*/
|
||||
#define BINARY_INSERT(INPUT, LIST, TYPECONT, COMPARE, COMPARISON, COMPTYPE) \
|
||||
do {\
|
||||
@@ -629,6 +630,8 @@
|
||||
L["[key]"] = "[value]"
|
||||
return list2params(L)
|
||||
|
||||
#define NUMLIST2TEXTLIST(list) splittext(list2params(list), "&")
|
||||
|
||||
//Picks from the list, with some safeties, and returns the "default" arg if it fails
|
||||
#define DEFAULTPICK(L, default) ((islist(L) && length(L)) ? pick(L) : default)
|
||||
|
||||
@@ -668,3 +671,13 @@
|
||||
for(var/key in input)
|
||||
ret += key
|
||||
return ret
|
||||
|
||||
/proc/is_type_in_ref_list(path, list/L)
|
||||
if(!ispath(path))//not a path
|
||||
return
|
||||
for(var/i in L)
|
||||
var/datum/D = i
|
||||
if(!istype(D))//not an usable reference
|
||||
continue
|
||||
if(istype(D, path))
|
||||
return TRUE
|
||||
|
||||
@@ -4,7 +4,9 @@
|
||||
#define SEND_SOUND(target, sound) DIRECT_OUTPUT(target, sound)
|
||||
#define SEND_TEXT(target, text) DIRECT_OUTPUT(target, text)
|
||||
#define WRITE_FILE(file, text) DIRECT_OUTPUT(file, text)
|
||||
#define WRITE_LOG(log, text) rustg_log_write(log, text)
|
||||
//This is an external call, "true" and "false" are how rust parses out booleans
|
||||
#define WRITE_LOG(log, text) rustg_log_write(log, text, "true")
|
||||
#define WRITE_LOG_NO_FORMAT(log, text) rustg_log_write(log, text, "false")
|
||||
|
||||
//print a warning message to world.log
|
||||
#define WARNING(MSG) warning("[MSG] in [__FILE__] at line [__LINE__] src: [UNLINT(src)] usr: [usr].")
|
||||
@@ -152,6 +154,9 @@
|
||||
/proc/log_subsystem(subsystem, text)
|
||||
WRITE_LOG(GLOB.subsystem_log, "[subsystem]: [text]")
|
||||
|
||||
/proc/log_click(object, location, control, params, client/C, event = "clicked")
|
||||
WRITE_LOG(GLOB.click_log, "CLICK: [C.ckey] - [event] : [object] | [location] | [control] | [params]")
|
||||
|
||||
/* Log to both DD and the logfile. */
|
||||
/proc/log_world(text)
|
||||
#ifdef USE_CUSTOM_ERROR_HANDLER
|
||||
@@ -181,7 +186,7 @@
|
||||
/proc/start_log(log)
|
||||
WRITE_LOG(log, "Starting up round ID [GLOB.round_id].\n-------------------------")
|
||||
|
||||
/* ui logging */
|
||||
/* ui logging */
|
||||
|
||||
/proc/log_tgui(text)
|
||||
WRITE_LOG(GLOB.tgui_log, text)
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
/proc/get_projectile_angle(atom/source, atom/target)
|
||||
var/sx = source.x * world.icon_size
|
||||
var/sy = source.y * world.icon_size
|
||||
var/tx = target.x * world.icon_size
|
||||
var/ty = target.y * world.icon_size
|
||||
var/atom/movable/AM
|
||||
if(ismovable(source))
|
||||
AM = source
|
||||
sx += AM.step_x
|
||||
sy += AM.step_y
|
||||
if(ismovable(target))
|
||||
AM = target
|
||||
tx += AM.step_x
|
||||
ty += AM.step_y
|
||||
return SIMPLIFY_DEGREES(arctan(ty - sy, tx - sx))
|
||||
|
||||
/proc/Get_Angle(atom/movable/start,atom/movable/end)//For beams.
|
||||
if(!start || !end)
|
||||
return 0
|
||||
var/dy
|
||||
var/dx
|
||||
dy=(32*end.y+end.pixel_y)-(32*start.y+start.pixel_y)
|
||||
dx=(32*end.x+end.pixel_x)-(32*start.x+start.pixel_x)
|
||||
if(!dy)
|
||||
return (dx>=0)?90:270
|
||||
.=arctan(dx/dy)
|
||||
if(dy<0)
|
||||
.+=180
|
||||
else if(dx<0)
|
||||
.+=360
|
||||
|
||||
/proc/Get_Pixel_Angle(var/y, var/x)//for getting the angle when animating something's pixel_x and pixel_y
|
||||
if(!y)
|
||||
return (x>=0)?90:270
|
||||
.=arctan(x/y)
|
||||
if(y<0)
|
||||
.+=180
|
||||
else if(x<0)
|
||||
.+=360
|
||||
@@ -249,6 +249,15 @@
|
||||
SEND_SIGNAL(A, COMSIG_ATOM_HEARER_IN_VIEW, processing, .)
|
||||
processing += A.contents
|
||||
|
||||
//viewers() but with a signal, for blacklisting.
|
||||
/proc/fov_viewers(depth = world.view, atom/center)
|
||||
if(!center)
|
||||
return
|
||||
. = viewers(depth, center)
|
||||
for(var/k in .)
|
||||
var/mob/M = k
|
||||
SEND_SIGNAL(M, COMSIG_MOB_FOV_VIEWER, center, depth, .)
|
||||
|
||||
/proc/get_mobs_in_radio_ranges(list/obj/item/radio/radios)
|
||||
. = list()
|
||||
// Returns a list of mobs who can hear any of the radios given in @radios
|
||||
@@ -506,6 +515,19 @@
|
||||
return
|
||||
winset(C, "mainwindow", "flash=5")
|
||||
|
||||
//Recursively checks if an item is inside a given type, even through layers of storage. Returns the atom if it finds it.
|
||||
/proc/recursive_loc_check(atom/movable/target, type)
|
||||
var/atom/A = target
|
||||
if(istype(A, type))
|
||||
return A
|
||||
|
||||
while(!istype(A.loc, type))
|
||||
if(!A.loc)
|
||||
return
|
||||
A = A.loc
|
||||
|
||||
return A.loc
|
||||
|
||||
/proc/AnnounceArrival(var/mob/living/carbon/human/character, var/rank)
|
||||
if(!SSticker.IsRoundInProgress() || QDELETED(character))
|
||||
return
|
||||
|
||||
@@ -75,6 +75,8 @@
|
||||
var/datum/emote/E = new path()
|
||||
E.emote_list[E.key] = E
|
||||
|
||||
init_keybindings()
|
||||
|
||||
//Uplink Items
|
||||
for(var/path in subtypesof(/datum/uplink_item))
|
||||
var/datum/uplink_item/I = path
|
||||
|
||||
@@ -18,6 +18,12 @@
|
||||
return text
|
||||
return default
|
||||
|
||||
/proc/sanitize_islist(value, default)
|
||||
if(islist(value) && length(value))
|
||||
return value
|
||||
if(default)
|
||||
return default
|
||||
|
||||
/proc/sanitize_inlist(value, list/List, default)
|
||||
if(value in List)
|
||||
return value
|
||||
|
||||
@@ -629,3 +629,45 @@
|
||||
return null
|
||||
r += ascii2text(c)
|
||||
return r
|
||||
|
||||
/proc/slot_to_string(slot)
|
||||
switch(slot)
|
||||
if(SLOT_BACK)
|
||||
return "Backpack"
|
||||
if(SLOT_WEAR_MASK)
|
||||
return "Mask"
|
||||
if(SLOT_HANDS)
|
||||
return "Hands"
|
||||
if(SLOT_BELT)
|
||||
return "Belt"
|
||||
if(SLOT_EARS)
|
||||
return "Ears"
|
||||
if(SLOT_GLASSES)
|
||||
return "Glasses"
|
||||
if(SLOT_GLOVES)
|
||||
return "Gloves"
|
||||
if(SLOT_NECK)
|
||||
return "Neck"
|
||||
if(SLOT_HEAD)
|
||||
return "Head"
|
||||
if(SLOT_SHOES)
|
||||
return "Shoes"
|
||||
if(SLOT_WEAR_SUIT)
|
||||
return "Suit"
|
||||
if(SLOT_W_UNIFORM)
|
||||
return "Uniform"
|
||||
if(SLOT_IN_BACKPACK)
|
||||
return "In backpack"
|
||||
|
||||
/proc/tg_ui_icon_to_cit_ui(ui_style)
|
||||
switch(ui_style)
|
||||
if('icons/mob/screen_plasmafire.dmi')
|
||||
return 'modular_citadel/icons/ui/screen_plasmafire.dmi'
|
||||
if('icons/mob/screen_slimecore.dmi')
|
||||
return 'modular_citadel/icons/ui/screen_slimecore.dmi'
|
||||
if('icons/mob/screen_operative.dmi')
|
||||
return 'modular_citadel/icons/ui/screen_operative.dmi'
|
||||
if('icons/mob/screen_clockwork.dmi')
|
||||
return 'modular_citadel/icons/ui/screen_clockwork.dmi'
|
||||
else
|
||||
return 'modular_citadel/icons/ui/screen_midnight.dmi'
|
||||
|
||||
+37
-27
@@ -1,5 +1,3 @@
|
||||
|
||||
|
||||
/*
|
||||
* A large number of misc global procs.
|
||||
*/
|
||||
@@ -17,30 +15,6 @@
|
||||
var/textb = copytext(HTMLstring, 6, 8)
|
||||
return rgb(255 - hex2num(textr), 255 - hex2num(textg), 255 - hex2num(textb))
|
||||
|
||||
/proc/Get_Angle(atom/movable/start,atom/movable/end)//For beams.
|
||||
if(!start || !end)
|
||||
return 0
|
||||
var/dy
|
||||
var/dx
|
||||
dy=(32*end.y+end.pixel_y)-(32*start.y+start.pixel_y)
|
||||
dx=(32*end.x+end.pixel_x)-(32*start.x+start.pixel_x)
|
||||
if(!dy)
|
||||
return (dx>=0)?90:270
|
||||
.=arctan(dx/dy)
|
||||
if(dy<0)
|
||||
.+=180
|
||||
else if(dx<0)
|
||||
.+=360
|
||||
|
||||
/proc/Get_Pixel_Angle(var/y, var/x)//for getting the angle when animating something's pixel_x and pixel_y
|
||||
if(!y)
|
||||
return (x>=0)?90:270
|
||||
.=arctan(x/y)
|
||||
if(y<0)
|
||||
.+=180
|
||||
else if(x<0)
|
||||
.+=360
|
||||
|
||||
//Returns location. Returns null if no location was found.
|
||||
/proc/get_teleport_loc(turf/location,mob/target,distance = 1, density = FALSE, errorx = 0, errory = 0, eoffsetx = 0, eoffsety = 0)
|
||||
/*
|
||||
@@ -391,6 +365,16 @@ Turf and target are separate in case you want to teleport some distance from a t
|
||||
break
|
||||
return loc
|
||||
|
||||
//Returns a list of all locations the target is within.
|
||||
/proc/get_nested_locs(atom/movable/M, include_turf = FALSE)
|
||||
. = list()
|
||||
var/atom/A = M.loc
|
||||
while(A && !isturf(A))
|
||||
. += A
|
||||
A = A.loc
|
||||
if(A && include_turf) //At this point, only the turf is left.
|
||||
. += A
|
||||
|
||||
// returns the turf located at the map edge in the specified direction relative to A
|
||||
// used for mass driver
|
||||
/proc/get_edge_target_turf(atom/A, direction)
|
||||
@@ -1048,6 +1032,27 @@ B --><-- A
|
||||
/proc/get_random_station_turf()
|
||||
return safepick(get_area_turfs(pick(GLOB.the_station_areas)))
|
||||
|
||||
/proc/get_safe_random_station_turf() //excludes dense turfs (like walls) and areas that have valid_territory set to FALSE
|
||||
for (var/i in 1 to 5)
|
||||
var/list/L = get_area_turfs(pick(GLOB.the_station_areas))
|
||||
var/turf/target
|
||||
while (L.len && !target)
|
||||
var/I = rand(1, L.len)
|
||||
var/turf/T = L[I]
|
||||
var/area/X = get_area(T)
|
||||
if(!T.density && X.valid_territory)
|
||||
var/clear = TRUE
|
||||
for(var/obj/O in T)
|
||||
if(O.density)
|
||||
clear = FALSE
|
||||
break
|
||||
if(clear)
|
||||
target = T
|
||||
if (!target)
|
||||
L.Cut(I,I+1)
|
||||
if (target)
|
||||
return target
|
||||
|
||||
/proc/get_closest_atom(type, list, source)
|
||||
var/closest_atom
|
||||
var/closest_distance
|
||||
@@ -1571,8 +1576,13 @@ GLOBAL_DATUM_INIT(dview_mob, /mob/dview, new)
|
||||
//empty string - use TgsTargetBroadcast with admin_only = FALSE
|
||||
//other string - use TgsChatBroadcast with the tag that matches config_setting, only works with TGS4, if using TGS3 the above method is used
|
||||
/proc/send2chat(message, config_setting)
|
||||
if(config_setting == null || !world.TgsAvailable())
|
||||
if(config_setting == null)
|
||||
return
|
||||
|
||||
UNTIL(GLOB.tgs_initialized)
|
||||
if(!world.TgsAvailable())
|
||||
return
|
||||
|
||||
var/datum/tgs_version/version = world.TgsVersion()
|
||||
if(config_setting == "" || version.suite == 3)
|
||||
world.TgsTargetedChatBroadcast(message, FALSE)
|
||||
|
||||
@@ -134,9 +134,11 @@ GLOBAL_LIST_INIT(bitfields, list(
|
||||
"NO_RUINS_1" = NO_RUINS_1,
|
||||
"PREVENT_CLICK_UNDER_1" = PREVENT_CLICK_UNDER_1,
|
||||
"HOLOGRAM_1" = HOLOGRAM_1,
|
||||
"TESLA_IGNORE_1" = TESLA_IGNORE_1,
|
||||
"SHOCKED_1" = SHOCKED_1,
|
||||
"INITIALIZED_1" = INITIALIZED_1,
|
||||
"ADMIN_SPAWNED_1" = ADMIN_SPAWNED_1,
|
||||
"BLOCK_FACE_ATOM_1" = BLOCK_FACE_ATOM_1,
|
||||
"PREVENT_CONTENTS_EXPLOSION_1" = PREVENT_CONTENTS_EXPLOSION_1
|
||||
),
|
||||
"clothing_flags" = list(
|
||||
"LAVAPROTECT" = LAVAPROTECT,
|
||||
@@ -150,12 +152,12 @@ GLOBAL_LIST_INIT(bitfields, list(
|
||||
"IGNORE_HAT_TOSS" = IGNORE_HAT_TOSS,
|
||||
"SCAN_REAGENTS" = SCAN_REAGENTS
|
||||
),
|
||||
"tesla_flags" = list(
|
||||
"TESLA_MOB_DAMAGE" = TESLA_MOB_DAMAGE,
|
||||
"TESLA_OBJ_DAMAGE" = TESLA_OBJ_DAMAGE,
|
||||
"TESLA_MOB_STUN" = TESLA_MOB_STUN,
|
||||
"TESLA_ALLOW_DUPLICATES" = TESLA_ALLOW_DUPLICATES,
|
||||
"TESLA_MACHINE_EXPLOSIVE" = TESLA_MACHINE_EXPLOSIVE,
|
||||
"zap_flags" = list(
|
||||
"ZAP_MOB_DAMAGE" = ZAP_MOB_DAMAGE,
|
||||
"ZAP_OBJ_DAMAGE" = ZAP_OBJ_DAMAGE,
|
||||
"ZAP_MOB_STUN" = ZAP_MOB_STUN,
|
||||
"ZAP_ALLOW_DUPLICATES" = ZAP_ALLOW_DUPLICATES,
|
||||
"ZAP_MACHINE_EXPLOSIVE" = ZAP_MACHINE_EXPLOSIVE,
|
||||
),
|
||||
"smooth" = list(
|
||||
"SMOOTH_TRUE" = SMOOTH_TRUE,
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
GLOBAL_LIST_EMPTY(classic_keybinding_list_by_key)
|
||||
GLOBAL_LIST_EMPTY(hotkey_keybinding_list_by_key)
|
||||
GLOBAL_LIST_EMPTY(keybindings_by_name)
|
||||
|
||||
// This is a mapping from JS keys to Byond - ref: https://keycode.info/
|
||||
GLOBAL_LIST_INIT(_kbMap, list(
|
||||
"UP" = "North",
|
||||
"RIGHT" = "East",
|
||||
"DOWN" = "South",
|
||||
"LEFT" = "West",
|
||||
"INSERT" = "Insert",
|
||||
"HOME" = "Northwest",
|
||||
"PAGEUP" = "Northeast",
|
||||
"DEL" = "Delete",
|
||||
"END" = "Southwest",
|
||||
"PAGEDOWN" = "Southeast",
|
||||
"SPACEBAR" = "Space",
|
||||
"ALT" = "Alt",
|
||||
"SHIFT" = "Shift",
|
||||
"CONTROL" = "Ctrl"
|
||||
))
|
||||
@@ -221,3 +221,5 @@ GLOBAL_LIST_INIT(numbers_as_words, world.file2list("strings/numbers_as_words.txt
|
||||
GLOBAL_LIST_INIT(station_numerals, greek_letters + phonetic_alphabet + numbers_as_words + generate_number_strings())
|
||||
|
||||
GLOBAL_LIST_INIT(admiral_messages, list("Do you know how expensive these stations are?","Stop wasting my time.","I was sleeping, thanks a lot.","Stand and fight you cowards!","You knew the risks coming in.","Stop being paranoid.","Whatever's broken just build a new one.","No.", "<i>null</i>","<i>Error: No comment given.</i>", "It's a good day to die!"))
|
||||
|
||||
GLOBAL_LIST_INIT(redacted_strings, list("\[REDACTED\]", "\[CLASSIFIED\]", "\[ARCHIVED\]", "\[EXPLETIVE DELETED\]", "\[EXPUNGED\]", "\[INFORMATION ABOVE YOUR SECURITY CLEARANCE\]", "\[MOVE ALONG CITIZEN\]", "\[NOTHING TO SEE HERE\]", "\[ACCESS DENIED\]"))
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
/// Creates and sorts all the keybinding datums
|
||||
/proc/init_keybindings()
|
||||
for(var/KB in subtypesof(/datum/keybinding))
|
||||
var/datum/keybinding/keybinding = KB
|
||||
if(!initial(keybinding.hotkey_keys))
|
||||
continue
|
||||
add_keybinding(new keybinding)
|
||||
// init_emote_keybinds() - Disabled - I don't particularly want this.
|
||||
|
||||
/// Adds an instanced keybinding to the global tracker
|
||||
/proc/add_keybinding(datum/keybinding/instance)
|
||||
GLOB.keybindings_by_name[instance.name] = instance
|
||||
|
||||
// Classic
|
||||
if(LAZYLEN(instance.classic_keys))
|
||||
for(var/bound_key in instance.classic_keys)
|
||||
LAZYADD(GLOB.classic_keybinding_list_by_key[bound_key], list(instance.name))
|
||||
|
||||
// Hotkey
|
||||
if(LAZYLEN(instance.hotkey_keys))
|
||||
for(var/bound_key in instance.hotkey_keys)
|
||||
LAZYADD(GLOB.hotkey_keybinding_list_by_key[bound_key], list(instance.name))
|
||||
|
||||
/proc/init_emote_keybinds()
|
||||
for(var/i in subtypesof(/datum/emote))
|
||||
var/datum/emote/faketype = i
|
||||
if(!initial(faketype.key))
|
||||
continue
|
||||
var/datum/keybinding/emote/emote_kb = new
|
||||
emote_kb.link_to_emote(faketype)
|
||||
add_keybinding(emote_kb)
|
||||
@@ -36,6 +36,8 @@ GLOBAL_VAR(reagent_log)
|
||||
GLOBAL_PROTECT(reagent_log)
|
||||
GLOBAL_VAR(world_crafting_log)
|
||||
GLOBAL_PROTECT(world_crafting_log)
|
||||
GLOBAL_VAR(click_log)
|
||||
GLOBAL_PROTECT(click_log)
|
||||
|
||||
GLOBAL_LIST_EMPTY(bombers)
|
||||
GLOBAL_PROTECT(bombers)
|
||||
|
||||
@@ -29,6 +29,7 @@ GLOBAL_LIST_INIT(traits_by_type, list(
|
||||
"TRAIT_SLEEPIMMUNE" = TRAIT_SLEEPIMMUNE,
|
||||
"TRAIT_PUSHIMMUNE" = TRAIT_PUSHIMMUNE,
|
||||
"TRAIT_SHOCKIMMUNE" = TRAIT_SHOCKIMMUNE,
|
||||
"TRAIT_TESLA_SHOCKIMMUNE" = TRAIT_TESLA_SHOCKIMMUNE,
|
||||
"TRAIT_STABLEHEART" = TRAIT_STABLEHEART,
|
||||
"TRAIT_STABLELIVER" = TRAIT_STABLELIVER,
|
||||
"TRAIT_RESISTHEAT" = TRAIT_RESISTHEAT,
|
||||
|
||||
+18
-15
@@ -80,7 +80,7 @@
|
||||
|
||||
if(SEND_SIGNAL(src, COMSIG_MOB_CLICKON, A, params) & COMSIG_MOB_CANCEL_CLICKON)
|
||||
return
|
||||
|
||||
|
||||
var/list/modifiers = params2list(params)
|
||||
if(modifiers["shift"] && modifiers["middle"])
|
||||
ShiftMiddleClickOn(A)
|
||||
@@ -327,10 +327,9 @@
|
||||
return
|
||||
|
||||
/atom/proc/ShiftClick(mob/user)
|
||||
var/flags = SEND_SIGNAL(src, COMSIG_CLICK_SHIFT, user)
|
||||
var/flags = SEND_SIGNAL(src, COMSIG_CLICK_SHIFT, user) | SEND_SIGNAL(user, COMSIG_MOB_CLICKED_SHIFT_ON, src)
|
||||
if(!(flags & COMPONENT_DENY_EXAMINATE) && user.client && (user.client.eye == user || user.client.eye == user.loc || flags & COMPONENT_ALLOW_EXAMINATE))
|
||||
user.examinate(src)
|
||||
return
|
||||
|
||||
/*
|
||||
Ctrl click
|
||||
@@ -427,32 +426,36 @@
|
||||
LE.fire()
|
||||
|
||||
// Simple helper to face what you clicked on, in case it should be needed in more than one place
|
||||
/mob/proc/face_atom(atom/A)
|
||||
if( buckled || stat != CONSCIOUS || !A || !x || !y || !A.x || !A.y )
|
||||
/mob/proc/face_atom(atom/A, ismousemovement = FALSE)
|
||||
if( buckled || stat != CONSCIOUS || !loc || !A || !A.x || !A.y )
|
||||
return
|
||||
var/dx = A.x - x
|
||||
var/dy = A.y - y
|
||||
var/atom/L = loc
|
||||
if(L.flags_1 & BLOCK_FACE_ATOM_1)
|
||||
return
|
||||
var/turf/T = get_turf(src)
|
||||
var/dx = A.x - T.x
|
||||
var/dy = A.y - T.y
|
||||
if(!dx && !dy) // Wall items are graphically shifted but on the floor
|
||||
if(A.pixel_y > 16)
|
||||
setDir(NORTH)
|
||||
setDir(NORTH, ismousemovement)
|
||||
else if(A.pixel_y < -16)
|
||||
setDir(SOUTH)
|
||||
setDir(SOUTH, ismousemovement)
|
||||
else if(A.pixel_x > 16)
|
||||
setDir(EAST)
|
||||
setDir(EAST, ismousemovement)
|
||||
else if(A.pixel_x < -16)
|
||||
setDir(WEST)
|
||||
setDir(WEST, ismousemovement)
|
||||
return
|
||||
|
||||
if(abs(dx) < abs(dy))
|
||||
if(dy > 0)
|
||||
setDir(NORTH)
|
||||
setDir(NORTH, ismousemovement)
|
||||
else
|
||||
setDir(SOUTH)
|
||||
setDir(SOUTH, ismousemovement)
|
||||
else
|
||||
if(dx > 0)
|
||||
setDir(EAST)
|
||||
setDir(EAST, ismousemovement)
|
||||
else
|
||||
setDir(WEST)
|
||||
setDir(WEST, ismousemovement)
|
||||
|
||||
//debug
|
||||
/obj/screen/proc/scale_to(x1,y1)
|
||||
|
||||
@@ -241,13 +241,13 @@
|
||||
using.hud = src
|
||||
hotkeybuttons += using
|
||||
|
||||
//CIT CHANGES - rest and combat mode buttons
|
||||
using = new /obj/screen/restbutton()
|
||||
using.icon = tg_ui_icon_to_cit_ui(ui_style)
|
||||
using = new /obj/screen/rest()
|
||||
using.icon = ui_style
|
||||
using.screen_loc = ui_pull_resist
|
||||
using.hud = src
|
||||
static_inventory += using
|
||||
|
||||
//CIT CHANGES - combat mode buttons
|
||||
using = new /obj/screen/combattoggle()
|
||||
using.icon = tg_ui_icon_to_cit_ui(ui_style)
|
||||
using.screen_loc = ui_combat_toggle
|
||||
|
||||
@@ -24,6 +24,10 @@
|
||||
blend_mode = BLEND_MULTIPLY
|
||||
alpha = 255
|
||||
|
||||
/obj/screen/plane_master/openspace/Initialize()
|
||||
. = ..()
|
||||
filters += filter(type="alpha", render_source=FIELD_OF_VISION_RENDER_TARGET, flags=MASK_INVERSE)
|
||||
|
||||
/obj/screen/plane_master/openspace/backdrop(mob/mymob)
|
||||
filters = list()
|
||||
filters += filter(type = "drop_shadow", color = "#04080FAA", size = -10)
|
||||
@@ -46,6 +50,32 @@
|
||||
appearance_flags = PLANE_MASTER
|
||||
blend_mode = BLEND_OVERLAY
|
||||
|
||||
/obj/screen/plane_master/wall
|
||||
name = "wall plane master"
|
||||
plane = WALL_PLANE
|
||||
appearance_flags = PLANE_MASTER
|
||||
|
||||
/obj/screen/plane_master/wall/backdrop(mob/mymob)
|
||||
if(mymob?.client?.prefs.ambientocclusion)
|
||||
add_filter("ambient_occlusion", 0, AMBIENT_OCCLUSION(4, "#04080FAA"))
|
||||
else
|
||||
remove_filter("ambient_occlusion")
|
||||
|
||||
/obj/screen/plane_master/above_wall
|
||||
name = "above wall plane master"
|
||||
plane = ABOVE_WALL_PLANE
|
||||
appearance_flags = PLANE_MASTER
|
||||
|
||||
/obj/screen/plane_master/above_wall/Initialize()
|
||||
. = ..()
|
||||
add_filter("vision_cone", 100, list(type="alpha", render_source=FIELD_OF_VISION_RENDER_TARGET, flags=MASK_INVERSE))
|
||||
|
||||
/obj/screen/plane_master/above_wall/backdrop(mob/mymob)
|
||||
if(mymob?.client?.prefs.ambientocclusion)
|
||||
add_filter("ambient_occlusion", 0, AMBIENT_OCCLUSION(3, "#04080F64"))
|
||||
else
|
||||
remove_filter("ambient_occlusion")
|
||||
|
||||
///Contains most things in the game world
|
||||
/obj/screen/plane_master/game_world
|
||||
name = "game world plane master"
|
||||
@@ -53,12 +83,50 @@
|
||||
appearance_flags = PLANE_MASTER //should use client color
|
||||
blend_mode = BLEND_OVERLAY
|
||||
|
||||
/obj/screen/plane_master/game_world/Initialize()
|
||||
. = ..()
|
||||
add_filter("vision_cone", 100, list(type="alpha", render_source=FIELD_OF_VISION_RENDER_TARGET, flags=MASK_INVERSE))
|
||||
|
||||
/obj/screen/plane_master/game_world/backdrop(mob/mymob)
|
||||
if(istype(mymob) && mymob.client && mymob.client.prefs && mymob.client.prefs.ambientocclusion)
|
||||
add_filter("ambient_occlusion", 0, AMBIENT_OCCLUSION)
|
||||
if(mymob?.client?.prefs.ambientocclusion)
|
||||
add_filter("ambient_occlusion", 0, AMBIENT_OCCLUSION(4, "#04080FAA"))
|
||||
else
|
||||
remove_filter("ambient_occlusion")
|
||||
update_filters()
|
||||
|
||||
//Reserved to chat messages, so they are still displayed above the field of vision masking.
|
||||
/obj/screen/plane_master/chat_messages
|
||||
name = "chat messages plane master"
|
||||
plane = CHAT_PLANE
|
||||
appearance_flags = PLANE_MASTER
|
||||
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
|
||||
|
||||
///Contains all shadow cone masks, whose image overrides are displayed only to their respective owners.
|
||||
/obj/screen/plane_master/field_of_vision
|
||||
name = "field of vision mask plane master"
|
||||
plane = FIELD_OF_VISION_PLANE
|
||||
render_target = FIELD_OF_VISION_RENDER_TARGET
|
||||
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
|
||||
|
||||
/obj/screen/plane_master/field_of_vision/Initialize()
|
||||
. = ..()
|
||||
filters += filter(type="alpha", render_source=FIELD_OF_VISION_BLOCKER_RENDER_TARGET, flags=MASK_INVERSE)
|
||||
|
||||
///Used to display the owner and its adjacent surroundings through the FoV plane mask.
|
||||
/obj/screen/plane_master/field_of_vision_blocker
|
||||
name = "field of vision blocker plane master"
|
||||
plane = FIELD_OF_VISION_BLOCKER_PLANE
|
||||
render_target = FIELD_OF_VISION_BLOCKER_RENDER_TARGET
|
||||
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
|
||||
|
||||
///Stores the visible portion of the FoV shadow cone.
|
||||
/obj/screen/plane_master/field_of_vision_visual
|
||||
name = "field of vision visual plane master"
|
||||
plane = FIELD_OF_VISION_VISUAL_PLANE
|
||||
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
|
||||
|
||||
/obj/screen/plane_master/field_of_vision_visual/Initialize()
|
||||
. = ..()
|
||||
filters += filter(type="alpha", render_source=FIELD_OF_VISION_BLOCKER_RENDER_TARGET, flags=MASK_INVERSE)
|
||||
|
||||
///Contains all lighting objects
|
||||
/obj/screen/plane_master/lighting
|
||||
@@ -87,11 +155,12 @@
|
||||
/obj/screen/plane_master/emissive/Initialize()
|
||||
. = ..()
|
||||
filters += filter(type="alpha", render_source=EMISSIVE_BLOCKER_RENDER_TARGET, flags=MASK_INVERSE)
|
||||
filters += filter(type="alpha", render_source=FIELD_OF_VISION_RENDER_TARGET, flags=MASK_INVERSE)
|
||||
|
||||
/**
|
||||
* Things placed on this always mask the lighting plane. Doesn't render directly.
|
||||
*
|
||||
* Always masks the light plane, isn't blocked by anything. Use for on mob glows,
|
||||
* Always masks the light plane, isn't blocked by anything (except Field of Vision). Use for on mob glows,
|
||||
* magic stuff, etc.
|
||||
*/
|
||||
|
||||
@@ -101,6 +170,10 @@
|
||||
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
|
||||
render_target = EMISSIVE_UNBLOCKABLE_RENDER_TARGET
|
||||
|
||||
/obj/screen/plane_master/emissive_unblockable/Initialize()
|
||||
. = ..()
|
||||
filters += filter(type="alpha", render_source=FIELD_OF_VISION_RENDER_TARGET, flags=MASK_INVERSE)
|
||||
|
||||
/**
|
||||
* Things placed on this layer mask the emissive layer. Doesn't render directly
|
||||
*
|
||||
|
||||
@@ -238,6 +238,7 @@ GLOBAL_LIST_EMPTY(radial_menus)
|
||||
var/mutable_appearance/MA = new /mutable_appearance(E)
|
||||
if(MA)
|
||||
MA.layer = ABOVE_HUD_LAYER
|
||||
MA.plane = ABOVE_HUD_PLANE
|
||||
MA.appearance_flags |= RESET_TRANSFORM
|
||||
return MA
|
||||
|
||||
@@ -255,6 +256,7 @@ GLOBAL_LIST_EMPTY(radial_menus)
|
||||
current_user = M.client
|
||||
//Blank
|
||||
menu_holder = image(icon='icons/effects/effects.dmi',loc=anchor,icon_state="nothing",layer = ABOVE_HUD_LAYER)
|
||||
menu_holder.plane = ABOVE_HUD_PLANE
|
||||
menu_holder.appearance_flags |= KEEP_APART
|
||||
menu_holder.vis_contents += elements + close_button
|
||||
current_user.images += menu_holder
|
||||
@@ -285,13 +287,16 @@ GLOBAL_LIST_EMPTY(radial_menus)
|
||||
Choices should be a list where list keys are movables or text used for element names and return value
|
||||
and list values are movables/icons/images used for element icons
|
||||
*/
|
||||
/proc/show_radial_menu(mob/user, atom/anchor, list/choices, uniqueid, radius, datum/callback/custom_check, require_near = FALSE, tooltips = FALSE)
|
||||
/proc/show_radial_menu(mob/user, atom/anchor, list/choices, uniqueid, radius, datum/callback/custom_check, require_near = FALSE, tooltips = FALSE, no_repeat_close = FALSE)
|
||||
if(!user || !anchor || !length(choices))
|
||||
return
|
||||
if(!uniqueid)
|
||||
uniqueid = "defmenu_[REF(user)]_[REF(anchor)]"
|
||||
|
||||
if(GLOB.radial_menus[uniqueid])
|
||||
if(!no_repeat_close)
|
||||
var/datum/radial_menu/menu = GLOB.radial_menus[uniqueid]
|
||||
menu.finished = TRUE
|
||||
return
|
||||
|
||||
var/datum/radial_menu/menu = new
|
||||
@@ -308,4 +313,9 @@ GLOBAL_LIST_EMPTY(radial_menus)
|
||||
var/answer = menu.selected_choice
|
||||
qdel(menu)
|
||||
GLOB.radial_menus -= uniqueid
|
||||
if(require_near && !in_range(anchor, user))
|
||||
return
|
||||
if(istype(custom_check))
|
||||
if(!custom_check.Invoke())
|
||||
return
|
||||
return answer
|
||||
@@ -54,13 +54,18 @@
|
||||
|
||||
/obj/screen/storage/volumetric_box
|
||||
icon_state = "stored_continue"
|
||||
layer = VOLUMETRIC_STORAGE_BOX_LAYER
|
||||
plane = VOLUMETRIC_STORAGE_BOX_PLANE
|
||||
var/obj/item/our_item
|
||||
|
||||
/obj/screen/storage/volumetric_box/Initialize(mapload, new_master, our_item)
|
||||
/obj/screen/storage/volumetric_box/Initialize(mapload, new_master, obj/item/our_item)
|
||||
src.our_item = our_item
|
||||
RegisterSignal(our_item, COMSIG_ITEM_MOUSE_ENTER, .proc/on_item_mouse_enter)
|
||||
RegisterSignal(our_item, COMSIG_ITEM_MOUSE_EXIT, .proc/on_item_mouse_exit)
|
||||
return ..()
|
||||
|
||||
/obj/screen/storage/volumetric_box/Destroy()
|
||||
makeItemInactive()
|
||||
our_item = null
|
||||
return ..()
|
||||
|
||||
@@ -70,10 +75,34 @@
|
||||
/obj/screen/storage/volumetric_box/MouseDrop(atom/over, src_location, over_location, src_control, over_control, params)
|
||||
return our_item.MouseDrop(over, src_location, over_location, src_control, over_control, params)
|
||||
|
||||
/obj/screen/storage/volumetric_box/MouseExited(location, control, params)
|
||||
makeItemInactive()
|
||||
|
||||
/obj/screen/storage/volumetric_box/MouseEntered(location, control, params)
|
||||
makeItemActive()
|
||||
|
||||
/obj/screen/storage/volumetric_box/proc/on_item_mouse_enter()
|
||||
makeItemActive()
|
||||
|
||||
/obj/screen/storage/volumetric_box/proc/on_item_mouse_exit()
|
||||
makeItemInactive()
|
||||
|
||||
/obj/screen/storage/volumetric_box/proc/makeItemInactive()
|
||||
if(!our_item)
|
||||
return
|
||||
our_item.layer = VOLUMETRIC_STORAGE_ITEM_LAYER
|
||||
our_item.plane = VOLUMETRIC_STORAGE_ITEM_PLANE
|
||||
|
||||
/obj/screen/storage/volumetric_box/proc/makeItemActive()
|
||||
if(!our_item)
|
||||
return
|
||||
our_item.layer = VOLUMETRIC_STORAGE_ACTIVE_ITEM_LAYER //make sure we display infront of the others!
|
||||
our_item.plane = VOLUMETRIC_STORAGE_ACTIVE_ITEM_PLANE
|
||||
|
||||
/obj/screen/storage/volumetric_box/center
|
||||
icon_state = "stored_continue"
|
||||
var/obj/screen/storage/stored_left/left
|
||||
var/obj/screen/storage/stored_right/right
|
||||
var/obj/screen/storage/volumetric_edge/stored_left/left
|
||||
var/obj/screen/storage/volumetric_edge/stored_right/right
|
||||
var/pixel_size
|
||||
|
||||
/obj/screen/storage/volumetric_box/center/Initialize(mapload, new_master, our_item)
|
||||
@@ -87,7 +116,7 @@
|
||||
return ..()
|
||||
|
||||
/obj/screen/storage/volumetric_box/center/proc/on_screen_objects()
|
||||
return list(src, left, right)
|
||||
return list(src)
|
||||
|
||||
/**
|
||||
* Sets the size of this box screen object and regenerates its left/right borders. This includes the actual border's size!
|
||||
@@ -96,18 +125,38 @@
|
||||
if(pixel_size == pixels)
|
||||
return
|
||||
pixel_size = pixels
|
||||
cut_overlays()
|
||||
cut_overlays(TRUE)
|
||||
//our icon size is 32 pixels.
|
||||
transform = matrix((pixels - (VOLUMETRIC_STORAGE_BOX_BORDER_SIZE * 2)) / VOLUMETRIC_STORAGE_BOX_ICON_SIZE, 0, 0, 0, 1, 0)
|
||||
left.pixel_x = -((pixels - VOLUMETRIC_STORAGE_BOX_ICON_SIZE) * 0.5) - VOLUMETRIC_STORAGE_BOX_BORDER_SIZE
|
||||
right.pixel_x = ((pixels - VOLUMETRIC_STORAGE_BOX_ICON_SIZE) * 0.5) + VOLUMETRIC_STORAGE_BOX_BORDER_SIZE
|
||||
add_overlay(left)
|
||||
add_overlay(right)
|
||||
add_overlay(left, TRUE)
|
||||
add_overlay(right, TRUE)
|
||||
|
||||
/obj/screen/storage/stored_left
|
||||
/obj/screen/storage/volumetric_edge
|
||||
layer = VOLUMETRIC_STORAGE_BOX_LAYER
|
||||
plane = VOLUMETRIC_STORAGE_BOX_PLANE
|
||||
|
||||
/obj/screen/storage/volumetric_edge/Initialize(mapload, master, our_item)
|
||||
src.master = master
|
||||
return ..()
|
||||
|
||||
/obj/screen/storage/volumetric_edge/Click(location, control, params)
|
||||
return master.Click(location, control, params)
|
||||
|
||||
/obj/screen/storage/volumetric_edge/MouseDrop(atom/over, src_location, over_location, src_control, over_control, params)
|
||||
return master.MouseDrop(over, src_location, over_location, src_control, over_control, params)
|
||||
|
||||
/obj/screen/storage/volumetric_edge/MouseExited(location, control, params)
|
||||
return master.MouseExited(location, control, params)
|
||||
|
||||
/obj/screen/storage/volumetric_edge/MouseEntered(location, control, params)
|
||||
return master.MouseEntered(location, control, params)
|
||||
|
||||
/obj/screen/storage/volumetric_edge/stored_left
|
||||
icon_state = "stored_start"
|
||||
appearance_flags = APPEARANCE_UI | KEEP_APART | RESET_TRANSFORM // Yes I know RESET_TRANSFORM is in APPEARANCE_UI but we're hard-asserting this incase someone changes it.
|
||||
|
||||
/obj/screen/storage/stored_right
|
||||
/obj/screen/storage/volumetric_edge/stored_right
|
||||
icon_state = "stored_end"
|
||||
appearance_flags = APPEARANCE_UI | KEEP_APART | RESET_TRANSFORM
|
||||
|
||||
@@ -91,7 +91,7 @@
|
||||
log_combat(user, M, "attacked", src.name, "(INTENT: [uppertext(user.a_intent)]) (DAMTYPE: [uppertext(damtype)])")
|
||||
add_fingerprint(user)
|
||||
|
||||
user.adjustStaminaLossBuffered(getweight()*0.8)//CIT CHANGE - makes attacking things cause stamina loss
|
||||
user.adjustStaminaLossBuffered(getweight(user, STAM_COST_ATTACK_MOB_MULT))//CIT CHANGE - makes attacking things cause stamina loss
|
||||
|
||||
//the equivalent of the standard version of attack() but for object targets.
|
||||
/obj/item/proc/attack_obj(obj/O, mob/living/user)
|
||||
@@ -102,7 +102,7 @@
|
||||
if(IS_STAMCRIT(user)) // CIT CHANGE - makes it impossible to attack in stamina softcrit
|
||||
to_chat(user, "<span class='warning'>You're too exhausted.</span>") // CIT CHANGE - ditto
|
||||
return // CIT CHANGE - ditto
|
||||
user.adjustStaminaLossBuffered(getweight()*1.2)//CIT CHANGE - makes attacking things cause stamina loss
|
||||
user.adjustStaminaLossBuffered(getweight(user, STAM_COST_ATTACK_OBJ_MULT))//CIT CHANGE - makes attacking things cause stamina loss
|
||||
user.changeNext_move(CLICK_CD_MELEE)
|
||||
user.do_attack_animation(O)
|
||||
O.attacked_by(src, user)
|
||||
@@ -111,28 +111,34 @@
|
||||
return
|
||||
|
||||
/obj/attacked_by(obj/item/I, mob/living/user)
|
||||
if(I.force)
|
||||
var/totitemdamage = I.force
|
||||
var/bad_trait
|
||||
if(!(user.combat_flags & COMBAT_FLAG_COMBAT_ACTIVE) && iscarbon(user))
|
||||
totitemdamage *= 0.5
|
||||
bad_trait = SKILL_COMBAT_MODE //blacklist combat skills.
|
||||
if(I.used_skills && user.mind)
|
||||
if(totitemdamage)
|
||||
totitemdamage = user.mind.item_action_skills_mod(I, totitemdamage, I.skill_difficulty, SKILL_ATTACK_OBJ, bad_trait)
|
||||
for(var/skill in I.used_skills)
|
||||
if(!(I.used_skills[skill] & SKILL_TRAIN_ATTACK_OBJ))
|
||||
continue
|
||||
user.mind.auto_gain_experience(skill, I.skill_gain)
|
||||
if(totitemdamage)
|
||||
visible_message("<span class='danger'>[user] has hit [src] with [I]!</span>", null, null, COMBAT_MESSAGE_RANGE)
|
||||
//only witnesses close by and the victim see a hit message.
|
||||
log_combat(user, src, "attacked", I)
|
||||
take_damage(I.force, I.damtype, "melee", 1)
|
||||
take_damage(totitemdamage, I.damtype, "melee", 1)
|
||||
|
||||
/mob/living/attacked_by(obj/item/I, mob/living/user)
|
||||
//CIT CHANGES START HERE - combatmode and resting checks
|
||||
var/totitemdamage = I.force
|
||||
if(!(user.combat_flags & COMBAT_FLAG_COMBAT_ACTIVE))
|
||||
totitemdamage *= 0.5
|
||||
if(!CHECK_MOBILITY(user, MOBILITY_STAND))
|
||||
totitemdamage *= 0.5
|
||||
//CIT CHANGES END HERE
|
||||
var/list/block_return = list()
|
||||
if((user != src) && run_block(I, totitemdamage, "the [I.name]", ATTACK_TYPE_MELEE, I.armour_penetration, user, return_list = block_return) & BLOCK_SUCCESS)
|
||||
var/totitemdamage = pre_attacked_by(I, user)
|
||||
if((user != src) && mob_run_block(I, totitemdamage, "the [I.name]", ATTACK_TYPE_MELEE, I.armour_penetration, user, null, block_return) & BLOCK_SUCCESS)
|
||||
return FALSE
|
||||
totitemdamage = block_calculate_resultant_damage(totitemdamage, block_return)
|
||||
send_item_attack_message(I, user)
|
||||
I.do_stagger_action(src, user)
|
||||
I.do_stagger_action(src, user, totitemdamage)
|
||||
if(I.force)
|
||||
apply_damage(totitemdamage, I.damtype) //CIT CHANGE - replaces I.force with totitemdamage
|
||||
apply_damage(totitemdamage, I.damtype)
|
||||
if(I.damtype == BRUTE)
|
||||
if(prob(33))
|
||||
I.add_mob_blood(src)
|
||||
@@ -148,6 +154,28 @@
|
||||
else
|
||||
return ..()
|
||||
|
||||
/mob/living/proc/pre_attacked_by(obj/item/I, mob/living/user)
|
||||
. = I.force
|
||||
var/bad_trait
|
||||
if(!(user.combat_flags & COMBAT_FLAG_COMBAT_ACTIVE) && iscarbon(user))
|
||||
. *= 0.5
|
||||
bad_trait = SKILL_COMBAT_MODE //blacklist combat skills.
|
||||
if(!CHECK_MOBILITY(user, MOBILITY_STAND))
|
||||
. *= 0.5
|
||||
if(!user.mind || !I.used_skills)
|
||||
return
|
||||
if(.)
|
||||
. = user.mind.item_action_skills_mod(I, ., I.skill_difficulty, SKILL_ATTACK_MOB, bad_trait)
|
||||
for(var/skill in I.used_skills)
|
||||
if(!(I.used_skills[skill] & SKILL_TRAIN_ATTACK_MOB))
|
||||
continue
|
||||
user.mind.auto_gain_experience(skill, I.skill_gain)
|
||||
|
||||
/mob/living/carbon/pre_attacked_by(obj/item/I, mob/living/user)
|
||||
. = ..()
|
||||
if(!(combat_flags & COMBAT_FLAG_COMBAT_ACTIVE))
|
||||
. *= 1.5
|
||||
|
||||
// Proximity_flag is 1 if this afterattack was called on something adjacent, in your square, or on your person.
|
||||
// Click parameters is the params string from byond Click() code, see that documentation.
|
||||
/obj/item/proc/afterattack(atom/target, mob/user, proximity_flag, click_parameters)
|
||||
@@ -181,22 +209,30 @@
|
||||
return 1
|
||||
|
||||
/// How much stamina this takes to swing this is not for realism purposes hecc off.
|
||||
/obj/item/proc/getweight()
|
||||
return total_mass || w_class * 1.25
|
||||
/obj/item/proc/getweight(mob/living/user, multiplier = 1, trait = SKILL_STAMINA_COST)
|
||||
. = (total_mass || w_class * STAM_COST_W_CLASS_MULT) * multiplier
|
||||
if(!user)
|
||||
return
|
||||
var/bad_trait
|
||||
if(iscarbon(user) && !(user.combat_flags & COMBAT_FLAG_COMBAT_ACTIVE))
|
||||
. *= STAM_COST_NO_COMBAT_MULT
|
||||
bad_trait = SKILL_COMBAT_MODE
|
||||
if(used_skills && user.mind)
|
||||
. = user.mind.item_action_skills_mod(src, ., skill_difficulty, trait, bad_trait, FALSE)
|
||||
|
||||
/// How long this staggers for. 0 and negatives supported.
|
||||
/obj/item/proc/melee_stagger_duration()
|
||||
/obj/item/proc/melee_stagger_duration(force_override)
|
||||
if(!isnull(stagger_force))
|
||||
return stagger_force
|
||||
/// totally not an untested, arbitrary equation.
|
||||
return clamp((1.5 + (w_class/7.5)) * (force / 2), 0, 10 SECONDS)
|
||||
return clamp((1.5 + (w_class/7.5)) * ((force_override || force) / 2), 0, 10 SECONDS)
|
||||
|
||||
/obj/item/proc/do_stagger_action(mob/living/target, mob/living/user)
|
||||
/obj/item/proc/do_stagger_action(mob/living/target, mob/living/user, force_override)
|
||||
if(!CHECK_BITFIELD(target.status_flags, CANSTAGGER))
|
||||
return FALSE
|
||||
if(target.combat_flags & COMBAT_FLAG_SPRINT_ACTIVE)
|
||||
target.do_staggered_animation()
|
||||
var/duration = melee_stagger_duration()
|
||||
var/duration = melee_stagger_duration(force_override)
|
||||
if(!duration) //0
|
||||
return FALSE
|
||||
else if(duration > 0)
|
||||
|
||||
@@ -3,9 +3,7 @@
|
||||
name = "Initializing..."
|
||||
var/target
|
||||
|
||||
INITIALIZE_IMMEDIATE(/obj/effect/statclick)
|
||||
|
||||
/obj/effect/statclick/Initialize(mapload, text, target) //Don't port this to Initialize it's too critical
|
||||
/obj/effect/statclick/New(loc, text, target) //Don't port this to Initialize it's too critical
|
||||
. = ..()
|
||||
name = text
|
||||
src.target = target
|
||||
@@ -33,6 +31,14 @@ INITIALIZE_IMMEDIATE(/obj/effect/statclick)
|
||||
usr.client.debug_variables(target)
|
||||
message_admins("Admin [key_name_admin(usr)] is debugging the [target] [class].")
|
||||
|
||||
/obj/effect/statclick/misc_subsystems/Click()
|
||||
if(!usr.client.holder)
|
||||
return
|
||||
var/subsystem = input(usr, "Debug which subsystem?", "Debug nonprocessing subsystem") as null|anything in (Master.subsystems - Master.statworthy_subsystems)
|
||||
if(!subsystem)
|
||||
return
|
||||
usr.client.debug_variables(subsystem)
|
||||
message_admins("Admin [key_name_admin(usr)] is debugging the [subsystem] subsystem.")
|
||||
|
||||
// Debug verbs.
|
||||
/client/proc/restart_controller(controller in list("Master", "Failsafe"))
|
||||
|
||||
@@ -35,6 +35,13 @@
|
||||
/datum/config_entry/keyed_list/midround_antag/ValidateListEntry(key_name, key_value)
|
||||
return key_name in config.modes
|
||||
|
||||
/datum/config_entry/keyed_list/force_antag_count
|
||||
key_mode = KEY_MODE_TEXT
|
||||
value_mode = VALUE_MODE_FLAG
|
||||
|
||||
/datum/config_entry/keyed_list/force_antag_count/ValidateListEntry(key_name, key_value)
|
||||
return key_name in config.modes
|
||||
|
||||
/datum/config_entry/keyed_list/policy
|
||||
key_mode = KEY_MODE_TEXT
|
||||
value_mode = VALUE_MODE_TEXT
|
||||
@@ -74,6 +81,8 @@
|
||||
|
||||
/datum/config_entry/flag/disable_peaceborg
|
||||
|
||||
/datum/config_entry/flag/economy //money money money money money money money money money money money money
|
||||
|
||||
/datum/config_entry/number/minimum_secborg_alert //Minimum alert level for secborgs to be chosen.
|
||||
config_entry_value = 3
|
||||
|
||||
@@ -498,3 +507,13 @@
|
||||
|
||||
//Allows players to set a hexadecimal color of their choice as skin tone, on top of the standard ones.
|
||||
/datum/config_entry/flag/allow_custom_skintones
|
||||
|
||||
///Initial loadout points
|
||||
/datum/config_entry/number/initial_gear_points
|
||||
config_entry_value = 10
|
||||
|
||||
/**
|
||||
* Enables the FoV component, which hides objects and mobs behind the parent from their sight, unless they turn around, duh.
|
||||
* Camera mobs, AIs, ghosts and some other are of course exempt from this. This also doesn't influence simplemob AI, for the best.
|
||||
*/
|
||||
/datum/config_entry/flag/use_field_of_vision
|
||||
|
||||
@@ -28,6 +28,8 @@ GLOBAL_REAL(Master, /datum/controller/master) = new
|
||||
|
||||
// List of subsystems to process().
|
||||
var/list/subsystems
|
||||
/// List of subsystems to include in the MC stat panel.
|
||||
var/list/statworthy_subsystems
|
||||
|
||||
// Vars for keeping track of tick drift.
|
||||
var/init_timeofday
|
||||
@@ -65,6 +67,9 @@ GLOBAL_REAL(Master, /datum/controller/master) = new
|
||||
//used by CHECK_TICK as well so that the procs subsystems call can obey that SS's tick limits
|
||||
var/static/current_ticklimit = TICK_LIMIT_RUNNING
|
||||
|
||||
/// Statclick for misc subsystems
|
||||
var/obj/effect/statclick/misc_subsystems/misc_statclick
|
||||
|
||||
/datum/controller/master/New()
|
||||
if(!config)
|
||||
config = new
|
||||
@@ -87,6 +92,11 @@ GLOBAL_REAL(Master, /datum/controller/master) = new
|
||||
_subsystems += new I
|
||||
Master = src
|
||||
|
||||
// We want to see all subsystems during init.
|
||||
statworthy_subsystems = subsystems.Copy()
|
||||
|
||||
misc_statclick = new(null, "Debug")
|
||||
|
||||
if(!GLOB)
|
||||
new /datum/controller/global_vars
|
||||
|
||||
@@ -257,10 +267,14 @@ GLOBAL_REAL(Master, /datum/controller/master) = new
|
||||
var/list/tickersubsystems = list()
|
||||
var/list/runlevel_sorted_subsystems = list(list()) //ensure we always have at least one runlevel
|
||||
var/timer = world.time
|
||||
statworthy_subsystems = list()
|
||||
for (var/thing in subsystems)
|
||||
var/datum/controller/subsystem/SS = thing
|
||||
if (SS.flags & SS_NO_FIRE)
|
||||
if(SS.flags & SS_ALWAYS_SHOW_STAT)
|
||||
statworthy_subsystems += SS
|
||||
continue
|
||||
statworthy_subsystems += SS
|
||||
SS.queued_time = 0
|
||||
SS.queue_next = null
|
||||
SS.queue_prev = null
|
||||
@@ -603,7 +617,7 @@ GLOBAL_REAL(Master, /datum/controller/master) = new
|
||||
|
||||
stat("Byond:", "(FPS:[world.fps]) (TickCount:[world.time/world.tick_lag]) (TickDrift:[round(Master.tickdrift,1)]([round((Master.tickdrift/(world.time/world.tick_lag))*100,0.1)]%)) (Internal Tick Usage: [round(MAPTICK_LAST_INTERNAL_TICK_USAGE,0.1)]%)")
|
||||
stat("Master Controller:", statclick.update("(TickRate:[Master.processing]) (Iteration:[Master.iteration]) (TickLimit: [round(Master.current_ticklimit, 0.1)])"))
|
||||
|
||||
stat("Misc Subsystems", misc_statclick)
|
||||
|
||||
/datum/controller/master/StartLoadingMap()
|
||||
//disallow more than one map to load at once, multithreading it will just cause race conditions
|
||||
|
||||
@@ -0,0 +1,139 @@
|
||||
SUBSYSTEM_DEF(economy)
|
||||
name = "Economy"
|
||||
wait = 5 MINUTES
|
||||
init_order = INIT_ORDER_ECONOMY
|
||||
runlevels = RUNLEVEL_GAME
|
||||
var/roundstart_paychecks = 5
|
||||
var/budget_pool = 35000
|
||||
var/list/department_accounts = list(ACCOUNT_CIV = ACCOUNT_CIV_NAME,
|
||||
ACCOUNT_ENG = ACCOUNT_ENG_NAME,
|
||||
ACCOUNT_SCI = ACCOUNT_SCI_NAME,
|
||||
ACCOUNT_MED = ACCOUNT_MED_NAME,
|
||||
ACCOUNT_SRV = ACCOUNT_SRV_NAME,
|
||||
ACCOUNT_CAR = ACCOUNT_CAR_NAME,
|
||||
ACCOUNT_SEC = ACCOUNT_SEC_NAME)
|
||||
var/list/generated_accounts = list()
|
||||
var/full_ancap = FALSE // Enables extra money charges for things that normally would be free, such as sleepers/cryo/cloning.
|
||||
//Take care when enabling, as players will NOT respond well if the economy is set up for low cash flows.
|
||||
var/alive_humans_bounty = 100
|
||||
var/crew_safety_bounty = 1500
|
||||
var/monster_bounty = 150
|
||||
var/mood_bounty = 100
|
||||
var/techweb_bounty = 250
|
||||
var/slime_bounty = list("grey" = 10,
|
||||
// tier 1
|
||||
"orange" = 100,
|
||||
"metal" = 100,
|
||||
"blue" = 100,
|
||||
"purple" = 100,
|
||||
// tier 2
|
||||
"dark purple" = 500,
|
||||
"dark blue" = 500,
|
||||
"green" = 500,
|
||||
"silver" = 500,
|
||||
"gold" = 500,
|
||||
"yellow" = 500,
|
||||
"red" = 500,
|
||||
"pink" = 500,
|
||||
// tier 3
|
||||
"cerulean" = 750,
|
||||
"sepia" = 750,
|
||||
"bluespace" = 750,
|
||||
"pyrite" = 750,
|
||||
"light pink" = 750,
|
||||
"oil" = 750,
|
||||
"adamantine" = 750,
|
||||
// tier 4
|
||||
"rainbow" = 1000)
|
||||
var/list/bank_accounts = list() //List of normal accounts (not department accounts)
|
||||
var/list/dep_cards = list()
|
||||
|
||||
/datum/controller/subsystem/economy/Initialize(timeofday)
|
||||
var/budget_to_hand_out = round(budget_pool / department_accounts.len)
|
||||
for(var/A in department_accounts)
|
||||
new /datum/bank_account/department(A, budget_to_hand_out)
|
||||
return ..()
|
||||
|
||||
/datum/controller/subsystem/economy/fire(resumed = 0)
|
||||
eng_payout() // Payout based on nothing. What will replace it? Surplus power, powered APC's, air alarms? Who knows.
|
||||
sci_payout() // Payout based on slimes.
|
||||
secmedsrv_payout() // Payout based on crew safety, health, and mood.
|
||||
civ_payout() // Payout based on ??? Profit
|
||||
car_payout() // Cargo's natural gain in the cash moneys.
|
||||
for(var/A in bank_accounts)
|
||||
var/datum/bank_account/B = A
|
||||
B.payday(1)
|
||||
|
||||
|
||||
/datum/controller/subsystem/economy/proc/get_dep_account(dep_id)
|
||||
for(var/datum/bank_account/department/D in generated_accounts)
|
||||
if(D.department_id == dep_id)
|
||||
return D
|
||||
|
||||
/datum/controller/subsystem/economy/proc/eng_payout()
|
||||
var/engineering_cash = 3000
|
||||
var/datum/bank_account/D = get_dep_account(ACCOUNT_ENG)
|
||||
if(D)
|
||||
D.adjust_money(engineering_cash)
|
||||
|
||||
|
||||
/datum/controller/subsystem/economy/proc/car_payout()
|
||||
var/cargo_cash = 500
|
||||
var/datum/bank_account/D = get_dep_account(ACCOUNT_CAR)
|
||||
if(D)
|
||||
D.adjust_money(cargo_cash)
|
||||
|
||||
/datum/controller/subsystem/economy/proc/secmedsrv_payout()
|
||||
var/crew
|
||||
var/alive_crew
|
||||
var/dead_monsters
|
||||
var/cash_to_grant
|
||||
for(var/mob/m in GLOB.mob_list)
|
||||
if(isnewplayer(m))
|
||||
continue
|
||||
if(m.mind)
|
||||
if(isbrain(m) || iscameramob(m))
|
||||
continue
|
||||
if(ishuman(m))
|
||||
var/mob/living/carbon/human/H = m
|
||||
crew++
|
||||
if(H.stat != DEAD)
|
||||
alive_crew++
|
||||
var/datum/component/mood/mood = H.GetComponent(/datum/component/mood)
|
||||
var/medical_cash = (H.health / H.maxHealth) * alive_humans_bounty
|
||||
if(mood)
|
||||
var/datum/bank_account/D = get_dep_account(ACCOUNT_SRV)
|
||||
if(D)
|
||||
var/mood_dosh = (mood.mood_level / 9) * mood_bounty
|
||||
D.adjust_money(mood_dosh)
|
||||
medical_cash *= (mood.sanity / 100)
|
||||
|
||||
var/datum/bank_account/D = get_dep_account(ACCOUNT_MED)
|
||||
if(D)
|
||||
D.adjust_money(medical_cash)
|
||||
if(ishostile(m))
|
||||
var/mob/living/simple_animal/hostile/H = m
|
||||
if(H.stat == DEAD && (H.z in SSmapping.levels_by_trait(ZTRAIT_STATION)))
|
||||
dead_monsters++
|
||||
CHECK_TICK
|
||||
var/living_ratio = alive_crew / crew
|
||||
cash_to_grant = (crew_safety_bounty * living_ratio) + (monster_bounty * dead_monsters)
|
||||
var/datum/bank_account/D = get_dep_account(ACCOUNT_SEC)
|
||||
if(D)
|
||||
D.adjust_money(min(cash_to_grant, MAX_GRANT_SECMEDSRV))
|
||||
|
||||
/datum/controller/subsystem/economy/proc/sci_payout()
|
||||
var/science_bounty = 0
|
||||
for(var/mob/living/simple_animal/slime/S in GLOB.mob_list)
|
||||
if(S.stat == DEAD)
|
||||
continue
|
||||
science_bounty += slime_bounty[S.colour]
|
||||
var/datum/bank_account/D = get_dep_account(ACCOUNT_SCI)
|
||||
if(D)
|
||||
D.adjust_money(min(science_bounty, MAX_GRANT_SCI))
|
||||
|
||||
/datum/controller/subsystem/economy/proc/civ_payout()
|
||||
var/civ_cash = (rand(1,5) * 500)
|
||||
var/datum/bank_account/D = get_dep_account(ACCOUNT_CIV)
|
||||
if(D)
|
||||
D.adjust_money(min(civ_cash, MAX_GRANT_CIV))
|
||||
@@ -451,3 +451,18 @@ SUBSYSTEM_DEF(garbage)
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef TESTING
|
||||
/proc/writeDatumCount()
|
||||
var/list/datums = list()
|
||||
for(var/datum/D in world)
|
||||
datums[D.type] += 1
|
||||
for(var/datum/D)
|
||||
datums[D.type] += 1
|
||||
datums = sortTim(datums, /proc/cmp_numeric_dsc, associative = TRUE)
|
||||
if(fexists("data/DATUMCOUNT.txt"))
|
||||
fdel("data/DATUMCOUNT.txt")
|
||||
var/outfile = file("data/DATUMCOUNT.txt")
|
||||
for(var/path in datums)
|
||||
outfile << "[datums[path]]\t\t\t\t\t[path]"
|
||||
#endif
|
||||
|
||||
@@ -6,13 +6,20 @@ SUBSYSTEM_DEF(input)
|
||||
priority = FIRE_PRIORITY_INPUT
|
||||
runlevels = RUNLEVELS_DEFAULT | RUNLEVEL_LOBBY
|
||||
|
||||
var/list/macro_sets
|
||||
var/list/movement_keys
|
||||
/// Classic mode input focused macro set. Manually set because we can't define ANY or ANY+UP for classic.
|
||||
var/static/list/macroset_classic_input
|
||||
/// Classic mode map focused macro set. Manually set because it needs to be clientside and go to macroset_classic_input.
|
||||
var/static/list/macroset_classic_hotkey
|
||||
/// New hotkey mode macro set. All input goes into map, game keeps incessently setting your focus to map, we can use ANY all we want here; we don't care about the input bar, the user has to force the input bar every time they want to type.
|
||||
var/static/list/macroset_hotkey
|
||||
|
||||
/// Macro set for hotkeys
|
||||
var/list/hotkey_mode_macros
|
||||
/// Macro set for classic.
|
||||
var/list/input_mode_macros
|
||||
|
||||
/datum/controller/subsystem/input/Initialize()
|
||||
setup_default_macro_sets()
|
||||
|
||||
setup_default_movement_keys()
|
||||
setup_macrosets()
|
||||
|
||||
initialized = TRUE
|
||||
|
||||
@@ -20,90 +27,69 @@ SUBSYSTEM_DEF(input)
|
||||
|
||||
return ..()
|
||||
|
||||
// This is for when macro sets are eventualy datumized
|
||||
/datum/controller/subsystem/input/proc/setup_default_macro_sets()
|
||||
var/list/static/default_macro_sets
|
||||
|
||||
if(default_macro_sets)
|
||||
macro_sets = default_macro_sets
|
||||
return
|
||||
|
||||
default_macro_sets = list(
|
||||
"default" = list(
|
||||
"Tab" = "\".winset \\\"input.focus=true?map.focus=true input.background-color=[COLOR_INPUT_DISABLED]:input.focus=true input.background-color=[COLOR_INPUT_ENABLED]\\\"\"",
|
||||
"O" = "ooc",
|
||||
"Ctrl+O" = "looc",
|
||||
"T" = "say",
|
||||
"Ctrl+T" = "whisper",
|
||||
"M" = "me",
|
||||
"Ctrl+M" = "subtle",
|
||||
"Back" = "\".winset \\\"input.text=\\\"\\\"\\\"\"", // This makes it so backspace can remove default inputs
|
||||
"Any" = "\"KeyDown \[\[*\]\]\"",
|
||||
"Any+UP" = "\"KeyUp \[\[*\]\]\"",
|
||||
),
|
||||
"old_default" = list(
|
||||
"Tab" = "\".winset \\\"mainwindow.macro=old_hotkeys map.focus=true input.background-color=[COLOR_INPUT_DISABLED]\\\"\"",
|
||||
"Ctrl+T" = "say",
|
||||
"Ctrl+O" = "ooc",
|
||||
),
|
||||
"old_hotkeys" = list(
|
||||
"Tab" = "\".winset \\\"mainwindow.macro=old_default input.focus=true input.background-color=[COLOR_INPUT_ENABLED]\\\"\"",
|
||||
"O" = "ooc",
|
||||
"L" = "looc",
|
||||
"T" = "say",
|
||||
"M" = "me",
|
||||
"Back" = "\".winset \\\"input.text=\\\"\\\"\\\"\"", // This makes it so backspace can remove default inputs
|
||||
"Any" = "\"KeyDown \[\[*\]\]\"",
|
||||
"Any+UP" = "\"KeyUp \[\[*\]\]\"",
|
||||
),
|
||||
)
|
||||
|
||||
// Because i'm lazy and don't want to type all these out twice
|
||||
var/list/old_default = default_macro_sets["old_default"]
|
||||
|
||||
var/list/static/oldmode_keys = list(
|
||||
/// Sets up the key list for classic mode for when badmins screw up vv's.
|
||||
/datum/controller/subsystem/input/proc/setup_macrosets()
|
||||
// First, let's do the snowflake keyset!
|
||||
macroset_classic_input = list()
|
||||
var/list/classic_mode_keys = list(
|
||||
"North", "East", "South", "West",
|
||||
"Northeast", "Southeast", "Northwest", "Southwest",
|
||||
"Insert", "Delete", "Ctrl", "Alt",
|
||||
"Insert", "Delete", "Ctrl", "Alt", "Shift",
|
||||
"F1", "F2", "F3", "F4", "F5", "F6", "F7", "F8", "F9", "F10", "F11", "F12",
|
||||
)
|
||||
for(var/key in classic_mode_keys)
|
||||
macroset_classic_input[key] = "\"KeyDown [key]\""
|
||||
macroset_classic_input["[key]+UP"] = "\"KeyUp [key]\""
|
||||
// LET'S PLAY THE BIND EVERY KEY GAME!
|
||||
// oh except for Backspace and Enter; if you want to use those you shouldn't have used oldmode!
|
||||
var/list/classic_ctrl_override_keys = list(
|
||||
"\[", "\]", "\\\\", ";", "'", ",", ".", "/", "-", "=", "`"
|
||||
)
|
||||
// i'm lazy let's play the list iteration game of numbers
|
||||
for(var/i in 0 to 9)
|
||||
classic_ctrl_override_keys += "[i]"
|
||||
// let's play the ascii game of A to Z (UPPERCASE)
|
||||
for(var/i in 65 to 90)
|
||||
classic_ctrl_override_keys += ascii2text(i)
|
||||
// let's play the game of clientside bind overrides!
|
||||
classic_ctrl_override_keys -= list("T", "O", "M", "L")
|
||||
macroset_classic_input["Ctrl+T"] = "say"
|
||||
macroset_classic_input["Ctrl+O"] = "ooc"
|
||||
macroset_classic_input["Ctrl+L"] = "looc"
|
||||
// let's play the list iteration game x2
|
||||
for(var/key in classic_ctrl_override_keys)
|
||||
// make sure to double double quote to ensure things are treated as a key combo instead of addition/semicolon logic.
|
||||
macroset_classic_input["\"Ctrl+[key]\""] = "\"KeyDown [istext(classic_ctrl_override_keys[key])? classic_ctrl_override_keys[key] : key]\""
|
||||
macroset_classic_input["\"Ctrl+[key]+UP\""] = "\"KeyUp [istext(classic_ctrl_override_keys[key])? classic_ctrl_override_keys[key] : key]\""
|
||||
// Misc
|
||||
macroset_classic_input["Tab"] = "\".winset \\\"mainwindow.macro=[SKIN_MACROSET_CLASSIC_HOTKEYS] map.focus=true input.background-color=[COLOR_INPUT_DISABLED]\\\"\""
|
||||
macroset_classic_input["Escape"] = "\".winset \\\"input.text=\\\"\\\"\\\"\""
|
||||
|
||||
for(var/i in 1 to oldmode_keys.len)
|
||||
var/key = oldmode_keys[i]
|
||||
old_default[key] = "\"KeyDown [key]\""
|
||||
old_default["[key]+UP"] = "\"KeyUp [key]\""
|
||||
// FINALLY, WE CAN DO SOMETHING MORE NORMAL FOR THE SNOWFLAKE-BUT-LESS KEYSET.
|
||||
macroset_classic_hotkey = list(
|
||||
"Any" = "\"KeyDown \[\[*\]\]\"",
|
||||
"Any+UP" = "\"KeyUp \[\[*\]\]\"",
|
||||
"Tab" = "\".winset \\\"mainwindow.macro=[SKIN_MACROSET_CLASSIC_INPUT] input.focus=true input.background-color=[COLOR_INPUT_ENABLED]\\\"\"",
|
||||
"Escape" = "\".winset \\\"input.text=\\\"\\\"\\\"\"",
|
||||
"Back" = "\".winset \\\"input.text=\\\"\\\"\\\"\"",
|
||||
"O" = "ooc",
|
||||
"T" = "say",
|
||||
"L" = "looc",
|
||||
"M" = "me"
|
||||
)
|
||||
|
||||
var/list/static/oldmode_ctrl_override_keys = list(
|
||||
"W" = "W", "A" = "A", "S" = "S", "D" = "D", // movement
|
||||
"1" = "1", "2" = "2", "3" = "3", "4" = "4", // intent
|
||||
"B" = "B", // resist
|
||||
"E" = "E", // quick equip
|
||||
"F" = "F", // intent left
|
||||
"G" = "G", // intent right
|
||||
"H" = "H", // stop pulling
|
||||
"Q" = "Q", // drop
|
||||
"R" = "R", // throw
|
||||
"X" = "X", // switch hands
|
||||
"Y" = "Y", // activate item
|
||||
"Z" = "Z", // activate item
|
||||
)
|
||||
|
||||
for(var/i in 1 to oldmode_ctrl_override_keys.len)
|
||||
var/key = oldmode_ctrl_override_keys[i]
|
||||
var/override = oldmode_ctrl_override_keys[key]
|
||||
old_default["Ctrl+[key]"] = "\"KeyDown [override]\""
|
||||
old_default["Ctrl+[key]+UP"] = "\"KeyUp [override]\""
|
||||
|
||||
macro_sets = default_macro_sets
|
||||
|
||||
// For initially setting up or resetting to default the movement keys
|
||||
/datum/controller/subsystem/input/proc/setup_default_movement_keys()
|
||||
var/static/list/default_movement_keys = list(
|
||||
"W" = NORTH, "A" = WEST, "S" = SOUTH, "D" = EAST, // WASD
|
||||
"North" = NORTH, "West" = WEST, "South" = SOUTH, "East" = EAST, // Arrow keys & Numpad
|
||||
)
|
||||
|
||||
movement_keys = default_movement_keys.Copy()
|
||||
// And finally, the modern set.
|
||||
macroset_hotkey = list(
|
||||
"Any" = "\"KeyDown \[\[*\]\]\"",
|
||||
"Any+UP" = "\"KeyUp \[\[*\]\]\"",
|
||||
"Tab" = "\".winset \\\"input.focus=true?map.focus=true input.background-color=[COLOR_INPUT_DISABLED]:input.focus=true input.background-color=[COLOR_INPUT_ENABLED]\\\"\"",
|
||||
"Escape" = "\".winset \\\"input.text=\\\"\\\"\\\"\"",
|
||||
"Back" = "\".winset \\\"input.text=\\\"\\\"\\\"\"",
|
||||
"O" = "ooc",
|
||||
"T" = "say",
|
||||
"L" = "looc",
|
||||
"M" = "me"
|
||||
)
|
||||
|
||||
// Badmins just wanna have fun ♪
|
||||
/datum/controller/subsystem/input/proc/refresh_client_macro_sets()
|
||||
@@ -111,9 +97,10 @@ SUBSYSTEM_DEF(input)
|
||||
for(var/i in 1 to clients.len)
|
||||
var/client/user = clients[i]
|
||||
user.set_macros()
|
||||
user.update_movement_keys()
|
||||
|
||||
/datum/controller/subsystem/input/fire()
|
||||
var/list/clients = GLOB.clients // Let's sing the list cache song
|
||||
for(var/i in 1 to length(clients))
|
||||
for(var/i in 1 to clients.len)
|
||||
var/client/C = clients[i]
|
||||
C.keyLoop()
|
||||
|
||||
@@ -479,6 +479,10 @@ SUBSYSTEM_DEF(job)
|
||||
to_chat(M, "<b>[job.custom_spawn_text]</b>")
|
||||
if(CONFIG_GET(number/minimal_access_threshold))
|
||||
to_chat(M, "<span class='notice'><B>As this station was initially staffed with a [CONFIG_GET(flag/jobs_have_minimal_access) ? "full crew, only your job's necessities" : "skeleton crew, additional access may"] have been added to your ID card.</B></span>")
|
||||
if(ishuman(H))
|
||||
var/mob/living/carbon/human/wageslave = H
|
||||
to_chat(M, "<b><span class = 'big'>Your account ID is [wageslave.account_id].</span></b>")
|
||||
H.add_memory("Your account ID is [wageslave.account_id].")
|
||||
if(job && H)
|
||||
if(job.dresscodecompliant)// CIT CHANGE - dress code compliance
|
||||
equip_loadout(N, H) // CIT CHANGE - allows players to spawn with loadout items
|
||||
|
||||
@@ -1,4 +0,0 @@
|
||||
PROCESSING_SUBSYSTEM_DEF(mood)
|
||||
name = "Mood"
|
||||
flags = SS_NO_INIT | SS_BACKGROUND
|
||||
priority = 20
|
||||
@@ -24,6 +24,8 @@ SUBSYSTEM_DEF(persistence)
|
||||
var/list/saved_votes = list()
|
||||
var/list/obj/structure/sign/picture_frame/photo_frames
|
||||
var/list/obj/item/storage/photo_album/photo_albums
|
||||
var/list/obj/structure/sign/painting/painting_frames = list()
|
||||
var/list/paintings = list()
|
||||
|
||||
/datum/controller/subsystem/persistence/Initialize()
|
||||
LoadSatchels()
|
||||
@@ -265,6 +267,7 @@ SUBSYSTEM_DEF(persistence)
|
||||
CollectAntagReputation()
|
||||
SaveRandomizedRecipes()
|
||||
SavePanicBunker()
|
||||
SavePaintings()
|
||||
|
||||
/datum/controller/subsystem/persistence/proc/LoadPanicBunker()
|
||||
var/bunker_path = file("data/bunker_passthrough.json")
|
||||
@@ -528,3 +531,19 @@ SUBSYSTEM_DEF(persistence)
|
||||
file_data["data"] = saved_votes[ckey]
|
||||
fdel(json_file)
|
||||
WRITE_FILE(json_file, json_encode(file_data))
|
||||
|
||||
/datum/controller/subsystem/persistence/proc/LoadPaintings()
|
||||
var/json_file = file("data/paintings.json")
|
||||
if(fexists(json_file))
|
||||
paintings = json_decode(file2text(json_file))
|
||||
|
||||
for(var/obj/structure/sign/painting/P in painting_frames)
|
||||
P.load_persistent()
|
||||
|
||||
/datum/controller/subsystem/persistence/proc/SavePaintings()
|
||||
for(var/obj/structure/sign/painting/P in painting_frames)
|
||||
P.save_persistent()
|
||||
|
||||
var/json_file = file("data/paintings.json")
|
||||
fdel(json_file)
|
||||
WRITE_FILE(json_file, json_encode(paintings))
|
||||
|
||||
@@ -1,21 +1,22 @@
|
||||
PROCESSING_SUBSYSTEM_DEF(projectiles)
|
||||
name = "Projectiles"
|
||||
priority = FIRE_PRIORITY_PROJECTILES
|
||||
wait = 1
|
||||
stat_tag = "PP"
|
||||
flags = SS_NO_INIT|SS_TICKER
|
||||
var/global_pixel_speed = 2
|
||||
var/global_iterations_per_move = 16
|
||||
var/global_pixel_increment_amount = 4
|
||||
var/global_projectile_speed_multiplier = 1
|
||||
|
||||
/datum/controller/subsystem/processing/projectiles/proc/set_pixel_speed(new_speed)
|
||||
global_pixel_speed = new_speed
|
||||
global_pixel_increment_amount = new_speed
|
||||
for(var/i in processing)
|
||||
var/obj/item/projectile/P = i
|
||||
if(istype(P)) //there's non projectiles on this too.
|
||||
P.set_pixel_speed(new_speed)
|
||||
P.set_pixel_increment_amount(new_speed)
|
||||
|
||||
/datum/controller/subsystem/processing/projectiles/vv_edit_var(var_name, var_value)
|
||||
switch(var_name)
|
||||
if(NAMEOF(src, global_pixel_speed))
|
||||
if(NAMEOF(src, global_pixel_increment_amount))
|
||||
set_pixel_speed(var_value)
|
||||
return TRUE
|
||||
else
|
||||
|
||||
@@ -24,6 +24,7 @@ SUBSYSTEM_DEF(research)
|
||||
var/list/techweb_categories = list() //category name = list(node.id = TRUE)
|
||||
var/list/techweb_boost_items = list() //associative double-layer path = list(id = list(point_type = point_discount))
|
||||
var/list/techweb_nodes_hidden = list() //Node ids that should be hidden by default.
|
||||
var/list/techweb_nodes_experimental = list() //Node ids that are exclusive to the BEPIS.
|
||||
|
||||
var/list/techweb_point_items = list( //path = list(point type = value)
|
||||
/obj/item/assembly/signaler/anomaly = list(TECHWEB_POINT_TYPE_GENERIC = 10000),
|
||||
@@ -508,6 +509,8 @@ SUBSYSTEM_DEF(research)
|
||||
D.unlocked_by += node.id
|
||||
if(node.hidden)
|
||||
techweb_nodes_hidden[node.id] = TRUE
|
||||
if(node.experimental)
|
||||
techweb_nodes_experimental[node.id] = TRUE
|
||||
CHECK_TICK
|
||||
generate_techweb_unlock_linking()
|
||||
|
||||
|
||||
@@ -35,10 +35,8 @@ SUBSYSTEM_DEF(shuttle)
|
||||
//supply shuttle stuff
|
||||
var/obj/docking_port/mobile/supply/supply
|
||||
var/ordernum = 1 //order number given to next order
|
||||
var/points = 5000 //number of trade-points we have
|
||||
var/centcom_message = "" //Remarks from CentCom on how well you checked the last order.
|
||||
var/list/discoveredPlants = list() //Typepaths for unusual plants we've already sent CentCom, associated with their potencies
|
||||
var/passive_supply_points_per_minute = 125
|
||||
|
||||
var/list/supply_packs = list()
|
||||
var/list/shoppinglist = list()
|
||||
@@ -113,9 +111,6 @@ SUBSYSTEM_DEF(shuttle)
|
||||
qdel(T, force=TRUE)
|
||||
CheckAutoEvac()
|
||||
|
||||
if(!(times_fired % CEILING(600/wait, 1)))
|
||||
points += passive_supply_points_per_minute
|
||||
|
||||
var/esETA = emergency?.getModeStr()
|
||||
emergency_shuttle_stat_text = "[esETA? "[esETA] [emergency.getTimerStr()]" : ""]"
|
||||
|
||||
@@ -559,7 +554,6 @@ SUBSYSTEM_DEF(shuttle)
|
||||
|
||||
centcom_message = SSshuttle.centcom_message
|
||||
ordernum = SSshuttle.ordernum
|
||||
points = SSshuttle.points
|
||||
emergencyNoEscape = SSshuttle.emergencyNoEscape
|
||||
emergencyCallAmount = SSshuttle.emergencyCallAmount
|
||||
shuttle_purchased = SSshuttle.shuttle_purchased
|
||||
|
||||
@@ -186,6 +186,8 @@
|
||||
|
||||
/datum/action/item_action/New(Target)
|
||||
..()
|
||||
if(button_icon_state)
|
||||
use_target_appearance = FALSE
|
||||
var/obj/item/I = target
|
||||
LAZYINITLIST(I.actions)
|
||||
I.actions += src
|
||||
@@ -345,6 +347,7 @@
|
||||
/datum/action/item_action/clock/quickbind
|
||||
name = "Quickbind"
|
||||
desc = "If you're seeing this, file a bug report."
|
||||
use_target_appearance = FALSE
|
||||
var/scripture_index = 0 //the index of the scripture we're associated with
|
||||
|
||||
/datum/action/item_action/toggle_helmet_flashlight
|
||||
|
||||
@@ -8,11 +8,11 @@
|
||||
icon_icon = 'icons/mob/actions/actions_spells.dmi'
|
||||
|
||||
/datum/action/item_action/ninjaboost
|
||||
check_flags = NONE
|
||||
name = "Adrenaline Boost"
|
||||
desc = "Inject a secret chemical that will counteract all movement-impairing effect."
|
||||
button_icon_state = "repulse"
|
||||
icon_icon = 'icons/mob/actions/actions_spells.dmi'
|
||||
required_mobility_flags = NONE
|
||||
|
||||
/datum/action/item_action/ninjapulse
|
||||
name = "EM Burst (25E)"
|
||||
|
||||
@@ -63,7 +63,7 @@
|
||||
if(prob(2))
|
||||
switch(rand(1,2))
|
||||
if(1)
|
||||
to_chat(owner, "<i>...[lowertext(hypnotic_phrase)]...</i>")
|
||||
to_chat(owner, "<span class='hypnophrase'><i>...[lowertext(hypnotic_phrase)]...</i></span>")
|
||||
if(2)
|
||||
new /datum/hallucination/chat(owner, TRUE, FALSE, "<span class='hypnophrase'>[hypnotic_phrase]</span>")
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user