Merge pull request #67 from Citadel-Station-13/master

11/14
This commit is contained in:
EmeraldSundisk
2020-11-14 09:23:15 -08:00
committed by GitHub
710 changed files with 44210 additions and 6810 deletions
+6 -3
View File
@@ -1,11 +1,14 @@
[*]
insert_final_newline = true
indent_style = tab
indent_size = 4
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
#end_of_line = lf
[*.yml]
indent_style = space
indent_size = 2
[*.txt]
insert_final_newline = false
[*.py]
indent_style = space
+41 -8
View File
@@ -1,9 +1,42 @@
# merger hooks, run tools/hooks/install.bat or install.sh to set up
*.dmm merge=dmm
*.dmi merge=dmi
# force changelog merging to use union
html/changelog.html merge=union
# force all files to be LF
* text=auto
## Enforce text mode and LF line breaks
## porter note: not yet LFing dm.
# *.bat text eol=lf
*.css text eol=lf
# *.dm text eol=lf
# *.dme text eol=lf
# *.dmf text eol=lf
*.htm text eol=lf
*.html text eol=lf
*.js text eol=lf
*.json text eol=lf
*.jsx text eol=lf
# *.md text eol=lf
*.py text eol=lf
*.scss text eol=lf
# *.sh text eol=lf
# *.sql text eol=lf
*.svg text eol=lf
*.ts text eol=lf
*.tsx text eol=lf
# *.txt text eol=lf
*.yaml text eol=lf
*.yml text eol=lf
## Enforce binary mode
*.bmp binary
*.dll binary
*.dmb binary
*.exe binary
*.gif binary
*.jpg binary
*.png binary
*.so binary
## Merger hooks, run tools/hooks/install.bat or install.sh to set up
*.dmm text eol=lf merge=dmm
*.dmi binary merge=dmi
## Force changelog merging to use union
html/changelog.html text eol=lf merge=union
-36
View File
@@ -1,36 +0,0 @@
name: Autobuild TGUI
on:
push:
branches:
- 'master'
paths:
- 'tgui/**.js'
- 'tgui/**.scss'
jobs:
build:
name: Rebuild TGUI
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v1
with:
fetch-depth: 25
- name: Setup Node
uses: actions/setup-node@v1
with:
node-version: '>=12.13'
- name: Build TGUI
run: bin/tgui --ci
working-directory: ./tgui
- name: Commit Artifacts
run: |
git config --local user.email "action@github.com"
git config --local user.name "TGUI"
git pull origin master
git commit -m "Automatic TGUI Rebuild [ci skip]" -a || true
- name: Push Artifacts
uses: ad-m/github-push-action@master
with:
github_token: ${{ secrets.GITHUB_MASTER_KEY }}
+15
View File
@@ -9,32 +9,47 @@ jobs:
name: "Compile changelogs"
runs-on: ubuntu-latest
steps:
- name: "Check for CHANGELOG_ENABLER secret and pass true to output if it exists to be checked by later steps"
id: value_holder
env:
CHANGELOG_ENABLER: ${{ secrets.CHANGELOG_ENABLER }}
run: |
unset SECRET_EXISTS
if [-n $CHANGELOG_ENABLER]; then SECRET_EXISTS='true' ; fi
echo ::set-output name=CL_ENABLED::${SECRET_EXISTS}
- name: "Setup python"
if: steps.value_holder.outputs.CL_ENABLED
uses: actions/setup-python@v1
with:
python-version: '3.x'
- name: "Install deps"
if: steps.value_holder.outputs.CL_ENABLED
run: |
python -m pip install --upgrade pip
python -m pip install pyyaml
sudo apt-get install dos2unix
- name: "Checkout"
if: steps.value_holder.outputs.CL_ENABLED
uses: actions/checkout@v1
with:
fetch-depth: 25
- name: "Compile"
if: steps.value_holder.outputs.CL_ENABLED
run: |
python tools/ss13_genchangelog.py html/changelog.html html/changelogs
- name: "Convert Lineendings"
if: steps.value_holder.outputs.CL_ENABLED
run: |
unix2dos html/changelogs/.all_changelog.yml
- name: Commit
if: steps.value_holder.outputs.CL_ENABLED
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"
if: steps.value_holder.outputs.CL_ENABLED
uses: ad-m/github-push-action@master
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
+12
View File
@@ -0,0 +1,12 @@
name: "Round ID Linker"
on:
issues:
types: [opened]
jobs:
link_rounds:
runs-on: ubuntu-latest
steps:
- uses: Cidatel-Station-13/round_linker@master #notice: fork the round linkies from tg!!
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
+45
View File
@@ -0,0 +1,45 @@
name: Update TGS DMAPI
on:
schedule:
- cron: "0 0 * * *"
workflow_dispatch:
jobs:
update-dmapi:
runs-on: ubuntu-latest
name: Update the TGS DMAPI
steps:
- name: Clone
uses: actions/checkout@v2
- name: Branch
run: |
git branch -f tgs-dmapi-update
git checkout tgs-dmapi-update
git reset --hard master
- name: Apply DMAPI update
uses: tgstation/tgs-dmapi-updater@v2
with:
header-path: 'code/__DEFINES/tgs.dm'
library-path: 'code/modules/tgs'
- name: Commit and Push
run: |
git config user.name tgstation-server
git config user.email tgstation-server@users.noreply.github.com
git add .
git commit -m 'Update TGS DMAPI'
git push -f -u origin tgs-dmapi-update
- name: Create Pull Request
uses: repo-sync/pull-request@v2
with:
source_branch: "tgs-dmapi-update"
destination_branch: "master"
pr_title: "Automatic TGS DMAPI Update"
pr_body: "This pull request updates the TGS DMAPI to the latest version. Please note any breaking or unimplemented changes before merging."
pr_label: "Tools"
pr_allow_empty: false
github_token: ${{ secrets.GITHUB_TOKEN }}
+25 -2
View File
@@ -198,13 +198,36 @@ Temporary Items
!/.vscode/extensions.json
tools/MapAtmosFixer/MapAtmosFixer/obj/*
tools/MapAtmosFixer/MapAtmosFixer/bin/*
tools/CreditsTool/bin/*
tools/CreditsTool/obj/*
#GitHub Atom
.atom-build.json
#Jukebox audio files
/config/jukebox_music/**/*
#KDevelop and Kate
*.kdev4*
*.kate-swp
#extra map stuff
/_maps/**/backup/
/_maps/templates.dm
#dmdoc default folder
/dmdoc
# Ignore custom music and title screens (amend as appropriate)
/config/jukebox_music/sounds/*
!/config/jukebox_music/sounds/exclude
/config/title_music/sounds/*
!/config/title_music/sounds/exclude
/config/title_screens/images/*
!/config/title_screens/images/exclude
#Linux docker
tools/LinuxOneShot/SetupProgram/obj/*
tools/LinuxOneShot/SetupProgram/bin/*
tools/LinuxOneShot/SetupProgram/.vs
tools/LinuxOneShot/Database
tools/LinuxOneShot/TGS_Config
tools/LinuxOneShot/TGS_Instances
tools/LinuxOneShot/TGS_Logs
+11
View File
@@ -0,0 +1,11 @@
build:
stage: build
rules:
- if: $CI_MERGE_REQUEST_IID || $CI_COMMIT_REF_NAME == "master"
changes:
- tgui/**/*.js
- tgui/**/*.scss
when: always
image: node:lts
script:
- tgui/bin/tgui --ci
View File
+27 -3
View File
@@ -1,13 +1,13 @@
language: generic
os: linux
dist: xenial
sudo: false
branches:
except:
- ___TGS3TempBranch
- ___TGSTempBranch
matrix:
jobs:
include:
- name: "Run Linters"
addons:
@@ -16,9 +16,15 @@ matrix:
- python3
- python3-pip
- python3-setuptools
- pcregrep
- rustc
- cargo
cache:
directories:
- $HOME/SpacemanDMM
install:
- tools/travis/install_build_tools.sh
- tools/travis/install_dreamchecker.sh
- tools/travis/install_spaceman_dmm.sh dreamchecker
script:
- tools/travis/check_filedirs.sh tgstation.dme
- tools/travis/check_changelogs.sh
@@ -76,3 +82,21 @@ matrix:
script:
- tools/travis/dm.sh -DTRAVISBUILDING tgstation.dme || travis_terminate 1
- tools/travis/run_server.sh
# - name: "Generate Documentation"
# # Only run for non-PR commits to the real master branch.
# if: branch = master AND head_branch IS blank
# install:
# - tools/travis/install_spaceman_dmm.sh dmdoc
# before_script:
# # Travis checks out a hash, try to get back on a branch.
# - git checkout $TRAVIS_BRANCH || true
# script:
# - ~/dmdoc
# - touch dmdoc/.nojekyll
# deploy:
# provider: pages
# skip_cleanup: true
# local_dir: dmdoc
# token: $DMDOC_GITHUB_TOKEN
# fqdn: codedocs.tgstation13.org
+61 -50
View File
@@ -1529,6 +1529,7 @@
icon_state = "warningline";
dir = 1
},
/obj/item/paper/fluff/ruins/skelter/cloner,
/turf/open/floor/plasteel,
/area/ruin/space/has_grav/skelter/med)
"dJ" = (
@@ -2485,10 +2486,13 @@
/turf/open/floor/plating,
/area/ruin/space/has_grav/skelter/engine/powerstorage)
"fR" = (
/obj/structure/cable{
icon_state = "2-8"
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
/obj/item/ammo_casing/c45,
/obj/structure/cable/yellow{
icon_state = "4-8"
},
/obj/item/kitchen/knife/combat,
/turf/open/floor/plating,
/area/ruin/space/has_grav/skelter/engine/powerstorage)
"fS" = (
@@ -2826,10 +2830,12 @@
/turf/open/floor/plasteel/dark,
/area/ruin/space/has_grav/skelter/sec)
"gI" = (
/obj/structure/rack,
/obj/item/gun/ballistic/automatic/pistol/m1911,
/turf/open/floor/plasteel/dark,
/area/ruin/space/has_grav/skelter/sec)
/obj/structure/cable{
icon_state = "2-8"
},
/obj/item/ammo_casing/c10mm,
/turf/open/floor/plating,
/area/ruin/space/has_grav/skelter/engine/powerstorage)
"gJ" = (
/obj/machinery/power/terminal{
dir = 1
@@ -3285,17 +3291,10 @@
/turf/open/floor/plasteel/showroomfloor,
/area/ruin/space/has_grav/skelter/comms)
"hJ" = (
/obj/effect/turf_decal/trimline/blue/line,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
/obj/structure/cable/yellow{
icon_state = "1-2"
},
/obj/item/ammo_casing/c45,
/turf/open/floor/plasteel/showroomfloor,
/area/ruin/space/has_grav/skelter/comms)
/obj/structure/rack,
/obj/item/ammo_box/magazine/m10mm,
/turf/open/floor/plasteel/dark,
/area/ruin/space/has_grav/skelter/sec)
"hK" = (
/obj/effect/turf_decal/trimline/yellow/filled/line{
icon_state = "trimline_fill";
@@ -3843,19 +3842,10 @@
/turf/open/floor/plasteel/showroomfloor,
/area/ruin/space/has_grav/skelter/comms)
"iP" = (
/obj/effect/turf_decal/tile/blue,
/obj/effect/turf_decal/tile/blue{
dir = 4
},
/obj/effect/turf_decal/tile/blue{
dir = 8
},
/obj/effect/turf_decal/tile/blue{
dir = 1
},
/obj/item/gun/ballistic/automatic/pistol/m1911/no_mag,
/turf/open/floor/plasteel/showroomfloor,
/area/ruin/space/has_grav/skelter/comms)
/obj/structure/rack,
/obj/item/gun/ballistic/automatic/pistol,
/turf/open/floor/plasteel/dark,
/area/ruin/space/has_grav/skelter/sec)
"iQ" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/closed/wall/mineral/titanium,
@@ -3934,17 +3924,15 @@
/turf/open/floor/plasteel/showroomfloor,
/area/ruin/space/has_grav/skelter/comms)
"iX" = (
/obj/effect/turf_decal/tile/blue,
/obj/effect/turf_decal/tile/blue{
/obj/effect/turf_decal/trimline/blue/line,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
/obj/effect/turf_decal/tile/blue{
dir = 8
/obj/structure/cable/yellow{
icon_state = "1-2"
},
/obj/effect/turf_decal/tile/blue{
dir = 1
},
/obj/item/ammo_casing/c45,
/obj/item/ammo_casing/c10mm,
/turf/open/floor/plasteel/showroomfloor,
/area/ruin/space/has_grav/skelter/comms)
"iY" = (
@@ -4149,16 +4137,39 @@
/turf/open/floor/carpet,
/area/ruin/space/has_grav/skelter/admin)
"jv" = (
/obj/structure/rack,
/obj/item/ammo_box/magazine/m45,
/turf/open/floor/plasteel/dark,
/area/ruin/space/has_grav/skelter/sec)
/obj/effect/turf_decal/tile/blue,
/obj/effect/turf_decal/tile/blue{
dir = 4
},
/obj/effect/turf_decal/tile/blue{
dir = 8
},
/obj/effect/turf_decal/tile/blue{
dir = 1
},
/obj/item/gun/ballistic/automatic/pistol/no_mag,
/turf/open/floor/plasteel/showroomfloor,
/area/ruin/space/has_grav/skelter/comms)
"jw" = (
/turf/open/space/basic,
/area/space/nearstation)
"jx" = (
/turf/open/space/basic,
/area/template_noop)
"jy" = (
/obj/effect/turf_decal/tile/blue,
/obj/effect/turf_decal/tile/blue{
dir = 4
},
/obj/effect/turf_decal/tile/blue{
dir = 8
},
/obj/effect/turf_decal/tile/blue{
dir = 1
},
/obj/item/ammo_casing/c10mm,
/turf/open/floor/plasteel/showroomfloor,
/area/ruin/space/has_grav/skelter/comms)
(1,1,1) = {"
ah
@@ -4479,7 +4490,7 @@ eW
cF
fN
gj
jv
hJ
gl
hw
hU
@@ -4539,7 +4550,7 @@ eX
fx
fN
gj
gI
iP
gl
hx
hx
@@ -4657,7 +4668,7 @@ dI
bI
fc
fA
fR
gI
go
gL
iC
@@ -4715,7 +4726,7 @@ bI
bI
bI
eA
fd
fR
fA
fA
fA
@@ -4991,10 +5002,10 @@ ju
gw
dO
hk
hJ
iX
ij
iF
iP
jv
iW
jh
jl
@@ -5025,7 +5036,7 @@ hK
ii
jm
jn
iX
jy
ii
jl
ah
+350 -137
View File
@@ -17,10 +17,14 @@
/turf/open/floor/mineral/titanium,
/area/ruin/powered)
"ag" = (
/obj/structure/shuttle/engine/propulsion/right{
dir = 4
/obj/effect/turf_decal/bot,
/obj/effect/decal/cleanable/dirt,
/obj/structure/closet,
/obj/effect/spawner/lootdrop/maintenance{
lootcount = 8;
name = "8maintenance loot spawner"
},
/turf/closed/wall/mineral/titanium,
/turf/open/floor/mineral/titanium,
/area/ruin/powered)
"ah" = (
/obj/structure/table/wood,
@@ -70,20 +74,21 @@
/turf/open/floor/mineral/titanium,
/area/ruin/powered)
"ar" = (
/obj/machinery/door/airlock/titanium{
name = "Escape Pod Airlock"
},
/turf/open/floor/mineral/titanium,
/turf/closed/wall/mineral/wood,
/area/ruin/powered)
"as" = (
/obj/machinery/light,
/turf/open/floor/mineral/titanium,
/area/ruin/powered)
"at" = (
/obj/structure/shuttle/engine/propulsion/left{
dir = 4
/obj/structure/extinguisher_cabinet{
pixel_x = 5;
pixel_y = -32
},
/turf/closed/wall/mineral/titanium,
/obj/machinery/portable_atmospherics/pump,
/obj/effect/turf_decal/bot,
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/mineral/titanium,
/area/ruin/powered)
"au" = (
/obj/item/seeds/tower,
@@ -93,11 +98,15 @@
/area/ruin/powered)
"av" = (
/obj/structure/table/wood,
/obj/item/paper/crumpled{
info = "</b><br><br>So this is it, I guess.. Always thought I'd go out doing something stupid, but.. not like this.<br>Should anyone find this note, tell Jeremy Clarke he can kiss my ass. Launching the pod unprepared like that..<br>Well. Now that I'm keeling over here, I guess I should write how I came to be the last one standing here.<br>Four of us took this pod.. only three of us woke up though.. fourth pod is locked from the inside, we couldn't figure out how to get it open.<br>Me and the clown set up a farm s'we can survive at least a while.. though, he didn't seem to understand that man cannot live on banana alone.<br>Had a bunch of circuits on him for some reason when he eventually passed, whispered to me something about a chem dispenser.. I.. don't know what he meant by that. I was never good with machinary. Maybe he wanted space lube?<br>The assistant that we gave the space suit to go out and find help never came back.. I'm betting he found salvation and left us behind.. never can trust those grubby greytiders."
/obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/skeleton{
pixel_x = 6;
pixel_y = 9
},
/obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/skeleton,
/obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/skeleton{
pixel_x = -5;
pixel_y = 6
},
/obj/item/pen,
/obj/item/stock_parts/cell/hyper,
/turf/open/floor/plating/asteroid,
/area/ruin/powered)
"aw" = (
@@ -142,6 +151,17 @@
"aE" = (
/turf/open/floor/plating/asteroid/airless,
/area/ruin/powered)
"aF" = (
/obj/machinery/power/port_gen/pacman{
active = 1;
anchored = 1;
sheets = 10
},
/obj/effect/turf_decal/bot,
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/stripes/line,
/turf/open/floor/mineral/titanium,
/area/ruin/powered)
"aG" = (
/obj/structure/sink/puddle,
/turf/open/floor/plating/asteroid,
@@ -187,9 +207,7 @@
/turf/open/floor/plating/asteroid,
/area/ruin/powered)
"aQ" = (
/obj/item/stack/ore/gold,
/obj/item/stack/ore/gold,
/obj/item/stack/ore/gold,
/obj/item/circuitboard/machine/circuit_imprinter,
/turf/open/floor/plating/asteroid,
/area/ruin/powered)
"aR" = (
@@ -205,8 +223,12 @@
/turf/open/floor/plating/asteroid,
/area/ruin/powered)
"aU" = (
/obj/item/flashlight/lamp,
/obj/structure/table/wood,
/obj/item/reagent_containers/food/snacks/meat/slab/human{
pixel_x = 3;
pixel_y = 3
},
/obj/item/reagent_containers/food/snacks/meat/slab/human,
/turf/open/floor/plating/asteroid,
/area/ruin/powered)
"aV" = (
@@ -238,20 +260,24 @@
/turf/closed/mineral/random/no_caves/earth_like,
/area/ruin/powered)
"bc" = (
/obj/item/circuitboard/machine/circuit_imprinter,
/obj/structure/table/wood,
/obj/item/vending_refill/snack,
/turf/open/floor/plating/asteroid,
/area/ruin/powered)
"bd" = (
/obj/item/grown/bananapeel,
/turf/open/floor/plating/asteroid,
/obj/structure/shuttle/engine/propulsion/right{
dir = 4
},
/turf/closed/wall/mineral/titanium,
/area/ruin/powered)
"be" = (
/obj/effect/mob_spawn/human/corpse/cargo_tech,
/obj/structure/fans/tiny/invisible,
/obj/structure/chair/wood/normal{
dir = 1
},
/turf/open/floor/plating/asteroid,
/area/ruin/powered)
"bf" = (
/obj/item/clothing/glasses/meson,
/obj/machinery/door/airlock/wood,
/turf/open/floor/plating/asteroid,
/area/ruin/powered)
"bg" = (
@@ -275,50 +301,43 @@
/turf/open/floor/plating/asteroid,
/area/ruin/powered)
"bl" = (
/obj/machinery/power/floodlight,
/obj/structure/cable{
icon_state = "0-2"
/obj/machinery/door/airlock/titanium{
name = "Escape Pod Airlock"
},
/turf/open/floor/plating/asteroid,
/turf/open/floor/mineral/titanium,
/area/ruin/powered)
"bm" = (
/obj/structure/cable{
icon_state = "1-4"
},
/obj/item/flashlight/lamp,
/obj/structure/table/wood,
/turf/open/floor/plating/asteroid,
/area/ruin/powered)
"bn" = (
/obj/structure/cable{
icon_state = "2-8"
/obj/structure/table/wood,
/obj/item/paper/crumpled{
info = "</b><br><br>So this is it, I guess.. Always thought I'd go out doing something stupid, but.. not like this.<br>Should anyone find this note, tell Jeremy Clarke he can kiss my ass. Launching the pod unprepared like that..<br>Well. Now that I'm keeling over here, I guess I should write how I came to be the last one standing here.<br>Four of us took this pod.. only three of us woke up though.. fourth pod is locked from the inside, we couldn't figure out how to get it open.<br>Me and the clown set up a farm s'we can survive at least a while.. though, he didn't seem to understand that man cannot live on banana alone.<br>Had a bunch of circuits on him for some reason when he eventually passed, whispered to me something about a chem dispenser.. I.. don't know what he meant by that. I was never good with machinary. Maybe he wanted space lube?<br>The assistant that we gave the space suit to go out and find help never came back.. I'm betting he found salvation and left us behind.. never can trust those grubby greytiders."
},
/obj/item/pen,
/obj/item/stock_parts/cell/hyper,
/turf/open/floor/plating/asteroid,
/area/ruin/powered)
"bo" = (
/obj/structure/cable{
icon_state = "1-2"
},
/obj/item/grown/bananapeel,
/turf/open/floor/plating/asteroid,
/area/ruin/powered)
"bp" = (
/obj/item/stack/ore/iron,
/obj/item/stack/ore/iron,
/obj/item/stack/ore/iron,
/obj/effect/mob_spawn/human/corpse/cargo_tech,
/obj/structure/fans/tiny/invisible,
/turf/open/floor/plating/asteroid,
/area/ruin/powered)
"bq" = (
/obj/structure/cable,
/obj/machinery/power/port_gen/pacman{
active = 1;
anchored = 1;
sheets = 10
},
/obj/item/clothing/glasses/meson,
/turf/open/floor/plating/asteroid,
/area/ruin/powered)
"br" = (
/obj/item/stack/ore/iron,
/obj/item/stack/sheet/mineral/plasma,
/obj/item/stack/sheet/mineral/plasma,
/turf/open/floor/plating/asteroid,
/obj/effect/decal/cleanable/oil{
icon_state = "floor5"
},
/turf/open/floor/mineral/titanium,
/area/ruin/powered)
"bs" = (
/obj/item/flashlight/lamp/bananalamp,
@@ -328,18 +347,181 @@
/obj/item/pickaxe/titanium,
/turf/open/floor/plating/asteroid,
/area/ruin/powered)
"fc" = (
/obj/item/stack/ore/iron,
/obj/item/stack/sheet/mineral/plasma,
/obj/item/stack/sheet/mineral/plasma,
/turf/open/floor/plating/asteroid,
/area/ruin/powered)
"fp" = (
/turf/closed/mineral/random/high_chance/earth_like,
/area/ruin/powered)
"jx" = (
/turf/closed/mineral/silver/earth_like,
/area/ruin/powered)
"ma" = (
/obj/item/stack/ore/iron,
/obj/item/stack/ore/iron,
/obj/item/stack/ore/iron,
/turf/open/floor/plating/asteroid,
/area/ruin/powered)
"mr" = (
/obj/structure/chair/comfy/shuttle{
dir = 8
},
/obj/effect/mob_spawn/human/skeleton,
/turf/open/floor/mineral/titanium,
/area/ruin/powered)
"nc" = (
/turf/closed/mineral/bscrystal/earth_like,
/area/ruin/powered)
"nl" = (
/obj/structure/closet/emcloset,
/obj/effect/turf_decal/bot,
/turf/open/floor/mineral/titanium,
/area/ruin/powered)
"oR" = (
/obj/structure/cable{
icon_state = "2-8"
},
/turf/open/floor/plating/asteroid,
/area/ruin/powered)
"wU" = (
/obj/machinery/portable_atmospherics/canister/air,
/obj/effect/turf_decal/bot,
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/mineral/titanium,
/area/ruin/powered)
"zs" = (
/obj/structure/reagent_dispensers/watertank/high,
/obj/effect/turf_decal/bot,
/obj/effect/turf_decal/stripes/line{
dir = 10
},
/turf/open/floor/mineral/titanium,
/area/ruin/powered)
"CY" = (
/obj/machinery/portable_atmospherics/canister/air,
/obj/effect/turf_decal/bot,
/turf/open/floor/mineral/titanium,
/area/ruin/powered)
"DH" = (
/obj/structure/chair/comfy/shuttle{
dir = 8
},
/obj/effect/decal/cleanable/vomit/old,
/turf/open/floor/mineral/titanium,
/area/ruin/powered)
"Ft" = (
/obj/structure/reagent_dispensers/fueltank/high,
/obj/effect/turf_decal/bot,
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/stripes/line{
dir = 8
},
/turf/open/floor/mineral/titanium,
/area/ruin/powered)
"HK" = (
/obj/structure/cable{
icon_state = "1-4"
},
/turf/open/floor/plating/asteroid,
/area/ruin/powered)
"HP" = (
/obj/machinery/portable_atmospherics/scrubber,
/obj/effect/turf_decal/bot,
/turf/open/floor/mineral/titanium,
/area/ruin/powered)
"Iy" = (
/obj/item/clothing/suit/hazardvest{
desc = "A high-visibility lifejacket complete with whistle and slot for oxygen tanks.";
name = "emergency lifejacket"
},
/obj/item/clothing/suit/hazardvest{
desc = "A high-visibility lifejacket complete with whistle and slot for oxygen tanks.";
name = "emergency lifejacket"
},
/obj/item/clothing/suit/hazardvest{
desc = "A high-visibility lifejacket complete with whistle and slot for oxygen tanks.";
name = "emergency lifejacket"
},
/obj/item/clothing/suit/hazardvest{
desc = "A high-visibility lifejacket complete with whistle and slot for oxygen tanks.";
name = "emergency lifejacket"
},
/obj/item/clothing/suit/hazardvest{
desc = "A high-visibility lifejacket complete with whistle and slot for oxygen tanks.";
name = "emergency lifejacket"
},
/obj/item/tank/internals/emergency_oxygen/double{
pixel_x = 3
},
/obj/item/tank/internals/emergency_oxygen/double{
pixel_x = 3
},
/obj/item/tank/internals/emergency_oxygen/double{
pixel_x = 3
},
/obj/item/tank/internals/emergency_oxygen/double{
pixel_x = 3
},
/obj/item/tank/internals/emergency_oxygen/double{
pixel_x = 3
},
/obj/item/clothing/mask/breath{
pixel_x = -3;
pixel_y = -3
},
/obj/item/clothing/mask/breath{
pixel_x = -3;
pixel_y = -3
},
/obj/item/clothing/mask/breath{
pixel_x = -3;
pixel_y = -3
},
/obj/item/clothing/mask/breath{
pixel_x = -3;
pixel_y = -3
},
/obj/item/clothing/mask/breath{
pixel_x = -3;
pixel_y = -3
},
/obj/item/clothing/head/hardhat/orange{
name = "protective hat";
pixel_y = 9
},
/obj/item/clothing/head/hardhat/orange{
name = "protective hat";
pixel_y = 9
},
/obj/item/clothing/head/hardhat/orange{
name = "protective hat";
pixel_y = 9
},
/obj/item/clothing/head/hardhat/orange{
name = "protective hat";
pixel_y = 9
},
/obj/item/clothing/head/hardhat/orange{
name = "protective hat";
pixel_y = 9
},
/obj/structure/closet/crate/internals,
/obj/effect/turf_decal/bot,
/turf/open/floor/mineral/titanium,
/area/ruin/powered)
"JZ" = (
/turf/closed/mineral/titanium/earth_like,
/area/ruin/powered)
"Kj" = (
/obj/machinery/power/floodlight,
/obj/structure/cable{
icon_state = "0-2"
},
/turf/open/floor/plating/asteroid,
/area/ruin/powered)
"Lt" = (
/obj/structure/mirror,
/turf/closed/wall/mineral/iron,
@@ -347,6 +529,19 @@
"PG" = (
/turf/closed/mineral/gold/earth_like,
/area/ruin/powered)
"Qi" = (
/obj/structure/cable,
/obj/machinery/power/port_gen/pacman{
active = 1;
anchored = 1;
sheets = 10
},
/turf/open/floor/plating/asteroid,
/area/ruin/powered)
"Sv" = (
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/mineral/titanium,
/area/ruin/powered)
"Ue" = (
/turf/closed/mineral/diamond/earth_like,
/area/ruin/powered)
@@ -358,6 +553,24 @@
/obj/item/circuitboard/machine/ore_redemption,
/turf/open/floor/plating/asteroid,
/area/ruin/powered)
"WP" = (
/obj/item/stack/ore/gold,
/obj/item/stack/ore/gold,
/obj/item/stack/ore/gold,
/turf/open/floor/plating/asteroid,
/area/ruin/powered)
"Xh" = (
/obj/structure/cable{
icon_state = "1-2"
},
/turf/open/floor/plating/asteroid,
/area/ruin/powered)
"XQ" = (
/obj/structure/shuttle/engine/propulsion/left{
dir = 4
},
/turf/closed/wall/mineral/titanium,
/area/ruin/powered)
(1,1,1) = {"
aa
@@ -1123,9 +1336,9 @@ bb
bb
af
ak
ao
ao
ao
DH
an
mr
ak
af
am
@@ -1175,9 +1388,9 @@ bb
aR
ae
ae
an
an
an
af
bl
af
ae
ae
am
@@ -1225,13 +1438,13 @@ ba
ba
bb
aR
ae
ag
ag
af
ar
af
at
nl
an
HP
at
ae
am
bb
fp
@@ -1277,13 +1490,13 @@ aL
bb
bb
aT
am
am
am
am
am
am
am
bl
br
an
an
an
an
bl
aR
bb
bb
@@ -1329,13 +1542,13 @@ am
ba
bb
am
am
am
am
am
am
am
am
af
Ft
zs
Sv
CY
wU
af
bg
bb
fp
@@ -1381,13 +1594,13 @@ am
ba
bb
bb
am
am
am
am
am
am
am
ae
Iy
aF
br
CY
CY
ae
bb
bb
bb
@@ -1432,14 +1645,14 @@ am
bb
bb
bb
aU
am
bd
am
am
bd
af
bl
bm
am
am
af
XQ
XQ
bb
bb
bb
@@ -1484,15 +1697,15 @@ am
bb
bb
ba
av
be
am
am
am
bn
bo
bo
bq
am
am
am
am
am
am
bb
bb
bb
@@ -1525,10 +1738,10 @@ bb
bb
bb
bb
ba
am
am
am
ar
ar
ar
ar
am
am
am
@@ -1536,15 +1749,15 @@ am
bb
bb
bb
bc
bf
am
am
am
am
am
am
br
am
am
am
bb
bb
bb
@@ -1577,10 +1790,10 @@ bb
bb
bb
bb
bb
bb
bb
bb
ar
av
am
ar
am
am
am
@@ -1629,10 +1842,10 @@ bb
fp
bb
bb
bb
bb
bb
bb
ar
aU
be
bf
am
am
am
@@ -1645,8 +1858,8 @@ am
am
aR
am
am
am
Kj
HK
am
bb
bb
@@ -1681,11 +1894,11 @@ bb
bb
bb
bb
bb
bb
bb
bb
ba
ar
bc
am
ar
am
am
am
am
@@ -1698,10 +1911,10 @@ am
am
am
am
am
am
am
am
oR
Xh
Xh
Qi
ba
ba
ba
@@ -1733,16 +1946,18 @@ bb
bb
bb
bb
bb
bb
bb
bb
ar
ar
ar
ar
ba
ba
ba
aK
ba
ba
bm
bo
am
am
am
@@ -1750,9 +1965,7 @@ am
am
am
am
bp
am
am
fc
aR
ba
ba
@@ -1795,16 +2008,16 @@ fp
ba
fp
ba
bn
bp
am
am
am
am
am
aP
am
am
am
am
am
am
am
am
am
aR
ba
ba
@@ -1848,14 +2061,14 @@ ba
ba
ba
aQ
aP
bq
am
am
aR
am
am
am
am
WP
aP
bb
am
ba
@@ -2009,7 +2222,7 @@ bg
am
am
am
am
ma
am
aS
bb
+1 -1
View File
@@ -1453,7 +1453,7 @@
/area/ruin/space/has_grav/hotel/guestroom/room_2)
"eu" = (
/obj/structure/table/wood,
/obj/item/storage/box/dice,
/obj/item/storage/dice,
/turf/open/floor/wood,
/area/ruin/space/has_grav/hotel/guestroom/room_2)
"ev" = (
+24 -18
View File
@@ -428,7 +428,7 @@
/area/awaymission/cabin)
"bm" = (
/obj/machinery/door/airlock/wood{
id_tag = "snowdinbutworse5";
id_tag = "snowdorm5";
name = "Cabin 5"
},
/obj/effect/mapping_helpers/network_builder/power_cable/yellow/auto,
@@ -3318,7 +3318,7 @@
/area/awaymission/cabin)
"iV" = (
/obj/machinery/door/airlock/wood{
id_tag = "snowdinbutworse1";
id_tag = "snowdorm1";
name = "Cabin 1"
},
/obj/effect/mapping_helpers/network_builder/power_cable/yellow/auto,
@@ -3326,7 +3326,7 @@
/area/awaymission/cabin)
"iW" = (
/obj/machinery/door/airlock/wood{
id_tag = "snowdinbutworse2";
id_tag = "snowdorm2";
name = "Cabin 2"
},
/obj/effect/mapping_helpers/network_builder/power_cable/yellow/auto,
@@ -3334,7 +3334,7 @@
/area/awaymission/cabin)
"iX" = (
/obj/machinery/door/airlock/wood{
id_tag = "snowdinbutworse3";
id_tag = "snowdorm3";
name = "Cabin 3"
},
/obj/effect/mapping_helpers/network_builder/power_cable/yellow/auto,
@@ -3342,7 +3342,7 @@
/area/awaymission/cabin)
"iY" = (
/obj/machinery/door/airlock/wood{
id_tag = "snowdinbutworse4";
id_tag = "snowdorm4";
name = "Cabin 4"
},
/obj/effect/mapping_helpers/network_builder/power_cable/yellow/auto,
@@ -3419,31 +3419,37 @@
/area/awaymission/cabin)
"jg" = (
/obj/machinery/button/door{
id = "snowdinbutworse2";
name = "airlock button";
pixel_y = -27
id = "snowdorm2";
name = "Dorm Bolt Control";
normaldoorcontrol = 1;
pixel_y = -25;
specialfunctions = 4
},
/turf/open/floor/wood,
/area/awaymission/cabin)
"jh" = (
/obj/machinery/button/door{
id = "snowdinbutworse1";
name = "airlock button";
pixel_y = -27
id = "snowdorm1";
name = "Dorm Bolt Control";
normaldoorcontrol = 1;
pixel_y = -25;
specialfunctions = 4
},
/turf/open/floor/wood,
/area/awaymission/cabin)
"ji" = (
/obj/machinery/button/door{
id = "snowdinbutworse3";
name = "airlock button";
pixel_y = -27
id = "snowdorm3";
name = "Dorm Bolt Control";
normaldoorcontrol = 1;
pixel_y = -25;
specialfunctions = 4
},
/turf/open/floor/wood,
/area/awaymission/cabin)
"jj" = (
/obj/machinery/button/door{
id = "snowdinbutworse4";
id = "snowdorm4";
name = "airlock button";
pixel_y = -27
},
@@ -3451,7 +3457,7 @@
/area/awaymission/cabin)
"jk" = (
/obj/machinery/button/door{
id = "snowdinbutworse5";
id = "snowdorm5";
name = "airlock button";
pixel_y = -27
},
@@ -4024,8 +4030,8 @@
pixel_y = -2
},
/obj/item/clothing/head/christmashatg{
pixel_y = 12;
pixel_x = 3
pixel_x = 3;
pixel_y = 12
},
/turf/open/floor/plating/asteroid/snow,
/area/awaymission/cabin/caves)
File diff suppressed because it is too large Load Diff
@@ -5371,7 +5371,7 @@
/area/awaymission/research/interior/dorm)
"kS" = (
/obj/structure/table/wood,
/obj/item/storage/box/dice,
/obj/item/storage/dice,
/turf/open/floor/plasteel,
/area/awaymission/research/interior/dorm)
"kT" = (
File diff suppressed because it is too large Load Diff
+3 -3
View File
@@ -8535,7 +8535,7 @@
/obj/effect/turf_decal/tile/bar{
dir = 1
},
/obj/item/storage/box/dice,
/obj/item/storage/dice,
/obj/item/toy/cards/deck,
/turf/open/floor/plasteel,
/area/crew_quarters/bar)
@@ -16727,7 +16727,7 @@
/area/bridge)
"aKw" = (
/obj/structure/table,
/obj/item/storage/box/dice,
/obj/item/storage/dice,
/obj/item/toy/cards/deck,
/obj/structure/disposalpipe/segment{
dir = 4
@@ -31929,7 +31929,7 @@
/obj/effect/turf_decal/tile/green{
dir = 4
},
/obj/item/storage/box/dice,
/obj/item/storage/dice,
/obj/item/toy/cards/deck,
/turf/open/floor/plasteel/white/corner{
dir = 1
+160 -191
View File
@@ -12556,15 +12556,11 @@
/area/engine/atmospherics_engine)
"aAb" = (
/turf/closed/wall,
/area/hydroponics/garden/abandoned{
name = "Maintenance Garden"
})
/area/hydroponics/garden/abandoned)
"aAc" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/closed/wall,
/area/hydroponics/garden/abandoned{
name = "Maintenance Garden"
})
/area/hydroponics/garden/abandoned)
"aAd" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/tile/neutral{
@@ -13138,9 +13134,7 @@
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/delivery,
/turf/open/floor/plasteel,
/area/hydroponics/garden/abandoned{
name = "Maintenance Garden"
})
/area/hydroponics/garden/abandoned)
"aBh" = (
/obj/item/kirbyplants/random,
/obj/machinery/light/small{
@@ -13149,25 +13143,19 @@
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/delivery,
/turf/open/floor/plasteel,
/area/hydroponics/garden/abandoned{
name = "Maintenance Garden"
})
/area/hydroponics/garden/abandoned)
"aBi" = (
/obj/structure/table,
/obj/item/clothing/suit/apron/overalls,
/obj/item/cultivator,
/obj/effect/turf_decal/bot,
/turf/open/floor/plasteel,
/area/hydroponics/garden/abandoned{
name = "Maintenance Garden"
})
/area/hydroponics/garden/abandoned)
"aBj" = (
/obj/machinery/biogenerator,
/obj/effect/turf_decal/delivery,
/turf/open/floor/plasteel,
/area/hydroponics/garden/abandoned{
name = "Maintenance Garden"
})
/area/hydroponics/garden/abandoned)
"aBk" = (
/obj/structure/table,
/obj/item/reagent_containers/food/snacks/grown/wheat,
@@ -13182,18 +13170,14 @@
pixel_y = 4
},
/turf/open/floor/plasteel,
/area/hydroponics/garden/abandoned{
name = "Maintenance Garden"
})
/area/hydroponics/garden/abandoned)
"aBl" = (
/obj/machinery/hydroponics/soil,
/obj/item/seeds/tea,
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/delivery,
/turf/open/floor/plasteel,
/area/hydroponics/garden/abandoned{
name = "Maintenance Garden"
})
/area/hydroponics/garden/abandoned)
"aBm" = (
/obj/item/kirbyplants/random,
/obj/machinery/status_display/evac{
@@ -13201,9 +13185,7 @@
},
/obj/effect/turf_decal/delivery,
/turf/open/floor/plasteel,
/area/hydroponics/garden/abandoned{
name = "Maintenance Garden"
})
/area/hydroponics/garden/abandoned)
"aBn" = (
/obj/structure/table,
/obj/item/stack/packageWrap,
@@ -13213,9 +13195,7 @@
/obj/item/reagent_containers/food/snacks/grown/cherries,
/obj/effect/turf_decal/bot,
/turf/open/floor/plasteel,
/area/hydroponics/garden/abandoned{
name = "Maintenance Garden"
})
/area/hydroponics/garden/abandoned)
"aBo" = (
/obj/item/kirbyplants/random,
/obj/machinery/light/small{
@@ -13225,18 +13205,14 @@
/obj/effect/turf_decal/delivery,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/open/floor/plasteel,
/area/hydroponics/garden/abandoned{
name = "Maintenance Garden"
})
/area/hydroponics/garden/abandoned)
"aBp" = (
/obj/machinery/hydroponics/soil,
/obj/item/seeds/poppy,
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/delivery,
/turf/open/floor/plasteel,
/area/hydroponics/garden/abandoned{
name = "Maintenance Garden"
})
/area/hydroponics/garden/abandoned)
"aBq" = (
/obj/structure/cable/white{
icon_state = "2-4"
@@ -13817,33 +13793,25 @@
/area/engine/atmospherics_engine)
"aCv" = (
/turf/open/floor/plasteel,
/area/hydroponics/garden/abandoned{
name = "Maintenance Garden"
})
/area/hydroponics/garden/abandoned)
"aCw" = (
/obj/effect/turf_decal/delivery,
/obj/machinery/hydroponics/soil,
/obj/item/seeds/watermelon,
/turf/open/floor/plasteel,
/area/hydroponics/garden/abandoned{
name = "Maintenance Garden"
})
/area/hydroponics/garden/abandoned)
"aCx" = (
/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
dir = 4
},
/turf/open/floor/plasteel,
/area/hydroponics/garden/abandoned{
name = "Maintenance Garden"
})
/area/hydroponics/garden/abandoned)
"aCy" = (
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
dir = 4
},
/turf/open/floor/plasteel,
/area/hydroponics/garden/abandoned{
name = "Maintenance Garden"
})
/area/hydroponics/garden/abandoned)
"aCz" = (
/obj/structure/cable/white{
icon_state = "1-2"
@@ -14459,21 +14427,15 @@
},
/obj/effect/turf_decal/bot,
/turf/open/floor/plasteel,
/area/hydroponics/garden/abandoned{
name = "Maintenance Garden"
})
/area/hydroponics/garden/abandoned)
"aDy" = (
/obj/machinery/atmospherics/components/unary/vent_pump/on,
/turf/open/floor/plasteel,
/area/hydroponics/garden/abandoned{
name = "Maintenance Garden"
})
/area/hydroponics/garden/abandoned)
"aDz" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/open/floor/plasteel,
/area/hydroponics/garden/abandoned{
name = "Maintenance Garden"
})
/area/hydroponics/garden/abandoned)
"aDA" = (
/obj/structure/sink{
dir = 4;
@@ -14484,9 +14446,7 @@
},
/obj/effect/turf_decal/bot,
/turf/open/floor/plasteel,
/area/hydroponics/garden/abandoned{
name = "Maintenance Garden"
})
/area/hydroponics/garden/abandoned)
"aDB" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/decal/cleanable/dirt,
@@ -14968,34 +14928,26 @@
icon_state = "2-4"
},
/turf/open/floor/plasteel,
/area/hydroponics/garden/abandoned{
name = "Maintenance Garden"
})
/area/hydroponics/garden/abandoned)
"aEC" = (
/obj/structure/cable/white{
icon_state = "4-8"
},
/turf/open/floor/plasteel,
/area/hydroponics/garden/abandoned{
name = "Maintenance Garden"
})
/area/hydroponics/garden/abandoned)
"aED" = (
/obj/structure/cable/white{
icon_state = "4-8"
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/open/floor/plasteel,
/area/hydroponics/garden/abandoned{
name = "Maintenance Garden"
})
/area/hydroponics/garden/abandoned)
"aEE" = (
/obj/structure/cable/white{
icon_state = "2-8"
},
/turf/open/floor/plasteel,
/area/hydroponics/garden/abandoned{
name = "Maintenance Garden"
})
/area/hydroponics/garden/abandoned)
"aEG" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/cable/white{
@@ -15628,18 +15580,14 @@
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/delivery,
/turf/open/floor/plasteel,
/area/hydroponics/garden/abandoned{
name = "Maintenance Garden"
})
/area/hydroponics/garden/abandoned)
"aFK" = (
/obj/machinery/hydroponics/soil,
/obj/item/seeds/harebell,
/obj/machinery/light/small,
/obj/effect/turf_decal/delivery,
/turf/open/floor/plasteel,
/area/hydroponics/garden/abandoned{
name = "Maintenance Garden"
})
/area/hydroponics/garden/abandoned)
"aFL" = (
/obj/structure/table,
/obj/item/shovel/spade,
@@ -15658,9 +15606,7 @@
},
/obj/effect/turf_decal/bot,
/turf/open/floor/plasteel,
/area/hydroponics/garden/abandoned{
name = "Maintenance Garden"
})
/area/hydroponics/garden/abandoned)
"aFM" = (
/obj/machinery/status_display/evac{
pixel_y = -32
@@ -15669,34 +15615,26 @@
/obj/machinery/hydroponics/soil,
/obj/item/seeds/poppy/geranium,
/turf/open/floor/plasteel,
/area/hydroponics/garden/abandoned{
name = "Maintenance Garden"
})
/area/hydroponics/garden/abandoned)
"aFN" = (
/obj/structure/table,
/obj/item/plant_analyzer,
/obj/item/hatchet,
/obj/effect/turf_decal/bot,
/turf/open/floor/plasteel,
/area/hydroponics/garden/abandoned{
name = "Maintenance Garden"
})
/area/hydroponics/garden/abandoned)
"aFO" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/effect/turf_decal/delivery,
/turf/open/floor/plasteel,
/area/hydroponics/garden/abandoned{
name = "Maintenance Garden"
})
/area/hydroponics/garden/abandoned)
"aFP" = (
/obj/structure/cable/white{
icon_state = "1-2"
},
/obj/effect/turf_decal/delivery,
/turf/open/floor/plasteel,
/area/hydroponics/garden/abandoned{
name = "Maintenance Garden"
})
/area/hydroponics/garden/abandoned)
"aFQ" = (
/obj/structure/table,
/obj/item/crowbar,
@@ -15704,9 +15642,7 @@
/obj/item/reagent_containers/glass/bucket,
/obj/effect/turf_decal/bot,
/turf/open/floor/plasteel,
/area/hydroponics/garden/abandoned{
name = "Maintenance Garden"
})
/area/hydroponics/garden/abandoned)
"aFR" = (
/obj/machinery/hydroponics/soil,
/obj/item/seeds/tower,
@@ -15715,9 +15651,7 @@
/obj/effect/turf_decal/delivery,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/open/floor/plasteel,
/area/hydroponics/garden/abandoned{
name = "Maintenance Garden"
})
/area/hydroponics/garden/abandoned)
"aFS" = (
/obj/structure/cable/white{
icon_state = "1-2"
@@ -16707,9 +16641,7 @@
"aHl" = (
/obj/effect/spawner/structure/window/reinforced,
/turf/open/floor/plating,
/area/hydroponics/garden/abandoned{
name = "Maintenance Garden"
})
/area/hydroponics/garden/abandoned)
"aHm" = (
/obj/machinery/door/airlock/maintenance_hatch{
name = "Maintenance Hatch";
@@ -16721,9 +16653,7 @@
dir = 1
},
/turf/open/floor/plasteel,
/area/hydroponics/garden/abandoned{
name = "Maintenance Garden"
})
/area/hydroponics/garden/abandoned)
"aHn" = (
/obj/machinery/door/airlock/maintenance_hatch{
name = "Maintenance Hatch";
@@ -16737,16 +16667,12 @@
dir = 1
},
/turf/open/floor/plasteel,
/area/hydroponics/garden/abandoned{
name = "Maintenance Garden"
})
/area/hydroponics/garden/abandoned)
"aHo" = (
/obj/effect/spawner/structure/window/reinforced,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/open/floor/plating,
/area/hydroponics/garden/abandoned{
name = "Maintenance Garden"
})
/area/hydroponics/garden/abandoned)
"aHp" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/cable/white{
@@ -20351,7 +20277,7 @@
/area/security/prison)
"aND" = (
/obj/structure/table,
/obj/item/storage/box/dice,
/obj/item/storage/dice,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
@@ -21047,7 +20973,7 @@
/area/crew_quarters/bar/atrium)
"aOJ" = (
/obj/structure/table/wood,
/obj/item/storage/box/dice,
/obj/item/storage/dice,
/obj/effect/turf_decal/tile/red{
dir = 1
},
@@ -73373,7 +73299,7 @@
/area/library)
"ctL" = (
/obj/structure/table/wood,
/obj/item/storage/box/dice,
/obj/item/storage/dice,
/obj/machinery/computer/security/telescreen/entertainment{
pixel_y = -32
},
@@ -95376,7 +95302,7 @@
/area/medical/medbay/central)
"deG" = (
/obj/structure/table/wood,
/obj/item/storage/box/dice,
/obj/item/storage/dice,
/obj/structure/sign/poster/official/help_others{
pixel_x = -32
},
@@ -110351,9 +110277,6 @@
/turf/open/floor/plasteel/airless/solarpanel,
/area/solar/starboard/aft)
"dFz" = (
/obj/structure/chair/office/dark{
dir = 8
},
/obj/item/radio/intercom{
name = "Station Intercom";
pixel_x = -26;
@@ -110362,12 +110285,19 @@
/obj/effect/turf_decal/stripes/line{
dir = 9
},
/obj/machinery/computer/security/telescreen/toxins{
dir = 4
},
/obj/structure/table/reinforced,
/turf/open/floor/plasteel,
/area/science/mixing)
"dFA" = (
/obj/effect/turf_decal/stripes/line{
dir = 5
},
/obj/structure/chair/office/dark{
dir = 8
},
/turf/open/floor/plasteel,
/area/science/mixing)
"dFB" = (
@@ -110385,25 +110315,28 @@
network = list("ss13","rd")
},
/obj/effect/turf_decal/bot,
/obj/effect/turf_decal/stripes/line,
/turf/open/floor/plasteel,
/area/science/mixing)
"dFC" = (
/obj/machinery/atmospherics/components/unary/portables_connector/visible,
/obj/effect/turf_decal/stripes/line{
dir = 10
},
/turf/open/floor/plasteel,
/area/science/mixing)
"dFD" = (
/obj/machinery/atmospherics/components/unary/portables_connector/visible,
/obj/machinery/light{
dir = 1
/obj/machinery/atmospherics/pipe/simple/general/visible{
dir = 5
},
/obj/effect/turf_decal/stripes/line,
/turf/open/floor/plasteel,
/area/science/mixing)
"dFD" = (
/obj/machinery/light{
dir = 1
},
/obj/effect/turf_decal/stripes/line,
/obj/machinery/atmospherics/components/binary/pump/on{
name = "Space Loop Out";
dir = 4
},
/turf/open/floor/plasteel,
/area/science/mixing)
"dFE" = (
/obj/machinery/atmospherics/components/unary/portables_connector/visible,
/obj/machinery/newscaster{
pixel_y = 32
},
@@ -110411,9 +110344,10 @@
dir = 8;
pixel_x = 24
},
/obj/effect/turf_decal/stripes/line{
dir = 6
/obj/machinery/atmospherics/components/unary/portables_connector/visible{
dir = 8
},
/obj/effect/turf_decal/stripes/line,
/turf/open/floor/plasteel,
/area/science/mixing)
"dFF" = (
@@ -111311,20 +111245,16 @@
/turf/open/floor/plating,
/area/science/test_area)
"dGY" = (
/obj/structure/table/reinforced,
/obj/effect/turf_decal/stripes/line{
dir = 8
},
/obj/machinery/computer/security/telescreen/toxins{
dir = 4
/obj/machinery/atmospherics/components/unary/portables_connector/visible{
dir = 8
},
/turf/open/floor/plasteel,
/area/science/mixing)
"dGZ" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/stripes/line{
dir = 4
},
/turf/open/floor/plasteel,
/area/science/mixing)
"dHa" = (
@@ -111341,9 +111271,6 @@
},
/area/science/mixing)
"dHb" = (
/obj/machinery/atmospherics/pipe/simple/general/visible{
dir = 5
},
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/tile/neutral{
dir = 1
@@ -111353,22 +111280,7 @@
},
/turf/open/floor/plasteel,
/area/science/mixing)
"dHc" = (
/obj/machinery/atmospherics/components/trinary/filter{
dir = 8
},
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
/obj/effect/turf_decal/tile/neutral{
dir = 4
},
/turf/open/floor/plasteel,
/area/science/mixing)
"dHd" = (
/obj/machinery/atmospherics/pipe/simple/general/visible{
dir = 9
},
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
@@ -112069,16 +111981,12 @@
/turf/open/floor/plasteel,
/area/science/mixing)
"dIk" = (
/obj/effect/turf_decal/stripes/line{
dir = 4
},
/turf/open/floor/plasteel,
/area/science/mixing)
"dIl" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 5
},
/obj/effect/turf_decal/stripes/line,
/turf/open/floor/plasteel,
/area/science/mixing)
"dIm" = (
@@ -112086,14 +111994,12 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
/obj/effect/turf_decal/stripes/line,
/turf/open/floor/plasteel,
/area/science/mixing)
"dIn" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
/obj/effect/turf_decal/stripes/line,
/turf/open/floor/plasteel,
/area/science/mixing)
"dIo" = (
@@ -112104,7 +112010,6 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
/obj/effect/turf_decal/stripes/line,
/turf/open/floor/plasteel,
/area/science/mixing)
"dIp" = (
@@ -112992,6 +112897,9 @@
dir = 4
},
/obj/effect/turf_decal/bot,
/obj/effect/turf_decal/stripes/line{
dir = 1
},
/turf/open/floor/plasteel,
/area/science/mixing)
"dJM" = (
@@ -113004,6 +112912,9 @@
dir = 4
},
/obj/effect/turf_decal/bot,
/obj/effect/turf_decal/stripes/line{
dir = 1
},
/turf/open/floor/plasteel,
/area/science/mixing)
"dJN" = (
@@ -113012,6 +112923,9 @@
},
/obj/effect/turf_decal/bot,
/obj/machinery/suit_storage_unit/rd,
/obj/effect/turf_decal/stripes/line{
dir = 1
},
/turf/open/floor/plasteel,
/area/science/mixing)
"dJO" = (
@@ -113024,6 +112938,9 @@
dir = 4
},
/obj/effect/turf_decal/bot,
/obj/effect/turf_decal/stripes/line{
dir = 1
},
/turf/open/floor/plasteel,
/area/science/mixing)
"dJP" = (
@@ -116810,7 +116727,7 @@
/area/library/abandoned)
"dQx" = (
/obj/structure/table/wood,
/obj/item/storage/box/dice,
/obj/item/storage/dice,
/turf/open/floor/carpet,
/area/library/abandoned)
"dQy" = (
@@ -123040,7 +122957,7 @@
/area/hallway/secondary/exit/departure_lounge)
"ecH" = (
/obj/structure/table,
/obj/item/storage/box/dice,
/obj/item/storage/dice,
/obj/effect/turf_decal/delivery,
/turf/open/floor/plasteel,
/area/hallway/secondary/exit/departure_lounge)
@@ -125347,9 +125264,13 @@
/obj/item/reagent_containers/glass/bucket,
/obj/effect/turf_decal/delivery,
/turf/open/floor/plasteel,
/area/hydroponics/garden/abandoned{
name = "Maintenance Garden"
})
/area/hydroponics/garden/abandoned)
"esD" = (
/obj/machinery/atmospherics/pipe/heat_exchanging/simple{
dir = 4
},
/turf/open/space/basic,
/area/space/nearstation)
"etO" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
@@ -125474,9 +125395,7 @@
/obj/machinery/hydroponics/soil,
/obj/item/seeds/grape,
/turf/open/floor/plasteel,
/area/hydroponics/garden/abandoned{
name = "Maintenance Garden"
})
/area/hydroponics/garden/abandoned)
"faI" = (
/obj/structure/cable/white{
icon_state = "1-2"
@@ -125815,6 +125734,13 @@
},
/turf/open/floor/plasteel,
/area/security/prison)
"hLf" = (
/obj/effect/spawner/structure/window/reinforced,
/obj/machinery/atmospherics/pipe/heat_exchanging/junction{
dir = 8
},
/turf/open/floor/plating,
/area/science/mixing)
"hNZ" = (
/obj/structure/chair/office/light{
dir = 8
@@ -126034,6 +125960,12 @@
},
/turf/open/floor/plasteel/white,
/area/science/research)
"jdR" = (
/obj/machinery/atmospherics/pipe/heat_exchanging/simple{
dir = 5
},
/turf/open/space/basic,
/area/space/nearstation)
"jeu" = (
/obj/effect/turf_decal/stripes/line{
dir = 1
@@ -126395,9 +126327,7 @@
pixel_x = 6
},
/turf/open/floor/plasteel,
/area/hydroponics/garden/abandoned{
name = "Maintenance Garden"
})
/area/hydroponics/garden/abandoned)
"loH" = (
/obj/effect/turf_decal/tile/neutral{
dir = 1
@@ -126627,6 +126557,13 @@
/obj/effect/turf_decal/bot,
/turf/open/floor/plasteel,
/area/engine/gravity_generator)
"mtj" = (
/obj/effect/spawner/structure/window/reinforced,
/obj/machinery/atmospherics/pipe/heat_exchanging/junction{
dir = 1
},
/turf/open/floor/plating,
/area/science/mixing)
"mvm" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/cable/white{
@@ -126722,6 +126659,17 @@
/obj/machinery/vending/kink,
/turf/open/floor/plating,
/area/crew_quarters/abandoned_gambling_den)
"nMo" = (
/obj/machinery/atmospherics/pipe/heat_exchanging/simple{
dir = 6
},
/turf/open/space/basic,
/area/space/nearstation)
"nNN" = (
/obj/structure/lattice,
/obj/machinery/atmospherics/pipe/heat_exchanging/simple,
/turf/open/space,
/area/space/nearstation)
"nOz" = (
/obj/effect/turf_decal/tile/neutral{
dir = 1
@@ -126991,6 +126939,13 @@
},
/turf/open/floor/plating,
/area/science/research/abandoned)
"pwx" = (
/obj/structure/lattice,
/obj/machinery/atmospherics/pipe/heat_exchanging/simple{
dir = 4
},
/turf/open/space,
/area/space/nearstation)
"pxR" = (
/obj/structure/cable/white{
icon_state = "4-8"
@@ -127313,6 +127268,13 @@
},
/turf/open/floor/plasteel,
/area/crew_quarters/fitness/recreation)
"tzM" = (
/obj/structure/lattice,
/obj/machinery/atmospherics/pipe/heat_exchanging/simple{
dir = 10
},
/turf/open/space,
/area/space/nearstation)
"tCh" = (
/turf/closed/wall,
/area/science/misc_lab)
@@ -127792,6 +127754,13 @@
},
/turf/open/floor/plasteel/white,
/area/science/mixing)
"xmL" = (
/obj/structure/lattice,
/obj/machinery/atmospherics/pipe/heat_exchanging/simple{
dir = 9
},
/turf/open/space,
/area/space/nearstation)
"xok" = (
/obj/machinery/light{
dir = 1
@@ -155157,8 +155126,8 @@ dmy
dAt
djs
dhQ
aad
aaa
atI
jdR
aaa
aaa
aad
@@ -155414,8 +155383,8 @@ dAt
dBX
dDl
dhQ
aad
aad
pwx
pwx
aad
aad
abj
@@ -155671,8 +155640,8 @@ dhQ
dhQ
dhQ
dhQ
aad
aaa
pwx
esD
aaa
aaa
aad
@@ -155926,10 +155895,10 @@ djw
fRT
dAu
caE
aaa
aad
aad
aad
nMo
nNN
xmL
pwx
aad
aad
abj
@@ -156183,10 +156152,10 @@ drH
dzn
cLt
caE
aad
pwx
drP
dEn
dEn
hLf
drP
dEn
drP
@@ -156440,7 +156409,7 @@ djA
cJT
cLx
cOj
aaa
esD
dEn
dFz
dGY
@@ -156697,7 +156666,7 @@ djA
cJS
cLu
cOj
aad
pwx
dEn
dFA
dGZ
@@ -156954,7 +156923,7 @@ djA
dzo
cLt
caE
aaa
esD
drP
dFB
dHa
@@ -157211,8 +157180,8 @@ djA
dzp
cLy
cOj
aad
dEn
tzM
mtj
dFC
dHb
dIm
@@ -157471,7 +157440,7 @@ cOj
aaa
dEn
dFD
dHc
dHd
dIn
dJN
dEn
+185 -73
View File
@@ -19127,7 +19127,7 @@
/area/maintenance/disposal/incinerator)
"aFL" = (
/obj/machinery/atmospherics/pipe/layer_manifold,
/turf/closed/wall,
/turf/closed/wall/r_wall,
/area/maintenance/disposal/incinerator)
"aFM" = (
/obj/structure/grille,
@@ -19140,7 +19140,7 @@
/area/maintenance/disposal/incinerator)
"aFO" = (
/obj/machinery/atmospherics/pipe/simple/general/visible,
/turf/closed/wall,
/turf/closed/wall/r_wall,
/area/maintenance/disposal/incinerator)
"aFP" = (
/obj/machinery/door/firedoor,
@@ -19196,7 +19196,7 @@
"aFU" = (
/obj/machinery/atmospherics/pipe/simple/general/visible,
/obj/machinery/meter,
/turf/closed/wall,
/turf/closed/wall/r_wall,
/area/maintenance/disposal/incinerator)
"aFV" = (
/obj/structure/cable{
@@ -20074,6 +20074,7 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{
dir = 8
},
/obj/effect/spawner/structure/window/reinforced,
/turf/closed/wall,
/area/engine/atmos)
"aHy" = (
@@ -20930,7 +20931,7 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 5
},
/turf/closed/wall,
/turf/closed/wall/r_wall,
/area/maintenance/disposal/incinerator)
"aIM" = (
/obj/effect/turf_decal/bot,
@@ -20949,13 +20950,14 @@
/turf/closed/wall,
/area/maintenance/central)
"aIO" = (
/obj/machinery/atmospherics/pipe/simple/yellow/visible,
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{
dir = 8
},
/obj/effect/spawner/structure/window/reinforced,
/obj/machinery/atmospherics/pipe/layer_manifold,
/turf/closed/wall,
/area/engine/atmos)
"aIP" = (
@@ -21204,7 +21206,7 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 9
},
/turf/closed/wall,
/turf/closed/wall/r_wall,
/area/maintenance/disposal/incinerator)
"aJm" = (
/obj/effect/decal/cleanable/dirt,
@@ -21443,6 +21445,7 @@
/area/engine/atmos)
"aJI" = (
/obj/machinery/atmospherics/pipe/simple/green/visible,
/obj/effect/spawner/structure/window/reinforced,
/turf/closed/wall,
/area/engine/atmos)
"aJJ" = (
@@ -21839,13 +21842,6 @@
dir = 1
},
/area/hallway/primary/fore)
"aKm" = (
/obj/machinery/atmospherics/pipe/simple/yellow/visible,
/obj/machinery/atmospherics/pipe/simple/orange/visible{
dir = 4
},
/turf/closed/wall,
/area/engine/atmos)
"aKn" = (
/obj/effect/turf_decal/tile/neutral{
dir = 1
@@ -27414,10 +27410,8 @@
/obj/structure/cable{
icon_state = "1-2"
},
/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
dir = 8
},
/obj/effect/decal/cleanable/dirt,
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/open/floor/plating{
icon_state = "platingdmg1"
},
@@ -27448,11 +27442,10 @@
/turf/open/floor/plasteel/showroomfloor,
/area/medical/medbay/central)
"aSZ" = (
/obj/machinery/atmospherics/components/unary/vent_pump/on{
dir = 8
},
/obj/effect/decal/cleanable/dirt,
/obj/effect/decal/cleanable/cobweb/cobweb2,
/obj/machinery/atmospherics/components/unary/portables_connector/visible{
dir = 4
},
/turf/open/floor/plating{
icon_state = "panelscorched"
},
@@ -52343,6 +52336,7 @@
dir = 4
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/effect/spawner/structure/window/reinforced,
/turf/closed/wall,
/area/engine/atmos)
"bGp" = (
@@ -53445,6 +53439,7 @@
/obj/machinery/atmospherics/pipe/simple/orange/visible{
dir = 4
},
/obj/effect/spawner/structure/window/reinforced,
/turf/closed/wall,
/area/engine/atmos)
"bIc" = (
@@ -53458,10 +53453,11 @@
},
/area/engine/atmos)
"bIe" = (
/obj/machinery/atmospherics/pipe/simple/purple/visible,
/obj/machinery/atmospherics/pipe/simple/orange/visible{
dir = 4
},
/obj/effect/spawner/structure/window/reinforced,
/obj/machinery/atmospherics/pipe/layer_manifold,
/turf/closed/wall,
/area/engine/atmos)
"bIf" = (
@@ -61570,10 +61566,11 @@
/turf/open/space/basic,
/area/space/nearstation)
"bUM" = (
/obj/machinery/atmospherics/pipe/simple/yellow/visible{
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/effect/spawner/structure/window/reinforced,
/obj/machinery/atmospherics/pipe/layer_manifold{
dir = 4
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/closed/wall,
/area/engine/atmos)
"bUN" = (
@@ -63746,9 +63743,6 @@
},
/turf/open/floor/plasteel,
/area/hallway/secondary/exit/departure_lounge)
"bYf" = (
/turf/closed/mineral/random/labormineral,
/area/maintenance/starboard/aft)
"bYg" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/public/glass{
@@ -67202,7 +67196,6 @@
/area/maintenance/port/aft)
"cdS" = (
/obj/structure/sign/warning/securearea,
/obj/item/multitool,
/turf/closed/wall/r_wall,
/area/security/nuke_storage)
"cdT" = (
@@ -73372,6 +73365,7 @@
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/effect/decal/cleanable/dirt,
/obj/effect/landmark/blobstart,
/turf/open/floor/plating{
icon_state = "panelscorched"
},
@@ -75353,7 +75347,7 @@
dir = 4
},
/obj/machinery/airalarm{
pixel_z = 24
pixel_y = 22
},
/obj/machinery/light/small,
/obj/effect/decal/cleanable/dirt,
@@ -78587,6 +78581,7 @@
dir = 4
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/effect/spawner/structure/window/reinforced,
/turf/closed/wall,
/area/engine/atmos)
"cxU" = (
@@ -80399,7 +80394,7 @@
/obj/structure/lattice/catwalk,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/open/space,
/area/engine/atmos)
/area/space/nearstation)
"cCY" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 6
@@ -84290,7 +84285,9 @@
/area/maintenance/starboard)
"cOo" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/landmark/blobstart,
/obj/machinery/atmospherics/components/unary/portables_connector/visible{
dir = 4
},
/turf/open/floor/plating,
/area/maintenance/starboard)
"cOx" = (
@@ -84750,6 +84747,13 @@
},
/turf/open/floor/plasteel,
/area/engine/atmos)
"gwE" = (
/obj/structure/lattice,
/obj/machinery/atmospherics/pipe/heat_exchanging/simple{
dir = 9
},
/turf/open/space/basic,
/area/space/nearstation)
"gxY" = (
/obj/effect/turf_decal/tile/neutral{
dir = 8
@@ -84856,6 +84860,13 @@
},
/turf/open/floor/engine,
/area/science/xenobiology)
"iPI" = (
/obj/structure/lattice,
/obj/machinery/atmospherics/pipe/heat_exchanging/simple{
dir = 4
},
/turf/open/space/basic,
/area/space/nearstation)
"iSg" = (
/obj/effect/turf_decal/tile/neutral,
/obj/effect/turf_decal/tile/neutral{
@@ -84865,6 +84876,13 @@
/mob/living/simple_animal/hostile/retaliate/ghost,
/turf/open/floor/plasteel/dark,
/area/maintenance/starboard/fore)
"iXU" = (
/obj/effect/decal/cleanable/dirt,
/obj/machinery/atmospherics/components/binary/valve{
dir = 4
},
/turf/open/floor/plating,
/area/maintenance/starboard)
"iZo" = (
/turf/closed/wall/r_wall/rust,
/area/medical/virology)
@@ -84932,7 +84950,7 @@
/obj/machinery/atmospherics/pipe/simple/general/visible{
dir = 9
},
/turf/closed/wall,
/turf/closed/wall/r_wall,
/area/maintenance/disposal/incinerator)
"jOz" = (
/obj/structure/sign/warning/electricshock,
@@ -85119,6 +85137,10 @@
/obj/structure/sign/nanotrasen,
/turf/closed/wall,
/area/maintenance/port/fore)
"kWO" = (
/obj/effect/decal/cleanable/dirt,
/turf/closed/wall,
/area/maintenance/starboard)
"kXo" = (
/obj/structure/table/wood/poker,
/obj/item/toy/cards/deck,
@@ -85130,6 +85152,10 @@
icon_state = "wood-broken4"
},
/area/maintenance/port/fore)
"lht" = (
/obj/machinery/atmospherics/pipe/heat_exchanging/simple,
/turf/open/space/basic,
/area/space/nearstation)
"llm" = (
/obj/structure/sign/poster/ripped,
/turf/closed/wall,
@@ -85156,6 +85182,14 @@
/obj/machinery/status_display/evac,
/turf/closed/wall,
/area/security/warden)
"lVT" = (
/obj/structure/lattice,
/obj/structure/grille/broken,
/obj/machinery/atmospherics/pipe/heat_exchanging/simple{
dir = 9
},
/turf/open/space/basic,
/area/space/nearstation)
"mbs" = (
/obj/machinery/atmospherics/pipe/heat_exchanging/simple,
/obj/item/pickaxe,
@@ -85219,6 +85253,12 @@
/obj/effect/decal/cleanable/dirt,
/turf/closed/mineral/random/labormineral,
/area/space/nearstation)
"nHl" = (
/obj/machinery/atmospherics/pipe/heat_exchanging/simple{
dir = 10
},
/turf/open/space/basic,
/area/space/nearstation)
"nJw" = (
/obj/structure/table/reinforced,
/obj/machinery/door/firedoor,
@@ -85276,6 +85316,12 @@
/obj/structure/table/wood,
/turf/open/floor/wood,
/area/security/vacantoffice)
"oXQ" = (
/obj/machinery/atmospherics/pipe/heat_exchanging/simple{
dir = 6
},
/turf/open/space/basic,
/area/space/nearstation)
"ppP" = (
/turf/open/floor/wood{
icon_state = "wood-broken7"
@@ -85311,6 +85357,13 @@
},
/turf/open/floor/plasteel/showroomfloor,
/area/security/prison)
"qlK" = (
/obj/machinery/atmospherics/pipe/heat_exchanging/simple{
dir = 4
},
/obj/structure/lattice,
/turf/open/space/basic,
/area/space/nearstation)
"qvS" = (
/obj/machinery/navbeacon{
codes_txt = "patrol;next_patrol=W CPH";
@@ -85377,6 +85430,13 @@
/mob/living/carbon/monkey,
/turf/open/floor/grass,
/area/medical/virology)
"rnD" = (
/obj/machinery/atmospherics/pipe/heat_exchanging/simple{
dir = 6
},
/obj/structure/lattice,
/turf/open/space/basic,
/area/space/nearstation)
"ruL" = (
/obj/effect/spawner/structure/window/reinforced,
/obj/structure/cable{
@@ -85384,6 +85444,20 @@
},
/turf/open/floor/plating,
/area/security/prison)
"rvN" = (
/obj/effect/spawner/structure/window/reinforced,
/obj/machinery/atmospherics/pipe/heat_exchanging/junction{
dir = 4
},
/turf/open/floor/plating,
/area/maintenance/starboard)
"rwy" = (
/obj/machinery/atmospherics/pipe/heat_exchanging/simple{
dir = 10
},
/obj/structure/lattice,
/turf/open/space/basic,
/area/space/nearstation)
"rNm" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/lattice/catwalk,
@@ -85418,12 +85492,28 @@
/obj/structure/sign/warning,
/turf/closed/wall/rust,
/area/space/nearstation)
"tog" = (
/obj/structure/lattice,
/obj/machinery/atmospherics/pipe/heat_exchanging/simple,
/turf/open/space/basic,
/area/space/nearstation)
"tCi" = (
/obj/effect/decal/cleanable/glass,
/turf/open/floor/wood{
icon_state = "wood-broken3"
},
/area/maintenance/port/fore)
"tJC" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/decal/cleanable/cobweb/cobweb2,
/obj/machinery/atmospherics/components/binary/pump/on{
name = "Space Loop Out";
dir = 8
},
/turf/open/floor/plating{
icon_state = "panelscorched"
},
/area/maintenance/starboard)
"uda" = (
/turf/closed/wall/rust,
/area/security/warden)
@@ -85432,6 +85522,13 @@
/obj/effect/turf_decal/bot,
/turf/open/floor/plating,
/area/maintenance/port/fore)
"uhv" = (
/obj/structure/lattice,
/obj/machinery/atmospherics/pipe/heat_exchanging/simple{
dir = 5
},
/turf/open/space/basic,
/area/space/nearstation)
"ukP" = (
/obj/effect/decal/cleanable/dirt,
/mob/living/simple_animal/bot/cleanbot{
@@ -85480,6 +85577,13 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/open/floor/wood,
/area/security/vacantoffice)
"uOT" = (
/obj/structure/lattice/catwalk,
/obj/machinery/atmospherics/pipe/heat_exchanging/simple{
dir = 9
},
/turf/open/space/basic,
/area/space/nearstation)
"uRM" = (
/turf/open/floor/wood,
/area/security/vacantoffice)
@@ -85597,6 +85701,14 @@
/obj/effect/turf_decal/tile/neutral,
/turf/open/floor/plasteel/dark,
/area/security/prison)
"ygZ" = (
/obj/structure/lattice,
/obj/structure/grille/broken,
/obj/machinery/atmospherics/pipe/heat_exchanging/simple{
dir = 4
},
/turf/open/space/basic,
/area/space/nearstation)
"ykB" = (
/obj/structure/chair/stool,
/turf/open/floor/wood,
@@ -112781,9 +112893,9 @@ cvg
aMP
aFL
aIL
aFI
aEh
aFW
aFI
aEh
cko
cko
aaa
@@ -113040,9 +113152,9 @@ aFO
cwc
aFO
cwA
aFI
aFI
aFI
aEh
aEh
aEh
aaa
aaa
aaa
@@ -113554,9 +113666,9 @@ aFU
cwd
jHJ
cwH
aFI
aFI
aFI
aEh
aEh
aEh
aaa
aaa
aaa
@@ -113809,9 +113921,9 @@ cFF
cFF
cFF
aJl
aFI
aFI
aFI
aEh
aEh
aEh
cko
cko
aaa
@@ -114064,7 +114176,7 @@ cBz
aHd
aMZ
aFc
cFF
aFM
acm
aaa
aaQ
@@ -114578,7 +114690,7 @@ cBB
aHf
bDR
aFc
cFF
aFM
acm
aaa
cow
@@ -115092,7 +115204,7 @@ cBz
aHg
aNa
aFd
cFF
aFM
acm
aaa
cow
@@ -115606,7 +115718,7 @@ cBB
aHi
bFG
aFd
cFF
aFM
acm
aaa
acm
@@ -116120,7 +116232,7 @@ cBz
aHj
aNb
aVG
cFF
aFM
acm
aaa
cow
@@ -116628,13 +116740,13 @@ cpK
cqL
cph
bwy
aKm
bIe
clu
cBB
aHl
bId
aFe
cFF
aFM
acm
aaa
aaQ
@@ -124323,7 +124435,7 @@ koc
dbY
dlg
bWx
bYf
bPJ
ceU
cgI
cDp
@@ -128903,9 +129015,9 @@ ava
bkd
bkd
bkd
avA
avA
bkd
tJC
iXU
kWO
bBX
bkd
cwC
@@ -129159,10 +129271,10 @@ avA
bkd
aeu
aeu
aeu
acm
aaa
acm
bkd
rvN
rvN
bkd
aaa
bkd
cwD
@@ -129417,8 +129529,8 @@ bkd
aeu
alm
acm
aaQ
aeo
iPI
ygZ
aeo
acm
bkd
@@ -129674,9 +129786,9 @@ bkd
aeu
aeU
aaa
acm
aaa
acm
iPI
rwy
uhv
aaa
acm
acK
@@ -129930,10 +130042,10 @@ aaa
bhq
aeu
aUz
aaa
aaQ
aaa
acm
oXQ
lVT
rnD
gwE
aaa
acm
aaa
@@ -130187,10 +130299,10 @@ aaa
akA
aeu
aeU
aaa
qlK
aeo
aaa
acm
rwy
uhv
aaa
acm
aaa
@@ -130444,10 +130556,10 @@ aaa
cko
aeu
aeu
aeU
acm
aaa
acK
nHl
tog
lht
uOT
acm
acK
aaa
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+207 -70
View File
@@ -928,7 +928,7 @@
/area/security/prison)
"acb" = (
/obj/structure/table,
/obj/item/storage/box/dice,
/obj/item/storage/dice,
/turf/open/floor/plasteel,
/area/security/prison)
"acc" = (
@@ -15807,7 +15807,7 @@
/area/crew_quarters/dorms)
"aDZ" = (
/obj/structure/table,
/obj/item/storage/box/dice,
/obj/item/storage/dice,
/turf/open/floor/plasteel,
/area/crew_quarters/dorms)
"aEa" = (
@@ -21386,7 +21386,7 @@
/area/crew_quarters/locker)
"aPI" = (
/obj/structure/table,
/obj/item/storage/box/dice,
/obj/item/storage/dice,
/turf/open/floor/plasteel,
/area/crew_quarters/locker)
"aPJ" = (
@@ -42546,7 +42546,7 @@
dir = 10
},
/obj/structure/table/wood/poker,
/obj/item/storage/box/dice,
/obj/item/storage/dice,
/turf/open/floor/wood,
/area/crew_quarters/bar)
"bFt" = (
@@ -76185,6 +76185,14 @@
},
/turf/open/floor/plasteel,
/area/construction/mining/aux_base)
"cYI" = (
/obj/machinery/camera{
c_tag = "Research Division Circuitry Lab";
dir = 1;
network = list("ss13","rd")
},
/turf/open/floor/plasteel/white,
/area/science/circuit)
"cYJ" = (
/obj/docking_port/stationary{
dir = 2;
@@ -79847,12 +79855,12 @@
/turf/open/floor/plating,
/area/chapel/main)
"dka" = (
/obj/structure/noticeboard{
dir = 1;
pixel_y = -32
/obj/structure/lattice,
/obj/machinery/atmospherics/pipe/heat_exchanging/simple{
dir = 6
},
/turf/open/floor/plasteel/white,
/area/science/circuit)
/turf/open/space,
/area/space/nearstation)
"dlI" = (
/turf/closed/wall/r_wall,
/area/engine/supermatter)
@@ -81295,6 +81303,14 @@
},
/turf/open/floor/plasteel,
/area/science/circuit)
"etb" = (
/obj/machinery/atmospherics/pipe/heat_exchanging/simple{
dir = 9
},
/obj/structure/lattice,
/obj/structure/lattice,
/turf/open/space/basic,
/area/space/nearstation)
"etr" = (
/obj/machinery/vr_sleeper,
/turf/open/floor/plasteel,
@@ -81335,6 +81351,11 @@
},
/turf/open/floor/plating,
/area/maintenance/starboard/aft)
"faU" = (
/obj/structure/lattice,
/obj/machinery/atmospherics/pipe/heat_exchanging/simple,
/turf/open/space/basic,
/area/space/nearstation)
"fdr" = (
/obj/structure/closet/firecloset,
/turf/open/floor/plating,
@@ -81515,6 +81536,11 @@
},
/turf/open/floor/plating,
/area/maintenance/port/aft)
"idz" = (
/obj/machinery/atmospherics/pipe/heat_exchanging/simple,
/obj/structure/lattice,
/turf/open/space/basic,
/area/space/nearstation)
"ioI" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
@@ -81532,6 +81558,12 @@
},
/turf/open/floor/plasteel/dark,
/area/crew_quarters/cryopod)
"izh" = (
/obj/machinery/atmospherics/components/unary/portables_connector/visible{
dir = 4
},
/turf/open/floor/plasteel/white,
/area/science/circuit)
"izu" = (
/obj/machinery/autolathe{
name = "public autolathe"
@@ -81674,6 +81706,13 @@
},
/turf/open/floor/plasteel,
/area/hallway/primary/port)
"jDS" = (
/obj/machinery/atmospherics/pipe/heat_exchanging/simple{
dir = 9
},
/obj/structure/lattice,
/turf/open/space/basic,
/area/space/nearstation)
"jKK" = (
/obj/machinery/door/airlock/external{
req_access_txt = "13"
@@ -81907,6 +81946,16 @@
/obj/effect/landmark/start/roboticist,
/turf/open/floor/plasteel,
/area/science/robotics/lab)
"lUv" = (
/obj/structure/noticeboard{
dir = 1;
pixel_y = -32
},
/obj/machinery/atmospherics/components/unary/portables_connector/visible{
dir = 4
},
/turf/open/floor/plasteel/white,
/area/science/circuit)
"lWL" = (
/obj/machinery/smartfridge/organ/preloaded,
/turf/closed/wall,
@@ -82010,6 +82059,13 @@
},
/turf/open/floor/plating,
/area/maintenance/port)
"mIJ" = (
/obj/structure/lattice,
/obj/machinery/atmospherics/pipe/heat_exchanging/simple{
dir = 5
},
/turf/open/space,
/area/space/nearstation)
"mSd" = (
/obj/structure/cable/yellow{
icon_state = "4-8"
@@ -82105,6 +82161,13 @@
},
/turf/open/floor/plasteel,
/area/construction/storage/wing)
"nKU" = (
/obj/effect/spawner/structure/window/reinforced,
/obj/machinery/atmospherics/pipe/heat_exchanging/junction{
dir = 4
},
/turf/open/floor/plating,
/area/science/circuit)
"nLT" = (
/obj/structure/cable/yellow{
icon_state = "1-2"
@@ -82325,6 +82388,13 @@
},
/turf/open/floor/plating,
/area/maintenance/starboard)
"pDn" = (
/obj/structure/lattice,
/obj/machinery/atmospherics/pipe/heat_exchanging/simple{
dir = 6
},
/turf/open/space/basic,
/area/space/nearstation)
"pEv" = (
/obj/machinery/airalarm{
dir = 8;
@@ -82397,6 +82467,12 @@
},
/turf/open/floor/wood,
/area/security/vacantoffice)
"qaK" = (
/obj/machinery/atmospherics/pipe/simple/dark/visible{
dir = 10
},
/turf/open/floor/plasteel/white,
/area/science/circuit)
"qhe" = (
/obj/effect/turf_decal/stripes/line{
dir = 8
@@ -82442,6 +82518,11 @@
"qBq" = (
/turf/closed/wall/mineral/plastitanium,
/area/hallway/secondary/entry)
"qEc" = (
/obj/effect/spawner/structure/window/reinforced,
/obj/machinery/atmospherics/pipe/heat_exchanging/junction,
/turf/open/floor/plating,
/area/science/circuit)
"qJZ" = (
/obj/effect/turf_decal/stripes/line{
dir = 6
@@ -82459,13 +82540,12 @@
/turf/open/floor/plating,
/area/crew_quarters/cryopod)
"qRM" = (
/obj/machinery/camera{
c_tag = "Research Division Circuitry Lab";
dir = 1;
network = list("ss13","rd")
/obj/structure/lattice,
/obj/machinery/atmospherics/pipe/heat_exchanging/simple{
dir = 4
},
/turf/open/floor/plasteel/white,
/area/science/circuit)
/turf/open/space,
/area/space/nearstation)
"qVR" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 5
@@ -82623,6 +82703,10 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/open/floor/plasteel,
/area/crew_quarters/fitness/recreation)
"sqe" = (
/obj/machinery/atmospherics/pipe/heat_exchanging/simple,
/turf/open/space/basic,
/area/space/nearstation)
"stP" = (
/obj/machinery/atmospherics/components/binary/pump{
name = "Port to Fuel Pipe"
@@ -82708,6 +82792,13 @@
},
/turf/open/floor/plasteel/dark,
/area/crew_quarters/cryopod)
"tfs" = (
/obj/machinery/light,
/obj/machinery/atmospherics/components/binary/valve{
dir = 4
},
/turf/open/floor/plasteel/white,
/area/science/circuit)
"tre" = (
/obj/effect/turf_decal/stripes/line{
dir = 1
@@ -82756,6 +82847,13 @@
},
/turf/open/floor/plasteel/dark,
/area/medical/morgue)
"tID" = (
/obj/machinery/atmospherics/components/binary/pump/on{
name = "Space Loop Out";
dir = 4
},
/turf/open/floor/plasteel/white,
/area/science/circuit)
"tUa" = (
/obj/machinery/atmospherics/components/unary/portables_connector/visible{
dir = 1
@@ -82871,6 +82969,13 @@
},
/turf/open/floor/plasteel/white,
/area/science/circuit)
"vda" = (
/obj/structure/lattice,
/obj/machinery/atmospherics/pipe/heat_exchanging/simple{
dir = 9
},
/turf/open/space,
/area/space/nearstation)
"vgd" = (
/obj/item/taperecorder,
/obj/item/camera,
@@ -82935,6 +83040,11 @@
/obj/structure/lattice,
/turf/open/space/basic,
/area/space)
"vYs" = (
/obj/structure/lattice,
/obj/machinery/atmospherics/pipe/heat_exchanging/simple,
/turf/open/space,
/area/space/nearstation)
"wdu" = (
/obj/structure/grille,
/obj/structure/lattice,
@@ -83006,6 +83116,13 @@
/obj/effect/turf_decal/stripes/line,
/turf/closed/wall,
/area/science/circuit)
"wNQ" = (
/obj/machinery/atmospherics/pipe/heat_exchanging/simple{
dir = 10
},
/obj/structure/lattice,
/turf/open/space/basic,
/area/space/nearstation)
"wOE" = (
/obj/machinery/door/airlock/external{
name = "Atmospherics External Airlock";
@@ -83135,6 +83252,13 @@
},
/turf/open/floor/plating,
/area/maintenance/port/aft)
"xHA" = (
/obj/machinery/atmospherics/components/binary/pump/on{
name = "Space Loop In";
dir = 8
},
/turf/open/floor/plasteel/white,
/area/science/circuit)
"xIi" = (
/obj/structure/cable/yellow{
icon_state = "1-2"
@@ -83161,6 +83285,9 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/closed/wall,
/area/security/vacantoffice)
"xUO" = (
/turf/open/space,
/area/space/nearstation)
"xVl" = (
/turf/closed/wall,
/area/hallway/secondary/service)
@@ -83186,6 +83313,13 @@
},
/turf/open/floor/plating,
/area/maintenance/port/aft)
"yfk" = (
/obj/machinery/atmospherics/pipe/heat_exchanging/simple{
dir = 6
},
/obj/structure/lattice,
/turf/open/space/basic,
/area/space/nearstation)
"yfW" = (
/obj/structure/cable{
icon_state = "1-2"
@@ -83209,9 +83343,12 @@
/turf/open/floor/plasteel,
/area/science/circuit)
"ykE" = (
/obj/machinery/light,
/turf/open/floor/plasteel/white,
/area/science/circuit)
/obj/structure/lattice,
/obj/machinery/atmospherics/pipe/heat_exchanging/simple{
dir = 10
},
/turf/open/space,
/area/space/nearstation)
(1,1,1) = {"
oRp
@@ -120387,11 +120524,11 @@ kOt
gRS
oUA
cxO
qRM
cxO
cYI
krD
aaf
aaf
aaf
anS
anS
anS
@@ -120644,9 +120781,9 @@ oLW
gGT
wPk
dGH
dka
cxO
lUv
krD
aaf
aaa
aaf
aaf
@@ -120901,12 +121038,12 @@ ocT
xkG
uTS
cxO
ykE
cxO
tfs
krD
aaa
aaa
aaa
aaa
aaf
aaa
aaf
@@ -121159,9 +121296,9 @@ llb
uTS
cxO
cxO
krD
aaa
aaa
tID
noG
lMJ
aaa
aaa
aaf
@@ -121415,13 +121552,13 @@ lsv
txj
eEe
cxO
cxO
krD
aaa
aaa
aaa
aaf
aaf
izh
qaK
qEc
idz
idz
vYs
mIJ
aaa
anT
aaf
@@ -121672,13 +121809,13 @@ jyv
ohj
nnK
cxO
xHA
cxO
krD
aaa
aaa
aaa
aaa
aaf
qRM
aaa
anT
aaf
@@ -121929,13 +122066,13 @@ krD
noG
krD
noG
nKU
krD
krD
aaa
aaa
aaa
aaa
aaf
yfk
idz
idz
vda
aaa
aqB
aaa
@@ -122181,18 +122318,18 @@ dvY
dvY
dvY
aaf
aaf
aaf
dka
vYs
idz
idz
idz
jDS
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaf
aaf
wNQ
idz
vYs
mIJ
aaf
anT
aaa
@@ -122438,18 +122575,18 @@ crc
aaf
ctl
aaa
aaf
aaf
qRM
xUO
anT
anT
anT
aaf
aaf
aaf
lMJ
lMJ
aaf
aaa
ake
ake
ake
pDn
faU
vYs
jDS
aaf
anT
aaf
@@ -122695,17 +122832,17 @@ crd
ack
ack
aaf
aaf
ykE
idz
sqe
sqe
idz
idz
idz
idz
etb
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaf
ake
aaf
aaf
anT
+219 -67
View File
@@ -1741,7 +1741,7 @@
pixel_x = 12
},
/obj/machinery/shower{
pixel_y = 26
pixel_y = 16
},
/turf/open/floor/plasteel/freezer,
/area/security/prison)
@@ -22551,7 +22551,7 @@
/area/hallway/primary/starboard)
"aJa" = (
/obj/structure/table,
/obj/item/storage/box/dice,
/obj/item/storage/dice,
/obj/machinery/firealarm{
dir = 4;
pixel_x = -24
@@ -22871,7 +22871,7 @@
/obj/machinery/requests_console{
department = "Genetics";
name = "Genetics RC";
pixel_x = 28
pixel_x = 28
},
/turf/open/floor/plasteel/white,
/area/medical/genetics)
@@ -28655,7 +28655,7 @@
"aTf" = (
/obj/structure/table/wood,
/obj/item/clipboard,
/obj/item/storage/box/dice,
/obj/item/storage/dice,
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
@@ -39574,10 +39574,21 @@
},
/turf/open/floor/plasteel/dark,
/area/hallway/secondary/exit)
"boE" = (
/obj/effect/spawner/structure/window/reinforced,
/obj/machinery/atmospherics/pipe/simple/dark/visible{
dir = 5
},
/turf/open/floor/plasteel,
/area/science/mixing)
"bpj" = (
/obj/effect/turf_decal/stripes/corner{
dir = 4
},
/obj/machinery/camera{
c_tag = "Toxins Launch Room Access";
dir = 4
},
/turf/open/floor/plasteel,
/area/science/mixing)
"bpn" = (
@@ -39586,6 +39597,12 @@
},
/turf/closed/wall/r_wall,
/area/maintenance/disposal/incinerator)
"bpo" = (
/obj/machinery/atmospherics/pipe/simple/dark/visible{
dir = 10
},
/turf/open/floor/plasteel,
/area/science/mixing)
"bpB" = (
/obj/machinery/atmospherics/pipe/simple/yellow/visible{
dir = 10
@@ -40604,10 +40621,6 @@
},
/area/engine/atmos)
"bOJ" = (
/obj/machinery/camera{
c_tag = "Toxins Launch Room Access";
dir = 1
},
/obj/effect/turf_decal/stripes/corner{
dir = 8
},
@@ -41121,6 +41134,12 @@
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden,
/turf/closed/wall/r_wall,
/area/science/mixing)
"eXV" = (
/obj/machinery/atmospherics/pipe/simple/dark/visible{
dir = 4
},
/turf/open/floor/plating/asteroid/airless,
/area/asteroid/nearstation)
"eYe" = (
/obj/effect/mapping_helpers/airlock/locked,
/obj/machinery/door/airlock/public/glass{
@@ -41233,6 +41252,10 @@
/obj/item/wrench,
/turf/open/space,
/area/space/nearstation)
"foz" = (
/obj/machinery/atmospherics/components/unary/portables_connector/visible,
/turf/open/floor/plasteel,
/area/science/mixing)
"fsl" = (
/obj/docking_port/stationary{
dir = 2;
@@ -41526,6 +41549,12 @@
},
/turf/open/floor/plasteel/dark,
/area/engine/atmos)
"gZk" = (
/obj/machinery/atmospherics/pipe/simple/dark/visible{
dir = 10
},
/turf/open/floor/plating/asteroid/airless,
/area/asteroid/nearstation)
"heQ" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/machinery/navbeacon{
@@ -41580,6 +41609,13 @@
},
/turf/closed/wall/r_wall/rust,
/area/engine/atmos)
"hyX" = (
/obj/machinery/atmospherics/pipe/heat_exchanging/simple{
dir = 5
},
/obj/structure/lattice,
/turf/open/space/basic,
/area/space/nearstation)
"hAy" = (
/obj/machinery/power/apc{
areastring = "/area/science/mixing";
@@ -41820,6 +41856,13 @@
},
/turf/open/floor/plasteel,
/area/hallway/primary/aft)
"iOL" = (
/obj/machinery/atmospherics/pipe/heat_exchanging/simple{
dir = 9
},
/obj/structure/lattice/catwalk,
/turf/open/space/basic,
/area/space/nearstation)
"iUq" = (
/obj/machinery/status_display,
/turf/closed/wall,
@@ -42031,6 +42074,13 @@
},
/turf/closed/wall/r_wall/rust,
/area/engine/atmos)
"jEK" = (
/obj/machinery/atmospherics/pipe/heat_exchanging/simple{
dir = 4
},
/obj/structure/lattice/catwalk,
/turf/open/space/basic,
/area/space/nearstation)
"jFP" = (
/turf/open/space/basic,
/area/space/station_ruins)
@@ -42045,6 +42095,11 @@
/obj/structure/table/reinforced,
/turf/open/floor/plasteel,
/area/science/mixing)
"jIu" = (
/obj/effect/spawner/structure/window/reinforced,
/obj/machinery/atmospherics/pipe/simple/dark/visible,
/turf/open/floor/plasteel,
/area/science/mixing)
"jLF" = (
/obj/effect/turf_decal/stripes/line{
dir = 8
@@ -42065,8 +42120,16 @@
/obj/effect/turf_decal/stripes/line{
dir = 9
},
/obj/machinery/portable_atmospherics/canister,
/turf/open/floor/plasteel,
/area/science/mixing)
"jYq" = (
/obj/machinery/atmospherics/pipe/heat_exchanging/simple{
dir = 10
},
/obj/structure/lattice/catwalk,
/turf/open/space/basic,
/area/space/nearstation)
"kaA" = (
/obj/machinery/atmospherics/components/unary/portables_connector/visible{
dir = 1
@@ -42078,6 +42141,12 @@
},
/turf/open/floor/plasteel/cafeteria,
/area/engine/atmos)
"kcN" = (
/obj/machinery/atmospherics/pipe/heat_exchanging/junction{
dir = 4
},
/turf/open/floor/plating/asteroid/airless,
/area/asteroid/nearstation)
"kit" = (
/obj/machinery/portable_atmospherics/canister/toxins,
/obj/machinery/light/small{
@@ -42096,6 +42165,11 @@
},
/turf/open/floor/plasteel,
/area/engine/atmos)
"kpi" = (
/obj/machinery/atmospherics/pipe/heat_exchanging/simple,
/obj/structure/lattice/catwalk,
/turf/open/space/basic,
/area/space/nearstation)
"kqH" = (
/obj/machinery/atmospherics/components/binary/valve{
dir = 4;
@@ -42107,6 +42181,10 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/open/floor/plasteel,
/area/science/mixing)
"kuK" = (
/obj/effect/spawner/structure/window/reinforced,
/turf/open/floor/plasteel,
/area/science/mixing)
"kwF" = (
/obj/machinery/atmospherics/pipe/simple/green/visible{
dir = 4
@@ -42209,7 +42287,7 @@
/turf/closed/wall/r_wall/rust,
/area/science/storage)
"lmq" = (
/obj/machinery/portable_atmospherics/canister/oxygen,
/obj/machinery/portable_atmospherics/canister/nitrous_oxide,
/turf/open/floor/plating,
/area/science/storage)
"low" = (
@@ -42379,6 +42457,13 @@
},
/turf/open/floor/plasteel,
/area/engine/atmos)
"mdx" = (
/obj/machinery/atmospherics/pipe/heat_exchanging/simple{
dir = 5
},
/obj/structure/lattice/catwalk,
/turf/open/space/basic,
/area/space/nearstation)
"meo" = (
/turf/closed/wall/r_wall/rust,
/area/science/mixing)
@@ -42513,10 +42598,27 @@
},
/turf/open/floor/plasteel,
/area/hallway/primary/starboard)
"nbT" = (
/obj/machinery/atmospherics/components/binary/pump/on{
dir = 1;
name = "Space Loop Out"
},
/turf/open/floor/plasteel,
/area/science/mixing)
"ndg" = (
/obj/effect/turf_decal/tile/neutral,
/turf/open/floor/plasteel,
/area/hallway/primary/fore)
"nfS" = (
/obj/machinery/portable_atmospherics/canister/carbon_dioxide,
/turf/open/floor/plating,
/area/science/storage)
"ngY" = (
/obj/machinery/atmospherics/components/binary/valve{
dir = 1
},
/turf/open/floor/plasteel,
/area/science/mixing)
"nhU" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
@@ -42708,6 +42810,10 @@
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/engine/vacuum,
/area/maintenance/disposal/incinerator)
"oys" = (
/obj/machinery/portable_atmospherics/canister/oxygen,
/turf/open/floor/plasteel,
/area/science/mixing)
"oyD" = (
/turf/closed/wall,
/area/crew_quarters/toilet/restrooms)
@@ -42785,6 +42891,12 @@
/obj/effect/turf_decal/tile/neutral,
/turf/open/floor/plasteel,
/area/hallway/primary/starboard)
"oXz" = (
/obj/machinery/atmospherics/pipe/simple/dark/visible{
dir = 5
},
/turf/open/floor/plasteel,
/area/science/mixing)
"pbT" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 10
@@ -42976,6 +43088,12 @@
},
/turf/open/floor/plasteel/white,
/area/science/xenobiology)
"pMh" = (
/obj/machinery/atmospherics/components/binary/valve{
dir = 8
},
/turf/open/floor/plasteel,
/area/science/mixing)
"pNE" = (
/obj/structure/grille,
/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
@@ -44007,6 +44125,13 @@
},
/turf/open/floor/plasteel,
/area/hallway/secondary/exit)
"sIm" = (
/obj/effect/spawner/structure/window/reinforced,
/obj/machinery/atmospherics/pipe/simple/dark/visible{
dir = 10
},
/turf/open/floor/plasteel,
/area/science/mixing)
"sIu" = (
/turf/closed/wall/r_wall/rust,
/area/engine/gravity_generator)
@@ -46249,6 +46374,9 @@
/obj/machinery/atmospherics/components/unary/thermomachine/freezer{
dir = 4
},
/obj/effect/turf_decal/stripes/corner{
dir = 1
},
/turf/open/floor/plasteel,
/area/science/mixing)
"ujg" = (
@@ -46377,6 +46505,19 @@
},
/turf/open/floor/plasteel/dark,
/area/engine/gravity_generator)
"uDp" = (
/obj/machinery/atmospherics/pipe/simple/dark/visible{
dir = 5
},
/turf/open/floor/plating/asteroid/airless,
/area/asteroid/nearstation)
"uEu" = (
/obj/machinery/atmospherics/pipe/heat_exchanging/simple{
dir = 6
},
/obj/structure/lattice,
/turf/open/space/basic,
/area/space/nearstation)
"uGq" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/effect/turf_decal/tile/red{
@@ -46635,6 +46776,10 @@
dir = 1
},
/area/engine/atmos)
"vKE" = (
/obj/machinery/atmospherics/pipe/heat_exchanging/junction,
/turf/open/floor/plating/asteroid/airless,
/area/asteroid/nearstation)
"vMb" = (
/turf/open/floor/engine/n2o,
/area/engine/atmos)
@@ -46779,6 +46924,13 @@
/obj/structure/table/reinforced,
/turf/open/floor/plasteel,
/area/science/mixing)
"wRY" = (
/obj/machinery/atmospherics/pipe/heat_exchanging/simple{
dir = 4
},
/obj/structure/lattice,
/turf/open/space/basic,
/area/space/nearstation)
"wUF" = (
/obj/machinery/door/airlock/atmos/glass/critical{
heat_proof = 1;
@@ -97368,7 +97520,7 @@ meo
sVt
sVt
sVt
aad
iio
aad
aad
aad
@@ -97620,13 +97772,13 @@ meo
uiT
bfq
bpj
oys
oys
oys
oys
fjN
iio
aad
aad
aad
aad
aad
aad
aaa
aaa
aaa
@@ -97877,12 +98029,12 @@ sVt
kQn
lFm
fjN
iio
aad
aad
aad
aad
aad
hVE
hVE
hVE
hVE
pMh
kuK
aac
aaa
aaa
@@ -98134,15 +98286,15 @@ ucd
vZb
iiW
bOJ
iio
aad
aad
aad
aad
aad
aac
aaa
aaa
foz
nbT
ngY
oXz
bpo
jIu
vKE
kpi
mdx
aaa
aaa
aaa
@@ -98386,20 +98538,20 @@ aac
aad
eGm
lmq
lmq
nfS
sVt
iio
upN
iio
iio
iio
aad
aad
aad
iio
sIm
boE
iio
aac
aac
aaa
aaa
sdX
jEK
aaa
aaa
aaa
@@ -98651,12 +98803,12 @@ uTF
gGq
iio
aad
aad
aad
aac
aaa
aaa
aaa
gZk
uDp
uEu
hyX
jEK
jFP
jFP
jFP
@@ -98908,12 +99060,12 @@ msG
ogL
iio
aad
aad
aad
aac
aaa
aaa
aaa
aac
eXV
wRY
wRY
jEK
jFP
jFP
jFP
@@ -99165,12 +99317,12 @@ msG
diQ
iio
aad
aad
aac
aac
aaa
aaa
aaa
kcN
wRY
wRY
jEK
jFP
jFP
jFP
@@ -99424,10 +99576,10 @@ iio
aac
aac
aac
aaa
aaa
aaa
aaa
jEK
wRY
wRY
jEK
jFP
jFP
jFP
@@ -99681,10 +99833,10 @@ sdX
aac
aac
aac
aaa
aaa
aaa
aaa
jEK
wRY
wRY
jEK
jFP
jFP
jFP
@@ -99938,10 +100090,10 @@ sdX
aaa
aac
aaa
aaa
aaa
aaa
aaa
jEK
wRY
wRY
jEK
jFP
jFP
jFP
@@ -100195,10 +100347,10 @@ sdX
aaa
aaa
aaa
aaa
aaa
aaa
aaa
jYq
iOL
jYq
iOL
jFP
jFP
jFP
+143 -74
View File
@@ -2180,7 +2180,7 @@
/turf/open/floor/plasteel/dark,
/area/security/prison)
"afp" = (
/obj/item/storage/box/dice,
/obj/item/storage/dice,
/obj/structure/table,
/turf/open/floor/plasteel/dark,
/area/security/prison)
@@ -10645,7 +10645,7 @@
/area/crew_quarters/dorms)
"ayo" = (
/obj/structure/table/wood,
/obj/item/storage/box/dice,
/obj/item/storage/dice,
/turf/open/floor/carpet,
/area/crew_quarters/dorms)
"ayq" = (
@@ -34077,9 +34077,13 @@
/turf/closed/wall,
/area/science/mixing)
"bAG" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/closed/wall,
/area/science/mixing)
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
/turf/open/floor/plating{
icon_state = "platingdmg3"
},
/area/maintenance/department/science)
"bAH" = (
/obj/structure/disposaloutlet,
/obj/structure/disposalpipe/trunk{
@@ -37242,12 +37246,15 @@
req_access_txt = "8"
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 10
dir = 4
},
/turf/open/floor/plating,
/area/science/mixing)
"bGB" = (
/obj/machinery/light/small,
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
/turf/open/floor/plating,
/area/maintenance/department/science)
"bGD" = (
@@ -37753,13 +37760,13 @@
/turf/open/floor/plasteel,
/area/science/mixing)
"bHD" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
/obj/effect/turf_decal/tile/purple,
/obj/effect/turf_decal/tile/purple{
dir = 8
},
/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
dir = 1
},
/turf/open/floor/plasteel,
/area/science/mixing)
"bHE" = (
@@ -38317,11 +38324,12 @@
/turf/open/floor/plasteel,
/area/science/mixing)
"bIP" = (
/obj/structure/grille,
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
/turf/open/floor/plating,
/turf/open/floor/plating{
icon_state = "panelscorched"
},
/area/maintenance/department/science)
"bIQ" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
@@ -38331,11 +38339,9 @@
/area/maintenance/department/science)
"bIR" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
/turf/open/floor/plating{
icon_state = "platingdmg3"
dir = 10
},
/turf/open/floor/plating,
/area/maintenance/department/science)
"bIT" = (
/obj/structure/window/reinforced{
@@ -39403,7 +39409,7 @@
dir = 4
},
/obj/machinery/atmospherics/components/unary/vent_pump/on{
dir = 4
dir = 8
},
/obj/effect/turf_decal/stripes/line{
dir = 8
@@ -40359,11 +40365,12 @@
/turf/open/floor/engine/vacuum,
/area/science/mixing)
"bNq" = (
/obj/machinery/atmospherics/components/unary/outlet_injector/on{
dir = 1
/obj/machinery/door/airlock/maintenance{
name = "Toxins Launch Maintenance";
req_access_txt = "8"
},
/turf/open/floor/plating/airless,
/area/science/mixing)
/turf/open/floor/plating,
/area/maintenance/department/science)
"bNr" = (
/obj/structure/window/reinforced{
dir = 4
@@ -40798,11 +40805,10 @@
/turf/open/floor/engine/vacuum,
/area/science/mixing)
"bOu" = (
/obj/structure/lattice/catwalk,
/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{
dir = 6
/obj/machinery/atmospherics/components/unary/outlet_injector/on{
dir = 4
},
/turf/open/space,
/turf/open/floor/plating/airless,
/area/science/mixing)
"bOv" = (
/obj/structure/window/reinforced{
@@ -54165,11 +54171,10 @@
/turf/open/floor/plasteel,
/area/quartermaster/sorting)
"fwr" = (
/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
dir = 8
},
/turf/closed/wall,
/area/science/mixing)
/obj/machinery/door/airlock/maintenance/abandoned,
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/open/floor/plating,
/area/maintenance/department/science)
"fwI" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/structure/cable{
@@ -54258,6 +54263,7 @@
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/open/floor/plasteel/dark,
/area/science/mixing)
"fBZ" = (
@@ -54461,6 +54467,13 @@
},
/turf/open/floor/plating,
/area/maintenance/department/security/brig)
"gjv" = (
/obj/machinery/atmospherics/components/binary/pump/on{
name = "Space Loop In";
dir = 1
},
/turf/open/floor/plating,
/area/maintenance/department/science)
"gjN" = (
/obj/item/weldingtool,
/obj/effect/spawner/lootdrop/maintenance,
@@ -54810,10 +54823,11 @@
/turf/open/floor/plasteel/dark,
/area/hallway/secondary/exit/departure_lounge)
"gMm" = (
/obj/effect/spawner/structure/window/reinforced,
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 9
dir = 5
},
/turf/closed/wall,
/turf/open/floor/plating,
/area/science/mixing)
"gMO" = (
/obj/structure/plasticflaps/opaque,
@@ -55085,6 +55099,13 @@
/obj/item/clothing/glasses/regular,
/turf/open/floor/plating,
/area/maintenance/department/science)
"hxI" = (
/obj/machinery/atmospherics/pipe/heat_exchanging/simple{
dir = 5
},
/obj/structure/lattice/catwalk,
/turf/open/space,
/area/space/nearstation)
"hyh" = (
/obj/machinery/atmospherics/pipe/heat_exchanging/simple{
dir = 9
@@ -55189,6 +55210,12 @@
/obj/machinery/power/rad_collector/anchored,
/turf/open/floor/engine,
/area/engine/supermatter)
"hMx" = (
/obj/machinery/atmospherics/components/unary/portables_connector/visible,
/turf/open/floor/plating{
icon_state = "panelscorched"
},
/area/maintenance/department/science)
"hOx" = (
/obj/structure/cable{
icon_state = "2-4"
@@ -55450,6 +55477,13 @@
/obj/machinery/processor/slime,
/turf/open/floor/plasteel/white,
/area/science/xenobiology)
"ilE" = (
/obj/machinery/atmospherics/pipe/heat_exchanging/simple{
dir = 4
},
/obj/structure/lattice/catwalk,
/turf/open/space/basic,
/area/space/nearstation)
"imE" = (
/obj/effect/turf_decal/tile/purple,
/obj/effect/turf_decal/tile/purple{
@@ -57131,6 +57165,11 @@
},
/turf/open/floor/plasteel,
/area/hallway/primary/aft)
"mhK" = (
/obj/structure/lattice,
/obj/machinery/atmospherics/pipe/heat_exchanging/simple,
/turf/open/space/basic,
/area/space/nearstation)
"miw" = (
/obj/machinery/atmospherics/pipe/manifold/cyan/visible,
/obj/structure/cable/yellow{
@@ -57383,6 +57422,13 @@
},
/turf/open/floor/plating,
/area/maintenance/department/engine)
"mJp" = (
/obj/structure/lattice,
/obj/machinery/atmospherics/pipe/heat_exchanging/simple{
dir = 9
},
/turf/open/space/basic,
/area/space/nearstation)
"mKc" = (
/obj/structure/bookcase/random/nonfiction,
/turf/open/floor/plasteel/dark,
@@ -59579,12 +59625,10 @@
/turf/open/floor/plating,
/area/chapel/asteroid/monastery)
"rBh" = (
/obj/structure/mopbucket,
/obj/item/mop,
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
/obj/machinery/atmospherics/components/unary/portables_connector/visible,
/turf/open/floor/plating{
icon_state = "platingdmg1"
},
/turf/open/floor/plating,
/area/maintenance/department/science)
"rEh" = (
/obj/structure/table/glass,
@@ -60153,6 +60197,12 @@
},
/turf/open/floor/plating/airless,
/area/space/nearstation)
"tfx" = (
/obj/machinery/atmospherics/components/binary/valve{
dir = 1
},
/turf/open/floor/plating,
/area/maintenance/department/science)
"tfP" = (
/obj/item/beacon,
/turf/open/floor/engine,
@@ -60207,6 +60257,13 @@
/obj/structure/table,
/turf/open/floor/plating,
/area/maintenance/department/security/brig)
"tlp" = (
/obj/machinery/atmospherics/pipe/heat_exchanging/simple{
dir = 9
},
/obj/structure/lattice,
/turf/open/space/basic,
/area/space/nearstation)
"tlw" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/open/floor/plasteel,
@@ -61929,6 +61986,11 @@
},
/turf/open/floor/plasteel/dark,
/area/science/xenobiology)
"xlg" = (
/obj/effect/spawner/structure/window/reinforced,
/obj/machinery/atmospherics/pipe/heat_exchanging/junction,
/turf/open/floor/plating,
/area/maintenance/department/science)
"xlA" = (
/obj/machinery/door/airlock/maintenance/abandoned,
/turf/open/floor/plating,
@@ -62181,6 +62243,13 @@
/obj/effect/mapping_helpers/airlock/unres,
/turf/open/floor/plasteel/freezer,
/area/storage/emergency/port)
"xQk" = (
/obj/machinery/atmospherics/pipe/heat_exchanging/simple{
dir = 6
},
/obj/structure/lattice/catwalk,
/turf/open/space,
/area/space/nearstation)
"xSd" = (
/obj/machinery/light/small,
/turf/open/floor/plating,
@@ -105349,7 +105418,7 @@ bHy
bHy
bHy
bOs
aht
mZE
aaa
aaa
aaa
@@ -105606,7 +105675,7 @@ bCV
bCV
bCV
bOu
bNq
aht
aaa
aaa
aaa
@@ -106115,7 +106184,7 @@ bFt
bGy
bHD
fBz
bCV
gMm
bCV
bCV
bCV
@@ -106627,17 +106696,17 @@ bwm
bAF
bAF
bGA
bAG
fwr
gMm
bAF
bAF
aht
aht
abI
abI
abI
abI
bAF
bAF
bAF
uaO
dsz
xQk
hxI
xQk
hxI
abI
abI
abI
@@ -106883,18 +106952,18 @@ cDB
lWy
tSL
lWy
cDB
bAG
bwm
rBh
bwm
aht
aht
aht
aaa
aht
aaa
aaa
aaa
gjv
tfx
xlg
mJp
nqu
mJp
nqu
tlp
ilE
aaa
aaa
aaa
@@ -107140,18 +107209,18 @@ cDB
hxn
uvq
bFx
tSL
bwm
bIP
bwm
aht
aaa
aht
aaa
aht
aht
aht
aht
bNq
tSL
hMx
tfx
xlg
mhK
wIo
mhK
mhK
mhK
hyh
aht
aaa
aaa
@@ -107399,16 +107468,16 @@ obP
bFy
bGB
bwm
bIQ
bwm
aht
bwm
rNB
bwm
bwm
rNB
bwm
rNB
bwm
aaa
cdm
aby
aaa
aaa
@@ -107654,9 +107723,9 @@ rKL
lWy
lWy
bFz
lWy
xlA
bIR
fwr
eMC
bwm
aht
bwm
@@ -1,20 +0,0 @@
#define JOB_MODIFICATION_MAP_NAME "PubbyStation"
/datum/job/hos/New()
..()
MAP_JOB_CHECK
access += ACCESS_CREMATORIUM
minimal_access += ACCESS_CREMATORIUM
/datum/job/warden/New()
..()
MAP_JOB_CHECK
access += ACCESS_CREMATORIUM
minimal_access += ACCESS_CREMATORIUM
/datum/job/officer/New()
..()
MAP_JOB_CHECK
access += ACCESS_CREMATORIUM
minimal_access += ACCESS_CREMATORIUM
+3 -3
View File
@@ -4095,7 +4095,7 @@
/area/engine/supermatter)
"aOP" = (
/obj/structure/table/wood,
/obj/item/storage/box/dice,
/obj/item/storage/dice,
/turf/open/floor/plasteel/dark,
/area/security/prison)
"aPw" = (
@@ -27914,7 +27914,7 @@
"nIM" = (
/obj/structure/table/wood/poker,
/obj/item/toy/cards/deck,
/obj/item/storage/box/dice{
/obj/item/storage/dice{
pixel_x = 8
},
/obj/structure/sign/poster/contraband/random{
@@ -33380,7 +33380,7 @@
/area/bridge)
"qMN" = (
/obj/structure/table,
/obj/item/storage/box/dice,
/obj/item/storage/dice,
/turf/open/floor/plasteel/grimy,
/area/crew_quarters/fitness/recreation)
"qNB" = (
+2 -2
View File
@@ -8429,7 +8429,7 @@
/area/centcom/ferry)
"tx" = (
/obj/structure/table/wood,
/obj/item/storage/box/dice,
/obj/item/storage/dice,
/turf/open/floor/plasteel/grimy,
/area/centcom/ferry)
"ty" = (
@@ -10217,7 +10217,7 @@
/area/wizard_station)
"xy" = (
/obj/structure/table/wood/fancy,
/obj/item/storage/box/dice{
/obj/item/storage/dice{
icon_state = "magicdicebag"
},
/turf/open/floor/carpet,
+6 -1
View File
@@ -7,5 +7,10 @@
"whiteship": "whiteship_pubby",
"ferry": "ferry_fancy",
"cargo": "cargo_box"
}
},
"job_access_add": {
"/datum/job/hos": [27],
"/datum/job/officer": [27],
"/datum/job/detective": [27]
}
}
+1 -1
View File
@@ -307,7 +307,7 @@
"D" = (
/obj/structure/table/reinforced,
/obj/item/folder,
/obj/item/storage/box/dice,
/obj/item/storage/dice,
/obj/effect/turf_decal/delivery,
/turf/open/floor/plasteel,
/area/shuttle/arrival)
+1 -1
View File
@@ -237,7 +237,7 @@
/area/shuttle/arrival)
"C" = (
/obj/structure/table/reinforced,
/obj/item/storage/box/dice{
/obj/item/storage/dice{
pixel_x = -2;
pixel_y = 8
},
File diff suppressed because it is too large Load Diff
+1
View File
@@ -39,6 +39,7 @@
name = "Mining Shuttle Airlock"
},
/obj/docking_port/mobile{
callTime = 5;
dwidth = 3;
height = 4;
id = "snow_taxi";
+1 -1
View File
@@ -7,7 +7,7 @@
/area/hilbertshotel)
"c" = (
/obj/machinery/jukebox{
req_access = null
req_one_access = null
},
/turf/open/indestructible/hotelwood,
/area/hilbertshotel)
+2 -4
View File
@@ -22,12 +22,10 @@
#define SURGICAL_TOOL (1<<10)
///Can be worn on certain slots (currently belt and id) that would otherwise require an uniform.
#define NO_UNIFORM_REQUIRED (1<<11)
///Damage when attacking people is not affected by combat mode.
#define NO_COMBAT_MODE_FORCE_MODIFIER (1<<12)
/// This item can be used to parry. Only a basic check used to determine if we should proceed with parry chain at all.
#define ITEM_CAN_PARRY (1<<13)
#define ITEM_CAN_PARRY (1<<12)
/// This item can be used in the directional blocking system. Only a basic check used to determine if we should proceed with directional block handling at all.
#define ITEM_CAN_BLOCK (1<<14)
#define ITEM_CAN_BLOCK (1<<13)
// Flags for the clothing_flags var on /obj/item/clothing
+8 -2
View File
@@ -9,8 +9,11 @@
#define UNIQUE_RENAME (1<<6) //can you customize the description/name of the thing?
#define USES_TGUI (1<<7) //put on things that use tgui on ui_interact instead of custom/old UI.
#define FROZEN (1<<8)
#define SHOVABLE_ONTO (1<<9) //called on turf.shove_act() to consider whether an object should have a niche effect (defined in their own shove_act()) when someone is pushed onto it, or do a sanity CanPass() check.
#define BLOCK_Z_FALL (1<<10)
#define BLOCK_Z_OUT_DOWN (1<<9) // Should this object block z falling from loc?
#define BLOCK_Z_OUT_UP (1<<10) // Should this object block z uprise from loc?
#define BLOCK_Z_IN_DOWN (1<<11) // Should this object block z falling from above?
#define BLOCK_Z_IN_UP (1<<12) // Should this object block z uprise from below?
#define SHOVABLE_ONTO (1<<13) //called on turf.shove_act() to consider whether an object should have a niche effect (defined in their own shove_act()) when someone is pushed onto it, or do a sanity CanPass() check.
/// Integrity defines for clothing (not flags but close enough)
#define CLOTHING_PRISTINE 0 // We have no damage on the clothing
@@ -18,3 +21,6 @@
#define CLOTHING_SHREDDED 2 // The clothing is useless and cannot be equipped unless repaired first
// If you add new ones, be sure to add them to /obj/Initialize as well for complete mapping support
/// Flags for the pod_flags var on /obj/structure/closet/supplypod
#define FIRST_SOUNDS (1<<0) // If it shouldn't play sounds the first time it lands, used for reverse mode
+2
View File
@@ -0,0 +1,2 @@
//ids
#define ACTIONSPEED_ID_SANITY "sanity_component"
+4
View File
@@ -63,6 +63,10 @@
#define CONTRACT_UPLINK_PAGE_CONTRACTS "CONTRACTS"
#define CONTRACT_UPLINK_PAGE_HUB "HUB"
//Lingblood stuff
#define LINGBLOOD_DETECTION_THRESHOLD 1
#define LINGBLOOD_EXPLOSION_MULT 2
#define LINGBLOOD_EXPLOSION_THRESHOLD (LINGBLOOD_DETECTION_THRESHOLD * LINGBLOOD_EXPLOSION_MULT) //Hey, important to note here: the explosion threshold is explicitly more than, rather than more than or equal to. This stops a single loud ability from triggering the explosion threshold.
///Heretics --
#define IS_HERETIC(mob) (mob.mind?.has_antag_datum(/datum/antagonist/heretic))
+36 -20
View File
@@ -13,27 +13,43 @@
#define STYLE_GONDOLA 13
#define STYLE_SEETHROUGH 14
#define POD_ICON_STATE 1
#define POD_NAME 2
#define POD_DESC 3
#define POD_SHAPE 1
#define POD_BASE 2
#define POD_DOOR 3
#define POD_DECAL 4
#define POD_GLOW 5
#define POD_RUBBLE_TYPE 6
#define POD_NAME 7
#define POD_DESC 8
#define POD_STYLES list(\
list("supplypod", "supply pod", "A Nanotrasen supply drop pod."),\
list("bluespacepod", "bluespace supply pod" , "A Nanotrasen Bluespace supply pod. Teleports back to CentCom after delivery."),\
list("centcompod", "\improper Centcom supply pod", "A Nanotrasen supply pod, this one has been marked with Central Command's designations. Teleports back to Centcom after delivery."),\
list("syndiepod", "blood-red supply pod", "A dark, intimidating supply pod, covered in the blood-red markings of the Syndicate. It's probably best to stand back from this."),\
list("squadpod", "\improper MK. II supply pod", "A Nanotrasen supply pod. This one has been marked the markings of some sort of elite strike team."),\
list("cultpod", "bloody supply pod", "A Nanotrasen supply pod covered in scratch-marks, blood, and strange runes."),\
list("missilepod", "cruise missile", "A big ass missile that didn't seem to fully detonate. It was likely launched from some far-off deep space missile silo. There appears to be an auxillery payload hatch on the side, though manually opening it is likely impossible."),\
list("smissilepod", "\improper Syndicate cruise missile", "A big ass, blood-red missile that didn't seem to fully detonate. It was likely launched from some deep space Syndicate missile silo. There appears to be an auxillery payload hatch on the side, though manually opening it is likely impossible."),\
list("boxpod", "\improper Aussec supply crate", "An incredibly sturdy supply crate, designed to withstand orbital re-entry. Has 'Aussec Armory - 2532' engraved on the side."),\
list("honkpod", "\improper HONK pod", "A brightly-colored supply pod. It likely originated from the Clown Federation."),\
list("fruitpod", "\improper Orange", "An angry orange."),\
list("", "\improper S.T.E.A.L.T.H. pod MKVII", "A supply pod that, under normal circumstances, is completely invisible to conventional methods of detection. How are you even seeing this?"),\
list("gondolapod", "gondola", "The silent walker. This one seems to be part of a delivery agency."),\
list("", "", "")\
)
#define RUBBLE_NONE 1
#define RUBBLE_NORMAL 2
#define RUBBLE_WIDE 3
#define RUBBLE_THIN 4
#define POD_SHAPE_NORML 1
#define POD_SHAPE_OTHER 2
#define SUPPLYPOD_X_OFFSET -16
GLOBAL_LIST_EMPTY(supplypod_loading_bays)
GLOBAL_LIST_INIT(podstyles, list(\
list(POD_SHAPE_NORML, "pod", TRUE, "default", "yellow", RUBBLE_NORMAL, "supply pod", "A Nanotrasen supply drop pod."),\
list(POD_SHAPE_NORML, "advpod", TRUE, "bluespace", "blue", RUBBLE_NORMAL, "bluespace supply pod" , "A Nanotrasen Bluespace supply pod. Teleports back to CentCom after delivery."),\
list(POD_SHAPE_NORML, "advpod", TRUE, "centcom", "blue", RUBBLE_NORMAL, "\improper CentCom supply pod", "A Nanotrasen supply pod, this one has been marked with Central Command's designations. Teleports back to CentCom after delivery."),\
list(POD_SHAPE_NORML, "darkpod", TRUE, "syndicate", "red", RUBBLE_NORMAL, "blood-red supply pod", "An intimidating supply pod, covered in the blood-red markings of the Syndicate. It's probably best to stand back from this."),\
list(POD_SHAPE_NORML, "darkpod", TRUE, "deathsquad", "blue", RUBBLE_NORMAL, "\improper Deathsquad drop pod", "A Nanotrasen drop pod. This one has been marked the markings of Nanotrasen's elite strike team."),\
list(POD_SHAPE_NORML, "pod", TRUE, "cultist", "red", RUBBLE_NORMAL, "bloody supply pod", "A Nanotrasen supply pod covered in scratch-marks, blood, and strange runes."),\
list(POD_SHAPE_OTHER, "missile", FALSE, FALSE, FALSE, RUBBLE_THIN, "cruise missile", "A big ass missile that didn't seem to fully detonate. It was likely launched from some far-off deep space missile silo. There appears to be an auxillery payload hatch on the side, though manually opening it is likely impossible."),\
list(POD_SHAPE_OTHER, "smissile", FALSE, FALSE, FALSE, RUBBLE_THIN, "\improper Syndicate cruise missile", "A big ass, blood-red missile that didn't seem to fully detonate. It was likely launched from some deep space Syndicate missile silo. There appears to be an auxillery payload hatch on the side, though manually opening it is likely impossible."),\
list(POD_SHAPE_OTHER, "box", TRUE, FALSE, FALSE, RUBBLE_WIDE, "\improper Aussec supply crate", "An incredibly sturdy supply crate, designed to withstand orbital re-entry. Has 'Aussec Armory - 2532' engraved on the side."),\
list(POD_SHAPE_NORML, "clownpod", TRUE, "clown", "green", RUBBLE_NORMAL, "\improper HONK pod", "A brightly-colored supply pod. It likely originated from the Clown Federation."),\
list(POD_SHAPE_OTHER, "orange", TRUE, FALSE, FALSE, RUBBLE_NONE, "\improper Orange", "An angry orange."),\
list(POD_SHAPE_OTHER, FALSE, FALSE, FALSE, FALSE, RUBBLE_NONE, "\improper S.T.E.A.L.T.H. pod MKVII", "A supply pod that, under normal circumstances, is completely invisible to conventional methods of detection. How are you even seeing this?"),\
list(POD_SHAPE_OTHER, "gondola", FALSE, FALSE, FALSE, RUBBLE_NONE, "gondola", "The silent walker. This one seems to be part of a delivery agency."),\
list(POD_SHAPE_OTHER, FALSE, FALSE, FALSE, FALSE, RUBBLE_NONE, FALSE, FALSE, "rl_click", "give_po")\
))
#define PACK_GOODY_NONE 0
#define PACK_GOODY_PUBLIC 1 //can be bought by both privates and cargo
#define PACK_GOODY_PRIVATE 2 //can be bought only by privates
#define PACK_GOODY_PRIVATE 2 //can be bought only by privates
+9
View File
@@ -105,3 +105,12 @@
//belly sound pref things
#define NORMIE_HEARCHECK 4
//icon states for the default eyes and for a state for no eye
#define DEFAULT_EYES_TYPE "normal"
#define DEFAULT_LEFT_EYE_STATE "normal_left_eye"
#define DEFAULT_RIGHT_EYE_STATE "normal_right_eye"
#define DEFAULT_NO_EYE_STATE "no_eye"
//special species definitions
#define MINIMUM_MUTANT_COLOR "#202020" //this is how dark players mutant parts and skin can be
+51 -51
View File
@@ -1,54 +1,54 @@
// This is eventually for wjohn to add more color standardization stuff like I keep asking him >:(
#define COLOR_INPUT_DISABLED "#F0F0F0"
#define COLOR_INPUT_ENABLED "#D3B5B5"
#define COLOR_FLOORTILE_GRAY "#8D8B8B"
#define COLOR_ALMOST_BLACK "#333333"
#define COLOR_BLACK "#000000"
#define COLOR_RED "#FF0000"
#define COLOR_RED_LIGHT "#FF3333"
#define COLOR_MAROON "#800000"
#define COLOR_YELLOW "#FFFF00"
#define COLOR_OLIVE "#808000"
#define COLOR_LIME "#32CD32"
#define COLOR_GREEN "#008000"
#define COLOR_CYAN "#00FFFF"
#define COLOR_TEAL "#008080"
#define COLOR_BLUE "#0000FF"
#define COLOR_BLUE_LIGHT "#33CCFF"
#define COLOR_NAVY "#000080"
#define COLOR_PINK "#FFC0CB"
#define COLOR_MAGENTA "#FF00FF"
#define COLOR_PURPLE "#800080"
#define COLOR_ORANGE "#FF9900"
#define COLOR_BEIGE "#CEB689"
#define COLOR_BLUE_GRAY "#75A2BB"
#define COLOR_BROWN "#BA9F6D"
#define COLOR_DARK_BROWN "#997C4F"
#define COLOR_DARK_ORANGE "#C3630C"
#define COLOR_GREEN_GRAY "#99BB76"
#define COLOR_RED_GRAY "#B4696A"
#define COLOR_PALE_BLUE_GRAY "#98C5DF"
#define COLOR_PALE_GREEN_GRAY "#B7D993"
#define COLOR_PALE_ORANGE "#FFC066"
#define COLOR_PALE_RED_GRAY "#D59998"
#define COLOR_PALE_PURPLE_GRAY "#CBB1CA"
#define COLOR_PURPLE_GRAY "#AE8CA8"
#define COLOR_INPUT_DISABLED "#F0F0F0"
#define COLOR_INPUT_ENABLED "#D3B5B5"
#define COLOR_FLOORTILE_GRAY "#8D8B8B"
#define COLOR_ALMOST_BLACK "#333333"
#define COLOR_BLACK "#000000"
#define COLOR_RED "#FF0000"
#define COLOR_RED_LIGHT "#FF3333"
#define COLOR_MAROON "#800000"
#define COLOR_YELLOW "#FFFF00"
#define COLOR_OLIVE "#808000"
#define COLOR_LIME "#32CD32"
#define COLOR_GREEN "#008000"
#define COLOR_CYAN "#00FFFF"
#define COLOR_TEAL "#008080"
#define COLOR_BLUE "#0000FF"
#define COLOR_BLUE_LIGHT "#33CCFF"
#define COLOR_NAVY "#000080"
#define COLOR_PINK "#FFC0CB"
#define COLOR_MAGENTA "#FF00FF"
#define COLOR_PURPLE "#800080"
#define COLOR_ORANGE "#FF9900"
#define COLOR_BEIGE "#CEB689"
#define COLOR_BLUE_GRAY "#75A2BB"
#define COLOR_BROWN "#BA9F6D"
#define COLOR_DARK_BROWN "#997C4F"
#define COLOR_DARK_ORANGE "#C3630C"
#define COLOR_GREEN_GRAY "#99BB76"
#define COLOR_RED_GRAY "#B4696A"
#define COLOR_PALE_BLUE_GRAY "#98C5DF"
#define COLOR_PALE_GREEN_GRAY "#B7D993"
#define COLOR_PALE_ORANGE "#FFC066"
#define COLOR_PALE_RED_GRAY "#D59998"
#define COLOR_PALE_PURPLE_GRAY "#CBB1CA"
#define COLOR_PURPLE_GRAY "#AE8CA8"
//Color defines used by the assembly detailer.
#define COLOR_ASSEMBLY_BLACK "#545454"
#define COLOR_ASSEMBLY_BGRAY "#9497AB"
#define COLOR_ASSEMBLY_WHITE "#E2E2E2"
#define COLOR_ASSEMBLY_RED "#CC4242"
#define COLOR_ASSEMBLY_ORANGE "#E39751"
#define COLOR_ASSEMBLY_BEIGE "#AF9366"
#define COLOR_ASSEMBLY_BROWN "#97670E"
#define COLOR_ASSEMBLY_GOLD "#AA9100"
#define COLOR_ASSEMBLY_YELLOW "#CECA2B"
#define COLOR_ASSEMBLY_GURKHA "#999875"
#define COLOR_ASSEMBLY_LGREEN "#789876"
#define COLOR_ASSEMBLY_GREEN "#44843C"
#define COLOR_ASSEMBLY_LBLUE "#5D99BE"
#define COLOR_ASSEMBLY_BLUE "#38559E"
#define COLOR_ASSEMBLY_PURPLE "#6F6192"
#define COLOR_ASSEMBLY_PINK "#ff4adc"
// Color defines used by the assembly detailer.
#define COLOR_ASSEMBLY_BLACK "#545454"
#define COLOR_ASSEMBLY_BGRAY "#9497AB"
#define COLOR_ASSEMBLY_WHITE "#E2E2E2"
#define COLOR_ASSEMBLY_RED "#CC4242"
#define COLOR_ASSEMBLY_ORANGE "#E39751"
#define COLOR_ASSEMBLY_BEIGE "#AF9366"
#define COLOR_ASSEMBLY_BROWN "#97670E"
#define COLOR_ASSEMBLY_GOLD "#AA9100"
#define COLOR_ASSEMBLY_YELLOW "#CECA2B"
#define COLOR_ASSEMBLY_GURKHA "#999875"
#define COLOR_ASSEMBLY_LGREEN "#789876"
#define COLOR_ASSEMBLY_GREEN "#44843C"
#define COLOR_ASSEMBLY_LBLUE "#5D99BE"
#define COLOR_ASSEMBLY_BLUE "#38559E"
#define COLOR_ASSEMBLY_PURPLE "#6F6192"
#define COLOR_ASSEMBLY_PINK "#ff4adc"
+9 -46
View File
@@ -34,6 +34,8 @@
#define COMBAT_FLAGS_DEFAULT (COMBAT_FLAG_PARRY_CAPABLE | COMBAT_FLAG_BLOCK_CAPABLE)
/// Default combat flags for everyone else (so literally everyone but humans).
#define COMBAT_FLAGS_SPRINT_EXEMPT (COMBAT_FLAG_SPRINT_ACTIVE | COMBAT_FLAG_SPRINT_TOGGLED | COMBAT_FLAG_SPRINT_FORCED | COMBAT_FLAG_PARRY_CAPABLE | COMBAT_FLAG_BLOCK_CAPABLE)
/// Default combat flags for those in stamina combat system
#define COMBAT_FLAGS_STAMINA_COMBAT (COMBAT_FLAG_PARRY_CAPABLE | COMBAT_FLAG_BLOCK_CAPABLE | COMBAT_FLAG_STAMINA_BUFFER)
/// The user wants sprint mode on
#define COMBAT_FLAG_SPRINT_TOGGLED (1<<0)
@@ -47,8 +49,8 @@
#define COMBAT_FLAG_RESISTING_REST (1<<4)
/// Intentionally resting
#define COMBAT_FLAG_INTENTIONALLY_RESTING (1<<5)
/// Currently stamcritted but not as violently
#define COMBAT_FLAG_SOFT_STAMCRIT (1<<6)
/// This mob requires stamina buffer to do things that require stamina buffer. Not having this exempts the mob from stamina combat.
#define COMBAT_FLAG_STAMINA_BUFFER (1<<6)
/// Force sprint mode on at all times, overrides everything including sprint disable traits.
#define COMBAT_FLAG_SPRINT_FORCED (1<<7)
/// This mob is capable of using the active parrying system.
@@ -64,26 +66,17 @@
// Helpers for getting someone's stamcrit state. Cast to living.
#define NOT_STAMCRIT 0
#define SOFT_STAMCRIT 1
#define HARD_STAMCRIT 2
#define HARD_STAMCRIT 1
// Stamcrit check helpers
#define IS_STAMCRIT(mob) (CHECK_STAMCRIT(mob) != NOT_STAMCRIT)
#define CHECK_STAMCRIT(mob) ((mob.combat_flags & COMBAT_FLAG_HARD_STAMCRIT)? HARD_STAMCRIT : ((mob.combat_flags & COMBAT_FLAG_SOFT_STAMCRIT)? SOFT_STAMCRIT : NOT_STAMCRIT))
#define CHECK_STAMCRIT(mob) (mob.combat_flags & COMBAT_FLAG_HARD_STAMCRIT)
//stamina stuff
///Threshold over which attacks start being hindered.
#define STAMINA_NEAR_SOFTCRIT 90
///softcrit for stamina damage. prevents standing up, some actions that cost stamina, etc, but doesn't force a rest or stop movement
#define STAMINA_SOFTCRIT 100
///sanity cap to prevent stamina actions (that are still performable) from sending you into crit.
#define STAMINA_NEAR_CRIT 130
///crit for stamina damage. forces a rest, and stops movement until stamina goes back to stamina softcrit
/// crit for stamina damage. forces a rest, and stops movement until stamina goes back to stamina softcrit
#define STAMINA_CRIT 140
///same as STAMINA_SOFTCRIT except for the more traditional health calculations
#define STAMINA_SOFTCRIT_TRADITIONAL 0
///ditto, but for STAMINA_CRIT
#define STAMINA_CRIT_TRADITIONAL -40
/// Threshold under for which you are unable to draw from stamina health to replace stamina buffer
#define STAMINA_NO_OVERDRAW_THRESHOLD 100
#define CRAWLUNDER_DELAY 30 //Delay for crawling under a standing mob
@@ -252,36 +245,6 @@ GLOBAL_LIST_INIT(shove_disarming_types, typecacheof(list(
//We will round to this value in damage calculations.
#define DAMAGE_PRECISION 0.01
//items total mass, used to calculate their attacks' stamina costs. If not defined, the cost will be (w_class * 1.25)
#define TOTAL_MASS_TINY_ITEM 1.25
#define TOTAL_MASS_SMALL_ITEM 2.5
#define TOTAL_MASS_NORMAL_ITEM 3.75
#define TOTAL_MASS_BULKY_ITEM 5
#define TOTAL_MASS_HUGE_ITEM 6.25
#define TOTAL_MASS_GIGANTIC_ITEM 7.5
#define TOTAL_MASS_HAND_REPLACEMENT 5 //standard punching stamina cost. most hand replacements are huge items anyway.
#define TOTAL_MASS_MEDIEVAL_WEAPON 3.6 //very, very generic average sword/warpick/etc. weight in pounds.
#define TOTAL_MASS_TOY_SWORD 1.5
//stamina cost defines.
#define STAM_COST_ATTACK_OBJ_MULT 1.2
#define STAM_COST_ATTACK_MOB_MULT 1
#define STAM_COST_BATON_MOB_MULT 1
#define STAM_COST_NO_COMBAT_MULT 1.25
#define STAM_COST_W_CLASS_MULT 1.25
#define STAM_COST_THROW_MULT 2
#define STAM_COST_THROW_MOB 2.5 //multiplied by (mob size + 1)^2.
///Multiplier of the (STAMINA_NEAR_CRIT - user current stamina loss) : (STAMINA_NEAR_CRIT - STAMINA_SOFTCRIT) ratio used in damage penalties when stam soft-critted.
#define STAM_CRIT_ITEM_ATTACK_PENALTY 0.66
/// changeNext_move penalty multiplier of the above.
#define STAM_CRIT_ITEM_ATTACK_DELAY 1.75
/// Damage penalty when fighting prone.
#define LYING_DAMAGE_PENALTY 0.7
/// Added delay when firing guns stam-softcritted. Summed with a hardset CLICK_CD_RANGE delay, similar to STAM_CRIT_DAMAGE_DELAY otherwise.
#define STAM_CRIT_GUN_DELAY 2.75
//stamina recovery defines. Blocked if combat mode is on.
#define STAM_RECOVERY_STAM_CRIT -7.5
#define STAM_RECOVERY_RESTING -6
+35
View File
@@ -0,0 +1,35 @@
// Stamina Buffer
// Standard amounts for stamina usage
// Multipliers
/// Base stamina cost for an item of a certain w_class without total_mass set.
#define STAM_COST_W_CLASS_MULT 1.25
// Flat amounts
/// Usage for eyestabbing with a screwdriver
#define STAMINA_COST_ITEM_EYESTAB 7.5
/// Usage for shoving yourself off the ground instantly
#define STAMINA_COST_SHOVE_UP 10
//items total mass, used to calculate their attacks' stamina costs. If not defined, the cost will be (w_class * 1.25)
#define TOTAL_MASS_TINY_ITEM 1.25
#define TOTAL_MASS_SMALL_ITEM 2.5
#define TOTAL_MASS_NORMAL_ITEM 3.75
#define TOTAL_MASS_BULKY_ITEM 5
#define TOTAL_MASS_HUGE_ITEM 6.25
#define TOTAL_MASS_GIGANTIC_ITEM 7.5
#define TOTAL_MASS_HAND_REPLACEMENT 5 //standard punching stamina cost. most hand replacements are huge items anyway.
#define TOTAL_MASS_MEDIEVAL_WEAPON 3.6 //very, very generic average sword/warpick/etc. weight in pounds.
#define TOTAL_MASS_TOY_SWORD 1.5
//stamina cost defines.
#define STAM_COST_ATTACK_OBJ_MULT 0.75
#define STAM_COST_ATTACK_MOB_MULT 1
#define STAM_COST_BATON_MOB_MULT 0.85
#define STAM_COST_THROW_MULT 0.75
#define STAM_COST_THROW_MOB 1.25 //multiplied by (mob size + 1)^2.
/// Damage penalty when fighting prone.
#define LYING_DAMAGE_PENALTY 0.7
+2
View File
@@ -3,6 +3,8 @@
#define CONFIG_SET(X, Y) global.config.Set(/datum/config_entry/##X, ##Y)
/// Gets the datum of the object, for when editing a const define.
#define CONFIG_GET_ENTRY(X) global.config.GetEntryDatum(/datum/config_entry/##X)
/// Caches an entry in the proc
#define CONFIG_CACHE_ENTRY_AND_FETCH_VALUE(X, varname) var/static/datum/config_entry/##X/entrycache_##varname;if(!entrycache_##varname){entrycache_##varname=CONFIG_GET_ENTRY(##X);};var/##varname=entrycache_##varname.config_entry_value
#define CONFIG_MAPS_FILE "maps.txt"
+18 -4
View File
@@ -5,9 +5,21 @@
// global signals
// These are signals which can be listened to by any component on any parent
// start global signals with "!", this used to be necessary but now it's just a formatting choice
#define COMSIG_GLOB_NEW_Z "!new_z" //from base of datum/controller/subsystem/mapping/proc/add_new_zlevel(): (list/args)
#define COMSIG_GLOB_VAR_EDIT "!var_edit" //called after a successful var edit somewhere in the world: (list/args)
#define COMSIG_GLOB_LIVING_SAY_SPECIAL "!say_special" //global living say plug - use sparingly: (mob/speaker , message)
/// from base of datum/controller/subsystem/mapping/proc/add_new_zlevel(): (list/args)
#define COMSIG_GLOB_NEW_Z "!new_z"
/// called after a successful var edit somewhere in the world: (list/args)
#define COMSIG_GLOB_VAR_EDIT "!var_edit"
/// called after an explosion happened : (epicenter, devastation_range, heavy_impact_range, light_impact_range, took, orig_dev_range, orig_heavy_range, orig_light_range)
#define COMSIG_GLOB_EXPLOSION "!explosion"
/// mob was created somewhere : (mob)
#define COMSIG_GLOB_MOB_CREATED "!mob_created"
/// mob died somewhere : (mob , gibbed)
#define COMSIG_GLOB_MOB_DEATH "!mob_death"
/// global living say plug - use sparingly: (mob/speaker , message)
#define COMSIG_GLOB_LIVING_SAY_SPECIAL "!say_special"
/// called by datum/cinematic/play() : (datum/cinematic/new_cinematic)
#define COMSIG_GLOB_PLAY_CINEMATIC "!play_cinematic"
#define COMPONENT_GLOB_BLOCK_CINEMATIC 1
// signals from globally accessible objects
/// from SSsun when the sun changes position : (azimuth)
@@ -73,7 +85,7 @@
#define COMSIG_ATOM_EMP_ACT "atom_emp_act"
///from base of atom/fire_act(): (exposed_temperature, exposed_volume)
#define COMSIG_ATOM_FIRE_ACT "atom_fire_act"
///from base of atom/bullet_act(): (/obj/projectile, def_zone)
///from base of atom/bullet_act(): (/obj/item/projectile, def_zone)
#define COMSIG_ATOM_BULLET_ACT "atom_bullet_act"
///from base of atom/blob_act(): (/obj/structure/blob)
#define COMSIG_ATOM_BLOB_ACT "atom_blob_act"
@@ -369,6 +381,8 @@
#define COMSIG_MINE_TRIGGERED "minegoboom" ///from [/obj/effect/mine/proc/triggermine]:
// Uncovered information
#define COMPONENT_DEEPSCAN_UNCOVERED_INFORMATION 1
///from [/obj/structure/closet/supplypod/proc/endlaunch]:
#define COMSIG_SUPPLYPOD_LANDED "supplypodgoboom"
// /obj/item/grenade signals
#define COMSIG_GRENADE_PRIME "grenade_prime" //called in /obj/item/gun/process_fire (user, target, params, zone_override)
+7 -5
View File
@@ -1,7 +1,7 @@
#define CURRENT_LIVING_PLAYERS 1
#define CURRENT_LIVING_ANTAGS 2
#define CURRENT_DEAD_PLAYERS 3
#define CURRENT_OBSERVERS 4
#define CURRENT_OBSERVERS 4
#define NO_ASSASSIN (1<<0)
#define WAROPS_ALWAYS_ALLOWED (1<<1)
@@ -9,9 +9,11 @@
#define FORCE_IF_WON (1<<3)
#define USE_PREV_ROUND_WEIGHTS (1<<4)
#define ONLY_RULESET (1<<0)
#define HIGHLANDER_RULESET (1<<1)
#define TRAITOR_RULESET (1<<2)
#define MINOR_RULESET (1<<3)
#define ONLY_RULESET (1<<0)
#define HIGHLANDER_RULESET (1<<1)
#define TRAITOR_RULESET (1<<2)
#define MINOR_RULESET (1<<3)
#define FAKE_ANTAG_RULESET (1<<4)
#define ALWAYS_MAX_WEIGHT_RULESET (1<<5)
#define RULESET_STOP_PROCESSING 1
+5 -2
View File
@@ -44,7 +44,7 @@ GLOBAL_LIST_INIT(turfs_without_ground, typecacheof(list(
#define isplatingturf(A) (istype(A, /turf/open/floor/plating))
#define istransparentturf(A) (istype(A, /turf/open/transparent))
#define istransparentturf(A) (istype(A, /turf/open/transparent)||istype(A, /turf/open/space/transparent))
//Mobs
#define isliving(A) (istype(A, /mob/living))
@@ -86,6 +86,7 @@ GLOBAL_LIST_INIT(turfs_without_ground, typecacheof(list(
#define isinsect(A) (is_species(A, /datum/species/insect))
#define isxenoperson(A) (is_species(A, /datum/species/xeno))
#define isstartjelly(A) (is_species(A, /datum/species/jelly/roundstartslime))
#define isarachnid(A) (is_species(A, /datum/species/arachnid))
//more carbon mobs
#define ismonkey(A) (istype(A, /mob/living/carbon/monkey))
@@ -124,7 +125,7 @@ GLOBAL_LIST_INIT(turfs_without_ground, typecacheof(list(
#define isbot(A) (istype(A, /mob/living/simple_animal/bot))
#define isshade(A) (istype(A, /mob/living/simple_animal/shade))
#define isshade(A) (istype(A, /mob/living/simple_animal/hostile/construct/shade))
#define ismouse(A) (istype(A, /mob/living/simple_animal/mouse))
@@ -235,3 +236,5 @@ 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 isProbablyWallMounted(O) (O.pixel_x > 20 || O.pixel_x < -20 || O.pixel_y > 20 || O.pixel_y < -20)
+3 -1
View File
@@ -37,7 +37,9 @@
#define FIELD_OF_VISION_VISUAL_RENDER_TARGET "FIELD_OF_VISION_VISUAL_PLANE"
#define CHAT_PLANE -1 //We don't want heard messages to be hidden by FoV.
#define CHAT_LAYER 12.1 //Legacy, it doesn't matter that much because we are displayed above the game plane anyway.
#define CHAT_LAYER 12.0001 // Do not insert layers between these two values
#define CHAT_LAYER_MAX 12.9999
#define BLACKNESS_PLANE 0 //To keep from conflicts with SEE_BLACKNESS internals
#define BLACKNESS_PLANE_RENDER_TARGET "BLACKNESS_PLANE"
-5
View File
@@ -20,11 +20,6 @@ Multi-Z stations are supported and multi-Z mining and away missions would
require only minor tweaks.
*/
// helpers for modifying jobs, used in various job_changes.dm files
#define MAP_JOB_CHECK if(SSmapping.config.map_name != JOB_MODIFICATION_MAP_NAME) { return; }
#define MAP_JOB_CHECK_BASE if(SSmapping.config.map_name != JOB_MODIFICATION_MAP_NAME) { return ..(); }
#define MAP_REMOVE_JOB(jobpath) /datum/job/##jobpath/map_check() { return (SSmapping.config.map_name != JOB_MODIFICATION_MAP_NAME) && ..() }
#define SPACERUIN_MAP_EDGE_PAD 15
// traits
+175 -171
View File
@@ -1,17 +1,17 @@
/*ALL MOB-RELATED DEFINES THAT DON'T BELONG IN ANOTHER FILE GO HERE*/
//Misc mob defines
// Misc mob defines
//Ready states at roundstart for mob/dead/new_player
// Ready states at roundstart for mob/dead/new_player
#define PLAYER_NOT_READY 0
#define PLAYER_READY_TO_PLAY 1
#define PLAYER_READY_TO_OBSERVE 2
//movement intent defines for the m_intent var
// movement intent defines for the m_intent var
#define MOVE_INTENT_WALK "walk"
#define MOVE_INTENT_RUN "run"
//Blood levels
// Blood levels
#define BLOOD_VOLUME_MAX_LETHAL 2150
#define BLOOD_VOLUME_EXCESS 2100
#define BLOOD_VOLUME_MAXIMUM 2000
@@ -22,39 +22,43 @@
#define BLOOD_VOLUME_BAD 224
#define BLOOD_VOLUME_SURVIVE 122
//Sizes of mobs, used by mob/living/var/mob_size
// Sizes of mobs, used by mob/living/var/mob_size
#define MOB_SIZE_TINY 0
#define MOB_SIZE_SMALL 1
#define MOB_SIZE_HUMAN 2
#define MOB_SIZE_LARGE 3
//Ventcrawling defines
// Ventcrawling defines
#define VENTCRAWLER_NONE 0
#define VENTCRAWLER_NUDE 1
#define VENTCRAWLER_ALWAYS 2
//Bloodcrawling defines
// Bloodcrawling defines
#define BLOODCRAWL 1
#define BLOODCRAWL_EAT 2
//Mob bio-types flags
#define MOB_ORGANIC (1 << 0)
// Mob bio-types flags
#define MOB_ORGANIC (1 << 0)
#define MOB_MINERAL (1 << 1)
#define MOB_ROBOTIC (1 << 2)
#define MOB_ROBOTIC (1 << 2)
#define MOB_UNDEAD (1 << 3)
#define MOB_HUMANOID (1 << 4)
#define MOB_BUG (1 << 5)
#define MOB_HUMANOID (1 << 4)
#define MOB_BUG (1 << 5)
#define MOB_BEAST (1 << 6)
#define MOB_EPIC (1 << 7) //megafauna
#define MOB_EPIC (1 << 7) // Megafauna
#define MOB_REPTILE (1 << 8)
#define MOB_SPIRIT (1 << 9)
//Organ defines for carbon mobs
// Organ defines for carbon mobs
#define ORGAN_ORGANIC 1
#define ORGAN_ROBOTIC 2
#define BODYPART_ORGANIC 1
#define BODYPART_ROBOTIC 2
#define BODYPART_HYBRID 3
#define HYBRID_BODYPART_DAMAGE_THRESHHOLD 25 //How much damage has to be suffered until the damage threshhold counts as passed
#define HYBRID_BODYPART_THESHHOLD_MINDAMAGE 15 //Which damage value this limb cannot be healed out of via easy nonsurgical means if the threshhold has been passed, state resets if damage value goes below mindamage.
#define BODYPART_NOT_DISABLED 0
#define BODYPART_DISABLED_DAMAGE 1
@@ -66,194 +70,194 @@
#define DEFAULT_BODYPART_ICON_ROBOTIC 'icons/mob/augmentation/augments.dmi'
#define MONKEY_BODYPART "monkey"
#define ALIEN_BODYPART "alien"
#define LARVA_BODYPART "larva"
#define DEVIL_BODYPART "devil"
#define ALIEN_BODYPART "alien"
#define LARVA_BODYPART "larva"
#define DEVIL_BODYPART "devil"
/*see __DEFINES/inventory.dm for bodypart bitflag defines*/
// Health/damage defines for carbon mobs
#define HUMAN_MAX_OXYLOSS 3
#define HUMAN_CRIT_MAX_OXYLOSS (SSmobs.wait/30)
#define HEAT_DAMAGE_LEVEL_1 2 //Amount of damage applied when your body temperature just passes the 360.15k safety point
#define HEAT_DAMAGE_LEVEL_2 3 //Amount of damage applied when your body temperature passes the 400K point
#define HEAT_DAMAGE_LEVEL_3 8 //Amount of damage applied when your body temperature passes the 460K point and you are on fire
#define HEAT_DAMAGE_LEVEL_1 2 // Amount of damage applied when your body temperature just passes the 360.15k safety point
#define HEAT_DAMAGE_LEVEL_2 3 // Amount of damage applied when your body temperature passes the 400K point
#define HEAT_DAMAGE_LEVEL_3 8 // Amount of damage applied when your body temperature passes the 460K point and you are on fire
#define COLD_DAMAGE_LEVEL_1 0.5 //Amount of damage applied when your body temperature just passes the 260.15k safety point
#define COLD_DAMAGE_LEVEL_2 1.5 //Amount of damage applied when your body temperature passes the 200K point
#define COLD_DAMAGE_LEVEL_3 3 //Amount of damage applied when your body temperature passes the 120K point
#define COLD_DAMAGE_LEVEL_1 0.5 // Amount of damage applied when your body temperature just passes the 260.15k safety point
#define COLD_DAMAGE_LEVEL_2 1.5 // Amount of damage applied when your body temperature passes the 200K point
#define COLD_DAMAGE_LEVEL_3 3 // Amount of damage applied when your body temperature passes the 120K point
//Note that gas heat damage is only applied once every FOUR ticks.
#define HEAT_GAS_DAMAGE_LEVEL_1 2 //Amount of damage applied when the current breath's temperature just passes the 360.15k safety point
#define HEAT_GAS_DAMAGE_LEVEL_2 4 //Amount of damage applied when the current breath's temperature passes the 400K point
#define HEAT_GAS_DAMAGE_LEVEL_3 8 //Amount of damage applied when the current breath's temperature passes the 1000K point
// Note that gas heat damage is only applied once every FOUR ticks.
#define HEAT_GAS_DAMAGE_LEVEL_1 2 // Amount of damage applied when the current breath's temperature just passes the 360.15k safety point
#define HEAT_GAS_DAMAGE_LEVEL_2 4 // Amount of damage applied when the current breath's temperature passes the 400K point
#define HEAT_GAS_DAMAGE_LEVEL_3 8 // Amount of damage applied when the current breath's temperature passes the 1000K point
#define COLD_GAS_DAMAGE_LEVEL_1 0.5 //Amount of damage applied when the current breath's temperature just passes the 260.15k safety point
#define COLD_GAS_DAMAGE_LEVEL_2 1.5 //Amount of damage applied when the current breath's temperature passes the 200K point
#define COLD_GAS_DAMAGE_LEVEL_3 3 //Amount of damage applied when the current breath's temperature passes the 120K point
#define COLD_GAS_DAMAGE_LEVEL_1 0.5 // Amount of damage applied when the current breath's temperature just passes the 260.15k safety point
#define COLD_GAS_DAMAGE_LEVEL_2 1.5 // Amount of damage applied when the current breath's temperature passes the 200K point
#define COLD_GAS_DAMAGE_LEVEL_3 3 // Amount of damage applied when the current breath's temperature passes the 120K point
//Brain Damage defines
#define BRAIN_DAMAGE_MILD 20
// Brain Damage defines
#define BRAIN_DAMAGE_MILD 20
#define BRAIN_DAMAGE_SEVERE 100
#define BRAIN_DAMAGE_DEATH 200
#define BRAIN_DAMAGE_DEATH 200
#define BRAIN_TRAUMA_MILD /datum/brain_trauma/mild
#define BRAIN_TRAUMA_SEVERE /datum/brain_trauma/severe
#define BRAIN_TRAUMA_SPECIAL /datum/brain_trauma/special
#define BRAIN_TRAUMA_MAGIC /datum/brain_trauma/magic
#define TRAUMA_RESILIENCE_BASIC 1 //Curable with chems
#define TRAUMA_RESILIENCE_SURGERY 2 //Curable with brain surgery
#define TRAUMA_RESILIENCE_LOBOTOMY 3 //Curable with lobotomy
#define TRAUMA_RESILIENCE_WOUND 4 //Curable by healing the head wound
#define TRAUMA_RESILIENCE_MAGIC 5 //Curable only with magic
#define TRAUMA_RESILIENCE_ABSOLUTE 6 //This is here to stay
#define TRAUMA_RESILIENCE_BASIC 1 // Curable with chems
#define TRAUMA_RESILIENCE_SURGERY 2 // Curable with brain surgery
#define TRAUMA_RESILIENCE_LOBOTOMY 3 // Curable with lobotomy
#define TRAUMA_RESILIENCE_WOUND 4 // Curable by healing the head wound
#define TRAUMA_RESILIENCE_MAGIC 5 // Curable only with magic
#define TRAUMA_RESILIENCE_ABSOLUTE 6 // This is here to stay
//Limit of traumas for each resilience tier
#define TRAUMA_LIMIT_BASIC 3
#define TRAUMA_LIMIT_SURGERY 2
#define TRAUMA_LIMIT_WOUND 2
// Limit of traumas for each resilience tier
#define TRAUMA_LIMIT_BASIC 3
#define TRAUMA_LIMIT_SURGERY 2
#define TRAUMA_LIMIT_WOUND 2
#define TRAUMA_LIMIT_LOBOTOMY 3
#define TRAUMA_LIMIT_MAGIC 3
#define TRAUMA_LIMIT_MAGIC 3
#define TRAUMA_LIMIT_ABSOLUTE INFINITY
#define BRAIN_DAMAGE_INTEGRITY_MULTIPLIER 0.5
//Surgery Defines
// Surgery Defines
#define BIOWARE_GENERIC "generic"
#define BIOWARE_NERVES "nerves"
#define BIOWARE_CIRCULATION "circulation"
#define BIOWARE_LIGAMENTS "ligaments"
//Health hud screws for carbon mobs
#define SCREWYHUD_NONE 0
#define SCREWYHUD_CRIT 1
#define SCREWYHUD_DEAD 2
// Health hud screws for carbon mobs
#define SCREWYHUD_NONE 0
#define SCREWYHUD_CRIT 1
#define SCREWYHUD_DEAD 2
#define SCREWYHUD_HEALTHY 3
//Threshold levels for beauty for humans
// Threshold levels for beauty for humans
#define BEAUTY_LEVEL_HORRID -66
#define BEAUTY_LEVEL_BAD -33
#define BEAUTY_LEVEL_DECENT 33
#define BEAUTY_LEVEL_GOOD 66
#define BEAUTY_LEVEL_GREAT 100
#define BEAUTY_LEVEL_BAD -33
#define BEAUTY_LEVEL_DECENT 33
#define BEAUTY_LEVEL_GOOD 66
#define BEAUTY_LEVEL_GREAT 100
//Moods levels for humans
#define MOOD_LEVEL_HAPPY4 15
#define MOOD_LEVEL_HAPPY3 10
#define MOOD_LEVEL_HAPPY2 6
#define MOOD_LEVEL_HAPPY1 2
#define MOOD_LEVEL_NEUTRAL 0
#define MOOD_LEVEL_SAD1 -3
#define MOOD_LEVEL_SAD2 -12
#define MOOD_LEVEL_SAD3 -18
#define MOOD_LEVEL_SAD4 -25
// Moods levels for humans
#define MOOD_LEVEL_HAPPY4 15
#define MOOD_LEVEL_HAPPY3 10
#define MOOD_LEVEL_HAPPY2 6
#define MOOD_LEVEL_HAPPY1 2
#define MOOD_LEVEL_NEUTRAL 0
#define MOOD_LEVEL_SAD1 -3
#define MOOD_LEVEL_SAD2 -12
#define MOOD_LEVEL_SAD3 -18
#define MOOD_LEVEL_SAD4 -25
//Sanity levels for humans
#define SANITY_AMAZING 150
#define SANITY_GREAT 125
#define SANITY_NEUTRAL 100
// Sanity levels for humans
#define SANITY_AMAZING 150
#define SANITY_GREAT 125
#define SANITY_NEUTRAL 100
#define SANITY_DISTURBED 75
#define SANITY_UNSTABLE 50
#define SANITY_CRAZY 25
#define SANITY_INSANE 0
#define SANITY_UNSTABLE 50
#define SANITY_CRAZY 25
#define SANITY_INSANE 0
//Nutrition levels for humans
#define NUTRITION_LEVEL_FAT 600
#define NUTRITION_LEVEL_FULL 550
// Nutrition levels for humans
#define NUTRITION_LEVEL_FAT 600
#define NUTRITION_LEVEL_FULL 550
#define NUTRITION_LEVEL_WELL_FED 450
#define NUTRITION_LEVEL_FED 350
#define NUTRITION_LEVEL_HUNGRY 250
#define NUTRITION_LEVEL_FED 350
#define NUTRITION_LEVEL_HUNGRY 250
#define NUTRITION_LEVEL_STARVING 150
#define NUTRITION_LEVEL_START_MIN 250
#define NUTRITION_LEVEL_START_MAX 400
//Disgust levels for humans
#define DISGUST_LEVEL_MAXEDOUT 150
#define DISGUST_LEVEL_DISGUSTED 75
#define DISGUST_LEVEL_VERYGROSS 50
#define DISGUST_LEVEL_GROSS 25
// Disgust levels for humans
#define DISGUST_LEVEL_MAXEDOUT 150
#define DISGUST_LEVEL_DISGUSTED 75
#define DISGUST_LEVEL_VERYGROSS 50
#define DISGUST_LEVEL_GROSS 25
//Charge levels for Ethereals
#define ETHEREAL_CHARGE_NONE 0
#define ETHEREAL_CHARGE_LOWPOWER 20
#define ETHEREAL_CHARGE_NORMAL 50
// Charge levels for Ethereals
#define ETHEREAL_CHARGE_NONE 0
#define ETHEREAL_CHARGE_LOWPOWER 20
#define ETHEREAL_CHARGE_NORMAL 50
#define ETHEREAL_CHARGE_ALMOSTFULL 75
#define ETHEREAL_CHARGE_FULL 100
#define ETHEREAL_CHARGE_OVERLOAD 125
#define ETHEREAL_CHARGE_FULL 100
#define ETHEREAL_CHARGE_OVERLOAD 125
#define ETHEREAL_CHARGE_DANGEROUS 150
//Slime evolution threshold. Controls how fast slimes can split/grow
// Slime evolution threshold. Controls how fast slimes can split/grow
#define SLIME_EVOLUTION_THRESHOLD 10
//Slime extract crossing. Controls how many extracts is required to feed to a slime to core-cross.
// Slime extract crossing. Controls how many extracts is required to feed to a slime to core-cross.
#define SLIME_EXTRACT_CROSSING_REQUIRED 10
//Slime commands defines
#define SLIME_FRIENDSHIP_FOLLOW 3 //Min friendship to order it to follow
#define SLIME_FRIENDSHIP_STOPEAT 5 //Min friendship to order it to stop eating someone
#define SLIME_FRIENDSHIP_STOPEAT_NOANGRY 7 //Min friendship to order it to stop eating someone without it losing friendship
#define SLIME_FRIENDSHIP_STOPCHASE 4 //Min friendship to order it to stop chasing someone (their target)
#define SLIME_FRIENDSHIP_STOPCHASE_NOANGRY 6 //Min friendship to order it to stop chasing someone (their target) without it losing friendship
#define SLIME_FRIENDSHIP_STAY 3 //Min friendship to order it to stay
#define SLIME_FRIENDSHIP_ATTACK 8 //Min friendship to order it to attack
// Slime commands defines
#define SLIME_FRIENDSHIP_FOLLOW 3 // Min friendship to order it to follow
#define SLIME_FRIENDSHIP_STOPEAT 5 // Min friendship to order it to stop eating someone
#define SLIME_FRIENDSHIP_STOPEAT_NOANGRY 7 // Min friendship to order it to stop eating someone without it losing friendship
#define SLIME_FRIENDSHIP_STOPCHASE 4 // Min friendship to order it to stop chasing someone (their target)
#define SLIME_FRIENDSHIP_STOPCHASE_NOANGRY 6 // Min friendship to order it to stop chasing someone (their target) without it losing friendship
#define SLIME_FRIENDSHIP_STAY 3 // Min friendship to order it to stay
#define SLIME_FRIENDSHIP_ATTACK 8 // Min friendship to order it to attack
//Sentience types, to prevent things like sentience potions from giving bosses sentience
#define SENTIENCE_ORGANIC 1
// Sentience types, to prevent things like sentience potions from giving bosses sentience
#define SENTIENCE_ORGANIC 1
#define SENTIENCE_ARTIFICIAL 2
// #define SENTIENCE_OTHER 3 unused
#define SENTIENCE_MINEBOT 4
#define SENTIENCE_BOSS 5
//#define SENTIENCE_OTHER 3 // Unused
#define SENTIENCE_MINEBOT 4
#define SENTIENCE_BOSS 5
//Mob AI Status
// Mob AI Status
//Hostile simple animals
//If you add a new status, be sure to add a list for it to the simple_animals global in _globalvars/lists/mobs.dm
// Hostile simple animals
// If you add a new status, be sure to add a list for it to the simple_animals global in _globalvars/lists/mobs.dm
#define AI_ON 1
#define AI_IDLE 2
#define AI_OFF 3
#define AI_Z_OFF 4
//determines if a mob can smash through it
#define ENVIRONMENT_SMASH_NONE 0
#define ENVIRONMENT_SMASH_STRUCTURES (1<<0) //crates, lockers, ect
#define ENVIRONMENT_SMASH_WALLS (1<<1) //walls
#define ENVIRONMENT_SMASH_RWALLS (1<<2) //rwalls
// determines if a mob can smash through it
#define ENVIRONMENT_SMASH_NONE 0
#define ENVIRONMENT_SMASH_STRUCTURES (1<<0) // crates, lockers, ect
#define ENVIRONMENT_SMASH_WALLS (1<<1) // walls
#define ENVIRONMENT_SMASH_RWALLS (1<<2) // rwalls
#define NO_SLIP_WHEN_WALKING (1<<0)
#define SLIDE (1<<1)
#define GALOSHES_DONT_HELP (1<<2)
#define FLYING_DOESNT_HELP (1<<3)
#define SLIDE_ICE (1<<4)
#define SLIP_WHEN_CRAWLING (1<<5) //clown planet ruin amongst others
#define SLIP_WHEN_JOGGING (1<<6) //slips prevented by walking are also dodged if the mob is nor sprinting or fatigued... unless this flag is on.
#define NO_SLIP_WHEN_WALKING (1<<0)
#define SLIDE (1<<1)
#define GALOSHES_DONT_HELP (1<<2)
#define FLYING_DOESNT_HELP (1<<3)
#define SLIDE_ICE (1<<4)
#define SLIP_WHEN_CRAWLING (1<<5) // clown planet ruin amongst others
#define SLIP_WHEN_JOGGING (1<<6) // slips prevented by walking are also dodged if the mob is nor sprinting or fatigued... unless this flag is on.
#define MAX_CHICKENS 50
///Flags used by the flags parameter of electrocute act.
// /Flags used by the flags parameter of electrocute act.
///Makes it so that the shock doesn't take gloves into account.
#define SHOCK_NOGLOVES (1 << 0)
///Used when the shock is from a tesla bolt.
#define SHOCK_TESLA (1 << 1)
///Used when an illusion shocks something. Makes the shock deal stamina damage and not trigger certain secondary effects.
#define SHOCK_ILLUSION (1 << 2)
///The shock doesn't stun.
#define SHOCK_NOSTUN (1 << 3)
// /Makes it so that the shock doesn't take gloves into account.
#define SHOCK_NOGLOVES (1 << 0)
// /Used when the shock is from a tesla bolt.
#define SHOCK_TESLA (1 << 1)
// /Used when an illusion shocks something. Makes the shock deal stamina damage and not trigger certain secondary effects.
#define SHOCK_ILLUSION (1 << 2)
// /The shock doesn't stun.
#define SHOCK_NOSTUN (1 << 3)
#define INCORPOREAL_MOVE_BASIC 1
#define INCORPOREAL_MOVE_SHADOW 2 // leaves a trail of shadows
#define INCORPOREAL_MOVE_JAUNT 3 // is blocked by holy water/salt
#define INCORPOREAL_MOVE_BASIC 1
#define INCORPOREAL_MOVE_SHADOW 2 // leaves a trail of shadows
#define INCORPOREAL_MOVE_JAUNT 3 // is blocked by holy water/salt
//Secbot and ED209 judgement criteria bitflag values
// Secbot and ED209 judgement criteria bitflag values
#define JUDGE_EMAGGED (1<<0)
#define JUDGE_IDCHECK (1<<1)
#define JUDGE_WEAPONCHECK (1<<2)
#define JUDGE_RECORDCHECK (1<<3)
//ED209's ignore monkeys
// ED209's ignore monkeys
#define JUDGE_IGNOREMONKEYS (1<<4)
#define MEGAFAUNA_DEFAULT_RECOVERY_TIME 5
@@ -262,45 +266,45 @@
// Offsets defines
#define OFFSET_UNIFORM "uniform"
#define OFFSET_ID "id"
#define OFFSET_GLOVES "gloves"
#define OFFSET_GLASSES "glasses"
#define OFFSET_EARS "ears"
#define OFFSET_SHOES "shoes"
#define OFFSET_S_STORE "s_store"
#define OFFSET_FACEMASK "mask"
#define OFFSET_HEAD "head"
#define OFFSET_EYES "eyes"
#define OFFSET_LIPS "lips"
#define OFFSET_BELT "belt"
#define OFFSET_BACK "back"
#define OFFSET_SUIT "suit"
#define OFFSET_NECK "neck"
#define OFFSET_HAIR "hair"
#define OFFSET_FHAIR "fhair"
#define OFFSET_MUTPARTS "mutantparts"
#define OFFSET_UNIFORM "uniform"
#define OFFSET_ID "id"
#define OFFSET_GLOVES "gloves"
#define OFFSET_GLASSES "glasses"
#define OFFSET_EARS "ears"
#define OFFSET_SHOES "shoes"
#define OFFSET_S_STORE "s_store"
#define OFFSET_FACEMASK "mask"
#define OFFSET_HEAD "head"
#define OFFSET_EYES "eyes"
#define OFFSET_LIPS "lips"
#define OFFSET_BELT "belt"
#define OFFSET_BACK "back"
#define OFFSET_SUIT "suit"
#define OFFSET_NECK "neck"
#define OFFSET_HAIR "hair"
#define OFFSET_FHAIR "fhair"
#define OFFSET_MUTPARTS "mutantparts"
//MINOR TWEAKS/MISC
#define AGE_MIN 18 //youngest a character can be //CITADEL EDIT - 17 --> 18
#define AGE_MAX 85 //oldest a character can be
#define WIZARD_AGE_MIN 30 //youngest a wizard can be
#define APPRENTICE_AGE_MIN 29 //youngest an apprentice can be
#define SHOES_SLOWDOWN 0 //How much shoes slow you down by default. Negative values speed you up
#define SHOES_SPEED_SLIGHT SHOES_SLOWDOWN - 1 // slightest speed boost to movement
#define POCKET_STRIP_DELAY 40 //time taken (in deciseconds) to search somebody's pockets
#define DOOR_CRUSH_DAMAGE 15 //the amount of damage that airlocks deal when they crush you
// MINOR TWEAKS/MISC
#define AGE_MIN 18 // youngest a character can be // CITADEL EDIT - 17 --> 18
#define AGE_MAX 85 // oldest a character can be
#define WIZARD_AGE_MIN 30 // youngest a wizard can be
#define APPRENTICE_AGE_MIN 29 // youngest an apprentice can be
#define SHOES_SLOWDOWN 0 // How much shoes slow you down by default. Negative values speed you up
#define SHOES_SPEED_SLIGHT SHOES_SLOWDOWN - 1 // slightest speed boost to movement
#define POCKET_STRIP_DELAY 40 // time taken (in deciseconds) to search somebody's pockets
#define DOOR_CRUSH_DAMAGE 15 // the amount of damage that airlocks deal when they crush you
#define HUNGER_FACTOR 0.1 //factor at which mob nutrition decreases
#define ETHEREAL_CHARGE_FACTOR 0.08 //factor at which ethereal's charge decreases
#define REAGENTS_METABOLISM 0.4 //How many units of reagent are consumed per tick, by default.
#define HUNGER_FACTOR 0.1 // factor at which mob nutrition decreases
#define ETHEREAL_CHARGE_FACTOR 0.08 // factor at which ethereal's charge decreases
#define REAGENTS_METABOLISM 0.4 // How many units of reagent are consumed per tick, by default.
#define REAGENTS_EFFECT_MULTIPLIER (REAGENTS_METABOLISM / 0.4) // By defining the effect multiplier this way, it'll exactly adjust all effects according to how they originally were with the 0.4 metabolism
// Roundstart trait system
#define MAX_QUIRKS 6 //The maximum amount of quirks one character can have at roundstart
#define MAX_QUIRKS 6 // The maximum amount of quirks one character can have at roundstart
#define MAX_REVIVE_FIRE_DAMAGE 180
#define MAX_REVIVE_FIRE_DAMAGE 180
#define MAX_REVIVE_BRUTE_DAMAGE 180
// AI Toggles
@@ -308,28 +312,28 @@
#define AI_VOX // Comment out if you don't want VOX to be enabled and have players download the voice sounds.
// /obj/item/bodypart on_mob_life() retval flag
#define BODYPART_LIFE_UPDATE_HEALTH (1<<0)
#define BODYPART_LIFE_UPDATE_HEALTH (1<<0)
#define HUMAN_FIRE_STACK_ICON_NUM 3
#define TYPING_INDICATOR_TIMEOUT 20 MINUTES
#define GRAB_PIXEL_SHIFT_PASSIVE 6
#define GRAB_PIXEL_SHIFT_AGGRESSIVE 12
#define GRAB_PIXEL_SHIFT_NECK 16
#define GRAB_PIXEL_SHIFT_PASSIVE 6
#define GRAB_PIXEL_SHIFT_AGGRESSIVE 12
#define GRAB_PIXEL_SHIFT_NECK 16
#define SLEEP_CHECK_DEATH(X) sleep(X); if(QDELETED(src) || stat == DEAD) return;
#define INTERACTING_WITH(X, Y) (Y in X.do_afters)
/// Field of vision defines.
// / Field of vision defines.
#define FOV_90_DEGREES 90
#define FOV_180_DEGREES 180
#define FOV_270_DEGREES 270
/// How far away you can be to make eye contact with someone while examining
// / How far away you can be to make eye contact with someone while examining
#define EYE_CONTACT_RANGE 5
/// If you examine the same atom twice in this timeframe, we call examine_more() instead of examine()
// / If you examine the same atom twice in this timeframe, we call examine_more() instead of examine()
#define EXAMINE_MORE_TIME 1 SECONDS
#define SILENCE_RANGED_MESSAGE (1<<0)
#define SILENCE_RANGED_MESSAGE (1<<0)
+13 -1
View File
@@ -40,6 +40,16 @@
#define PARALLAX_LOW 2
#define PARALLAX_DISABLE 3 //this option must be the highest number
#define PIXEL_SCALING_AUTO 0
#define PIXEL_SCALING_1X 1
#define PIXEL_SCALING_1_2X 1.5
#define PIXEL_SCALING_2X 2
#define PIXEL_SCALING_3X 3
#define SCALING_METHOD_NORMAL "normal"
#define SCALING_METHOD_DISTORT "distort"
#define SCALING_METHOD_BLUR "blur"
#define PARALLAX_DELAY_DEFAULT world.tick_lag
#define PARALLAX_DELAY_MED 1
#define PARALLAX_DELAY_LOW 2
@@ -68,7 +78,9 @@
#define EXP_TYPE_ADMIN "Admin"
//Flags in the players table in the db
#define DB_FLAG_EXEMPT 1
#define DB_FLAG_EXEMPT (1<<0)
#define DB_FLAG_AGE_CONFIRMATION_INCOMPLETE (1<<1)
#define DB_FLAG_AGE_CONFIRMATION_COMPLETE (1<<2)
#define DEFAULT_CYBORG_NAME "Default Cyborg Name"
+7 -1
View File
@@ -76,8 +76,14 @@
#define LINGHIVE_LINK 3
//whether the emote is visible or audible.
// Requires sight
#define EMOTE_VISIBLE 1
// Requires hearing
#define EMOTE_AUDIBLE 2
// Requires sight or hearing
#define EMOTE_BOTH 3
// Always able to be seen
#define EMOTE_OMNI 4
//Don't set this very much higher then 1024 unless you like inviting people in to dos your server with message spam
#define MAX_MESSAGE_LEN 2048 //Citadel edit: What's the WORST that could happen?
@@ -89,4 +95,4 @@
// Audio/Visual Flags. Used to determine what sense are required to notice a message.
#define MSG_VISUAL (1<<0)
#define MSG_AUDIBLE (1<<1)
#define MSG_AUDIBLE (1<<1)
+5
View File
@@ -31,6 +31,11 @@
#define EARLY_LAUNCHED 2
#define ENDGAME_TRANSIT 3
//positive value = cannot puchase
#define SHUTTLEPURCHASE_PURCHASABLE 0 //station can buy a shuttle
#define SHUTTLEPURCHASE_PURCHASED 1 //station has already bought a shuttle, so cannot
#define SHUTTLEPURCHASE_FORCED 2 //station was given a new shuttle through events or other shenanigans
// Ripples, effects that signal a shuttle's arrival
#define SHUTTLE_RIPPLE_TIME 100
-1
View File
@@ -40,7 +40,6 @@
#define SKILL_TRAIN_ATTACK_OBJ "train_attack_obj"
#define SKILL_STAMINA_COST "stamina_cost" //Influences the stamina cost from weapon usage.
#define SKILL_THROW_STAM_COST "throw_stam_cost"
#define SKILL_COMBAT_MODE "combat_mode" //The user must have combat mode on.
#define SKILL_SANITY "sanity" //Is the skill affected by (in)sanity.
#define SKILL_INTELLIGENCE "intelligence" //Is the skill affected by brain damage?
+54
View File
@@ -0,0 +1,54 @@
// Species ID Defines ---------------------------
#define SPECIES_ABDUCTOR "abductor"
#define SPECIES_ANDROID "android"
#define SPECIES_ANGEL "angel"
#define SPECIES_MAMMAL "mammal"
#define SPECIES_ARACHNID "arachnid"
#define SPECIES_INSECT "insect"
#define SPECIES_DULLAHAN "dullahan"
#define SPECIES_DWARF "dwarf"
#define SPECIES_ETHEREAL "ethereal"
#define SPECIES_FELINID "felinid"
#define SPECIES_FLY "fly"
#define SPECIES_GOLEM "golem"
#define SPECIES_HUMAN "human"
#define SPECIES_IPC "ipc"
#define SPECIES_JELLY "jelly"
#define SPECIES_SLIME "slime"
#define SPECIES_SLIME_HYBRID "slimeperson"
#define SPECIES_SLIME_LUMI "slimelumi"
#define SPECIES_STARGAZER "stargazer"
#define SPECIES_LIZARD "lizard"
#define SPECIES_ASHWALKER "ashlizard"
#define SPECIES_MUSHROOM "mush"
#define SPECIES_PLASMAMAN "plasmaman"
#define SPECIES_POD "pod"
#define SPECIES_POD_WEAK "podweak"
#define SPECIES_SHADOW "shadow"
#define SPECIES_NIGHTMARE "nightmare"
#define SPECIES_SKELETON "skeleton"
#define SPECIES_SKELETON_SPACE "spaceskeleton"
#define SPECIES_SYNTH_LIZARD "synthliz"
#define SPECIES_SYNTH "synth"
#define SPECIES_SYNTH_MIL "military_synth"
#define SPECIES_VAMPIRE "vampire"
#define SPECIES_VAMPIRE_WEAK "vampire_roundstart"
#define SPECIES_XENOHYBRID "xeno"
#define SPECIES_ZOMBIE "zombie"
// Species Category Defines ---------------------
#define SPECIES_CATEGORY_ALIEN "alien"
#define SPECIES_CATEGORY_BASIC "human"
#define SPECIES_CATEGORY_FURRY "furry" // Weird Category, but okay.
#define SPECIES_CATEGORY_GOLEM "golem"
#define SPECIES_CATEGORY_INSECT "insect"
#define SPECIES_CATEGORY_PLANT "plant"
#define SPECIES_CATEGORY_ROBOT "robotic"
#define SPECIES_CATEGORY_JELLY "jelly"
#define SPECIES_CATEGORY_LIZARD "lizard"
#define SPECIES_CATEGORY_SHADOW "shadow"
#define SPECIES_CATEGORY_SKELETON "skeleton"
#define SPECIES_CATEGORY_UNDEAD "undead"
+1
View File
@@ -124,6 +124,7 @@
#define FIRE_PRIORITY_ATMOS_ADJACENCY 300
#define FIRE_PRIORITY_STATPANEL 390
#define FIRE_PRIORITY_CHAT 400
#define FIRE_PRIORITY_RUNECHAT 410
#define FIRE_PRIORITY_OVERLAYS 500
#define FIRE_PRIORITY_INPUT 1000 // This must always always be the max highest priority. Player input must never be lost.
+4 -1
View File
@@ -1,6 +1,6 @@
// tgstation-server DMAPI
#define TGS_DMAPI_VERSION "5.2.1"
#define TGS_DMAPI_VERSION "5.2.7"
// All functions and datums outside this document are subject to change with any version and should not be relied on.
@@ -95,6 +95,8 @@
#define TGS_EVENT_WATCHDOG_SHUTDOWN 15
/// Before the watchdog detaches for a TGS update/restart. No parameters.
#define TGS_EVENT_WATCHDOG_DETACH 16
// We don't actually implement this value as the DMAPI can never receive it
// #define TGS_EVENT_WATCHDOG_LAUNCH 17
// OTHER ENUMS
@@ -127,6 +129,7 @@
* Call this when your initializations are complete and your game is ready to play before any player interactions happen.
*
* This may use [/world/var/sleep_offline] to make this happen so ensure no changes are made to it while this call is running.
* Afterwards, consider explicitly setting it to what you want to avoid this BYOND bug: http://www.byond.com/forum/post/2575184
* Before this point, note that any static files or directories may be in use by another server. Your code should account for this.
* This function should not be called before ..() in [/world/proc/New].
*/
+8
View File
@@ -164,6 +164,7 @@
#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_MAULER "mauler" // this guy punches the shit out of people to hurt them, not to drain their stamina
#define TRAIT_PASSTABLE "passtable"
#define TRAIT_GIANT "giant"
#define TRAIT_DWARF "dwarf"
@@ -207,6 +208,9 @@
#define TRAIT_FAST_PUMP "fast_pump"
#define TRAIT_NO_PROCESS_FOOD "no-process-food" // You don't get benefits from nutriment, nor nutrition from reagent consumables
#define TRAIT_NICE_SHOT "nice_shot" //hnnnnnnnggggg..... you're pretty good...
#define TRAIT_NO_STAMINA_BUFFER_REGENERATION "block_stamina_buffer_regen" /// Prevents stamina buffer regeneration
#define TRAIT_NO_STAMINA_REGENERATION "block_stamina_regen" /// Prevents stamina regeneration
#define TRAIT_ARMOR_BROKEN "armor_broken" //acts as if you are wearing no clothing when taking damage, does not affect non-clothing sources of protection
// 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)
@@ -219,6 +223,8 @@
#define TRAIT_MOBILITY_NOPICKUP "mobility_nopickup"
/// Disallow item use
#define TRAIT_MOBILITY_NOUSE "mobility_nouse"
///Disallow resting/unresting
#define TRAIT_MOBILITY_NOREST "mobility_norest"
#define TRAIT_SWIMMING "swimming" //only applied by /datum/element/swimming, for checking
@@ -311,8 +317,10 @@
#define CLOWNOP_TRAIT "clown-op"
#define MEGAFAUNA_TRAIT "megafauna"
#define DEATHSQUAD_TRAIT "deathsquad"
#define SLIMEPUDDLE_TRAIT "slimepuddle"
/// This trait is added by the active directional block system.
#define ACTIVE_BLOCK_TRAIT "active_block"
/// This trait is added by the parry system.
#define ACTIVE_PARRY_TRAIT "active_parry"
#define STICKY_NODROP "sticky-nodrop" //sticky nodrop sounds like a bad soundcloud rapper's name
#define TRAIT_SACRIFICED "sacrificed" //Makes sure that people cant be cult sacrificed twice.
+7 -7
View File
@@ -1,9 +1,9 @@
#define PLURALITY_VOTING 0
#define APPROVAL_VOTING 1
#define SCHULZE_VOTING 2
#define SCORE_VOTING 3
#define MAJORITY_JUDGEMENT_VOTING 4
#define INSTANT_RUNOFF_VOTING 5
#define PLURALITY_VOTING "PLURALITY"
#define APPROVAL_VOTING "APPROVAL"
#define SCHULZE_VOTING "SCHULZE"
#define SCORE_VOTING "SCORE"
#define MAJORITY_JUDGEMENT_VOTING "MAJORITY_JUDGEMENT"
#define INSTANT_RUNOFF_VOTING "IRV"
#define SHOW_RESULTS (1<<0)
#define SHOW_VOTES (1<<1)
@@ -26,4 +26,4 @@ GLOBAL_LIST_INIT(display_vote_settings, list(\
"Ongoing Votes" = SHOW_VOTES,
"Winner" = SHOW_WINNER,
"Abstainers" = SHOW_ABSTENTION
))
))
+5 -7
View File
@@ -38,11 +38,11 @@
return FALSE
if((do_after_flags & DO_AFTER_REQUIRES_USER_ON_TURF) && !isturf(user.loc))
return FALSE
if(!(do_after_flags & DO_AFTER_NO_COEFFICIENT) && living_user)
delay *= living_user.cached_multiplicative_actions_slowdown
var/starttime = world.time
var/endtime = world.time + delay
var/obj/item/initially_held_item = mob_redirect?.get_active_held_item()
if(!(do_after_flags & DO_AFTER_NO_COEFFICIENT) && living_user)
delay *= living_user.do_after_coefficent()
var/atom/movable/AM_user = ismovable(user) && user
var/drifting = AM_user?.Process_Spacemove(NONE) && AM_user.inertia_dir
var/initial_dx = targetturf.x - userturf.x
@@ -245,7 +245,7 @@
if(holding)
holdingnull = 0 //Users hand started holding something, check to see if it's still holding that
delay *= user.do_after_coefficent()
delay *= user.cached_multiplicative_actions_slowdown
var/datum/progressbar/progbar
if (progress)
@@ -300,10 +300,6 @@
LAZYREMOVE(user.do_afters, target)
LAZYREMOVE(target.targeted_by, user)
/mob/proc/do_after_coefficent() // This gets added to the delay on a do_after, default 1
. = 1
return
/proc/do_after_mob(mob/user, var/list/targets, time = 30, uninterruptible = 0, progress = 1, datum/callback/extra_checks)
if(!user || !targets)
return 0
@@ -326,6 +322,8 @@
if(progress)
progbar = new(user, time, targets[1])
time *= user.cached_multiplicative_actions_slowdown
var/endtime = world.time + time
var/starttime = world.time
. = 1
+3
View File
@@ -32,6 +32,9 @@
init_sprite_accessory_subtypes(/datum/sprite_accessory/caps, GLOB.caps_list)
init_sprite_accessory_subtypes(/datum/sprite_accessory/insect_wings, GLOB.insect_wings_list)
init_sprite_accessory_subtypes(/datum/sprite_accessory/insect_fluff, GLOB.insect_fluffs_list)
init_sprite_accessory_subtypes(/datum/sprite_accessory/arachnid_legs, GLOB.arachnid_legs_list)
init_sprite_accessory_subtypes(/datum/sprite_accessory/arachnid_spinneret, GLOB.arachnid_spinneret_list)
init_sprite_accessory_subtypes(/datum/sprite_accessory/arachnid_mandibles, GLOB.arachnid_mandibles_list)
init_sprite_accessory_subtypes(/datum/sprite_accessory/deco_wings, GLOB.deco_wings_list)
//CIT CHANGES START HERE, ADDS SNOWFLAKE BODYPARTS AND MORE
+2
View File
@@ -1186,6 +1186,8 @@ GLOBAL_DATUM_INIT(dummySave, /savefile, new("tmp/dummySave.sav")) //Cache of ico
SSassets.transport.register_asset(key, I)
for (var/thing2 in targets)
SSassets.transport.send_assets(thing2, key)
if(sourceonly)
return SSassets.transport.get_asset_url(key)
return "<img class='icon icon-[icon_state]' src='[SSassets.transport.get_asset_url(key)]'>"
+16
View File
@@ -76,6 +76,12 @@
init_sprite_accessory_subtypes(/datum/sprite_accessory/insect_fluff, GLOB.insect_fluffs_list)
if(!GLOB.insect_markings_list.len)
init_sprite_accessory_subtypes(/datum/sprite_accessory/insect_markings, GLOB.insect_markings_list)
if(!GLOB.arachnid_legs_list.len)
init_sprite_accessory_subtypes(/datum/sprite_accessory/arachnid_legs, GLOB.arachnid_legs_list)
if(!GLOB.arachnid_spinneret_list.len)
init_sprite_accessory_subtypes(/datum/sprite_accessory/arachnid_spinneret, GLOB.arachnid_spinneret_list)
if(!GLOB.arachnid_mandibles_list.len)
init_sprite_accessory_subtypes(/datum/sprite_accessory/arachnid_mandibles, GLOB.arachnid_mandibles_list)
//CIT CHANGES - genitals and such
if(!GLOB.cock_shapes_list.len)
@@ -177,6 +183,9 @@
"insect_wings" = pick(GLOB.insect_wings_list),
"insect_fluff" = "None",
"insect_markings" = pick(GLOB.insect_markings_list),
"arachnid_legs" = pick(GLOB.arachnid_legs_list),
"arachnid_spinneret" = pick(GLOB.arachnid_spinneret_list),
"arachnid_mandibles" = pick(GLOB.arachnid_mandibles_list),
"taur" = "None",
"mam_body_markings" = snowflake_markings_list.len ? pick(snowflake_markings_list) : "None",
"mam_ears" = snowflake_ears_list ? pick(snowflake_ears_list) : "None",
@@ -278,6 +287,13 @@
if(!findname(.))
break
/proc/random_unique_arachnid_name(attempts_to_find_unique_name=10)
for(var/i in 1 to attempts_to_find_unique_name)
. = capitalize(pick(GLOB.arachnid_first)) + " " + capitalize(pick(GLOB.arachnid_last))
if(!findname(.))
break
#define SKINTONE2HEX(skin_tone) GLOB.skin_tones[skin_tone] || skin_tone
/proc/random_skin_tone()
+3
View File
@@ -16,6 +16,9 @@
/proc/moth_name()
return "[pick(GLOB.moth_first)] [pick(GLOB.moth_last)]"
/proc/arachnid_name()
return "[pick(GLOB.arachnid_first)] [pick(GLOB.arachnid_last)]"
/proc/church_name()
var/static/church_name
if (church_name)
+5 -3
View File
@@ -12,15 +12,17 @@
))
var/list/processing_list = list(location)
. = list()
while(processing_list.len)
var/atom/thing = processing_list[1]
processing_list -= thing
var/i = 0
var/lim = 1
while(i < lim)
var/atom/thing = processing_list[++i]
if(ignored_things[thing.type])
continue
. += thing
if((thing.rad_flags & RAD_PROTECT_CONTENTS) || (SEND_SIGNAL(thing, COMSIG_ATOM_RAD_PROBE) & COMPONENT_BLOCK_RADIATION))
continue
processing_list += thing.contents
lim = processing_list.len
/proc/radiation_pulse(atom/source, intensity, range_modifier, log=FALSE, can_contaminate=TRUE)
if(!SSradiation.can_fire)
+9 -5
View File
@@ -457,21 +457,23 @@ Turf and target are separate in case you want to teleport some distance from a t
/atom/proc/GetAllContents(var/T)
var/list/processing_list = list(src)
var/i = 0
var/lim = 1
if(T)
. = list()
var/i = 0
while(i < length(processing_list))
while(i < lim)
var/atom/A = processing_list[++i]
//Byond does not allow things to be in multiple contents, or double parent-child hierarchies, so only += is needed
//This is also why we don't need to check against assembled as we go along
processing_list += A.contents
lim = processing_list.len
if(istype(A,T))
. += A
else
var/i = 0
while(i < length(processing_list))
while(i < lim)
var/atom/A = processing_list[++i]
processing_list += A.contents
lim = processing_list.len
return processing_list
/atom/proc/GetAllContentsIgnoring(list/ignore_typecache)
@@ -480,10 +482,12 @@ Turf and target are separate in case you want to teleport some distance from a t
var/list/processing = list(src)
. = list()
var/i = 0
while(i < length(processing))
var/lim = 1
while(i < lim)
var/atom/A = processing[++i]
if(!ignore_typecache[A.type])
processing += A.contents
lim = processing.len
. += A
+1 -1
View File
@@ -2,7 +2,7 @@
var/viewX
var/viewY
if(isnum(view))
var/totalviewrange = 1 + 2 * view
var/totalviewrange = (view < 0 ? -1 : 1) + 2 * view
viewX = totalviewrange
viewY = totalviewrange
else
-1
View File
@@ -252,7 +252,6 @@ GLOBAL_LIST_INIT(bitfields, list(
"COMBAT_FLAG_SPRINT_ACTIVE" = COMBAT_FLAG_SPRINT_ACTIVE,
"COMBAT_FLAG_ATTEMPTING_CRAWL" = COMBAT_FLAG_ATTEMPTING_CRAWL,
"COMBAT_FLAG_HARD_STAMCRIT" = COMBAT_FLAG_HARD_STAMCRIT,
"COMBAT_FLAG_SOFT_STAMCRIT" = COMBAT_FLAG_SOFT_STAMCRIT,
"COMBAT_FLAG_INTENTIONALLY_RESTING" = COMBAT_FLAG_INTENTIONALLY_RESTING,
"COMBAT_FLAG_RESISTING_REST" = COMBAT_FLAG_RESISTING_REST,
"COMBAT_FLAG_SPRINT_FORCED" = COMBAT_FLAG_SPRINT_FORCED
+51 -3
View File
@@ -38,6 +38,9 @@ GLOBAL_LIST_EMPTY(r_wings_list)
GLOBAL_LIST_EMPTY(insect_wings_list)
GLOBAL_LIST_EMPTY(insect_fluffs_list)
GLOBAL_LIST_EMPTY(insect_markings_list)
GLOBAL_LIST_EMPTY(arachnid_legs_list)
GLOBAL_LIST_EMPTY(arachnid_spinneret_list)
GLOBAL_LIST_EMPTY(arachnid_mandibles_list)
GLOBAL_LIST_EMPTY(caps_list)
//a way to index the right bodypart list given the type of bodypart
@@ -60,6 +63,9 @@ GLOBAL_LIST_INIT(mutant_reference_list, list(
"insect_wings" = GLOB.insect_wings_list,
"insect_fluff" = GLOB.insect_fluffs_list,
"insect_markings" = GLOB.insect_markings_list,
"arachnid_legs" = GLOB.arachnid_legs_list,
"arachnid_spinneret" = GLOB.arachnid_spinneret_list,
"arachnid_mandibles" = GLOB.arachnid_mandibles_list,
"caps" = GLOB.caps_list,
"ipc_screen" = GLOB.ipc_screens_list,
"ipc_antenna" = GLOB.ipc_antennas_list,
@@ -267,20 +273,62 @@ GLOBAL_LIST_INIT(redacted_strings, list("\[REDACTED\]", "\[CLASSIFIED\]", "\[ARC
GLOBAL_LIST_INIT(wisdoms, world.file2list("strings/wisdoms.txt"))
//LANGUAGE CHARACTER CUSTOMIZATION
GLOBAL_LIST_INIT(speech_verbs, list("default","says","gibbers", "states", "chitters", "chimpers", "declares", "bellows", "buzzes" ,"beeps", "chirps", "clicks", "hisses" ,"poofs" , "puffs", "rattles", "mewls" ,"barks", "blorbles", "squeaks", "squawks", "flutters", "warbles"))
GLOBAL_LIST_INIT(roundstart_tongues, list("default","human tongue" = /obj/item/organ/tongue, "lizard tongue" = /obj/item/organ/tongue/lizard, "skeleton tongue" = /obj/item/organ/tongue/bone, "fly tongue" = /obj/item/organ/tongue/fly, "ipc tongue" = /obj/item/organ/tongue/robot/ipc))
//SPECIES BODYPART LISTS
//locked parts are those that your picked species requires to have
//unlocked parts are those that anyone can choose on customisation regardless
//parts not in unlocked, but in all, are thus locked
GLOBAL_LIST_INIT(all_mutant_parts, list("tail_lizard" = "Tail", "mam_tail" = "Tail", "tail_human" = "Tail", "snout" = "Snout", "frills" = "Frills", "spines" = "Spines", "body_markings" = "Body Markings", "mam_body_markings" = "Species Markings" , "mam_ears" = "Ears", "ears" = "Ears", "mam_snouts" = "Snout", "legs" = "Legs", "deco_wings" = "Decorative Wings", "insect_wings" = "Insect Wings", "insect_fluff" = "Insect Fluff", "taur" = "Tauric Body", "insect_markings" = "Insect Markings", "wings" = "Wings", "xenohead" = "Caste Head", "xenotail" = "Tail", "xenodorsal" = "Dorsal Spines", "ipc_screen" = "Screen", "ipc_antenna" = "Antenna", "meat_type" = "Meat Type", "horns" = "Horns"))
GLOBAL_LIST_INIT(all_mutant_parts, list("tail_lizard" = "Tail", "mam_tail" = "Tail", "tail_human" = "Tail", "snout" = "Snout", "frills" = "Frills", "spines" = "Spines", "body_markings" = "Body Markings", "mam_body_markings" = "Species Markings" , "mam_ears" = "Ears", "ears" = "Ears", "mam_snouts" = "Snout", "legs" = "Legs", "deco_wings" = "Decorative Wings", "insect_wings" = "Insect Wings", "insect_fluff" = "Insect Fluff", "taur" = "Tauric Body", "insect_markings" = "Insect Markings", "wings" = "Wings", "arachnid_legs" = "Arachnid Legs", "arachnid_spinneret" = "Spinneret", "arachnid_mandibles" = "Mandibles", "xenohead" = "Caste Head", "xenotail" = "Tail", "xenodorsal" = "Dorsal Spines", "ipc_screen" = "Screen", "ipc_antenna" = "Antenna", "meat_type" = "Meat Type", "horns" = "Horns"))
GLOBAL_LIST_INIT(unlocked_mutant_parts, list("horns", "insect_fluff"))
//parts in either of the above two lists that require a second option that allows them to be coloured
GLOBAL_LIST_INIT(colored_mutant_parts, list("insect_wings" = "wings_color", "deco_wings" = "wings_color", "horns" = "horns_color"))
//body ids that have greyscale sprites
GLOBAL_LIST_INIT(greyscale_limb_types, list("human","moth","lizard","pod","plant","jelly","slime","golem","lum","stargazer","mush","ethereal","snail","c_golem","b_golem","mammal","xeno","ipc","insect","synthliz","avian","aquatic"))
GLOBAL_LIST_INIT(greyscale_limb_types, list("human","moth","lizard","pod","plant","jelly","slime","golem","slimelumi","stargazer","mush","ethereal","snail","c_golem","b_golem","mammal","xeno","ipc","insect","synthliz","avian","aquatic"))
//body ids that have prosthetic sprites
GLOBAL_LIST_INIT(prosthetic_limb_types, list("xion","bishop","cybersolutions","grayson","hephaestus","nanotrasen","talon"))
//FAMILY HEIRLOOM LIST
//this works by using the first number for the species as a probability to choose one of the items in the following list for their family heirloom
//if the probability fails, or the species simply isn't in the list, then it defaults to the next global list, which has its own list of items for each job
//the first item in the list is for if your job isn't in that list
//species-heirloom list (we categorise them by the species id var)
GLOBAL_LIST_INIT(species_heirlooms, list(
"dwarf" = list(25, list(/obj/item/reagent_containers/food/drinks/dwarf_mug)), //example: 25% chance for dwarves to get a dwarf mug as their heirloom (normal container but has manly dorf icon)
"insect" = list(25, list(/obj/item/flashlight/lantern/heirloom_moth)),
"ipc" = list(25, list(/obj/item/stock_parts/cell/family)), //gives a broken powercell for flavor text!
"synthliz" = list(25, list(/obj/item/stock_parts/cell/family)), //they're also robots
"slimeperson" = list(25, list(/obj/item/toy/plush/slimeplushie)),
"lizard" = list(25, list(/obj/item/toy/plush/lizardplushie)),
))
//job-heirloom list
GLOBAL_LIST_INIT(job_heirlooms, list(
"NO_JOB" = list(/obj/item/toy/cards/deck, /obj/item/lighter, /obj/item/dice/d20),
"Clown" = list(/obj/item/paint/anycolor, /obj/item/bikehorn/golden),
"Mime" = list(/obj/item/paint/anycolor, /obj/item/toy/dummy),
"Cook" = list(/obj/item/kitchen/knife/scimitar),
"Botanist" = list(/obj/item/cultivator, /obj/item/reagent_containers/glass/bucket, /obj/item/storage/bag/plants, /obj/item/toy/plush/beeplushie),
"Medical Doctor" = list(/obj/item/healthanalyzer),
"Paramedic" = list(/obj/item/lighter), //..why?
"Station Engineer" = list(/obj/item/wirecutters/brass/family, /obj/item/crowbar/brass/family, /obj/item/screwdriver/brass/family, /obj/item/wrench/brass/family), //brass tools but without the tool speed modifier
"Atmospheric Technician" = list(/obj/item/extinguisher/mini/family),
"Lawyer" = list(/obj/item/storage/briefcase/lawyer/family),
"Janitor" = list(/obj/item/mop),
"Scientist" = list(/obj/item/toy/plush/slimeplushie),
"Assistant" = list(/obj/item/clothing/gloves/cut/family),
"Chaplain" = list(/obj/item/camera/spooky/family),
"Head of Personnel" = list(/obj/item/pinpointer/ian)
))
//body ids that have non-gendered bodyparts
GLOBAL_LIST_INIT(nongendered_limb_types, list("fly", "zombie" ,"synth", "shadow", "cultgolem", "agent", "plasmaman", "clockgolem", "clothgolem"))
//list of eye types, corresponding to a respective left and right icon state for the set of eyes
GLOBAL_LIST_INIT(eye_types, list("normal", "insect", "moth", "double", "double2", "double3", "cyclops"))
+17 -1
View File
@@ -40,6 +40,7 @@ GLOBAL_LIST_EMPTY(sentient_disease_instances)
GLOBAL_LIST_EMPTY(latejoin_ai_cores)
GLOBAL_LIST_EMPTY(mob_config_movespeed_type_lookup)
GLOBAL_LIST_EMPTY(mob_config_movespeed_type_lookup_floating)
GLOBAL_LIST_EMPTY(latejoiners) //CIT CHANGE - All latejoining people, for traitor-target purposes.
@@ -47,14 +48,22 @@ GLOBAL_LIST_EMPTY(latejoiners) //CIT CHANGE - All latejoining people, for traito
// NOTE: This is entirely based on the fact that byond typesof/subtypesof gets longer/deeper paths before shallower ones.
// If that ever breaks this entire proc breaks.
var/list/mob_types = typesof(/mob)
var/list/entry_value = CONFIG_GET(keyed_list/multiplicative_movespeed)
var/list/mob_types_floating = typesof(/mob)
var/list/entry_value = CONFIG_GET(keyed_list/multiplicative_movespeed/normal)
var/list/entry_value_floating = CONFIG_GET(keyed_list/multiplicative_movespeed/floating)
var/list/configured_types = list()
var/list/configured_types_floating = list()
for(var/path in entry_value)
var/value = entry_value[path]
if(isnull(value))
continue
// associative list sets for elements that already exist preserve order
mob_types[path] = value
for(var/path in entry_value_floating)
var/value = entry_value_floating[path]
if(isnull(value))
continue
mob_types_floating[path] = value
// now go back up through it to set everything, making absolute sure that base paths are overridden by child paths all the way down the path tree.
for(var/i in length(mob_types) to 1 step -1)
var/path = mob_types[i]
@@ -63,7 +72,14 @@ GLOBAL_LIST_EMPTY(latejoiners) //CIT CHANGE - All latejoining people, for traito
// we're going from bottom to top so it should be safe to do this without further checks..
for(var/subpath in typesof(path))
configured_types[subpath] = mob_types[path]
for(var/i in length(mob_types_floating) to 1 step -1)
var/path = mob_types_floating[i]
if(isnull(mob_types_floating[path]))
continue
for(var/subpath in typesof(path))
configured_types_floating[subpath] = mob_types_floating[path]
GLOB.mob_config_movespeed_type_lookup = configured_types
GLOB.mob_config_movespeed_type_lookup_floating = configured_types_floating
if(update_mobs)
update_mob_config_movespeeds()
+2
View File
@@ -16,6 +16,8 @@ GLOBAL_LIST_INIT(carp_names, world.file2list("strings/names/carp.txt"))
GLOBAL_LIST_INIT(golem_names, world.file2list("strings/names/golem.txt"))
GLOBAL_LIST_INIT(moth_first, world.file2list("strings/names/moth_first.txt"))
GLOBAL_LIST_INIT(moth_last, world.file2list("strings/names/moth_last.txt"))
GLOBAL_LIST_INIT(arachnid_first, world.file2list("strings/names/arachnid_first.txt"))
GLOBAL_LIST_INIT(arachnid_last, world.file2list("strings/names/arachnid_last.txt"))
GLOBAL_LIST_INIT(plasmaman_names, world.file2list("strings/names/plasmaman.txt"))
GLOBAL_LIST_INIT(ethereal_names, world.file2list("strings/names/ethereal.txt"))
GLOBAL_LIST_INIT(posibrain_names, world.file2list("strings/names/posibrain.txt"))
+1 -2
View File
@@ -43,5 +43,4 @@ GLOBAL_LIST_EMPTY(ai_status_displays)
GLOBAL_LIST_EMPTY(mob_spawners) // All mob_spawn objects
GLOBAL_LIST_EMPTY(alert_consoles) // Station alert consoles, /obj/machinery/computer/station_alert
//list of everyone playing rock paper scissors
GLOBAL_LIST_EMPTY(rockpaperscissors_players)
GLOBAL_LIST_EMPTY(rockpaperscissors_players) // List of everyone playing rock paper scissors
+1
View File
@@ -13,6 +13,7 @@ GLOBAL_LIST_INIT(traits_by_type, list(
"TRAIT_NEARSIGHT" = TRAIT_NEARSIGHT,
"TRAIT_FAT" = TRAIT_FAT,
"TRAIT_HUSK" = TRAIT_HUSK,
"TRAIT_SACRIFICED" = TRAIT_SACRIFICED,
"TRAIT_NOCLONE" = TRAIT_NOCLONE,
"TRAIT_CLUMSY" = TRAIT_CLUMSY,
"TRAIT_CHUNKYFINGERS" = TRAIT_CHUNKYFINGERS,
+4 -23
View File
@@ -1,30 +1,11 @@
/client
/**
* Assoc list with all the active maps - when a screen obj is added to
* a map, it's put in here as well.
*
* Format: list(<mapname> = list(/obj/screen))
*/
var/list/screen_maps = list()
/**
* A screen object, which acts as a container for turfs and other things
* you want to show on the map, which you usually attach to "vis_contents".
*/
/obj/screen
/**
* Map name assigned to this object.
* Automatically set by /client/proc/add_obj_to_map.
*/
var/assigned_map
/**
* Mark this object as garbage-collectible after you clean the map
* it was registered on.
*
* This could probably be changed to be a proc, for conditional removal.
* But for now, this works.
*/
var/del_on_map_removal = TRUE
/obj/screen/map_view
// Map view has to be on the lowest plane to enable proper lighting
layer = GAME_PLANE
plane = GAME_PLANE
/**
* A generic background object.
+1 -1
View File
@@ -318,4 +318,4 @@ GLOBAL_LIST_EMPTY(radial_menus)
if(istype(custom_check))
if(!custom_check.Invoke())
return
return answer
return answer
+13
View File
@@ -15,6 +15,19 @@
appearance_flags = APPEARANCE_UI
var/obj/master = null //A reference to the object in the slot. Grabs or items, generally.
var/datum/hud/hud = null // A reference to the owner HUD, if any.
/**
* Map name assigned to this object.
* Automatically set by /client/proc/add_obj_to_map.
*/
var/assigned_map
/**
* Mark this object as garbage-collectible after you clean the map
* it was registered on.
*
* This could probably be changed to be a proc, for conditional removal.
* But for now, this works.
*/
var/del_on_map_removal = TRUE
/obj/screen/take_damage()
return
+42 -23
View File
@@ -11,7 +11,9 @@
/obj/screen/staminas/Click(location,control,params)
if(isliving(usr))
var/mob/living/L = usr
to_chat(L, "<span class='notice'>You have <b>[L.getStaminaLoss()]</b> stamina loss.<br>Your stamina buffer can take <b>[L.stambuffer]</b> stamina loss, and recharges at no cost.<br>Your stamina buffer is <b>[(L.stambuffer*(100/L.stambuffer))-(L.bufferedstam*(100/L.stambuffer))]%</b> full.</span>")
CONFIG_CACHE_ENTRY_AND_FETCH_VALUE(number/stamina_combat/buffer_max, buffer_max)
to_chat(L, "<span class='notice'>You have <b>[L.getStaminaLoss()]</b> stamina loss.<br>\
<br>Your stamina buffer is <b>[round((L.stamina_buffer / buffer_max) * 100, 0.1)]%</b> full.</span>")
/obj/screen/staminas/update_icon_state()
var/mob/living/carbon/user = hud?.mymob
@@ -24,6 +26,19 @@
else
icon_state = "stamina[clamp(FLOOR(user.getStaminaLoss() /20, 1), 0, 6)]"
/obj/screen/staminas/update_overlays()
. = ..()
var/mob/living/carbon/user = hud?.mymob
if(!user)
return
var/percent = user.getStaminaLoss() / STAMINA_CRIT
if((user.stat == DEAD) || (user.combat_flags & COMBAT_FLAG_HARD_STAMCRIT) || (user.hal_screwyhud in 1 to 2))
. += list("stamina_alert3")
else if(percent >= 0.85)
. += list("stamina_alert2")
else if(percent >= 0.7)
. += list("stamina_alert1")
//stam buffer
/obj/screen/staminabuffer
icon = 'modular_citadel/icons/ui/screen_gen.dmi'
@@ -33,29 +48,33 @@
layer = ABOVE_HUD_LAYER + 0.1
mouse_opacity = 0
/obj/screen/staminabuffer/update_icon_state()
/obj/screen/staminabuffer/proc/mark_dirty()
if(update_to_mob())
START_PROCESSING(SShuds, src)
/obj/screen/staminabuffer/process()
if(!update_to_mob())
return PROCESS_KILL
/obj/screen/staminabuffer/Destroy()
STOP_PROCESSING(SShuds, src)
return ..()
/obj/screen/staminabuffer/proc/update_to_mob()
var/mob/living/carbon/user = hud?.mymob
if(!user)
return
user.UpdateStaminaBuffer(FALSE)
CONFIG_CACHE_ENTRY_AND_FETCH_VALUE(number/stamina_combat/buffer_max, buffer_max)
if(!user?.client)
return FALSE
if(user.stat == DEAD || (user.combat_flags & COMBAT_FLAG_HARD_STAMCRIT) || (user.hal_screwyhud in 1 to 2))
icon_state = "stambuffer7"
else if(user.hal_screwyhud == 5)
icon_state = "stambuffer0"
return FALSE
else if(user.hal_screwyhud == 5)
icon_state = "stambuffer29"
return FALSE
else if(user.stamina_buffer >= buffer_max)
icon_state = "stambuffer29"
return FALSE
else
switch(user.bufferedstam / user.stambuffer)
if(0.95 to INFINITY)
icon_state = "stambuffer7"
if(0.9 to 0.95)
icon_state = "stambuffer6"
if(0.8 to 0.9)
icon_state = "stambuffer5"
if(0.6 to 0.8)
icon_state = "stambuffer4"
if(0.4 to 0.6)
icon_state = "stambuffer3"
if(0.2 to 0.4)
icon_state = "stambuffer2"
if(0.05 to 0.2)
icon_state = "stambuffer1"
else
icon_state = "stambuffer0"
icon_state = "stambuffer[FLOOR((user.stamina_buffer / buffer_max) * 29, 1)]"
return TRUE
+18 -40
View File
@@ -85,6 +85,9 @@
if(force && damtype != STAMINA && HAS_TRAIT(user, TRAIT_PACIFISM))
to_chat(user, "<span class='warning'>You don't want to harm other living beings!</span>")
return
if(!UseStaminaBufferStandard(user, STAM_COST_ATTACK_MOB_MULT, null, TRUE))
return DISCARD_LAST_ACTION
if(!force)
playsound(loc, 'sound/weapons/tap.ogg', get_clamped_volume(), 1, -1)
@@ -100,10 +103,6 @@
log_combat(user, M, "attacked", src.name, "(INTENT: [uppertext(user.a_intent)]) (DAMTYPE: [uppertext(damtype)])")
add_fingerprint(user)
var/weight = getweight(user, STAM_COST_ATTACK_MOB_MULT) //CIT CHANGE - makes attacking things cause stamina loss
if(weight)
user.adjustStaminaLossBuffered(weight)
// CIT SCREENSHAKE
if(force >= 15)
shake_camera(user, ((force - 10) * 0.01 + 1), ((force - 10) * 0.01))
@@ -120,31 +119,21 @@
if(SEND_SIGNAL(src, COMSIG_ITEM_ATTACK_OBJ, O, user) & COMPONENT_NO_ATTACK_OBJ)
return
if(item_flags & NOBLUDGEON)
return
return DISCARD_LAST_ACTION
if(!UseStaminaBufferStandard(user, STAM_COST_ATTACK_OBJ_MULT, warn = TRUE))
return DISCARD_LAST_ACTION
user.do_attack_animation(O)
O.attacked_by(src, user)
var/weight = getweight(user, STAM_COST_ATTACK_OBJ_MULT)
if(weight)
user.adjustStaminaLossBuffered(weight)//CIT CHANGE - makes attacking things cause stamina loss
/atom/movable/proc/attacked_by()
return
/obj/attacked_by(obj/item/I, mob/living/user, attackchain_flags = NONE, damage_multiplier = 1)
var/totitemdamage = I.force * damage_multiplier
var/bad_trait
var/stamloss = user.getStaminaLoss()
if(stamloss > STAMINA_NEAR_SOFTCRIT) //The more tired you are, the less damage you do.
var/penalty = (stamloss - STAMINA_NEAR_SOFTCRIT)/(STAMINA_NEAR_CRIT - STAMINA_NEAR_SOFTCRIT)*STAM_CRIT_ITEM_ATTACK_PENALTY
totitemdamage *= 1 - penalty
if(SEND_SIGNAL(user, COMSIG_COMBAT_MODE_CHECK, COMBAT_MODE_INACTIVE))
bad_trait = SKILL_COMBAT_MODE //blacklist combat skills.
if(I.used_skills && user.mind)
if(totitemdamage)
totitemdamage = user.mind.item_action_skills_mod(I, totitemdamage, I.skill_difficulty, SKILL_ATTACK_OBJ, bad_trait)
totitemdamage = user.mind.item_action_skills_mod(I, totitemdamage, I.skill_difficulty, SKILL_ATTACK_OBJ)
for(var/skill in I.used_skills)
if(!(SKILL_TRAIN_ATTACK_OBJ in I.used_skills[skill]))
continue
@@ -187,28 +176,15 @@
if(!.)
return
var/stamloss = user.getStaminaLoss()
var/stam_mobility_mult = 1
if(stamloss > STAMINA_NEAR_SOFTCRIT) //The more tired you are, the less damage you do.
var/penalty = (stamloss - STAMINA_NEAR_SOFTCRIT)/(STAMINA_NEAR_CRIT - STAMINA_NEAR_SOFTCRIT)*STAM_CRIT_ITEM_ATTACK_PENALTY
stam_mobility_mult -= penalty
if(stam_mobility_mult > LYING_DAMAGE_PENALTY && !CHECK_MOBILITY(user, MOBILITY_STAND)) //damage penalty for fighting prone, doesn't stack with the above.
stam_mobility_mult = LYING_DAMAGE_PENALTY
. *= stam_mobility_mult
var/bad_trait
if(!(I.item_flags & NO_COMBAT_MODE_FORCE_MODIFIER))
if(SEND_SIGNAL(user, COMSIG_COMBAT_MODE_CHECK, COMBAT_MODE_INACTIVE))
bad_trait = SKILL_COMBAT_MODE //blacklist combat skills.
if(SEND_SIGNAL(src, COMSIG_COMBAT_MODE_CHECK, COMBAT_MODE_ACTIVE))
. *= 0.8
else if(SEND_SIGNAL(src, COMSIG_COMBAT_MODE_CHECK, COMBAT_MODE_INACTIVE))
. *= 1.2
if(!user.mind || !I.used_skills)
return
if(.)
. = user.mind.item_action_skills_mod(I, ., I.skill_difficulty, SKILL_ATTACK_MOB, bad_trait)
. = user.mind.item_action_skills_mod(I, ., I.skill_difficulty, SKILL_ATTACK_MOB)
for(var/skill in I.used_skills)
if(!(SKILL_TRAIN_ATTACK_MOB in I.used_skills[skill]))
continue
@@ -263,21 +239,23 @@
. = (total_mass || w_class * STAM_COST_W_CLASS_MULT) * multiplier
if(!user)
return
var/bad_trait
if(SEND_SIGNAL(user, COMSIG_COMBAT_MODE_CHECK, COMBAT_MODE_INACTIVE))
. *= STAM_COST_NO_COMBAT_MULT
bad_trait = SKILL_COMBAT_MODE
if(used_skills && user.mind)
. = user.mind.item_action_skills_mod(src, ., skill_difficulty, trait, bad_trait, FALSE)
var/total_health = user.getStaminaLoss()
. = clamp(., 0, STAMINA_NEAR_CRIT - total_health)
. = user.mind.item_action_skills_mod(src, ., skill_difficulty, trait, null, FALSE)
/**
* Uses the amount of stamina required for a standard hit
*/
/obj/item/proc/UseStaminaBufferStandard(mob/living/user, multiplier = 1, trait = SKILL_STAMINA_COST, warn = TRUE)
ASSERT(user)
var/cost = getweight(user, multiplier, trait)
return user.UseStaminaBuffer(cost, warn)
/// How long this staggers for. 0 and negatives supported.
/obj/item/proc/melee_stagger_duration(force_override)
if(!isnull(stagger_force))
return stagger_force
/// totally not an untested, arbitrary equation.
return clamp((1.5 + (w_class/7.5)) * ((force_override || force) / 2), 0, 10 SECONDS)
return clamp((1.5 + (w_class/5)) * ((force_override || force) / 1.5), 0, 10 SECONDS)
/obj/item/proc/do_stagger_action(mob/living/target, mob/living/user, force_override)
if(!CHECK_BITFIELD(target.status_flags, CANSTAGGER))
+3 -1
View File
@@ -3,7 +3,9 @@
name = "Initializing..."
var/target
/obj/effect/statclick/New(loc, text, target) //Don't port this to Initialize it's too critical
INITIALIZE_IMMEDIATE(/obj/effect/statclick) //it's new, but rebranded.
/obj/effect/statclick/Initialize(mapload, text, target) //Don't port this to Initialize it's too critical
. = ..()
name = text
src.target = target
@@ -27,7 +27,10 @@
/datum/config_entry/New()
if(type == abstract_type)
CRASH("Abstract config entry [type] instatiated!")
name = lowertext(type2top(type))
if(!name)
name = lowertext(type2top(type))
else
name = lowertext(name)
if(islist(config_entry_value))
var/list/L = config_entry_value
default = L.Copy()
@@ -230,14 +230,7 @@
/datum/config_entry/keyed_list/multiplicative_movespeed
key_mode = KEY_MODE_TYPE
value_mode = VALUE_MODE_NUM
config_entry_value = list( //DEFAULTS
/mob/living/simple_animal = 1,
/mob/living/silicon/pai = 1,
/mob/living/carbon/alien/humanoid/sentinel = 0.25,
/mob/living/carbon/alien/humanoid/drone = 0.5,
/mob/living/carbon/alien/humanoid/royal/praetorian = 1,
/mob/living/carbon/alien/humanoid/royal/queen = 3
)
abstract_type = /datum/config_entry/keyed_list/multiplicative_movespeed
/datum/config_entry/keyed_list/multiplicative_movespeed/ValidateAndSet()
. = ..()
@@ -249,6 +242,26 @@
if(. && (var_name == NAMEOF(src, config_entry_value)))
update_config_movespeed_type_lookup(TRUE)
/datum/config_entry/keyed_list/multiplicative_movespeed/normal
name = "multiplicative_movespeed"
config_entry_value = list( //DEFAULTS
/mob/living/simple_animal = 1,
/mob/living/silicon/pai = 1,
/mob/living/carbon/alien/humanoid/sentinel = 0.25,
/mob/living/carbon/alien/humanoid/drone = 0.5,
/mob/living/carbon/alien/humanoid/royal/praetorian = 1,
/mob/living/carbon/alien/humanoid/royal/queen = 3
)
/datum/config_entry/keyed_list/multiplicative_movespeed/floating
name = "multiplicative_movespeed_floating"
config_entry_value = list(
/mob/living = 0,
/mob/living/carbon/alien/humanoid = 0,
/mob/living/carbon/alien/humanoid/royal/praetorian = 0,
/mob/living/carbon/alien/humanoid/royal/queen = 2
)
/datum/config_entry/number/movedelay //Used for modifying movement speed for mobs.
abstract_type = /datum/config_entry/number/movedelay
integer = FALSE
@@ -280,6 +293,12 @@
/datum/config_entry/number/movedelay/sprint_speed_increase
config_entry_value = 1
/datum/config_entry/number/movedelay/sprint_max_tiles_increase
config_entry_value = 5
/datum/config_entry/number/movedelay/sprint_absolute_max_tiles
config_entry_value = 13
/datum/config_entry/number/movedelay/sprint_buffer_max
config_entry_value = 24
@@ -291,7 +310,7 @@
/////////////////////////////////////////////////Outdated move delay
/datum/config_entry/number/outdated_movedelay
deprecated_by = /datum/config_entry/keyed_list/multiplicative_movespeed
deprecated_by = /datum/config_entry/keyed_list/multiplicative_movespeed/normal
abstract_type = /datum/config_entry/number/outdated_movedelay
var/movedelay_type
@@ -490,21 +509,21 @@
//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
config_entry_value = 0.9
min_val = 0.1 //to avoid issues with zeros and negative values.
max_val = RESIZE_DEFAULT_SIZE
integer = FALSE
/datum/config_entry/number/body_size_max
config_entry_value = RESIZE_DEFAULT_SIZE
config_entry_value = 1.25
min_val = RESIZE_DEFAULT_SIZE
integer = FALSE
//Pun-Pun movement slowdown given to characters with a body size smaller than this value,
//Penalties 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
/datum/config_entry/number/threshold_body_size_penalty
config_entry_value = RESIZE_DEFAULT_SIZE
min_val = 0
max_val = RESIZE_DEFAULT_SIZE
integer = FALSE
@@ -512,8 +531,8 @@
//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.
config_entry_value = 0
min_val = 0
integer = FALSE
//Allows players to set a hexadecimal color of their choice as skin tone, on top of the standard ones.
@@ -290,7 +290,7 @@
/datum/config_entry/flag/tgstyle_maprotation
/datum/config_entry/string/map_vote_type
config_entry_value = "SCORE"
config_entry_value = APPROVAL_VOTING
/datum/config_entry/number/maprotatechancedelta
config_entry_value = 0.75
@@ -327,6 +327,9 @@
/datum/config_entry/number/notify_new_player_account_age // how long do we notify admins of a new byond account
min_val = 0
/datum/config_entry/flag/age_verification //are we using the automated age verification which asks users if they're 18+?
config_entry_value = TRUE
/datum/config_entry/flag/irc_first_connection_alert // do we notify the irc channel when somebody is connecting for the first time?
/datum/config_entry/flag/check_randomizer
@@ -468,6 +471,9 @@
/datum/config_entry/string/default_view
config_entry_value = "15x15"
/datum/config_entry/string/default_view_square
config_entry_value = "15x15"
/datum/config_entry/flag/log_pictures
/datum/config_entry/flag/picture_logging_camera
@@ -0,0 +1,35 @@
/datum/config_entry/number/stamina_combat
integer = FALSE
abstract_type = /datum/config_entry/number/stamina_combat
/// Maximum stamina buffer
/datum/config_entry/number/stamina_combat/buffer_max
config_entry_value = 25
/// Seconds until percent_regeneration_out_of_combat kicks in
/datum/config_entry/number/stamina_combat/out_of_combat_timer
config_entry_value = 15
/// Base regeneration per second
/datum/config_entry/number/stamina_combat/base_regeneration
config_entry_value = 0.5
/// Combat mode regeneration per second
/datum/config_entry/number/stamina_combat/combat_regeneration
config_entry_value = 5
/// After out_of_combat_timer elapses, additionally regenerate this percent of total stamina per second. Unaffected by combat mode.
/datum/config_entry/number/stamina_combat/percent_regeneration_out_of_combat
config_entry_value = 30
/// Seconds after an action for which your regeneration is penalized
/datum/config_entry/number/stamina_combat/post_action_penalty_delay
config_entry_value = 5
/// Factor to multiply by for penalizing post-action-stamina-regen
/datum/config_entry/number/stamina_combat/post_action_penalty_factor
config_entry_value = 0.25
/// Factor to multiply by for stamina usage past buffer into health
/datum/config_entry/number/stamina_combat/overdraw_penalty_factor
config_entry_value = 1.5
+3 -3
View File
@@ -1,4 +1,4 @@
/**
/**
* Failsafe
*
* Pretty much pokes the MC to make sure it's still alive.
@@ -31,7 +31,7 @@ GLOBAL_REAL(Failsafe, /datum/controller/failsafe)
Initialize()
/datum/controller/failsafe/Initialize()
set waitfor = 0
set waitfor = FALSE
Failsafe.Loop()
if(!QDELETED(src))
qdel(src) //when Loop() returns, we delete ourselves and let the mc recreate us
@@ -97,4 +97,4 @@ GLOBAL_REAL(Failsafe, /datum/controller/failsafe)
/datum/controller/failsafe/stat_entry(msg)
msg = "Defcon: [defcon_pretty()] (Interval: [Failsafe.processing_interval] | Iteration: [Failsafe.master_iteration])"
return msg
return msg
+3 -2
View File
@@ -20,8 +20,9 @@ GLOBAL_REAL(GLOB, /datum/controller/global_vars)
Initialize()
/datum/controller/global_vars/Destroy()
//fuck off kevinz
/datum/controller/global_vars/Destroy(force)
// This is done to prevent an exploit where admins can get around protected vars
SHOULD_CALL_PARENT(FALSE)
return QDEL_HINT_IWILLGC
/datum/controller/global_vars/stat_entry(msg)
+2 -2
View File
@@ -97,9 +97,9 @@
return
//This is used so the mc knows when the subsystem sleeps. do not override.
/datum/controller/subsystem/proc/ignite(resumed = 0)
/datum/controller/subsystem/proc/ignite(resumed = FALSE)
SHOULD_NOT_OVERRIDE(TRUE)
set waitfor = 0
set waitfor = FALSE
. = SS_SLEEPING
fire(resumed)
. = state
+1
View File
@@ -1,6 +1,7 @@
PROCESSING_SUBSYSTEM_DEF(dcs)
name = "Datum Component System"
flags = SS_NO_INIT
wait = 1 SECONDS
var/list/elements_by_type = list()
+3 -3
View File
@@ -60,9 +60,9 @@ SUBSYSTEM_DEF(economy)
secmedsrv_payout() // Payout based on crew safety, health, and mood.
civ_payout() // Payout based on ??? Profit
car_payout() // Cargo's natural gain in the cash moneys.
for(var/A in bank_accounts)
var/datum/bank_account/B = A
B.payday(1)
for(var/account in bank_accounts)
var/datum/bank_account/bank_account = account
bank_account.payday(1)
/datum/controller/subsystem/economy/proc/get_dep_account(dep_id)
+1 -1
View File
@@ -100,7 +100,7 @@ SUBSYSTEM_DEF(events)
// REEEEEEEEE
/client/proc/forceEvent()
set name = "Trigger Event"
set category = "Fun"
set category = "Admin.Events"
if(!holder ||!check_rights(R_FUN))
return
+6 -6
View File
@@ -64,10 +64,10 @@ SUBSYSTEM_DEF(input)
// Misc
macroset_classic_input["Tab"] = "\".winset \\\"mainwindow.macro=[SKIN_MACROSET_CLASSIC_HOTKEYS] map.focus=true input.background-color=[COLOR_INPUT_DISABLED]\\\"\""
macroset_classic_input["Escape"] = "\".winset \\\"input.text=\\\"\\\"\\\"\""
// FINALLY, WE CAN DO SOMETHING MORE NORMAL FOR THE SNOWFLAKE-BUT-LESS KEYSET.
// HAHA - SIKE. Because of BYOND weirdness (tl;dr not specifically binding this way results in potentially duplicate chatboxes when
// HAHA - SIKE. Because of BYOND weirdness (tl;dr not specifically binding this way results in potentially duplicate chatboxes when
// conflicts occur with something like say indicator vs say), we're going to snowflake this anyways
var/list/hard_binds = list(
"O" = "ooc",
@@ -80,7 +80,7 @@ SUBSYSTEM_DEF(input)
for(var/key in hard_binds)
for(var/modifier in anti_collision_modifiers)
hard_bind_anti_collision["[modifier]+[key]"] = ".NONSENSICAL_VERB_THAT_DOES_NOTHING"
macroset_classic_hotkey = list(
"Any" = "\"KeyDown \[\[*\]\]\"",
"Any+UP" = "\"KeyUp \[\[*\]\]\"",
@@ -88,7 +88,7 @@ SUBSYSTEM_DEF(input)
"Escape" = "\".winset \\\"input.text=\\\"\\\"\\\"\"",
"Back" = "\".winset \\\"input.text=\\\"\\\"\\\"\"",
)
macroset_classic_hotkey |= hard_binds
macroset_classic_hotkey |= hard_bind_anti_collision
@@ -100,7 +100,7 @@ SUBSYSTEM_DEF(input)
"Escape" = "\".winset \\\"input.text=\\\"\\\"\\\"\"",
"Back" = "\".winset \\\"input.text=\\\"\\\"\\\"\"",
)
macroset_hotkey |= hard_binds
macroset_hotkey |= hard_bind_anti_collision
+11 -4
View File
@@ -55,9 +55,10 @@ SUBSYSTEM_DEF(job)
continue
if(!job.config_check())
continue
if(!job.map_check()) //Even though we initialize before mapping, this is fine because the config is loaded at new
if(!job.map_check(SSmapping.config)) //Even though we initialize before mapping, this is fine because the config is loaded at new
testing("Removed [job.type] due to map config");
continue
job.process_map_overrides(SSmapping.config)
occupations += job
name_occupations[job.title] = job
type_occupations[J] = job
@@ -665,7 +666,7 @@ SUBSYSTEM_DEF(job)
message_admins(msg)
CRASH(msg)
/datum/controller/subsystem/job/proc/equip_loadout(mob/dead/new_player/N, mob/living/M, equipbackpackstuff, bypass_prereqs = FALSE)
/datum/controller/subsystem/job/proc/equip_loadout(mob/dead/new_player/N, mob/living/M, equipbackpackstuff, bypass_prereqs = FALSE, can_drop = TRUE)
var/mob/the_mob = N
if(!the_mob)
the_mob = M // cause this doesn't get assigned if player is a latejoiner
@@ -694,9 +695,15 @@ SUBSYSTEM_DEF(job)
var/mob/living/carbon/C = M
var/obj/item/storage/backpack/B = C.back
if(!B || !SEND_SIGNAL(B, COMSIG_TRY_STORAGE_INSERT, I, null, TRUE, TRUE)) // Otherwise, try to put it in the backpack, for carbons.
I.forceMove(get_turf(C))
if(can_drop)
I.forceMove(get_turf(C))
else
qdel(I)
else if(!M.equip_to_slot_if_possible(I, SLOT_IN_BACKPACK, disable_warning = TRUE, bypass_equip_delay_self = TRUE)) // Otherwise, try to put it in the backpack
I.forceMove(get_turf(M)) // If everything fails, just put it on the floor under the mob.
if(can_drop)
I.forceMove(get_turf(M)) // If everything fails, just put it on the floor under the mob.
else
qdel(I)
/datum/controller/subsystem/job/proc/FreeRole(rank)
if(!rank)
+1 -1
View File
@@ -447,7 +447,7 @@ GLOBAL_LIST_EMPTY(the_station_areas)
//Manual loading of away missions.
/client/proc/admin_away()
set name = "Load Away Mission / Virtual Reality"
set category = "Fun"
set category = "Admin.Events"
if(!holder ||!check_rights(R_FUN))
return
@@ -0,0 +1,144 @@
SUBSYSTEM_DEF(min_spawns)
name = "Minimum Spawns" /// this hot steaming pile of garbage makes sure theres a minimum of tendrils scattered around
init_order = INIT_ORDER_DEFAULT
flags = SS_BACKGROUND | SS_NO_FIRE | SS_ALWAYS_SHOW_STAT
wait = 2
var/where_we_droppin_boys_iterations = 0
var/snaxi_snowflake_check = FALSE
var/list/active_spawns = list() // lavaland, snaxi, etc. primary spawn list
var/list/active_spawns_2 = list() // snaxi underground, etc. secondary spawn list
var/list/valid_mining_turfs = list() // lavaland/snaxi turfs
var/list/valid_mining_turfs_2 = list() // snaxi underground turfs
GLOBAL_LIST_INIT(minimum_lavaland_spawns, list(
/obj/structure/spawner/lavaland,
/obj/structure/spawner/lavaland/goliath,
/obj/structure/spawner/lavaland/legion,
/mob/living/simple_animal/hostile/megafauna/dragon,
/mob/living/simple_animal/hostile/megafauna/colossus,
/mob/living/simple_animal/hostile/megafauna/bubblegum
))
GLOBAL_LIST_INIT(minimum_snow_surface_spawns, list(
/obj/structure/spawner/ice_moon,
/obj/structure/spawner/ice_moon/polarbear
))
GLOBAL_LIST_INIT(minimum_snow_under_spawns, list(
/obj/structure/spawner/ice_moon/demonic_portal,
/obj/structure/spawner/ice_moon/demonic_portal/ice_whelp,
/obj/structure/spawner/ice_moon/demonic_portal/snowlegion
))
// step 1: check for which list(s) to use - done
// step 2: check for caves - done
// step 3: check for mobs - done
// step 4: start throwing shit down - done
// step 5: snaxi support - done?
/datum/controller/subsystem/min_spawns/Initialize(start_timeofday)
var/list/snaxi_zs_list = SSmapping.levels_by_trait(ZTRAIT_ICE_RUINS) // boy if these things arent mutually exclusive
var/list/lavaland_zs_list = SSmapping.levels_by_trait(ZTRAIT_LAVA_RUINS) // i'm gonna fuckin scream
if(snaxi_zs_list.len)
active_spawns = GLOB.minimum_snow_surface_spawns
active_spawns_2 = GLOB.minimum_snow_under_spawns
snaxi_snowflake_check = TRUE
else if(lavaland_zs_list.len) //todo: recognizing maps that aren't lavaland mining but are also not snaxi
active_spawns = GLOB.minimum_lavaland_spawns
else
return ..() // call it a day i guess
// borrowing this from auxbase code - see code\modules\mining\aux_base.dm
if(snaxi_snowflake_check)
for(var/z_level in SSmapping.levels_by_trait(ZTRAIT_ICE_RUINS))
for(var/turf/TT in Z_TURFS(z_level))
if(!isarea(TT.loc))
continue
var/area/A = TT.loc
if(!A.mob_spawn_allowed)
continue
if(!istype(TT, /turf/open/floor/plating/asteroid))
continue
if(typesof(/turf/open/lava) in orange(9, TT))
continue
valid_mining_turfs.Add(TT)
for(var/z_level in SSmapping.levels_by_trait(ZTRAIT_ICE_RUINS_UNDERGROUND))
for(var/turf/TT in Z_TURFS(z_level))
if(!isarea(TT.loc))
continue
var/area/A = TT.loc
if(!A.mob_spawn_allowed)
continue
if(!istype(TT, /turf/open/floor/plating/asteroid))
continue
if(typesof(/turf/open/lava) in orange(9, TT))
continue
valid_mining_turfs_2.Add(TT)
else
for(var/z_level in SSmapping.levels_by_trait(ZTRAIT_LAVA_RUINS))
for(var/turf/TT in Z_TURFS(z_level))
if(!isarea(TT.loc))
continue
var/area/A = TT.loc
if(!A.mob_spawn_allowed)
continue
if(!istype(TT, /turf/open/floor/plating/asteroid))
continue
if(typesof(/turf/open/lava) in orange(9, TT))
continue
valid_mining_turfs.Add(TT)
if(!valid_mining_turfs.len)
return ..() // call it a day i guess
// if we're at this point we might as well fucking hit it
where_we_droppin_boys()
return ..()
/datum/controller/subsystem/min_spawns/proc/where_we_droppin_boys()
while(active_spawns.len)
where_we_droppin_boys_iterations++
CHECK_TICK
if(where_we_droppin_boys_iterations >= 1250)
INIT_ANNOUNCE("Minimum Spawns subsystem stopped early on spawns list 1 - too many iterations!")
break
var/turf/RT = pick_n_take(valid_mining_turfs) //Pick a random mining Z-level turf
var/MS_tospawn = pick_n_take(active_spawns)
for(var/mob/living/simple_animal/hostile/megafauna/H in urange(70,RT)) //prevents mob clumps
if((istype(MS_tospawn, /mob/living/simple_animal/hostile/megafauna)) && get_dist(RT, H) <= 70)
active_spawns.Add(MS_tospawn)
continue //let's try not to dump megas too close to each other?
if((istype(MS_tospawn, /obj/structure/spawner)) && get_dist(RT, H) <= 40)
active_spawns.Add(MS_tospawn)
continue //let's at least /try/ to space these out?
for(var/obj/structure/spawner/LT in urange(70,RT)) //prevents tendril/mega clumps
if((istype(MS_tospawn, /mob/living/simple_animal/hostile/megafauna)) && get_dist(RT, LT) <= 70)
active_spawns.Add(MS_tospawn)
continue //let's try not to dump megas too close to each other?
if((istype(MS_tospawn, /obj/structure/spawner)) && get_dist(RT, LT) <= 40)
active_spawns.Add(MS_tospawn)
continue //let's at least /try/ to space these out?
// man the overhead on this is gonna SUCK
new MS_tospawn(RT)
while(active_spawns_2.len)
where_we_droppin_boys_iterations++
CHECK_TICK
if(where_we_droppin_boys_iterations >= 1250)
INIT_ANNOUNCE("Minimum Spawns subsystem stopped early on active list 2 - too many iterations!")
break
var/turf/RT2 = pick_n_take(valid_mining_turfs_2) //Pick a random mining Z-level turf
var/MS2_tospawn = pick_n_take(active_spawns_2)
for(var/mob/living/simple_animal/hostile/H in urange(70,RT2)) //prevents mob clumps
if((istype(MS2_tospawn, /mob/living/simple_animal/hostile/megafauna) || ismegafauna(H)) && get_dist(RT2, H) <= 70)
active_spawns_2.Add(MS2_tospawn)
continue //let's try not to dump megas too close to each other?
if((istype(MS2_tospawn, /obj/structure/spawner)) && get_dist(RT2, H) <= 40)
active_spawns_2.Add(MS2_tospawn)
continue //let's at least /try/ to space these out?
for(var/obj/structure/spawner/LT in urange(70,RT2)) //prevents tendril/mega clumps
if((istype(MS2_tospawn, /mob/living/simple_animal/hostile/megafauna)) && get_dist(RT2, LT) <= 70)
active_spawns_2.Add(MS2_tospawn)
continue //let's try not to dump megas too close to each other?
if((istype(MS2_tospawn, /obj/structure/spawner)) && get_dist(RT2, LT) <= 40)
active_spawns_2.Add(MS2_tospawn)
continue //let's at least /try/ to space these out?
// man the overhead on this is gonna SUCK
new MS2_tospawn(RT2)
if(!active_spawns.len && !active_spawns_2.len)
return // we're done here
+21 -8
View File
@@ -5,6 +5,10 @@ SUBSYSTEM_DEF(npcpool)
runlevels = RUNLEVEL_GAME | RUNLEVEL_POSTGAME
var/list/currentrun = list()
/// catches sleeping
var/invoking = FALSE
/// Invoke start time
var/invoke_start = 0
/datum/controller/subsystem/npcpool/stat_entry(msg)
var/list/activelist = GLOB.simple_animals[AI_ON]
@@ -12,7 +16,6 @@ SUBSYSTEM_DEF(npcpool)
return ..()
/datum/controller/subsystem/npcpool/fire(resumed = FALSE)
if (!resumed)
var/list/activelist = GLOB.simple_animals[AI_ON]
src.currentrun = activelist.Copy()
@@ -24,12 +27,22 @@ SUBSYSTEM_DEF(npcpool)
var/mob/living/simple_animal/SA = currentrun[currentrun.len]
--currentrun.len
if(!SA.ckey && !SA.mob_transforming)
if(SA.stat != DEAD)
SA.handle_automated_movement()
if(SA.stat != DEAD)
SA.handle_automated_action()
if(SA.stat != DEAD)
SA.handle_automated_speech()
invoking = TRUE
invoke_start = world.time
INVOKE_ASYNC(src, .proc/invoke_process, SA)
if(invoking)
stack_trace("WARNING: [SA] ([SA.type]) slept during NPCPool processing.")
invoking = FALSE
if (MC_TICK_CHECK)
return
/datum/controller/subsystem/npcpool/proc/invoke_process(mob/living/simple_animal/SA)
if(!SA.ckey && !SA.mob_transforming)
if(SA.stat != DEAD)
SA.handle_automated_movement()
if(SA.stat != DEAD)
SA.handle_automated_action()
if(SA.stat != DEAD)
SA.handle_automated_speech()
invoking = FALSE
@@ -50,17 +50,20 @@ PROCESSING_SUBSYSTEM_DEF(circuit)
/obj/item/electronic_assembly/simple,
/obj/item/electronic_assembly/hook,
/obj/item/electronic_assembly/pda,
/obj/item/electronic_assembly/dildo,
/obj/item/electronic_assembly/small/default,
/obj/item/electronic_assembly/small/cylinder,
/obj/item/electronic_assembly/small/scanner,
/obj/item/electronic_assembly/small/hook,
/obj/item/electronic_assembly/small/box,
/obj/item/electronic_assembly/small/dildo,
/obj/item/electronic_assembly/medium/default,
/obj/item/electronic_assembly/medium/box,
/obj/item/electronic_assembly/medium/clam,
/obj/item/electronic_assembly/medium/medical,
/obj/item/electronic_assembly/medium/gun,
/obj/item/electronic_assembly/medium/radio,
/obj/item/electronic_assembly/medium/dildo,
/obj/item/electronic_assembly/large/default,
/obj/item/electronic_assembly/large/scope,
/obj/item/electronic_assembly/large/terminal,
+238
View File
@@ -0,0 +1,238 @@
/// Controls how many buckets should be kept, each representing a tick. (30 seconds worth)
#define BUCKET_LEN (world.fps * 1 * 30)
/// Helper for getting the correct bucket for a given chatmessage
#define BUCKET_POS(scheduled_destruction) (((round((scheduled_destruction - SSrunechat.head_offset) / world.tick_lag) + 1) % BUCKET_LEN) || BUCKET_LEN)
/// Gets the maximum time at which messages will be handled in buckets, used for deferring to secondary queue
#define BUCKET_LIMIT (world.time + TICKS2DS(min(BUCKET_LEN - (SSrunechat.practical_offset - DS2TICKS(world.time - SSrunechat.head_offset)) - 1, BUCKET_LEN - 1)))
/**
* # Runechat Subsystem
*
* Maintains a timer-like system to handle destruction of runechat messages. Much of this code is modeled
* after or adapted from the timer subsystem.
*
* Note that this has the same structure for storing and queueing messages as the timer subsystem does
* for handling timers: the bucket_list is a list of chatmessage datums, each of which are the head
* of a circularly linked list. Any given index in bucket_list could be null, representing an empty bucket.
*/
SUBSYSTEM_DEF(runechat)
name = "Runechat"
flags = SS_TICKER | SS_NO_INIT
wait = 1
priority = FIRE_PRIORITY_RUNECHAT
/// world.time of the first entry in the bucket list, effectively the 'start time' of the current buckets
var/head_offset = 0
/// Index of the first non-empty bucket
var/practical_offset = 1
/// world.tick_lag the bucket was designed for
var/bucket_resolution = 0
/// How many messages are in the buckets
var/bucket_count = 0
/// List of buckets, each bucket holds every message that has to be killed that byond tick
var/list/bucket_list = list()
/// Queue used for storing messages that are scheduled for deletion too far in the future for the buckets
var/list/datum/chatmessage/second_queue = list()
/datum/controller/subsystem/runechat/PreInit()
bucket_list.len = BUCKET_LEN
head_offset = world.time
bucket_resolution = world.tick_lag
/datum/controller/subsystem/runechat/stat_entry(msg)
msg = "ActMsgs:[bucket_count] SecQueue:[length(second_queue)]"
return msg
/datum/controller/subsystem/runechat/fire(resumed = FALSE)
// Store local references to datum vars as it is faster to access them this way
var/list/bucket_list = src.bucket_list
if (MC_TICK_CHECK)
return
// Check for when we need to loop the buckets, this occurs when
// the head_offset is approaching BUCKET_LEN ticks in the past
if (practical_offset > BUCKET_LEN)
head_offset += TICKS2DS(BUCKET_LEN)
practical_offset = 1
resumed = FALSE
// Check for when we have to reset buckets, typically from auto-reset
if ((length(bucket_list) != BUCKET_LEN) || (world.tick_lag != bucket_resolution))
reset_buckets()
bucket_list = src.bucket_list
resumed = FALSE
// Store a reference to the 'working' chatmessage so that we can resume if the MC
// has us stop mid-way through processing
var/static/datum/chatmessage/cm
if (!resumed)
cm = null
// Iterate through each bucket starting from the practical offset
while (practical_offset <= BUCKET_LEN && head_offset + ((practical_offset - 1) * world.tick_lag) <= world.time)
var/datum/chatmessage/bucket_head = bucket_list[practical_offset]
if (!cm || !bucket_head || cm == bucket_head)
bucket_head = bucket_list[practical_offset]
cm = bucket_head
while (cm)
// If the chatmessage hasn't yet had its life ended then do that now
var/datum/chatmessage/next = cm.next
if (!cm.eol_complete)
cm.end_of_life()
else if (!QDELETED(cm)) // otherwise if we haven't deleted it yet, do so (this is after EOL completion)
qdel(cm)
if (MC_TICK_CHECK)
return
// Break once we've processed the entire bucket
cm = next
if (cm == bucket_head)
break
// Empty the bucket, check if anything in the secondary queue should be shifted to this bucket
bucket_list[practical_offset++] = null
var/i = 0
for (i in 1 to length(second_queue))
cm = second_queue[i]
if (cm.scheduled_destruction >= BUCKET_LIMIT)
i--
break
// Transfer the message into the bucket, performing necessary circular doubly-linked list operations
bucket_count++
var/bucket_pos = max(1, BUCKET_POS(cm.scheduled_destruction))
var/datum/timedevent/head = bucket_list[bucket_pos]
if (!head)
bucket_list[bucket_pos] = cm
cm.next = null
cm.prev = null
continue
if (!head.prev)
head.prev = head
cm.next = head
cm.prev = head.prev
cm.next.prev = cm
cm.prev.next = cm
if (i)
second_queue.Cut(1, i + 1)
cm = null
/datum/controller/subsystem/runechat/Recover()
bucket_list |= SSrunechat.bucket_list
second_queue |= SSrunechat.second_queue
/datum/controller/subsystem/runechat/proc/reset_buckets()
bucket_list.len = BUCKET_LEN
head_offset = world.time
bucket_resolution = world.tick_lag
/**
* Enters the runechat subsystem with this chatmessage, inserting it into the end-of-life queue
*
* This will also account for a chatmessage already being registered, and in which case
* the position will be updated to remove it from the previous location if necessary
*
* Arguments:
* * new_sched_destruction Optional, when provided is used to update an existing message with the new specified time
*/
/datum/chatmessage/proc/enter_subsystem(new_sched_destruction = 0)
// Get local references from subsystem as they are faster to access than the datum references
var/list/bucket_list = SSrunechat.bucket_list
var/list/second_queue = SSrunechat.second_queue
// When necessary, de-list the chatmessage from its previous position
if (new_sched_destruction)
if (scheduled_destruction >= BUCKET_LIMIT)
second_queue -= src
else
SSrunechat.bucket_count--
var/bucket_pos = BUCKET_POS(scheduled_destruction)
if (bucket_pos > 0)
var/datum/chatmessage/bucket_head = bucket_list[bucket_pos]
if (bucket_head == src)
bucket_list[bucket_pos] = next
if (prev != next)
prev.next = next
next.prev = prev
else
prev?.next = null
next?.prev = null
prev = next = null
scheduled_destruction = new_sched_destruction
// Ensure the scheduled destruction time is properly bound to avoid missing a scheduled event
scheduled_destruction = max(CEILING(scheduled_destruction, world.tick_lag), world.time + world.tick_lag)
// Handle insertion into the secondary queue if the required time is outside our tracked amounts
if (scheduled_destruction >= BUCKET_LIMIT)
BINARY_INSERT(src, SSrunechat.second_queue, datum/chatmessage, src, scheduled_destruction, COMPARE_KEY)
return
// Get bucket position and a local reference to the datum var, it's faster to access this way
var/bucket_pos = BUCKET_POS(scheduled_destruction)
// Get the bucket head for that bucket, increment the bucket count
var/datum/chatmessage/bucket_head = bucket_list[bucket_pos]
SSrunechat.bucket_count++
// If there is no existing head of this bucket, we can set this message to be that head
if (!bucket_head)
bucket_list[bucket_pos] = src
return
// Otherwise it's a simple insertion into the circularly doubly-linked list
if (!bucket_head.prev)
bucket_head.prev = bucket_head
next = bucket_head
prev = bucket_head.prev
next.prev = src
prev.next = src
/**
* Removes this chatmessage datum from the runechat subsystem
*/
/datum/chatmessage/proc/leave_subsystem()
// Attempt to find the bucket that contains this chat message
var/bucket_pos = BUCKET_POS(scheduled_destruction)
// Get local references to the subsystem's vars, faster than accessing on the datum
var/list/bucket_list = SSrunechat.bucket_list
var/list/second_queue = SSrunechat.second_queue
// Attempt to get the head of the bucket
var/datum/chatmessage/bucket_head
if (bucket_pos > 0)
bucket_head = bucket_list[bucket_pos]
// Decrement the number of messages in buckets if the message is
// the head of the bucket, or has a SD less than BUCKET_LIMIT implying it fits
// into an existing bucket, or is otherwise not present in the secondary queue
if(bucket_head == src)
bucket_list[bucket_pos] = next
SSrunechat.bucket_count--
else if(scheduled_destruction < BUCKET_LIMIT)
SSrunechat.bucket_count--
else
var/l = length(second_queue)
second_queue -= src
if(l == length(second_queue))
SSrunechat.bucket_count--
// Remove the message from the bucket, ensuring to maintain
// the integrity of the bucket's list if relevant
if(prev != next)
prev.next = next
next.prev = prev
else
prev?.next = null
next?.prev = null
prev = next = null
#undef BUCKET_LEN
#undef BUCKET_POS
#undef BUCKET_LIMIT
+1 -1
View File
@@ -47,7 +47,7 @@ SUBSYSTEM_DEF(shuttle)
var/datum/round_event/shuttle_loan/shuttle_loan
var/shuttle_purchased = FALSE //If the station has purchased a replacement escape shuttle this round
var/shuttle_purchased = SHUTTLEPURCHASE_PURCHASABLE //If the station has purchased a replacement escape shuttle this round
var/list/shuttle_purchase_requirements_met = list() //For keeping track of ingame events that would unlock new shuttles, such as defeating a boss or discovering a secret item
var/lockdown = FALSE //disallow transit after nuke goes off
+32 -22
View File
@@ -27,28 +27,6 @@ SUBSYSTEM_DEF(statpanels)
var/ETA = SSshuttle.emergency.getModeStr()
if(ETA)
global_data += "[ETA] [SSshuttle.emergency.getTimerStr()]"
/* Please fix
if(SSvote.mode)
var/static/list/supported = list(PLURALITY_VOTING, APPROVAL_VOTING)
global_data += "Vote active!, There is currently a vote running. Question: [SSvote.question]"
if(!(SSvote.vote_system in supported))
global_data += "<STATPANEL VOTING DISABLED>, The current vote system is not supported by statpanel rendering. Please vote manually by opening the vote popup using the action button or chat link."
return
global_data += "Time Left:, [round(SSvote.end_time - world.time)] seconds"
global_data += "Choices:"
for(var/i in 1 to SSvote.choice_statclicks.len)
var/choice = SSvote.choice_statclicks[i]
var/ivotedforthis = FALSE
if(usr.ckey)
switch(SSvote.vote_system)
if(APPROVAL_VOTING)
ivotedforthis = SSvote.voted[usr.ckey] && (i in SSvote.voted[usr.ckey])
if(PLURALITY_VOTING)
ivotedforthis = SSvote.voted[usr.ckey] == i
global_data += (ivotedforthis? "\[X\]" : "\[ \]", SSvote.choice_statclicks[choice])
*/
encoded_global_data = url_encode(json_encode(global_data))
src.currentrun = GLOB.clients.Copy()
@@ -63,6 +41,38 @@ SUBSYSTEM_DEF(statpanels)
var/ping_str = url_encode("Ping: [round(target.lastping, 1)]ms (Average: [round(target.avgping, 1)]ms)")
var/other_str = url_encode(json_encode(target.mob.get_status_tab_items()))
target << output("[encoded_global_data];[ping_str];[other_str]", "statbrowser:update")
if(SSvote.mode)
var/list/vote_arry = list(
list("Vote active!", "There is currently a vote running. Question: [SSvote.question]")
) //see the MC on how this works.
if(!(SSvote.vote_system in list(PLURALITY_VOTING, APPROVAL_VOTING, SCHULZE_VOTING, INSTANT_RUNOFF_VOTING)))
vote_arry[++vote_arry.len] += list("STATPANEL VOTING DISABLED!", "The current vote system is not supported by statpanel rendering. Please vote manually by opening the vote popup using the action button or chat link.", "disabled")
//does not return.
else
vote_arry[++vote_arry.len] += list("Time Left:", " [DisplayTimeText(SSvote.end_time - world.time)] seconds")
vote_arry[++vote_arry.len] += list("Choices:", "")
for(var/choice in SSvote.choice_statclicks)
var/choice_id = SSvote.choice_statclicks[choice]
if(target.ckey)
switch(SSvote.vote_system)
if(PLURALITY_VOTING, APPROVAL_VOTING)
var/ivotedforthis = FALSE
if(SSvote.vote_system == APPROVAL_VOTING)
ivotedforthis = SSvote.voted[target.ckey] && (text2num(choice_id) in SSvote.voted[target.ckey])
else
ivotedforthis = (SSvote.voted[target.ckey] == text2num(choice_id))
vote_arry[++vote_arry.len] += list(ivotedforthis ? "\[X\]" : "\[ \]", choice, "[REF(SSvote)];vote=[choice_id];statpannel=1")
if(SCHULZE_VOTING, INSTANT_RUNOFF_VOTING)
var/list/vote = SSvote.voted[target.ckey]
var/vote_position = " "
if(vote)
vote_position = vote.Find(text2num(choice_id))
vote_arry[++vote_arry.len] += list("\[[vote_position]\]", choice, "[REF(SSvote)];vote=[choice_id];statpannel=1")
var/vote_str = url_encode(json_encode(vote_arry))
target << output("[vote_str]", "statbrowser:update_voting")
else
var/null_bullet = url_encode(json_encode(list(list(null))))
target << output("[null_bullet]", "statbrowser:update_voting")
if(!target.holder)
target << output("", "statbrowser:remove_admin_tabs")
else
+1 -12
View File
@@ -482,18 +482,7 @@ SUBSYSTEM_DEF(ticker)
INVOKE_ASYNC(SSmapping, /datum/controller/subsystem/mapping/.proc/maprotate)
else
var/vote_type = CONFIG_GET(string/map_vote_type)
switch(vote_type)
if("PLURALITY")
SSvote.initiate_vote("map","server", display = SHOW_RESULTS)
if("APPROVAL")
SSvote.initiate_vote("map","server", display = SHOW_RESULTS, votesystem = APPROVAL_VOTING)
if("IRV")
SSvote.initiate_vote("map","server", display = SHOW_RESULTS, votesystem = INSTANT_RUNOFF_VOTING)
if("SCORE")
SSvote.initiate_vote("map","server", display = SHOW_RESULTS, votesystem = MAJORITY_JUDGEMENT_VOTING)
else
SSvote.initiate_vote("map","server", display = SHOW_RESULTS)
// fallback
SSvote.initiate_vote("map","server", display = SHOW_RESULTS, votesystem = vote_type)
/datum/controller/subsystem/ticker/proc/HasRoundStarted()
return current_state >= GAME_STATE_PLAYING
+5 -4
View File
@@ -52,7 +52,7 @@ SUBSYSTEM_DEF(traumas)
"doctors" = typecacheof(list(/mob/living/simple_animal/bot/medbot)),
"the supernatural" = typecacheof(list(/mob/living/simple_animal/hostile/construct,
/mob/living/simple_animal/hostile/clockwork, /mob/living/simple_animal/drone/cogscarab,
/mob/living/simple_animal/revenant, /mob/living/simple_animal/shade)),
/mob/living/simple_animal/revenant, /mob/living/simple_animal/hostile/construct/shade)),
"aliens" = typecacheof(list(/mob/living/carbon/alien, /mob/living/simple_animal/slime)),
"conspiracies" = typecacheof(list(/mob/living/simple_animal/bot/secbot, /mob/living/simple_animal/bot/ed209, /mob/living/simple_animal/drone,
/mob/living/simple_animal/pet/penguin)),
@@ -158,8 +158,8 @@ SUBSYSTEM_DEF(traumas)
/obj/item/clothing/head/frenchberet, /obj/item/clothing/suit/suspenders, /obj/item/reagent_containers/food/drinks/bottle/bottleofnothing,
/obj/item/storage/backpack/mime, /obj/item/reagent_containers/food/snacks/grown/banana/mime,
/obj/item/grown/bananapeel/mimanapeel, /obj/item/cartridge/virus/mime, /obj/item/clothing/shoes/sneakers/mime,
/obj/item/bedsheet/mime, /obj/item/reagent_containers/food/snacks/burger/mime, /obj/item/clothing/head/beret, /obj/item/clothing/mask/gas/sexymime,
/obj/item/clothing/under/rank/civilian/mime/sexy, /obj/item/toy/figure/mime, /obj/item/toy/crayon/mime, /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/silenced, /obj/mecha/combat/reticence)),
/obj/item/bedsheet/mime, /obj/item/reagent_containers/food/snacks/burger/mime, /obj/item/clothing/head/beret,
/obj/item/toy/figure/mime, /obj/item/toy/crayon/mime, /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/silenced, /obj/mecha/combat/reticence)),
"cats" = typecacheof(list(/obj/item/organ/ears/cat, /obj/item/organ/tail/cat, /obj/item/laser_pointer, /obj/item/toy/cattoy, /obj/item/clothing/head/kitty,
/obj/item/clothing/head/collectable/kitty, /obj/item/melee/chainofcommand/tailwhip/kitty, /obj/item/stack/sheet/animalhide/cat)),
@@ -198,7 +198,8 @@ SUBSYSTEM_DEF(traumas)
"aliens" = typecacheof(list(/datum/species/abductor, /datum/species/jelly, /datum/species/pod, /datum/species/shadow)),
"anime" = typecacheof(list(/datum/species/human/felinid)),
"cats" = typecacheof(list(/datum/species/human/felinid)),
"syndicate" = typecacheof(list(/datum/species/corporate, /datum/species/zombie/infectious))
"syndicate" = typecacheof(list(/datum/species/corporate, /datum/species/zombie/infectious)),
"arachnid" = typecacheof(list(/datum/species/arachnid))
)
return ..()

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