mirror of
https://github.com/evilew/GS13-Citadel.git
synced 2026-07-19 04:09:13 +01:00
Merge branch 'master' into punch-bundle
This commit is contained in:
@@ -0,0 +1,36 @@
|
||||
name: Compile changelogs
|
||||
|
||||
on:
|
||||
schedule:
|
||||
- cron: "0 0 * * *"
|
||||
|
||||
jobs:
|
||||
compile:
|
||||
name: "Compile changelogs"
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: "Setup python"
|
||||
uses: actions/setup-python@v1
|
||||
with:
|
||||
python-version: '3.x'
|
||||
- name: "Install deps"
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
python -m pip install pyyaml
|
||||
- name: "Checkout"
|
||||
uses: actions/checkout@v1
|
||||
with:
|
||||
fetch-depth: 25
|
||||
- name: "Compile"
|
||||
run: |
|
||||
python tools/ss13_genchangelog.py html/changelog.html html/changelogs
|
||||
- name: Commit
|
||||
run: |
|
||||
git config --local user.email "action@github.com"
|
||||
git config --local user.name "Changelogs"
|
||||
git pull origin master
|
||||
git commit -m "Automatic changelog compile [ci skip]" -a || true
|
||||
- name: "Push"
|
||||
uses: ad-m/github-push-action@master
|
||||
with:
|
||||
github_token: ${{ secrets.GITHUB_TOKEN }}
|
||||
@@ -0,0 +1,2 @@
|
||||
[langserver]
|
||||
dreamchecker = true
|
||||
@@ -66,7 +66,7 @@
|
||||
/obj/structure/fluff/bus/passable/seat{
|
||||
icon_state = "backseat"
|
||||
},
|
||||
/obj/item/reagent_containers/food/snacks/faggot,
|
||||
/obj/item/reagent_containers/food/snacks/meatball,
|
||||
/turf/open/floor/plasteel/airless/dark{
|
||||
icon_state = "bus"
|
||||
},
|
||||
@@ -90,7 +90,7 @@
|
||||
/obj/structure/fluff/bus/passable/seat{
|
||||
icon_state = "backseat"
|
||||
},
|
||||
/obj/item/reagent_containers/food/snacks/faggot,
|
||||
/obj/item/reagent_containers/food/snacks/meatball,
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/turf/open/floor/plasteel/airless/dark{
|
||||
icon_state = "bus"
|
||||
@@ -158,9 +158,9 @@
|
||||
"aA" = (
|
||||
/obj/structure/fluff/bus/passable,
|
||||
/obj/structure/closet/crate/freezer,
|
||||
/obj/item/reagent_containers/food/snacks/faggot,
|
||||
/obj/item/reagent_containers/food/snacks/faggot,
|
||||
/obj/item/reagent_containers/food/snacks/faggot,
|
||||
/obj/item/reagent_containers/food/snacks/meatball,
|
||||
/obj/item/reagent_containers/food/snacks/meatball,
|
||||
/obj/item/reagent_containers/food/snacks/meatball,
|
||||
/turf/open/floor/plasteel/airless/dark{
|
||||
icon_state = "bus"
|
||||
},
|
||||
@@ -182,7 +182,7 @@
|
||||
/area/ruin/unpowered/no_grav)
|
||||
"aD" = (
|
||||
/obj/structure/fluff/bus/passable,
|
||||
/obj/item/reagent_containers/food/snacks/faggot,
|
||||
/obj/item/reagent_containers/food/snacks/meatball,
|
||||
/turf/open/floor/plasteel/airless/dark{
|
||||
icon_state = "bus"
|
||||
},
|
||||
@@ -256,7 +256,7 @@
|
||||
/turf/open/floor/plating/asteroid/airless,
|
||||
/area/ruin/unpowered/no_grav)
|
||||
"aP" = (
|
||||
/obj/item/reagent_containers/food/snacks/faggot,
|
||||
/obj/item/reagent_containers/food/snacks/meatball,
|
||||
/turf/open/floor/plating/asteroid/airless,
|
||||
/area/ruin/unpowered/no_grav)
|
||||
"aQ" = (
|
||||
@@ -282,7 +282,7 @@
|
||||
icon_state = "backseat"
|
||||
},
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/item/reagent_containers/food/snacks/faggot,
|
||||
/obj/item/reagent_containers/food/snacks/meatball,
|
||||
/turf/open/floor/plasteel/airless/dark{
|
||||
icon_state = "bus"
|
||||
},
|
||||
@@ -318,7 +318,7 @@
|
||||
"aZ" = (
|
||||
/obj/structure/fluff/bus/passable,
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/item/reagent_containers/food/snacks/faggot,
|
||||
/obj/item/reagent_containers/food/snacks/meatball,
|
||||
/turf/open/floor/plasteel/airless/dark{
|
||||
icon_state = "bus"
|
||||
},
|
||||
|
||||
@@ -145,9 +145,6 @@
|
||||
"aE" = (
|
||||
/turf/open/floor/plating/asteroid/airless,
|
||||
/area/ruin/powered)
|
||||
"aF" = (
|
||||
/turf/open/floor/plating/asteroid,
|
||||
/area/ruin/powered)
|
||||
"aG" = (
|
||||
/obj/structure/sink/puddle,
|
||||
/turf/open/floor/plating/asteroid,
|
||||
@@ -241,7 +238,7 @@
|
||||
/turf/closed/mineral/random/low_chance/earth_like,
|
||||
/area/ruin/powered)
|
||||
"bb" = (
|
||||
/turf/closed/mineral/random/earth_like,
|
||||
/turf/closed/mineral/random/no_caves/earth_like,
|
||||
/area/ruin/powered)
|
||||
"bc" = (
|
||||
/obj/item/circuitboard/machine/circuit_imprinter,
|
||||
@@ -1137,7 +1134,7 @@ ao
|
||||
ao
|
||||
ak
|
||||
af
|
||||
aF
|
||||
am
|
||||
bb
|
||||
bb
|
||||
bb
|
||||
@@ -1189,7 +1186,7 @@ an
|
||||
an
|
||||
ae
|
||||
ae
|
||||
aF
|
||||
am
|
||||
bb
|
||||
bb
|
||||
bb
|
||||
@@ -1223,8 +1220,8 @@ bb
|
||||
bb
|
||||
bb
|
||||
ba
|
||||
aF
|
||||
aF
|
||||
am
|
||||
am
|
||||
ba
|
||||
ba
|
||||
ba
|
||||
@@ -1241,7 +1238,7 @@ ar
|
||||
af
|
||||
at
|
||||
at
|
||||
aF
|
||||
am
|
||||
bb
|
||||
fp
|
||||
bb
|
||||
@@ -1275,10 +1272,10 @@ bb
|
||||
bb
|
||||
bb
|
||||
ad
|
||||
aF
|
||||
aF
|
||||
aF
|
||||
aF
|
||||
am
|
||||
am
|
||||
am
|
||||
am
|
||||
ba
|
||||
aH
|
||||
aJ
|
||||
@@ -1286,13 +1283,13 @@ aL
|
||||
bb
|
||||
bb
|
||||
aT
|
||||
aF
|
||||
aF
|
||||
aF
|
||||
aF
|
||||
aF
|
||||
aF
|
||||
aF
|
||||
am
|
||||
am
|
||||
am
|
||||
am
|
||||
am
|
||||
am
|
||||
am
|
||||
aR
|
||||
bb
|
||||
bb
|
||||
@@ -1328,23 +1325,23 @@ bb
|
||||
bb
|
||||
ad
|
||||
au
|
||||
aF
|
||||
am
|
||||
aB
|
||||
aF
|
||||
aF
|
||||
aF
|
||||
aF
|
||||
aF
|
||||
am
|
||||
am
|
||||
am
|
||||
am
|
||||
am
|
||||
ba
|
||||
bb
|
||||
aF
|
||||
aF
|
||||
aF
|
||||
aF
|
||||
aF
|
||||
aF
|
||||
aF
|
||||
aF
|
||||
am
|
||||
am
|
||||
am
|
||||
am
|
||||
am
|
||||
am
|
||||
am
|
||||
am
|
||||
bg
|
||||
bb
|
||||
fp
|
||||
@@ -1384,19 +1381,19 @@ bs
|
||||
aC
|
||||
bC
|
||||
WH
|
||||
aF
|
||||
aF
|
||||
aF
|
||||
am
|
||||
am
|
||||
am
|
||||
ba
|
||||
bb
|
||||
bb
|
||||
aF
|
||||
aF
|
||||
aF
|
||||
aF
|
||||
aF
|
||||
aF
|
||||
aF
|
||||
am
|
||||
am
|
||||
am
|
||||
am
|
||||
am
|
||||
am
|
||||
am
|
||||
bb
|
||||
bb
|
||||
bb
|
||||
@@ -1432,23 +1429,23 @@ bb
|
||||
bb
|
||||
ad
|
||||
ax
|
||||
aF
|
||||
am
|
||||
aD
|
||||
aF
|
||||
aF
|
||||
aF
|
||||
aF
|
||||
am
|
||||
am
|
||||
am
|
||||
am
|
||||
bb
|
||||
bb
|
||||
bb
|
||||
aU
|
||||
bd
|
||||
aF
|
||||
aF
|
||||
am
|
||||
am
|
||||
bl
|
||||
bm
|
||||
aF
|
||||
aF
|
||||
am
|
||||
am
|
||||
bb
|
||||
bb
|
||||
bb
|
||||
@@ -1484,20 +1481,20 @@ bb
|
||||
bb
|
||||
ad
|
||||
ay
|
||||
aF
|
||||
aF
|
||||
aF
|
||||
am
|
||||
am
|
||||
am
|
||||
aG
|
||||
aF
|
||||
aF
|
||||
am
|
||||
am
|
||||
bb
|
||||
bb
|
||||
ba
|
||||
av
|
||||
be
|
||||
aF
|
||||
aF
|
||||
aF
|
||||
am
|
||||
am
|
||||
am
|
||||
bn
|
||||
bo
|
||||
bo
|
||||
@@ -1535,24 +1532,24 @@ bb
|
||||
bb
|
||||
bb
|
||||
ba
|
||||
aF
|
||||
aF
|
||||
aF
|
||||
aF
|
||||
aF
|
||||
aF
|
||||
aF
|
||||
am
|
||||
am
|
||||
am
|
||||
am
|
||||
am
|
||||
am
|
||||
am
|
||||
bb
|
||||
bb
|
||||
bb
|
||||
bc
|
||||
bf
|
||||
aF
|
||||
aF
|
||||
aF
|
||||
aF
|
||||
aF
|
||||
aF
|
||||
am
|
||||
am
|
||||
am
|
||||
am
|
||||
am
|
||||
am
|
||||
br
|
||||
bb
|
||||
bb
|
||||
@@ -1590,22 +1587,22 @@ bb
|
||||
bb
|
||||
bb
|
||||
bb
|
||||
aF
|
||||
aF
|
||||
aF
|
||||
aF
|
||||
aF
|
||||
am
|
||||
am
|
||||
am
|
||||
am
|
||||
am
|
||||
bb
|
||||
bb
|
||||
aF
|
||||
aF
|
||||
aF
|
||||
aF
|
||||
aF
|
||||
aF
|
||||
aF
|
||||
aF
|
||||
aF
|
||||
am
|
||||
am
|
||||
am
|
||||
am
|
||||
am
|
||||
am
|
||||
am
|
||||
am
|
||||
am
|
||||
bb
|
||||
bb
|
||||
bb
|
||||
@@ -1642,21 +1639,21 @@ bb
|
||||
bb
|
||||
bb
|
||||
bb
|
||||
aF
|
||||
aF
|
||||
aF
|
||||
aF
|
||||
aF
|
||||
am
|
||||
am
|
||||
am
|
||||
am
|
||||
am
|
||||
aN
|
||||
aF
|
||||
aF
|
||||
aF
|
||||
aF
|
||||
am
|
||||
am
|
||||
am
|
||||
am
|
||||
aR
|
||||
aF
|
||||
aF
|
||||
aF
|
||||
aF
|
||||
am
|
||||
am
|
||||
am
|
||||
am
|
||||
bb
|
||||
bb
|
||||
fp
|
||||
@@ -1695,22 +1692,22 @@ bb
|
||||
bb
|
||||
bb
|
||||
ba
|
||||
aF
|
||||
aF
|
||||
aF
|
||||
am
|
||||
am
|
||||
am
|
||||
ba
|
||||
ba
|
||||
aF
|
||||
aF
|
||||
aF
|
||||
aF
|
||||
aF
|
||||
aF
|
||||
aF
|
||||
aF
|
||||
aF
|
||||
aF
|
||||
aF
|
||||
am
|
||||
am
|
||||
am
|
||||
am
|
||||
am
|
||||
am
|
||||
am
|
||||
am
|
||||
am
|
||||
am
|
||||
am
|
||||
ba
|
||||
ba
|
||||
ba
|
||||
@@ -1752,16 +1749,16 @@ ba
|
||||
aK
|
||||
ba
|
||||
ba
|
||||
aF
|
||||
aF
|
||||
aF
|
||||
aF
|
||||
aF
|
||||
aF
|
||||
aF
|
||||
am
|
||||
am
|
||||
am
|
||||
am
|
||||
am
|
||||
am
|
||||
am
|
||||
bp
|
||||
aF
|
||||
aF
|
||||
am
|
||||
am
|
||||
aR
|
||||
ba
|
||||
ba
|
||||
@@ -1805,15 +1802,15 @@ ba
|
||||
fp
|
||||
ba
|
||||
aP
|
||||
aF
|
||||
aF
|
||||
aF
|
||||
aF
|
||||
aF
|
||||
aF
|
||||
aF
|
||||
aF
|
||||
aF
|
||||
am
|
||||
am
|
||||
am
|
||||
am
|
||||
am
|
||||
am
|
||||
am
|
||||
am
|
||||
am
|
||||
aR
|
||||
ba
|
||||
ba
|
||||
@@ -1858,15 +1855,15 @@ ba
|
||||
ba
|
||||
aQ
|
||||
aP
|
||||
aF
|
||||
aF
|
||||
am
|
||||
am
|
||||
aR
|
||||
aF
|
||||
aF
|
||||
aF
|
||||
aF
|
||||
am
|
||||
am
|
||||
am
|
||||
am
|
||||
bb
|
||||
aF
|
||||
am
|
||||
ba
|
||||
ba
|
||||
aZ
|
||||
@@ -1910,12 +1907,12 @@ ba
|
||||
ba
|
||||
ba
|
||||
ba
|
||||
aF
|
||||
aF
|
||||
aF
|
||||
aF
|
||||
am
|
||||
am
|
||||
am
|
||||
am
|
||||
aP
|
||||
aF
|
||||
am
|
||||
bg
|
||||
bb
|
||||
bb
|
||||
@@ -1962,12 +1959,12 @@ bb
|
||||
bb
|
||||
ba
|
||||
ba
|
||||
aF
|
||||
aF
|
||||
aF
|
||||
aF
|
||||
aF
|
||||
aF
|
||||
am
|
||||
am
|
||||
am
|
||||
am
|
||||
am
|
||||
am
|
||||
aS
|
||||
bb
|
||||
fp
|
||||
@@ -2015,11 +2012,11 @@ bb
|
||||
bb
|
||||
ba
|
||||
bg
|
||||
aF
|
||||
aF
|
||||
aF
|
||||
aF
|
||||
aF
|
||||
am
|
||||
am
|
||||
am
|
||||
am
|
||||
am
|
||||
aS
|
||||
bb
|
||||
fp
|
||||
@@ -2066,12 +2063,12 @@ bb
|
||||
bb
|
||||
fp
|
||||
ba
|
||||
aF
|
||||
aF
|
||||
am
|
||||
am
|
||||
bj
|
||||
aF
|
||||
aF
|
||||
aF
|
||||
am
|
||||
am
|
||||
am
|
||||
aS
|
||||
fp
|
||||
bb
|
||||
@@ -2120,9 +2117,9 @@ ba
|
||||
ba
|
||||
aS
|
||||
bi
|
||||
aF
|
||||
aF
|
||||
aF
|
||||
am
|
||||
am
|
||||
am
|
||||
aS
|
||||
aS
|
||||
bb
|
||||
@@ -2171,10 +2168,10 @@ ba
|
||||
aZ
|
||||
ba
|
||||
aS
|
||||
aF
|
||||
aF
|
||||
aF
|
||||
aF
|
||||
am
|
||||
am
|
||||
am
|
||||
am
|
||||
aS
|
||||
aS
|
||||
ba
|
||||
|
||||
@@ -2688,7 +2688,7 @@
|
||||
/obj/structure/window/reinforced{
|
||||
dir = 1
|
||||
},
|
||||
/obj/structure/piano{
|
||||
/obj/structure/musician/piano{
|
||||
icon_state = "piano"
|
||||
},
|
||||
/turf/open/floor/plasteel/grimy,
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
/turf/open/floor/holofloor/beach,
|
||||
/area/ruin/space/has_grav/powered/aesthetic)
|
||||
"i" = (
|
||||
/obj/structure/piano,
|
||||
/obj/structure/musician/piano,
|
||||
/obj/structure/window{
|
||||
dir = 8
|
||||
},
|
||||
|
||||
+81
-145
@@ -154,13 +154,7 @@
|
||||
/turf/open/floor/plasteel,
|
||||
/area/mine/living_quarters)
|
||||
"cX" = (
|
||||
/obj/structure/statue{
|
||||
desc = "A lifelike statue of a horrifying monster.";
|
||||
dir = 8;
|
||||
icon = 'icons/mob/lavaland/lavaland_monsters.dmi';
|
||||
icon_state = "goliath";
|
||||
name = "goliath"
|
||||
},
|
||||
/obj/structure/closet/secure_closet/miner,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/mine/living_quarters)
|
||||
"dk" = (
|
||||
@@ -267,9 +261,13 @@
|
||||
/turf/open/floor/plasteel,
|
||||
/area/mine/living_quarters)
|
||||
"eS" = (
|
||||
/obj/structure/table,
|
||||
/obj/item/gps/mining,
|
||||
/obj/item/gps/mining,
|
||||
/obj/structure/statue{
|
||||
desc = "A lifelike statue of a horrifying monster.";
|
||||
dir = 8;
|
||||
icon = 'icons/mob/lavaland/lavaland_monsters.dmi';
|
||||
icon_state = "goliath";
|
||||
name = "goliath"
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/mine/living_quarters)
|
||||
"fm" = (
|
||||
@@ -427,7 +425,6 @@
|
||||
/obj/effect/turf_decal/tile/brown{
|
||||
dir = 4
|
||||
},
|
||||
/obj/structure/displaycase,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/mine/living_quarters)
|
||||
"hP" = (
|
||||
@@ -773,7 +770,8 @@
|
||||
/turf/open/floor/plasteel,
|
||||
/area/mine/laborcamp/security)
|
||||
"nH" = (
|
||||
/obj/structure/displaycase,
|
||||
/obj/machinery/light,
|
||||
/obj/structure/closet/wardrobe/miner,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/mine/living_quarters)
|
||||
"nI" = (
|
||||
@@ -1086,6 +1084,7 @@
|
||||
/obj/effect/turf_decal/tile/brown{
|
||||
dir = 1
|
||||
},
|
||||
/obj/effect/turf_decal/tile/brown,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/mine/living_quarters)
|
||||
"re" = (
|
||||
@@ -1181,9 +1180,6 @@
|
||||
name = "Station Intercom (General)";
|
||||
pixel_x = 28
|
||||
},
|
||||
/obj/effect/turf_decal/tile/purple{
|
||||
dir = 4
|
||||
},
|
||||
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3{
|
||||
dir = 8
|
||||
},
|
||||
@@ -1279,12 +1275,8 @@
|
||||
/turf/open/floor/plasteel,
|
||||
/area/mine/production)
|
||||
"uG" = (
|
||||
/obj/structure/table,
|
||||
/obj/item/clothing/glasses/meson,
|
||||
/obj/item/storage/bag/ore,
|
||||
/obj/item/pickaxe,
|
||||
/obj/item/mining_scanner,
|
||||
/obj/item/flashlight,
|
||||
/obj/structure/ore_box,
|
||||
/obj/effect/turf_decal/box,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/mine/living_quarters)
|
||||
"uI" = (
|
||||
@@ -1758,15 +1750,6 @@
|
||||
"Cd" = (
|
||||
/turf/closed/wall,
|
||||
/area/mine/production)
|
||||
"Cg" = (
|
||||
/obj/structure/table,
|
||||
/obj/item/tank/internals/emergency_oxygen{
|
||||
pixel_x = 5;
|
||||
pixel_y = 3
|
||||
},
|
||||
/obj/item/tank/internals/emergency_oxygen,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/mine/living_quarters)
|
||||
"Cj" = (
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/on{
|
||||
dir = 1
|
||||
@@ -1870,7 +1853,6 @@
|
||||
/obj/machinery/light{
|
||||
dir = 1
|
||||
},
|
||||
/obj/structure/chair,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/mine/living_quarters)
|
||||
"Dv" = (
|
||||
@@ -1880,12 +1862,6 @@
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/mine/laborcamp/security)
|
||||
"DN" = (
|
||||
/obj/machinery/computer/shuttle/mining/common{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/mine/living_quarters)
|
||||
"Ed" = (
|
||||
/obj/effect/spawner/structure/window/reinforced,
|
||||
/turf/open/floor/plating,
|
||||
@@ -2028,27 +2004,6 @@
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/mine/laborcamp)
|
||||
"Hk" = (
|
||||
/obj/docking_port/stationary{
|
||||
area_type = /area/lavaland/surface/outdoors;
|
||||
dir = 8;
|
||||
dwidth = 3;
|
||||
height = 7;
|
||||
id = "lavaland_common_away";
|
||||
name = "Mining base public dock";
|
||||
width = 7
|
||||
},
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/lavaland/surface/outdoors)
|
||||
"Hm" = (
|
||||
/obj/effect/mapping_helpers/airlock/cyclelink_helper{
|
||||
dir = 8
|
||||
},
|
||||
/obj/machinery/door/airlock/external{
|
||||
name = "Lavaland Shuttle Airlock"
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/mine/living_quarters)
|
||||
"Ho" = (
|
||||
/obj/machinery/door/airlock{
|
||||
name = "Restroom"
|
||||
@@ -2121,12 +2076,6 @@
|
||||
},
|
||||
/turf/open/floor/plasteel/white,
|
||||
/area/mine/living_quarters)
|
||||
"If" = (
|
||||
/obj/structure/chair{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/mine/living_quarters)
|
||||
"Ii" = (
|
||||
/obj/structure/table,
|
||||
/obj/item/storage/box/donkpockets,
|
||||
@@ -2757,9 +2706,6 @@
|
||||
/obj/effect/turf_decal/tile/brown{
|
||||
dir = 4
|
||||
},
|
||||
/obj/structure/table,
|
||||
/obj/item/gps/mining,
|
||||
/obj/item/gps/mining,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/mine/living_quarters)
|
||||
"Pq" = (
|
||||
@@ -2882,7 +2828,6 @@
|
||||
/obj/machinery/newscaster{
|
||||
pixel_y = 32
|
||||
},
|
||||
/obj/structure/chair,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/mine/living_quarters)
|
||||
"Rv" = (
|
||||
@@ -3399,15 +3344,6 @@
|
||||
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/mine/living_quarters)
|
||||
"Zw" = (
|
||||
/obj/effect/mapping_helpers/airlock/cyclelink_helper{
|
||||
dir = 4
|
||||
},
|
||||
/obj/machinery/door/airlock/external{
|
||||
name = "Lavaland Shuttle Airlock"
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/mine/living_quarters)
|
||||
"ZF" = (
|
||||
/obj/machinery/telecomms/relay/preset/mining,
|
||||
/obj/machinery/light/small{
|
||||
@@ -4330,10 +4266,10 @@ VT
|
||||
VT
|
||||
VT
|
||||
VT
|
||||
Lm
|
||||
Lm
|
||||
Lm
|
||||
Lm
|
||||
VT
|
||||
VT
|
||||
VT
|
||||
VT
|
||||
VT
|
||||
VT
|
||||
VT
|
||||
@@ -4386,14 +4322,14 @@ VT
|
||||
VT
|
||||
VT
|
||||
VT
|
||||
Lm
|
||||
Lm
|
||||
Lm
|
||||
Lm
|
||||
Lm
|
||||
Lm
|
||||
Lm
|
||||
Lm
|
||||
VT
|
||||
VT
|
||||
VT
|
||||
VT
|
||||
VT
|
||||
VT
|
||||
VT
|
||||
VT
|
||||
VT
|
||||
VT
|
||||
VT
|
||||
@@ -4442,15 +4378,15 @@ wz
|
||||
VT
|
||||
VT
|
||||
VT
|
||||
VT
|
||||
VT
|
||||
VT
|
||||
VT
|
||||
VT
|
||||
Lm
|
||||
Lm
|
||||
Lm
|
||||
Lm
|
||||
Lm
|
||||
Lm
|
||||
Lm
|
||||
Lm
|
||||
Lm
|
||||
VT
|
||||
VT
|
||||
Lm
|
||||
VT
|
||||
VT
|
||||
@@ -4499,17 +4435,17 @@ wz
|
||||
wz
|
||||
VT
|
||||
VT
|
||||
VT
|
||||
VT
|
||||
Lm
|
||||
VT
|
||||
VT
|
||||
VT
|
||||
Lm
|
||||
Lm
|
||||
Lm
|
||||
Lm
|
||||
Lm
|
||||
Lm
|
||||
Lm
|
||||
Lm
|
||||
Lm
|
||||
Lm
|
||||
VT
|
||||
VT
|
||||
VT
|
||||
VT
|
||||
Lm
|
||||
VT
|
||||
VT
|
||||
@@ -4555,18 +4491,18 @@ Lm
|
||||
wz
|
||||
wz
|
||||
Lm
|
||||
VT
|
||||
VT
|
||||
VT
|
||||
Lm
|
||||
Lm
|
||||
Lm
|
||||
Lm
|
||||
Lm
|
||||
Lm
|
||||
Lm
|
||||
Lm
|
||||
Lm
|
||||
Lm
|
||||
Lm
|
||||
Lm
|
||||
VT
|
||||
VT
|
||||
VT
|
||||
VT
|
||||
VT
|
||||
VT
|
||||
VT
|
||||
@@ -4612,6 +4548,8 @@ VT
|
||||
VT
|
||||
wz
|
||||
Lm
|
||||
VT
|
||||
VT
|
||||
Lm
|
||||
Lm
|
||||
Lm
|
||||
@@ -4620,10 +4558,8 @@ Lm
|
||||
Lm
|
||||
Lm
|
||||
Lm
|
||||
Lm
|
||||
Lm
|
||||
Lm
|
||||
Lm
|
||||
VT
|
||||
VT
|
||||
VT
|
||||
VT
|
||||
VT
|
||||
@@ -4669,6 +4605,7 @@ VT
|
||||
VT
|
||||
Lm
|
||||
Lm
|
||||
VT
|
||||
Lm
|
||||
Lm
|
||||
Lm
|
||||
@@ -4678,8 +4615,7 @@ Lm
|
||||
Lm
|
||||
Lm
|
||||
Lm
|
||||
Lm
|
||||
Lm
|
||||
VT
|
||||
VT
|
||||
VT
|
||||
VT
|
||||
@@ -4725,12 +4661,12 @@ my
|
||||
VT
|
||||
VT
|
||||
VT
|
||||
VT
|
||||
VT
|
||||
Lm
|
||||
Lm
|
||||
Lm
|
||||
Lm
|
||||
Lm
|
||||
Lm
|
||||
VT
|
||||
VT
|
||||
Lm
|
||||
Lm
|
||||
Lm
|
||||
@@ -4786,10 +4722,10 @@ wz
|
||||
Lm
|
||||
Lm
|
||||
Lm
|
||||
VT
|
||||
Lm
|
||||
Lm
|
||||
Lm
|
||||
Hk
|
||||
Lm
|
||||
Lm
|
||||
Lm
|
||||
@@ -4843,11 +4779,11 @@ wz
|
||||
Lm
|
||||
Lm
|
||||
Lm
|
||||
VT
|
||||
Lm
|
||||
Lm
|
||||
Lm
|
||||
Lm
|
||||
KV
|
||||
Zw
|
||||
KV
|
||||
Lm
|
||||
Lm
|
||||
Lm
|
||||
@@ -4902,9 +4838,9 @@ Lm
|
||||
Lm
|
||||
Lm
|
||||
Lm
|
||||
KV
|
||||
Ag
|
||||
KV
|
||||
Lm
|
||||
Lm
|
||||
Lm
|
||||
Lm
|
||||
Lm
|
||||
VT
|
||||
@@ -4959,9 +4895,9 @@ VN
|
||||
VN
|
||||
XX
|
||||
VN
|
||||
KV
|
||||
Hm
|
||||
KV
|
||||
VN
|
||||
VN
|
||||
VN
|
||||
VT
|
||||
VT
|
||||
VT
|
||||
@@ -5013,12 +4949,12 @@ pu
|
||||
bn
|
||||
VN
|
||||
zy
|
||||
If
|
||||
DN
|
||||
If
|
||||
FE
|
||||
Ag
|
||||
Ag
|
||||
Ag
|
||||
Ag
|
||||
qZ
|
||||
KV
|
||||
VN
|
||||
VT
|
||||
VT
|
||||
VT
|
||||
@@ -5074,8 +5010,8 @@ Ag
|
||||
Ag
|
||||
Ag
|
||||
Ag
|
||||
Ag
|
||||
KV
|
||||
cX
|
||||
VN
|
||||
VT
|
||||
VT
|
||||
VT
|
||||
@@ -5132,7 +5068,7 @@ uG
|
||||
uG
|
||||
Ag
|
||||
cX
|
||||
KV
|
||||
VN
|
||||
VT
|
||||
VT
|
||||
VT
|
||||
@@ -5188,8 +5124,8 @@ KO
|
||||
uG
|
||||
uG
|
||||
Ag
|
||||
Ag
|
||||
KV
|
||||
cX
|
||||
VN
|
||||
VT
|
||||
VT
|
||||
VT
|
||||
@@ -5245,7 +5181,7 @@ RP
|
||||
Ag
|
||||
Ag
|
||||
Ag
|
||||
oy
|
||||
nH
|
||||
VN
|
||||
VT
|
||||
VT
|
||||
@@ -5300,8 +5236,8 @@ VN
|
||||
Pp
|
||||
sx
|
||||
eS
|
||||
Cg
|
||||
nH
|
||||
Ag
|
||||
Ag
|
||||
hH
|
||||
VN
|
||||
wz
|
||||
|
||||
@@ -713,7 +713,7 @@
|
||||
/turf/open/floor/wood,
|
||||
/area/awaymission/cabin)
|
||||
"cz" = (
|
||||
/obj/structure/piano,
|
||||
/obj/structure/musician/piano,
|
||||
/turf/open/floor/wood,
|
||||
/area/awaymission/cabin)
|
||||
"cA" = (
|
||||
|
||||
@@ -924,8 +924,8 @@
|
||||
/area/awaymission/caves/BMP_asteroid/level_two)
|
||||
"cK" = (
|
||||
/obj/structure/sign/warning/securearea{
|
||||
desc = "A warning sign which reads 'HOLY SHIT NIGGA WHAT ARE YOU DOING'.";
|
||||
name = "\improper HOLY SHIT NIGGA WHAT ARE YOU DOING"
|
||||
desc = "A warning sign which reads 'HOLY SHIT DUDE WHAT ARE YOU DOING'.";
|
||||
name = "\improper HOLY SHIT DUDE WHAT ARE YOU DOING"
|
||||
},
|
||||
/turf/closed/wall,
|
||||
/area/awaymission/caves/BMP_asteroid/level_two)
|
||||
|
||||
@@ -761,7 +761,7 @@
|
||||
},
|
||||
/area/awaymission/moonoutpost19/syndicate)
|
||||
"bF" = (
|
||||
/obj/structure/toilet{
|
||||
/obj/structure/toilet/secret/high_loot{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
@@ -4121,7 +4121,7 @@
|
||||
},
|
||||
/area/awaymission/moonoutpost19/research)
|
||||
"hP" = (
|
||||
/obj/structure/toilet{
|
||||
/obj/structure/toilet/secret/high_loot{
|
||||
dir = 4
|
||||
},
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
@@ -4473,7 +4473,7 @@
|
||||
},
|
||||
/area/awaymission/moonoutpost19/research)
|
||||
"iw" = (
|
||||
/obj/structure/toilet{
|
||||
/obj/structure/toilet/secret/high_loot{
|
||||
dir = 4
|
||||
},
|
||||
/obj/machinery/light/small{
|
||||
@@ -4764,7 +4764,7 @@
|
||||
},
|
||||
/area/awaymission/moonoutpost19/arrivals)
|
||||
"iZ" = (
|
||||
/obj/structure/toilet{
|
||||
/obj/structure/toilet/secret/high_loot{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
|
||||
@@ -5939,7 +5939,7 @@
|
||||
/turf/open/floor/plasteel,
|
||||
/area/awaymission/snowdin/post/garage)
|
||||
"mD" = (
|
||||
/obj/structure/toilet{
|
||||
/obj/structure/toilet/secret/high_loot{
|
||||
dir = 1
|
||||
},
|
||||
/obj/machinery/light/small,
|
||||
@@ -8796,7 +8796,7 @@
|
||||
/turf/open/floor/plasteel/showroomfloor,
|
||||
/area/awaymission/snowdin/post/cavern2)
|
||||
"tk" = (
|
||||
/obj/structure/toilet{
|
||||
/obj/structure/toilet/secret/high_loot{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plasteel/showroomfloor,
|
||||
@@ -9643,7 +9643,7 @@
|
||||
/turf/open/floor/plasteel/showroomfloor,
|
||||
/area/awaymission/snowdin/post/cavern1)
|
||||
"vE" = (
|
||||
/obj/structure/toilet{
|
||||
/obj/structure/toilet/secret/high_loot{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plasteel/showroomfloor,
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
#define FORCE_MAP "_maps/cogstation.json"
|
||||
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"map_name": "CogStation",
|
||||
"map_path": "map_files/CogStation",
|
||||
"map_file": "CogStation.dmm",
|
||||
"shuttles": {
|
||||
"cargo": "cargo_box",
|
||||
"ferry": "ferry_fancy",
|
||||
"whiteship": "whiteship_cog",
|
||||
"emergency": "emergency_cog"
|
||||
}
|
||||
}
|
||||
@@ -1337,7 +1337,7 @@
|
||||
/turf/open/floor/plasteel,
|
||||
/area/security/prison)
|
||||
"adf" = (
|
||||
/obj/structure/toilet{
|
||||
/obj/structure/toilet/secret/prison{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plasteel/freezer,
|
||||
@@ -3988,7 +3988,6 @@
|
||||
/obj/item/clothing/under/suit/waiter,
|
||||
/obj/item/clothing/under/suit/waiter,
|
||||
/obj/item/clothing/under/suit/waiter,
|
||||
/obj/item/clothing/suit/straight_jacket,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/crew_quarters/fitness)
|
||||
"ahD" = (
|
||||
@@ -7882,11 +7881,7 @@
|
||||
/turf/open/floor/wood,
|
||||
/area/lawoffice)
|
||||
"aqa" = (
|
||||
/obj/structure/closet/secure_closet/personal{
|
||||
desc = "Swipe your ID on this locker to claim it. You can drag it around and use it as your own personal storage area. Very useful.";
|
||||
name = "Personal ID-Locked Locker";
|
||||
pixel_y = 10
|
||||
},
|
||||
/obj/structure/closet/secure_closet/personal,
|
||||
/turf/open/floor/carpet,
|
||||
/area/crew_quarters/dorms)
|
||||
"aqb" = (
|
||||
@@ -8021,11 +8016,7 @@
|
||||
/turf/open/floor/carpet,
|
||||
/area/crew_quarters/dorms)
|
||||
"aqo" = (
|
||||
/obj/structure/closet/secure_closet/personal/cabinet{
|
||||
desc = "Swipe your ID on the closet to claim it. First come first serve, this one is wooden and fancy. Store your stuff here.";
|
||||
name = "Personal ID-Locked Closet";
|
||||
pixel_y = 15
|
||||
},
|
||||
/obj/structure/closet/secure_closet/personal/cabinet,
|
||||
/turf/open/floor/wood,
|
||||
/area/crew_quarters/dorms)
|
||||
"aqp" = (
|
||||
@@ -8846,14 +8837,10 @@
|
||||
/area/security/vacantoffice/b)
|
||||
"ask" = (
|
||||
/obj/item/flashlight/lamp/green{
|
||||
pixel_x = -3;
|
||||
pixel_y = 22
|
||||
},
|
||||
/obj/structure/dresser{
|
||||
desc = "There's plenty of clothes here to change into! It has a surprising amount of variety, too.";
|
||||
name = "Dresser";
|
||||
pixel_y = 7
|
||||
pixel_x = -2;
|
||||
pixel_y = 15
|
||||
},
|
||||
/obj/structure/dresser,
|
||||
/turf/open/floor/wood,
|
||||
/area/crew_quarters/dorms)
|
||||
"asl" = (
|
||||
@@ -8864,7 +8851,6 @@
|
||||
/turf/open/floor/plating,
|
||||
/area/security/vacantoffice/b)
|
||||
"asm" = (
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/on,
|
||||
/obj/structure/chair/comfy/brown{
|
||||
dir = 4
|
||||
},
|
||||
@@ -11677,7 +11663,7 @@
|
||||
/turf/open/floor/plating,
|
||||
/area/maintenance/starboard/fore)
|
||||
"aAs" = (
|
||||
/obj/structure/piano{
|
||||
/obj/structure/musician/piano{
|
||||
icon_state = "piano"
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
@@ -13056,7 +13042,7 @@
|
||||
/turf/open/floor/plasteel,
|
||||
/area/crew_quarters/cryopod)
|
||||
"aDL" = (
|
||||
/obj/structure/toilet{
|
||||
/obj/structure/toilet/secret/low_loot{
|
||||
dir = 4
|
||||
},
|
||||
/obj/structure/mirror{
|
||||
@@ -13944,7 +13930,7 @@
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/ai_monitored/storage/eva)
|
||||
"aGk" = (
|
||||
/obj/structure/toilet{
|
||||
/obj/structure/toilet/secret/low_loot{
|
||||
dir = 4
|
||||
},
|
||||
/obj/structure/mirror{
|
||||
@@ -14488,8 +14474,10 @@
|
||||
/turf/open/floor/plasteel,
|
||||
/area/gateway)
|
||||
"aHw" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
|
||||
/obj/effect/landmark/event_spawn,
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
|
||||
dir = 10
|
||||
},
|
||||
/turf/open/floor/wood,
|
||||
/area/crew_quarters/dorms)
|
||||
"aHx" = (
|
||||
@@ -15799,7 +15787,7 @@
|
||||
/area/hydroponics)
|
||||
"aKJ" = (
|
||||
/obj/machinery/vending/cola/black,
|
||||
/obj/structure/sign/poster/contraband/sun_kist{
|
||||
/obj/structure/sign/poster/contraband/starkist{
|
||||
pixel_y = 32
|
||||
},
|
||||
/turf/open/floor/wood,
|
||||
@@ -21467,7 +21455,7 @@
|
||||
/turf/open/floor/plating,
|
||||
/area/maintenance/port)
|
||||
"aZt" = (
|
||||
/obj/structure/toilet{
|
||||
/obj/structure/toilet/secret/low_loot{
|
||||
dir = 4
|
||||
},
|
||||
/obj/structure/mirror{
|
||||
@@ -23035,11 +23023,7 @@
|
||||
/turf/open/floor/carpet,
|
||||
/area/bridge/meeting_room)
|
||||
"bdJ" = (
|
||||
/obj/structure/closet/secure_closet/personal/cabinet{
|
||||
desc = "Swipe your ID on the closet to claim it. First come first serve, this one is wooden and fancy. Store your stuff here.";
|
||||
name = "Personal ID-Locked Closet";
|
||||
pixel_y = 15
|
||||
},
|
||||
/obj/structure/closet/secure_closet/personal/cabinet,
|
||||
/turf/open/floor/plating,
|
||||
/area/maintenance/port)
|
||||
"bdK" = (
|
||||
@@ -26479,7 +26463,9 @@
|
||||
/turf/open/floor/plating,
|
||||
/area/maintenance/disposal)
|
||||
"blU" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
|
||||
dir = 10
|
||||
},
|
||||
/turf/open/floor/wood,
|
||||
/area/crew_quarters/dorms)
|
||||
"blV" = (
|
||||
@@ -54427,11 +54413,7 @@
|
||||
/turf/open/space/basic,
|
||||
/area/space/nearstation)
|
||||
"eSe" = (
|
||||
/obj/structure/closet/secure_closet/personal/cabinet{
|
||||
desc = "Swipe your ID on the closet to claim it. First come first serve, this one is wooden and fancy. Store your stuff here.";
|
||||
name = "Personal ID-Locked Closet";
|
||||
pixel_y = 15
|
||||
},
|
||||
/obj/structure/closet/secure_closet/personal/cabinet,
|
||||
/turf/open/floor/carpet,
|
||||
/area/crew_quarters/dorms)
|
||||
"eVC" = (
|
||||
@@ -54800,6 +54782,12 @@
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/hallway/secondary/entry)
|
||||
"fPL" = (
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/on{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/wood,
|
||||
/area/crew_quarters/dorms)
|
||||
"fTg" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
|
||||
dir = 4
|
||||
@@ -55323,7 +55311,9 @@
|
||||
/turf/open/floor/wood,
|
||||
/area/crew_quarters/bar)
|
||||
"hPs" = (
|
||||
/obj/structure/fireplace,
|
||||
/obj/structure/fireplace{
|
||||
pixel_y = -6
|
||||
},
|
||||
/obj/machinery/airalarm{
|
||||
dir = 8;
|
||||
pixel_x = 23
|
||||
@@ -55549,18 +55539,6 @@
|
||||
/obj/structure/grille,
|
||||
/turf/open/space/basic,
|
||||
/area/space/nearstation)
|
||||
"iDS" = (
|
||||
/obj/docking_port/stationary{
|
||||
dir = 8;
|
||||
dwidth = 3;
|
||||
height = 5;
|
||||
id = "commonmining_home";
|
||||
name = "SS13: Common Mining Dock";
|
||||
roundstart_template = /datum/map_template/shuttle/mining_common/meta;
|
||||
width = 7
|
||||
},
|
||||
/turf/open/space/basic,
|
||||
/area/space)
|
||||
"iEJ" = (
|
||||
/obj/machinery/door/airlock/external{
|
||||
name = "Escape Pod One"
|
||||
@@ -55633,7 +55611,7 @@
|
||||
},
|
||||
/area/crew_quarters/theatre)
|
||||
"iTU" = (
|
||||
/obj/structure/piano{
|
||||
/obj/structure/musician/piano{
|
||||
icon_state = "piano"
|
||||
},
|
||||
/turf/open/floor/wood,
|
||||
@@ -56107,18 +56085,13 @@
|
||||
/turf/open/floor/plasteel,
|
||||
/area/crew_quarters/dorms)
|
||||
"kmS" = (
|
||||
/obj/structure/dresser,
|
||||
/obj/item/flashlight/lamp/green{
|
||||
pixel_x = -3;
|
||||
pixel_y = 22
|
||||
pixel_x = -2;
|
||||
pixel_y = 15
|
||||
},
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/on{
|
||||
dir = 4;
|
||||
pixel_y = 5
|
||||
},
|
||||
/obj/structure/dresser{
|
||||
desc = "There's plenty of clothes here to change into! It has a surprising amount of variety, too.";
|
||||
name = "Dresser";
|
||||
pixel_y = 7
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/carpet,
|
||||
/area/crew_quarters/dorms)
|
||||
@@ -56816,7 +56789,7 @@
|
||||
/turf/open/floor/plating,
|
||||
/area/security/main)
|
||||
"myh" = (
|
||||
/obj/structure/piano,
|
||||
/obj/structure/musician/piano,
|
||||
/obj/structure/window/reinforced,
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
|
||||
/turf/open/floor/wood,
|
||||
@@ -57124,15 +57097,6 @@
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/maintenance/starboard/aft)
|
||||
"nGI" = (
|
||||
/obj/machinery/door/airlock/external{
|
||||
name = "Common Mining Shuttle Bay"
|
||||
},
|
||||
/obj/effect/mapping_helpers/airlock/cyclelink_helper{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/hallway/secondary/entry)
|
||||
"nLu" = (
|
||||
/obj/effect/turf_decal/tile/blue{
|
||||
dir = 4
|
||||
@@ -57350,8 +57314,8 @@
|
||||
/area/security/prison)
|
||||
"omY" = (
|
||||
/obj/item/flashlight/lamp/green{
|
||||
pixel_x = -3;
|
||||
pixel_y = 22
|
||||
pixel_x = -2;
|
||||
pixel_y = 15
|
||||
},
|
||||
/obj/structure/dresser{
|
||||
desc = "There's plenty of clothes here to change into! It has a surprising amount of variety, too.";
|
||||
@@ -57463,7 +57427,9 @@
|
||||
/turf/closed/wall,
|
||||
/area/crew_quarters/bar)
|
||||
"oAB" = (
|
||||
/obj/structure/fireplace,
|
||||
/obj/structure/fireplace{
|
||||
pixel_y = -6
|
||||
},
|
||||
/turf/open/floor/carpet,
|
||||
/area/crew_quarters/dorms)
|
||||
"oDm" = (
|
||||
@@ -57504,7 +57470,7 @@
|
||||
/turf/open/floor/wood,
|
||||
/area/crew_quarters/bar)
|
||||
"oIW" = (
|
||||
/obj/structure/toilet{
|
||||
/obj/structure/toilet/secret/low_loot{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/mineral/titanium/blue,
|
||||
@@ -59737,15 +59703,6 @@
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/maintenance/starboard/fore)
|
||||
"vDR" = (
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/on,
|
||||
/obj/structure/closet/secure_closet/personal/cabinet{
|
||||
desc = "Swipe your ID on the closet to claim it. First come first serve, this one is wooden and fancy. Store your stuff here.";
|
||||
name = "Personal ID-Locked Closet";
|
||||
pixel_y = 15
|
||||
},
|
||||
/turf/open/floor/wood,
|
||||
/area/crew_quarters/dorms)
|
||||
"vEi" = (
|
||||
/obj/structure/cable{
|
||||
icon_state = "4-8"
|
||||
@@ -60202,17 +60159,6 @@
|
||||
/obj/item/coin/gold,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/crew_quarters/fitness)
|
||||
"xfS" = (
|
||||
/obj/effect/turf_decal/tile/blue{
|
||||
dir = 4
|
||||
},
|
||||
/obj/machinery/computer/shuttle/mining/common{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plasteel/white/corner{
|
||||
dir = 1
|
||||
},
|
||||
/area/hallway/secondary/entry)
|
||||
"xgk" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
|
||||
dir = 4
|
||||
@@ -60535,15 +60481,6 @@
|
||||
/obj/item/instrument/trombone,
|
||||
/turf/open/floor/wood,
|
||||
/area/crew_quarters/theatre)
|
||||
"xQG" = (
|
||||
/obj/machinery/door/airlock/external{
|
||||
name = "Common Mining Shuttle Bay"
|
||||
},
|
||||
/obj/effect/mapping_helpers/airlock/cyclelink_helper{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/hallway/secondary/entry)
|
||||
"xSW" = (
|
||||
/obj/effect/turf_decal/tile/red{
|
||||
dir = 1
|
||||
@@ -60647,7 +60584,7 @@
|
||||
/turf/open/floor/plasteel,
|
||||
/area/crew_quarters/fitness/pool)
|
||||
"ycd" = (
|
||||
/obj/structure/toilet{
|
||||
/obj/structure/toilet/secret/low_loot{
|
||||
dir = 4
|
||||
},
|
||||
/obj/structure/mirror{
|
||||
@@ -69068,7 +69005,7 @@ aaa
|
||||
aaa
|
||||
aoV
|
||||
aaa
|
||||
iDS
|
||||
aaa
|
||||
aaa
|
||||
aaa
|
||||
aoV
|
||||
@@ -69323,11 +69260,11 @@ aaa
|
||||
aaa
|
||||
aaa
|
||||
aaa
|
||||
asE
|
||||
asE
|
||||
nGI
|
||||
asE
|
||||
asE
|
||||
aaa
|
||||
aaa
|
||||
aaa
|
||||
aaa
|
||||
aaa
|
||||
aoV
|
||||
aaa
|
||||
aaa
|
||||
@@ -69581,9 +69518,9 @@ aaa
|
||||
aaa
|
||||
aaa
|
||||
aaf
|
||||
awW
|
||||
auP
|
||||
awW
|
||||
aaa
|
||||
aaa
|
||||
aaa
|
||||
aaf
|
||||
kls
|
||||
aaa
|
||||
@@ -69839,8 +69776,8 @@ aaa
|
||||
aaa
|
||||
arB
|
||||
arB
|
||||
xQG
|
||||
asE
|
||||
arB
|
||||
arB
|
||||
aAC
|
||||
aaf
|
||||
aaa
|
||||
@@ -70095,7 +70032,7 @@ aaa
|
||||
aaa
|
||||
aaa
|
||||
arB
|
||||
xfS
|
||||
awZ
|
||||
ayk
|
||||
awW
|
||||
aAD
|
||||
@@ -73439,7 +73376,7 @@ ayl
|
||||
aIK
|
||||
ayl
|
||||
beM
|
||||
asE
|
||||
arB
|
||||
aaa
|
||||
aaa
|
||||
aaa
|
||||
@@ -92684,7 +92621,7 @@ aqe
|
||||
arf
|
||||
aqo
|
||||
atm
|
||||
atm
|
||||
fPL
|
||||
arf
|
||||
avv
|
||||
awu
|
||||
@@ -92940,7 +92877,7 @@ cSA
|
||||
aqe
|
||||
arf
|
||||
asm
|
||||
blU
|
||||
atm
|
||||
blU
|
||||
avg
|
||||
awp
|
||||
@@ -93712,7 +93649,7 @@ aqi
|
||||
arf
|
||||
ask
|
||||
atm
|
||||
atm
|
||||
fPL
|
||||
arf
|
||||
awq
|
||||
axO
|
||||
@@ -93967,8 +93904,8 @@ ajo
|
||||
aps
|
||||
aqk
|
||||
arf
|
||||
vDR
|
||||
blU
|
||||
aqo
|
||||
atm
|
||||
aHw
|
||||
avn
|
||||
awv
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,29 @@
|
||||
#define JOB_MODIFICATION_MAP_NAME "CogStation"
|
||||
|
||||
//Medical
|
||||
/datum/job/scientist/New()
|
||||
..()
|
||||
MAP_JOB_CHECK
|
||||
access += ACCESS_CHEMISTRY
|
||||
minimal_access += ACCESS_CHEMISTRY
|
||||
|
||||
//Science
|
||||
|
||||
/datum/job/roboticist/New()
|
||||
..()
|
||||
MAP_JOB_CHECK
|
||||
access += list(ACCESS_MEDICAL, ACCESS_MORGUE)
|
||||
minimal_access += list(ACCESS_MEDICAL, ACCESS_MORGUE)
|
||||
|
||||
//Civilian
|
||||
/datum/job/clown/New()
|
||||
..()
|
||||
MAP_JOB_CHECK
|
||||
access += ACCESS_MAINT_TUNNELS
|
||||
minimal_access += ACCESS_MAINT_TUNNELS
|
||||
|
||||
/datum/job/mime/New()
|
||||
..()
|
||||
MAP_JOB_CHECK
|
||||
access += ACCESS_MAINT_TUNNELS
|
||||
minimal_access += ACCESS_MAINT_TUNNELS
|
||||
@@ -463,10 +463,24 @@
|
||||
"aaS" = (
|
||||
/turf/closed/wall/mineral/plastitanium,
|
||||
/area/construction/mining/aux_base)
|
||||
"abe" = (
|
||||
/obj/effect/turf_decal/delivery,
|
||||
/obj/effect/turf_decal/stripes/end{
|
||||
dir = 1
|
||||
"aaT" = (
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 9
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/hallway/secondary/entry)
|
||||
"aaU" = (
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 5
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/hallway/secondary/entry)
|
||||
"aaV" = (
|
||||
/obj/machinery/light/small{
|
||||
dir = 4
|
||||
},
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/hallway/secondary/entry)
|
||||
@@ -494,15 +508,6 @@
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/hallway/secondary/entry)
|
||||
"abq" = (
|
||||
/obj/machinery/light/small{
|
||||
dir = 4
|
||||
},
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 5
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/hallway/secondary/entry)
|
||||
"abs" = (
|
||||
/obj/docking_port/stationary{
|
||||
dwidth = 1;
|
||||
@@ -12043,7 +12048,7 @@
|
||||
"aAm" = (
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/effect/decal/cleanable/vomit/old,
|
||||
/obj/structure/toilet{
|
||||
/obj/structure/toilet/secret/low_loot{
|
||||
dir = 8
|
||||
},
|
||||
/obj/machinery/newscaster{
|
||||
@@ -12054,7 +12059,7 @@
|
||||
/area/crew_quarters/toilet/auxiliary)
|
||||
"aAn" = (
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/structure/toilet{
|
||||
/obj/structure/toilet/secret/low_loot{
|
||||
dir = 8
|
||||
},
|
||||
/obj/machinery/newscaster{
|
||||
@@ -12066,7 +12071,7 @@
|
||||
/area/crew_quarters/toilet/auxiliary)
|
||||
"aAo" = (
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/structure/toilet{
|
||||
/obj/structure/toilet/secret/low_loot{
|
||||
dir = 8
|
||||
},
|
||||
/obj/machinery/newscaster{
|
||||
@@ -19676,7 +19681,7 @@
|
||||
/turf/open/floor/plasteel,
|
||||
/area/quartermaster/storage)
|
||||
"aNx" = (
|
||||
/obj/structure/toilet{
|
||||
/obj/structure/toilet/secret/prison{
|
||||
dir = 4
|
||||
},
|
||||
/obj/machinery/light/small{
|
||||
@@ -26177,7 +26182,7 @@
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/crew_quarters/bar/atrium)
|
||||
"aWX" = (
|
||||
/obj/structure/piano{
|
||||
/obj/structure/musician/piano{
|
||||
icon_state = "piano"
|
||||
},
|
||||
/obj/machinery/airalarm{
|
||||
@@ -59853,6 +59858,7 @@
|
||||
/area/crew_quarters/heads/captain)
|
||||
"bXh" = (
|
||||
/obj/structure/toilet{
|
||||
contents = newlist(/obj/item/toy/snappop/phoenix);
|
||||
dir = 4
|
||||
},
|
||||
/obj/machinery/light{
|
||||
@@ -82136,7 +82142,7 @@
|
||||
"cIa" = (
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/effect/decal/cleanable/vomit/old,
|
||||
/obj/structure/toilet{
|
||||
/obj/structure/toilet/secret/low_loot{
|
||||
dir = 8
|
||||
},
|
||||
/obj/machinery/newscaster{
|
||||
@@ -82147,7 +82153,7 @@
|
||||
/area/crew_quarters/toilet/restrooms)
|
||||
"cIb" = (
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/structure/toilet{
|
||||
/obj/structure/toilet/secret/low_loot{
|
||||
dir = 8
|
||||
},
|
||||
/obj/machinery/newscaster{
|
||||
@@ -82159,7 +82165,7 @@
|
||||
/area/crew_quarters/toilet/restrooms)
|
||||
"cIc" = (
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/structure/toilet{
|
||||
/obj/structure/toilet/secret/low_loot{
|
||||
dir = 8
|
||||
},
|
||||
/obj/machinery/newscaster{
|
||||
@@ -89648,7 +89654,7 @@
|
||||
},
|
||||
/area/medical/storage)
|
||||
"cUP" = (
|
||||
/obj/structure/toilet{
|
||||
/obj/structure/toilet/secret/low_loot{
|
||||
dir = 4
|
||||
},
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
@@ -115308,7 +115314,7 @@
|
||||
/obj/structure/window/reinforced{
|
||||
dir = 8
|
||||
},
|
||||
/obj/structure/piano,
|
||||
/obj/structure/musician/piano,
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/turf/open/floor/plating,
|
||||
/area/crew_quarters/theatre/abandoned)
|
||||
@@ -116751,7 +116757,7 @@
|
||||
/turf/open/floor/plasteel,
|
||||
/area/maintenance/port/aft)
|
||||
"dPN" = (
|
||||
/obj/structure/toilet{
|
||||
/obj/structure/toilet/secret/low_loot{
|
||||
dir = 8
|
||||
},
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
@@ -126823,15 +126829,6 @@
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/science/research/abandoned)
|
||||
"mvx" = (
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 4
|
||||
},
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/hallway/secondary/entry)
|
||||
"mxm" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
|
||||
/turf/open/floor/circuit/green,
|
||||
@@ -126841,17 +126838,6 @@
|
||||
/obj/item/assembly/signaler,
|
||||
/turf/open/floor/plating,
|
||||
/area/crew_quarters/abandoned_gambling_den)
|
||||
"mLI" = (
|
||||
/obj/machinery/door/airlock/external{
|
||||
name = "External Docking Port"
|
||||
},
|
||||
/obj/effect/mapping_helpers/airlock/cyclelink_helper,
|
||||
/obj/effect/turf_decal/stripes/line,
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/hallway/secondary/entry)
|
||||
"mPj" = (
|
||||
/obj/effect/turf_decal/stripes/line,
|
||||
/turf/open/floor/plating,
|
||||
@@ -126914,28 +126900,10 @@
|
||||
/obj/effect/turf_decal/tile/neutral,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/maintenance/port/fore)
|
||||
"nQR" = (
|
||||
/obj/effect/turf_decal/delivery,
|
||||
/obj/machinery/computer/shuttle/mining/common,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/hallway/secondary/entry)
|
||||
"nSh" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/general/hidden,
|
||||
/turf/closed/wall/r_wall,
|
||||
/area/maintenance/disposal/incinerator)
|
||||
"nSS" = (
|
||||
/obj/machinery/door/airlock/external{
|
||||
name = "External Docking Port"
|
||||
},
|
||||
/obj/effect/mapping_helpers/airlock/cyclelink_helper{
|
||||
dir = 1
|
||||
},
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 1
|
||||
},
|
||||
/obj/effect/turf_decal/stripes/line,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/hallway/secondary/entry)
|
||||
"oHk" = (
|
||||
/obj/effect/turf_decal/tile/neutral{
|
||||
dir = 1
|
||||
@@ -127597,17 +127565,6 @@
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/crew_quarters/fitness/recreation)
|
||||
"xdp" = (
|
||||
/obj/docking_port/stationary{
|
||||
dwidth = 3;
|
||||
height = 5;
|
||||
id = "commonmining_home";
|
||||
name = "SS13: Common Mining Dock";
|
||||
roundstart_template = /datum/map_template/shuttle/mining_common/meta;
|
||||
width = 7
|
||||
},
|
||||
/turf/open/space/basic,
|
||||
/area/space)
|
||||
"xdZ" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
|
||||
dir = 4
|
||||
@@ -159669,7 +159626,7 @@ aaa
|
||||
aaa
|
||||
aaa
|
||||
aaa
|
||||
rqh
|
||||
aaa
|
||||
rqh
|
||||
aad
|
||||
aad
|
||||
@@ -159925,8 +159882,8 @@ aaa
|
||||
aaa
|
||||
aaa
|
||||
aaa
|
||||
aaO
|
||||
aaO
|
||||
aaa
|
||||
aaa
|
||||
aaO
|
||||
aaO
|
||||
abf
|
||||
@@ -160181,11 +160138,11 @@ oZp
|
||||
aaa
|
||||
aaa
|
||||
aaa
|
||||
xdp
|
||||
mLI
|
||||
mvx
|
||||
nSS
|
||||
abe
|
||||
aaa
|
||||
aaa
|
||||
aaa
|
||||
aaO
|
||||
aaT
|
||||
abp
|
||||
abC
|
||||
abC
|
||||
@@ -160439,11 +160396,11 @@ aaa
|
||||
aaa
|
||||
aaa
|
||||
aaa
|
||||
aaa
|
||||
aaa
|
||||
aaO
|
||||
aaO
|
||||
aaO
|
||||
nQR
|
||||
abq
|
||||
aaU
|
||||
aaV
|
||||
abD
|
||||
abD
|
||||
abZ
|
||||
@@ -160697,7 +160654,7 @@ aaa
|
||||
aaa
|
||||
aaa
|
||||
aaa
|
||||
rqh
|
||||
aaa
|
||||
aaO
|
||||
aaO
|
||||
abf
|
||||
@@ -160954,7 +160911,7 @@ aaa
|
||||
aaa
|
||||
aaa
|
||||
aaa
|
||||
rqh
|
||||
aaa
|
||||
rqh
|
||||
aad
|
||||
aad
|
||||
|
||||
@@ -19002,7 +19002,7 @@
|
||||
"aEK" = (
|
||||
/obj/structure/sign/poster/contraband/random,
|
||||
/turf/closed/wall/rust,
|
||||
/area/hallway/secondary/entry)
|
||||
/area/security/vacantoffice)
|
||||
"aEL" = (
|
||||
/obj/machinery/door/airlock/maintenance{
|
||||
req_access_txt = "12"
|
||||
@@ -21544,6 +21544,9 @@
|
||||
pixel_x = -26
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1,
|
||||
/obj/structure/cable{
|
||||
icon_state = "1-2"
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/hallway/secondary/exit/departure_lounge)
|
||||
"aIZ" = (
|
||||
@@ -56558,7 +56561,7 @@
|
||||
pixel_x = -12;
|
||||
pixel_y = 2
|
||||
},
|
||||
/obj/structure/toilet{
|
||||
/obj/structure/toilet/secret/prison{
|
||||
pixel_y = 16
|
||||
},
|
||||
/obj/effect/turf_decal/tile/neutral{
|
||||
@@ -56908,7 +56911,7 @@
|
||||
/area/hallway/primary/central)
|
||||
"bKT" = (
|
||||
/obj/effect/turf_decal/box,
|
||||
/obj/structure/toilet{
|
||||
/obj/structure/toilet/secret/low_loot{
|
||||
dir = 8
|
||||
},
|
||||
/obj/structure/mirror{
|
||||
@@ -56941,7 +56944,7 @@
|
||||
/area/crew_quarters/toilet/restrooms)
|
||||
"bKU" = (
|
||||
/obj/effect/turf_decal/box,
|
||||
/obj/structure/toilet{
|
||||
//obj/structure/toilet/secret/low_loot{
|
||||
dir = 8
|
||||
},
|
||||
/obj/structure/mirror{
|
||||
@@ -59908,7 +59911,7 @@
|
||||
pixel_x = -12;
|
||||
pixel_y = 2
|
||||
},
|
||||
/obj/structure/toilet{
|
||||
/obj/structure/toilet/secret/low_loot{
|
||||
pixel_y = 16
|
||||
},
|
||||
/obj/effect/turf_decal/tile/neutral{
|
||||
@@ -62405,7 +62408,7 @@
|
||||
name = "EMERGENCY STORAGE"
|
||||
},
|
||||
/turf/closed/wall,
|
||||
/area/hallway/secondary/entry)
|
||||
/area/security/vacantoffice)
|
||||
"bSM" = (
|
||||
/obj/machinery/door/firedoor,
|
||||
/obj/machinery/door/airlock/external{
|
||||
@@ -62669,6 +62672,9 @@
|
||||
pixel_x = -23
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1,
|
||||
/obj/structure/cable{
|
||||
icon_state = "1-2"
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/hallway/secondary/exit/departure_lounge)
|
||||
"bTf" = (
|
||||
@@ -62869,17 +62875,23 @@
|
||||
/turf/closed/wall/rust,
|
||||
/area/hallway/secondary/exit/departure_lounge)
|
||||
"bTy" = (
|
||||
/obj/effect/turf_decal/tile/neutral,
|
||||
/obj/effect/turf_decal/tile/neutral{
|
||||
dir = 1
|
||||
},
|
||||
/obj/effect/turf_decal/tile/neutral{
|
||||
dir = 4
|
||||
},
|
||||
/obj/effect/turf_decal/tile/neutral{
|
||||
dir = 8
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1,
|
||||
/obj/structure/cable{
|
||||
icon_state = "1-2"
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/structure/disposalpipe/segment,
|
||||
/obj/structure/cable{
|
||||
icon_state = "2-4"
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/maintenance/starboard/aft)
|
||||
/turf/open/floor/plasteel,
|
||||
/area/hallway/secondary/exit/departure_lounge)
|
||||
"bTz" = (
|
||||
/obj/effect/turf_decal/tile/neutral,
|
||||
/obj/effect/turf_decal/tile/neutral,
|
||||
@@ -62934,6 +62946,9 @@
|
||||
/obj/effect/turf_decal/tile/neutral,
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1,
|
||||
/obj/structure/cable{
|
||||
icon_state = "1-2"
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/hallway/secondary/entry)
|
||||
"bTE" = (
|
||||
@@ -62988,7 +63003,7 @@
|
||||
pixel_x = -12;
|
||||
pixel_y = 2
|
||||
},
|
||||
/obj/structure/toilet{
|
||||
/obj/structure/toilet/secret/low_loot{
|
||||
pixel_y = 16
|
||||
},
|
||||
/obj/effect/turf_decal/tile/neutral{
|
||||
@@ -63096,6 +63111,9 @@
|
||||
c_tag = "Arrivals Dock";
|
||||
name = "shuttle camera"
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{
|
||||
dir = 10
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/hallway/secondary/entry)
|
||||
"bTO" = (
|
||||
@@ -63168,17 +63186,17 @@
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/hallway/secondary/exit/departure_lounge)
|
||||
"bTS" = (
|
||||
/obj/docking_port/stationary{
|
||||
dir = 8;
|
||||
dwidth = 3;
|
||||
height = 5;
|
||||
id = "commonmining_home";
|
||||
name = "SS13: Common Mining Dock";
|
||||
roundstart_template = /datum/map_template/shuttle/mining_common/meta;
|
||||
width = 7
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/hallway/secondary/entry)
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{
|
||||
dir = 8
|
||||
},
|
||||
/obj/structure/cable{
|
||||
icon_state = "4-8"
|
||||
},
|
||||
/turf/open/floor/wood,
|
||||
/area/security/vacantoffice)
|
||||
"bTT" = (
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/on{
|
||||
dir = 4
|
||||
@@ -63287,8 +63305,11 @@
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
|
||||
dir = 4
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{
|
||||
dir = 6
|
||||
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer1{
|
||||
dir = 8
|
||||
},
|
||||
/obj/structure/cable{
|
||||
icon_state = "4-8"
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/hallway/secondary/entry)
|
||||
@@ -63398,12 +63419,8 @@
|
||||
/turf/open/floor/plasteel/showroomfloor,
|
||||
/area/security/warden)
|
||||
"bUl" = (
|
||||
/obj/effect/spawner/structure/window/reinforced,
|
||||
/obj/structure/cable{
|
||||
icon_state = "0-8"
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/hallway/secondary/entry)
|
||||
/turf/closed/wall,
|
||||
/area/security/vacantoffice)
|
||||
"bUm" = (
|
||||
/obj/machinery/door/firedoor,
|
||||
/obj/machinery/door/airlock/public/glass{
|
||||
@@ -63464,9 +63481,8 @@
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/hallway/secondary/exit/departure_lounge)
|
||||
"bUt" = (
|
||||
/obj/structure/sign/warning/electricshock,
|
||||
/turf/closed/wall/rust,
|
||||
/area/hallway/secondary/entry)
|
||||
/area/security/vacantoffice)
|
||||
"bUu" = (
|
||||
/obj/structure/cable{
|
||||
icon_state = "1-2"
|
||||
@@ -64674,11 +64690,21 @@
|
||||
},
|
||||
/area/maintenance/starboard/aft)
|
||||
"bWn" = (
|
||||
/obj/machinery/door/airlock/external{
|
||||
name = "Common Mining Dock"
|
||||
/obj/machinery/door/airlock/maintenance{
|
||||
name = "Vacant Office"
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
|
||||
dir = 4
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{
|
||||
dir = 8
|
||||
},
|
||||
/obj/structure/cable{
|
||||
icon_state = "4-8"
|
||||
},
|
||||
/obj/machinery/door/firedoor,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/hallway/secondary/entry)
|
||||
/area/security/vacantoffice)
|
||||
"bWo" = (
|
||||
/obj/effect/turf_decal/tile/neutral,
|
||||
/obj/effect/turf_decal/tile/neutral{
|
||||
@@ -64718,6 +64744,15 @@
|
||||
/area/security/warden)
|
||||
"bWq" = (
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
|
||||
dir = 10
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{
|
||||
dir = 8
|
||||
},
|
||||
/obj/structure/cable{
|
||||
icon_state = "2-8"
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/hallway/secondary/entry)
|
||||
"bWr" = (
|
||||
@@ -64799,17 +64834,8 @@
|
||||
/turf/open/floor/plasteel,
|
||||
/area/hallway/primary/starboard)
|
||||
"bWx" = (
|
||||
/obj/structure/window/reinforced{
|
||||
dir = 8
|
||||
},
|
||||
/obj/machinery/computer/shuttle/mining/common{
|
||||
dir = 4
|
||||
},
|
||||
/obj/structure/window/reinforced{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/hallway/secondary/entry)
|
||||
/turf/closed/wall,
|
||||
/area/security/vacantoffice)
|
||||
"bWy" = (
|
||||
/obj/effect/turf_decal/tile/neutral,
|
||||
/obj/effect/turf_decal/tile/neutral{
|
||||
@@ -65052,15 +65078,18 @@
|
||||
dir = 4;
|
||||
pixel_x = -23
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
|
||||
dir = 6
|
||||
},
|
||||
/obj/effect/turf_decal/tile/blue{
|
||||
dir = 8
|
||||
},
|
||||
/obj/effect/turf_decal/tile/red{
|
||||
dir = 1
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
|
||||
dir = 8
|
||||
},
|
||||
/obj/structure/cable{
|
||||
icon_state = "1-4"
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/hallway/secondary/entry)
|
||||
"bWV" = (
|
||||
@@ -65105,6 +65134,9 @@
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
|
||||
dir = 4
|
||||
},
|
||||
/obj/structure/cable{
|
||||
icon_state = "4-8"
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/hallway/secondary/entry)
|
||||
"bWY" = (
|
||||
@@ -65133,6 +65165,9 @@
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{
|
||||
dir = 9
|
||||
},
|
||||
/obj/structure/cable{
|
||||
icon_state = "1-8"
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/hallway/secondary/entry)
|
||||
"bXa" = (
|
||||
@@ -65289,6 +65324,9 @@
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1,
|
||||
/obj/structure/cable{
|
||||
icon_state = "1-2"
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/hallway/secondary/exit/departure_lounge)
|
||||
"bXo" = (
|
||||
@@ -65367,6 +65405,9 @@
|
||||
dir = 8
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1,
|
||||
/obj/structure/cable{
|
||||
icon_state = "1-2"
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/hallway/secondary/exit/departure_lounge)
|
||||
"bXv" = (
|
||||
@@ -65786,6 +65827,9 @@
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{
|
||||
dir = 8
|
||||
},
|
||||
/obj/structure/cable{
|
||||
icon_state = "4-8"
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/hallway/secondary/entry)
|
||||
"bXY" = (
|
||||
@@ -66680,6 +66724,9 @@
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1,
|
||||
/obj/structure/cable{
|
||||
icon_state = "1-2"
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/hallway/secondary/entry)
|
||||
"bZk" = (
|
||||
@@ -67429,6 +67476,9 @@
|
||||
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer1{
|
||||
dir = 1
|
||||
},
|
||||
/obj/structure/cable{
|
||||
icon_state = "1-2"
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/hallway/secondary/exit/departure_lounge)
|
||||
"cal" = (
|
||||
@@ -67587,7 +67637,7 @@
|
||||
"cav" = (
|
||||
/obj/structure/sign/poster/contraband/random,
|
||||
/turf/closed/wall,
|
||||
/area/hallway/secondary/entry)
|
||||
/area/security/vacantoffice)
|
||||
"caw" = (
|
||||
/obj/effect/turf_decal/tile/yellow{
|
||||
dir = 4
|
||||
@@ -67848,6 +67898,10 @@
|
||||
/obj/effect/turf_decal/tile/red{
|
||||
dir = 1
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
|
||||
/obj/structure/cable{
|
||||
icon_state = "1-2"
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/hallway/secondary/entry)
|
||||
"caP" = (
|
||||
@@ -67855,6 +67909,9 @@
|
||||
dir = 4
|
||||
},
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{
|
||||
dir = 5
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/hallway/secondary/entry)
|
||||
"caQ" = (
|
||||
@@ -70240,9 +70297,6 @@
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/structure/disposalpipe/segment,
|
||||
/obj/structure/cable{
|
||||
icon_state = "2-4"
|
||||
},
|
||||
/turf/open/floor/plating{
|
||||
icon_state = "platingdmg1"
|
||||
},
|
||||
@@ -74728,6 +74782,9 @@
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1,
|
||||
/obj/structure/cable{
|
||||
icon_state = "1-2"
|
||||
},
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/hallway/secondary/entry)
|
||||
"cmk" = (
|
||||
@@ -81480,8 +81537,18 @@
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/maintenance/port)
|
||||
"cyG" = (
|
||||
/turf/open/floor/plating,
|
||||
/area/hallway/secondary/entry)
|
||||
/obj/structure/cable{
|
||||
icon_state = "0-2"
|
||||
},
|
||||
/obj/machinery/power/apc{
|
||||
areastring = "/area/security/vacant";
|
||||
name = "Vacant Office APC";
|
||||
pixel_y = 24
|
||||
},
|
||||
/obj/structure/table/wood,
|
||||
/obj/item/flashlight/lamp/green,
|
||||
/turf/open/floor/wood,
|
||||
/area/security/vacantoffice)
|
||||
"cyI" = (
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/structure/sink/kitchen{
|
||||
@@ -85332,6 +85399,9 @@
|
||||
"cJp" = (
|
||||
/obj/effect/turf_decal/tile/red,
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{
|
||||
dir = 10
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/hallway/secondary/entry)
|
||||
"cJq" = (
|
||||
@@ -87185,9 +87255,22 @@
|
||||
"cZm" = (
|
||||
/turf/closed/wall/rust,
|
||||
/area/security/prison)
|
||||
"dbY" = (
|
||||
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer1{
|
||||
dir = 1
|
||||
},
|
||||
/obj/structure/chair/stool,
|
||||
/turf/open/floor/wood{
|
||||
icon_state = "wood-broken"
|
||||
},
|
||||
/area/security/vacantoffice)
|
||||
"dis" = (
|
||||
/turf/closed/wall/r_wall/rust,
|
||||
/area/bridge)
|
||||
"dlg" = (
|
||||
/obj/machinery/light,
|
||||
/turf/open/floor/wood,
|
||||
/area/security/vacantoffice)
|
||||
"dxq" = (
|
||||
/obj/effect/turf_decal/bot,
|
||||
/obj/effect/turf_decal/tile/neutral{
|
||||
@@ -87242,6 +87325,14 @@
|
||||
icon_state = "panelscorched"
|
||||
},
|
||||
/area/maintenance/starboard/fore)
|
||||
"eaJ" = (
|
||||
/obj/structure/cable{
|
||||
icon_state = "1-4"
|
||||
},
|
||||
/obj/machinery/airalarm/directional/west,
|
||||
/obj/item/twohanded/required/kirbyplants/dead,
|
||||
/turf/open/floor/wood,
|
||||
/area/security/vacantoffice)
|
||||
"elZ" = (
|
||||
/obj/machinery/status_display/evac,
|
||||
/turf/closed/wall/rust,
|
||||
@@ -87338,6 +87429,11 @@
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/turf/open/floor/plating,
|
||||
/area/maintenance/starboard/aft)
|
||||
"fkk" = (
|
||||
/turf/open/floor/wood{
|
||||
icon_state = "wood-broken6"
|
||||
},
|
||||
/area/security/vacantoffice)
|
||||
"fyr" = (
|
||||
/obj/machinery/light{
|
||||
dir = 4
|
||||
@@ -87362,6 +87458,11 @@
|
||||
dir = 8
|
||||
},
|
||||
/area/hallway/primary/fore)
|
||||
"gmF" = (
|
||||
/turf/open/floor/wood{
|
||||
icon_state = "wood-broken"
|
||||
},
|
||||
/area/security/vacantoffice)
|
||||
"gnA" = (
|
||||
/obj/machinery/airalarm{
|
||||
dir = 1;
|
||||
@@ -87428,9 +87529,20 @@
|
||||
/obj/structure/sign/departments/evac,
|
||||
/turf/closed/wall/rust,
|
||||
/area/hallway/secondary/exit/departure_lounge)
|
||||
"gKu" = (
|
||||
/obj/structure/cable{
|
||||
icon_state = "4-8"
|
||||
},
|
||||
/turf/open/floor/wood,
|
||||
/area/security/vacantoffice)
|
||||
"gMU" = (
|
||||
/turf/closed/wall/r_wall/rust,
|
||||
/area/ai_monitored/turret_protected/ai_upload)
|
||||
"gPA" = (
|
||||
/turf/open/floor/wood{
|
||||
icon_state = "wood-broken3"
|
||||
},
|
||||
/area/security/vacantoffice)
|
||||
"hgW" = (
|
||||
/obj/effect/decal/cleanable/cobweb/cobweb2,
|
||||
/obj/structure/chair/stool,
|
||||
@@ -87452,6 +87564,12 @@
|
||||
"hAb" = (
|
||||
/turf/closed/wall/r_wall/rust,
|
||||
/area/security/courtroom)
|
||||
"hDh" = (
|
||||
/obj/effect/decal/cleanable/cobweb/cobweb2,
|
||||
/obj/structure/closet/cardboard,
|
||||
/obj/effect/spawner/bundle/costume/maid,
|
||||
/turf/open/floor/wood,
|
||||
/area/security/vacantoffice)
|
||||
"hNk" = (
|
||||
/turf/closed/wall/r_wall/rust,
|
||||
/area/security/prison)
|
||||
@@ -87660,17 +87778,12 @@
|
||||
/turf/closed/mineral/random/labormineral,
|
||||
/area/space/nearstation)
|
||||
"jQY" = (
|
||||
/obj/structure/cable{
|
||||
icon_state = "1-2"
|
||||
/obj/structure/table/wood,
|
||||
/obj/item/paper_bin,
|
||||
/turf/open/floor/wood{
|
||||
icon_state = "wood-broken4"
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/structure/disposalpipe/segment,
|
||||
/obj/item/clothing/under/costume/maid,
|
||||
/turf/open/floor/plating{
|
||||
icon_state = "panelscorched"
|
||||
},
|
||||
/area/maintenance/starboard/aft)
|
||||
/area/security/vacantoffice)
|
||||
"jRw" = (
|
||||
/obj/structure/sign/poster/official/high_class_martini,
|
||||
/turf/closed/wall/r_wall,
|
||||
@@ -87753,6 +87866,18 @@
|
||||
},
|
||||
/turf/open/floor/wood,
|
||||
/area/maintenance/port/fore)
|
||||
"jUX" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
|
||||
dir = 5
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{
|
||||
dir = 6
|
||||
},
|
||||
/obj/structure/cable{
|
||||
icon_state = "4-8"
|
||||
},
|
||||
/turf/open/floor/wood,
|
||||
/area/security/vacantoffice)
|
||||
"jUZ" = (
|
||||
/obj/item/poster/random_contraband,
|
||||
/obj/item/poster/random_contraband,
|
||||
@@ -87773,6 +87898,10 @@
|
||||
"khA" = (
|
||||
/turf/closed/wall/rust,
|
||||
/area/construction/mining/aux_base)
|
||||
"koc" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1,
|
||||
/turf/open/floor/wood,
|
||||
/area/security/vacantoffice)
|
||||
"krJ" = (
|
||||
/turf/closed/wall/rust,
|
||||
/area/hallway/secondary/exit/departure_lounge)
|
||||
@@ -87794,6 +87923,12 @@
|
||||
/obj/effect/turf_decal/bot,
|
||||
/turf/open/floor/plating,
|
||||
/area/maintenance/port/fore)
|
||||
"kzw" = (
|
||||
/obj/structure/chair/office/dark{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/wood,
|
||||
/area/security/vacantoffice)
|
||||
"kIJ" = (
|
||||
/turf/open/floor/wood{
|
||||
icon_state = "wood-broken7"
|
||||
@@ -87803,6 +87938,11 @@
|
||||
/obj/structure/sign/nanotrasen,
|
||||
/turf/closed/wall,
|
||||
/area/maintenance/port/fore)
|
||||
"kXo" = (
|
||||
/obj/structure/table/wood/poker,
|
||||
/obj/item/toy/cards/deck,
|
||||
/turf/open/floor/wood,
|
||||
/area/security/vacantoffice)
|
||||
"leX" = (
|
||||
/obj/structure/chair/stool,
|
||||
/turf/open/floor/wood{
|
||||
@@ -87883,6 +88023,17 @@
|
||||
},
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/science/research)
|
||||
"mKp" = (
|
||||
/obj/structure/cable{
|
||||
icon_state = "1-2"
|
||||
},
|
||||
/obj/machinery/firealarm{
|
||||
dir = 4;
|
||||
pixel_x = -24
|
||||
},
|
||||
/obj/structure/table/wood,
|
||||
/turf/open/floor/wood,
|
||||
/area/security/vacantoffice)
|
||||
"mLN" = (
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/turf/closed/mineral/random/labormineral,
|
||||
@@ -87953,6 +88104,19 @@
|
||||
},
|
||||
/turf/open/space/basic,
|
||||
/area/hallway/secondary/entry)
|
||||
"oUc" = (
|
||||
/obj/structure/cable{
|
||||
icon_state = "1-2"
|
||||
},
|
||||
/obj/structure/table/wood,
|
||||
/obj/item/folder/paperwork,
|
||||
/turf/open/floor/wood,
|
||||
/area/security/vacantoffice)
|
||||
"ppP" = (
|
||||
/turf/open/floor/wood{
|
||||
icon_state = "wood-broken7"
|
||||
},
|
||||
/area/security/vacantoffice)
|
||||
"pCe" = (
|
||||
/obj/effect/decal/cleanable/glass,
|
||||
/turf/open/floor/plating/asteroid/airless,
|
||||
@@ -88190,12 +88354,11 @@
|
||||
/turf/open/floor/plasteel,
|
||||
/area/hallway/primary/fore)
|
||||
"uqy" = (
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/item/clothing/under/rank/civilian/janitor/maid,
|
||||
/turf/open/floor/plating{
|
||||
icon_state = "platingdmg1"
|
||||
/obj/machinery/light{
|
||||
dir = 1
|
||||
},
|
||||
/area/maintenance/starboard/aft)
|
||||
/turf/open/floor/wood,
|
||||
/area/security/vacantoffice)
|
||||
"uxQ" = (
|
||||
/obj/effect/decal/cleanable/ash,
|
||||
/turf/closed/mineral/random/labormineral,
|
||||
@@ -88203,9 +88366,20 @@
|
||||
"uzR" = (
|
||||
/turf/closed/wall/rust,
|
||||
/area/storage/primary)
|
||||
"uGi" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
|
||||
/turf/open/floor/wood,
|
||||
/area/security/vacantoffice)
|
||||
"uRM" = (
|
||||
/turf/open/floor/wood,
|
||||
/area/security/vacantoffice)
|
||||
"uWo" = (
|
||||
/turf/closed/wall/rust,
|
||||
/area/security/checkpoint/medical)
|
||||
"vle" = (
|
||||
/obj/structure/festivus,
|
||||
/turf/open/floor/wood,
|
||||
/area/security/vacantoffice)
|
||||
"vmu" = (
|
||||
/obj/structure/table/wood,
|
||||
/obj/effect/turf_decal/tile/neutral{
|
||||
@@ -88231,6 +88405,10 @@
|
||||
/mob/living/simple_animal/pet/bumbles,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/hydroponics)
|
||||
"wiK" = (
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/on,
|
||||
/turf/open/floor/wood,
|
||||
/area/security/vacantoffice)
|
||||
"wmX" = (
|
||||
/turf/closed/wall/rust,
|
||||
/area/quartermaster/qm)
|
||||
@@ -88328,6 +88506,10 @@
|
||||
/obj/effect/turf_decal/tile/neutral,
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/security/prison)
|
||||
"ykB" = (
|
||||
/obj/structure/chair/stool,
|
||||
/turf/open/floor/wood,
|
||||
/area/security/vacantoffice)
|
||||
|
||||
(1,1,1) = {"
|
||||
aaa
|
||||
@@ -125762,7 +125944,7 @@ bOl
|
||||
bSJ
|
||||
bSI
|
||||
ukP
|
||||
uqy
|
||||
bGr
|
||||
bEg
|
||||
bAT
|
||||
bOC
|
||||
@@ -126016,10 +126198,10 @@ bNw
|
||||
bTP
|
||||
bUu
|
||||
bWh
|
||||
bTy
|
||||
cax
|
||||
cxB
|
||||
ceN
|
||||
jQY
|
||||
chZ
|
||||
cxB
|
||||
cjE
|
||||
bXb
|
||||
@@ -126270,15 +126452,15 @@ bOA
|
||||
bOH
|
||||
bSH
|
||||
bNw
|
||||
bSr
|
||||
bWx
|
||||
aEK
|
||||
bSd
|
||||
bUl
|
||||
bSd
|
||||
bUl
|
||||
bSr
|
||||
bUt
|
||||
bSd
|
||||
bWx
|
||||
bUt
|
||||
bWx
|
||||
bWx
|
||||
bUt
|
||||
bUt
|
||||
bXj
|
||||
ckS
|
||||
bUu
|
||||
@@ -126527,15 +126709,15 @@ bNM
|
||||
tYn
|
||||
aVM
|
||||
bNx
|
||||
bSr
|
||||
bWx
|
||||
cyG
|
||||
cyG
|
||||
cyG
|
||||
cyG
|
||||
cyG
|
||||
cyG
|
||||
cyG
|
||||
bSr
|
||||
mKp
|
||||
oUc
|
||||
eaJ
|
||||
uRM
|
||||
uRM
|
||||
vle
|
||||
bWx
|
||||
bXz
|
||||
ccB
|
||||
cgb
|
||||
@@ -126785,14 +126967,14 @@ bZW
|
||||
bWw
|
||||
bTq
|
||||
bSL
|
||||
cyG
|
||||
cyG
|
||||
cyG
|
||||
cyG
|
||||
cyG
|
||||
cyG
|
||||
cyG
|
||||
bSr
|
||||
jQY
|
||||
kzw
|
||||
gmF
|
||||
gKu
|
||||
uRM
|
||||
uRM
|
||||
uRM
|
||||
bWx
|
||||
bEg
|
||||
bEg
|
||||
bEg
|
||||
@@ -127041,15 +127223,15 @@ cad
|
||||
bhY
|
||||
car
|
||||
bTr
|
||||
bSr
|
||||
cyG
|
||||
cyG
|
||||
cyG
|
||||
cyG
|
||||
cyG
|
||||
cyG
|
||||
cyG
|
||||
bSr
|
||||
bWx
|
||||
uqy
|
||||
wiK
|
||||
uGi
|
||||
jUX
|
||||
koc
|
||||
dbY
|
||||
dlg
|
||||
bWx
|
||||
bYf
|
||||
ceU
|
||||
cgI
|
||||
@@ -127299,14 +127481,14 @@ bQQ
|
||||
bSN
|
||||
bTs
|
||||
cav
|
||||
cyG
|
||||
cyG
|
||||
cyG
|
||||
cyG
|
||||
cyG
|
||||
cyG
|
||||
cyG
|
||||
bSr
|
||||
uRM
|
||||
fkk
|
||||
ppP
|
||||
bTS
|
||||
ykB
|
||||
kXo
|
||||
ykB
|
||||
bWx
|
||||
bPJ
|
||||
bUN
|
||||
hxn
|
||||
@@ -127555,15 +127737,15 @@ bTk
|
||||
bXL
|
||||
bXx
|
||||
bPe
|
||||
bSd
|
||||
cyG
|
||||
cyG
|
||||
cyG
|
||||
bUt
|
||||
hDh
|
||||
uRM
|
||||
uRM
|
||||
bTS
|
||||
cyG
|
||||
cyG
|
||||
cyG
|
||||
bSr
|
||||
uRM
|
||||
ykB
|
||||
gPA
|
||||
bWx
|
||||
bPJ
|
||||
bQa
|
||||
hxn
|
||||
@@ -127815,12 +127997,12 @@ bTv
|
||||
krJ
|
||||
krJ
|
||||
krJ
|
||||
bPe
|
||||
bOc
|
||||
bWn
|
||||
bWx
|
||||
bSr
|
||||
bWx
|
||||
bSL
|
||||
bSr
|
||||
bWx
|
||||
bSr
|
||||
cgx
|
||||
hxn
|
||||
@@ -129096,7 +129278,7 @@ bMO
|
||||
bOR
|
||||
cak
|
||||
aIY
|
||||
cmD
|
||||
bTy
|
||||
bTe
|
||||
bXu
|
||||
bXn
|
||||
|
||||
+4310
-6574
File diff suppressed because it is too large
Load Diff
@@ -1028,7 +1028,7 @@
|
||||
/obj/machinery/light/small{
|
||||
dir = 4
|
||||
},
|
||||
/obj/structure/toilet{
|
||||
/obj/structure/toilet/secret/prison{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plasteel/freezer,
|
||||
@@ -2291,6 +2291,10 @@
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/crew_quarters/fitness/recreation)
|
||||
"aeD" = (
|
||||
/obj/machinery/door/airlock/external,
|
||||
/turf/open/floor/plating,
|
||||
/area/hallway/primary/port)
|
||||
"aeE" = (
|
||||
/obj/effect/spawner/structure/window/reinforced,
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
|
||||
@@ -3112,6 +3116,9 @@
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/security/prison)
|
||||
"afQ" = (
|
||||
/turf/open/floor/plating,
|
||||
/area/hallway/primary/port)
|
||||
"afR" = (
|
||||
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
|
||||
dir = 1
|
||||
@@ -3180,6 +3187,10 @@
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/ai_monitored/security/armory)
|
||||
"afZ" = (
|
||||
/obj/structure/girder,
|
||||
/turf/open/floor/plating,
|
||||
/area/hallway/primary/port)
|
||||
"aga" = (
|
||||
/obj/effect/turf_decal/tile/neutral{
|
||||
dir = 1
|
||||
@@ -3658,6 +3669,10 @@
|
||||
},
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/security/prison)
|
||||
"agQ" = (
|
||||
/obj/item/electronics/airlock,
|
||||
/turf/open/floor/plating,
|
||||
/area/hallway/primary/port)
|
||||
"agR" = (
|
||||
/obj/machinery/airalarm{
|
||||
dir = 4;
|
||||
@@ -4264,6 +4279,11 @@
|
||||
icon_state = "platingdmg1"
|
||||
},
|
||||
/area/maintenance/fore)
|
||||
"ahT" = (
|
||||
/turf/open/floor/plating{
|
||||
icon_state = "panelscorched"
|
||||
},
|
||||
/area/hallway/primary/port)
|
||||
"ahU" = (
|
||||
/obj/effect/decal/cleanable/cobweb/cobweb2,
|
||||
/obj/structure/table,
|
||||
@@ -4780,6 +4800,14 @@
|
||||
},
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/crew_quarters/fitness/recreation)
|
||||
"aiT" = (
|
||||
/obj/effect/decal/cleanable/oil{
|
||||
icon_state = "floor5"
|
||||
},
|
||||
/turf/open/floor/plating{
|
||||
icon_state = "panelscorched"
|
||||
},
|
||||
/area/hallway/primary/port)
|
||||
"aiU" = (
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/on,
|
||||
/obj/effect/turf_decal/tile/neutral{
|
||||
@@ -4800,6 +4828,11 @@
|
||||
},
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/crew_quarters/fitness/recreation)
|
||||
"aiW" = (
|
||||
/turf/open/floor/plating{
|
||||
icon_state = "platingdmg1"
|
||||
},
|
||||
/area/hallway/primary/port)
|
||||
"aiX" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
|
||||
/turf/open/floor/plasteel,
|
||||
@@ -4901,6 +4934,14 @@
|
||||
/obj/item/restraints/handcuffs/cable/pink,
|
||||
/turf/open/floor/plating,
|
||||
/area/maintenance/port/fore)
|
||||
"ajk" = (
|
||||
/obj/structure/shuttle/engine/propulsion/right{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plating{
|
||||
icon_state = "platingdmg3"
|
||||
},
|
||||
/area/hallway/primary/port)
|
||||
"ajl" = (
|
||||
/obj/item/soap/deluxe,
|
||||
/obj/item/storage/secure/safe{
|
||||
@@ -4992,6 +5033,10 @@
|
||||
},
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/security/warden)
|
||||
"ajs" = (
|
||||
/obj/item/stack/sheet/metal/ten,
|
||||
/turf/open/floor/plating,
|
||||
/area/hallway/primary/port)
|
||||
"ajt" = (
|
||||
/obj/structure/closet{
|
||||
name = "Evidence Closet 5"
|
||||
@@ -5012,6 +5057,10 @@
|
||||
},
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/security/warden)
|
||||
"aju" = (
|
||||
/obj/item/stack/sheet/mineral/wood/twenty,
|
||||
/turf/open/floor/plating,
|
||||
/area/hallway/primary/port)
|
||||
"ajv" = (
|
||||
/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
|
||||
dir = 4
|
||||
@@ -6872,6 +6921,11 @@
|
||||
/obj/effect/turf_decal/stripes/line,
|
||||
/turf/open/floor/plating,
|
||||
/area/maintenance/fore)
|
||||
"amv" = (
|
||||
/obj/item/stack/sheet/metal/ten,
|
||||
/obj/item/wrench,
|
||||
/turf/open/floor/plating,
|
||||
/area/hallway/primary/port)
|
||||
"amw" = (
|
||||
/obj/structure/window/reinforced,
|
||||
/obj/machinery/door/window/eastright{
|
||||
@@ -6908,6 +6962,10 @@
|
||||
/obj/structure/window/reinforced,
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/crew_quarters/fitness/recreation)
|
||||
"amB" = (
|
||||
/obj/effect/decal/cleanable/blood/old,
|
||||
/turf/open/floor/plating,
|
||||
/area/hallway/primary/port)
|
||||
"amC" = (
|
||||
/obj/structure/chair{
|
||||
dir = 4
|
||||
@@ -15438,7 +15496,7 @@
|
||||
},
|
||||
/area/maintenance/fore)
|
||||
"aDP" = (
|
||||
/obj/structure/toilet{
|
||||
/obj/structure/toilet/secret/low_loot{
|
||||
pixel_y = 8
|
||||
},
|
||||
/obj/machinery/light/small{
|
||||
@@ -16832,7 +16890,7 @@
|
||||
/turf/open/floor/plating,
|
||||
/area/maintenance/fore)
|
||||
"aGz" = (
|
||||
/obj/structure/toilet{
|
||||
/obj/structure/toilet/secret/low_loot{
|
||||
pixel_y = 8
|
||||
},
|
||||
/obj/machinery/light/small{
|
||||
@@ -18115,7 +18173,7 @@
|
||||
/turf/open/floor/plating,
|
||||
/area/maintenance/fore)
|
||||
"aJa" = (
|
||||
/obj/structure/toilet{
|
||||
/obj/structure/toilet/secret/low_loot{
|
||||
pixel_y = 8
|
||||
},
|
||||
/obj/machinery/light/small{
|
||||
@@ -18142,7 +18200,7 @@
|
||||
/turf/open/floor/plasteel/freezer,
|
||||
/area/crew_quarters/toilet/restrooms)
|
||||
"aJc" = (
|
||||
/obj/structure/toilet{
|
||||
/obj/structure/toilet/secret/low_loot{
|
||||
dir = 4
|
||||
},
|
||||
/obj/machinery/light/small{
|
||||
@@ -32222,7 +32280,7 @@
|
||||
/turf/open/floor/plasteel/white,
|
||||
/area/crew_quarters/heads/captain/private)
|
||||
"bkL" = (
|
||||
/obj/structure/toilet{
|
||||
/obj/structure/toilet/secret/low_loot{
|
||||
pixel_y = 13
|
||||
},
|
||||
/obj/machinery/light,
|
||||
@@ -33789,16 +33847,6 @@
|
||||
},
|
||||
/turf/open/floor/plasteel/white/corner,
|
||||
/area/hallway/secondary/entry)
|
||||
"bnM" = (
|
||||
/obj/effect/spawner/structure/window/reinforced,
|
||||
/turf/open/floor/plating,
|
||||
/area/hallway/primary/port)
|
||||
"bnP" = (
|
||||
/obj/machinery/door/airlock/external{
|
||||
name = "Common Mining Dock"
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/hallway/primary/port)
|
||||
"bnR" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
|
||||
dir = 4
|
||||
@@ -34933,25 +34981,6 @@
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/hallway/primary/port)
|
||||
"bqf" = (
|
||||
/turf/open/floor/plating,
|
||||
/area/hallway/primary/port)
|
||||
"bqg" = (
|
||||
/obj/docking_port/stationary{
|
||||
dir = 2;
|
||||
dwidth = 3;
|
||||
height = 5;
|
||||
id = "commonmining_home";
|
||||
name = "SS13: Common Mining Dock";
|
||||
roundstart_template = /datum/map_template/shuttle/mining_common/meta;
|
||||
width = 7
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/hallway/primary/port)
|
||||
"bqi" = (
|
||||
/obj/structure/sign/warning/docking,
|
||||
/turf/closed/wall,
|
||||
/area/hallway/primary/port)
|
||||
"bqj" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
|
||||
/obj/structure/disposalpipe/segment,
|
||||
@@ -40332,7 +40361,7 @@
|
||||
/turf/open/floor/plasteel,
|
||||
/area/crew_quarters/toilet/auxiliary)
|
||||
"bBp" = (
|
||||
/obj/structure/toilet{
|
||||
/obj/structure/toilet/secret/low_loot{
|
||||
pixel_y = 8
|
||||
},
|
||||
/obj/machinery/light/small{
|
||||
@@ -41803,7 +41832,7 @@
|
||||
/turf/open/floor/plasteel,
|
||||
/area/crew_quarters/toilet/auxiliary)
|
||||
"bEv" = (
|
||||
/obj/structure/toilet{
|
||||
/obj/structure/toilet/secret/low_loot{
|
||||
pixel_y = 8
|
||||
},
|
||||
/obj/machinery/light/small{
|
||||
@@ -43508,7 +43537,7 @@
|
||||
/turf/open/floor/plating,
|
||||
/area/crew_quarters/toilet/auxiliary)
|
||||
"bHQ" = (
|
||||
/obj/structure/toilet{
|
||||
/obj/structure/toilet/secret/low_loot{
|
||||
pixel_y = 8
|
||||
},
|
||||
/obj/machinery/light/small{
|
||||
@@ -44116,20 +44145,20 @@
|
||||
/obj/structure/window/reinforced{
|
||||
dir = 4
|
||||
},
|
||||
/obj/machinery/atmospherics/components/binary/pump{
|
||||
dir = 8;
|
||||
name = "N2O to Pure"
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/green/visible,
|
||||
/obj/effect/turf_decal/tile/red{
|
||||
dir = 4
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/yellow/visible{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plasteel/cafeteria,
|
||||
/area/engine/atmos)
|
||||
"bIZ" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/cyan/visible,
|
||||
/obj/machinery/atmospherics/pipe/simple/yellow/visible{
|
||||
dir = 4
|
||||
/obj/machinery/atmospherics/components/binary/pump{
|
||||
dir = 8;
|
||||
name = "N2O to Pure"
|
||||
},
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/engine/atmos)
|
||||
@@ -47280,10 +47309,6 @@
|
||||
/area/engine/atmos)
|
||||
"bPw" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/green/visible,
|
||||
/obj/machinery/atmospherics/components/binary/pump{
|
||||
dir = 8;
|
||||
name = "Plasma to Pure"
|
||||
},
|
||||
/obj/structure/window/reinforced{
|
||||
dir = 4
|
||||
},
|
||||
@@ -47301,6 +47326,9 @@
|
||||
/obj/effect/turf_decal/tile/purple{
|
||||
dir = 8
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/yellow/visible{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/engine/atmos)
|
||||
"bPx" = (
|
||||
@@ -49746,10 +49774,6 @@
|
||||
/turf/open/floor/plasteel,
|
||||
/area/engine/atmos)
|
||||
"bUH" = (
|
||||
/obj/machinery/atmospherics/components/binary/pump{
|
||||
dir = 8;
|
||||
name = "CO2 to Pure"
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/green/visible,
|
||||
/obj/structure/window/reinforced{
|
||||
dir = 4
|
||||
@@ -49768,6 +49792,9 @@
|
||||
/obj/effect/turf_decal/tile/neutral{
|
||||
dir = 8
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/yellow/visible{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/engine/atmos)
|
||||
"bUI" = (
|
||||
@@ -53170,13 +53197,10 @@
|
||||
name = "Inner Pipe Access";
|
||||
req_access_txt = "24"
|
||||
},
|
||||
/obj/machinery/atmospherics/components/binary/pump{
|
||||
dir = 1;
|
||||
name = "O2 to Pure"
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/green/visible{
|
||||
dir = 4
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/yellow/visible,
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/engine/atmos)
|
||||
"cbl" = (
|
||||
@@ -79550,7 +79574,7 @@
|
||||
/turf/closed/wall,
|
||||
/area/crew_quarters/bar)
|
||||
"dhU" = (
|
||||
/obj/structure/piano,
|
||||
/obj/structure/musician/piano,
|
||||
/obj/structure/window/reinforced{
|
||||
dir = 8
|
||||
},
|
||||
@@ -81712,19 +81736,14 @@
|
||||
/obj/machinery/door/firedoor,
|
||||
/turf/open/floor/plating,
|
||||
/area/crew_quarters/cryopod)
|
||||
"eQf" = (
|
||||
/obj/machinery/computer/shuttle/mining/common{
|
||||
dir = 1
|
||||
"eJq" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/cyan/visible,
|
||||
/obj/machinery/atmospherics/components/binary/pump{
|
||||
dir = 8;
|
||||
name = "CO2 to Pure"
|
||||
},
|
||||
/obj/structure/window/reinforced,
|
||||
/obj/structure/window/reinforced{
|
||||
dir = 8
|
||||
},
|
||||
/obj/structure/window/reinforced{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/hallway/primary/port)
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/engine/atmos)
|
||||
"eZe" = (
|
||||
/obj/structure/cable/yellow{
|
||||
icon_state = "1-2"
|
||||
@@ -82112,6 +82131,13 @@
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/maintenance/starboard/aft)
|
||||
"kJW" = (
|
||||
/obj/machinery/atmospherics/components/binary/pump{
|
||||
dir = 1;
|
||||
name = "O2 to Pure"
|
||||
},
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/engine/atmos)
|
||||
"kOt" = (
|
||||
/obj/item/multitool,
|
||||
/obj/item/screwdriver,
|
||||
@@ -82335,6 +82361,14 @@
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/hallway/primary/port)
|
||||
"njd" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/cyan/visible,
|
||||
/obj/machinery/atmospherics/components/binary/pump{
|
||||
dir = 8;
|
||||
name = "Plasma to Pure"
|
||||
},
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/engine/atmos)
|
||||
"nnK" = (
|
||||
/obj/item/stack/sheet/glass/fifty,
|
||||
/obj/item/paper_bin,
|
||||
@@ -97318,9 +97352,9 @@ bjX
|
||||
blU
|
||||
baE
|
||||
baE
|
||||
bnM
|
||||
bnM
|
||||
bnM
|
||||
baE
|
||||
baE
|
||||
baE
|
||||
baE
|
||||
baE
|
||||
jPu
|
||||
@@ -97573,13 +97607,13 @@ bgw
|
||||
bix
|
||||
bjY
|
||||
blV
|
||||
bqi
|
||||
bqf
|
||||
bqf
|
||||
bqf
|
||||
bqf
|
||||
bqf
|
||||
bqi
|
||||
baE
|
||||
afQ
|
||||
afQ
|
||||
afQ
|
||||
afZ
|
||||
afQ
|
||||
baE
|
||||
djW
|
||||
bNd
|
||||
alK
|
||||
@@ -97830,13 +97864,13 @@ bgx
|
||||
biy
|
||||
bjZ
|
||||
blW
|
||||
bnM
|
||||
bqf
|
||||
bqf
|
||||
bqf
|
||||
bqf
|
||||
bqf
|
||||
bnM
|
||||
baE
|
||||
afZ
|
||||
afQ
|
||||
ajs
|
||||
afQ
|
||||
afQ
|
||||
baE
|
||||
bBf
|
||||
kQP
|
||||
bzx
|
||||
@@ -98087,13 +98121,13 @@ bgy
|
||||
biz
|
||||
bka
|
||||
blX
|
||||
bnM
|
||||
bqf
|
||||
bqf
|
||||
bqf
|
||||
bqf
|
||||
bqf
|
||||
bnM
|
||||
baE
|
||||
afQ
|
||||
afQ
|
||||
afQ
|
||||
afQ
|
||||
afQ
|
||||
baE
|
||||
bBf
|
||||
bCL
|
||||
bEq
|
||||
@@ -98344,13 +98378,13 @@ bgz
|
||||
biA
|
||||
bnR
|
||||
blY
|
||||
bnP
|
||||
bqg
|
||||
bqf
|
||||
bqf
|
||||
bqf
|
||||
bqf
|
||||
bnM
|
||||
aeD
|
||||
agQ
|
||||
afQ
|
||||
afQ
|
||||
afQ
|
||||
afQ
|
||||
baE
|
||||
rNX
|
||||
jBe
|
||||
bzx
|
||||
@@ -98601,13 +98635,13 @@ bgA
|
||||
biz
|
||||
bkb
|
||||
blZ
|
||||
eQf
|
||||
bqf
|
||||
bqf
|
||||
bqf
|
||||
bqf
|
||||
bqf
|
||||
bnM
|
||||
baE
|
||||
ahT
|
||||
afQ
|
||||
afQ
|
||||
aju
|
||||
afQ
|
||||
baE
|
||||
bBh
|
||||
xmb
|
||||
iSt
|
||||
@@ -98858,13 +98892,13 @@ bpt
|
||||
bcW
|
||||
bkc
|
||||
bma
|
||||
bnM
|
||||
bqf
|
||||
bqf
|
||||
bqf
|
||||
bqf
|
||||
bqf
|
||||
bnM
|
||||
baE
|
||||
ahT
|
||||
aiW
|
||||
afQ
|
||||
amv
|
||||
afQ
|
||||
baE
|
||||
bBf
|
||||
bCM
|
||||
bzx
|
||||
@@ -99115,13 +99149,13 @@ bbK
|
||||
bcW
|
||||
dhP
|
||||
bqd
|
||||
bqi
|
||||
bqf
|
||||
bqf
|
||||
bqf
|
||||
bqf
|
||||
bqf
|
||||
bqi
|
||||
baE
|
||||
aiT
|
||||
ajk
|
||||
afQ
|
||||
amB
|
||||
afQ
|
||||
baE
|
||||
djW
|
||||
bsx
|
||||
xfI
|
||||
@@ -99374,9 +99408,9 @@ bkd
|
||||
bmb
|
||||
baE
|
||||
baE
|
||||
bnM
|
||||
baE
|
||||
bnM
|
||||
baE
|
||||
baE
|
||||
baE
|
||||
baE
|
||||
bBf
|
||||
@@ -126382,7 +126416,7 @@ dDm
|
||||
bIS
|
||||
bZK
|
||||
cbk
|
||||
ccP
|
||||
kJW
|
||||
ceh
|
||||
cfx
|
||||
bAR
|
||||
@@ -127657,11 +127691,11 @@ bIZ
|
||||
bKG
|
||||
bMl
|
||||
dhj
|
||||
bIZ
|
||||
njd
|
||||
bKG
|
||||
bMl
|
||||
bKG
|
||||
bIZ
|
||||
eJq
|
||||
bKG
|
||||
bMl
|
||||
bYB
|
||||
|
||||
@@ -11768,7 +11768,7 @@
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/crew_quarters/theatre)
|
||||
"atY" = (
|
||||
/obj/structure/piano{
|
||||
/obj/structure/musician/piano{
|
||||
icon_state = "piano"
|
||||
},
|
||||
/obj/machinery/light{
|
||||
|
||||
@@ -2285,7 +2285,7 @@
|
||||
/turf/open/floor/plasteel,
|
||||
/area/security/prison)
|
||||
"ahb" = (
|
||||
/obj/structure/toilet{
|
||||
/obj/structure/toilet/secret/prison{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/plasteel/freezer,
|
||||
@@ -9106,7 +9106,7 @@
|
||||
/turf/open/floor/plasteel/freezer,
|
||||
/area/crew_quarters/heads/captain)
|
||||
"avK" = (
|
||||
/obj/structure/toilet{
|
||||
/obj/structure/toilet/secret/low_loot{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/plasteel/freezer,
|
||||
@@ -14667,7 +14667,7 @@
|
||||
/turf/open/floor/plasteel/freezer,
|
||||
/area/crew_quarters/toilet/restrooms)
|
||||
"aIl" = (
|
||||
/obj/structure/toilet{
|
||||
/obj/structure/toilet/secret/low_loot{
|
||||
dir = 8
|
||||
},
|
||||
/obj/machinery/light/small{
|
||||
@@ -16490,7 +16490,7 @@
|
||||
/turf/open/floor/plasteel/cafeteria,
|
||||
/area/crew_quarters/cafeteria/lunchroom)
|
||||
"aNc" = (
|
||||
/obj/structure/toilet{
|
||||
/obj/structure/toilet/secret/low_loot{
|
||||
dir = 4
|
||||
},
|
||||
/obj/effect/landmark/start/assistant,
|
||||
@@ -21324,7 +21324,7 @@
|
||||
"aYm" = (
|
||||
/obj/structure/closet/crate/wooden/toy,
|
||||
/obj/item/lipstick/random,
|
||||
/obj/item/clothing/gloves/color/rainbow/clown,
|
||||
/obj/item/clothing/gloves/color/rainbow,
|
||||
/obj/effect/turf_decal/tile/neutral{
|
||||
dir = 1
|
||||
},
|
||||
@@ -43015,7 +43015,7 @@
|
||||
/area/maintenance/department/engine)
|
||||
"bUb" = (
|
||||
/obj/structure/grille/broken,
|
||||
/obj/structure/piano,
|
||||
/obj/structure/musician/piano,
|
||||
/turf/open/floor/plating,
|
||||
/area/maintenance/department/engine)
|
||||
"bUc" = (
|
||||
@@ -47393,7 +47393,7 @@
|
||||
/turf/open/floor/plasteel/grimy,
|
||||
/area/chapel/main/monastery)
|
||||
"cgO" = (
|
||||
/obj/structure/toilet{
|
||||
/obj/structure/toilet/secret/low_loot{
|
||||
pixel_y = 8
|
||||
},
|
||||
/obj/machinery/light/small{
|
||||
@@ -47734,7 +47734,7 @@
|
||||
/turf/open/floor/plasteel/grimy,
|
||||
/area/chapel/main/monastery)
|
||||
"ciq" = (
|
||||
/obj/structure/toilet{
|
||||
/obj/structure/toilet/secret/low_loot{
|
||||
pixel_y = 8
|
||||
},
|
||||
/turf/open/floor/plasteel/showroomfloor,
|
||||
@@ -55939,7 +55939,7 @@
|
||||
/turf/open/floor/carpet,
|
||||
/area/chapel/office)
|
||||
"kgR" = (
|
||||
/obj/structure/toilet{
|
||||
/obj/structure/toilet/secret/low_loot{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
@@ -58271,7 +58271,7 @@
|
||||
/turf/open/floor/plating,
|
||||
/area/chapel/office)
|
||||
"plA" = (
|
||||
/obj/structure/piano,
|
||||
/obj/structure/musician/piano,
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/maintenance/department/crew_quarters/dorms)
|
||||
"pmB" = (
|
||||
|
||||
+183
-123
@@ -10005,6 +10005,12 @@
|
||||
/obj/structure/chair/stool,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/syndicate_mothership)
|
||||
"wZ" = (
|
||||
/obj/structure/bed,
|
||||
/obj/item/bedsheet/syndie,
|
||||
/obj/effect/landmark/holding_facility,
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/centcom/holding)
|
||||
"xa" = (
|
||||
/obj/machinery/door/window/northright{
|
||||
dir = 4;
|
||||
@@ -12452,6 +12458,13 @@
|
||||
},
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/centcom/evac)
|
||||
"CQ" = (
|
||||
/obj/effect/landmark/holding_facility,
|
||||
/mob/living/simple_animal/bot/medbot{
|
||||
name = "Syndicate Hospitality Drone"
|
||||
},
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/centcom/holding)
|
||||
"CR" = (
|
||||
/obj/machinery/computer/security{
|
||||
dir = 8
|
||||
@@ -14407,7 +14420,7 @@
|
||||
/obj/machinery/light{
|
||||
dir = 8
|
||||
},
|
||||
/obj/structure/piano,
|
||||
/obj/structure/musician/piano,
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/centcom/holding)
|
||||
"Hk" = (
|
||||
@@ -17251,10 +17264,21 @@
|
||||
/obj/structure/window/reinforced/fulltile,
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/centcom/holding)
|
||||
"Ql" = (
|
||||
/obj/machinery/light,
|
||||
/obj/effect/landmark/holding_facility,
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/centcom/holding)
|
||||
"Qm" = (
|
||||
/obj/singularity/wizard/mapped,
|
||||
/turf/open/indestructible/binary,
|
||||
/area/fabric_of_reality)
|
||||
"Qn" = (
|
||||
/obj/machinery/vr_sleeper/hugbox{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/centcom/holding)
|
||||
"Qo" = (
|
||||
/turf/open/floor/mineral/plastitanium/red,
|
||||
/area/centcom/evac)
|
||||
@@ -17794,7 +17818,7 @@
|
||||
/area/syndicate_mothership)
|
||||
"Tn" = (
|
||||
/obj/structure/table/wood/fancy,
|
||||
/obj/item/candle/infinite{
|
||||
/obj/item/candle/infinite/hugbox{
|
||||
pixel_y = 6
|
||||
},
|
||||
/turf/open/indestructible/hotelwood,
|
||||
@@ -17820,7 +17844,6 @@
|
||||
dir = 4
|
||||
},
|
||||
/obj/structure/window/reinforced/tinted{
|
||||
icon_state = "twindow";
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plasteel/white,
|
||||
@@ -17897,7 +17920,6 @@
|
||||
dir = 8
|
||||
},
|
||||
/obj/structure/window/reinforced/tinted{
|
||||
icon_state = "twindow";
|
||||
dir = 1
|
||||
},
|
||||
/obj/machinery/washing_machine,
|
||||
@@ -17939,10 +17961,13 @@
|
||||
/obj/vehicle/ridden/janicart,
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/centcom/holding)
|
||||
"Ud" = (
|
||||
/obj/effect/landmark/holding_facility,
|
||||
"Uc" = (
|
||||
/obj/machinery/vending/sustenance,
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/centcom/holding)
|
||||
"Ud" = (
|
||||
/turf/closed/indestructible/wood,
|
||||
/area/centcom/holding)
|
||||
"Ug" = (
|
||||
/obj/machinery/door/poddoor/shuttledock{
|
||||
checkdir = 1;
|
||||
@@ -17962,6 +17987,11 @@
|
||||
},
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/centcom/holding)
|
||||
"Ui" = (
|
||||
/obj/structure/table,
|
||||
/obj/item/clothing/mask/luchador/tecnicos,
|
||||
/turf/open/floor/holofloor/wood,
|
||||
/area/holodeck/rec_center/wrestlingarena)
|
||||
"Uj" = (
|
||||
/obj/machinery/door/airlock/centcom{
|
||||
name = "Restroom";
|
||||
@@ -18204,6 +18234,11 @@
|
||||
/obj/structure/window/reinforced/tinted,
|
||||
/turf/open/floor/plasteel/freezer,
|
||||
/area/syndicate_mothership)
|
||||
"Vk" = (
|
||||
/obj/structure/table,
|
||||
/obj/item/storage/belt/champion/wrestling/holodeck,
|
||||
/turf/open/floor/holofloor/wood,
|
||||
/area/holodeck/rec_center/wrestlingarena)
|
||||
"Vt" = (
|
||||
/obj/item/paper/fluff/stations/centcom/disk_memo,
|
||||
/obj/structure/noticeboard{
|
||||
@@ -18368,6 +18403,11 @@
|
||||
},
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/centcom/holding)
|
||||
"Wx" = (
|
||||
/obj/structure/table,
|
||||
/obj/item/clothing/mask/luchador,
|
||||
/turf/open/floor/holofloor/wood,
|
||||
/area/holodeck/rec_center/wrestlingarena)
|
||||
"Wz" = (
|
||||
/obj/structure/table,
|
||||
/obj/item/storage/backpack/duffelbag/med/surgery,
|
||||
@@ -18741,6 +18781,11 @@
|
||||
},
|
||||
/turf/open/floor/plasteel/cafeteria,
|
||||
/area/centcom/holding)
|
||||
"Yv" = (
|
||||
/obj/structure/table,
|
||||
/obj/item/clothing/mask/luchador/rudos,
|
||||
/turf/open/floor/holofloor/wood,
|
||||
/area/holodeck/rec_center/wrestlingarena)
|
||||
"Yw" = (
|
||||
/turf/closed/indestructible/fakedoor{
|
||||
name = "External Access"
|
||||
@@ -18750,6 +18795,9 @@
|
||||
/obj/machinery/door/airlock/titanium,
|
||||
/turf/open/floor/mineral/titanium,
|
||||
/area/centcom/evac)
|
||||
"YC" = (
|
||||
/turf/open/floor/holofloor/wood,
|
||||
/area/holodeck/rec_center/wrestlingarena)
|
||||
"YJ" = (
|
||||
/obj/item/reagent_containers/food/condiment/enzyme,
|
||||
/obj/item/reagent_containers/food/drinks/shaker,
|
||||
@@ -18822,6 +18870,14 @@
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/centcom/supplypod)
|
||||
"Zl" = (
|
||||
/obj/structure/table,
|
||||
/obj/item/clothing/gloves/boxing,
|
||||
/obj/item/clothing/gloves/boxing/blue,
|
||||
/obj/item/clothing/gloves/boxing/green,
|
||||
/obj/item/clothing/gloves/boxing/yellow,
|
||||
/turf/open/floor/holofloor/wood,
|
||||
/area/holodeck/rec_center/wrestlingarena)
|
||||
"Zr" = (
|
||||
/obj/machinery/light,
|
||||
/turf/open/floor/plasteel/dark,
|
||||
@@ -18844,6 +18900,10 @@
|
||||
/obj/effect/landmark/start/nukeop_leader,
|
||||
/turf/open/floor/wood,
|
||||
/area/syndicate_mothership)
|
||||
"ZB" = (
|
||||
/obj/effect/landmark/holding_facility,
|
||||
/turf/open/indestructible/hotelwood,
|
||||
/area/centcom/holding)
|
||||
"ZE" = (
|
||||
/obj/structure/sink{
|
||||
dir = 4;
|
||||
@@ -43829,11 +43889,11 @@ aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
Ud
|
||||
Ud
|
||||
Ud
|
||||
Ud
|
||||
Ud
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
@@ -44086,11 +44146,11 @@ aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
Ud
|
||||
Uc
|
||||
ZB
|
||||
ZB
|
||||
Ud
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
@@ -44343,11 +44403,11 @@ aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
Ud
|
||||
ZB
|
||||
CQ
|
||||
Ql
|
||||
Ud
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
@@ -44600,11 +44660,11 @@ aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
Ud
|
||||
wZ
|
||||
ZB
|
||||
Qn
|
||||
Ud
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
@@ -44857,11 +44917,11 @@ aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
Ud
|
||||
Ud
|
||||
Ud
|
||||
Ud
|
||||
Ud
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
@@ -46174,8 +46234,8 @@ Sd
|
||||
HH
|
||||
Nd
|
||||
WM
|
||||
Ud
|
||||
Ud
|
||||
Sd
|
||||
Sd
|
||||
NT
|
||||
Nj
|
||||
Po
|
||||
@@ -46431,8 +46491,8 @@ Sd
|
||||
XM
|
||||
NT
|
||||
Sd
|
||||
Ud
|
||||
Ud
|
||||
Sd
|
||||
Sd
|
||||
NT
|
||||
YU
|
||||
zT
|
||||
@@ -46688,8 +46748,8 @@ Sd
|
||||
Tn
|
||||
NT
|
||||
Sd
|
||||
Ud
|
||||
Ud
|
||||
Sd
|
||||
Sd
|
||||
NT
|
||||
YU
|
||||
zT
|
||||
@@ -46945,8 +47005,8 @@ Sd
|
||||
GY
|
||||
NT
|
||||
Sd
|
||||
Ud
|
||||
Ud
|
||||
Sd
|
||||
Sd
|
||||
NT
|
||||
YU
|
||||
zT
|
||||
@@ -47202,8 +47262,8 @@ Qk
|
||||
Vu
|
||||
Nd
|
||||
Gs
|
||||
Ud
|
||||
Ud
|
||||
Sd
|
||||
Sd
|
||||
NT
|
||||
Mt
|
||||
PA
|
||||
@@ -71951,18 +72011,18 @@ aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
ab
|
||||
ag
|
||||
ag
|
||||
ag
|
||||
ag
|
||||
ag
|
||||
ag
|
||||
ag
|
||||
ag
|
||||
ag
|
||||
ag
|
||||
ab
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
@@ -72208,18 +72268,18 @@ aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
bj
|
||||
YC
|
||||
YC
|
||||
YC
|
||||
YC
|
||||
YC
|
||||
YC
|
||||
YC
|
||||
YC
|
||||
YC
|
||||
YC
|
||||
fx
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
@@ -72465,18 +72525,18 @@ aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
bj
|
||||
Vk
|
||||
YC
|
||||
YC
|
||||
YC
|
||||
YC
|
||||
YC
|
||||
YC
|
||||
YC
|
||||
YC
|
||||
Vk
|
||||
fx
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
@@ -72722,18 +72782,18 @@ aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
bj
|
||||
Vk
|
||||
YC
|
||||
YC
|
||||
YC
|
||||
YC
|
||||
YC
|
||||
YC
|
||||
YC
|
||||
YC
|
||||
Vk
|
||||
fx
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
@@ -72979,18 +73039,18 @@ aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
bj
|
||||
Vk
|
||||
YC
|
||||
YC
|
||||
YC
|
||||
YC
|
||||
YC
|
||||
YC
|
||||
YC
|
||||
YC
|
||||
Vk
|
||||
fx
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
@@ -73236,18 +73296,18 @@ aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
bj
|
||||
YC
|
||||
YC
|
||||
Wx
|
||||
YC
|
||||
Yv
|
||||
Ui
|
||||
YC
|
||||
Zl
|
||||
YC
|
||||
YC
|
||||
fx
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
@@ -73494,16 +73554,16 @@ ae
|
||||
ae
|
||||
ae
|
||||
ab
|
||||
ae
|
||||
ae
|
||||
ae
|
||||
ae
|
||||
ae
|
||||
ae
|
||||
ae
|
||||
ae
|
||||
ae
|
||||
ae
|
||||
ag
|
||||
ag
|
||||
ag
|
||||
ag
|
||||
ag
|
||||
ag
|
||||
ag
|
||||
ag
|
||||
ag
|
||||
ag
|
||||
ab
|
||||
aa
|
||||
aa
|
||||
|
||||
@@ -197,7 +197,7 @@
|
||||
/turf/open/floor/plasteel,
|
||||
/area/shuttle/escape)
|
||||
"aF" = (
|
||||
/obj/structure/piano{
|
||||
/obj/structure/musician/piano{
|
||||
icon_state = "piano"
|
||||
},
|
||||
/turf/open/floor/plasteel/grimy,
|
||||
|
||||
@@ -1,124 +0,0 @@
|
||||
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
|
||||
"a" = (
|
||||
/turf/closed/wall/mineral/titanium,
|
||||
/area/shuttle/mining)
|
||||
"b" = (
|
||||
/obj/effect/spawner/structure/window/shuttle,
|
||||
/turf/open/floor/plating,
|
||||
/area/shuttle/mining)
|
||||
"c" = (
|
||||
/obj/structure/table,
|
||||
/turf/open/floor/mineral/titanium/blue,
|
||||
/area/shuttle/mining)
|
||||
"d" = (
|
||||
/obj/machinery/computer/shuttle/mining/common,
|
||||
/turf/open/floor/mineral/titanium/blue,
|
||||
/area/shuttle/mining)
|
||||
"e" = (
|
||||
/turf/open/floor/mineral/titanium,
|
||||
/area/shuttle/mining)
|
||||
"f" = (
|
||||
/obj/structure/chair/comfy/shuttle{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/mineral/titanium/blue,
|
||||
/area/shuttle/mining)
|
||||
"g" = (
|
||||
/obj/machinery/light{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/mineral/titanium,
|
||||
/area/shuttle/mining)
|
||||
"h" = (
|
||||
/obj/machinery/door/airlock/titanium{
|
||||
name = "Lavaland Shuttle Airlock"
|
||||
},
|
||||
/obj/docking_port/mobile{
|
||||
dir = 8;
|
||||
dwidth = 3;
|
||||
height = 5;
|
||||
id = "mining_common";
|
||||
name = "lavaland shuttle";
|
||||
port_direction = 4;
|
||||
width = 7
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/shuttle/mining)
|
||||
"i" = (
|
||||
/obj/structure/closet/crate,
|
||||
/turf/open/floor/mineral/titanium/blue,
|
||||
/area/shuttle/mining)
|
||||
"j" = (
|
||||
/obj/structure/shuttle/engine/heater,
|
||||
/obj/structure/window/reinforced{
|
||||
dir = 1;
|
||||
layer = 2.9
|
||||
},
|
||||
/obj/structure/window/reinforced{
|
||||
dir = 8
|
||||
},
|
||||
/obj/structure/window/reinforced{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/shuttle/mining)
|
||||
"k" = (
|
||||
/obj/structure/ore_box,
|
||||
/turf/open/floor/mineral/titanium/blue,
|
||||
/area/shuttle/mining)
|
||||
"l" = (
|
||||
/obj/structure/shuttle/engine/propulsion/burst,
|
||||
/turf/open/floor/plating/airless,
|
||||
/area/shuttle/mining)
|
||||
"Q" = (
|
||||
/obj/structure/chair/comfy/shuttle{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/mineral/titanium,
|
||||
/area/shuttle/mining)
|
||||
|
||||
(1,1,1) = {"
|
||||
a
|
||||
a
|
||||
b
|
||||
a
|
||||
b
|
||||
a
|
||||
a
|
||||
"}
|
||||
(2,1,1) = {"
|
||||
a
|
||||
c
|
||||
e
|
||||
g
|
||||
f
|
||||
i
|
||||
a
|
||||
"}
|
||||
(3,1,1) = {"
|
||||
b
|
||||
d
|
||||
Q
|
||||
e
|
||||
f
|
||||
j
|
||||
l
|
||||
"}
|
||||
(4,1,1) = {"
|
||||
a
|
||||
c
|
||||
e
|
||||
e
|
||||
f
|
||||
k
|
||||
a
|
||||
"}
|
||||
(5,1,1) = {"
|
||||
a
|
||||
a
|
||||
b
|
||||
h
|
||||
b
|
||||
a
|
||||
a
|
||||
"}
|
||||
@@ -71,6 +71,11 @@
|
||||
#define MUT_EXTRA 2
|
||||
#define MUT_OTHER 3
|
||||
|
||||
//species use_skintones defines
|
||||
#define NO_SKINTONES 0
|
||||
#define USE_SKINTONES 1
|
||||
#define USE_SKINTONES_GRAYSCALE_CUSTOM 2 //adds a "_g" suffix to limb overlays icon states if the skin_tone is a custom one.
|
||||
|
||||
//DNA - Because fuck you and your magic numbers being all over the codebase.
|
||||
#define DNA_BLOCK_SIZE 3
|
||||
|
||||
@@ -132,8 +137,9 @@
|
||||
#define NOGENITALS 21 //Cannot create, use, or otherwise have genitals
|
||||
#define MATRIXED 22 //if icon is color matrix'd
|
||||
#define SKINTONE 23 //uses skin tones
|
||||
#define HORNCOLOR 24
|
||||
#define WINGCOLOR 25
|
||||
#define CUSTOM_SKINTONE 24 //adds a "_g" suffix to bodypart overlays icon states if a custom skintone is used.
|
||||
#define HORNCOLOR 25
|
||||
#define WINGCOLOR 26
|
||||
|
||||
//organ slots
|
||||
#define ORGAN_SLOT_BRAIN "brain"
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
#define GENITAL_CAN_AROUSE (1<<8)
|
||||
#define GENITAL_UNDIES_HIDDEN (1<<9)
|
||||
#define UPDATE_OWNER_APPEARANCE (1<<10)
|
||||
#define GENITAL_CAN_TAUR (1<<11)
|
||||
|
||||
|
||||
#define DEF_VAGINA_SHAPE "Human"
|
||||
@@ -98,7 +99,7 @@
|
||||
#define NO_ASS_SLAP (1<<10)
|
||||
#define BIMBOFICATION (1<<11)
|
||||
|
||||
#define TOGGLES_CITADEL (EATING_NOISES|DIGESTION_NOISES|BREAST_ENLARGEMENT|PENIS_ENLARGEMENT)
|
||||
#define TOGGLES_CITADEL 0
|
||||
|
||||
//component stuff
|
||||
#define COMSIG_VORE_TOGGLED "voremode_toggled" // totally not copypasta
|
||||
|
||||
@@ -114,12 +114,17 @@
|
||||
//slowdown when in softcrit
|
||||
#define SOFTCRIT_ADD_SLOWDOWN 6
|
||||
|
||||
//Attack types for checking shields/hit reactions
|
||||
#define MELEE_ATTACK 1
|
||||
#define UNARMED_ATTACK 2
|
||||
#define PROJECTILE_ATTACK 3
|
||||
#define THROWN_PROJECTILE_ATTACK 4
|
||||
#define LEAP_ATTACK 5
|
||||
/// Attack types for check_block()/run_block(). Flags, combinable.
|
||||
/// Attack was melee, whether or not armed.
|
||||
#define ATTACK_TYPE_MELEE (1<<0)
|
||||
/// Attack was with a gun or something that should count as a gun (but not if a gun shouldn't count for a gun, crazy right?)
|
||||
#define ATTACK_TYPE_PROJECTILE (1<<1)
|
||||
/// Attack was unarmed.. this usually means hand to hand combat.
|
||||
#define ATTACK_TYPE_UNARMED (1<<2)
|
||||
/// Attack was a thrown atom hitting the victim.
|
||||
#define ATTACK_TYPE_THROWN (1<<3)
|
||||
/// Attack was a bodyslam/leap/tackle. See: Xenomorph leap tackles.
|
||||
#define ATTACK_TYPE_TACKLE (1<<4)
|
||||
|
||||
//attack visual effects
|
||||
#define ATTACK_EFFECT_PUNCH "punch"
|
||||
@@ -252,4 +257,53 @@ GLOBAL_LIST_INIT(shove_disarming_types, typecacheof(list(
|
||||
#define BULLET_ACT_FORCE_PIERCE "PIERCE" //It pierces through the object regardless of the bullet being piercing by default.
|
||||
#define BULLET_ACT_TURF "TURF" //It hit us but it should hit something on the same turf too. Usually used for turfs.
|
||||
|
||||
/// 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.
|
||||
/// Attack was not blocked
|
||||
#define BLOCK_NONE NONE
|
||||
/// Attack was blocked, do not do damage. THIS FLAG MUST BE THERE FOR DAMAGE/EFFECT PREVENTION!
|
||||
#define BLOCK_SUCCESS (1<<1)
|
||||
|
||||
/// The below are for "metadata" on "how" the attack was blocked.
|
||||
|
||||
/// Attack was and should be redirected according to list argument REDIRECT_METHOD (NOTE: the SHOULD here is important, as it says "the thing blocking isn't handling the reflecting for you so do it yourself"!)
|
||||
#define BLOCK_SHOULD_REDIRECT (1<<2)
|
||||
/// Attack was redirected (whether by us or by SHOULD_REDIRECT flagging for automatic handling)
|
||||
#define BLOCK_REDIRECTED (1<<3)
|
||||
/// Attack was blocked by something like a shield.
|
||||
#define BLOCK_PHYSICAL_EXTERNAL (1<<4)
|
||||
/// Attack was blocked by something worn on you.
|
||||
#define BLOCK_PHYSICAL_INTERNAL (1<<5)
|
||||
/// Attack outright missed because the target dodged. Should usually be combined with redirection passthrough or something (see martial arts)
|
||||
#define BLOCK_TARGET_DODGED (1<<7)
|
||||
/// Meta-flag for run_block/do_run_block : By default, BLOCK_SUCCESS tells do_run_block() to assume the attack is completely blocked and not continue the block chain. If this is present, it will continue to check other items in the chain rather than stopping.
|
||||
#define BLOCK_CONTINUE_CHAIN (1<<8)
|
||||
|
||||
/// For keys in associative list/block_return as we don't want to saturate our (somewhat) limited flags.
|
||||
#define BLOCK_RETURN_REDIRECT_METHOD "REDIRECT_METHOD"
|
||||
/// Pass through victim
|
||||
#define REDIRECT_METHOD_PASSTHROUGH "passthrough"
|
||||
/// Deflect at randomish angle
|
||||
#define REDIRECT_METHOD_DEFLECT "deflect"
|
||||
/// reverse 180 angle, basically (as opposed to "realistic" wall reflections)
|
||||
#define REDIRECT_METHOD_REFLECT "reflect"
|
||||
/// "do not taser the bad man with the desword" - actually aims at the firer/attacker rather than just reversing
|
||||
#define REDIRECT_METHOD_RETURN_TO_SENDER "no_you"
|
||||
|
||||
/// These keys are generally only applied to the list if real_attack is FALSE. Used incase we want to make "smarter" mob AI in the future or something.
|
||||
/// Tells the caller how likely from 0 (none) to 100 (always) we are to reflect energy projectiles
|
||||
#define BLOCK_RETURN_REFLECT_PROJECTILE_CHANCE "reflect_projectile_chance"
|
||||
/// Tells the caller how likely we are to block attacks from 0 to 100 in general
|
||||
#define BLOCK_RETURN_NORMAL_BLOCK_CHANCE "normal_block_chance"
|
||||
/// Tells the caller about how many hits we can soak on average before our blocking fails.
|
||||
#define BLOCK_RETURN_BLOCK_CAPACITY "block_capacity"
|
||||
|
||||
/// Default if the above isn't set in the list.
|
||||
#define DEFAULT_REDIRECT_METHOD_PROJECTILE REDIRECT_METHOD_DEFLECT
|
||||
|
||||
/// Block priorities
|
||||
#define BLOCK_PRIORITY_HELD_ITEM 100
|
||||
#define BLOCK_PRIORITY_CLOTHING 50
|
||||
#define BLOCK_PRIORITY_WEAR_SUIT 75
|
||||
#define BLOCK_PRIORITY_UNIFORM 25
|
||||
|
||||
#define BLOCK_PRIORITY_DEFAULT BLOCK_PRIORITY_HELD_ITEM
|
||||
|
||||
@@ -39,3 +39,17 @@
|
||||
//Ouch my toes!
|
||||
#define CALTROP_BYPASS_SHOES 1
|
||||
#define CALTROP_IGNORE_WALKERS 2
|
||||
|
||||
#define SPELL_SKIP_ALL_REQS (1<<0)
|
||||
#define SPELL_SKIP_CENTCOM (1<<1)
|
||||
#define SPELL_SKIP_STAT (1<<2)
|
||||
#define SPELL_SKIP_CLOTHES (1<<3)
|
||||
#define SPELL_SKIP_ANTIMAGIC (1<<4)
|
||||
#define SPELL_SKIP_VOCAL (1<<5)
|
||||
#define SPELL_SKIP_MOBTYPE (1<<6)
|
||||
#define SPELL_WIZARD_HAT (1<<7)
|
||||
#define SPELL_WIZARD_ROBE (1<<8)
|
||||
#define SPELL_CULT_HELMET (1<<9)
|
||||
#define SPELL_CULT_ARMOR (1<<10)
|
||||
#define SPELL_WIZARD_GARB (SPELL_WIZARD_HAT|SPELL_WIZARD_ROBE)
|
||||
#define SPELL_CULT_GARB (SPELL_CULT_HELMET|SPELL_CULT_ARMOR)
|
||||
|
||||
@@ -149,7 +149,9 @@
|
||||
#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_GHOSTIZE "mob_ghostize" //from base of mob/Ghostize(): (can_reenter_corpse, special, penalize)
|
||||
#define COMPONENT_BLOCK_GHOSTING 1
|
||||
#define COMPONENT_BLOCK_GHOSTING (1<<0)
|
||||
#define COMPONENT_DO_NOT_PENALIZE_GHOSTING (1<<1)
|
||||
#define COMPONENT_FREE_GHOSTING (1<<2)
|
||||
#define COMSIG_MOB_ALLOWED "mob_allowed" //from base of obj/allowed(mob/M): (/obj) returns bool, if TRUE the mob has id access to the obj
|
||||
#define COMSIG_MOB_RECEIVE_MAGIC "mob_receive_magic" //from base of mob/anti_magic_check(): (mob/user, magic, holy, tinfoil, chargecost, self, protection_sources)
|
||||
#define COMPONENT_BLOCK_MAGIC 1
|
||||
@@ -177,6 +179,8 @@
|
||||
// #define SPEECH_FORCED 7
|
||||
#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)
|
||||
|
||||
// /mob/living signals
|
||||
#define COMSIG_LIVING_REGENERATE_LIMBS "living_regenerate_limbs" //from base of /mob/living/regenerate_limbs(): (noheal, excluded_limbs)
|
||||
#define COMSIG_LIVING_RESIST "living_resist" //from base of mob/living/resist() (/mob/living)
|
||||
@@ -186,8 +190,11 @@
|
||||
#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_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)
|
||||
#define COMSIG_LIVING_COMBAT_ENABLED "combatmode_enabled" //from base of mob/living/enable_combat_mode() (was_forced)
|
||||
#define COMSIG_LIVING_COMBAT_DISABLED "combatmode_disabled" //from base of mob/living/disable_combat_mode() (was_forced)
|
||||
|
||||
@@ -236,9 +243,14 @@
|
||||
#define COMSIG_ITEM_IMBUE_SOUL "item_imbue_soul" //return a truthy value to prevent ensouling, checked in /obj/effect/proc_holder/spell/targeted/lichdom/cast(): (mob/user)
|
||||
#define COMSIG_ITEM_HIT_REACT "item_hit_react" //from base of obj/item/hit_reaction(): (list/args)
|
||||
#define COMSIG_ITEM_WEARERCROSSED "wearer_crossed" //called on item when crossed by something (): (/atom/movable)
|
||||
#define COMSIG_ITEM_WORN_OVERLAYS "item_worn_overlays" //from base of obj/item/worn_overlays(): (isinhands, icon_file, used_state, style_flags, list/overlays)
|
||||
// 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)
|
||||
|
||||
// /obj/item/clothing signals
|
||||
#define COMSIG_SHOES_STEP_ACTION "shoes_step_action" //from base of obj/item/clothing/shoes/proc/step_action(): ()
|
||||
#define COMSIG_SUIT_MADE_HELMET "suit_made_helmet" //from base of obj/item/clothing/suit/MakeHelmet(): (helmet)
|
||||
|
||||
// /obj/item/implant signals
|
||||
#define COMSIG_IMPLANT_ACTIVATED "implant_activated" //from base of /obj/item/implant/proc/activate(): ()
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
#define DYE_REGISTRY_UNDER "under"
|
||||
#define DYE_REGISTRY_JUMPSKIRT "jumpskirt"
|
||||
#define DYE_REGISTRY_GLOVES "gloves"
|
||||
#define DYE_REGISTRY_SNEAKERS "sneakers"
|
||||
#define DYE_REGISTRY_FANNYPACK "fannypack"
|
||||
#define DYE_REGISTRY_BEDSHEET "bedsheet"
|
||||
|
||||
#define DYE_RED "red"
|
||||
#define DYE_ORANGE "orange"
|
||||
#define DYE_YELLOW "yellow"
|
||||
#define DYE_GREEN "green"
|
||||
#define DYE_BLUE "blue"
|
||||
#define DYE_PURPLE "purple"
|
||||
#define DYE_BLACK "black"
|
||||
#define DYE_WHITE "white"
|
||||
#define DYE_RAINBOW "rainbow"
|
||||
#define DYE_MIME "mime"
|
||||
#define DYE_COSMIC "cosmic"
|
||||
#define DYE_QM "qm"
|
||||
#define DYE_LAW "law"
|
||||
#define DYE_CAPTAIN "captain"
|
||||
#define DYE_HOP "hop"
|
||||
#define DYE_HOS "hos"
|
||||
#define DYE_CE "ce"
|
||||
#define DYE_RD "rd"
|
||||
#define DYE_CMO "cmo"
|
||||
#define DYE_REDCOAT "redcoat"
|
||||
#define DYE_CLOWN "clown"
|
||||
@@ -7,6 +7,7 @@
|
||||
#define WAROPS_ALWAYS_ALLOWED (1<<1)
|
||||
#define USE_PREF_WEIGHTS (1<<2)
|
||||
#define FORCE_IF_WON (1<<3)
|
||||
#define USE_PREV_ROUND_WEIGHTS (1<<4)
|
||||
|
||||
#define ONLY_RULESET (1<<0)
|
||||
#define HIGHLANDER_RULESET (1<<1)
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
/// Transparent, let beams pass
|
||||
#define SHIELD_TRANSPARENT (1<<0)
|
||||
/// Can shield bash
|
||||
#define SHIELD_CAN_BASH (1<<1)
|
||||
/// Shield bash knockdown on wall hit
|
||||
#define SHIELD_BASH_WALL_KNOCKDOWN (1<<2)
|
||||
/// Shield bash always knockdown
|
||||
#define SHIELD_BASH_ALWAYS_KNOCKDOWN (1<<3)
|
||||
/// Shield bash disarm on wall hit
|
||||
#define SHIELD_BASH_WALL_DISARM (1<<4)
|
||||
/// Shield bash always disarm
|
||||
#define SHIELD_BASH_ALWAYS_DISARM (1<<5)
|
||||
/// You can shieldbash target someone on the ground for ground slam
|
||||
#define SHIELD_BASH_GROUND_SLAM (1<<6)
|
||||
/// Shield bashing someone on the ground will disarm
|
||||
#define SHIELD_BASH_GROUND_SLAM_DISARM (1<<7)
|
||||
|
||||
#define SHIELD_FLAGS_DEFAULT (SHIELD_CAN_BASH | SHIELD_BASH_WALL_KNOCKDOWN | SHIELD_BASH_WALL_DISARM | SHIELD_BASH_GROUND_SLAM)
|
||||
@@ -18,3 +18,4 @@
|
||||
#define DRINK_VERYGOOD 3
|
||||
#define DRINK_FANTASTIC 4
|
||||
#define FOOD_AMAZING 5
|
||||
#define RACE_DRINK 6
|
||||
@@ -0,0 +1,29 @@
|
||||
#define INSTRUMENT_MIN_OCTAVE 1
|
||||
#define INSTRUMENT_MAX_OCTAVE 9
|
||||
#define INSTRUMENT_MIN_KEY 0
|
||||
#define INSTRUMENT_MAX_KEY 127
|
||||
|
||||
/// Max number of playing notes per instrument.
|
||||
#define CHANNELS_PER_INSTRUMENT 128
|
||||
|
||||
/// Distance multiplier that makes us not be impacted by 3d sound as much. This is a multiplier so lower it is the closer we will pretend to be to people.
|
||||
#define INSTRUMENT_DISTANCE_FALLOFF_BUFF 0.2
|
||||
/// How many tiles instruments have no falloff for
|
||||
#define INSTRUMENT_DISTANCE_NO_FALLOFF 3
|
||||
|
||||
/// Maximum length a note should ever go for
|
||||
#define INSTRUMENT_MAX_TOTAL_SUSTAIN (5 SECONDS)
|
||||
|
||||
/// These are per decisecond.
|
||||
#define INSTRUMENT_EXP_FALLOFF_MIN 1.025 //100/(1.025^50) calculated for [INSTRUMENT_MIN_SUSTAIN_DROPOFF] to be 30.
|
||||
#define INSTRUMENT_EXP_FALLOFF_MAX 10
|
||||
|
||||
/// Minimum volume for when the sound is considered dead.
|
||||
#define INSTRUMENT_MIN_SUSTAIN_DROPOFF 0
|
||||
|
||||
#define SUSTAIN_LINEAR 1
|
||||
#define SUSTAIN_EXPONENTIAL 2
|
||||
|
||||
// /datum/instrument instrument_flags
|
||||
#define INSTRUMENT_LEGACY (1<<0) //Legacy instrument. Implies INSTRUMENT_DO_NOT_AUTOSAMPLE
|
||||
#define INSTRUMENT_DO_NOT_AUTOSAMPLE (1<<1) //Do not automatically sample
|
||||
@@ -1,13 +1,5 @@
|
||||
/*ALL DEFINES RELATED TO INVENTORY OBJECTS, MANAGEMENT, ETC, GO HERE*/
|
||||
|
||||
//ITEM INVENTORY WEIGHT, FOR w_class
|
||||
#define WEIGHT_CLASS_TINY 1 //Usually items smaller then a human hand, ex: Playing Cards, Lighter, Scalpel, Coins/Money
|
||||
#define WEIGHT_CLASS_SMALL 2 //Pockets can hold small and tiny items, ex: Flashlight, Multitool, Grenades, GPS Device
|
||||
#define WEIGHT_CLASS_NORMAL 3 //Standard backpacks can carry tiny, small & normal items, ex: Fire extinguisher, Stunbaton, Gas Mask, Metal Sheets
|
||||
#define WEIGHT_CLASS_BULKY 4 //Items that can be weilded or equipped but not stored in a normal bag, ex: Defibrillator, Backpack, Space Suits
|
||||
#define WEIGHT_CLASS_HUGE 5 //Usually represents objects that require two hands to operate, ex: Shotgun, Two Handed Melee Weapons - Can not fit in Boh
|
||||
#define WEIGHT_CLASS_GIGANTIC 6 //Essentially means it cannot be picked up or placed in an inventory, ex: Mech Parts, Safe - Can not fit in Boh
|
||||
|
||||
//Inventory depth: limits how many nested storage items you can access directly.
|
||||
//1: stuff in mob, 2: stuff in backpack, 3: stuff in box in backpack, etc
|
||||
#define INVENTORY_DEPTH 3
|
||||
@@ -147,6 +139,7 @@
|
||||
#define STYLE_PAW_TAURIC (1<<3)
|
||||
#define STYLE_HOOF_TAURIC (1<<4)
|
||||
#define STYLE_ALL_TAURIC (STYLE_SNEK_TAURIC|STYLE_PAW_TAURIC|STYLE_HOOF_TAURIC)
|
||||
#define STYLE_NO_ANTHRO_ICON (1<<5) //When digis fit the default sprite fine and need no copypasted states. This is the case of skirts and winter coats, for example.
|
||||
|
||||
//digitigrade legs settings.
|
||||
#define NOT_DIGITIGRADE 0
|
||||
@@ -155,7 +148,7 @@
|
||||
|
||||
//flags for covering body parts
|
||||
#define GLASSESCOVERSEYES (1<<0)
|
||||
#define MASKCOVERSEYES (1<<1) // get rid of some of the other retardation in these flags
|
||||
#define MASKCOVERSEYES (1<<1) // get rid of some of the other stupidity in these flags
|
||||
#define HEADCOVERSEYES (1<<2) // feel free to realloc these numbers for other purposes
|
||||
#define MASKCOVERSMOUTH (1<<3) // on other items, these are just for mask/head
|
||||
#define HEADCOVERSMOUTH (1<<4)
|
||||
|
||||
@@ -67,9 +67,15 @@ GLOBAL_LIST_INIT(turfs_without_ground, typecacheof(list(
|
||||
#define iscatperson(A) (ishumanbasic(A) && istype(A.dna.species, /datum/species/human/felinid) )
|
||||
#define isdwarf(A) (is_species(A, /datum/species/dwarf))
|
||||
#define isdullahan(A) (is_species(A, /datum/species/dullahan))
|
||||
#define isangel(A) (is_species(A, /datum/species/angel))
|
||||
#define isvampire(A) (is_species(A, /datum/species/vampire))
|
||||
#define ismush(A) (is_species(A, /datum/species/mush))
|
||||
#define isshadow(A) (is_species(A, /datum/species/shadow))
|
||||
#define isskeleton(A) (is_species(A, /datum/species/skeleton))
|
||||
|
||||
// Citadel specific species
|
||||
#define isipcperson(A) (is_species(A, /datum/species/ipc))
|
||||
#define issynthliz(A) (is_species(A, /datum/species/synthliz))
|
||||
#define ismammal(A) (is_species(A, /datum/species/mammal))
|
||||
#define isavian(A) (is_species(A, /datum/species/avian))
|
||||
#define isaquatic(A) (is_species(A, /datum/species/aquatic))
|
||||
@@ -263,4 +269,4 @@ GLOBAL_LIST_INIT(glass_sheet_types, typecacheof(list(
|
||||
|
||||
#define isblobmonster(O) (istype(O, /mob/living/simple_animal/hostile/blob))
|
||||
|
||||
#define isshuttleturf(T) (length(T.baseturfs) && (/turf/baseturf_skipover/shuttle in T.baseturfs))
|
||||
#define isshuttleturf(T) (length(T.baseturfs) && (/turf/baseturf_skipover/shuttle in T.baseturfs))
|
||||
|
||||
@@ -129,11 +129,20 @@
|
||||
#define HUD_PLANE 21
|
||||
#define HUD_LAYER 21
|
||||
#define HUD_RENDER_TARGET "HUD_PLANE"
|
||||
#define ABOVE_HUD_PLANE 22
|
||||
#define ABOVE_HUD_LAYER 22
|
||||
|
||||
#define VOLUMETRIC_STORAGE_BOX_PLANE 23
|
||||
#define VOLUMETRIC_STORAGE_BOX_LAYER 23
|
||||
#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_RENDER_TARGET "VOLUME_STORAGE_ITEM_PLANE"
|
||||
|
||||
#define ABOVE_HUD_PLANE 25
|
||||
#define ABOVE_HUD_LAYER 25
|
||||
#define ABOVE_HUD_RENDER_TARGET "ABOVE_HUD_PLANE"
|
||||
|
||||
#define SPLASHSCREEN_LAYER 23
|
||||
#define SPLASHSCREEN_PLANE 23
|
||||
#define SPLASHSCREEN_LAYER 30
|
||||
#define SPLASHSCREEN_PLANE 30
|
||||
#define SPLASHSCREEN_RENDER_TARGET "SPLASHSCREEN_PLANE"
|
||||
|
||||
@@ -465,7 +465,7 @@ GLOBAL_LIST_INIT(pda_reskins, list(PDA_SKIN_CLASSIC = 'icons/obj/pda.dmi', PDA_S
|
||||
#define EGG_LAYING_MESSAGES list("lays an egg.","squats down and croons.","begins making a huge racket.","begins clucking raucously.")
|
||||
|
||||
// list of all null rod weapons
|
||||
#define HOLY_WEAPONS /obj/item/nullrod, /obj/item/twohanded/dualsaber/hypereutactic/chaplain, /obj/item/gun/energy/laser/redtag/hitscan/chaplain, /obj/item/multitool/chaplain, /obj/item/melee/baseball_bat/chaplain
|
||||
#define HOLY_WEAPONS /obj/item/nullrod, /obj/item/twohanded/dualsaber/hypereutactic/chaplain, /obj/item/gun/energy/laser/redtag/hitscan/chaplain, /obj/item/multitool/chaplain, /obj/item/clothing/gloves/fingerless/pugilist/chaplain, /obj/item/melee/baseball_bat/chaplain
|
||||
|
||||
// Used by PDA and cartridge code to reduce repetitiveness of spritesheets
|
||||
#define PDAIMG(what) {"<span class="pda16x16 [#what]"></span>"}
|
||||
|
||||
@@ -59,6 +59,7 @@
|
||||
|
||||
#define MOVESPEED_ID_SPECIES "SPECIES_SPEED_MOD"
|
||||
|
||||
#define MOVESPEED_ID_SMALL_STRIDE "SMALL_STRIDE"
|
||||
#define MOVESPEED_ID_PRONE_DRAGGING "PRONE_DRAG"
|
||||
#define MOVESPEED_ID_HUMAN_CARRYING "HUMAN_CARRY"
|
||||
#define MOVESPEED_ID_SHRINK_RAY "SHRUNKEN_SPEED_MODIFIER"
|
||||
@@ -78,4 +79,6 @@
|
||||
#define MOVESPEED_ID_COLD "COLD"
|
||||
#define MOVESPEED_ID_HUNGRY "HUNGRY"
|
||||
#define MOVESPEED_ID_DAMAGE_SLOWDOWN "DAMAGE"
|
||||
#define MOVESPEED_ID_DAMAGE_SLOWDOWN_FLYING "FLYING"
|
||||
#define MOVESPEED_ID_DAMAGE_SLOWDOWN_FLYING "FLYING"
|
||||
|
||||
#define MOVESPEED_ID_CIRRHOSIS "CIRRHOSIS"
|
||||
@@ -45,9 +45,9 @@ Ask ninjanomnom if they're around
|
||||
// WARNING: The deines below could have disastrous consequences if tweaked incorrectly. See: The great SM purge of Oct.6.2017
|
||||
// contamination_chance = (strength-RAD_MINIMUM_CONTAMINATION) * RAD_CONTAMINATION_CHANCE_COEFFICIENT * min(1/(steps*RAD_DISTANCE_COEFFICIENT), 1))
|
||||
// contamination_strength = (strength-RAD_MINIMUM_CONTAMINATION) * RAD_CONTAMINATION_STR_COEFFICIENT
|
||||
#define RAD_MINIMUM_CONTAMINATION 350 // How strong does a radiation wave have to be to contaminate objects
|
||||
#define RAD_MINIMUM_CONTAMINATION 300 // How strong does a radiation wave have to be to contaminate objects
|
||||
#define RAD_CONTAMINATION_CHANCE_COEFFICIENT 0.005 // Higher means higher strength scaling contamination chance
|
||||
#define RAD_CONTAMINATION_STR_COEFFICIENT 0.3 // Higher means higher strength scaling contamination strength
|
||||
#define RAD_CONTAMINATION_STR_COEFFICIENT 0.99 // Higher means higher strength scaling contamination strength
|
||||
#define RAD_DISTANCE_COEFFICIENT 1 // Lower means further rad spread
|
||||
|
||||
#define RAD_HALF_LIFE 90 // The half-life of contaminated objects
|
||||
#define RAD_HALF_LIFE 90 // The half-life of contaminated objects
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
|
||||
#define CHANNEL_HIGHEST_AVAILABLE 1008 //CIT CHANGE - COMPENSATES FOR VORESOUND CHANNELS
|
||||
|
||||
#define MAX_INSTRUMENT_CHANNELS (128 * 6)
|
||||
|
||||
#define SOUND_MINIMUM_PRESSURE 10
|
||||
#define FALLOFF_SOUNDS 1
|
||||
|
||||
@@ -99,7 +99,7 @@
|
||||
#define STATUS_EFFECT_PENIS_ENLARGEMENT /datum/status_effect/chem/penis_enlarger //More applied slowdown, just like the above.
|
||||
|
||||
#define STATUS_EFFECT_NO_COMBAT_MODE /datum/status_effect/no_combat_mode //Wont allow combat mode and will disable it
|
||||
#define STATUS_EFFECT_MESMERIZE /datum/status_effect/no_combat_mode/mesmerize //Just reskinned no_combat_mode
|
||||
#define STATUS_EFFECT_MESMERIZE /datum/status_effect/mesmerize //Just reskinned no_combat_mode
|
||||
|
||||
#define STATUS_EFFECT_ELECTROSTAFF /datum/status_effect/electrostaff //slows down victim
|
||||
|
||||
|
||||
@@ -0,0 +1,47 @@
|
||||
// storage_flags variable on /datum/component/storage
|
||||
|
||||
// Storage limits. These can be combined (and usually are combined).
|
||||
/// Check max_items and contents.len when trying to insert
|
||||
#define STORAGE_LIMIT_MAX_ITEMS (1<<0)
|
||||
/// Check max_combined_w_class.
|
||||
#define STORAGE_LIMIT_COMBINED_W_CLASS (1<<1)
|
||||
/// Use the new volume system. Will automatically force rendering to use the new volume/baystation scaling UI so this is kind of incompatible with stuff like stack storage etc etc.
|
||||
#define STORAGE_LIMIT_VOLUME (1<<2)
|
||||
/// Use max_w_class
|
||||
#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)
|
||||
|
||||
//ITEM INVENTORY WEIGHT, FOR w_class
|
||||
/// Usually items smaller then a human hand, ex: Playing Cards, Lighter, Scalpel, Coins/Money
|
||||
#define WEIGHT_CLASS_TINY 1
|
||||
/// Pockets can hold small and tiny items, ex: Flashlight, Multitool, Grenades, GPS Device
|
||||
#define WEIGHT_CLASS_SMALL 2
|
||||
/// Standard backpacks can carry tiny, small & normal items, ex: Fire extinguisher, Stunbaton, Gas Mask, Metal Sheets
|
||||
#define WEIGHT_CLASS_NORMAL 3
|
||||
/// Items that can be weilded or equipped but not stored in a normal bag, ex: Defibrillator, Backpack, Space Suits
|
||||
#define WEIGHT_CLASS_BULKY 4
|
||||
/// Usually represents objects that require two hands to operate, ex: Shotgun, Two Handed Melee Weapons - Can not fit in Boh
|
||||
#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
|
||||
@@ -50,19 +50,22 @@
|
||||
#define INIT_ORDER_PROFILER 100
|
||||
#define INIT_ORDER_FAIL2TOPIC 99
|
||||
#define INIT_ORDER_TITLE 98
|
||||
#define INIT_ORDER_GARBAGE 97
|
||||
#define INIT_ORDER_DBCORE 95
|
||||
#define INIT_ORDER_BLACKBOX 94
|
||||
#define INIT_ORDER_SERVER_MAINT 93
|
||||
#define INIT_ORDER_INPUT 85
|
||||
#define INIT_ORDER_GARBAGE 95
|
||||
#define INIT_ORDER_DBCORE 93
|
||||
#define INIT_ORDER_BLACKBOX 92
|
||||
#define INIT_ORDER_SERVER_MAINT 91
|
||||
#define INIT_ORDER_INPUT 90
|
||||
#define INIT_ORDER_SOUNDS 85
|
||||
#define INIT_ORDER_VIS 80
|
||||
#define INIT_ORDER_RESEARCH 75
|
||||
#define INIT_ORDER_EVENTS 70
|
||||
#define INIT_ORDER_JOBS 65
|
||||
#define INIT_ORDER_QUIRKS 60
|
||||
#define INIT_ORDER_TICKER 55
|
||||
#define INIT_ORDER_INSTRUMENTS 53
|
||||
#define INIT_ORDER_MAPPING 50
|
||||
#define INIT_ORDER_NETWORKS 45
|
||||
#define INIT_ORDER_HOLODECK 35
|
||||
#define INIT_ORDER_ATOMS 30
|
||||
#define INIT_ORDER_LANGUAGE 25
|
||||
#define INIT_ORDER_MACHINES 20
|
||||
@@ -88,18 +91,19 @@
|
||||
// Subsystem fire priority, from lowest to highest priority
|
||||
// If the subsystem isn't listed here it's either DEFAULT or PROCESS (if it's a processing subsystem child)
|
||||
|
||||
#define FIRE_PRIORITY_VORE 5
|
||||
#define FIRE_PRIORITY_PING 10
|
||||
#define FIRE_PRIORITY_IDLE_NPC 10
|
||||
#define FIRE_PRIORITY_SERVER_MAINT 10
|
||||
#define FIRE_PRIORITY_RESEARCH 10
|
||||
#define FIRE_PRIORITY_VIS 10
|
||||
#define FIRE_PRIORITY_VORE 10
|
||||
#define FIRE_PRIORITY_GARBAGE 15
|
||||
#define FIRE_PRIORITY_WET_FLOORS 20
|
||||
#define FIRE_PRIORITY_AIR 20
|
||||
#define FIRE_PRIORITY_PROCESS 25
|
||||
#define FIRE_PRIORITY_THROWING 25
|
||||
#define FIRE_PRIORITY_SPACEDRIFT 30
|
||||
#define FIRE_PRIORITY_INSTRUMENTS 30
|
||||
#define FIRE_PRIORITY_FIELDS 30
|
||||
#define FIRE_PRIOTITY_SMOOTHING 35
|
||||
#define FIRE_PRIORITY_NETWORKS 40
|
||||
|
||||
@@ -147,6 +147,9 @@
|
||||
#define TRAIT_NOPULSE "nopulse" // Your heart doesn't beat.
|
||||
#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
|
||||
#define TRAIT_KI_VAMPIRE "ki-vampire" //when someone with this trait rolls maximum damage on a punch and stuns the target, they regain some stamina and do clone damage
|
||||
#define TRAIT_PASSTABLE "passtable"
|
||||
|
||||
// mobility flag traits
|
||||
// IN THE FUTURE, IT WOULD BE NICE TO DO SOMETHING SIMILAR TO https://github.com/tgstation/tgstation/pull/48923/files (ofcourse not nearly the same because I have my.. thoughts on it)
|
||||
@@ -173,6 +176,9 @@
|
||||
|
||||
//non-mob traits
|
||||
#define TRAIT_PARALYSIS "paralysis" //Used for limb-based paralysis, where replacing the limb will fix it
|
||||
#define VEHICLE_TRAIT "vehicle" // inherited from riding vehicles
|
||||
#define INNATE_TRAIT "innate"
|
||||
|
||||
|
||||
// item traits
|
||||
#define TRAIT_NODROP "nodrop"
|
||||
@@ -236,8 +242,8 @@
|
||||
#define GHOSTROLE_TRAIT "ghostrole"
|
||||
#define APHRO_TRAIT "aphro"
|
||||
#define BLOODSUCKER_TRAIT "bloodsucker"
|
||||
#define CLOTHING_TRAIT "clothing" //used for quirky carrygloves
|
||||
#define SHOES_TRAIT "shoes" //inherited from your sweet kicks
|
||||
#define GLOVE_TRAIT "glove" //inherited by your cool gloves
|
||||
|
||||
// unique trait sources, still defines
|
||||
#define STATUE_MUTE "statue"
|
||||
@@ -271,6 +277,7 @@
|
||||
#define LOCKED_HELMET_TRAIT "locked-helmet"
|
||||
#define NINJA_SUIT_TRAIT "ninja-suit"
|
||||
#define ANTI_DROP_IMPLANT_TRAIT "anti-drop-implant"
|
||||
#define MARTIAL_ARTIST_TRAIT "martial_artist"
|
||||
#define SLEEPING_CARP_TRAIT "sleeping_carp"
|
||||
#define RISING_BASS_TRAIT "rising_bass"
|
||||
#define ABDUCTOR_ANTAGONIST "abductor-antagonist"
|
||||
|
||||
@@ -7,6 +7,19 @@
|
||||
#define DM_ABSORB "Absorb"
|
||||
#define DM_UNABSORB "Un-absorb"
|
||||
|
||||
#define DIGESTABLE (1<<0)
|
||||
#define SHOW_VORE_PREFS (1<<1)
|
||||
#define DEVOURABLE (1<<2)
|
||||
#define FEEDING (1<<3)
|
||||
#define NO_VORE (1<<4)
|
||||
#define OPEN_PANEL (1<<5)
|
||||
#define ABSORBED (1<<6)
|
||||
#define VORE_INIT (1<<7)
|
||||
#define VOREPREF_INIT (1<<8)
|
||||
#define LICKABLE (1<<9)
|
||||
|
||||
#define MAX_VORE_FLAG (1<<10)-1 // change this whenever you add a vore flag, must be largest vore flag*2-1
|
||||
|
||||
#define isbelly(A) istype(A, /obj/belly)
|
||||
|
||||
#define QDEL_NULL_LIST(x) if(x) { for(var/y in x) { qdel(y) } ; x = null }
|
||||
|
||||
@@ -19,3 +19,105 @@
|
||||
#define VV_RESTORE_DEFAULT "Restore to Default"
|
||||
#define VV_MARKED_DATUM "Marked Datum"
|
||||
#define VV_BITFIELD "Bitfield"
|
||||
#define VV_TEXT_LOCATE "Custom Reference Locate"
|
||||
#define VV_PROCCALL_RETVAL "Return Value of Proccall"
|
||||
|
||||
#define VV_MSG_MARKED "<br><font size='1' color='red'><b>Marked Object</b></font>"
|
||||
#define VV_MSG_EDITED "<br><font size='1' color='red'><b>Var Edited</b></font>"
|
||||
#define VV_MSG_DELETED "<br><font size='1' color='red'><b>Deleted</b></font>"
|
||||
|
||||
#define VV_NORMAL_LIST_NO_EXPAND_THRESHOLD 50
|
||||
#define VV_SPECIAL_LIST_NO_EXPAND_THRESHOLD 150
|
||||
|
||||
//#define IS_VALID_ASSOC_KEY(V) (istext(V) || ispath(V) || isdatum(V) || islist(V))
|
||||
#define IS_VALID_ASSOC_KEY(V) (!isnum(V)) //hhmmm..
|
||||
|
||||
//General helpers
|
||||
#define VV_HREF_TARGET_INTERNAL(target, href_key) "?_src_=vars;[HrefToken()];[href_key]=TRUE;[VV_HK_TARGET]=[REF(target)]"
|
||||
#define VV_HREF_TARGETREF_INTERNAL(targetref, href_key) "?_src_=vars;[HrefToken()];[href_key]=TRUE;[VV_HK_TARGET]=[targetref]"
|
||||
#define VV_HREF_TARGET(target, href_key, text) "<a href='[VV_HREF_TARGET_INTERNAL(target, href_key)]'>[text]</a>"
|
||||
#define VV_HREF_TARGETREF(targetref, href_key, text) "<a href='[VV_HREF_TARGETREF_INTERNAL(targetref, href_key)]'>[text]</a>"
|
||||
#define VV_HREF_TARGET_1V(target, href_key, text, varname) "<a href='[VV_HREF_TARGET_INTERNAL(target, href_key)];[VV_HK_VARNAME]=[varname]'>[text]</a>" //for stuff like basic varedits, one variable
|
||||
#define VV_HREF_TARGETREF_1V(targetref, href_key, text, varname) "<a href='[VV_HREF_TARGETREF_INTERNAL(targetref, href_key)];[VV_HK_VARNAME]=[varname]'>[text]</a>"
|
||||
|
||||
#define GET_VV_TARGET locate(href_list[VV_HK_TARGET])
|
||||
#define GET_VV_VAR_TARGET href_list[VV_HK_VARNAME]
|
||||
|
||||
//Helper for getting something to vv_do_topic in general
|
||||
#define VV_TOPIC_LINK(datum, href_key, text) "<a href='?_src_=vars;[HrefToken()];[href_key]=TRUE;target=[REF(datum)]'>text</a>"
|
||||
|
||||
//Helpers for vv_get_dropdown()
|
||||
#define VV_DROPDOWN_OPTION(href_key, name) . += "<option value='?_src_=vars;[HrefToken()];[href_key]=TRUE;target=[REF(src)]'>[name]</option>"
|
||||
|
||||
// VV HREF KEYS
|
||||
#define VV_HK_TARGET "target"
|
||||
#define VV_HK_VARNAME "targetvar" //name or index of var for 1 variable targetting hrefs.
|
||||
|
||||
// vv_do_list() keys
|
||||
#define VV_HK_LIST_ADD "listadd"
|
||||
#define VV_HK_LIST_EDIT "listedit"
|
||||
#define VV_HK_LIST_CHANGE "listchange"
|
||||
#define VV_HK_LIST_REMOVE "listremove"
|
||||
#define VV_HK_LIST_ERASE_NULLS "listnulls"
|
||||
#define VV_HK_LIST_ERASE_DUPES "listdupes"
|
||||
#define VV_HK_LIST_SHUFFLE "listshuffle"
|
||||
#define VV_HK_LIST_SET_LENGTH "listlen"
|
||||
|
||||
// vv_do_basic() keys
|
||||
#define VV_HK_BASIC_EDIT "datumedit"
|
||||
#define VV_HK_BASIC_CHANGE "datumchange"
|
||||
#define VV_HK_BASIC_MASSEDIT "massedit"
|
||||
|
||||
// /datum
|
||||
#define VV_HK_DELETE "delete"
|
||||
#define VV_HK_EXPOSE "expose"
|
||||
#define VV_HK_CALLPROC "proc_call"
|
||||
#define VV_HK_MARK "mark"
|
||||
#define VV_HK_MODIFY_TRAITS "modtraits"
|
||||
|
||||
// /atom
|
||||
#define VV_HK_MODIFY_TRANSFORM "atom_transform"
|
||||
#define VV_HK_ADD_REAGENT "addreagent"
|
||||
#define VV_HK_TRIGGER_EMP "empulse"
|
||||
#define VV_HK_TRIGGER_EXPLOSION "explode"
|
||||
#define VV_HK_AUTO_RENAME "auto_rename"
|
||||
|
||||
// /obj
|
||||
#define VV_HK_OSAY "osay"
|
||||
#define VV_HK_MASS_DEL_TYPE "mass_delete_type"
|
||||
#define VV_HK_ARMOR_MOD "mod_obj_armor"
|
||||
|
||||
// /mob
|
||||
#define VV_HK_GIB "gib"
|
||||
#define VV_HK_GIVE_SPELL "give_spell"
|
||||
#define VV_HK_REMOVE_SPELL "remove_spell"
|
||||
#define VV_HK_GIVE_DISEASE "give_disease"
|
||||
#define VV_HK_GODMODE "godmode"
|
||||
#define VV_HK_DROP_ALL "dropall"
|
||||
#define VV_HK_REGEN_ICONS "regen_icons"
|
||||
#define VV_HK_PLAYER_PANEL "player_panel"
|
||||
#define VV_HK_BUILDMODE "buildmode"
|
||||
#define VV_HK_DIRECT_CONTROL "direct_control"
|
||||
#define VV_HK_OFFER_GHOSTS "offer_ghosts"
|
||||
|
||||
// /mob/living/carbon
|
||||
#define VV_HK_MAKE_AI "aiify"
|
||||
#define VV_HK_MODIFY_BODYPART "mod_bodypart"
|
||||
#define VV_HK_MODIFY_ORGANS "organs_modify"
|
||||
#define VV_HK_HALLUCINATION "force_hallucinate"
|
||||
#define VV_HK_MARTIAL_ART "give_martial_art"
|
||||
#define VV_HK_GIVE_TRAUMA "give_trauma"
|
||||
#define VV_HK_CURE_TRAUMA "cure_trauma"
|
||||
|
||||
// /mob/living/carbon/human
|
||||
#define VV_HK_COPY_OUTFIT "copy_outfit"
|
||||
#define VV_HK_MOD_QUIRKS "quirkmod"
|
||||
#define VV_HK_MAKE_MONKEY "human_monkify"
|
||||
#define VV_HK_MAKE_CYBORG "human_cyborgify"
|
||||
#define VV_HK_MAKE_SLIME "human_slimeify"
|
||||
#define VV_HK_MAKE_ALIEN "human_alienify"
|
||||
#define VV_HK_SET_SPECIES "setspecies"
|
||||
#define VV_HK_PURRBATION "purrbation"
|
||||
|
||||
// misc
|
||||
#define VV_HK_SPACEVINE_PURGE "spacevine_purge"
|
||||
|
||||
@@ -112,7 +112,7 @@ GLOBAL_VAR_INIT(miscreants_allowed, FALSE)
|
||||
set desc = "Toggles seeing LocalOutOfCharacter chat"
|
||||
prefs.chat_toggles ^= CHAT_LOOC
|
||||
prefs.save_preferences()
|
||||
src << "You will [(prefs.chat_toggles & CHAT_LOOC) ? "now" : "no longer"] see messages on the LOOC channel."
|
||||
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()
|
||||
|
||||
@@ -550,6 +550,27 @@
|
||||
for(var/thing in flat_list)
|
||||
.[thing] = TRUE
|
||||
|
||||
/proc/deep_list2params(list/deep_list)
|
||||
var/list/L = list()
|
||||
for(var/i in deep_list)
|
||||
var/key = i
|
||||
if(isnum(key))
|
||||
L += "[key]"
|
||||
continue
|
||||
if(islist(key))
|
||||
key = deep_list2params(key)
|
||||
else if(!istext(key))
|
||||
key = "[REF(key)]"
|
||||
L += "[key]"
|
||||
var/value = deep_list[key]
|
||||
if(!isnull(value))
|
||||
if(islist(value))
|
||||
value = deep_list2params(value)
|
||||
else if(!(istext(key) || isnum(key)))
|
||||
value = "[REF(value)]"
|
||||
L["[key]"] = "[value]"
|
||||
return list2params(L)
|
||||
|
||||
//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)
|
||||
|
||||
|
||||
@@ -116,4 +116,7 @@ GLOBAL_VAR_INIT(cmp_field, "name")
|
||||
if(a_sign != b_sign)
|
||||
return a_sign - b_sign
|
||||
else
|
||||
return sorttext(b_name, a_name)
|
||||
return sorttext(b_name, a_name)
|
||||
|
||||
/proc/cmp_item_block_priority_asc(obj/item/A, obj/item/B)
|
||||
return A.block_priority - B.block_priority
|
||||
|
||||
@@ -183,7 +183,7 @@
|
||||
return
|
||||
|
||||
|
||||
// Better recursive loop, technically sort of not actually recursive cause that shit is retarded, enjoy.
|
||||
// Better recursive loop, technically sort of not actually recursive cause that shit is stupid, enjoy.
|
||||
//No need for a recursive limit either
|
||||
/proc/recursive_mob_check(atom/O,client_check=1,sight_check=1,include_radio=1)
|
||||
|
||||
@@ -425,8 +425,7 @@
|
||||
candidates -= M
|
||||
|
||||
/proc/pollGhostCandidates(Question, jobbanType, datum/game_mode/gametypeCheck, be_special_flag = 0, poll_time = 300, ignore_category = null, flashwindow = TRUE)
|
||||
var/datum/element/ghost_role_eligibility/eligibility = SSdcs.GetElement(list(/datum/element/ghost_role_eligibility))
|
||||
var/list/candidates = eligibility.get_all_ghost_role_eligible()
|
||||
var/list/candidates = get_all_ghost_role_eligible()
|
||||
return pollCandidates(Question, jobbanType, gametypeCheck, be_special_flag, poll_time, ignore_category, flashwindow, candidates)
|
||||
|
||||
/proc/pollCandidates(Question, jobbanType, datum/game_mode/gametypeCheck, be_special_flag = 0, poll_time = 300, ignore_category = null, flashwindow = TRUE, list/group = null)
|
||||
@@ -581,4 +580,4 @@
|
||||
var/area/A = C.area
|
||||
if(GLOB.typecache_powerfailure_safe_areas[A.type])
|
||||
continue
|
||||
C.energy_fail(rand(duration_min,duration_max))
|
||||
C.energy_fail(rand(duration_min,duration_max))
|
||||
|
||||
+36
-15
@@ -184,6 +184,7 @@
|
||||
"cock_length" = COCK_SIZE_DEF,
|
||||
"cock_diameter_ratio" = COCK_DIAMETER_RATIO_DEF,
|
||||
"cock_color" = pick("FFFFFF","7F7F7F", "7FFF7F", "7F7FFF", "FF7F7F", "7FFFFF", "FF7FFF", "FFFF7F"),
|
||||
"cock_taur" = FALSE,
|
||||
"has_balls" = FALSE,
|
||||
"balls_color" = pick("FFFFFF","7F7F7F", "7FFF7F", "7F7FFF", "FF7F7F", "7FFFFF", "FF7FFF", "FFFF7F"),
|
||||
"balls_size" = BALLS_SIZE_DEF,
|
||||
@@ -208,7 +209,8 @@
|
||||
"ipc_antenna" = "None",
|
||||
"flavor_text" = "",
|
||||
"meat_type" = "Mammalian",
|
||||
"body_model" = MALE
|
||||
"body_model" = MALE,
|
||||
"body_size" = RESIZE_DEFAULT_SIZE
|
||||
))
|
||||
|
||||
/proc/random_hair_style(gender)
|
||||
@@ -260,24 +262,30 @@
|
||||
if(!findname(.))
|
||||
break
|
||||
|
||||
/proc/random_skin_tone()
|
||||
return pick(GLOB.skin_tones)
|
||||
#define SKINTONE2HEX(skin_tone) GLOB.skin_tones[skin_tone] || skin_tone
|
||||
|
||||
/proc/random_skin_tone()
|
||||
return pick(GLOB.skin_tones - GLOB.nonstandard_skin_tones)
|
||||
|
||||
//ordered by amount of tan. Keep the nonstandard skin tones last.
|
||||
GLOBAL_LIST_INIT(skin_tones, list(
|
||||
"albino",
|
||||
"caucasian1",
|
||||
"caucasian2",
|
||||
"caucasian3",
|
||||
"latino",
|
||||
"mediterranean",
|
||||
"asian1",
|
||||
"asian2",
|
||||
"arab",
|
||||
"indian",
|
||||
"african1",
|
||||
"african2"
|
||||
"albino" = "#fff4e6",
|
||||
"caucasian1" = "#ffe0d1",
|
||||
"caucasian2" = "#fcccb3",
|
||||
"caucasian3" = "#e8b59b",
|
||||
"latino" = "#d9ae96",
|
||||
"mediterranean" = "#c79b8b",
|
||||
"asian1" = "#ffdeb3",
|
||||
"asian2" = "#e3ba84",
|
||||
"arab" = "#c4915e",
|
||||
"indian" = "#b87840",
|
||||
"african1" = "#754523",
|
||||
"african2" = "#471c18",
|
||||
"orange" = "#ffc905" //Spray tan overdose.
|
||||
))
|
||||
|
||||
GLOBAL_LIST_INIT(nonstandard_skin_tones, list("orange"))
|
||||
|
||||
GLOBAL_LIST_EMPTY(species_list)
|
||||
|
||||
/proc/age2agedescription(age)
|
||||
@@ -579,3 +587,16 @@ GLOBAL_LIST_EMPTY(species_list)
|
||||
chosen = pick(mob_spawn_meancritters)
|
||||
var/mob/living/simple_animal/C = new chosen(spawn_location)
|
||||
return C
|
||||
|
||||
/proc/passtable_on(target, source)
|
||||
var/mob/living/L = target
|
||||
if(!HAS_TRAIT(L, TRAIT_PASSTABLE) && L.pass_flags & PASSTABLE)
|
||||
ADD_TRAIT(L, TRAIT_PASSTABLE, INNATE_TRAIT)
|
||||
ADD_TRAIT(L, TRAIT_PASSTABLE, source)
|
||||
L.pass_flags |= PASSTABLE
|
||||
|
||||
/proc/passtable_off(target, source)
|
||||
var/mob/living/L = target
|
||||
REMOVE_TRAIT(L, TRAIT_PASSTABLE, source)
|
||||
if(!HAS_TRAIT(L, TRAIT_PASSTABLE))
|
||||
L.pass_flags &= ~PASSTABLE
|
||||
|
||||
@@ -25,8 +25,22 @@
|
||||
/proc/radiation_pulse(atom/source, intensity, range_modifier, log=FALSE, can_contaminate=TRUE)
|
||||
if(!SSradiation.can_fire)
|
||||
return
|
||||
for(var/dir in GLOB.cardinals)
|
||||
new /datum/radiation_wave(source, dir, intensity, range_modifier, can_contaminate)
|
||||
var/area/A = get_area(source)
|
||||
var/atom/nested_loc = source.loc
|
||||
var/spawn_waves = TRUE
|
||||
while(nested_loc != A)
|
||||
if(nested_loc.rad_flags & RAD_PROTECT_CONTENTS)
|
||||
spawn_waves = FALSE
|
||||
break
|
||||
nested_loc = nested_loc.loc
|
||||
if(spawn_waves)
|
||||
for(var/dir in GLOB.cardinals)
|
||||
new /datum/radiation_wave(source, dir, intensity, range_modifier, can_contaminate)
|
||||
|
||||
var/static/last_huge_pulse = 0
|
||||
if(intensity > 3000 && world.time > last_huge_pulse + 200)
|
||||
last_huge_pulse = world.time
|
||||
log = TRUE
|
||||
|
||||
var/list/things = get_rad_contents(source) //copypasta because I don't want to put special code in waves to handle their origin
|
||||
for(var/k in 1 to things.len)
|
||||
@@ -35,11 +49,7 @@
|
||||
continue
|
||||
thing.rad_act(intensity)
|
||||
|
||||
var/static/last_huge_pulse = 0
|
||||
if(intensity > 3000 && world.time > last_huge_pulse + 200)
|
||||
last_huge_pulse = world.time
|
||||
log = TRUE
|
||||
if(log)
|
||||
var/turf/_source_T = isturf(source) ? source : get_turf(source)
|
||||
log_game("Radiation pulse with intensity: [intensity] and range modifier: [range_modifier] in [loc_name(_source_T)] ")
|
||||
var/turf/_source_T = get_turf(source)
|
||||
log_game("Radiation pulse with intensity: [intensity] and range modifier: [range_modifier] in [loc_name(_source_T)][spawn_waves ? "" : " (contained by [nested_loc.name])"]")
|
||||
return TRUE
|
||||
|
||||
@@ -320,8 +320,10 @@
|
||||
parts += "[FOURSPACES]<i>Nobody died this shift!</i>"
|
||||
if(istype(SSticker.mode, /datum/game_mode/dynamic))
|
||||
var/datum/game_mode/dynamic/mode = SSticker.mode
|
||||
mode.update_playercounts()
|
||||
parts += "[FOURSPACES]Final threat level: [mode.threat_level]"
|
||||
parts += "[FOURSPACES]Final threat: [mode.threat]"
|
||||
parts += "[FOURSPACES]Average threat: [mode.threat_average]"
|
||||
parts += "[FOURSPACES]Executed rules:"
|
||||
for(var/datum/dynamic_ruleset/rule in mode.executed_rules)
|
||||
parts += "[FOURSPACES][FOURSPACES][rule.ruletype] - <b>[rule.name]</b>: -[rule.cost + rule.scaled_times * rule.scaling_cost] threat"
|
||||
@@ -511,7 +513,7 @@
|
||||
if(owner && GLOB.common_report && SSticker.current_state == GAME_STATE_FINISHED)
|
||||
SSticker.show_roundend_report(owner.client, FALSE)
|
||||
|
||||
/datum/action/report/IsAvailable()
|
||||
/datum/action/report/IsAvailable(silent = FALSE)
|
||||
return 1
|
||||
|
||||
/datum/action/report/Topic(href,href_list)
|
||||
|
||||
@@ -25,7 +25,8 @@ GLOBAL_VAR_INIT(midnight_rollovers, 0)
|
||||
GLOBAL_VAR_INIT(rollovercheck_last_timeofday, 0)
|
||||
/proc/update_midnight_rollover()
|
||||
if (world.timeofday < GLOB.rollovercheck_last_timeofday) //TIME IS GOING BACKWARDS!
|
||||
return GLOB.midnight_rollovers++
|
||||
GLOB.midnight_rollovers++
|
||||
GLOB.rollovercheck_last_timeofday = world.timeofday
|
||||
return GLOB.midnight_rollovers
|
||||
|
||||
/proc/weekdayofthemonth()
|
||||
|
||||
@@ -0,0 +1,60 @@
|
||||
|
||||
/proc/make_types_fancy(var/list/types)
|
||||
if (ispath(types))
|
||||
types = list(types)
|
||||
. = list()
|
||||
for(var/type in types)
|
||||
var/typename = "[type]"
|
||||
var/static/list/TYPES_SHORTCUTS = list(
|
||||
/obj/effect/decal/cleanable = "CLEANABLE",
|
||||
/obj/item/radio/headset = "HEADSET",
|
||||
/obj/item/clothing/head/helmet/space = "SPESSHELMET",
|
||||
/obj/item/book/manual = "MANUAL",
|
||||
/obj/item/reagent_containers/food/drinks = "DRINK", //longest paths comes first
|
||||
/obj/item/reagent_containers/food = "FOOD",
|
||||
/obj/item/reagent_containers = "REAGENT_CONTAINERS",
|
||||
/obj/machinery/atmospherics = "ATMOS_MECH",
|
||||
/obj/machinery/portable_atmospherics = "PORT_ATMOS",
|
||||
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack = "MECHA_MISSILE_RACK",
|
||||
/obj/item/mecha_parts/mecha_equipment = "MECHA_EQUIP",
|
||||
/obj/item/organ = "ORGAN",
|
||||
/obj/item = "ITEM",
|
||||
/obj/machinery = "MACHINERY",
|
||||
/obj/effect = "EFFECT",
|
||||
/obj = "O",
|
||||
/datum = "D",
|
||||
/turf/open = "OPEN",
|
||||
/turf/closed = "CLOSED",
|
||||
/turf = "T",
|
||||
/mob/living/carbon = "CARBON",
|
||||
/mob/living/simple_animal = "SIMPLE",
|
||||
/mob/living = "LIVING",
|
||||
/mob = "M"
|
||||
)
|
||||
for (var/tn in TYPES_SHORTCUTS)
|
||||
if (copytext(typename,1, length("[tn]/")+1)=="[tn]/" /*findtextEx(typename,"[tn]/",1,2)*/ )
|
||||
typename = TYPES_SHORTCUTS[tn]+copytext(typename,length("[tn]/"))
|
||||
break
|
||||
.[typename] = type
|
||||
|
||||
/proc/get_fancy_list_of_atom_types()
|
||||
var/static/list/pre_generated_list
|
||||
if (!pre_generated_list) //init
|
||||
pre_generated_list = make_types_fancy(typesof(/atom))
|
||||
return pre_generated_list
|
||||
|
||||
|
||||
/proc/get_fancy_list_of_datum_types()
|
||||
var/static/list/pre_generated_list
|
||||
if (!pre_generated_list) //init
|
||||
pre_generated_list = make_types_fancy(sortList(typesof(/datum) - typesof(/atom)))
|
||||
return pre_generated_list
|
||||
|
||||
|
||||
/proc/filter_fancy_list(list/L, filter as text)
|
||||
var/list/matches = new
|
||||
for(var/key in L)
|
||||
var/value = L[key]
|
||||
if(findtext("[key]", filter) || findtext("[value]", filter))
|
||||
matches[key] = value
|
||||
return matches
|
||||
@@ -8,10 +8,8 @@
|
||||
/proc/invertHTML(HTMLstring)
|
||||
if(!istext(HTMLstring))
|
||||
CRASH("Given non-text argument!")
|
||||
return
|
||||
else if(length(HTMLstring) != 7)
|
||||
CRASH("Given non-HTML argument!")
|
||||
return
|
||||
else if(length_char(HTMLstring) != 7)
|
||||
CRASH("Given non-hex symbols in argument!")
|
||||
var/textr = copytext(HTMLstring, 2, 4)
|
||||
@@ -1565,3 +1563,16 @@ GLOBAL_DATUM_INIT(dview_mob, /mob/dview, new)
|
||||
|
||||
if(channels_to_use.len)
|
||||
world.TgsChatBroadcast()
|
||||
|
||||
//Checks to see if either the victim has a garlic necklace or garlic in their blood
|
||||
/proc/blood_sucking_checks(var/mob/living/carbon/target, check_neck, check_blood)
|
||||
//Bypass this if the target isnt carbon.
|
||||
if(!iscarbon(target))
|
||||
return TRUE
|
||||
if(check_neck)
|
||||
if(istype(target.get_item_by_slot(SLOT_NECK), /obj/item/clothing/neck/garlic_necklace))
|
||||
return FALSE
|
||||
if(check_blood)
|
||||
if(target.reagents.has_reagent(/datum/reagent/consumable/garlic))
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
@@ -249,5 +249,21 @@ GLOBAL_LIST_INIT(bitfields, list(
|
||||
"COMBAT_FLAG_SOFT_STAMCRIT" = COMBAT_FLAG_SOFT_STAMCRIT,
|
||||
"COMBAT_FLAG_INTENTIONALLY_RESTING" = COMBAT_FLAG_INTENTIONALLY_RESTING,
|
||||
"COMBAT_FLAG_RESISTING_REST" = COMBAT_FLAG_RESISTING_REST
|
||||
),
|
||||
"shield_flags" = list(
|
||||
"SHIELD_TRANSPARENT" = SHIELD_TRANSPARENT,
|
||||
"SHIELD_CAN_BASH" = SHIELD_CAN_BASH,
|
||||
"SHIELD_BASH_WALL_KNOCKDOWN" = SHIELD_BASH_WALL_KNOCKDOWN,
|
||||
"SHIELD_BASH_ALWAYS_KNOCKDOWN" = SHIELD_BASH_ALWAYS_KNOCKDOWN,
|
||||
"SHIELD_BASH_WALL_DISARM" = SHIELD_BASH_WALL_DISARM,
|
||||
"SHIELD_BASH_ALWAYS_DISARM" = SHIELD_BASH_ALWAYS_DISARM,
|
||||
"SHIELD_BASH_GROUND_SLAM" = SHIELD_BASH_GROUND_SLAM,
|
||||
"SHIELD_BASH_GROUND_SLAM_DISARM" = SHIELD_BASH_GROUND_SLAM_DISARM
|
||||
),
|
||||
"storage_flags" = list(
|
||||
"STORAGE_LIMIT_MAX_ITEMS" = STORAGE_LIMIT_MAX_ITEMS,
|
||||
"STORAGE_LIMIT_MAX_W_CLASS" = STORAGE_LIMIT_MAX_W_CLASS,
|
||||
"STORAGE_LIMIT_COMBINED_W_CLASS" = STORAGE_LIMIT_COMBINED_W_CLASS,
|
||||
"STORAGE_LIMIT_VOLUME" = STORAGE_LIMIT_VOLUME
|
||||
)
|
||||
))
|
||||
|
||||
@@ -34,7 +34,7 @@ GLOBAL_LIST_INIT(maintenance_loot, list(
|
||||
/obj/item/clothing/head/that = 1,
|
||||
/obj/item/clothing/head/ushanka = 1,
|
||||
/obj/item/clothing/head/welding = 1,
|
||||
/obj/item/clothing/mask/gas = 15,
|
||||
/obj/effect/spawner/lootdrop/breathing_masks = 15,
|
||||
/obj/item/clothing/suit/hazardvest = 1,
|
||||
/obj/item/clothing/under/misc/vice_officer = 1,
|
||||
/obj/item/clothing/suit/hooded/flashsuit = 2,
|
||||
@@ -86,9 +86,8 @@ GLOBAL_LIST_INIT(maintenance_loot, list(
|
||||
/obj/item/screwdriver = 3,
|
||||
/obj/item/tank/internals/emergency_oxygen = 2,
|
||||
/obj/item/vending_refill/cola = 1,
|
||||
/obj/item/weldingtool = 3,
|
||||
/obj/item/wirecutters = 1,
|
||||
/obj/item/wrench = 4,
|
||||
/obj/effect/spawner/lootdrop/welder_tools = 3,
|
||||
/obj/effect/spawner/lootdrop/low_tools = 5,
|
||||
/obj/item/relic = 3,
|
||||
/obj/item/weaponcrafting/receiver = 2,
|
||||
/obj/item/clothing/head/cone = 2,
|
||||
|
||||
@@ -14,7 +14,7 @@ GLOBAL_VAR_INIT(fileaccess_timer, 0)
|
||||
|
||||
GLOBAL_DATUM_INIT(data_core, /datum/datacore, new)
|
||||
|
||||
GLOBAL_VAR_INIT(CELLRATE, 0.002) // conversion ratio between a watt-tick and kilojoule
|
||||
GLOBAL_VAR_INIT(CELLRATE, 0.002) // conversion ratio between a watt-tick and kilojoule, dimensionless, kilojoules/watt-tick
|
||||
GLOBAL_VAR_INIT(CHARGELEVEL, 0.001) // Cap for how fast cells charge, as a percentage-per-tick (.001 means cellcharge is capped to 1% per second)
|
||||
|
||||
GLOBAL_LIST_EMPTY(powernets)
|
||||
|
||||
@@ -49,6 +49,7 @@
|
||||
message_admins("[ADMIN_LOOKUPFLW(src)] might be running a modified client! (failed can_see on AI click of [A] (Turf Loc: [ADMIN_VERBOSEJMP(pixel_turf)]))")
|
||||
var/message = "[key_name(src)] might be running a modified client! (failed can_see on AI click of [A] (Turf Loc: [AREACOORD(pixel_turf)]))"
|
||||
log_admin(message)
|
||||
to_chat(src, "<span class='warning'>You're experiencing a bug. Reconnect immediately to fix it. Admins have been notified.</span>")
|
||||
if(REALTIMEOFDAY >= chnotify + 9000)
|
||||
chnotify = REALTIMEOFDAY
|
||||
send2irc_adminless_only("NOCHEAT", message)
|
||||
|
||||
@@ -334,7 +334,7 @@ or shoot a gun to move around via Newton's 3rd Law of Motion."
|
||||
return
|
||||
|
||||
var/datum/antagonist/cult/antag = mob_viewer.mind.has_antag_datum(/datum/antagonist/cult,TRUE)
|
||||
if(!antag)
|
||||
if(!antag?.cult_team)
|
||||
return
|
||||
var/datum/objective/sacrifice/sac_objective = locate() in antag.cult_team.objectives
|
||||
|
||||
|
||||
@@ -367,7 +367,7 @@
|
||||
blood_display.hud = src
|
||||
infodisplay += blood_display
|
||||
|
||||
vamprank_display = new /obj/screen/bloodsucker/rank_counter // Vampire Rank
|
||||
vamprank_display = new /obj/screen/bloodsucker/rank_counter // Bloodsucker Rank
|
||||
vamprank_display.hud = src
|
||||
infodisplay += vamprank_display
|
||||
|
||||
|
||||
@@ -210,20 +210,6 @@
|
||||
user.swap_hand(held_index)
|
||||
return TRUE
|
||||
|
||||
/obj/screen/close
|
||||
name = "close"
|
||||
layer = ABOVE_HUD_LAYER
|
||||
plane = ABOVE_HUD_PLANE
|
||||
icon_state = "backpack_close"
|
||||
|
||||
/obj/screen/close/Initialize(mapload, new_master)
|
||||
. = ..()
|
||||
master = new_master
|
||||
|
||||
/obj/screen/close/Click()
|
||||
var/datum/component/storage/S = master
|
||||
S.hide_from(usr)
|
||||
return TRUE
|
||||
|
||||
/obj/screen/drop
|
||||
name = "drop"
|
||||
@@ -406,30 +392,6 @@
|
||||
else
|
||||
icon_state = "act_rest0"
|
||||
|
||||
/obj/screen/storage
|
||||
name = "storage"
|
||||
icon_state = "block"
|
||||
screen_loc = "7,7 to 10,8"
|
||||
layer = HUD_LAYER
|
||||
plane = HUD_PLANE
|
||||
|
||||
/obj/screen/storage/Initialize(mapload, new_master)
|
||||
. = ..()
|
||||
master = new_master
|
||||
|
||||
/obj/screen/storage/Click(location, control, params)
|
||||
if(world.time <= usr.next_move)
|
||||
return TRUE
|
||||
if(usr.incapacitated())
|
||||
return TRUE
|
||||
if (ismecha(usr.loc)) // stops inventory actions in a mech
|
||||
return TRUE
|
||||
if(master)
|
||||
var/obj/item/I = usr.get_active_held_item()
|
||||
if(I)
|
||||
master.attackby(null, I, usr, params)
|
||||
return TRUE
|
||||
|
||||
/obj/screen/throw_catch
|
||||
name = "throw/catch"
|
||||
icon = 'icons/mob/screen_midnight.dmi'
|
||||
|
||||
@@ -0,0 +1,113 @@
|
||||
/obj/screen/storage
|
||||
name = "storage"
|
||||
var/insertion_click = FALSE
|
||||
|
||||
/obj/screen/storage/Initialize(mapload, new_master)
|
||||
. = ..()
|
||||
master = new_master
|
||||
|
||||
/obj/screen/storage/Click(location, control, params)
|
||||
if(!insertion_click)
|
||||
return ..()
|
||||
if(world.time <= usr.next_move)
|
||||
return TRUE
|
||||
if(usr.incapacitated())
|
||||
return TRUE
|
||||
if (ismecha(usr.loc)) // stops inventory actions in a mech
|
||||
return TRUE
|
||||
if(master)
|
||||
var/obj/item/I = usr.get_active_held_item()
|
||||
if(I)
|
||||
master.attackby(null, I, usr, params)
|
||||
return TRUE
|
||||
|
||||
/obj/screen/storage/boxes
|
||||
name = "storage"
|
||||
icon_state = "block"
|
||||
screen_loc = "7,7 to 10,8"
|
||||
layer = HUD_LAYER
|
||||
plane = HUD_PLANE
|
||||
insertion_click = TRUE
|
||||
|
||||
/obj/screen/storage/close
|
||||
name = "close"
|
||||
layer = ABOVE_HUD_LAYER
|
||||
plane = ABOVE_HUD_PLANE
|
||||
icon_state = "backpack_close"
|
||||
|
||||
/obj/screen/storage/close/Click()
|
||||
var/datum/component/storage/S = master
|
||||
S.close(usr)
|
||||
return TRUE
|
||||
|
||||
/obj/screen/storage/left
|
||||
icon_state = "storage_start"
|
||||
insertion_click = TRUE
|
||||
|
||||
/obj/screen/storage/right
|
||||
icon_state = "storage_end"
|
||||
insertion_click = TRUE
|
||||
|
||||
/obj/screen/storage/continuous
|
||||
icon_state = "storage_continue"
|
||||
insertion_click = TRUE
|
||||
|
||||
/obj/screen/storage/volumetric_box
|
||||
icon_state = "stored_continue"
|
||||
var/obj/item/our_item
|
||||
|
||||
/obj/screen/storage/volumetric_box/Initialize(mapload, new_master, our_item)
|
||||
src.our_item = our_item
|
||||
return ..()
|
||||
|
||||
/obj/screen/storage/volumetric_box/Destroy()
|
||||
our_item = null
|
||||
return ..()
|
||||
|
||||
/obj/screen/storage/volumetric_box/Click(location, control, params)
|
||||
return our_item.Click(location, control, params)
|
||||
|
||||
/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/center
|
||||
icon_state = "stored_continue"
|
||||
var/obj/screen/storage/stored_left/left
|
||||
var/obj/screen/storage/stored_right/right
|
||||
var/pixel_size
|
||||
|
||||
/obj/screen/storage/volumetric_box/center/Initialize(mapload, new_master, our_item)
|
||||
left = new(null, src, our_item)
|
||||
right = new(null, src, our_item)
|
||||
return ..()
|
||||
|
||||
/obj/screen/storage/volumetric_box/center/Destroy()
|
||||
QDEL_NULL(left)
|
||||
QDEL_NULL(right)
|
||||
return ..()
|
||||
|
||||
/obj/screen/storage/volumetric_box/center/proc/on_screen_objects()
|
||||
return list(src, left, right)
|
||||
|
||||
/**
|
||||
* Sets the size of this box screen object and regenerates its left/right borders. This includes the actual border's size!
|
||||
*/
|
||||
/obj/screen/storage/volumetric_box/center/proc/set_pixel_size(pixels)
|
||||
if(pixel_size == pixels)
|
||||
return
|
||||
pixel_size = pixels
|
||||
cut_overlays()
|
||||
//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)
|
||||
|
||||
/obj/screen/storage/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
|
||||
icon_state = "stored_end"
|
||||
appearance_flags = APPEARANCE_UI | KEEP_APART | RESET_TRANSFORM
|
||||
@@ -125,13 +125,13 @@
|
||||
if(!CHECK_MOBILITY(user, MOBILITY_STAND))
|
||||
totitemdamage *= 0.5
|
||||
//CIT CHANGES END HERE
|
||||
if(user != src && check_shields(I, totitemdamage, "the [I.name]", MELEE_ATTACK, I.armour_penetration))
|
||||
if((user != src) && run_block(I, totitemdamage, "the [I.name]", ATTACK_TYPE_MELEE, I.armour_penetration, user) & BLOCK_SUCCESS)
|
||||
return FALSE
|
||||
send_item_attack_message(I, user)
|
||||
I.do_stagger_action(src, user)
|
||||
if(I.force)
|
||||
apply_damage(totitemdamage, I.damtype) //CIT CHANGE - replaces I.force with totitemdamage
|
||||
if(I.damtype == BRUTE && !HAS_TRAIT(src, TRAIT_NOMARROW))
|
||||
if(I.damtype == BRUTE)
|
||||
if(prob(33))
|
||||
I.add_mob_blood(src)
|
||||
var/turf/location = get_turf(src)
|
||||
|
||||
@@ -368,12 +368,16 @@
|
||||
var/list/datum/dynamic_storyteller/runnable_storytellers = new
|
||||
var/list/probabilities = Get(/datum/config_entry/keyed_list/storyteller_weight)
|
||||
var/list/repeated_mode_adjust = Get(/datum/config_entry/number_list/repeated_mode_adjust)
|
||||
var/list/min_player_counts = Get(/datum/config_entry/keyed_list/storyteller_min_players)
|
||||
for(var/T in storyteller_cache)
|
||||
var/datum/dynamic_storyteller/S = T
|
||||
var/config_tag = initial(S.config_tag)
|
||||
var/probability = (config_tag in probabilities) ? probabilities[config_tag] : initial(S.weight)
|
||||
var/min_players = (config_tag in min_player_counts) ? min_player_counts[config_tag] : initial(S.min_players)
|
||||
if(probability <= 0)
|
||||
continue
|
||||
if(length(GLOB.player_list) < min_players)
|
||||
continue
|
||||
if(SSpersistence.saved_storytellers.len == repeated_mode_adjust.len)
|
||||
var/name = initial(S.name)
|
||||
var/recent_round = min(SSpersistence.saved_storytellers.Find(name),3)
|
||||
|
||||
@@ -92,3 +92,7 @@
|
||||
/datum/config_entry/keyed_list/storyteller_weight
|
||||
key_mode = KEY_MODE_TEXT
|
||||
value_mode = VALUE_MODE_NUM
|
||||
|
||||
/datum/config_entry/keyed_list/storyteller_min_players
|
||||
key_mode = KEY_MODE_TEXT
|
||||
value_mode = VALUE_MODE_NUM
|
||||
|
||||
@@ -449,3 +449,31 @@
|
||||
key_mode = KEY_MODE_TEXT
|
||||
value_mode = VALUE_MODE_FLAG
|
||||
config_entry_value = list(GEN_VISIBLE_NO_CLOTHES, GEN_VISIBLE_NO_UNDIES, GEN_VISIBLE_NEVER) //refer to cit_helpers for all toggles.
|
||||
|
||||
//Body size configs, the feature will be disabled if both min and max have the same value.
|
||||
/datum/config_entry/number/body_size_min
|
||||
config_entry_value = RESIZE_DEFAULT_SIZE
|
||||
min_val = 0.1 //to avoid issues with zeros and negative values.
|
||||
max_val = RESIZE_DEFAULT_SIZE
|
||||
|
||||
/datum/config_entry/number/body_size_max
|
||||
config_entry_value = RESIZE_DEFAULT_SIZE
|
||||
min_val = RESIZE_DEFAULT_SIZE
|
||||
|
||||
//Pun-Pun movement slowdown given to characters with a body size smaller than this value,
|
||||
//to compensate for their smaller hitbox.
|
||||
//To disable, just make sure the value is lower than 'body_size_min'
|
||||
/datum/config_entry/number/threshold_body_size_slowdown
|
||||
config_entry_value = RESIZE_DEFAULT_SIZE * 0.85
|
||||
min_val = 0
|
||||
max_val = RESIZE_DEFAULT_SIZE
|
||||
|
||||
//multiplicative slowdown multiplier. See 'dna.update_body_size' for the operation.
|
||||
//doesn't apply to floating or crawling mobs
|
||||
/datum/config_entry/number/body_size_slowdown_multiplier
|
||||
config_entry_value = 0.25
|
||||
min_val = 0.1 //To encourage folks to disable the slowdown through the above config instead.
|
||||
|
||||
//Allows players to set a hexadecimal color of their choice as skin tone, on top of the standard ones.
|
||||
/datum/config_entry/number/allow_custom_skintones
|
||||
config_entry_value = 1
|
||||
|
||||
@@ -27,13 +27,11 @@
|
||||
var/hook_path = text2path("/hook/[hook]")
|
||||
if(!hook_path)
|
||||
CRASH("Invalid hook '/hook/[hook]' called.")
|
||||
return 0
|
||||
|
||||
var/caller = new hook_path
|
||||
var/status = 1
|
||||
for(var/P in typesof("[hook_path]/proc"))
|
||||
if(!call(caller, P)(arglist(args)))
|
||||
CRASH("Hook '[P]' failed or runtimed.")
|
||||
status = 0
|
||||
|
||||
return status
|
||||
|
||||
@@ -38,11 +38,17 @@ PROCESSING_SUBSYSTEM_DEF(dcs)
|
||||
if(istext(key))
|
||||
value = arguments[key]
|
||||
if(!(istext(key) || isnum(key)))
|
||||
key = REF(key)
|
||||
if(islist(key)) // CITADEL EDIT
|
||||
key = deep_list2params(key)
|
||||
else
|
||||
key = REF(key)
|
||||
key = "[key]" // Key is stringified so numbers dont break things
|
||||
if(!isnull(value))
|
||||
if(!(istext(value) || isnum(value)))
|
||||
value = REF(value)
|
||||
if(islist(value)) // CITADEL EDIT
|
||||
value = deep_list2params(value)
|
||||
else
|
||||
value = REF(value)
|
||||
named_arguments["[key]"] = value
|
||||
else
|
||||
fullid += "[key]"
|
||||
|
||||
@@ -21,9 +21,6 @@ SUBSYSTEM_DEF(fail2topic)
|
||||
|
||||
DropFirewallRule() // Clear the old bans if any still remain
|
||||
|
||||
if (world.system_type == UNIX && enabled)
|
||||
enabled = FALSE
|
||||
subsystem_log("DISABLED - UNIX systems are not supported.")
|
||||
if(!enabled)
|
||||
flags |= SS_NO_FIRE
|
||||
can_fire = FALSE
|
||||
@@ -90,7 +87,10 @@ SUBSYSTEM_DEF(fail2topic)
|
||||
fail_counts -= ip
|
||||
rate_limiting -= ip
|
||||
|
||||
. = shell("netsh advfirewall firewall add rule name=\"[rule_name]\" dir=in interface=any action=block remoteip=[ip]")
|
||||
if (world.system_type == UNIX)
|
||||
. = shell("iptables -A [rule_name] -s [ip] -j DROP")
|
||||
else
|
||||
. = shell("netsh advfirewall firewall add rule name=\"[rule_name]\" dir=in interface=any action=block remoteip=[ip]")
|
||||
|
||||
if (.)
|
||||
subsystem_log("Failed to ban [ip]. Exit code: [.].")
|
||||
@@ -105,7 +105,10 @@ SUBSYSTEM_DEF(fail2topic)
|
||||
|
||||
active_bans = list()
|
||||
|
||||
. = shell("netsh advfirewall firewall delete rule name=\"[rule_name]\"")
|
||||
if (world.system_type == UNIX)
|
||||
. = shell("iptables -F [rule_name]") //Let's just assume that folks running linux are smart enough to have a dedicated chain configured for this.
|
||||
else
|
||||
. = shell("netsh advfirewall firewall delete rule name=\"[rule_name]\"")
|
||||
|
||||
if (.)
|
||||
subsystem_log("Failed to drop firewall rule. Exit code: [.].")
|
||||
|
||||
@@ -0,0 +1,56 @@
|
||||
SUBSYSTEM_DEF(holodeck)
|
||||
name = "Holodeck"
|
||||
init_order = INIT_ORDER_HOLODECK
|
||||
flags = SS_NO_FIRE
|
||||
var/list/program_cache = list() //list of safe holodeck programs.
|
||||
var/list/emag_program_cache = list() //like above, but dangerous.
|
||||
var/list/offline_programs = list() //default when offline.
|
||||
var/list/target_holodeck_area = list()
|
||||
var/list/rejected_areas = list()
|
||||
|
||||
/datum/controller/subsystem/holodeck/Initialize()
|
||||
. = ..()
|
||||
//generates the list of available holodeck programs.
|
||||
for(var/path in subtypesof(/datum/holodeck_cache))
|
||||
new path
|
||||
for(var/path in typesof(/obj/machinery/computer/holodeck)) //The istances will be handled by SSatoms.
|
||||
var/obj/machinery/computer/holodeck/H = path
|
||||
offline_programs[path] = pop(get_areas(initial(H.offline_program)), FALSE)
|
||||
target_holodeck_area[path] = pop(get_areas(initial(H.holodeck_type)), FALSE)
|
||||
|
||||
|
||||
/*
|
||||
* The sole scope of this datum is to generate lists of holodeck programs caches per holodeck computer type.
|
||||
*/
|
||||
|
||||
/datum/holodeck_cache
|
||||
var/area/holodeck/master_type //the /area/holodeck typepath we'll be using for typesof loop.
|
||||
var/skip_types //Areas that won't be added to the global list category.
|
||||
var/list/compatible_holodeck_comps //list of typepaths of holodeck computers that can access this category.
|
||||
|
||||
/datum/holodeck_cache/New()
|
||||
if(!master_type || !compatible_holodeck_comps)
|
||||
return
|
||||
var/list/to_add = typesof(master_type) - skip_types
|
||||
var/list/programs
|
||||
var/list/emag_programs
|
||||
for(var/typekey in to_add)
|
||||
var/area/holodeck/A = GLOB.areas_by_type[typekey]
|
||||
if(!A || !A.contents.len)
|
||||
LAZYOR(SSholodeck.rejected_areas[typekey], compatible_holodeck_comps)
|
||||
continue
|
||||
var/list/info_this = list("name" = A.name, "type" = A.type)
|
||||
if(A.restricted)
|
||||
LAZYADD(emag_programs, list(info_this))
|
||||
else
|
||||
LAZYADD(programs, list(info_this))
|
||||
for(var/comp in compatible_holodeck_comps)
|
||||
if(programs)
|
||||
LAZYADD(SSholodeck.program_cache[comp], programs)
|
||||
if(emag_programs)
|
||||
LAZYADD(SSholodeck.emag_program_cache[comp], emag_programs)
|
||||
|
||||
/datum/holodeck_cache/standard
|
||||
master_type = /area/holodeck/rec_center
|
||||
skip_types = /area/holodeck/rec_center
|
||||
compatible_holodeck_comps = list(/obj/machinery/computer/holodeck)
|
||||
@@ -14,6 +14,7 @@ SUBSYSTEM_DEF(persistence)
|
||||
var/list/saved_modes = list(1,2,3)
|
||||
var/list/saved_dynamic_rules = list(list(),list(),list())
|
||||
var/list/saved_storytellers = list("foo","bar","baz")
|
||||
var/list/average_dynamic_threat = 50
|
||||
var/list/saved_maps
|
||||
var/list/saved_trophies = list()
|
||||
var/list/spawned_objects = list()
|
||||
@@ -191,6 +192,8 @@ SUBSYSTEM_DEF(persistence)
|
||||
if(!json)
|
||||
return
|
||||
saved_storytellers = json["data"]
|
||||
if(saved_storytellers.len > 3)
|
||||
average_dynamic_threat = saved_storytellers[4]
|
||||
saved_storytellers.len = 3
|
||||
|
||||
/datum/controller/subsystem/persistence/proc/LoadRecentMaps()
|
||||
@@ -434,9 +437,10 @@ SUBSYSTEM_DEF(persistence)
|
||||
saved_storytellers[3] = saved_storytellers[2]
|
||||
saved_storytellers[2] = saved_storytellers[1]
|
||||
saved_storytellers[1] = mode.storyteller.name
|
||||
average_dynamic_threat = (mode.threat_average + average_dynamic_threat) / 2
|
||||
var/json_file = file("data/RecentStorytellers.json")
|
||||
var/list/file_data = list()
|
||||
file_data["data"] = saved_storytellers
|
||||
file_data["data"] = saved_storytellers + average_dynamic_threat
|
||||
fdel(json_file)
|
||||
WRITE_FILE(json_file, json_encode(file_data))
|
||||
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
PROCESSING_SUBSYSTEM_DEF(chemistry)
|
||||
wait = 5
|
||||
flags = SS_KEEP_TIMING
|
||||
|
||||
|
||||
name = "Chemistry"
|
||||
|
||||
@@ -0,0 +1,43 @@
|
||||
PROCESSING_SUBSYSTEM_DEF(instruments)
|
||||
name = "Instruments"
|
||||
wait = 0.5
|
||||
init_order = INIT_ORDER_INSTRUMENTS
|
||||
flags = SS_KEEP_TIMING
|
||||
priority = FIRE_PRIORITY_INSTRUMENTS
|
||||
var/static/list/datum/instrument/instrument_data = list() //id = datum
|
||||
var/static/list/datum/song/songs = list()
|
||||
var/static/musician_maxlines = 600
|
||||
var/static/musician_maxlinechars = 300
|
||||
var/static/musician_hearcheck_mindelay = 5
|
||||
var/static/max_instrument_channels = MAX_INSTRUMENT_CHANNELS
|
||||
var/static/current_instrument_channels = 0
|
||||
|
||||
/datum/controller/subsystem/processing/instruments/Initialize()
|
||||
initialize_instrument_data()
|
||||
return ..()
|
||||
|
||||
/datum/controller/subsystem/processing/instruments/proc/on_song_new(datum/song/S)
|
||||
songs += S
|
||||
|
||||
/datum/controller/subsystem/processing/instruments/proc/on_song_del(datum/song/S)
|
||||
songs -= S
|
||||
|
||||
/datum/controller/subsystem/processing/instruments/proc/initialize_instrument_data()
|
||||
for(var/path in subtypesof(/datum/instrument))
|
||||
var/datum/instrument/I = path
|
||||
if(initial(I.abstract_type) == path)
|
||||
continue
|
||||
I = new path
|
||||
I.Initialize()
|
||||
instrument_data[I.id || "[I.type]"] = I
|
||||
CHECK_TICK
|
||||
|
||||
/datum/controller/subsystem/processing/instruments/proc/get_instrument(id_or_path)
|
||||
return instrument_data["[id_or_path]"]
|
||||
|
||||
/datum/controller/subsystem/processing/instruments/proc/reserve_instrument_channel(datum/instrument/I)
|
||||
if(current_instrument_channels > max_instrument_channels)
|
||||
return
|
||||
. = SSsounds.reserve_sound_channel(I)
|
||||
if(!isnull(.))
|
||||
current_instrument_channels++
|
||||
@@ -1,3 +1,4 @@
|
||||
PROCESSING_SUBSYSTEM_DEF(status_effects)
|
||||
wait = 1
|
||||
flags = SS_TICKER
|
||||
name = "Status Effects"
|
||||
|
||||
@@ -47,7 +47,6 @@ PROCESSING_SUBSYSTEM_DEF(weather)
|
||||
break
|
||||
if (!ispath(weather_datum_type, /datum/weather))
|
||||
CRASH("run_weather called with invalid weather_datum_type: [weather_datum_type || "null"]")
|
||||
return
|
||||
|
||||
if (isnull(z_levels))
|
||||
z_levels = SSmapping.levels_by_trait(initial(weather_datum_type.target_trait))
|
||||
@@ -55,7 +54,6 @@ PROCESSING_SUBSYSTEM_DEF(weather)
|
||||
z_levels = list(z_levels)
|
||||
else if (!islist(z_levels))
|
||||
CRASH("run_weather called with invalid z_levels: [z_levels || "null"]")
|
||||
return
|
||||
|
||||
var/datum/weather/W = new weather_datum_type(z_levels)
|
||||
W.telegraph()
|
||||
|
||||
@@ -0,0 +1,91 @@
|
||||
#define DATUMLESS "NO_DATUM"
|
||||
|
||||
SUBSYSTEM_DEF(sounds)
|
||||
name = "Sounds"
|
||||
flags = SS_NO_FIRE
|
||||
init_order = INIT_ORDER_SOUNDS
|
||||
var/static/using_channels_max = CHANNEL_HIGHEST_AVAILABLE //BYOND max channels
|
||||
|
||||
// Hey uh these two needs to be initialized fast because the whole "things get deleted before init" thing.
|
||||
/// Assoc list, "[channel]" = either the datum using it or TRUE for an unsafe-reserved (datumless reservation) channel
|
||||
var/list/using_channels = list()
|
||||
/// Assoc list datum = list(channel1, channel2, ...) for what channels something reserved.
|
||||
var/list/using_channels_by_datum = list()
|
||||
/// List of all available channels with associations set to TRUE for fast lookups/allocation.
|
||||
var/list/available_channels
|
||||
|
||||
/datum/controller/subsystem/sounds/Initialize()
|
||||
setup_available_channels()
|
||||
return ..()
|
||||
|
||||
/datum/controller/subsystem/sounds/proc/setup_available_channels()
|
||||
available_channels = list()
|
||||
for(var/i in 1 to using_channels_max)
|
||||
available_channels[num2text(i)] = TRUE
|
||||
|
||||
/// Removes a channel from using list.
|
||||
/datum/controller/subsystem/sounds/proc/free_sound_channel(channel)
|
||||
channel = num2text(channel)
|
||||
var/using = using_channels[channel]
|
||||
using_channels -= channel
|
||||
if(using)
|
||||
using_channels_by_datum[using] -= channel
|
||||
if(!length(using_channels_by_datum[using]))
|
||||
using_channels_by_datum -= using
|
||||
available_channels[channel] = TRUE
|
||||
|
||||
/// Frees all the channels a datum is using.
|
||||
/datum/controller/subsystem/sounds/proc/free_datum_channels(datum/D)
|
||||
var/list/L = using_channels_by_datum[D]
|
||||
if(!L)
|
||||
return
|
||||
for(var/channel in L)
|
||||
using_channels -= channel
|
||||
available_channels[channel] = TRUE
|
||||
using_channels_by_datum -= D
|
||||
|
||||
/// Frees all datumless channels
|
||||
/datum/controller/subsystem/sounds/proc/free_datumless_channels()
|
||||
free_datum_channels(DATUMLESS)
|
||||
|
||||
/// NO AUTOMATIC CLEANUP - If you use this, you better manually free it later! Returns an integer for channel.
|
||||
/datum/controller/subsystem/sounds/proc/reserve_sound_channel_datumless()
|
||||
var/channel = random_available_channel_text()
|
||||
if(!channel) //oh no..
|
||||
return FALSE
|
||||
available_channels -= channel
|
||||
using_channels[channel] = DATUMLESS
|
||||
LAZYINITLIST(using_channels_by_datum[DATUMLESS])
|
||||
using_channels_by_datum[DATUMLESS] += channel
|
||||
return text2num(channel)
|
||||
|
||||
/// Reserves a channel for a datum. Automatic cleanup only when the datum is deleted. Returns an integer for channel.
|
||||
/datum/controller/subsystem/sounds/proc/reserve_sound_channel(datum/D)
|
||||
if(!D) //i don't like typechecks but someone will fuck it up
|
||||
CRASH("Attempted to reserve sound channel without datum using the managed proc.")
|
||||
var/channel = random_available_channel_text()
|
||||
if(!channel)
|
||||
return FALSE
|
||||
available_channels -= channel
|
||||
using_channels[channel] = D
|
||||
LAZYINITLIST(using_channels_by_datum[D])
|
||||
using_channels_by_datum[D] += channel
|
||||
return text2num(channel)
|
||||
|
||||
/// Random available channel, returns text.
|
||||
/datum/controller/subsystem/sounds/proc/random_available_channel_text()
|
||||
return pick(available_channels)
|
||||
|
||||
/// Random available channel, returns number
|
||||
/datum/controller/subsystem/sounds/proc/random_available_channel()
|
||||
return text2num(pick(available_channels))
|
||||
|
||||
/// If a channel is available
|
||||
/datum/controller/subsystem/sounds/proc/is_channel_available(channel)
|
||||
return available_channels[num2text(channel)]
|
||||
|
||||
/// How many channels we have left.
|
||||
/datum/controller/subsystem/sounds/proc/available_channels_left()
|
||||
return length(available_channels)
|
||||
|
||||
#undef DATUMLESS
|
||||
@@ -172,7 +172,7 @@ SUBSYSTEM_DEF(traumas)
|
||||
/obj/item/ammo_box/magazine/pistolm9mm, /obj/item/ammo_box/a357, /obj/item/ammo_box/magazine/m12g, /obj/item/ammo_box/magazine/mm195x129, /obj/item/antag_spawner/nuke_ops, /obj/mecha/combat/gygax/dark, /obj/mecha/combat/marauder/mauler, /obj/item/soap/syndie, /obj/item/gun/syringe/syndicate, /obj/item/cartridge/virus/syndicate,
|
||||
/obj/item/cartridge/virus/frame, /obj/item/chameleon, /obj/item/storage/box/syndie_kit/cutouts, /obj/item/clothing/suit/space/hardsuit/syndi, /obj/item/card/emag, /obj/item/storage/toolbox/syndicate, /obj/item/storage/book/bible/syndicate, /obj/item/encryptionkey/binary, /obj/item/encryptionkey/syndicate, /obj/item/aiModule/syndicate,
|
||||
/obj/item/clothing/shoes/magboots/syndie, /obj/item/powersink, /obj/item/sbeacondrop, /obj/item/sbeacondrop/bomb, /obj/item/syndicatedetonator, /obj/item/shield/energy, /obj/item/assault_pod, /obj/item/slimepotion/slime/sentience/nuclear, /obj/item/stack/telecrystal, /obj/item/jammer, /obj/item/codespeak_manual/unlimited,
|
||||
/obj/item/toy/cards/deck/syndicate, /obj/item/storage/secure/briefcase/syndie, /obj/item/storage/fancy/cigarettes/cigpack_syndicate, /obj/item/toy/syndicateballoon, /obj/item/clothing/gloves/rapid, /obj/item/paper/fluff/ruins/thederelict/syndie_mission, /obj/item/organ/cyberimp/eyes/hud/security/syndicate, /obj/item/clothing/head/HoS/syndicate,
|
||||
/obj/item/toy/cards/deck/syndicate, /obj/item/storage/secure/briefcase/syndie, /obj/item/storage/fancy/cigarettes/cigpack_syndicate, /obj/item/toy/syndicateballoon, /obj/item/clothing/gloves/fingerless/pugilist/rapid, /obj/item/paper/fluff/ruins/thederelict/syndie_mission, /obj/item/organ/cyberimp/eyes/hud/security/syndicate, /obj/item/clothing/head/HoS/syndicate,
|
||||
/obj/machinery/computer/pod/old/syndicate, /obj/machinery/vending/medical/syndicate_access, /obj/item/mmi/syndie, /obj/item/target/syndicate, /obj/machinery/vending/cigarette/syndicate, /obj/item/robot_module/syndicate, /obj/item/clothing/mask/gas/syndicate, /obj/machinery/power/singularity_beacon/syndicate, /obj/item/clothing/head/syndicatefake,
|
||||
/obj/item/radio/headset/syndicate, /obj/item/gun/ballistic/automatic/pistol/antitank/syndicate, /obj/item/pda/syndicate, /obj/item/clothing/suit/armor/vest/capcarapace/syndicate, /obj/item/gun/ballistic/automatic/flechette, /obj/item/ammo_box/magazine/flechette, /obj/item/clothing/suit/toggle/lawyer/black/syndie, /obj/item/melee/transforming/energy/sword/cx/traitor,
|
||||
/obj/structure/sign/poster/contraband/syndicate_pistol, /obj/structure/sign/poster/contraband/syndicate_recruitment, /obj/item/bedsheet/syndie, /obj/item/borg/upgrade/syndicate, /obj/item/tank/jetpack/oxygen/harness, /obj/item/firing_pin/implant/pindicate, /obj/item/reagent_containers/glass/bottle/traitor, /obj/item/storage/belt/military,
|
||||
|
||||
@@ -763,7 +763,7 @@ SUBSYSTEM_DEF(vote)
|
||||
remove_from_client()
|
||||
Remove(owner)
|
||||
|
||||
/datum/action/vote/IsAvailable()
|
||||
/datum/action/vote/IsAvailable(silent = FALSE)
|
||||
return 1
|
||||
|
||||
/datum/action/vote/proc/remove_from_client()
|
||||
|
||||
+51
-62
@@ -6,13 +6,15 @@
|
||||
/datum/action
|
||||
var/name = "Generic Action"
|
||||
var/desc = null
|
||||
var/obj/target = null
|
||||
var/atom/target = null
|
||||
var/check_flags = 0
|
||||
var/required_mobility_flags = MOBILITY_USE
|
||||
var/processing = FALSE
|
||||
var/obj/screen/movable/action_button/button = null
|
||||
var/buttontooltipstyle = ""
|
||||
var/transparent_when_unavailable = TRUE
|
||||
var/use_target_appearance = FALSE
|
||||
var/list/target_appearance_matrix //if set, will be used to transform the target button appearance as an arglist.
|
||||
|
||||
var/button_icon = 'icons/mob/actions/backgrounds.dmi' //This is the file for the BACKGROUND icon
|
||||
var/background_icon_state = ACTION_BUTTON_DEFAULT_BACKGROUND //And this is the state for the background icon
|
||||
@@ -88,14 +90,14 @@
|
||||
/datum/action/proc/Trigger()
|
||||
if(!IsAvailable())
|
||||
return FALSE
|
||||
if(SEND_SIGNAL(src, COMSIG_ACTION_TRIGGER, src) & COMPONENT_ACTION_BLOCK_TRIGGER)
|
||||
if(SEND_SIGNAL(src, COMSIG_ACTION_TRIGGER, target) & COMPONENT_ACTION_BLOCK_TRIGGER)
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
/datum/action/proc/Process()
|
||||
return
|
||||
|
||||
/datum/action/proc/IsAvailable()
|
||||
/datum/action/proc/IsAvailable(silent = FALSE)
|
||||
if(!owner)
|
||||
return FALSE
|
||||
var/mob/living/L = owner
|
||||
@@ -116,29 +118,42 @@
|
||||
return TRUE
|
||||
|
||||
/datum/action/proc/UpdateButtonIcon(status_only = FALSE, force = FALSE)
|
||||
if(button)
|
||||
if(!status_only)
|
||||
button.name = name
|
||||
button.desc = desc
|
||||
if(owner && owner.hud_used && background_icon_state == ACTION_BUTTON_DEFAULT_BACKGROUND)
|
||||
var/list/settings = owner.hud_used.get_action_buttons_icons()
|
||||
if(button.icon != settings["bg_icon"])
|
||||
button.icon = settings["bg_icon"]
|
||||
if(button.icon_state != settings["bg_state"])
|
||||
button.icon_state = settings["bg_state"]
|
||||
else
|
||||
if(button.icon != button_icon)
|
||||
button.icon = button_icon
|
||||
if(button.icon_state != background_icon_state)
|
||||
button.icon_state = background_icon_state
|
||||
if(!button)
|
||||
return
|
||||
if(!status_only)
|
||||
button.name = name
|
||||
button.desc = desc
|
||||
if(owner && owner.hud_used && background_icon_state == ACTION_BUTTON_DEFAULT_BACKGROUND)
|
||||
var/list/settings = owner.hud_used.get_action_buttons_icons()
|
||||
if(button.icon != settings["bg_icon"])
|
||||
button.icon = settings["bg_icon"]
|
||||
if(button.icon_state != settings["bg_state"])
|
||||
button.icon_state = settings["bg_state"]
|
||||
else
|
||||
if(button.icon != button_icon)
|
||||
button.icon = button_icon
|
||||
if(button.icon_state != background_icon_state)
|
||||
button.icon_state = background_icon_state
|
||||
|
||||
if(!use_target_appearance)
|
||||
ApplyIcon(button, force)
|
||||
|
||||
if(!IsAvailable())
|
||||
button.color = transparent_when_unavailable ? rgb(128,0,0,128) : rgb(128,0,0)
|
||||
else
|
||||
button.color = rgb(255,255,255,255)
|
||||
return 1
|
||||
else if(target && button.appearance_cache != target.appearance) //replace with /ref comparison if this is not valid.
|
||||
var/mutable_appearance/M = new(target)
|
||||
M.layer = FLOAT_LAYER
|
||||
M.plane = FLOAT_PLANE
|
||||
if(target_appearance_matrix)
|
||||
var/list/L = target_appearance_matrix
|
||||
M.transform = matrix(L[1], L[2], L[3], L[4], L[5], L[6])
|
||||
button.cut_overlays()
|
||||
button.add_overlay(M)
|
||||
button.appearance_cache = target.appearance
|
||||
|
||||
if(!IsAvailable(TRUE))
|
||||
button.color = transparent_when_unavailable ? rgb(128,0,0,128) : rgb(128,0,0)
|
||||
else
|
||||
button.color = rgb(255,255,255,255)
|
||||
return 1
|
||||
|
||||
/datum/action/proc/ApplyIcon(obj/screen/movable/action_button/current_button, force = FALSE)
|
||||
if(icon_icon && button_icon_state && ((current_button.button_icon_state != button_icon_state) || force))
|
||||
@@ -165,6 +180,7 @@
|
||||
/datum/action/item_action
|
||||
check_flags = AB_CHECK_RESTRAINED|AB_CHECK_STUN|AB_CHECK_LYING|AB_CHECK_CONSCIOUS
|
||||
button_icon_state = null
|
||||
use_target_appearance = TRUE
|
||||
// If you want to override the normal icon being the item
|
||||
// then change this to an icon state
|
||||
|
||||
@@ -188,23 +204,6 @@
|
||||
I.ui_action_click(owner, src)
|
||||
return 1
|
||||
|
||||
/datum/action/item_action/ApplyIcon(obj/screen/movable/action_button/current_button, force)
|
||||
if(button_icon && button_icon_state)
|
||||
// If set, use the custom icon that we set instead
|
||||
// of the item appearence
|
||||
..()
|
||||
else if(target && current_button.appearance_cache != target.appearance) //replace with /ref comparison if this is not valid.
|
||||
var/obj/item/I = target
|
||||
var/old_layer = I.layer
|
||||
var/old_plane = I.plane
|
||||
I.layer = FLOAT_LAYER //AAAH
|
||||
I.plane = FLOAT_PLANE //^ what that guy said
|
||||
current_button.cut_overlays()
|
||||
current_button.add_overlay(I)
|
||||
I.layer = old_layer
|
||||
I.plane = old_plane
|
||||
current_button.appearance_cache = I.appearance
|
||||
|
||||
/datum/action/item_action/toggle_light
|
||||
name = "Toggle Light"
|
||||
|
||||
@@ -302,23 +301,13 @@
|
||||
name = "Toggle Friendly Fire \[ON\]"
|
||||
..()
|
||||
|
||||
/datum/action/item_action/synthswitch
|
||||
name = "Change Synthesizer Instrument"
|
||||
desc = "Change the type of instrument your synthesizer is playing as."
|
||||
|
||||
/datum/action/item_action/synthswitch/Trigger()
|
||||
if(istype(target, /obj/item/instrument/piano_synth))
|
||||
var/obj/item/instrument/piano_synth/synth = target
|
||||
return synth.selectInstrument()
|
||||
return ..()
|
||||
|
||||
/datum/action/item_action/vortex_recall
|
||||
name = "Vortex Recall"
|
||||
desc = "Recall yourself, and anyone nearby, to an attuned hierophant beacon at any time.<br>If the beacon is still attached, will detach it."
|
||||
icon_icon = 'icons/mob/actions/actions_items.dmi'
|
||||
button_icon_state = "vortex_recall"
|
||||
|
||||
/datum/action/item_action/vortex_recall/IsAvailable()
|
||||
/datum/action/item_action/vortex_recall/IsAvailable(silent = FALSE)
|
||||
if(istype(target, /obj/item/hierophant_club))
|
||||
var/obj/item/hierophant_club/H = target
|
||||
if(H.teleporting)
|
||||
@@ -330,7 +319,7 @@
|
||||
background_icon_state = "bg_clock"
|
||||
buttontooltipstyle = "clockcult"
|
||||
|
||||
/datum/action/item_action/clock/IsAvailable()
|
||||
/datum/action/item_action/clock/IsAvailable(silent = FALSE)
|
||||
if(!is_servant_of_ratvar(owner))
|
||||
return 0
|
||||
return ..()
|
||||
@@ -339,7 +328,7 @@
|
||||
name = "Create Judicial Marker"
|
||||
desc = "Allows you to create a stunning Judicial Marker at any location in view. Click again to disable."
|
||||
|
||||
/datum/action/item_action/clock/toggle_visor/IsAvailable()
|
||||
/datum/action/item_action/clock/toggle_visor/IsAvailable(silent = FALSE)
|
||||
if(!is_servant_of_ratvar(owner))
|
||||
return 0
|
||||
if(istype(target, /obj/item/clothing/glasses/judicial_visor))
|
||||
@@ -418,7 +407,7 @@
|
||||
/datum/action/item_action/jetpack_stabilization
|
||||
name = "Toggle Jetpack Stabilization"
|
||||
|
||||
/datum/action/item_action/jetpack_stabilization/IsAvailable()
|
||||
/datum/action/item_action/jetpack_stabilization/IsAvailable(silent = FALSE)
|
||||
var/obj/item/tank/jetpack/J = target
|
||||
if(!istype(J) || !J.on)
|
||||
return 0
|
||||
@@ -475,7 +464,7 @@
|
||||
/datum/action/item_action/organ_action
|
||||
check_flags = AB_CHECK_CONSCIOUS
|
||||
|
||||
/datum/action/item_action/organ_action/IsAvailable()
|
||||
/datum/action/item_action/organ_action/IsAvailable(silent = FALSE)
|
||||
var/obj/item/organ/I = target
|
||||
if(!I.owner)
|
||||
return 0
|
||||
@@ -644,32 +633,32 @@
|
||||
return FALSE
|
||||
if(target)
|
||||
var/obj/effect/proc_holder/S = target
|
||||
S.Click()
|
||||
S.Trigger(usr)
|
||||
return TRUE
|
||||
|
||||
/datum/action/spell_action/IsAvailable()
|
||||
/datum/action/spell_action/IsAvailable(silent = FALSE)
|
||||
if(!target)
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
/datum/action/spell_action/spell
|
||||
|
||||
/datum/action/spell_action/spell/IsAvailable()
|
||||
/datum/action/spell_action/spell/IsAvailable(silent = FALSE)
|
||||
if(!target)
|
||||
return FALSE
|
||||
var/obj/effect/proc_holder/spell/S = target
|
||||
if(owner)
|
||||
return S.can_cast(owner)
|
||||
return S.can_cast(owner, FALSE, silent)
|
||||
return FALSE
|
||||
|
||||
/datum/action/spell_action/alien
|
||||
|
||||
/datum/action/spell_action/alien/IsAvailable()
|
||||
/datum/action/spell_action/alien/IsAvailable(silent = FALSE)
|
||||
if(!target)
|
||||
return FALSE
|
||||
var/obj/effect/proc_holder/alien/ab = target
|
||||
if(owner)
|
||||
return ab.cost_check(ab.check_turf,owner,1)
|
||||
return ab.cost_check(ab.check_turf,owner,silent)
|
||||
return FALSE
|
||||
|
||||
|
||||
@@ -711,7 +700,7 @@
|
||||
button.maptext_width = 24
|
||||
button.maptext_height = 12
|
||||
|
||||
/datum/action/cooldown/IsAvailable()
|
||||
/datum/action/cooldown/IsAvailable(silent = FALSE)
|
||||
return next_use_time <= world.time
|
||||
|
||||
/datum/action/cooldown/proc/StartCooldown()
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
//title_image = ntitle_image
|
||||
|
||||
/datum/browser/proc/add_stylesheet(name, file)
|
||||
if (istype(name, /datum/asset/spritesheet))
|
||||
if(istype(name, /datum/asset/spritesheet))
|
||||
var/datum/asset/spritesheet/sheet = name
|
||||
stylesheets["spritesheet_[sheet.name].css"] = "data/spritesheets/[sheet.name]"
|
||||
else
|
||||
|
||||
@@ -188,7 +188,7 @@
|
||||
|
||||
/datum/component/personal_crafting/proc/construct_item(mob/user, datum/crafting_recipe/R)
|
||||
var/list/contents = get_surroundings(user)
|
||||
var/send_feedback = 1
|
||||
var/send_feedback = TRUE
|
||||
if(check_contents(user, R, contents))
|
||||
if(check_tools(user, R, contents))
|
||||
if(do_after(user, R.time, target = user))
|
||||
@@ -205,7 +205,7 @@
|
||||
if(send_feedback)
|
||||
SSblackbox.record_feedback("tally", "object_crafted", 1, I.type)
|
||||
log_craft("[I] crafted by [user] at [loc_name(I.loc)]")
|
||||
return 0
|
||||
return FALSE
|
||||
return "."
|
||||
return ", missing tool."
|
||||
return ", missing component."
|
||||
@@ -408,8 +408,11 @@
|
||||
switch(action)
|
||||
if("make")
|
||||
var/datum/crafting_recipe/TR = locate(params["recipe"]) in GLOB.crafting_recipes
|
||||
busy = TRUE
|
||||
ui_interact(usr)
|
||||
if(busy)
|
||||
to_chat(usr, "<span class='warning'>You are already making something!</span>")
|
||||
return
|
||||
busy = TRUE
|
||||
var/fail_msg = construct_item(usr, TR)
|
||||
if(!fail_msg)
|
||||
to_chat(usr, "<span class='notice'>[TR.name] constructed.</span>")
|
||||
|
||||
+212
-57
@@ -14,26 +14,32 @@
|
||||
name = "Glass working tools"
|
||||
desc = "A lovely belt of most the tools you will need to shape, mold, and refine glass into more advanced shapes."
|
||||
icon_state = "glass_tools"
|
||||
tool_behaviour = TOOL_GLASS_CUT
|
||||
tool_behaviour = TOOL_GLASS_CUT //Cutting takes 20 ticks
|
||||
|
||||
/obj/item/glasswork/blowing_rod
|
||||
name = "Glass working blow rod"
|
||||
desc = "A hollow metal stick made for glass blowing."
|
||||
icon_state = "blowing_rods_unused"
|
||||
tool_behaviour = TOOL_BLOW
|
||||
tool_behaviour = TOOL_BLOW //Rods take 5 ticks
|
||||
|
||||
/obj/item/glasswork/glass_base
|
||||
/obj/item/glasswork/glass_base //Welding takes 30 ticks
|
||||
name = "Glass fodder sheet"
|
||||
desc = "A sheet of glass set aside for glass working"
|
||||
icon_state = "glass_base"
|
||||
var/next_step = null
|
||||
var/rod = /obj/item/glasswork/blowing_rod
|
||||
|
||||
/obj/item/lens
|
||||
name = "Optical lens"
|
||||
desc = "Good for selling or crafting, by itself its useless"
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
icon_state = "glass_optics"
|
||||
/obj/item/tea_plate
|
||||
name = "Tea Plate"
|
||||
desc = "A polished plate for a tea cup. How fancy!"
|
||||
icon = 'icons/obj/glass_ware.dmi'
|
||||
icon_state = "tea_plate"
|
||||
|
||||
/obj/item/tea_cup
|
||||
name = "Tea Cup"
|
||||
desc = "A glass cup made for fake tea!"
|
||||
icon = 'icons/obj/glass_ware.dmi'
|
||||
icon_state = "tea_plate"
|
||||
|
||||
//////////////////////Chem Disk/////////////////////
|
||||
//Two Steps //
|
||||
@@ -49,8 +55,9 @@
|
||||
/obj/item/glasswork/glass_base/dish/attackby(obj/item/I, mob/user, params)
|
||||
..()
|
||||
if(I.tool_behaviour == TOOL_GLASS_CUT)
|
||||
new next_step(user.loc, 1)
|
||||
qdel(src)
|
||||
if(do_after(user,20, target = src))
|
||||
new next_step(user.loc, 1)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/glasswork/glass_base/dish_part1
|
||||
name = "Half chem dish sheet"
|
||||
@@ -61,8 +68,9 @@
|
||||
/obj/item/glasswork/glass_base/dish_part1/attackby(obj/item/I, mob/user, params)
|
||||
..()
|
||||
if(I.tool_behaviour == TOOL_GLASS_CUT)
|
||||
new next_step(user.loc, 1)
|
||||
qdel(src)
|
||||
if(do_after(user,20, target = src))
|
||||
new next_step(user.loc, 1)
|
||||
qdel(src)
|
||||
|
||||
//////////////////////Lens//////////////////////////
|
||||
//Six Steps //
|
||||
@@ -78,8 +86,9 @@
|
||||
/obj/item/glasswork/glass_base/glass_lens/attackby(obj/item/I, mob/user, params)
|
||||
..()
|
||||
if(I.tool_behaviour == TOOL_GLASS_CUT)
|
||||
new next_step(user.loc, 1)
|
||||
qdel(src)
|
||||
if(do_after(user,20, target = src))
|
||||
new next_step(user.loc, 1)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/glasswork/glass_base/glass_lens_part1
|
||||
name = "Glass fodder sheet"
|
||||
@@ -90,8 +99,9 @@
|
||||
/obj/item/glasswork/glass_base/glass_lens_part1/attackby(obj/item/I, mob/user, params)
|
||||
..()
|
||||
if(I.tool_behaviour == TOOL_WELDER)
|
||||
new next_step(user.loc, 1)
|
||||
qdel(src)
|
||||
if(do_after(user,30, target = src))
|
||||
new next_step(user.loc, 1)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/glasswork/glass_base/glass_lens_part2
|
||||
name = "Glass fodder sheet"
|
||||
@@ -102,8 +112,9 @@
|
||||
/obj/item/glasswork/glass_base/glass_lens_part2/attackby(obj/item/I, mob/user, params)
|
||||
..()
|
||||
if(I.tool_behaviour == TOOL_WELDER)
|
||||
new next_step(user.loc, 1)
|
||||
qdel(src)
|
||||
if(do_after(user,30, target = src))
|
||||
new next_step(user.loc, 1)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/glasswork/glass_base/glass_lens_part3
|
||||
name = "Glass fodder sheet"
|
||||
@@ -114,9 +125,10 @@
|
||||
/obj/item/glasswork/glass_base/glass_lens_part3/attackby(obj/item/I, mob/user, params)
|
||||
..()
|
||||
if(I.tool_behaviour == TOOL_BLOW)
|
||||
new next_step(user.loc, 1)
|
||||
qdel(src)
|
||||
qdel(I)
|
||||
if(do_after(user,5, target = src))
|
||||
new next_step(user.loc, 1)
|
||||
qdel(src)
|
||||
qdel(I)
|
||||
|
||||
/obj/item/glasswork/glass_base/glass_lens_part4
|
||||
name = "Glass fodder sheet"
|
||||
@@ -127,29 +139,31 @@
|
||||
/obj/item/glasswork/glass_base/glass_lens_part4/attackby(obj/item/I, mob/user, params)
|
||||
..()
|
||||
if(I.tool_behaviour == TOOL_GLASS_CUT)
|
||||
new next_step(user.loc, 1)
|
||||
new rod(user.loc, 1)
|
||||
qdel(src)
|
||||
if(do_after(user,20, target = src))
|
||||
new next_step(user.loc, 1)
|
||||
new rod(user.loc, 1)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/glasswork/glass_base/glass_lens_part5
|
||||
name = "Unpolished glass lens"
|
||||
desc = "A small unpolished glass lens. Could be polished with some cloth."
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
desc = "A small unpolished glass lens. Could be polished with some silk."
|
||||
icon = 'icons/obj/glass_ware.dmi'
|
||||
icon_state = "glass_optics"
|
||||
next_step = /obj/item/glasswork/glass_base/glass_lens_part6
|
||||
|
||||
/obj/item/glasswork/glass_base/glass_lens_part5/attackby(obj/item/I, mob/user, params)
|
||||
..()
|
||||
if(istype(I, /obj/item/stack/sheet/cloth))
|
||||
new next_step(user.loc, 1)
|
||||
qdel(src)
|
||||
if(istype(I, /obj/item/stack/sheet/silk))
|
||||
if(do_after(user,10, target = src))
|
||||
new next_step(user.loc, 1)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/glasswork/glass_base/glass_lens_part6
|
||||
name = "Unrefined glass lens"
|
||||
desc = "A small polished glass lens. Just needs to be refined with some sandstone."
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
icon = 'icons/obj/glass_ware.dmi'
|
||||
icon_state = "glass_optics"
|
||||
next_step = /obj/item/lens
|
||||
next_step = /obj/item/glasswork/glass_base/lens
|
||||
|
||||
/obj/item/glasswork/glass_base/glass_lens_part6/attackby(obj/item/I, mob/user, params)
|
||||
..()
|
||||
@@ -171,8 +185,9 @@
|
||||
/obj/item/glasswork/glass_base/spouty/attackby(obj/item/I, mob/user, params)
|
||||
..()
|
||||
if(I.tool_behaviour == TOOL_GLASS_CUT)
|
||||
new next_step(user.loc, 1)
|
||||
qdel(src)
|
||||
if(do_after(user,20, target = src))
|
||||
new next_step(user.loc, 1)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/glasswork/glass_base/spouty_part2
|
||||
name = "Glass fodder sheet"
|
||||
@@ -183,8 +198,9 @@
|
||||
/obj/item/glasswork/glass_base/spouty_part2/attackby(obj/item/I, mob/user, params)
|
||||
..()
|
||||
if(I.tool_behaviour == TOOL_WELDER)
|
||||
new next_step(user.loc, 1)
|
||||
qdel(src)
|
||||
if(do_after(user,30, target = src))
|
||||
new next_step(user.loc, 1)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/glasswork/glass_base/spouty_part3
|
||||
name = "Glass fodder sheet"
|
||||
@@ -195,9 +211,10 @@
|
||||
/obj/item/glasswork/glass_base/spouty_part3/attackby(obj/item/I, mob/user, params)
|
||||
..()
|
||||
if(I.tool_behaviour == TOOL_BLOW)
|
||||
new next_step(user.loc, 1)
|
||||
qdel(src)
|
||||
qdel(I)
|
||||
if(do_after(user,5, target = src))
|
||||
new next_step(user.loc, 1)
|
||||
qdel(src)
|
||||
qdel(I)
|
||||
|
||||
/obj/item/glasswork/glass_base/spouty_part4
|
||||
name = "Glass fodder sheet"
|
||||
@@ -208,9 +225,10 @@
|
||||
/obj/item/glasswork/glass_base/spouty_part4/attackby(obj/item/I, mob/user, params)
|
||||
..()
|
||||
if(I.tool_behaviour == TOOL_GLASS_CUT)
|
||||
new next_step(user.loc, 1)
|
||||
new rod(user.loc, 1)
|
||||
qdel(src)
|
||||
if(do_after(user,20, target = src))
|
||||
new next_step(user.loc, 1)
|
||||
new rod(user.loc, 1)
|
||||
qdel(src)
|
||||
|
||||
//////////////////////Small Bulb Flask//////////////
|
||||
//Two Steps //
|
||||
@@ -226,8 +244,9 @@
|
||||
/obj/item/glasswork/glass_base/flask_small/attackby(obj/item/I, mob/user, params)
|
||||
..()
|
||||
if(I.tool_behaviour == TOOL_WELDER)
|
||||
new next_step(user.loc, 1)
|
||||
qdel(src)
|
||||
if(do_after(user,30, target = src))
|
||||
new next_step(user.loc, 1)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/glasswork/glass_base/flask_small_part1
|
||||
name = "Metled glass"
|
||||
@@ -238,9 +257,10 @@
|
||||
/obj/item/glasswork/glass_base/flask_small_part1/attackby(obj/item/I, mob/user, params)
|
||||
..()
|
||||
if(I.tool_behaviour == TOOL_BLOW)
|
||||
new next_step(user.loc, 1)
|
||||
qdel(src)
|
||||
qdel(I)
|
||||
if(do_after(user,5, target = src))
|
||||
new next_step(user.loc, 1)
|
||||
qdel(src)
|
||||
qdel(I)
|
||||
|
||||
/obj/item/glasswork/glass_base/flask_small_part2
|
||||
name = "Metled glass"
|
||||
@@ -251,9 +271,10 @@
|
||||
/obj/item/glasswork/glass_base/flask_small_part2/attackby(obj/item/I, mob/user, params)
|
||||
..()
|
||||
if(I.tool_behaviour == TOOL_GLASS_CUT)
|
||||
new next_step(user.loc, 1)
|
||||
new rod(user.loc, 1)
|
||||
qdel(src)
|
||||
if(do_after(user,20, target = src))
|
||||
new next_step(user.loc, 1)
|
||||
new rod(user.loc, 1)
|
||||
qdel(src)
|
||||
|
||||
//////////////////////Large Bulb Flask//////////////
|
||||
//Two Steps //
|
||||
@@ -269,8 +290,9 @@
|
||||
/obj/item/glasswork/glass_base/flask_large/attackby(obj/item/I, mob/user, params)
|
||||
..()
|
||||
if(I.tool_behaviour == TOOL_WELDER)
|
||||
new next_step(user.loc, 1)
|
||||
qdel(src)
|
||||
if(do_after(user,30, target = src))
|
||||
new next_step(user.loc, 1)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/glasswork/glass_base/flask_large_part1
|
||||
name = "Metled glass"
|
||||
@@ -281,9 +303,10 @@
|
||||
/obj/item/glasswork/glass_base/flask_large_part1/attackby(obj/item/I, mob/user, params)
|
||||
..()
|
||||
if(I.tool_behaviour == TOOL_BLOW)
|
||||
new next_step(user.loc, 1)
|
||||
qdel(src)
|
||||
qdel(I)
|
||||
if(do_after(user,5, target = src))
|
||||
new next_step(user.loc, 1)
|
||||
qdel(src)
|
||||
qdel(I)
|
||||
|
||||
/obj/item/glasswork/glass_base/flask_large_part2
|
||||
name = "Metled glass"
|
||||
@@ -294,6 +317,138 @@
|
||||
/obj/item/glasswork/glass_base/flask_large_part2/attackby(obj/item/I, mob/user, params)
|
||||
..()
|
||||
if(I.tool_behaviour == TOOL_GLASS_CUT)
|
||||
new next_step(user.loc, 1)
|
||||
new rod(user.loc, 1)
|
||||
qdel(src)
|
||||
if(do_after(user,20, target = src))
|
||||
new next_step(user.loc, 1)
|
||||
new rod(user.loc, 1)
|
||||
qdel(src)
|
||||
|
||||
//////////////////////Tea Plates////////////////////
|
||||
//Three Steps //
|
||||
//Sells for 1200 cr, takes 5 glass shets //
|
||||
//Usefull for selling and chemical things //
|
||||
////////////////////////////////////////////////////
|
||||
|
||||
/obj/item/glasswork/glass_base/tea_plate
|
||||
name = "Glass fodder sheet"
|
||||
desc = "A set of glass sheets set aside for glass working, this one is ideal for a tea plate, how fancy! Needs to be heated with some tools."
|
||||
next_step = /obj/item/glasswork/glass_base/tea_plate1
|
||||
|
||||
/obj/item/glasswork/glass_base/tea_plate/attackby(obj/item/I, mob/user, params)
|
||||
..()
|
||||
if(I.tool_behaviour == TOOL_WELDER)
|
||||
if(do_after(user,30, target = src))
|
||||
new next_step(user.loc, 1)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/glasswork/glass_base/tea_plate1
|
||||
name = "Metled glass"
|
||||
desc = "A blob of metled glass, this one is ideal for a tea plate. Needs to be blown with some tools."
|
||||
icon_state = "glass_base_molding"
|
||||
next_step = /obj/item/glasswork/glass_base/tea_plate2
|
||||
|
||||
/obj/item/glasswork/glass_base/tea_plate1/attackby(obj/item/I, mob/user, params)
|
||||
..()
|
||||
if(I.tool_behaviour == TOOL_BLOW)
|
||||
if(do_after(user,5, target = src))
|
||||
new next_step(user.loc, 1)
|
||||
qdel(src)
|
||||
qdel(I)
|
||||
|
||||
/obj/item/glasswork/glass_base/tea_plate2
|
||||
name = "Metled glass"
|
||||
desc = "A blob of metled glass on the end of a blowing rod. Needs to be cut off with some tools."
|
||||
icon_state = "blowing_rods_inuse"
|
||||
next_step = /obj/item/glasswork/glass_base/tea_plate3
|
||||
|
||||
/obj/item/glasswork/glass_base/tea_plate2/attackby(obj/item/I, mob/user, params)
|
||||
..()
|
||||
if(I.tool_behaviour == TOOL_GLASS_CUT)
|
||||
if(do_after(user,20, target = src))
|
||||
new next_step(user.loc, 1)
|
||||
new rod(user.loc, 1)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/glasswork/glass_base/tea_plate3
|
||||
name = "Disk of glass"
|
||||
desc = "A disk of glass that can be cant be used for much. Needs to be polished with some silk."
|
||||
icon_state = "glass_base_half"
|
||||
next_step = /obj/item/tea_plate
|
||||
|
||||
/obj/item/glasswork/glass_base/tea_plate3/attackby(obj/item/I, mob/user, params)
|
||||
..()
|
||||
if(istype(I, /obj/item/stack/sheet/silk))
|
||||
if(do_after(user,10, target = src))
|
||||
new next_step(user.loc, 1)
|
||||
qdel(src)
|
||||
|
||||
//////////////////////Tea Cup///////////////////////
|
||||
//Four Steps //
|
||||
//Sells for 1800 cr, takes 6 glass shets //
|
||||
//Usefull for selling and chemical things //
|
||||
////////////////////////////////////////////////////
|
||||
|
||||
/obj/item/glasswork/glass_base/tea_cup
|
||||
name = "Glass fodder sheet"
|
||||
desc = "A set of glass sheets set aside for glass working, this one is ideal for a tea cup, how fancy! Needs to be heated with some tools."
|
||||
next_step = /obj/item/glasswork/glass_base/tea_cup1
|
||||
|
||||
/obj/item/glasswork/glass_base/tea_cup/attackby(obj/item/I, mob/user, params)
|
||||
..()
|
||||
if(I.tool_behaviour == TOOL_WELDER)
|
||||
if(do_after(user,30, target = src))
|
||||
new next_step(user.loc, 1)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/glasswork/glass_base/tea_cup1
|
||||
name = "Metled glass"
|
||||
desc = "A blob of metled glass, this one is ideal for a tea cup. Needs to be blown with some tools."
|
||||
icon_state = "glass_base_molding"
|
||||
next_step = /obj/item/glasswork/glass_base/tea_cup2
|
||||
|
||||
/obj/item/glasswork/glass_base/tea_cup1/attackby(obj/item/I, mob/user, params)
|
||||
..()
|
||||
if(I.tool_behaviour == TOOL_BLOW)
|
||||
if(do_after(user,5, target = src))
|
||||
new next_step(user.loc, 1)
|
||||
qdel(src)
|
||||
qdel(I)
|
||||
|
||||
/obj/item/glasswork/glass_base/tea_cupe2
|
||||
name = "Metled glass"
|
||||
desc = "A blob of metled glass on the end of a blowing rod. Needs to be cut off with some tools."
|
||||
icon_state = "blowing_rods_inuse"
|
||||
next_step = /obj/item/glasswork/glass_base/tea_cup3
|
||||
|
||||
/obj/item/glasswork/glass_base/tea_cup2/attackby(obj/item/I, mob/user, params)
|
||||
..()
|
||||
if(I.tool_behaviour == TOOL_GLASS_CUT)
|
||||
if(do_after(user,20, target = src))
|
||||
new next_step(user.loc, 1)
|
||||
new rod(user.loc, 1)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/glasswork/glass_base/tea_cup3
|
||||
name = "Disk of glass"
|
||||
desc = "A bowl of glass that can be cant be used for much. Needs to be polished with some silk."
|
||||
icon_state = "glass_base_half"
|
||||
next_step = /obj/item/glasswork/glass_base/tea_cup4
|
||||
|
||||
/obj/item/glasswork/glass_base/cup3/attackby(obj/item/I, mob/user, params)
|
||||
..()
|
||||
if(istype(I, /obj/item/stack/sheet/silk))
|
||||
if(do_after(user,10, target = src))
|
||||
new next_step(user.loc, 1)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/glasswork/glass_base/tea_cup4
|
||||
name = "Disk of glass"
|
||||
desc = "A bowl of polished glass that can be cant be used for much. Needs some more glass to make a handle."
|
||||
icon_state = "glass_base_half"
|
||||
next_step = /obj/item/tea_cup
|
||||
|
||||
/obj/item/glasswork/glass_base/cup4/attackby(obj/item/I, mob/user, params)
|
||||
..()
|
||||
if(istype(I, /obj/item/stack/sheet/glass))
|
||||
if(do_after(user,10, target = src))
|
||||
new next_step(user.loc, 1)
|
||||
qdel(src)
|
||||
@@ -0,0 +1,98 @@
|
||||
//This file is for crafting using a lens!
|
||||
|
||||
/obj/item/glasswork/glass_base/lens
|
||||
name = "Optical lens"
|
||||
desc = "Good for selling or crafting, by itself its useless"
|
||||
icon = 'icons/obj/glass_ware.dmi'
|
||||
icon_state = "glass_optics"
|
||||
|
||||
//Laser pointers - 2600
|
||||
/obj/item/glasswork/glass_base/laserpointer_shell
|
||||
name = "Laser pointer assembly"
|
||||
desc = "Good for selling or crafting, by itself its useless. Needs a power capactor."
|
||||
icon_state = "laser_case"
|
||||
icon = 'icons/obj/glass_ware.dmi'
|
||||
next_step = /obj/item/glasswork/glass_base/laserpointer_shell_1
|
||||
|
||||
/obj/item/glasswork/glass_base/laserpointer_shell/attackby(obj/item/I, mob/user, params)
|
||||
..()
|
||||
if(istype(I, /obj/item/stock_parts/capacitor))
|
||||
new next_step(user.loc, 1)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/glasswork/glass_base/laserpointer_shell_1
|
||||
name = "Laser pointer assembly"
|
||||
desc = "Good for selling or crafting, by itself its useless. Needs a glass lens."
|
||||
icon_state = "laser_wire"
|
||||
icon_state = "laser_case"
|
||||
next_step = /obj/item/glasswork/glass_base/laserpointer_shell_2
|
||||
|
||||
/obj/item/glasswork/glass_base/laserpointer_shell_1/attackby(obj/item/I, mob/user, params)
|
||||
..()
|
||||
if(istype(I, /obj/item/glasswork/glass_base/lens))
|
||||
new next_step(user.loc, 1)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/glasswork/glass_base/laserpointer_shell_2
|
||||
name = "Laser pointer assembly"
|
||||
desc = "Good for selling or crafting, by itself its useless. Needs to be screwed together."
|
||||
icon_state = "laser_wire"
|
||||
icon_state = "laser_case"
|
||||
next_step = /obj/item/laser_pointer/blue/handmade
|
||||
|
||||
/obj/item/glasswork/glass_base/laserpointer_shell_2/attackby(obj/item/I, mob/user, params)
|
||||
..()
|
||||
if(I.tool_behaviour == TOOL_SCREWDRIVER)
|
||||
if(do_after(user,260, target = src))
|
||||
new next_step(user.loc, 1)
|
||||
qdel(src)
|
||||
|
||||
//NERD SHIT - 5000
|
||||
|
||||
/obj/item/glasswork/glass_base/glasses_frame
|
||||
name = "Glasses Frame"
|
||||
desc = "Good for crafting a pare of glasses, by itself its useless. Just add a pare of lens."
|
||||
icon = 'icons/obj/glass_ware.dmi'
|
||||
icon_state = "frames"
|
||||
next_step = /obj/item/glasswork/glass_base/glasses_frame_1
|
||||
|
||||
/obj/item/glasswork/glass_base/glasses_frame/attackby(obj/item/I, mob/user, params)
|
||||
..()
|
||||
if(istype(I, /obj/item/glasswork/glass_base/lens))
|
||||
if(do_after(user,60, target = src))
|
||||
new next_step(user.loc, 1)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/glasswork/glass_base/glasses_frame_1
|
||||
name = "Glasses Frame"
|
||||
desc = "Good for crafting a pare of glasses, by itself its useless. Just add a the other lens."
|
||||
icon = 'icons/obj/glass_ware.dmi'
|
||||
icon_state = "frames_1"
|
||||
next_step = /obj/item/glasswork/glass_base/glasses_frame_2
|
||||
|
||||
/obj/item/glasswork/glass_base/glasses_frame_1/attackby(obj/item/I, mob/user, params)
|
||||
..()
|
||||
if(istype(I, /obj/item/glasswork/glass_base/lens))
|
||||
if(do_after(user,60, target = src))
|
||||
new next_step(user.loc, 1)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/glasswork/glass_base/glasses_frame_2
|
||||
name = "Glasses Frame"
|
||||
desc = "Good for crafting a pare of glasses, by itself its useless. Just adjust the pices into the frame with a screwdriver."
|
||||
icon = 'icons/obj/glass_ware.dmi'
|
||||
icon_state = "frames_2"
|
||||
next_step = /obj/item/glasswork/glasses
|
||||
|
||||
/obj/item/glasswork/glass_base/glasses_frame_2/attackby(obj/item/I, mob/user, params)
|
||||
..()
|
||||
if(I.tool_behaviour == TOOL_SCREWDRIVER)
|
||||
if(do_after(user,180, target = src))
|
||||
new next_step(user.loc, 1)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/glasswork/glasses
|
||||
name = "Hand Made Glasses"
|
||||
desc = "Hande made glasses that have not been polished at all making them useless. Selling them could still be worth a bit of credits."
|
||||
icon = 'icons/obj/glass_ware.dmi'
|
||||
icon_state = "frames_2"
|
||||
@@ -33,6 +33,37 @@
|
||||
/obj/item/organ/ears/cat = 1)
|
||||
category = CAT_CLOTHING
|
||||
|
||||
/datum/crafting_recipe/papermask
|
||||
name = "Paper Mask"
|
||||
result = /obj/item/clothing/mask/paper
|
||||
time = 10
|
||||
reqs = list(/obj/item/paper = 20)
|
||||
category = CAT_CLOTHING
|
||||
|
||||
/datum/crafting_recipe/armwraps
|
||||
name = "armwraps"
|
||||
result = /obj/item/clothing/gloves/fingerless/pugilist
|
||||
time = 60
|
||||
tools = list(TOOL_WIRECUTTER)
|
||||
reqs = list(/obj/item/stack/sheet/cloth = 4,
|
||||
/obj/item/stack/sheet/silk = 2,
|
||||
/obj/item/stack/sheet/leather = 2)
|
||||
category = CAT_CLOTHING
|
||||
|
||||
/datum/crafting_recipe/armwrapsplusone
|
||||
name = "armwraps of mighty fists"
|
||||
result = /obj/item/clothing/gloves/fingerless/pugilist/magic
|
||||
time = 300
|
||||
tools = list(TOOL_WIRECUTTER, /obj/item/book/codex_gigas, /obj/item/clothing/head/wizard, /obj/item/clothing/suit/wizrobe)
|
||||
reqs = list(/obj/item/stack/sheet/cloth = 2,
|
||||
/obj/item/stack/sheet/leather = 2,
|
||||
/obj/item/stack/sheet/durathread = 2,
|
||||
/datum/reagent/consumable/ethanol/sake = 100,
|
||||
/datum/reagent/consumable/ethanol/wizz_fizz = 100,
|
||||
/obj/item/stack/sheet/sinew = 1,
|
||||
/obj/item/stack/sheet/mineral/gold = 50)
|
||||
category = CAT_CLOTHING
|
||||
|
||||
////////
|
||||
//Huds//
|
||||
////////
|
||||
@@ -287,3 +318,12 @@
|
||||
/obj/item/bedsheet/cosmos = 1)
|
||||
time = 60
|
||||
category = CAT_CLOTHING
|
||||
|
||||
|
||||
/datum/crafting_recipe/garlic_necklace
|
||||
name = "Garlic Necklace"
|
||||
result = /obj/item/clothing/neck/garlic_necklace
|
||||
reqs = list(/obj/item/reagent_containers/food/snacks/grown/garlic = 15,
|
||||
/obj/item/stack/cable_coil = 10)
|
||||
time = 100 //Takes awhile to put all the garlics on the coil and knot it.
|
||||
category = CAT_CLOTHING
|
||||
|
||||
@@ -298,7 +298,7 @@
|
||||
subcategory = CAT_AMMO
|
||||
|
||||
/datum/crafting_recipe/ashen_arrow
|
||||
name = "Fire Hardened Arrow"
|
||||
name = "Ashen Arrow"
|
||||
result = /obj/item/ammo_casing/caseless/arrow/ash
|
||||
tools = list(TOOL_WELDER)
|
||||
time = 30
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
//This component applies a customizable drop_shadow filter to its wearer when they toggle combat mode on or off. This can stack.
|
||||
|
||||
/datum/component/wearertargeting/phantomthief
|
||||
dupe_mode = COMPONENT_DUPE_UNIQUE_PASSARGS
|
||||
signals = list(COMSIG_LIVING_COMBAT_ENABLED)
|
||||
dupe_mode = COMPONENT_DUPE_ALLOWED
|
||||
signals = list(COMSIG_LIVING_COMBAT_ENABLED, COMSIG_LIVING_COMBAT_DISABLED)
|
||||
proctype = .proc/handlefilterstuff
|
||||
var/filter_x
|
||||
var/filter_y
|
||||
@@ -19,8 +19,8 @@
|
||||
filter_color = _color
|
||||
valid_slots = _valid_slots
|
||||
|
||||
/datum/component/wearertargeting/phantomthief/proc/handlefilterstuff(datum/source, mob/user, combatmodestate)
|
||||
if(!combatmodestate)
|
||||
/datum/component/wearertargeting/phantomthief/proc/handlefilterstuff(mob/living/user, was_forced = FALSE)
|
||||
if(!(user.combat_flags & COMBAT_FLAG_COMBAT_ACTIVE))
|
||||
user.remove_filter("phantomthief")
|
||||
else
|
||||
user.add_filter("phantomthief", 4, list(type = "drop_shadow", x = filter_x, y = filter_y, size = filter_size, color = filter_color))
|
||||
|
||||
@@ -25,7 +25,6 @@
|
||||
RegisterSignal(parent, COMSIG_ITEM_ATTACK_OBJ, .proc/rad_attack)
|
||||
else
|
||||
CRASH("Something that wasn't an atom was given /datum/component/radioactive")
|
||||
return
|
||||
|
||||
if(strength > RAD_MINIMUM_CONTAMINATION)
|
||||
SSradiation.warn(src)
|
||||
@@ -84,4 +83,4 @@
|
||||
#undef RAD_AMOUNT_LOW
|
||||
#undef RAD_AMOUNT_MEDIUM
|
||||
#undef RAD_AMOUNT_HIGH
|
||||
#undef RAD_AMOUNT_EXTREME
|
||||
#undef RAD_AMOUNT_EXTREME
|
||||
|
||||
@@ -66,6 +66,9 @@
|
||||
var/atom/movable/AM = parent
|
||||
AM.unbuckle_mob(M)
|
||||
|
||||
/datum/component/riding/proc/additional_offset_checks()
|
||||
return TRUE
|
||||
|
||||
/datum/component/riding/proc/handle_vehicle_offsets()
|
||||
var/atom/movable/AM = parent
|
||||
var/AM_dir = "[AM.dir]"
|
||||
@@ -77,16 +80,17 @@
|
||||
var/list/offsets = get_offsets(passindex)
|
||||
var/rider_dir = get_rider_dir(passindex)
|
||||
buckled_mob.setDir(rider_dir)
|
||||
dir_loop:
|
||||
for(var/offsetdir in offsets)
|
||||
if(offsetdir == AM_dir)
|
||||
var/list/diroffsets = offsets[offsetdir]
|
||||
buckled_mob.pixel_x = diroffsets[1]
|
||||
if(diroffsets.len >= 2)
|
||||
buckled_mob.pixel_y = diroffsets[2]
|
||||
if(diroffsets.len == 3)
|
||||
buckled_mob.layer = diroffsets[3]
|
||||
break dir_loop
|
||||
for(var/offsetdir in offsets)
|
||||
if(offsetdir == AM_dir)
|
||||
var/list/diroffsets = offsets[offsetdir]
|
||||
buckled_mob.pixel_x = diroffsets[1]
|
||||
if(diroffsets.len >= 2)
|
||||
buckled_mob.pixel_y = diroffsets[2]
|
||||
if(diroffsets.len == 3)
|
||||
buckled_mob.layer = diroffsets[3]
|
||||
break
|
||||
if (!additional_offset_checks())
|
||||
return
|
||||
var/list/static/default_vehicle_pixel_offsets = list(TEXT_NORTH = list(0, 0), TEXT_SOUTH = list(0, 0), TEXT_EAST = list(0, 0), TEXT_WEST = list(0, 0))
|
||||
var/px = default_vehicle_pixel_offsets[AM_dir]
|
||||
var/py = default_vehicle_pixel_offsets[AM_dir]
|
||||
@@ -147,7 +151,6 @@
|
||||
if(user.incapacitated())
|
||||
Unbuckle(user)
|
||||
return
|
||||
|
||||
if(world.time < last_vehicle_move + ((last_move_diagonal? 2 : 1) * vehicle_move_delay))
|
||||
return
|
||||
last_vehicle_move = world.time
|
||||
@@ -169,8 +172,8 @@
|
||||
else
|
||||
last_move_diagonal = FALSE
|
||||
|
||||
handle_vehicle_layer()
|
||||
handle_vehicle_offsets()
|
||||
handle_vehicle_layer()
|
||||
else
|
||||
to_chat(user, "<span class='notice'>You'll need the keys in one of your hands to [drive_verb] [AM].</span>")
|
||||
|
||||
@@ -220,6 +223,7 @@
|
||||
force_dismount(target)
|
||||
|
||||
/datum/component/riding/human/handle_vehicle_layer()
|
||||
. = ..()
|
||||
var/atom/movable/AM = parent
|
||||
if(AM.buckled_mobs && AM.buckled_mobs.len)
|
||||
for(var/mob/M in AM.buckled_mobs) //ensure proper layering of piggyback and carry, sometimes weird offsets get applied
|
||||
@@ -244,6 +248,10 @@
|
||||
else
|
||||
return list(TEXT_NORTH = list(0, 6), TEXT_SOUTH = list(0, 6), TEXT_EAST = list(-6, 4), TEXT_WEST = list( 6, 4))
|
||||
|
||||
/datum/component/riding/human/additional_offset_checks()
|
||||
var/mob/living/carbon/human/H = parent
|
||||
return !H.buckled
|
||||
|
||||
/datum/component/riding/human/force_dismount(mob/living/user)
|
||||
var/atom/movable/AM = parent
|
||||
AM.unbuckle_mob(user)
|
||||
|
||||
@@ -60,7 +60,7 @@
|
||||
_contents_limbo = null
|
||||
if(_user_limbo)
|
||||
for(var/i in _user_limbo)
|
||||
show_to(i)
|
||||
ui_show(i)
|
||||
_user_limbo = null
|
||||
|
||||
/datum/component/storage/concrete/_insert_physical_item(obj/item/I, override = FALSE)
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
return
|
||||
. = COMPONENT_NO_ATTACK_HAND
|
||||
if(!check_locked(source, user, TRUE))
|
||||
show_to(user)
|
||||
ui_show(user)
|
||||
A.do_jiggle()
|
||||
if(rustle_sound)
|
||||
playsound(A, "rustle", 50, 1, -5)
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
allow_quick_gather = TRUE
|
||||
allow_quick_empty = TRUE
|
||||
click_gather = TRUE
|
||||
storage_flags = STORAGE_FLAGS_LEGACY_DEFAULT
|
||||
max_w_class = WEIGHT_CLASS_NORMAL
|
||||
max_combined_w_class = 100
|
||||
max_items = 100
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
//Stack-only storage.
|
||||
/datum/component/storage/concrete/stack
|
||||
display_numerical_stacking = TRUE
|
||||
storage_flags = STORAGE_FLAGS_LEGACY_DEFAULT
|
||||
var/max_combined_stack_amount = 300
|
||||
max_w_class = WEIGHT_CLASS_NORMAL
|
||||
max_combined_w_class = WEIGHT_CLASS_NORMAL * 14
|
||||
|
||||
@@ -21,9 +21,16 @@
|
||||
|
||||
var/locked = FALSE //when locked nothing can see inside or use it.
|
||||
|
||||
var/max_w_class = WEIGHT_CLASS_SMALL //max size of objects that will fit.
|
||||
var/max_combined_w_class = 14 //max combined sizes of objects that will fit.
|
||||
var/max_items = 7 //max number of objects that will fit.
|
||||
/// Storage flags, including what kinds of limiters we use for how many items we can hold
|
||||
var/storage_flags = STORAGE_FLAGS_LEGACY_DEFAULT
|
||||
/// Max w_class we can hold. Applies to [STORAGE_LIMIT_COMBINED_W_CLASS] and [STORAGE_LIMIT_VOLUME]
|
||||
var/max_w_class = WEIGHT_CLASS_SMALL
|
||||
/// Max combined w_class. Applies to [STORAGE_LIMIT_COMBINED_W_CLASS]
|
||||
var/max_combined_w_class = WEIGHT_CLASS_SMALL * 7
|
||||
/// Max items we can hold. Applies to [STORAGE_LIMIT_MAX_ITEMS]
|
||||
var/max_items = 7
|
||||
/// Max volume we can hold. Applies to [STORAGE_LIMIT_VOLUME]. Auto scaled on New() if unset.
|
||||
var/max_volume
|
||||
|
||||
var/emp_shielded = FALSE
|
||||
|
||||
@@ -39,8 +46,17 @@
|
||||
|
||||
var/display_numerical_stacking = FALSE //stack things of the same type and show as a single object with a number.
|
||||
|
||||
var/obj/screen/storage/boxes //storage display object
|
||||
var/obj/screen/close/closer //close button object
|
||||
/// "legacy"/default view mode's storage "boxes"
|
||||
var/obj/screen/storage/boxes/ui_boxes
|
||||
/// New volumetric storage display mode's left side
|
||||
var/obj/screen/storage/left/ui_left
|
||||
/// New volumetric storage display mode's center 'blocks'
|
||||
var/obj/screen/storage/continuous/ui_continuous
|
||||
/// The close button, used in all modes. Frames right side in volumetric mode.
|
||||
var/obj/screen/storage/close/ui_close
|
||||
/// Associative list of list(item = screen object) for volumetric storage item screen blocks
|
||||
var/list/ui_item_blocks
|
||||
|
||||
var/current_maxscreensize
|
||||
|
||||
var/allow_big_nesting = FALSE //allow storage objects of the same or greater size.
|
||||
@@ -68,9 +84,6 @@
|
||||
return COMPONENT_INCOMPATIBLE
|
||||
if(master)
|
||||
change_master(master)
|
||||
boxes = new(null, src)
|
||||
closer = new(null, src)
|
||||
orient2hud()
|
||||
|
||||
RegisterSignal(parent, COMSIG_CONTAINS_STORAGE, .proc/on_check)
|
||||
RegisterSignal(parent, COMSIG_IS_STORAGE_LOCKED, .proc/check_locked)
|
||||
@@ -111,8 +124,15 @@
|
||||
|
||||
/datum/component/storage/Destroy()
|
||||
close_all()
|
||||
QDEL_NULL(boxes)
|
||||
QDEL_NULL(closer)
|
||||
QDEL_NULL(ui_boxes)
|
||||
QDEL_NULL(ui_close)
|
||||
QDEL_NULL(ui_continuous)
|
||||
QDEL_NULL(ui_left)
|
||||
// DO NOT USE QDEL_LIST_ASSOC.
|
||||
if(ui_item_blocks)
|
||||
for(var/i in ui_item_blocks)
|
||||
qdel(ui_item_blocks[i]) //qdel the screen object not the item
|
||||
ui_item_blocks.Cut()
|
||||
LAZYCLEARLIST(is_using)
|
||||
return ..()
|
||||
|
||||
@@ -286,7 +306,7 @@
|
||||
if(!_target)
|
||||
_target = get_turf(parent)
|
||||
if(usr)
|
||||
hide_from(usr)
|
||||
ui_hide(usr)
|
||||
var/list/contents = contents()
|
||||
var/atom/real_location = real_location()
|
||||
for(var/obj/item/I in contents)
|
||||
@@ -300,106 +320,8 @@
|
||||
if(check_locked())
|
||||
close_all()
|
||||
|
||||
/datum/component/storage/proc/_process_numerical_display()
|
||||
. = list()
|
||||
for(var/obj/item/I in accessible_items())
|
||||
if(QDELETED(I))
|
||||
continue
|
||||
if(!.[I.type])
|
||||
.[I.type] = new /datum/numbered_display(I, 1)
|
||||
else
|
||||
var/datum/numbered_display/ND = .[I.type]
|
||||
ND.number++
|
||||
. = sortTim(., /proc/cmp_numbered_displays_name_asc, associative = TRUE)
|
||||
|
||||
//This proc determines the size of the inventory to be displayed. Please touch it only if you know what you're doing.
|
||||
/datum/component/storage/proc/orient2hud(mob/user, maxcolumns)
|
||||
var/list/accessible_contents = accessible_items()
|
||||
var/adjusted_contents = length(accessible_contents)
|
||||
|
||||
//Numbered contents display
|
||||
var/list/datum/numbered_display/numbered_contents
|
||||
if(display_numerical_stacking)
|
||||
numbered_contents = _process_numerical_display()
|
||||
adjusted_contents = numbered_contents.len
|
||||
|
||||
var/columns = CLAMP(max_items, 1, maxcolumns ? maxcolumns : screen_max_columns)
|
||||
var/rows = CLAMP(CEILING(adjusted_contents / columns, 1), 1, screen_max_rows)
|
||||
standard_orient_objs(rows, columns, numbered_contents)
|
||||
|
||||
//This proc draws out the inventory and places the items on it. It uses the standard position.
|
||||
/datum/component/storage/proc/standard_orient_objs(rows, cols, list/obj/item/numerical_display_contents)
|
||||
boxes.screen_loc = "[screen_start_x]:[screen_pixel_x],[screen_start_y]:[screen_pixel_y] to [screen_start_x+cols-1]:[screen_pixel_x],[screen_start_y+rows-1]:[screen_pixel_y]"
|
||||
var/cx = screen_start_x
|
||||
var/cy = screen_start_y
|
||||
if(islist(numerical_display_contents))
|
||||
for(var/type in numerical_display_contents)
|
||||
var/datum/numbered_display/ND = numerical_display_contents[type]
|
||||
ND.sample_object.mouse_opacity = MOUSE_OPACITY_OPAQUE
|
||||
ND.sample_object.screen_loc = "[cx]:[screen_pixel_x],[cy]:[screen_pixel_y]"
|
||||
ND.sample_object.maptext = "<font color='white'>[(ND.number > 1)? "[ND.number]" : ""]</font>"
|
||||
ND.sample_object.layer = ABOVE_HUD_LAYER
|
||||
ND.sample_object.plane = ABOVE_HUD_PLANE
|
||||
cx++
|
||||
if(cx - screen_start_x >= cols)
|
||||
cx = screen_start_x
|
||||
cy++
|
||||
if(cy - screen_start_y >= rows)
|
||||
break
|
||||
else
|
||||
for(var/obj/O in accessible_items())
|
||||
if(QDELETED(O))
|
||||
continue
|
||||
O.mouse_opacity = MOUSE_OPACITY_OPAQUE //This is here so storage items that spawn with contents correctly have the "click around item to equip"
|
||||
O.screen_loc = "[cx]:[screen_pixel_x],[cy]:[screen_pixel_y]"
|
||||
O.maptext = ""
|
||||
O.layer = ABOVE_HUD_LAYER
|
||||
O.plane = ABOVE_HUD_PLANE
|
||||
cx++
|
||||
if(cx - screen_start_x >= cols)
|
||||
cx = screen_start_x
|
||||
cy++
|
||||
if(cy - screen_start_y >= rows)
|
||||
break
|
||||
closer.screen_loc = "[screen_start_x + cols]:[screen_pixel_x],[screen_start_y]:[screen_pixel_y]"
|
||||
|
||||
/datum/component/storage/proc/show_to(mob/M, set_screen_size = TRUE)
|
||||
if(!M.client)
|
||||
return FALSE
|
||||
var/list/cview = getviewsize(M.client.view)
|
||||
var/maxallowedscreensize = cview[1]-8
|
||||
if(set_screen_size)
|
||||
current_maxscreensize = maxallowedscreensize
|
||||
else if(current_maxscreensize)
|
||||
maxallowedscreensize = current_maxscreensize
|
||||
if(M.active_storage != src && (M.stat == CONSCIOUS))
|
||||
for(var/obj/item/I in accessible_items())
|
||||
if(I.on_found(M))
|
||||
return FALSE
|
||||
if(M.active_storage)
|
||||
M.active_storage.hide_from(M)
|
||||
orient2hud(M, (isliving(M) ? maxallowedscreensize : 7))
|
||||
M.client.screen |= boxes
|
||||
M.client.screen |= closer
|
||||
M.client.screen |= accessible_items()
|
||||
M.active_storage = src
|
||||
LAZYOR(is_using, M)
|
||||
return TRUE
|
||||
|
||||
/datum/component/storage/proc/hide_from(mob/M)
|
||||
if(!M.client)
|
||||
return TRUE
|
||||
var/atom/real_location = real_location()
|
||||
M.client.screen -= boxes
|
||||
M.client.screen -= closer
|
||||
M.client.screen -= real_location.contents
|
||||
if(M.active_storage == src)
|
||||
M.active_storage = null
|
||||
LAZYREMOVE(is_using, M)
|
||||
return TRUE
|
||||
|
||||
/datum/component/storage/proc/close(mob/M)
|
||||
hide_from(M)
|
||||
ui_hide(M)
|
||||
|
||||
/datum/component/storage/proc/close_all()
|
||||
. = FALSE
|
||||
@@ -418,25 +340,6 @@
|
||||
var/datum/component/storage/concrete/master = master()
|
||||
master.emp_act(source, severity)
|
||||
|
||||
//This proc draws out the inventory and places the items on it. tx and ty are the upper left tile and mx, my are the bottm right.
|
||||
//The numbers are calculated from the bottom-left The bottom-left slot being 1,1.
|
||||
/datum/component/storage/proc/orient_objs(tx, ty, mx, my)
|
||||
var/atom/real_location = real_location()
|
||||
var/cx = tx
|
||||
var/cy = ty
|
||||
boxes.screen_loc = "[tx]:,[ty] to [mx],[my]"
|
||||
for(var/obj/O in real_location)
|
||||
if(QDELETED(O))
|
||||
continue
|
||||
O.screen_loc = "[cx],[cy]"
|
||||
O.layer = ABOVE_HUD_LAYER
|
||||
O.plane = ABOVE_HUD_PLANE
|
||||
cx++
|
||||
if(cx > mx)
|
||||
cx = tx
|
||||
cy--
|
||||
closer.screen_loc = "[mx+1],[my]"
|
||||
|
||||
//Resets something that is being removed from storage.
|
||||
/datum/component/storage/proc/_removal_reset(atom/movable/thing)
|
||||
if(!istype(thing))
|
||||
@@ -448,6 +351,9 @@
|
||||
|
||||
/datum/component/storage/proc/_remove_and_refresh(datum/source, atom/movable/thing)
|
||||
_removal_reset(thing)
|
||||
if(LAZYACCESS(ui_item_blocks, thing))
|
||||
qdel(ui_item_blocks[thing])
|
||||
ui_item_blocks -= thing
|
||||
refresh_mob_views()
|
||||
|
||||
//Call this proc to handle the removal of an item from the storage item. The item will be moved to the new_location target, if that is null it's being deleted
|
||||
@@ -462,7 +368,7 @@
|
||||
/datum/component/storage/proc/refresh_mob_views()
|
||||
var/list/seeing = can_see_contents()
|
||||
for(var/i in seeing)
|
||||
show_to(i)
|
||||
ui_show(i)
|
||||
return TRUE
|
||||
|
||||
/datum/component/storage/proc/can_see_contents()
|
||||
@@ -559,7 +465,7 @@
|
||||
A.add_fingerprint(M)
|
||||
if(!force && (check_locked(null, M) || !M.CanReach(parent, view_only = TRUE)))
|
||||
return FALSE
|
||||
show_to(M, !ghost)
|
||||
ui_show(M, !ghost)
|
||||
|
||||
/datum/component/storage/proc/mousedrop_receive(datum/source, atom/movable/O, mob/M)
|
||||
if(isitem(O))
|
||||
@@ -587,10 +493,6 @@
|
||||
if(M && !stop_messages)
|
||||
host.add_fingerprint(M)
|
||||
return FALSE
|
||||
if(real_location.contents.len >= max_items)
|
||||
if(!stop_messages)
|
||||
to_chat(M, "<span class='warning'>[host] is full, make some space!</span>")
|
||||
return FALSE //Storage item is full
|
||||
if(length(can_hold))
|
||||
if(!is_type_in_typecache(I, can_hold))
|
||||
if(!stop_messages)
|
||||
@@ -600,17 +502,34 @@
|
||||
if(!stop_messages)
|
||||
to_chat(M, "<span class='warning'>[host] cannot hold [I]!</span>")
|
||||
return FALSE
|
||||
if(I.w_class > max_w_class)
|
||||
if(!stop_messages)
|
||||
to_chat(M, "<span class='warning'>[I] is too big for [host]!</span>")
|
||||
return FALSE
|
||||
var/sum_w_class = I.w_class
|
||||
for(var/obj/item/_I in real_location)
|
||||
sum_w_class += _I.w_class //Adds up the combined w_classes which will be in the storage item if the item is added to it.
|
||||
if(sum_w_class > max_combined_w_class)
|
||||
if(!stop_messages)
|
||||
to_chat(M, "<span class='warning'>[I] won't fit in [host], make some space!</span>")
|
||||
return FALSE
|
||||
// STORAGE LIMITS
|
||||
if(storage_flags & STORAGE_LIMIT_MAX_ITEMS)
|
||||
if(real_location.contents.len >= max_items)
|
||||
if(!stop_messages)
|
||||
to_chat(M, "<span class='warning'>[host] has too many things in it, make some space!</span>")
|
||||
return FALSE //Storage item is full
|
||||
if(storage_flags & STORAGE_LIMIT_MAX_W_CLASS)
|
||||
if(I.w_class > max_w_class)
|
||||
if(!stop_messages)
|
||||
to_chat(M, "<span class='warning'>[I] is too long for [host]!</span>")
|
||||
return FALSE
|
||||
if(storage_flags & STORAGE_LIMIT_COMBINED_W_CLASS)
|
||||
var/sum_w_class = I.w_class
|
||||
for(var/obj/item/_I in real_location)
|
||||
sum_w_class += _I.w_class //Adds up the combined w_classes which will be in the storage item if the item is added to it.
|
||||
if(sum_w_class > max_combined_w_class)
|
||||
if(!stop_messages)
|
||||
to_chat(M, "<span class='warning'>[I] won't fit in [host], make some space!</span>")
|
||||
return FALSE
|
||||
if(storage_flags & STORAGE_LIMIT_VOLUME)
|
||||
var/sum_volume = I.get_w_volume()
|
||||
for(var/obj/item/_I in real_location)
|
||||
sum_volume += _I.get_w_volume()
|
||||
if(sum_volume > get_max_volume())
|
||||
if(!stop_messages)
|
||||
to_chat(M, "<span class='warning'>[I] is too spacious to fit in [host], make some space!</span>")
|
||||
return FALSE
|
||||
/////////////////
|
||||
if(isitem(host))
|
||||
var/obj/item/IP = host
|
||||
var/datum/component/storage/STR_I = I.GetComponent(/datum/component/storage)
|
||||
@@ -742,7 +661,7 @@
|
||||
if(A.loc == user)
|
||||
. = COMPONENT_NO_ATTACK_HAND
|
||||
if(!check_locked(source, user, TRUE))
|
||||
show_to(user)
|
||||
ui_show(user)
|
||||
A.do_jiggle()
|
||||
|
||||
/datum/component/storage/proc/signal_on_pickup(datum/source, mob/user)
|
||||
@@ -761,7 +680,7 @@
|
||||
return do_quick_empty(loctarget)
|
||||
|
||||
/datum/component/storage/proc/signal_hide_attempt(datum/source, mob/target)
|
||||
return hide_from(target)
|
||||
return ui_hide(target)
|
||||
|
||||
/datum/component/storage/proc/on_alt_click(datum/source, mob/user)
|
||||
if(!isliving(user) || !user.CanReach(parent))
|
||||
@@ -790,7 +709,7 @@
|
||||
user.visible_message("<span class='warning'>[user] draws [I] from [parent]!</span>", "<span class='notice'>You draw [I] from [parent].</span>")
|
||||
return TRUE
|
||||
|
||||
/datum/component/storage/proc/action_trigger(datum/signal_source, datum/action/source)
|
||||
/datum/component/storage/proc/action_trigger(datum/action/source, obj/target)
|
||||
gather_mode_switch(source.owner)
|
||||
return COMPONENT_ACTION_BLOCK_TRIGGER
|
||||
|
||||
@@ -803,3 +722,9 @@
|
||||
to_chat(user, "[parent] now picks up all items in a tile at once.")
|
||||
if(COLLECT_ONE)
|
||||
to_chat(user, "[parent] now picks up one item at a time.")
|
||||
|
||||
/**
|
||||
* Gets our max volume
|
||||
*/
|
||||
/datum/component/storage/proc/get_max_volume()
|
||||
return max_volume || AUTO_SCALE_STORAGE_VOLUME(max_w_class, max_combined_w_class)
|
||||
|
||||
@@ -0,0 +1,293 @@
|
||||
/**
|
||||
* Generates a list of numbered_display datums for the numerical display system.
|
||||
*/
|
||||
/datum/component/storage/proc/_process_numerical_display()
|
||||
. = list()
|
||||
for(var/obj/item/I in accessible_items())
|
||||
if(QDELETED(I))
|
||||
continue
|
||||
if(!.[I.type])
|
||||
.[I.type] = new /datum/numbered_display(I, 1)
|
||||
else
|
||||
var/datum/numbered_display/ND = .[I.type]
|
||||
ND.number++
|
||||
. = sortTim(., /proc/cmp_numbered_displays_name_asc, associative = TRUE)
|
||||
|
||||
/**
|
||||
* Orients all objects in legacy mode, and returns the objects to show to the user.
|
||||
*/
|
||||
/datum/component/storage/proc/orient2hud_legacy(mob/user, maxcolumns)
|
||||
. = list()
|
||||
var/list/accessible_contents = accessible_items()
|
||||
var/adjusted_contents = length(accessible_contents)
|
||||
|
||||
//Numbered contents display
|
||||
var/list/datum/numbered_display/numbered_contents
|
||||
if(display_numerical_stacking)
|
||||
numbered_contents = _process_numerical_display()
|
||||
adjusted_contents = numbered_contents.len
|
||||
|
||||
var/columns = CLAMP(max_items, 1, maxcolumns ? maxcolumns : screen_max_columns)
|
||||
var/rows = CLAMP(CEILING(adjusted_contents / columns, 1), 1, screen_max_rows)
|
||||
|
||||
// First, boxes.
|
||||
ui_boxes = get_ui_boxes()
|
||||
ui_boxes.screen_loc = "[screen_start_x]:[screen_pixel_x],[screen_start_y]:[screen_pixel_y] to [screen_start_x+columns-1]:[screen_pixel_x],[screen_start_y+rows-1]:[screen_pixel_y]"
|
||||
. += ui_boxes
|
||||
// Then, closer.
|
||||
ui_close = get_ui_close()
|
||||
ui_close.screen_loc = "[screen_start_x + columns]:[screen_pixel_x],[screen_start_y]:[screen_pixel_y]"
|
||||
. += ui_close
|
||||
// Then orient the actual items.
|
||||
var/cx = screen_start_x
|
||||
var/cy = screen_start_y
|
||||
if(islist(numbered_contents))
|
||||
for(var/type in numbered_contents)
|
||||
var/datum/numbered_display/ND = numbered_contents[type]
|
||||
ND.sample_object.mouse_opacity = MOUSE_OPACITY_OPAQUE
|
||||
ND.sample_object.screen_loc = "[cx]:[screen_pixel_x],[cy]:[screen_pixel_y]"
|
||||
ND.sample_object.maptext = "<font color='white'>[(ND.number > 1)? "[ND.number]" : ""]</font>"
|
||||
ND.sample_object.layer = ABOVE_HUD_LAYER
|
||||
ND.sample_object.plane = ABOVE_HUD_PLANE
|
||||
. += ND.sample_object
|
||||
cx++
|
||||
if(cx - screen_start_x >= columns)
|
||||
cx = screen_start_x
|
||||
cy++
|
||||
if(cy - screen_start_y >= rows)
|
||||
break
|
||||
else
|
||||
for(var/obj/O in accessible_items())
|
||||
if(QDELETED(O))
|
||||
continue
|
||||
O.mouse_opacity = MOUSE_OPACITY_OPAQUE //This is here so storage items that spawn with contents correctly have the "click around item to equip"
|
||||
O.screen_loc = "[cx]:[screen_pixel_x],[cy]:[screen_pixel_y]"
|
||||
O.maptext = ""
|
||||
O.layer = ABOVE_HUD_LAYER
|
||||
O.plane = ABOVE_HUD_PLANE
|
||||
. += O
|
||||
cx++
|
||||
if(cx - screen_start_x >= columns)
|
||||
cx = screen_start_x
|
||||
cy++
|
||||
if(cy - screen_start_y >= rows)
|
||||
break
|
||||
|
||||
/**
|
||||
* Orients all objects in .. volumetric mode. Does not support numerical display!
|
||||
*/
|
||||
/datum/component/storage/proc/orient2hud_volumetric(mob/user, maxcolumns)
|
||||
. = list()
|
||||
|
||||
// Generate ui_item_blocks for missing ones and render+orient.
|
||||
var/list/atom/contents = accessible_items()
|
||||
// our volume
|
||||
var/our_volume = get_max_volume()
|
||||
var/horizontal_pixels = (maxcolumns * world.icon_size) - (VOLUMETRIC_STORAGE_EDGE_PADDING * 2)
|
||||
var/max_horizontal_pixels = horizontal_pixels * screen_max_rows
|
||||
// sigh loopmania time
|
||||
var/used = 0
|
||||
// define outside for performance
|
||||
var/volume
|
||||
var/list/volume_by_item = list()
|
||||
var/list/percentage_by_item = list()
|
||||
for(var/obj/item/I in contents)
|
||||
volume = I.get_w_volume()
|
||||
used += volume
|
||||
volume_by_item[I] = volume
|
||||
percentage_by_item[I] = volume / get_max_volume()
|
||||
var/padding_pixels = ((length(percentage_by_item) - 1) * VOLUMETRIC_STORAGE_ITEM_PADDING) + VOLUMETRIC_STORAGE_EDGE_PADDING * 2
|
||||
var/min_pixels = (MINIMUM_PIXELS_PER_ITEM * length(percentage_by_item)) + padding_pixels
|
||||
// do the check for fallback for when someone has too much gamer gear
|
||||
if((min_pixels) > (max_horizontal_pixels + 4)) // 4 pixel grace zone
|
||||
to_chat(user, "<span class='warning'>[parent] was showed to you in legacy mode due to your items overrunning the three row limit! Consider not carrying too much or bugging a maintainer to raise this limit!</span>")
|
||||
return orient2hud_legacy(user, maxcolumns)
|
||||
// after this point we are sure we can somehow fit all items into our max number of rows.
|
||||
|
||||
// determine rows
|
||||
var/rows = CLAMP(CEILING(min_pixels / horizontal_pixels, 1), 1, screen_max_rows)
|
||||
|
||||
var/overrun = FALSE
|
||||
if(used > our_volume)
|
||||
// congratulations we are now in overrun mode. everything will be crammed to minimum storage pixels.
|
||||
to_chat(user, "<span class='warning'>[parent] rendered in overrun mode due to more items inside than the maximum volume supports.</span>")
|
||||
overrun = TRUE
|
||||
|
||||
// how much we are using
|
||||
var/using_horizontal_pixels = horizontal_pixels * rows
|
||||
|
||||
// item padding
|
||||
using_horizontal_pixels -= padding_pixels
|
||||
|
||||
// define outside for marginal performance boost
|
||||
var/obj/item/I
|
||||
// start at this pixel from screen_start_x.
|
||||
var/current_pixel = VOLUMETRIC_STORAGE_EDGE_PADDING
|
||||
var/row = 1
|
||||
|
||||
LAZYINITLIST(ui_item_blocks)
|
||||
|
||||
for(var/i in percentage_by_item)
|
||||
I = i
|
||||
var/percent = percentage_by_item[I]
|
||||
if(!ui_item_blocks[I])
|
||||
ui_item_blocks[I] = new /obj/screen/storage/volumetric_box/center(null, src, I)
|
||||
var/obj/screen/storage/volumetric_box/center/B = ui_item_blocks[I]
|
||||
var/pixels_to_use = overrun? MINIMUM_PIXELS_PER_ITEM : max(using_horizontal_pixels * percent, MINIMUM_PIXELS_PER_ITEM)
|
||||
var/addrow = FALSE
|
||||
if(CEILING(pixels_to_use, 1) >= FLOOR(horizontal_pixels - current_pixel - VOLUMETRIC_STORAGE_EDGE_PADDING, 1))
|
||||
pixels_to_use = horizontal_pixels - current_pixel - VOLUMETRIC_STORAGE_EDGE_PADDING
|
||||
addrow = TRUE
|
||||
|
||||
// now that we have pixels_to_use, place our thing and add it to the returned list.
|
||||
|
||||
B.screen_loc = I.screen_loc = "[screen_start_x]:[round(current_pixel + (pixels_to_use * 0.5) + VOLUMETRIC_STORAGE_ITEM_PADDING, 1)],[screen_start_y+row-1]:[screen_pixel_y]"
|
||||
// add the used pixels to pixel after we place the object
|
||||
current_pixel += pixels_to_use + VOLUMETRIC_STORAGE_ITEM_PADDING
|
||||
|
||||
// set various things
|
||||
B.set_pixel_size(pixels_to_use)
|
||||
B.layer = VOLUMETRIC_STORAGE_BOX_LAYER
|
||||
B.plane = VOLUMETRIC_STORAGE_BOX_PLANE
|
||||
B.name = I.name
|
||||
|
||||
I.mouse_opacity = MOUSE_OPACITY_ICON
|
||||
I.maptext = ""
|
||||
I.layer = VOLUMETRIC_STORAGE_ITEM_LAYER
|
||||
I.plane = VOLUMETRIC_STORAGE_ITEM_PLANE
|
||||
|
||||
// finally add our things.
|
||||
. += B.on_screen_objects()
|
||||
. += I
|
||||
|
||||
// go up a row if needed
|
||||
if(addrow)
|
||||
row++
|
||||
current_pixel = VOLUMETRIC_STORAGE_EDGE_PADDING
|
||||
|
||||
// Then, continuous section.
|
||||
ui_continuous = get_ui_continuous()
|
||||
ui_continuous.screen_loc = "[screen_start_x]:[screen_pixel_x],[screen_start_y]:[screen_pixel_y] to [screen_start_x+maxcolumns-1]:[screen_pixel_x],[screen_start_y+rows-1]:[screen_pixel_y]"
|
||||
. += ui_continuous
|
||||
// Then, left.
|
||||
ui_left = get_ui_left()
|
||||
ui_left.screen_loc = "[screen_start_x]:[screen_pixel_x - 2],[screen_start_y]:[screen_pixel_y] to [screen_start_x]:[screen_pixel_x - 2],[screen_start_y+rows-1]:[screen_pixel_y]"
|
||||
. += ui_left
|
||||
// Then, closer, which is also our right element.
|
||||
ui_close = get_ui_close()
|
||||
ui_close.screen_loc = "[screen_start_x + maxcolumns]:[screen_pixel_x],[screen_start_y]:[screen_pixel_y] to [screen_start_x + maxcolumns]:[screen_pixel_x],[screen_start_y+rows-1]:[screen_pixel_y]"
|
||||
. += ui_close
|
||||
|
||||
/**
|
||||
* Shows our UI to a mob.
|
||||
*/
|
||||
/datum/component/storage/proc/ui_show(mob/M, set_screen_size = TRUE)
|
||||
if(!M.client)
|
||||
return FALSE
|
||||
var/list/cview = getviewsize(M.client.view)
|
||||
// in tiles
|
||||
var/maxallowedscreensize = cview[1]-8
|
||||
if(set_screen_size)
|
||||
current_maxscreensize = maxallowedscreensize
|
||||
else if(current_maxscreensize)
|
||||
maxallowedscreensize = current_maxscreensize
|
||||
// we got screen size, register signal
|
||||
RegisterSignal(M, COMSIG_MOB_CLIENT_LOGOUT, .proc/on_logout, override = TRUE)
|
||||
if(M.active_storage != src)
|
||||
if(M.active_storage)
|
||||
M.active_storage.ui_hide(M)
|
||||
M.active_storage = src
|
||||
LAZYOR(is_using, M)
|
||||
if(volumetric_ui())
|
||||
//new volumetric ui bay-style
|
||||
M.client.screen |= orient2hud_volumetric(M, maxallowedscreensize)
|
||||
else
|
||||
//old ui
|
||||
M.client.screen |= orient2hud_legacy(M, maxallowedscreensize)
|
||||
return TRUE
|
||||
|
||||
/**
|
||||
* VV hooked to ensure no lingering screen objects.
|
||||
*/
|
||||
/datum/component/storage/vv_edit_var(var_name, var_value)
|
||||
var/list/old
|
||||
if(var_name == NAMEOF(src, storage_flags))
|
||||
old = is_using.Copy()
|
||||
for(var/i in is_using)
|
||||
ui_hide(i)
|
||||
. = ..()
|
||||
if(old)
|
||||
for(var/i in old)
|
||||
ui_show(i)
|
||||
|
||||
/**
|
||||
* Proc triggered by signal to ensure logging out clients don't linger.
|
||||
*/
|
||||
/datum/component/storage/proc/on_logout(datum/source, client/C)
|
||||
ui_hide(source)
|
||||
|
||||
/**
|
||||
* Hides our UI from a mob
|
||||
*/
|
||||
/datum/component/storage/proc/ui_hide(mob/M)
|
||||
if(!M.client)
|
||||
return TRUE
|
||||
UnregisterSignal(M, COMSIG_MOB_CLIENT_LOGOUT)
|
||||
M.client.screen -= list(ui_boxes, ui_close, ui_left, ui_continuous) + get_ui_item_objects_hide()
|
||||
if(M.active_storage == src)
|
||||
M.active_storage = null
|
||||
LAZYREMOVE(is_using, M)
|
||||
return TRUE
|
||||
|
||||
/**
|
||||
* Returns TRUE if we are using volumetric UI instead of box UI
|
||||
*/
|
||||
/datum/component/storage/proc/volumetric_ui()
|
||||
var/atom/real_location = real_location()
|
||||
return (storage_flags & STORAGE_LIMIT_VOLUME) && (length(real_location.contents) <= MAXIMUM_VOLUMETRIC_ITEMS) && !display_numerical_stacking
|
||||
|
||||
/**
|
||||
* Gets the ui item objects to ui_hide.
|
||||
*/
|
||||
/datum/component/storage/proc/get_ui_item_objects_hide()
|
||||
if(!volumetric_ui())
|
||||
var/atom/real_location = real_location()
|
||||
return real_location.contents
|
||||
else
|
||||
. = list()
|
||||
for(var/i in ui_item_blocks)
|
||||
// get both the box and the item
|
||||
. += ui_item_blocks[i]
|
||||
. += i
|
||||
|
||||
/**
|
||||
* Gets our ui_boxes, making it if it doesn't exist.
|
||||
*/
|
||||
/datum/component/storage/proc/get_ui_boxes()
|
||||
if(!ui_boxes)
|
||||
ui_boxes = new(null, src)
|
||||
return ui_boxes
|
||||
|
||||
/**
|
||||
* Gets our ui_left, making it if it doesn't exist.
|
||||
*/
|
||||
/datum/component/storage/proc/get_ui_left()
|
||||
if(!ui_left)
|
||||
ui_left = new(null, src)
|
||||
return ui_left
|
||||
|
||||
/**
|
||||
* Gets our ui_close, making it if it doesn't exist.
|
||||
*/
|
||||
/datum/component/storage/proc/get_ui_close()
|
||||
if(!ui_close)
|
||||
ui_close = new(null, src)
|
||||
return ui_close
|
||||
|
||||
/**
|
||||
* Gets our ui_continuous, making it if it doesn't exist.
|
||||
*/
|
||||
/datum/component/storage/proc/get_ui_continuous()
|
||||
if(!ui_continuous)
|
||||
ui_continuous = new(null, src)
|
||||
return ui_continuous
|
||||
@@ -18,7 +18,7 @@
|
||||
UnregisterSignal(parent, list(COMSIG_ITEM_EQUIPPED, COMSIG_ITEM_DROPPED))
|
||||
unmodify()
|
||||
|
||||
/datum/component/fantasy/Destroy()
|
||||
/datum/component/tactical/Destroy()
|
||||
unmodify()
|
||||
return ..()
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user