Merge remote-tracking branch 'Upstream/master'

This commit is contained in:
The0bserver
2020-11-26 22:02:08 -05:00
74 changed files with 2024 additions and 746 deletions
+3 -1
View File
@@ -2,6 +2,8 @@
"recommendations": [
"gbasood.byond-dm-language-support",
"platymuus.dm-langclient",
"EditorConfig.EditorConfig"
"EditorConfig.EditorConfig",
"arcanis.vscode-zipfs",
"dbaeumer.vscode-eslint"
]
}
+18
View File
@@ -0,0 +1,18 @@
{
"eslint.nodePath": "tgui/.yarn/sdks",
"eslint.workingDirectories": [
"./tgui"
],
"search.exclude": {
"tgui/.yarn": true,
"tgui/.pnp.*": true
},
"workbench.editorAssociations": [
{
"filenamePattern": "*.dmi",
"viewType": "imagePreview.previewEditor"
}
],
"files.eol": "\n",
"gitlens.advanced.blame.customArguments": ["-w"]
}
@@ -153,10 +153,6 @@
},
/turf/open/floor/plasteel,
/area/mine/living_quarters)
"cX" = (
/obj/structure/closet/secure_closet/miner,
/turf/open/floor/plasteel,
/area/mine/living_quarters)
"dk" = (
/obj/structure/table,
/obj/item/stack/packageWrap,
@@ -398,6 +394,13 @@
},
/turf/open/floor/plating,
/area/mine/laborcamp/security)
"he" = (
/obj/machinery/door/airlock/external/glass,
/obj/effect/mapping_helpers/airlock/cyclelink_helper{
dir = 4
},
/turf/open/floor/plasteel,
/area/mine/living_quarters)
"hf" = (
/obj/item/kirbyplants/random,
/turf/open/floor/plasteel,
@@ -417,16 +420,6 @@
},
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/lavaland/surface/outdoors)
"hH" = (
/obj/effect/turf_decal/tile/brown,
/obj/effect/turf_decal/tile/brown{
dir = 8
},
/obj/effect/turf_decal/tile/brown{
dir = 4
},
/turf/open/floor/plasteel,
/area/mine/living_quarters)
"hP" = (
/obj/structure/lattice/catwalk,
/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/atmos_waste{
@@ -503,6 +496,14 @@
},
/turf/open/floor/plasteel,
/area/mine/production)
"ja" = (
/obj/item/bikehorn{
color = "#000";
desc = "A horn off of a bicycle. This one has been charred to hell and back, yet somehow it still honks.";
name = "charred bike horn"
},
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/lavaland/surface/outdoors)
"jf" = (
/obj/structure/table,
/obj/item/storage/firstaid/regular,
@@ -769,11 +770,6 @@
/obj/effect/turf_decal/tile/red,
/turf/open/floor/plasteel,
/area/mine/laborcamp/security)
"nH" = (
/obj/machinery/light,
/obj/structure/closet/wardrobe/miner,
/turf/open/floor/plasteel,
/area/mine/living_quarters)
"nI" = (
/obj/machinery/atmospherics/pipe/manifold/supply/hidden,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{
@@ -841,6 +837,12 @@
/obj/effect/turf_decal/bot,
/turf/open/floor/plasteel,
/area/mine/production)
"nS" = (
/obj/machinery/computer/shuttle/mining/common{
dir = 4
},
/turf/open/floor/plasteel,
/area/mine/living_quarters)
"nX" = (
/obj/effect/spawner/structure/window/reinforced,
/obj/structure/cable{
@@ -1275,8 +1277,12 @@
/turf/open/floor/plasteel,
/area/mine/production)
"uG" = (
/obj/structure/ore_box,
/obj/effect/turf_decal/box,
/obj/structure/table,
/obj/item/clothing/glasses/meson,
/obj/item/storage/bag/ore,
/obj/item/pickaxe,
/obj/item/mining_scanner,
/obj/item/flashlight,
/turf/open/floor/plasteel,
/area/mine/living_quarters)
"uI" = (
@@ -1439,6 +1445,15 @@
},
/turf/open/floor/plasteel,
/area/mine/living_quarters)
"wQ" = (
/obj/structure/table,
/obj/item/tank/internals/emergency_oxygen{
pixel_x = 5;
pixel_y = 3
},
/obj/item/tank/internals/emergency_oxygen,
/turf/open/floor/plasteel,
/area/mine/living_quarters)
"wV" = (
/turf/closed/mineral/random/volcanic,
/area/lavaland/surface/outdoors/explored)
@@ -1536,6 +1551,14 @@
},
/turf/open/floor/plasteel/freezer,
/area/mine/living_quarters)
"yZ" = (
/obj/docking_port/stationary/public_mining_dock{
dir = 8;
id = "lavaland_common_away";
name = "Mining Station Public Wing"
},
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/lavaland/surface/outdoors)
"zh" = (
/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
dir = 1
@@ -1644,6 +1667,13 @@
},
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/mine/production)
"AC" = (
/obj/machinery/door/airlock/external/glass,
/obj/effect/mapping_helpers/airlock/cyclelink_helper{
dir = 8
},
/turf/open/floor/plasteel,
/area/mine/living_quarters)
"AH" = (
/obj/machinery/cryopod{
dir = 4
@@ -1719,6 +1749,12 @@
/obj/structure/reagent_dispensers/fueltank,
/turf/open/floor/plating,
/area/mine/living_quarters)
"By" = (
/obj/structure/chair{
dir = 4
},
/turf/open/floor/plasteel,
/area/mine/living_quarters)
"BD" = (
/obj/machinery/door/airlock/maintenance{
name = "Mining Station Maintenance";
@@ -1843,6 +1879,7 @@
/turf/open/floor/plasteel,
/area/mine/living_quarters)
"Dr" = (
/obj/structure/chair,
/obj/structure/extinguisher_cabinet{
pixel_x = -5;
pixel_y = 30
@@ -1850,9 +1887,6 @@
/obj/effect/turf_decal/tile/purple{
dir = 4
},
/obj/machinery/light{
dir = 1
},
/turf/open/floor/plasteel,
/area/mine/living_quarters)
"Dv" = (
@@ -2695,17 +2729,12 @@
/turf/open/floor/plasteel,
/area/mine/living_quarters)
"Pp" = (
/obj/machinery/camera{
c_tag = "Public Shuttle Lobby";
network = list("mine")
},
/obj/effect/turf_decal/tile/brown{
dir = 1
},
/obj/effect/turf_decal/tile/brown,
/obj/effect/turf_decal/tile/brown{
dir = 4
/obj/structure/table,
/obj/item/gps/mining{
pixel_x = 3;
pixel_y = 5
},
/obj/item/gps/mining,
/turf/open/floor/plasteel,
/area/mine/living_quarters)
"Pq" = (
@@ -2750,6 +2779,10 @@
/obj/effect/turf_decal/delivery,
/turf/open/floor/plasteel/white,
/area/mine/laborcamp)
"Qd" = (
/obj/structure/displaycase,
/turf/open/floor/plasteel,
/area/mine/living_quarters)
"Qi" = (
/obj/structure/table,
/obj/machinery/reagentgrinder,
@@ -2825,9 +2858,13 @@
/turf/open/floor/plasteel,
/area/mine/laborcamp)
"Ru" = (
/obj/structure/chair,
/obj/machinery/newscaster{
pixel_y = 32
},
/obj/machinery/light{
dir = 1
},
/turf/open/floor/plasteel,
/area/mine/living_quarters)
"Rv" = (
@@ -3019,13 +3056,13 @@
/obj/effect/turf_decal/tile/red{
dir = 1
},
/obj/structure/cable{
icon_state = "1-2"
},
/mob/living/simple_animal/bot/secbot/beepsky{
desc = "Powered by the tears and sweat of laborers.";
name = "Prison Ofitser"
},
/obj/structure/cable{
icon_state = "1-2"
},
/turf/open/floor/plasteel,
/area/mine/laborcamp/security)
"Un" = (
@@ -3241,10 +3278,6 @@
},
/turf/open/floor/plating,
/area/mine/living_quarters)
"XX" = (
/obj/effect/spawner/structure/window/reinforced,
/turf/closed/wall,
/area/mine/living_quarters)
"Ya" = (
/turf/closed/wall/r_wall,
/area/mine/laborcamp)
@@ -4211,9 +4244,9 @@ VT
VT
VT
VT
VT
VT
VT
Lm
Lm
Lm
VT
VT
VT
@@ -4266,12 +4299,12 @@ VT
VT
VT
VT
VT
VT
VT
VT
VT
VT
Lm
Lm
Lm
Lm
Lm
Lm
VT
VT
VT
@@ -4322,15 +4355,15 @@ VT
VT
VT
VT
VT
VT
VT
VT
VT
VT
VT
VT
VT
Lm
Lm
Lm
Lm
Lm
Lm
Lm
Lm
Lm
VT
VT
VT
@@ -4379,16 +4412,16 @@ VT
VT
VT
VT
VT
VT
VT
VT
Lm
Lm
VT
VT
Lm
VT
Lm
Lm
Lm
Lm
Lm
Lm
Lm
VT
VT
VT
@@ -4435,17 +4468,17 @@ wz
wz
VT
VT
VT
VT
Lm
VT
VT
VT
Lm
VT
VT
VT
VT
Lm
Lm
Lm
Lm
Lm
Lm
Lm
Lm
Lm
Lm
VT
VT
@@ -4492,18 +4525,18 @@ wz
wz
Lm
VT
VT
VT
Lm
Lm
Lm
Lm
Lm
VT
VT
VT
VT
VT
Lm
Lm
Lm
Lm
Lm
Lm
Lm
VT
VT
VT
@@ -4549,7 +4582,6 @@ VT
wz
Lm
VT
VT
Lm
Lm
Lm
@@ -4558,8 +4590,9 @@ Lm
Lm
Lm
Lm
VT
VT
Lm
Lm
Lm
VT
VT
VT
@@ -4615,7 +4648,7 @@ Lm
Lm
Lm
Lm
VT
Lm
VT
VT
VT
@@ -4662,11 +4695,11 @@ VT
VT
VT
VT
VT
Lm
Lm
VT
VT
Lm
Lm
Lm
Lm
Lm
Lm
@@ -4722,10 +4755,10 @@ wz
Lm
Lm
Lm
VT
Lm
Lm
Lm
yZ
Lm
Lm
Lm
@@ -4772,18 +4805,18 @@ Gt
Dv
my
VT
ja
VT
VT
VT
wz
wz
Lm
Lm
Lm
VT
Lm
Lm
Lm
Lm
KV
he
KV
Lm
Lm
Lm
@@ -4833,14 +4866,14 @@ VT
VT
Lm
Lm
wz
wz
Lm
Lm
Lm
Lm
Lm
Lm
Lm
Lm
KV
Ag
KV
Lm
Lm
VT
@@ -4893,11 +4926,11 @@ Lm
VN
VN
VN
XX
VN
VN
VN
KV
VN
KV
AC
KV
VT
VT
VT
@@ -4949,12 +4982,12 @@ pu
bn
VN
zy
Ag
Ag
Ag
By
nS
By
Ag
qZ
VN
KV
VT
VT
VT
@@ -5010,8 +5043,8 @@ Ag
Ag
Ag
Ag
cX
VN
Ag
KV
VT
VT
VT
@@ -5067,8 +5100,8 @@ Ag
uG
uG
Ag
cX
VN
eS
KV
VT
VT
VT
@@ -5124,8 +5157,8 @@ KO
uG
uG
Ag
cX
VN
Ag
KV
VT
VT
VT
@@ -5181,7 +5214,7 @@ RP
Ag
Ag
Ag
nH
oy
VN
VT
VT
@@ -5235,10 +5268,10 @@ oy
VN
Pp
sx
eS
Ag
Ag
hH
Pp
wQ
Qd
Qd
VN
wz
Lm
+154 -55
View File
@@ -51206,15 +51206,6 @@
},
/turf/open/floor/plating,
/area/hallway/secondary/exit)
"cyt" = (
/obj/effect/mapping_helpers/airlock/cyclelink_helper{
dir = 1
},
/obj/machinery/door/airlock/external{
name = "Port Docking Bay 4"
},
/turf/open/floor/plating,
/area/hallway/secondary/entry)
"cyu" = (
/obj/effect/mapping_helpers/airlock/cyclelink_helper{
dir = 1
@@ -55560,6 +55551,18 @@
/obj/item/coin/silver,
/turf/open/floor/plating,
/area/maintenance/starboard/fore)
"iWK" = (
/obj/effect/turf_decal/tile/blue{
dir = 4
},
/obj/structure/extinguisher_cabinet{
pixel_x = -5;
pixel_y = 30
},
/turf/open/floor/plasteel/white/corner{
dir = 1
},
/area/hallway/secondary/entry)
"iYE" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
@@ -56101,11 +56104,15 @@
},
/turf/open/floor/plasteel/dark,
/area/hallway/primary/central)
"kls" = (
/obj/structure/lattice,
/obj/structure/lattice,
/turf/open/space,
/area/space/nearstation)
"kiY" = (
/obj/machinery/door/airlock/external{
name = "Port Docking Bay 4"
},
/obj/effect/mapping_helpers/airlock/cyclelink_helper{
dir = 4
},
/turf/open/floor/plating,
/area/hallway/secondary/entry)
"kmw" = (
/obj/structure/chair/comfy/black{
dir = 1
@@ -56616,6 +56623,15 @@
},
/turf/open/floor/plasteel,
/area/security/processing)
"lBd" = (
/obj/effect/turf_decal/tile/blue{
dir = 4
},
/obj/structure/chair,
/turf/open/floor/plasteel/white/corner{
dir = 1
},
/area/hallway/secondary/entry)
"lBz" = (
/obj/effect/turf_decal/tile/red,
/obj/effect/turf_decal/tile/red{
@@ -56901,6 +56917,17 @@
icon_state = "wood-broken5"
},
/area/maintenance/bar)
"mqo" = (
/obj/effect/turf_decal/tile/blue{
dir = 4
},
/obj/machinery/light{
dir = 1
},
/turf/open/floor/plasteel/white/corner{
dir = 1
},
/area/hallway/secondary/entry)
"mqZ" = (
/obj/item/reagent_containers/glass/beaker,
/turf/open/floor/plating,
@@ -58149,6 +58176,15 @@
/obj/effect/spawner/lootdrop/maintenance,
/turf/open/floor/plating,
/area/maintenance/starboard/aft)
"pFY" = (
/obj/effect/turf_decal/stripes/line{
dir = 6
},
/obj/item/kirbyplants{
icon_state = "plant-06"
},
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
"pHl" = (
/obj/structure/table,
/obj/item/storage/box/beakers{
@@ -58391,6 +58427,16 @@
},
/turf/open/floor/mineral/titanium/blue,
/area/crew_quarters/toilet)
"qtw" = (
/obj/machinery/door/airlock/external{
dir = 2;
name = "Port Docking Bay 4"
},
/obj/effect/mapping_helpers/airlock/cyclelink_helper{
dir = 8
},
/turf/open/floor/plating,
/area/hallway/secondary/entry)
"qtH" = (
/obj/machinery/atmospherics/pipe/heat_exchanging/simple{
dir = 4
@@ -58754,6 +58800,12 @@
/obj/item/clothing/under/dress/sundress,
/turf/open/floor/plasteel,
/area/crew_quarters/fitness)
"rsp" = (
/obj/effect/turf_decal/stripes/line,
/obj/structure/table,
/obj/item/flashlight,
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
"rtl" = (
/obj/effect/turf_decal/stripes/line{
dir = 5
@@ -59012,6 +59064,18 @@
},
/turf/open/floor/plasteel,
/area/engine/gravity_generator)
"rZQ" = (
/obj/docking_port/stationary{
dir = 8;
dwidth = 3;
height = 5;
id = "commonmining_home";
name = "SS13: Common Mining Dock";
roundstart_template = /datum/map_template/shuttle/mining_common/meta;
width = 7
},
/turf/open/space/basic,
/area/space)
"saK" = (
/obj/structure/closet/crate,
/obj/item/target/alien,
@@ -59260,6 +59324,19 @@
},
/turf/open/floor/plasteel,
/area/hydroponics)
"sJw" = (
/obj/effect/turf_decal/stripes/line{
dir = 10
},
/obj/machinery/computer/shuttle/mining/common{
dir = 1
},
/obj/machinery/camera{
c_tag = "Arrivals Bay Mining Dock";
dir = 1
},
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
"sJx" = (
/obj/effect/turf_decal/stripes/line{
dir = 1
@@ -59602,6 +59679,20 @@
},
/turf/open/floor/plasteel,
/area/security/brig)
"tHy" = (
/obj/effect/turf_decal/tile/blue{
dir = 4
},
/obj/effect/turf_decal/stripes/line{
dir = 9
},
/obj/item/kirbyplants{
icon_state = "applebush"
},
/turf/open/floor/plasteel/white/corner{
dir = 1
},
/area/hallway/secondary/entry)
"tJi" = (
/obj/machinery/airalarm{
dir = 4;
@@ -60163,8 +60254,8 @@
/turf/closed/wall/r_wall,
/area/engine/gravity_generator)
"uRn" = (
/mob/living/simple_animal/opossum,
/obj/structure/chair/stool,
/mob/living/simple_animal/opossum,
/turf/open/floor/carpet/royalblue,
/area/maintenance/starboard/aft)
"uRS" = (
@@ -60783,6 +60874,14 @@
},
/turf/open/floor/plasteel,
/area/crew_quarters/fitness/pool)
"wjd" = (
/obj/effect/turf_decal/stripes/line,
/obj/structure/table,
/obj/item/gps/mining{
gpstag = "MINE_PUB"
},
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
"wje" = (
/obj/structure/rack,
/obj/item/instrument/banjo,
@@ -68460,7 +68559,7 @@ aaa
aaa
aaa
aaa
aaa
gDl
aaa
aaa
aaa
@@ -68969,10 +69068,10 @@ aaa
aaa
aaa
aaa
rZQ
aaa
aaa
aaa
aae
aoV
aaa
aaa
aaa
@@ -69224,11 +69323,11 @@ aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaf
awW
kiY
awW
aaf
aaa
aaa
aaa
@@ -69481,11 +69580,11 @@ aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaf
awW
auP
awW
aaf
aaa
aaa
aaa
@@ -69738,11 +69837,11 @@ aaa
aaa
aaa
aaa
aoV
aaa
aaa
aaa
aaa
arB
awW
qtw
awW
arB
aaa
aaa
aaa
@@ -69995,12 +70094,12 @@ aaa
aaa
aaa
aaa
aoV
aaa
aaa
aaa
aaa
aoV
arB
tHy
ayl
sJw
arB
aaf
aaa
aaa
aaa
@@ -70252,12 +70351,12 @@ aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aoV
awW
lBd
ayl
rsp
awW
aaf
aaa
aaa
aaa
@@ -70509,15 +70608,15 @@ aaa
aaa
aaa
aaa
awW
lBd
ayl
wjd
awW
aaf
aaa
aaa
aaa
aaf
kls
aaa
aaa
aaa
aaa
aaa
aaa
@@ -70767,9 +70866,9 @@ aaa
aaa
aaa
arB
arB
arB
arB
mqo
ayn
pFY
aAC
aaf
aaa
@@ -71024,7 +71123,7 @@ aaa
aaa
aaa
arB
awZ
iWK
ayk
awW
aAD
@@ -71285,7 +71384,7 @@ awZ
ayl
beK
auP
cyt
cyu
cyd
aaa
aaa
+175 -56
View File
@@ -660,6 +660,7 @@
/obj/effect/turf_decal/stripes/line{
dir = 4
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
"abr" = (
@@ -1484,9 +1485,6 @@
/obj/machinery/light{
dir = 4
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 10
},
/obj/machinery/camera{
c_tag = "Arrivals Dock - Fore";
dir = 8;
@@ -1495,6 +1493,9 @@
/obj/effect/turf_decal/stripes/line{
dir = 4
},
/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
dir = 4
},
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
"acX" = (
@@ -66630,6 +66631,13 @@
/obj/item/kirbyplants/random,
/turf/open/floor/wood,
/area/library)
"chT" = (
/obj/effect/turf_decal/stripes/line{
dir = 4
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
"chV" = (
/obj/machinery/newscaster{
pixel_x = -32
@@ -125416,6 +125424,12 @@
},
/turf/open/floor/plasteel/white,
/area/science/misc_lab)
"fer" = (
/obj/machinery/atmospherics/components/unary/vent_pump/on{
dir = 4
},
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
"fhE" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/medical{
@@ -125528,6 +125542,12 @@
},
/turf/open/floor/engine,
/area/science/mixing)
"gfJ" = (
/obj/effect/turf_decal/stripes/line{
dir = 10
},
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
"gmj" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/closed/wall/r_wall,
@@ -125689,6 +125709,14 @@
/obj/effect/landmark/start/cyborg,
/turf/open/floor/plasteel/dark,
/area/ai_monitored/turret_protected/aisat_interior)
"hzR" = (
/obj/effect/turf_decal/delivery,
/obj/structure/table,
/obj/item/gps/mining{
gpstag = "MINE_PUB"
},
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
"hAf" = (
/obj/structure/cable/white{
icon_state = "4-8"
@@ -125847,6 +125875,21 @@
},
/turf/open/floor/plating,
/area/engine/atmos)
"iCO" = (
/obj/effect/turf_decal/delivery,
/obj/structure/chair{
dir = 8
},
/obj/machinery/camera{
c_tag = "Arrivals Dock - Public Mining";
dir = 8;
name = "arrivals camera"
},
/obj/machinery/light{
dir = 4
},
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
"iIl" = (
/obj/effect/turf_decal/tile/neutral{
dir = 8
@@ -125943,6 +125986,13 @@
},
/turf/open/floor/plasteel,
/area/maintenance/solars/port/aft)
"iUI" = (
/obj/effect/turf_decal/delivery,
/obj/structure/chair{
dir = 8
},
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
"jdx" = (
/obj/structure/lattice,
/obj/structure/grille,
@@ -126193,6 +126243,10 @@
},
/turf/open/space,
/area/engine/atmos)
"kmz" = (
/obj/effect/turf_decal/delivery,
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
"kqo" = (
/obj/structure/cable/white{
icon_state = "4-8"
@@ -126624,6 +126678,18 @@
},
/turf/open/floor/plasteel,
/area/engine/atmos)
"mVW" = (
/obj/effect/turf_decal/stripes/line{
dir = 8
},
/obj/effect/turf_decal/stripes/line{
dir = 4
},
/obj/machinery/door/airlock/external{
name = "External Docking Port"
},
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
"mWZ" = (
/obj/machinery/atmospherics/components/binary/pump,
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
@@ -126635,6 +126701,17 @@
},
/turf/open/floor/engine,
/area/science/mixing)
"naC" = (
/obj/docking_port/stationary{
dwidth = 3;
height = 5;
id = "commonmining_home";
name = "SS13: Common Mining Dock";
roundstart_template = /datum/map_template/shuttle/mining_common/meta;
width = 7
},
/turf/open/space/basic,
/area/space)
"nbi" = (
/obj/effect/decal/cleanable/dirt,
/turf/closed/wall/r_wall,
@@ -126962,6 +127039,14 @@
/obj/effect/landmark/start/paramedic,
/turf/open/floor/plasteel/white,
/area/medical/storage)
"pIl" = (
/obj/effect/turf_decal/stripes/line{
dir = 4
},
/obj/effect/turf_decal/stripes/line,
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
"pQm" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/cable/white{
@@ -127061,6 +127146,13 @@
/obj/effect/spawner/lootdrop/keg,
/turf/open/floor/plating,
/area/crew_quarters/abandoned_gambling_den)
"qEF" = (
/obj/effect/turf_decal/delivery,
/obj/machinery/computer/shuttle/mining/common{
dir = 4
},
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
"qUn" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/effect/turf_decal/tile/neutral{
@@ -127633,6 +127725,15 @@
/obj/effect/turf_decal/stripes/line,
/turf/open/floor/plasteel,
/area/science/circuit)
"wlT" = (
/obj/machinery/door/firedoor,
/obj/effect/turf_decal/stripes/line,
/obj/effect/turf_decal/stripes/line{
dir = 1
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
"wmL" = (
/obj/effect/turf_decal/tile/neutral{
dir = 8
@@ -127654,6 +127755,15 @@
},
/turf/open/floor/plasteel/dark,
/area/chapel/office)
"wpx" = (
/obj/effect/turf_decal/stripes/line{
dir = 4
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 10
},
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
"wum" = (
/obj/machinery/atmospherics/pipe/simple/yellow/visible{
dir = 4
@@ -127738,6 +127848,15 @@
},
/turf/open/floor/plasteel,
/area/crew_quarters/fitness/recreation)
"xaL" = (
/obj/effect/turf_decal/delivery,
/obj/structure/table,
/obj/machinery/light{
dir = 8
},
/obj/item/flashlight,
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
"xcU" = (
/obj/effect/spawner/structure/window/reinforced,
/obj/machinery/atmospherics/pipe/simple/cyan/visible{
@@ -159602,13 +159721,13 @@ hZh
hZh
hZh
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aad
aad
aaO
aaO
abf
aaO
aaO
aad
aad
aad
@@ -159859,13 +159978,13 @@ hZh
hZh
hZh
aaa
aaa
aaa
aaa
aaa
aaa
qgU
aad
aaa
aaO
qEF
xaL
hzR
aaO
aad
aaa
aaa
@@ -160116,13 +160235,13 @@ hZh
hZh
hZh
aaa
aaa
aaa
aaa
aaa
aaa
aaO
aaO
aaO
abe
abC
gfJ
aaO
abf
aaO
aaO
@@ -160372,18 +160491,18 @@ hZh
hZh
hZh
hZh
aaa
aaa
aaa
aaa
aaa
aaa
aaO
abe
naC
mVW
kmz
mVW
acb
fer
aiT
abZ
abp
abC
abC
abZ
abC
abC
abC
acV
@@ -160630,19 +160749,19 @@ hZh
hZh
hZh
aaa
aaa
aaa
aaa
aaa
aaa
aaO
aaO
aaO
vcs
wpx
pIl
wlT
abq
abD
abD
abZ
abD
abD
chT
chT
chT
chT
chT
acW
adr
adr
@@ -160887,12 +161006,12 @@ hZh
hZh
hZh
aaa
aaa
aaa
aaa
aaa
aad
aaa
aaO
agk
iCO
iUI
aaO
abf
aaO
@@ -161144,14 +161263,14 @@ hZh
hZh
hZh
aaa
aaa
aaa
aaa
aaa
aaa
qgU
aad
aad
aaO
aaO
abf
aaO
aaO
aad
aaa
aaa
aad
@@ -161402,12 +161521,12 @@ hZh
hZh
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aad
aad
aad
aad
aad
aad
aad
aad
aad
+92 -44
View File
@@ -63034,6 +63034,19 @@
/obj/item/assembly/flash/handheld,
/turf/open/floor/plating,
/area/storage/tech)
"cYI" = (
/obj/docking_port/stationary{
dir = 2;
dwidth = 3;
height = 5;
icon_state = "pinonfar";
id = "commonmining_home";
name = "SS13: Common Mining Dock";
roundstart_template = /datum/map_template/shuttle/mining_common/meta;
width = 7
},
/turf/open/space/basic,
/area/space)
"dcB" = (
/obj/effect/turf_decal/trimline/neutral/filled/line{
dir = 4
@@ -63774,6 +63787,14 @@
/obj/structure/disposalpipe/segment,
/turf/open/floor/plating,
/area/maintenance/department/cargo)
"etv" = (
/obj/machinery/door/airlock/external/glass,
/obj/structure/fans/tiny,
/obj/effect/mapping_helpers/airlock/cyclelink_helper{
dir = 1
},
/turf/open/floor/plating,
/area/hallway/secondary/entry)
"euD" = (
/obj/machinery/door/airlock/hatch{
name = "Telecomms Server Room"
@@ -68221,6 +68242,20 @@
/obj/machinery/power/grounding_rod,
/turf/open/floor/plating/airless,
/area/engine/engineering)
"mnL" = (
/obj/effect/turf_decal/stripes/line{
dir = 6
},
/obj/machinery/computer/shuttle/mining/common{
dir = 8
},
/obj/machinery/camera{
c_tag = "Arrivals Dock Public Mining";
dir = 1;
name = "arrivals camera"
},
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
"mqh" = (
/obj/effect/turf_decal/tile/blue,
/obj/effect/turf_decal/tile/blue{
@@ -69098,16 +69133,6 @@
},
/turf/open/floor/plasteel,
/area/crew_quarters/toilet/auxiliary)
"ohk" = (
/obj/effect/turf_decal/stripes/line{
dir = 10
},
/obj/structure/chair{
dir = 4
},
/obj/machinery/light,
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
"ojZ" = (
/obj/effect/spawner/structure/window/reinforced,
/obj/structure/cable{
@@ -69418,6 +69443,11 @@
},
/turf/open/floor/plating,
/area/maintenance/port)
"oTI" = (
/obj/machinery/door/airlock/external/glass,
/obj/effect/mapping_helpers/airlock/cyclelink_helper,
/turf/open/floor/plating,
/area/hallway/secondary/entry)
"oUp" = (
/obj/structure/closet/crate,
/obj/item/stack/sheet/metal/fifty,
@@ -69460,6 +69490,16 @@
},
/turf/open/floor/plasteel,
/area/crew_quarters/toilet/auxiliary)
"oVP" = (
/obj/effect/turf_decal/stripes/line{
dir = 4
},
/obj/structure/table,
/obj/item/gps/mining{
gpstag = "MINE_PUB"
},
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
"oXg" = (
/obj/structure/cable{
icon_state = "4-8"
@@ -69905,6 +69945,14 @@
},
/turf/open/floor/plasteel,
/area/engine/break_room)
"pPG" = (
/obj/effect/turf_decal/stripes/line{
dir = 4
},
/obj/structure/table,
/obj/item/flashlight,
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
"pRv" = (
/obj/machinery/air_sensor{
id_tag = "tox_sensor"
@@ -103741,10 +103789,10 @@ nNI
ngo
bQW
nNI
aav
aav
aab
aab
nNI
xMt
xMt
nNI
aab
aab
aab
@@ -103996,15 +104044,15 @@ gLI
ifC
jEO
uYv
ohk
uYv
uYv
jEO
jEO
cIu
nNI
xMt
xMt
nNI
aab
aav
aab
aab
aab
aab
aab
aab
aab
aab
@@ -104253,16 +104301,16 @@ rEw
iiC
jMW
rEw
rEw
rEw
rEw
rEw
cwD
xMt
aab
aav
aab
aab
aab
aab
aab
aab
oTI
cxe
cVf
etv
cYI
aab
aab
aab
@@ -104510,15 +104558,15 @@ cvp
iqD
jto
jto
cvI
jto
jto
pPG
oVP
mnL
nNI
xMt
aab
aav
aab
aab
aab
aab
aab
xMt
nNI
aab
aab
aab
@@ -104769,10 +104817,10 @@ xMt
cWd
nNI
nNI
aab
aav
aab
aab
nNI
xMt
xMt
nNI
aab
aab
aab
@@ -105027,7 +105075,7 @@ cJk
nNI
aab
aab
aav
aab
aab
aab
aab
+102 -31
View File
@@ -24164,12 +24164,12 @@
/turf/open/floor/plating,
/area/hallway/secondary/entry)
"aVt" = (
/obj/item/kirbyplants{
icon_state = "plant-13"
},
/obj/effect/turf_decal/stripes/line{
dir = 9
},
/obj/item/kirbyplants{
icon_state = "plant-20"
},
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
"aVu" = (
@@ -24941,10 +24941,9 @@
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
"aWV" = (
/obj/structure/sign/warning/vacuum/external{
pixel_y = -32
/obj/effect/turf_decal/stripes/corner{
dir = 2
},
/obj/effect/turf_decal/stripes/line,
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
"aWW" = (
@@ -81819,6 +81818,16 @@
},
/turf/open/floor/plasteel/dark,
/area/engine/break_room)
"kHw" = (
/obj/effect/turf_decal/stripes/line{
dir = 6
},
/obj/structure/table,
/obj/item/gps{
gpstag = "MINE_PUB"
},
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
"kJW" = (
/obj/machinery/atmospherics/components/binary/pump{
dir = 1;
@@ -81876,6 +81885,15 @@
},
/turf/open/floor/plasteel,
/area/science/circuit)
"lcv" = (
/obj/machinery/door/airlock/external{
name = "Public Mining Dock"
},
/obj/effect/mapping_helpers/airlock/cyclelink_helper{
dir = 8
},
/turf/open/floor/plating,
/area/hallway/secondary/entry)
"llb" = (
/obj/structure/table/reinforced,
/obj/item/integrated_circuit_printer,
@@ -81895,6 +81913,13 @@
/obj/item/multitool,
/turf/open/floor/plasteel/white,
/area/science/circuit)
"lvm" = (
/obj/effect/turf_decal/stripes/line,
/obj/machinery/computer/shuttle/mining/common{
dir = 1
},
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
"lws" = (
/obj/structure/chair/office/dark{
dir = 8
@@ -82009,6 +82034,12 @@
},
/turf/open/floor/plasteel/white/corner,
/area/hallway/secondary/entry)
"mdt" = (
/obj/effect/turf_decal/stripes/line{
dir = 8
},
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
"mjJ" = (
/obj/machinery/nuclearbomb/beer{
pixel_x = 2;
@@ -82379,6 +82410,21 @@
},
/turf/open/floor/plating,
/area/maintenance/port/fore)
"pAD" = (
/turf/open/floor/plating,
/area/hallway/secondary/entry)
"pBY" = (
/obj/docking_port/stationary{
dir = 8;
dwidth = 3;
height = 5;
id = "commonmining_home";
name = "SS13: Common Mining Dock";
roundstart_template = /datum/map_template/shuttle/mining_common/meta;
width = 7
},
/turf/open/space,
/area/space)
"pCV" = (
/obj/structure/cable/yellow{
icon_state = "1-2"
@@ -82594,6 +82640,16 @@
},
/turf/open/floor/plasteel,
/area/engine/atmos)
"rta" = (
/obj/machinery/door/airlock/external{
dir = 2;
name = "Public Mining Dock"
},
/obj/effect/mapping_helpers/airlock/cyclelink_helper{
dir = 4
},
/turf/open/floor/plating,
/area/hallway/secondary/entry)
"rzX" = (
/obj/structure/chair/office/light{
dir = 1;
@@ -82892,6 +82948,12 @@
/obj/machinery/atmospherics/pipe/manifold4w/general/visible,
/turf/open/floor/plasteel,
/area/engine/atmos)
"ulG" = (
/obj/effect/turf_decal/stripes/line,
/obj/structure/table,
/obj/item/flashlight,
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
"upN" = (
/obj/effect/turf_decal/stripes/line{
dir = 5
@@ -83040,6 +83102,15 @@
/obj/structure/lattice,
/turf/open/space/basic,
/area/space)
"vMG" = (
/obj/effect/turf_decal/stripes/line{
dir = 10
},
/obj/item/kirbyplants{
icon_state = "plant-05"
},
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
"vYs" = (
/obj/structure/lattice,
/obj/machinery/atmospherics/pipe/heat_exchanging/simple,
@@ -91679,13 +91750,13 @@ aaf
aaf
aaa
aaa
aaf
aaa
aaa
aaf
aaf
aaf
aaf
aaf
aaa
aaa
aaa
pBY
aaa
aaa
aaa
@@ -91936,16 +92007,16 @@ aaa
aaa
aaa
aaa
aaa
aaa
aaf
aaa
aaa
aaa
aaf
aaf
aaf
aaf
aaf
aVs
rta
aVs
aaf
aaf
aaa
aaa
aaa
@@ -92195,12 +92266,12 @@ aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaf
aaa
aaf
aVs
pAD
aVs
aaa
aaf
aaa
@@ -92456,7 +92527,7 @@ aRA
aRA
aRA
aVs
aVs
lcv
aVs
aVs
aaf
@@ -92713,10 +92784,10 @@ wOY
aSH
aUb
aVt
aWT
mdt
vMG
aVs
aaf
aaf
aaa
aaa
aaa
@@ -92970,9 +93041,9 @@ abu
bsk
aUc
aVu
aWU
aYC
aaa
bvF
lvm
aVs
aaf
aaa
aaa
@@ -93227,10 +93298,10 @@ wOY
aSI
aRA
aVv
aWU
bvF
ulG
aVs
aaf
aaf
aaa
aaa
aaa
@@ -93485,8 +93556,8 @@ aRA
aRA
cZf
aWV
aRA
aaa
kHw
aVs
aaa
aaa
aaa
+111 -68
View File
@@ -32021,23 +32021,6 @@
},
/turf/open/floor/plating,
/area/maintenance/department/science)
"bwq" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/public/glass{
name = "Monastery Transit"
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
"bwr" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/public/glass{
name = "Monastery Transit"
},
/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
/obj/effect/turf_decal/tile/neutral,
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
"bws" = (
/obj/structure/closet,
/obj/item/stack/cable_coil/random,
@@ -32812,9 +32795,6 @@
/turf/open/floor/plasteel,
/area/science/xenobiology)
"bxY" = (
/obj/machinery/light/small{
dir = 1
},
/turf/open/floor/plasteel/white,
/area/hallway/secondary/entry)
"bxZ" = (
@@ -33559,6 +33539,9 @@
network = list("monastery");
pixel_x = 28
},
/obj/machinery/light{
dir = 4
},
/turf/open/floor/plasteel/white,
/area/hallway/secondary/entry)
"bzC" = (
@@ -53109,6 +53092,16 @@
/obj/structure/barricade/wooden,
/turf/open/floor/plating,
/area/maintenance/department/security/brig)
"deJ" = (
/obj/effect/turf_decal/stripes/line{
dir = 8
},
/obj/structure/table,
/obj/item/gps/mining{
gpstag = "MINE_PUB"
},
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
"dgg" = (
/obj/structure/disposalpipe/segment{
dir = 6
@@ -56534,12 +56527,6 @@
},
/turf/open/floor/plating,
/area/hallway/secondary/entry)
"kIc" = (
/obj/effect/spawner/structure/window/reinforced,
/turf/open/floor/plasteel/white{
heat_capacity = 1e+006
},
/area/hallway/secondary/entry)
"kIo" = (
/obj/structure/table,
/obj/item/paper_bin{
@@ -58350,6 +58337,18 @@
},
/turf/open/floor/plating,
/area/quartermaster/miningdock)
"oQm" = (
/obj/docking_port/stationary{
dir = 8;
dwidth = 3;
height = 5;
id = "commonmining_home";
name = "SS13: Common Mining Dock";
roundstart_template = /datum/map_template/shuttle/mining_common/meta;
width = 7
},
/turf/open/space/basic,
/area/space)
"oRX" = (
/obj/structure/closet,
/turf/open/floor/plating,
@@ -58645,6 +58644,15 @@
},
/turf/open/floor/plasteel/white/corner,
/area/hallway/secondary/exit/departure_lounge)
"pqP" = (
/obj/machinery/door/airlock/external{
name = "Port Docking Bay 2"
},
/obj/effect/mapping_helpers/airlock/cyclelink_helper{
dir = 4
},
/turf/open/floor/plating,
/area/hallway/secondary/entry)
"prQ" = (
/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
dir = 4
@@ -58707,9 +58715,6 @@
/obj/effect/spawner/structure/window/reinforced,
/turf/open/floor/plating,
/area/medical/chemistry)
"pyw" = (
/turf/open/space/basic,
/area/hallway/secondary/entry)
"pzF" = (
/mob/living/simple_animal/opossum,
/turf/open/floor/wood,
@@ -58751,6 +58756,15 @@
},
/turf/open/floor/plasteel/dark,
/area/science/explab)
"pEH" = (
/obj/effect/turf_decal/stripes/line{
dir = 8
},
/obj/structure/chair/comfy{
dir = 4
},
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
"pEL" = (
/obj/machinery/atmospherics/components/unary/vent_pump/on{
dir = 1
@@ -59281,6 +59295,15 @@
},
/turf/open/floor/engine,
/area/engine/engineering)
"qRm" = (
/obj/machinery/door/airlock/external{
name = "Port Docking Bay 2"
},
/obj/effect/mapping_helpers/airlock/cyclelink_helper{
dir = 8
},
/turf/open/floor/plating,
/area/hallway/secondary/entry)
"qTV" = (
/obj/item/radio/intercom{
name = "Station Intercom (General)";
@@ -59997,6 +60020,14 @@
},
/turf/open/floor/plating,
/area/maintenance/department/security/brig)
"sIK" = (
/obj/effect/turf_decal/stripes/line{
dir = 8
},
/obj/structure/table,
/obj/item/flashlight,
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
"sJp" = (
/obj/machinery/atmospherics/pipe/simple/general/visible,
/obj/effect/turf_decal/stripes/line,
@@ -61493,6 +61524,18 @@
},
/turf/open/floor/plasteel,
/area/engine/engineering)
"wjQ" = (
/obj/machinery/computer/shuttle/mining/common{
dir = 4
},
/obj/machinery/light{
dir = 8
},
/obj/effect/turf_decal/stripes/line{
dir = 8
},
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
"wkZ" = (
/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
dir = 1
@@ -80466,7 +80509,7 @@ aaa
aaa
aaa
aaa
pyw
aaa
bsl
btL
aZx
@@ -80723,7 +80766,7 @@ aaa
aaa
aaa
aaa
pyw
aaa
aZx
bcX
aZx
@@ -81759,7 +81802,7 @@ aaa
aaa
aaa
aaa
aaa
oQm
aaa
aaa
aaa
@@ -82015,9 +82058,9 @@ aZx
aaa
aaa
aaa
aaa
aaa
aaa
aZx
pqP
aZx
aaa
aaa
aaa
@@ -82272,9 +82315,9 @@ aZx
aaa
aaa
aaa
aaa
aaa
aaa
aZx
bcX
aZx
aaa
aaa
aaa
@@ -82526,12 +82569,12 @@ aZx
bno
bon
aZx
aaa
aaa
aaa
aaa
aaa
aaa
aZx
aZx
aZx
aZx
qRm
aZx
aaa
aaa
aht
@@ -82781,15 +82824,15 @@ bbQ
bcX
bdV
bnp
bon
baK
pEH
deJ
sIK
wjQ
pEH
bbR
aZx
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aht
bBV
bDf
@@ -83038,15 +83081,15 @@ jzz
aZx
jzz
bnp
bon
aZx
aZx
aZx
aZx
aZx
baK
baK
baK
baK
baK
baK
baK
aZx
aaa
aht
bAI
abI
abI
@@ -83296,14 +83339,14 @@ bbR
bbR
bnp
baK
bbR
bbR
bbR
bbR
bbR
baK
baK
baK
baK
baK
baK
aZx
aZx
kIc
kIc
bAJ
bBX
bBX
@@ -83558,7 +83601,7 @@ baK
baK
baK
baK
aZx
baK
bxY
bzz
kGe
@@ -83815,7 +83858,7 @@ bbT
bbT
bbT
bbT
bwq
bbT
bxZ
bzA
bAK
@@ -84072,7 +84115,7 @@ bqS
bsm
btN
bfY
bwr
bfY
bya
bzB
bAL
+180
View File
@@ -0,0 +1,180 @@
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
"a" = (
/turf/closed/wall/mineral/titanium,
/area/shuttle/mining)
"b" = (
/obj/effect/spawner/structure/window/shuttle,
/turf/open/floor/plating,
/area/shuttle/mining)
"c" = (
/obj/structure/table,
/obj/item/storage/toolbox/emergency,
/turf/open/floor/mineral/plastitanium,
/area/shuttle/mining)
"d" = (
/obj/machinery/computer/shuttle/mining/common,
/obj/effect/turf_decal/bot,
/turf/open/floor/mineral/plastitanium,
/area/shuttle/mining)
"e" = (
/obj/structure/table,
/obj/item/radio,
/obj/item/radio/intercom{
pixel_y = 22
},
/turf/open/floor/mineral/plastitanium,
/area/shuttle/mining)
"f" = (
/obj/effect/turf_decal/stripes/end{
dir = 8
},
/turf/open/floor/mineral/titanium/yellow,
/area/shuttle/mining)
"g" = (
/obj/structure/chair/comfy/shuttle{
dir = 1
},
/obj/effect/turf_decal/stripes/line{
dir = 1
},
/obj/effect/turf_decal/stripes/corner{
dir = 8
},
/turf/open/floor/mineral/titanium/yellow,
/area/shuttle/mining)
"h" = (
/obj/effect/turf_decal/stripes/line{
dir = 5
},
/turf/open/floor/mineral/titanium/yellow,
/area/shuttle/mining)
"i" = (
/obj/structure/sign/nanotrasen,
/turf/closed/wall/mineral/titanium,
/area/shuttle/mining)
"j" = (
/obj/machinery/light{
dir = 8
},
/obj/machinery/atmospherics/components/unary/vent_pump/on{
dir = 4
},
/turf/open/floor/mineral/plastitanium,
/area/shuttle/mining)
"k" = (
/obj/machinery/atmospherics/pipe/simple/general/visible{
dir = 4
},
/obj/effect/turf_decal/stripes/line{
dir = 10
},
/turf/open/floor/mineral/titanium/yellow,
/area/shuttle/mining)
"l" = (
/obj/effect/turf_decal/stripes/line,
/obj/effect/turf_decal/stripes/corner{
dir = 4
},
/obj/machinery/atmospherics/components/binary/valve{
dir = 8
},
/turf/open/floor/mineral/titanium/yellow,
/area/shuttle/mining)
"m" = (
/obj/machinery/door/airlock/titanium{
name = "Lavaland Shuttle Airlock"
},
/obj/docking_port/mobile{
dir = 8;
dwidth = 3;
height = 5;
id = "mining_common";
name = "lavaland shuttle";
port_direction = 4;
width = 7
},
/obj/machinery/atmospherics/pipe/simple/general/visible{
dir = 4
},
/turf/open/floor/plating,
/area/shuttle/mining)
"n" = (
/obj/structure/chair/comfy/shuttle{
dir = 1
},
/obj/effect/turf_decal/bot,
/turf/open/floor/mineral/plastitanium,
/area/shuttle/mining)
"o" = (
/obj/structure/closet/crate,
/obj/effect/turf_decal/delivery,
/obj/machinery/airalarm{
dir = 4;
pixel_x = -22
},
/turf/open/floor/mineral/plastitanium,
/area/shuttle/mining)
"p" = (
/obj/effect/spawner/structure/window/shuttle,
/obj/structure/shuttle/engine/heater,
/turf/open/floor/plating,
/area/shuttle/mining)
"q" = (
/obj/structure/ore_box,
/obj/effect/turf_decal/delivery,
/turf/open/floor/mineral/plastitanium,
/area/shuttle/mining)
"r" = (
/obj/structure/sign/warning/fire,
/turf/closed/wall/mineral/titanium,
/area/shuttle/mining)
"s" = (
/obj/structure/shuttle/engine/propulsion/burst,
/turf/open/floor/plating/airless,
/area/shuttle/mining)
(1,1,1) = {"
a
a
b
i
b
a
a
"}
(2,1,1) = {"
a
c
f
j
n
o
r
"}
(3,1,1) = {"
b
d
g
k
n
p
s
"}
(4,1,1) = {"
a
e
h
l
n
q
r
"}
(5,1,1) = {"
a
a
b
m
b
a
a
"}
+124
View File
@@ -0,0 +1,124 @@
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
"a" = (
/turf/closed/wall/mineral/titanium,
/area/shuttle/mining)
"b" = (
/obj/effect/spawner/structure/window/shuttle,
/turf/open/floor/plating,
/area/shuttle/mining)
"c" = (
/obj/structure/table,
/turf/open/floor/mineral/titanium/blue,
/area/shuttle/mining)
"d" = (
/obj/machinery/computer/shuttle/mining/common,
/turf/open/floor/mineral/titanium/blue,
/area/shuttle/mining)
"e" = (
/turf/open/floor/mineral/titanium,
/area/shuttle/mining)
"f" = (
/obj/structure/chair/comfy/shuttle{
dir = 1
},
/turf/open/floor/mineral/titanium/blue,
/area/shuttle/mining)
"g" = (
/obj/machinery/light{
dir = 8
},
/turf/open/floor/mineral/titanium,
/area/shuttle/mining)
"h" = (
/obj/machinery/door/airlock/titanium{
name = "Lavaland Shuttle Airlock"
},
/obj/docking_port/mobile{
dir = 8;
dwidth = 3;
height = 5;
id = "mining_common";
name = "lavaland shuttle";
port_direction = 4;
width = 7
},
/turf/open/floor/plating,
/area/shuttle/mining)
"i" = (
/obj/structure/closet/crate,
/turf/open/floor/mineral/titanium/blue,
/area/shuttle/mining)
"j" = (
/obj/structure/shuttle/engine/heater,
/obj/structure/window/reinforced{
dir = 1;
layer = 2.9
},
/obj/structure/window/reinforced{
dir = 8
},
/obj/structure/window/reinforced{
dir = 4
},
/turf/open/floor/plating,
/area/shuttle/mining)
"k" = (
/obj/structure/ore_box,
/turf/open/floor/mineral/titanium/blue,
/area/shuttle/mining)
"l" = (
/obj/structure/shuttle/engine/propulsion/burst,
/turf/open/floor/plating/airless,
/area/shuttle/mining)
"Q" = (
/obj/structure/chair/comfy/shuttle{
dir = 1
},
/turf/open/floor/mineral/titanium,
/area/shuttle/mining)
(1,1,1) = {"
a
a
b
a
b
a
a
"}
(2,1,1) = {"
a
c
e
g
f
i
a
"}
(3,1,1) = {"
b
d
Q
e
f
j
l
"}
(4,1,1) = {"
a
c
e
e
f
k
a
"}
(5,1,1) = {"
a
a
b
h
b
a
a
"}
+3
View File
@@ -162,3 +162,6 @@ GLOBAL_LIST_INIT(bitflags, list(1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 204
REMOVE_TRAIT(x, TRAIT_KEEP_TOGETHER, KEEP_TOGETHER_ORIGINAL);\
else if(!HAS_TRAIT(x, TRAIT_KEEP_TOGETHER))\
x.appearance_flags &= ~KEEP_TOGETHER
/// 33554431 (2^24 - 1) is the maximum value our bitflags can reach.
#define MAX_BITFLAG_DIGITS 8
+14
View File
@@ -114,3 +114,17 @@
//special species definitions
#define MINIMUM_MUTANT_COLOR "#202020" //this is how dark players mutant parts and skin can be
//defines for different matrix sections
#define MATRIX_RED "red"
#define MATRIX_GREEN "green"
#define MATRIX_BLUE "blue"
#define MATRIX_RED_GREEN "red_green"
#define MATRIX_RED_BLUE "red_blue"
#define MATRIX_GREEN_BLUE "green_blue"
#define MATRIX_ALL "red_green_blue"
#define MATRIX_NONE "none"
//defines for the two colour schemes, advanced and old
#define OLD_CHARACTER_COLORING "old_color_system"
#define ADVANCED_CHARACTER_COLORING "advanced_color_system"
+1 -1
View File
@@ -205,7 +205,7 @@
#define TRAIT_THERMAL_VISION "thermal_vision"
#define TRAIT_NO_TELEPORT "no-teleport" //you just can't
#define TRAIT_NO_INTERNALS "no-internals"
#define TRAIT_NO_ALCOHOL "alcohol_intolerance"
#define TRAIT_TOXIC_ALCOHOL "alcohol_intolerance"
#define TRAIT_MUTATION_STASIS "mutation_stasis" //Prevents processed genetics mutations from processing.
#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
+1 -1
View File
@@ -104,7 +104,7 @@ GLOBAL_LIST_INIT(traits_by_type, list(
"TRAIT_AUTO_CATCH_ITEM" = TRAIT_AUTO_CATCH_ITEM,
"TRAIT_FREESPRINT" = TRAIT_FREESPRINT,
"TRAIT_NO_INTERNALS" = TRAIT_NO_INTERNALS,
"TRAIT_NO_ALCOHOL" = TRAIT_NO_ALCOHOL,
"TRAIT_TOXIC_ALCOHOL" = TRAIT_TOXIC_ALCOHOL,
"TRAIT_MUTATION_STASIS" = TRAIT_MUTATION_STASIS,
"TRAIT_HEAVY_SLEEPER" = TRAIT_HEAVY_SLEEPER,
"TRAIT_LIGHT_STEP" = TRAIT_LIGHT_STEP,
@@ -391,6 +391,8 @@ Example config:
for(var/T in storyteller_cache)
var/datum/dynamic_storyteller/S = T
var/config_tag = initial(S.config_tag)
if(!config_tag)
continue
var/probability = (config_tag in probabilities) ? probabilities[config_tag] : initial(S.weight)
var/min_players = (config_tag in min_player_counts) ? min_player_counts[config_tag] : initial(S.min_players)
if(probability <= 0)
+1 -1
View File
@@ -109,7 +109,7 @@
name = "Alcohol Intolerance"
desc = "You take toxin damage from alcohol rather than getting drunk."
value = 0
mob_trait = TRAIT_NO_ALCOHOL
mob_trait = TRAIT_TOXIC_ALCOHOL
medical_record_text = "Patient's body does not react properly to ethyl alcohol."
/datum/quirk/alcohol_intolerance/add()
@@ -297,6 +297,10 @@
name = "Mining Shuttle (Computer Board)"
build_path = /obj/machinery/computer/shuttle/mining
/obj/item/circuitboard/computer/mining_shuttle/common
name = "Lavaland Shuttle (Computer Board)"
build_path = /obj/machinery/computer/shuttle/mining/common
/obj/item/circuitboard/computer/snow_taxi
name = "Snow Taxi (Computer Board)"
build_path = /obj/machinery/computer/shuttle/snow_taxi
+15 -10
View File
@@ -5,7 +5,7 @@
var/ntype = text2num(type)
//Add client links
var/dat = ""
var/list/dat = list()
if(M.client)
dat += "<center><p>Client</p></center>"
dat += "<center>"
@@ -46,22 +46,27 @@
var/log_source = M.logging;
if(source == LOGSRC_CLIENT && M.client) //if client doesn't exist just fall back to the mob log
log_source = M.client.player_details.logging //should exist, if it doesn't that's a bug, don't check for it not existing
var/list/concatenated_logs = list()
for(var/log_type in log_source)
var/nlog_type = text2num(log_type)
if(nlog_type & ntype)
var/list/reversed = log_source[log_type]
if(islist(reversed))
reversed = reverseRange(reversed.Copy())
for(var/entry in reversed)
dat += "<font size=2px><b>[entry]</b><br>[reversed[entry]]</font><br>"
dat += "<hr>"
var/list/all_the_entrys = log_source[log_type]
for(var/entry in all_the_entrys)
concatenated_logs += "<b>[entry]</b><br>[all_the_entrys[entry]]"
if(length(concatenated_logs))
sortTim(concatenated_logs, cmp = /proc/cmp_text_dsc) //Sort by timestamp.
dat += "<font size=2px>"
dat += concatenated_logs.Join("<br>")
dat += "</font>"
usr << browse(dat, "window=invidual_logging_[key_name(M)];size=600x480")
var/datum/browser/popup = new(usr, "invidual_logging_[key_name(M)]", "Individual Logs", 600, 600)
popup.set_content(dat.Join())
popup.open()
/proc/individual_logging_panel_link(mob/M, log_type, log_src, label, selected_src, selected_type)
var/slabel = label
if(selected_type == log_type && selected_src == log_src)
slabel = "<b>\[[label]\]</b>"
//This is necessary because num2text drops digits and rounds on big numbers. If more defines get added in the future it could break again.
log_type = num2text(log_type, MAX_BITFLAG_DIGITS)
return "<a href='?_src_=holder;[HrefToken()];individuallog=[REF(M)];log_type=[log_type];log_src=[log_src]'>[slabel]</a>"
@@ -679,6 +679,7 @@
item_state = "ling_gauntlets"
desc = "Rough bone and chitin, pulsing with an abomination barely called \"life\". Good for punching people, not so much for firearms."
transfer_prints = TRUE
item_flags = DROPDEL // whoops
body_parts_covered = ARMS|HANDS
cold_protection = ARMS|HANDS
min_cold_protection_temperature = GLOVES_MIN_TEMP_PROTECT
@@ -691,13 +692,13 @@
var/slow_enhancement = 20
var/slow_wound_enhancement = 20
silent = TRUE
inherited_trait = TRAIT_CHUNKYFINGERS // dummy thicc bone hands
secondary_trait = TRAIT_MAULER // its only violence from here, bucko
inherited_trait = TRAIT_CHUNKYFINGERS // how do you expect to shoot anyone with bone covered hands
secondary_trait = TRAIT_MAULER // just punch them idiot
var/fasthands = TRUE
/obj/item/clothing/gloves/fingerless/pugilist/cling/examine(mob/user)
. = ..()
. += "[src] are formed to allow for [fasthands ? "fast, precise strikes" : "crippling, damaging blows"]."
. += "[src] are shaped for [fasthands ? "fast, precise strikes" : "crippling, damaging blows"]."
. += "Alt-click them to change between rapid strikes and strong blows."
/obj/item/clothing/gloves/fingerless/pugilist/cling/AltClick(mob/user)
+78 -72
View File
@@ -101,73 +101,8 @@ GLOBAL_LIST_EMPTY(preferences_datums)
var/eye_type = DEFAULT_EYES_TYPE //Eye type
var/split_eye_colors = FALSE
var/datum/species/pref_species = new /datum/species/human() //Mutant race
var/list/features = list("mcolor" = "FFFFFF",
"mcolor2" = "FFFFFF",
"mcolor3" = "FFFFFF",
"tail_lizard" = "Smooth",
"tail_human" = "None",
"snout" = "Round",
"horns" = "None",
"horns_color" = "85615a",
"ears" = "None",
"wings" = "None",
"wings_color" = "FFF",
"frills" = "None",
"deco_wings" = "None",
"spines" = "None",
"body_markings" = "None",
"legs" = "Plantigrade",
"insect_wings" = "Plain",
"insect_fluff" = "None",
"insect_markings" = "None",
"arachnid_legs" = "Plain",
"arachnid_spinneret" = "Plain",
"arachnid_mandibles" = "Plain",
"mam_body_markings" = "Plain",
"mam_ears" = "None",
"mam_snouts" = "None",
"mam_tail" = "None",
"mam_tail_animated" = "None",
"xenodorsal" = "Standard",
"xenohead" = "Standard",
"xenotail" = "Xenomorph Tail",
"taur" = "None",
"genitals_use_skintone" = FALSE,
"has_cock" = FALSE,
"cock_shape" = DEF_COCK_SHAPE,
"cock_length" = COCK_SIZE_DEF,
"cock_diameter_ratio" = COCK_DIAMETER_RATIO_DEF,
"cock_color" = "ffffff",
"cock_taur" = FALSE,
"has_balls" = FALSE,
"balls_color" = "ffffff",
"balls_shape" = DEF_BALLS_SHAPE,
"balls_size" = BALLS_SIZE_DEF,
"balls_cum_rate" = CUM_RATE,
"balls_cum_mult" = CUM_RATE_MULT,
"balls_efficiency" = CUM_EFFICIENCY,
"has_breasts" = FALSE,
"breasts_color" = "ffffff",
"breasts_size" = BREASTS_SIZE_DEF,
"breasts_shape" = DEF_BREASTS_SHAPE,
"breasts_producing" = FALSE,
"has_vag" = FALSE,
"vag_shape" = DEF_VAGINA_SHAPE,
"vag_color" = "ffffff",
"has_womb" = FALSE,
"balls_visibility" = GEN_VISIBLE_NO_UNDIES,
"breasts_visibility"= GEN_VISIBLE_NO_UNDIES,
"cock_visibility" = GEN_VISIBLE_NO_UNDIES,
"vag_visibility" = GEN_VISIBLE_NO_UNDIES,
"ipc_screen" = "Sunburst",
"ipc_antenna" = "None",
"flavor_text" = "",
"silicon_flavor_text" = "",
"ooc_notes" = "",
"meat_type" = "Mammalian",
"body_model" = MALE,
"body_size" = RESIZE_DEFAULT_SIZE
)
var/list/features = list("mcolor" = "FFFFFF", "mcolor2" = "FFFFFF", "mcolor3" = "FFFFFF", "tail_lizard" = "Smooth", "tail_human" = "None", "snout" = "Round", "horns" = "None", "horns_color" = "85615a", "ears" = "None", "wings" = "None", "wings_color" = "FFF", "frills" = "None", "deco_wings" = "None", "spines" = "None", "body_markings" = "None", "legs" = "Plantigrade", "insect_wings" = "Plain", "insect_fluff" = "None", "insect_markings" = "None", "arachnid_legs" = "Plain", "arachnid_spinneret" = "Plain", "arachnid_mandibles" = "Plain", "mam_body_markings" = "Plain", "mam_ears" = "None", "mam_snouts" = "None", "mam_tail" = "None", "mam_tail_animated" = "None", "xenodorsal" = "Standard", "xenohead" = "Standard", "xenotail" = "Xenomorph Tail", "taur" = "None", "genitals_use_skintone" = FALSE, "has_cock" = FALSE, "cock_shape" = DEF_COCK_SHAPE, "cock_length" = COCK_SIZE_DEF, "cock_diameter_ratio" = COCK_DIAMETER_RATIO_DEF, "cock_color" = "ffffff", "cock_taur" = FALSE, "has_balls" = FALSE, "balls_color" = "ffffff", "balls_shape" = DEF_BALLS_SHAPE, "balls_size" = BALLS_SIZE_DEF, "balls_cum_rate" = CUM_RATE, "balls_cum_mult" = CUM_RATE_MULT, "balls_efficiency" = CUM_EFFICIENCY, "has_breasts" = FALSE, "breasts_color" = "ffffff", "breasts_size" = BREASTS_SIZE_DEF, "breasts_shape" = DEF_BREASTS_SHAPE, "breasts_producing" = FALSE, "has_vag" = FALSE, "vag_shape" = DEF_VAGINA_SHAPE, "vag_color" = "ffffff", "has_womb" = FALSE, "balls_visibility" = GEN_VISIBLE_NO_UNDIES, "breasts_visibility"= GEN_VISIBLE_NO_UNDIES, "cock_visibility" = GEN_VISIBLE_NO_UNDIES, "vag_visibility" = GEN_VISIBLE_NO_UNDIES, "ipc_screen" = "Sunburst", "ipc_antenna" = "None", "flavor_text" = "", "silicon_flavor_text" = "", "ooc_notes" = "", "meat_type" = "Mammalian", "body_model" = MALE, "body_size" = RESIZE_DEFAULT_SIZE, "color_scheme" = OLD_CHARACTER_COLORING)
var/custom_speech_verb = "default" //if your say_mod is to be something other than your races
var/custom_tongue = "default" //if your tongue is to be something other than your races
var/modified_limbs = list() //prosthetic/amputated limbs
@@ -470,6 +405,9 @@ GLOBAL_LIST_EMPTY(preferences_datums)
if(!use_skintones)
dat += APPEARANCE_CATEGORY_COLUMN
dat += "<h3>Advanced Coloring</h3>"
dat += "</b><a style='display:block;width:100px' href='?_src_=prefs;preference=color_scheme;task=input'>[(features["color_scheme"] == ADVANCED_CHARACTER_COLORING) ? "Enabled" : "Disabled"]</a>"
dat += "<h2>Body Colors</h2>"
dat += "<b>Primary Color:</b><BR>"
@@ -551,6 +489,52 @@ GLOBAL_LIST_EMPTY(preferences_datums)
var/color_type = GLOB.colored_mutant_parts[mutant_part] //if it can be coloured, show the appropriate button
if(color_type)
dat += "<span style='border:1px solid #161616; background-color: #[features[color_type]];'>&nbsp;&nbsp;&nbsp;</span> <a href='?_src_=prefs;preference=[color_type];task=input'>Change</a><BR>"
else
if(features["color_scheme"] == ADVANCED_CHARACTER_COLORING) //advanced individual part colouring system
//is it matrixed or does it have extra parts to be coloured?
var/find_part = features[mutant_part] || pref_species.mutant_bodyparts[mutant_part]
var/find_part_list = GLOB.mutant_reference_list[mutant_part]
if(find_part && find_part != "None" && find_part_list)
var/datum/sprite_accessory/accessory = find_part_list[find_part]
if(accessory)
if(accessory.color_src == MATRIXED || accessory.color_src == MUTCOLORS || accessory.color_src == MUTCOLORS2 || accessory.color_src == MUTCOLORS3) //mutcolors1-3 are deprecated now, please don't rely on these in the future
var/mutant_string = accessory.mutant_part_string
if(istype(accessory, /datum/sprite_accessory/mam_body_markings) || istype(accessory, /datum/sprite_accessory/body_markings))
continue
var/primary_feature = "[mutant_string]_primary"
var/secondary_feature = "[mutant_string]_secondary"
var/tertiary_feature = "[mutant_string]_tertiary"
if(!features[primary_feature])
features[primary_feature] = features["mcolor"]
if(!features[secondary_feature])
features[secondary_feature] = features["mcolor2"]
if(!features[tertiary_feature])
features[tertiary_feature] = features["mcolor3"]
var/matrixed_sections = accessory.matrixed_sections
if(accessory.color_src == MATRIXED && !matrixed_sections)
message_admins("Sprite Accessory Failure (customization): Accessory [accessory.type] is a matrixed item without any matrixed sections set!")
continue
else if(accessory.color_src == MATRIXED)
switch(matrixed_sections)
if(MATRIX_GREEN) //only composed of a green section
primary_feature = secondary_feature //swap primary for secondary, so it properly assigns the second colour, reserved for the green section
if(MATRIX_BLUE)
primary_feature = tertiary_feature //same as above, but the tertiary feature is for the blue section
if(MATRIX_RED_BLUE) //composed of a red and blue section
secondary_feature = tertiary_feature //swap secondary for tertiary, as blue should always be tertiary
if(MATRIX_GREEN_BLUE) //composed of a green and blue section
primary_feature = secondary_feature //swap primary for secondary, as first option is green, which is linked to the secondary
secondary_feature = tertiary_feature //swap secondary for tertiary, as second option is blue, which is linked to the tertiary
dat += "<b>Primary Color</b><BR>"
dat += "<span style='border:1px solid #161616; background-color: #[features[primary_feature]];'>&nbsp;&nbsp;&nbsp;</span> <a href='?_src_=prefs;preference=[primary_feature];task=input'>Change</a><BR>"
if((accessory.color_src == MATRIXED && (matrixed_sections == MATRIX_RED_BLUE || matrixed_sections == MATRIX_GREEN_BLUE || matrixed_sections == MATRIX_RED_GREEN || matrixed_sections == MATRIX_ALL)) || (accessory.extra && (accessory.extra_color_src == MUTCOLORS || accessory.extra_color_src == MUTCOLORS2 || accessory.extra_color_src == MUTCOLORS3)))
dat += "<b>Secondary Color</b><BR>"
dat += "<span style='border:1px solid #161616; background-color: #[features[secondary_feature]];'>&nbsp;&nbsp;&nbsp;</span> <a href='?_src_=prefs;preference=[secondary_feature];task=input'>Change</a><BR>"
if((accessory.color_src == MATRIXED && matrixed_sections == MATRIX_ALL) || (accessory.extra2 && (accessory.extra2_color_src == MUTCOLORS || accessory.extra2_color_src == MUTCOLORS2 || accessory.extra2_color_src == MUTCOLORS3)))
dat += "<b>Tertiary Color</b><BR>"
dat += "<span style='border:1px solid #161616; background-color: #[features[tertiary_feature]];'>&nbsp;&nbsp;&nbsp;</span> <a href='?_src_=prefs;preference=[tertiary_feature];task=input'>Change</a><BR>"
mutant_category++
if(mutant_category >= MAX_MUTANT_ROWS)
dat += "</td>"
@@ -1551,10 +1535,10 @@ GLOBAL_LIST_EMPTY(preferences_datums)
var/prosthetic_type = input(user, "Choose the type of prosthetic", "Character Preference") as null|anything in (list("prosthetic") + GLOB.prosthetic_limb_types)
if(prosthetic_type)
var/number_of_prosthetics = 0
for(var/modification in modified_limbs)
if(modified_limbs[modification][1] == LOADOUT_LIMB_PROSTHETIC)
for(var/modified_limb in modified_limbs)
if(modified_limbs[modified_limb][1] == LOADOUT_LIMB_PROSTHETIC && modified_limb != limb_type)
number_of_prosthetics += 1
if(number_of_prosthetics >= MAXIMUM_LOADOUT_PROSTHETICS && !(limb_type in modified_limbs && modified_limbs[limb_type][1] == LOADOUT_LIMB_PROSTHETIC))
if(number_of_prosthetics > MAXIMUM_LOADOUT_PROSTHETICS)
to_chat(user, "<span class='danger'>You can only have up to two prosthetic limbs!</span>")
else
//save the actual prosthetic data
@@ -2033,6 +2017,30 @@ GLOBAL_LIST_EMPTY(preferences_datums)
if(new_dors)
features["xenodorsal"] = new_dors
//every single primary/secondary/tertiary colouring done at once
if("xenodorsal_primary","xenodorsal_secondary","xenodorsal_tertiary","xhead_primary","xhead_secondary","xhead_tertiary","tail_primary","tail_secondary","tail_tertiary","insect_markings_primary","insect_markings_secondary","insect_markings_tertiary","body_markings_primary","body_markings_secondary","body_markings_tertiary","insect_fluff_primary","insect_fluff_secondary","insect_fluff_tertiary","ears_primary","ears_secondary","ears_tertiary","frills_primary","frills_secondary","frills_tertiary","ipc_antenna_primary","ipc_antenna_secondary","ipc_antenna_tertiary","taur_primary","taur_secondary","taur_tertiary","snout_primary","snout_secondary","snout_tertiary","spines_primary","spines_secondary","spines_tertiary", "mam_body_markings_primary", "mam_body_markings_secondary", "mam_body_markings_tertiary")
var/the_feature = features[href_list["preference"]]
if(!the_feature)
features[href_list["preference"]] = "FFFFFF"
the_feature = "FFFFFF"
var/new_feature_color = input(user, "Choose your character's mutant part colour:", "Character Preference","#"+features[href_list["preference"]]) as color|null
if(new_feature_color)
var/temp_hsv = RGBtoHSV(new_feature_color)
if(new_feature_color == "#000000")
features[href_list["preference"]] = pref_species.default_color
else if(ReadHSV(temp_hsv)[3] >= ReadHSV(MINIMUM_MUTANT_COLOR)[3])
features[href_list["preference"]] = sanitize_hexcolor(new_feature_color, 6)
else
to_chat(user,"<span class='danger'>Invalid color. Your color is not bright enough.</span>")
//advanced color mode toggle
if("color_scheme")
if(features["color_scheme"] == ADVANCED_CHARACTER_COLORING)
features["color_scheme"] = OLD_CHARACTER_COLORING
else
features["color_scheme"] = ADVANCED_CHARACTER_COLORING
//Genital code
if("cock_color")
var/new_cockcolor = input(user, "Penis color:", "Character Preference","#"+features["cock_color"]) as color|null
@@ -2759,8 +2767,6 @@ GLOBAL_LIST_EMPTY(preferences_datums)
new_limb.replace_limb(character)
qdel(old_part)
character.regenerate_icons()
SEND_SIGNAL(character, COMSIG_HUMAN_PREFS_COPIED_TO, src, icon_updates, roundstart_checks)
//let's be sure the character updates
+94 -1
View File
@@ -5,7 +5,7 @@
// You do not need to raise this if you are adding new values that have sane defaults.
// Only raise this value when changing the meaning/format/name/layout of an existing value
// where you would want the updater procs below to run
#define SAVEFILE_VERSION_MAX 38
#define SAVEFILE_VERSION_MAX 43
/*
SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Carn
@@ -226,6 +226,41 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
left_eye_color = "#BAB99E"
right_eye_color = "#BAB99E"
if(current_version < 43) //extreme changes to how things are coloured (the introduction of the advanced coloring system)
features["color_scheme"] = OLD_CHARACTER_COLORING //disable advanced coloring system by default
for(var/feature in features)
var/feature_value = features[feature]
if(feature_value)
var/ref_list = GLOB.mutant_reference_list[feature]
if(ref_list)
var/datum/sprite_accessory/accessory = ref_list[feature_value]
if(accessory)
var/mutant_string = accessory.mutant_part_string
if(!mutant_string)
if(istype(accessory, /datum/sprite_accessory/mam_body_markings))
mutant_string = "mam_body_markings"
var/primary_string = "[mutant_string]_primary"
var/secondary_string = "[mutant_string]_secondary"
var/tertiary_string = "[mutant_string]_tertiary"
if(accessory.color_src == MATRIXED && !accessory.matrixed_sections && feature_value != "None")
message_admins("Sprite Accessory Failure (migration from [current_version] to 39): Accessory [accessory.type] is a matrixed item without any matrixed sections set!")
continue
var/primary_exists = features[primary_string]
var/secondary_exists = features[secondary_string]
var/tertiary_exists = features[tertiary_string]
if(accessory.color_src == MATRIXED && !primary_exists && !secondary_exists && !tertiary_exists)
features[primary_string] = features["mcolor"]
features[secondary_string] = features["mcolor2"]
features[tertiary_string] = features["mcolor3"]
else if(accessory.color_src == MUTCOLORS && !primary_exists)
features[primary_string] = features["mcolor"]
else if(accessory.color_src == MUTCOLORS2 && !secondary_exists)
features[secondary_string] = features["mcolor2"]
else if(accessory.color_src == MUTCOLORS3 && !tertiary_exists)
features[tertiary_string] = features["mcolor3"]
features["color_scheme"] = OLD_CHARACTER_COLORING //advanced is off by default
/datum/preferences/proc/load_path(ckey,filename="preferences.sav")
if(!ckey)
return
@@ -489,6 +524,8 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
var/savefile/S = new /savefile(path)
if(!S)
return FALSE
features = list("mcolor" = "FFFFFF", "mcolor2" = "FFFFFF", "mcolor3" = "FFFFFF", "tail_lizard" = "Smooth", "tail_human" = "None", "snout" = "Round", "horns" = "None", "horns_color" = "85615a", "ears" = "None", "wings" = "None", "wings_color" = "FFF", "frills" = "None", "deco_wings" = "None", "spines" = "None", "body_markings" = "None", "legs" = "Plantigrade", "insect_wings" = "Plain", "insect_fluff" = "None", "insect_markings" = "None", "arachnid_legs" = "Plain", "arachnid_spinneret" = "Plain", "arachnid_mandibles" = "Plain", "mam_body_markings" = "Plain", "mam_ears" = "None", "mam_snouts" = "None", "mam_tail" = "None", "mam_tail_animated" = "None", "xenodorsal" = "Standard", "xenohead" = "Standard", "xenotail" = "Xenomorph Tail", "taur" = "None", "genitals_use_skintone" = FALSE, "has_cock" = FALSE, "cock_shape" = DEF_COCK_SHAPE, "cock_length" = COCK_SIZE_DEF, "cock_diameter_ratio" = COCK_DIAMETER_RATIO_DEF, "cock_color" = "ffffff", "cock_taur" = FALSE, "has_balls" = FALSE, "balls_color" = "ffffff", "balls_shape" = DEF_BALLS_SHAPE, "balls_size" = BALLS_SIZE_DEF, "balls_cum_rate" = CUM_RATE, "balls_cum_mult" = CUM_RATE_MULT, "balls_efficiency" = CUM_EFFICIENCY, "has_breasts" = FALSE, "breasts_color" = "ffffff", "breasts_size" = BREASTS_SIZE_DEF, "breasts_shape" = DEF_BREASTS_SHAPE, "breasts_producing" = FALSE, "has_vag" = FALSE, "vag_shape" = DEF_VAGINA_SHAPE, "vag_color" = "ffffff", "has_womb" = FALSE, "balls_visibility" = GEN_VISIBLE_NO_UNDIES, "breasts_visibility"= GEN_VISIBLE_NO_UNDIES, "cock_visibility" = GEN_VISIBLE_NO_UNDIES, "vag_visibility" = GEN_VISIBLE_NO_UNDIES, "ipc_screen" = "Sunburst", "ipc_antenna" = "None", "flavor_text" = "", "silicon_flavor_text" = "", "ooc_notes" = "", "meat_type" = "Mammalian", "body_model" = MALE, "body_size" = RESIZE_DEFAULT_SIZE, "color_scheme" = OLD_CHARACTER_COLORING)
S.cd = "/"
if(!slot)
slot = default_slot
@@ -569,6 +606,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
S["feature_arachnid_mandibles"] >> features["arachnid_mandibles"]
S["feature_horns_color"] >> features["horns_color"]
S["feature_wings_color"] >> features["wings_color"]
S["feature_color_scheme"] >> features["color_scheme"]
S["persistent_scars"] >> persistent_scars
S["scars1"] >> scars_list["1"]
S["scars2"] >> scars_list["2"]
@@ -594,6 +632,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
//Jobs
S["joblessrole"] >> joblessrole
//Load prefs
S["job_preferences"] >> job_preferences
@@ -646,6 +685,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
S["feature_vag_visibility"] >> features["vag_visibility"]
//womb features
S["feature_has_womb"] >> features["has_womb"]
//flavor text
//Let's make our players NOT cry desperately as we wipe their savefiles of their special snowflake texts:
if((S["flavor_text"] != "") && (S["flavor_text"] != null) && S["flavor_text"]) //If old text isn't null and isn't "" but still exists.
@@ -803,6 +843,32 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
features["silicon_flavor_text"] = copytext(features["silicon_flavor_text"], 1, MAX_FLAVOR_LEN)
features["ooc_notes"] = copytext(features["ooc_notes"], 1, MAX_FLAVOR_LEN)
//load every advanced coloring mode thing in one go
//THIS MUST BE DONE AFTER ALL FEATURE SAVES OR IT WILL NOT WORK
for(var/feature in features)
var/feature_value = features[feature]
if(feature_value)
var/ref_list = GLOB.mutant_reference_list[feature]
if(ref_list)
var/datum/sprite_accessory/accessory = ref_list[feature_value]
if(accessory)
var/mutant_string = accessory.mutant_part_string
if(!mutant_string)
if(istype(accessory, /datum/sprite_accessory/mam_body_markings))
mutant_string = "mam_body_markings"
var/primary_string = "[mutant_string]_primary"
var/secondary_string = "[mutant_string]_secondary"
var/tertiary_string = "[mutant_string]_tertiary"
if(accessory.color_src == MATRIXED && !accessory.matrixed_sections && feature_value != "None")
message_admins("Sprite Accessory Failure (loading data): Accessory [accessory.type] is a matrixed item without any matrixed sections set!")
continue
if(S["feature_[primary_string]"])
S["feature_[primary_string]"] >> features[primary_string]
if(S["feature_[secondary_string]"])
S["feature_[secondary_string]"] >> features[secondary_string]
if(S["feature_[tertiary_string]"])
S["feature_[tertiary_string]"] >> features[tertiary_string]
persistent_scars = sanitize_integer(persistent_scars)
scars_list["1"] = sanitize_text(scars_list["1"])
scars_list["2"] = sanitize_text(scars_list["2"])
@@ -927,6 +993,33 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
WRITE_FILE(S["feature_ooc_notes"], features["ooc_notes"])
WRITE_FILE(S["feature_color_scheme"], features["color_scheme"])
//save every advanced coloring mode thing in one go
for(var/feature in features)
var/feature_value = features[feature]
if(feature_value)
var/ref_list = GLOB.mutant_reference_list[feature]
if(ref_list)
var/datum/sprite_accessory/accessory = ref_list[feature_value]
if(accessory)
var/mutant_string = accessory.mutant_part_string
if(!mutant_string)
if(istype(accessory, /datum/sprite_accessory/mam_body_markings))
mutant_string = "mam_body_markings"
var/primary_string = "[mutant_string]_primary"
var/secondary_string = "[mutant_string]_secondary"
var/tertiary_string = "[mutant_string]_tertiary"
if(accessory.color_src == MATRIXED && !accessory.matrixed_sections && feature_value != "None")
message_admins("Sprite Accessory Failure (saving data): Accessory [accessory.type] is a matrixed item without any matrixed sections set!")
continue
if(features[primary_string])
WRITE_FILE(S["feature_[primary_string]"], features[primary_string])
if(features[secondary_string])
WRITE_FILE(S["feature_[secondary_string]"], features[secondary_string])
if(features[tertiary_string])
WRITE_FILE(S["feature_[tertiary_string]"], features[tertiary_string])
//Custom names
for(var/custom_name_id in GLOB.preferences_custom_names)
var/savefile_slot_name = custom_name_id + "_name" //TODO remove this
+1 -1
View File
@@ -50,7 +50,7 @@ GLOBAL_VAR_INIT(normal_looc_colour, "#6699CC")
msg = emoji_parse(msg)
mob.log_talk(msg,LOG_OOC, tag="(LOOC)")
mob.log_talk(msg,LOG_OOC, tag="LOOC")
var/list/heard = get_hearers_in_view(7, get_top_level_mob(src.mob))
for(var/mob/M in heard)
@@ -168,7 +168,6 @@
desc = "A simple, inconspicuous harness replacement for a jumpsuit."
icon_state = "gear_harness"
item_state = "gear_harness"
body_parts_covered = CHEST|GROIN
can_adjust = FALSE
/obj/item/clothing/under/misc/durathread
+1
View File
@@ -2,6 +2,7 @@
name = "Spontaneous Brain Trauma"
typepath = /datum/round_event/brain_trauma
weight = 25
min_players = 5
/datum/round_event_control/brain_trauma/canSpawnEvent(var/players_amt, var/gamemode)
var/list/enemy_roles = list("Medical Doctor","Chief Medical Officer","Paramedic")
+9
View File
@@ -79,6 +79,15 @@
no_destination_swap = TRUE
var/static/list/dumb_rev_heads = list()
/obj/machinery/computer/shuttle/mining/common
name = "lavaland shuttle console"
desc = "Used to call and send the lavaland shuttle."
req_access = list()
circuit = /obj/item/circuitboard/computer/mining_shuttle/common
shuttleId = "mining_common"
possible_destinations = "commonmining_home;lavaland_common_away;landing_zone_dock;mining_public"
/obj/machinery/computer/shuttle/mining/on_attack_hand(mob/user, act_intent = user.a_intent, unarmed_attack_flags)
if(is_station_level(user.z) && user.mind && is_head_revolutionary(user) && !(user.mind in dumb_rev_heads))
to_chat(user, "<span class='warning'>You get a feeling that leaving the station might be a REALLY dumb idea...</span>")
@@ -63,6 +63,7 @@
var/list/relevant_layers //list of layers that this accessory uses. As of now only used in species.handle_mutant_bodyparts(), but that's where most sprite accessories are anyway.
var/mutant_part_string //Also used in species.handle_mutant_bodyparts() to generate the overlay icon state.
var/alpha_mask_state
var/matrixed_sections = MATRIX_NONE //if color_src is MATRIXED, how many sections does it have? 1-3
//Special / holdover traits for Citadel specific sprites.
var/extra = FALSE
@@ -5,6 +5,7 @@
/datum/sprite_accessory/body_markings
icon = 'icons/mob/mutant_bodyparts.dmi'
relevant_layers = list(BODY_ADJ_LAYER)
mutant_part_string = "body_markings"
/datum/sprite_accessory/body_markings/none
name = "None"
@@ -21,6 +22,7 @@
icon_state = "guilmon"
color_src = MATRIXED
icon = 'modular_citadel/icons/mob/markings_notmammals.dmi'
matrixed_sections = MATRIX_ALL
/datum/sprite_accessory/body_markings/ltiger
name = "Light Tiger Body"
@@ -47,6 +49,7 @@
gender_specific = 0
icon = 'modular_citadel/icons/mob/mam_markings.dmi'
recommended_species = list("mammal", "xeno", "slimeperson", "podweak")
matrixed_sections = MATRIX_ALL
/datum/sprite_accessory/mam_body_markings/none
name = "None"
@@ -54,6 +57,7 @@
ckeys_allowed = list("yousshouldnteverbeseeingthisyoumeme")
icon = 'modular_citadel/icons/mob/markings_notmammals.dmi'
relevant_layers = null
matrixed_sections = 0
/datum/sprite_accessory/mam_body_markings/redpanda
name = "Redpanda"
@@ -229,6 +233,7 @@
icon = 'icons/mob/wings.dmi'
color_src = 0
relevant_layers = list(BODY_FRONT_LAYER)
mutant_part_string = "insect_fluff"
/datum/sprite_accessory/insect_fluff/is_not_visible(var/mob/living/carbon/human/H, var/tauric)
return (!H.dna.features["insect_fluff"] || H.dna.features["insect_fluff"] == "None" || H.wear_suit && (H.wear_suit.flags_inv & HIDEJUMPSUIT))
@@ -26,18 +26,21 @@
icon_state = "bear"
icon = 'modular_citadel/icons/mob/mam_ears.dmi'
color_src = MATRIXED
matrixed_sections = MATRIX_RED
/datum/sprite_accessory/ears/human/bigwolf
name = "Big Wolf"
icon_state = "bigwolf"
icon = 'modular_citadel/icons/mob/mam_ears.dmi'
color_src = MATRIXED
matrixed_sections = MATRIX_RED_BLUE
/datum/sprite_accessory/ears/human/bigwolfinner
name = "Big Wolf (ALT)"
icon_state = "bigwolfinner"
icon = 'modular_citadel/icons/mob/mam_ears.dmi'
color_src = MATRIXED
matrixed_sections = MATRIX_RED
extra = TRUE
extra_color_src = NONE
@@ -46,12 +49,14 @@
icon_state = "bigwolfdark"
icon = 'modular_citadel/icons/mob/mam_ears.dmi'
color_src = MATRIXED
matrixed_sections = MATRIX_RED_BLUE
/datum/sprite_accessory/ears/human/bigwolfinnerdark
name = "Dark Big Wolf (ALT)"
icon_state = "bigwolfinnerdark"
icon = 'modular_citadel/icons/mob/mam_ears.dmi'
color_src = MATRIXED
matrixed_sections = MATRIX_RED
extra = TRUE
extra_color_src = NONE
@@ -59,6 +64,7 @@
name = "Bunny"
icon_state = "bunny"
color_src = MATRIXED
matrixed_sections = MATRIX_RED_GREEN
icon = 'modular_citadel/icons/mob/mam_ears.dmi'
/datum/sprite_accessory/ears/cat
@@ -73,6 +79,7 @@
icon_state = "cow"
icon = 'modular_citadel/icons/mob/mam_ears.dmi'
color_src = MATRIXED
matrixed_sections = MATRIX_RED
/datum/sprite_accessory/ears/human/curled
name = "Curled Horn"
@@ -84,6 +91,7 @@
name = "Dog, Floppy"
icon_state = "lab"
color_src = MATRIXED
matrixed_sections = MATRIX_RED
icon = 'modular_citadel/icons/mob/mam_ears.dmi'
/datum/sprite_accessory/ears/human/eevee
@@ -91,12 +99,14 @@
icon_state = "eevee"
icon = 'modular_citadel/icons/mob/mam_ears.dmi'
color_src = MATRIXED
matrixed_sections = MATRIX_RED
/datum/sprite_accessory/ears/human/elephant
name = "Elephant"
icon_state = "elephant"
icon = 'modular_citadel/icons/mob/mam_ears.dmi'
color_src = MATRIXED
matrixed_sections = MATRIX_RED
/datum/sprite_accessory/ears/human/elf
name = "Elf"
@@ -109,17 +119,20 @@
icon_state = "fennec"
icon = 'modular_citadel/icons/mob/mam_ears.dmi'
color_src = MATRIXED
matrixed_sections = MATRIX_RED_BLUE
/datum/sprite_accessory/ears/fish
name = "Fish"
icon_state = "fish"
icon = 'modular_citadel/icons/mob/mam_ears.dmi'
color_src = MATRIXED
matrixed_sections = MATRIX_RED
/datum/sprite_accessory/ears/fox
name = "Fox"
icon_state = "fox"
color_src = MATRIXED
matrixed_sections = MATRIX_RED_GREEN
icon = 'modular_citadel/icons/mob/mam_ears.dmi'
/datum/sprite_accessory/ears/human/jellyfish
@@ -132,17 +145,20 @@
icon_state = "murid"
icon = 'modular_citadel/icons/mob/mam_ears.dmi'
color_src = MATRIXED
matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/ears/human/otie
name = "Otusian"
icon_state = "otie"
color_src = MATRIXED
matrixed_sections = MATRIX_RED_GREEN
icon = 'modular_citadel/icons/mob/mam_ears.dmi'
/datum/sprite_accessory/ears/human/rabbit
name = "Rabbit"
icon_state = "rabbit"
color_src = MATRIXED
matrixed_sections = MATRIX_RED_GREEN
icon = 'modular_citadel/icons/mob/mam_ears.dmi'
/datum/sprite_accessory/ears/human/pede
@@ -150,30 +166,35 @@
icon_state = "pede"
icon = 'modular_citadel/icons/mob/mam_ears.dmi'
color_src = MATRIXED
matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/ears/human/sergal
name = "Sergal"
icon_state = "sergal"
icon = 'modular_citadel/icons/mob/mam_ears.dmi'
color_src = MATRIXED
matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/ears/human/skunk
name = "skunk"
icon_state = "skunk"
icon = 'modular_citadel/icons/mob/mam_ears.dmi'
color_src = MATRIXED
matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/ears/squirrel
name = "Squirrel"
icon_state = "squirrel"
icon = 'modular_citadel/icons/mob/mam_ears.dmi'
color_src = MATRIXED
matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/ears/wolf
name = "Wolf"
icon_state = "wolf"
color_src = MATRIXED
icon = 'modular_citadel/icons/mob/mam_ears.dmi'
matrixed_sections = MATRIX_RED_BLUE
/******************************************
*************** Furry Ears ****************
@@ -182,7 +203,6 @@
/datum/sprite_accessory/ears/mam_ears
icon = 'modular_citadel/icons/mob/mam_ears.dmi'
color_src = MATRIXED
mutant_part_string = "ears"
relevant_layers = list(BODY_BEHIND_LAYER, BODY_ADJ_LAYER, BODY_FRONT_LAYER)
/datum/sprite_accessory/ears/mam_ears/is_not_visible(var/mob/living/carbon/human/H, var/tauric)
@@ -197,38 +217,46 @@
/datum/sprite_accessory/ears/mam_ears/axolotl
name = "Axolotl"
icon_state = "axolotl"
matrixed_sections = MATRIX_RED
/datum/sprite_accessory/ears/mam_ears/bat
name = "Bat"
icon_state = "bat"
matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/ears/mam_ears/bear
name = "Bear"
icon_state = "bear"
matrixed_sections = MATRIX_RED
/datum/sprite_accessory/ears/mam_ears/bigwolf
name = "Big Wolf"
icon_state = "bigwolf"
matrixed_sections = MATRIX_RED_BLUE
/datum/sprite_accessory/ears/mam_ears/bigwolfinner
name = "Big Wolf (ALT)"
icon_state = "bigwolfinner"
extra = TRUE
extra_color_src = NONE
matrixed_sections = MATRIX_RED
/datum/sprite_accessory/ears/mam_ears/bigwolfdark //alphabetical sort ignored here for ease-of-use
name = "Dark Big Wolf"
icon_state = "bigwolfdark"
matrixed_sections = MATRIX_RED_BLUE
/datum/sprite_accessory/ears/mam_ears/bigwolfinnerdark
name = "Dark Big Wolf (ALT)"
icon_state = "bigwolfinnerdark"
extra = TRUE
extra_color_src = NONE
matrixed_sections = MATRIX_RED
/datum/sprite_accessory/ears/mam_ears/bunny
name = "Bunny"
icon_state = "bunny"
matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/ears/mam_ears/cat
name = "Cat"
@@ -241,10 +269,12 @@
/datum/sprite_accessory/ears/mam_ears/catbig
name = "Cat, Big"
icon_state = "catbig"
matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/ears/mam_ears/cow
name = "Cow"
icon_state = "cow"
matrixed_sections = MATRIX_RED
/datum/sprite_accessory/ears/mam_ears/curled
name = "Curled Horn"
@@ -259,6 +289,7 @@
/datum/sprite_accessory/ears/mam_ears/eevee
name = "Eevee"
icon_state = "eevee"
matrixed_sections = MATRIX_RED
/datum/sprite_accessory/ears/mam_ears/elf
name = "Elf"
@@ -268,22 +299,27 @@
/datum/sprite_accessory/ears/mam_ears/elephant
name = "Elephant"
icon_state = "elephant"
matrixed_sections = MATRIX_RED
/datum/sprite_accessory/ears/mam_ears/fennec
name = "Fennec"
icon_state = "fennec"
matrixed_sections = MATRIX_RED_BLUE
/datum/sprite_accessory/ears/mam_ears/fish
name = "Fish"
icon_state = "fish"
matrixed_sections = MATRIX_RED
/datum/sprite_accessory/ears/mam_ears/fox
name = "Fox"
icon_state = "fox"
matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/ears/mam_ears/husky
name = "Husky"
icon_state = "wolf"
matrixed_sections = MATRIX_RED_BLUE
/datum/sprite_accessory/ears/mam_ears/jellyfish
name = "Jellyfish"
@@ -293,39 +329,49 @@
/datum/sprite_accessory/ears/mam_ears/kangaroo
name = "kangaroo"
icon_state = "kangaroo"
matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/ears/mam_ears/lab
name = "Dog, Long"
icon_state = "lab"
matrixed_sections = MATRIX_RED
/datum/sprite_accessory/ears/mam_ears/murid
name = "Murid"
icon_state = "murid"
matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/ears/mam_ears/otie
name = "Otusian"
icon_state = "otie"
matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/ears/mam_ears/rabbit
name = "Rabbit"
icon_state = "rabbit"
matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/ears/mam_ears/pede
name = "Scolipede"
icon_state = "pede"
matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/ears/mam_ears/sergal
name = "Sergal"
icon_state = "sergal"
matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/ears/mam_ears/skunk
name = "skunk"
icon_state = "skunk"
matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/ears/mam_ears/squirrel
name = "Squirrel"
icon_state = "squirrel"
matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/ears/mam_ears/wolf
name = "Wolf"
icon_state = "wolf"
matrixed_sections = MATRIX_RED_BLUE
@@ -1,6 +1,7 @@
/datum/sprite_accessory/frills
icon = 'icons/mob/mutant_bodyparts.dmi'
relevant_layers = list(BODY_ADJ_LAYER)
mutant_part_string = "frills"
/datum/sprite_accessory/frills/is_not_visible(var/mob/living/carbon/human/H, var/tauric)
var/obj/item/bodypart/head/HD = H.get_bodypart(BODY_ZONE_HEAD)
@@ -132,6 +132,7 @@
color_src = MUTCOLORS2
relevant_layers = list(BODY_ADJ_LAYER)
recommended_species = list("ipc")
mutant_part_string = "ipc_antenna"
/datum/sprite_accessory/antenna/none
name = "None"
@@ -29,6 +29,7 @@
var/taur_mode = NONE //Must be a single specific tauric suit variation bitflag. Don't do FLAG_1|FLAG_2
var/alt_taur_mode = NONE //Same as above.
var/hide_legs = USE_QUADRUPED_CLIP_MASK
mutant_part_string = "taur"
/datum/sprite_accessory/taur/is_not_visible(var/mob/living/carbon/human/H, var/tauric)
return (!tauric || (H.wear_suit && (H.wear_suit.flags_inv & HIDETAUR)))
@@ -67,6 +68,7 @@
name = "Cow (Spotted)"
icon_state = "cow_spotted"
color_src = MATRIXED
matrixed_sections = MATRIX_ALL
/datum/sprite_accessory/taur/deer
name = "Deer"
@@ -88,6 +90,7 @@
icon_state = "drake_old"
color_src = MATRIXED
extra = FALSE
matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/taur/drider
name = "Drider"
@@ -114,17 +117,20 @@
icon_state = "horse"
taur_mode = STYLE_HOOF_TAURIC
alt_taur_mode = STYLE_PAW_TAURIC
matrixed_sections = MATRIX_ALL
/datum/sprite_accessory/taur/naga
name = "Naga"
icon_state = "naga"
taur_mode = STYLE_SNEK_TAURIC
hide_legs = USE_SNEK_CLIP_MASK
matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/taur/otie
name = "Otie"
icon_state = "otie"
taur_mode = STYLE_PAW_TAURIC
matrixed_sections = MATRIX_ALL
/datum/sprite_accessory/taur/pede
name = "Scolipede"
@@ -7,11 +7,6 @@
var/obj/item/bodypart/head/HD = H.get_bodypart(BODY_ZONE_HEAD)
return ((H.wear_mask && (H.wear_mask.flags_inv & HIDESNOUT)) || (H.head && (H.head.flags_inv & HIDESNOUT)) || !HD || HD.is_robotic_limb(FALSE))
/datum/sprite_accessory/snout/guilmon
name = "Guilmon"
icon_state = "guilmon"
color_src = MATRIXED
/datum/sprite_accessory/snouts/round
name = "Round"
icon_state = "round"
@@ -158,7 +153,6 @@
color_src = MATRIXED
icon = 'modular_citadel/icons/mob/mam_snouts.dmi'
recommended_species = list("mammal", "slimeperson", "insect", "podweak", "lizard")
mutant_part_string = "snout"
relevant_layers = list(BODY_ADJ_LAYER, BODY_FRONT_LAYER)
/datum/sprite_accessory/snouts/mam_snouts/is_not_visible(var/mob/living/carbon/human/H, var/tauric)
@@ -174,10 +168,12 @@
/datum/sprite_accessory/snouts/mam_snouts/bird
name = "Beak"
icon_state = "bird"
matrixed_sections = MATRIX_ALL
/datum/sprite_accessory/snouts/mam_snouts/bigbeak
name = "Big Beak"
icon_state = "bigbeak"
matrixed_sections = MATRIX_BLUE
/datum/sprite_accessory/snouts/mam_snouts/bug
name = "Bug"
@@ -191,52 +187,64 @@
icon_state = "elephant"
extra = TRUE
extra_color_src = MUTCOLORS3
matrixed_sections = MATRIX_RED
/datum/sprite_accessory/snouts/mam_snouts/husky
name = "Husky"
icon_state = "husky"
matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/snouts/mam_snouts/rhino
name = "Horn"
icon_state = "rhino"
extra = TRUE
extra = MUTCOLORS3
extra_color_src = MUTCOLORS3
matrixed_sections = MATRIX_ALL
/datum/sprite_accessory/snouts/mam_snouts/rodent
name = "Rodent"
icon_state = "rodent"
matrixed_sections = MATRIX_RED
/datum/sprite_accessory/snouts/mam_snouts/lcanid
name = "Mammal, Long"
icon_state = "lcanid"
matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/snouts/mam_snouts/lcanidalt
name = "Mammal, Long ALT"
icon_state = "lcanidalt"
matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/snouts/mam_snouts/scanid
name = "Mammal, Short"
icon_state = "scanid"
matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/snouts/mam_snouts/scanidalt
name = "Mammal, Short ALT"
icon_state = "scanidalt"
matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/snouts/mam_snouts/scanidalt2
name = "Mammal, Short ALT 2"
icon_state = "scanidalt2"
matrixed_sections = MATRIX_RED
/datum/sprite_accessory/snouts/mam_snouts/wolf
name = "Mammal, Thick"
icon_state = "wolf"
matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/snouts/mam_snouts/wolfalt
name = "Mammal, Thick ALT"
icon_state = "wolfalt"
matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/snouts/mam_snouts/otie
name = "Otie"
icon_state = "otie"
matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/snouts/mam_snouts/round
name = "Round"
@@ -251,18 +259,22 @@
/datum/sprite_accessory/snouts/mam_snouts/pede
name = "Scolipede"
icon_state = "pede"
matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/snouts/mam_snouts/sergal
name = "Sergal"
icon_state = "sergal"
matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/snouts/mam_snouts/shark
name = "Shark"
icon_state = "shark"
matrixed_sections = MATRIX_RED
/datum/sprite_accessory/snouts/mam_snouts/hshark
name = "hShark"
icon_state = "hshark"
matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/snouts/mam_snouts/sharp
name = "Sharp"
@@ -279,18 +291,22 @@
icon_state = "skulldog"
extra = TRUE
extra_color_src = MATRIXED
matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/snouts/mam_snouts/toucan
name = "Toucan"
icon_state = "toucan"
matrixed_sections = MATRIX_RED_BLUE //one single pixel of red. one.
/datum/sprite_accessory/snouts/mam_snouts/redpanda
name = "WahCoon"
icon_state = "wah"
matrixed_sections = MATRIX_ALL
/datum/sprite_accessory/snouts/mam_snouts/redpandaalt
name = "WahCoon ALT"
icon_state = "wahalt"
matrixed_sections = MATRIX_RED_GREEN
/******************************************
**************** Snouts *******************
@@ -299,10 +315,12 @@
/datum/sprite_accessory/snouts/mam_snouts/fbird
name = "Beak (Top)"
icon_state = "fbird"
matrixed_sections = MATRIX_ALL
/datum/sprite_accessory/snouts/mam_snouts/fbigbeak
name = "Big Beak (Top)"
icon_state = "fbigbeak"
matrixed_sections = MATRIX_BLUE
/datum/sprite_accessory/snouts/mam_snouts/fbug
name = "Bug (Top)"
@@ -316,52 +334,64 @@
icon_state = "felephant"
extra = TRUE
extra_color_src = MUTCOLORS3
matrixed_sections = MATRIX_RED
/datum/sprite_accessory/snouts/mam_snouts/frhino
name = "Horn (Top)"
icon_state = "frhino"
extra = TRUE
extra = MUTCOLORS3
matrixed_sections = MATRIX_ALL
/datum/sprite_accessory/snouts/mam_snouts/fhusky
name = "Husky (Top)"
icon_state = "fhusky"
matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/snouts/mam_snouts/flcanid
name = "Mammal, Long (Top)"
icon_state = "flcanid"
matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/snouts/mam_snouts/flcanidalt
name = "Mammal, Long ALT (Top)"
icon_state = "flcanidalt"
matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/snouts/mam_snouts/fscanid
name = "Mammal, Short (Top)"
icon_state = "fscanid"
matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/snouts/mam_snouts/fscanidalt
name = "Mammal, Short ALT (Top)"
icon_state = "fscanidalt"
matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/snouts/mam_snouts/fscanidalt2
name = "Mammal, Short ALT 2 (Top)"
icon_state = "fscanidalt2"
matrixed_sections = MATRIX_RED
/datum/sprite_accessory/snouts/mam_snouts/fwolf
name = "Mammal, Thick (Top)"
icon_state = "fwolf"
matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/snouts/mam_snouts/fwolfalt
name = "Mammal, Thick ALT (Top)"
icon_state = "fwolfalt"
matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/snouts/mam_snouts/fotie
name = "Otie (Top)"
icon_state = "fotie"
matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/snouts/mam_snouts/frodent
name = "Rodent (Top)"
icon_state = "frodent"
matrixed_sections = MATRIX_RED
/datum/sprite_accessory/snouts/mam_snouts/fround
name = "Round (Top)"
@@ -376,14 +406,17 @@
/datum/sprite_accessory/snouts/mam_snouts/fpede
name = "Scolipede (Top)"
icon_state = "fpede"
matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/snouts/mam_snouts/fsergal
name = "Sergal (Top)"
icon_state = "fsergal"
matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/snouts/mam_snouts/fshark
name = "Shark (Top)"
icon_state = "fshark"
matrixed_sections = MATRIX_RED
/datum/sprite_accessory/snouts/mam_snouts/fsharp
name = "Sharp (Top)"
@@ -398,7 +431,14 @@
/datum/sprite_accessory/snouts/mam_snouts/ftoucan
name = "Toucan (Top)"
icon_state = "ftoucan"
matrixed_sections = MATRIX_RED_BLUE
/datum/sprite_accessory/snouts/mam_snouts/fredpanda
name = "WahCoon (Top)"
icon_state = "fwah"
matrixed_sections = MATRIX_ALL
/datum/sprite_accessory/snouts/mam_snouts/fredpanda/alt
name = "WahCoon ALT (Top)"
icon_state = "fwahalt"
matrixed_sections = MATRIX_RED_GREEN
@@ -1,6 +1,7 @@
/datum/sprite_accessory/spines
icon = 'icons/mob/mutant_bodyparts.dmi'
relevant_layers = list(BODY_BEHIND_LAYER, BODY_ADJ_LAYER)
mutant_part_string = "spines"
/datum/sprite_accessory/spines/is_not_visible(var/mob/living/carbon/human/H, var/tauric)
return (!H.dna.features["spines"] || H.dna.features["spines"] == "None" || H.wear_suit && (H.wear_suit.flags_inv & HIDETAUR))
@@ -11,35 +11,41 @@
color_src = MATRIXED
name = "Synthetic Lizard - Snout Under"
icon_state = "synthliz_under"
matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/snouts/mam_snouts/synthliz/synthliz_tert
icon = 'modular_citadel/icons/mob/synthliz_snouts.dmi'
color_src = MATRIXED
name = "Synthetic Lizard - Snout Tertiary"
icon_state = "synthliz_tert"
matrixed_sections = MATRIX_RED_BLUE
/datum/sprite_accessory/snouts/mam_snouts/synthliz/synthliz_tertunder
icon = 'modular_citadel/icons/mob/synthliz_snouts.dmi'
color_src = MATRIXED
name = "Synthetic Lizard - Snout Tertiary Under"
icon_state = "synthliz_tertunder"
matrixed_sections = MATRIX_ALL
//Synth body markings
/datum/sprite_accessory/mam_body_markings/synthliz/synthliz_pecs
icon = 'modular_citadel/icons/mob/synthliz_body_markings.dmi'
name = "Synthetic Lizard - Pecs"
icon_state = "synthlizpecs"
matrixed_sections = MATRIX_GREEN
/datum/sprite_accessory/mam_body_markings/synthliz/synthliz_pecslight
icon = 'modular_citadel/icons/mob/synthliz_body_markings.dmi'
name = "Synthetic Lizard - Pecs Light"
icon_state = "synthlizpecslight"
matrixed_sections = MATRIX_GREEN_BLUE
/datum/sprite_accessory/mam_body_markings/synthliz
recommended_species = list("synthliz")
icon = 'modular_citadel/icons/mob/synthliz_body_markings.dmi'
name = "Synthetic Lizard - Plates"
icon_state = "synthlizscutes"
matrixed_sections = MATRIX_GREEN
//Synth tails
/datum/sprite_accessory/tails/mam_tails/synthliz
@@ -81,6 +87,7 @@
color_src = MATRIXED
name = "Synthetic Lizard - Horns Light"
icon_state = "synth_hornslight"
matrixed_sections = MATRIX_RED_BLUE
/datum/sprite_accessory/antenna/synthliz/synth_short
icon = 'modular_citadel/icons/mob/synthliz_antennas.dmi'
@@ -99,6 +106,7 @@
color_src = MATRIXED
name = "Synthetic Lizard - Sharp Light"
icon_state = "synth_sharplight"
matrixed_sections = MATRIX_RED_BLUE
/datum/sprite_accessory/antenna/synthliz/synthliz_thick
icon = 'modular_citadel/icons/mob/synthliz_antennas.dmi'
@@ -111,6 +119,7 @@
color_src = MATRIXED
name = "Synthetic Lizard - Thick Light"
icon_state = "synth_thicklight"
matrixed_sections = MATRIX_RED_BLUE
//Synth Taurs (Ported from Virgo)
/datum/sprite_accessory/taur/synthliz
@@ -118,6 +127,7 @@
icon_state = "synthlizard"
taur_mode = STYLE_PAW_TAURIC
recommended_species = list("synthliz")
matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/taur/synthliz/inv
name = "Virgo - Synthetic Lizard (Inverted)"
@@ -8,7 +8,7 @@
/datum/sprite_accessory/tails_animated
icon = 'icons/mob/mutant_bodyparts.dmi'
mutant_part_string = "tailwag"
mutant_part_string = "tailwag" //keep this the same, ALWAYS, this is incredibly important for colouring!
relevant_layers = list(BODY_BEHIND_LAYER, BODY_FRONT_LAYER)
/******************************************
@@ -34,12 +34,14 @@
icon_state = "axolotl"
color_src = MATRIXED
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails_animated/lizard/axolotl
name = "Axolotl"
icon_state = "axolotl"
color_src = MATRIXED
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails/lizard/dtiger
name = "Dark Tiger"
@@ -54,12 +56,14 @@
icon_state = "guilmon"
color_src = MATRIXED
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails_animated/lizard/guilmon
name = "Guilmon"
icon_state = "guilmon"
color_src = MATRIXED
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails/lizard/ltiger
name = "Light Tiger"
@@ -107,44 +111,28 @@
icon_state = "axolotl"
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
color_src = MATRIXED
matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails_animated/human/axolotl
name = "Axolotl"
icon_state = "axolotl"
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
color_src = MATRIXED
/datum/sprite_accessory/tails/mam_tails/batl
name = "Bat (Long)"
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
icon_state = "batl"
/datum/sprite_accessory/tails_animated/mam_tails_animated/batl
name = "Bat (Long)"
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
icon_state = "batl"
/datum/sprite_accessory/tails/mam_tails/bats
name = "Bat (Short)"
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
icon_state = "bats"
/datum/sprite_accessory/tails_animated/mam_tails_animated/bats
name = "Bat (Short)"
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
icon_state = "bats"
matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails/human/bee
name = "Bee"
icon_state = "bee"
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
color_src = MATRIXED
matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/tails_animated/human/bee
name = "Bee"
icon_state = "bee"
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
color_src = MATRIXED
matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/tails/human/cat
name = "Cat"
@@ -163,24 +151,28 @@
icon_state = "catbig"
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
color_src = MATRIXED
matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails_animated/human/catbig
name = "Cat, Big"
icon_state = "catbig"
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
color_src = MATRIXED
matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails/human/twocat
name = "Cat, Double"
icon_state = "twocat"
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
color_src = MATRIXED
matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails_animated/human/twocat
name = "Cat, Double"
icon_state = "twocat"
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
color_src = MATRIXED
matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails/human/corvid
name = "Corvid"
@@ -195,12 +187,14 @@
icon_state = "cow"
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
color_src = MATRIXED
matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails_animated/human/cow
name = "Cow"
icon_state = "cow"
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
color_src = MATRIXED
matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails/human/dtiger
name = "Dark Tiger"
@@ -215,60 +209,70 @@
icon_state = "datashark"
color_src = MATRIXED
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
matrixed_sections = MATRIX_RED_BLUE
/datum/sprite_accessory/tails_animated/human/datashark
name = "datashark"
icon_state = "datashark"
color_src = MATRIXED
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
matrixed_sections = MATRIX_RED_BLUE
/datum/sprite_accessory/tails/human/eevee
name = "Eevee"
icon_state = "eevee"
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
color_src = MATRIXED
matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/tails_animated/human/eevee
name = "Eevee"
icon_state = "eevee"
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
color_src = MATRIXED
matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/tails/human/fennec
name = "Fennec"
icon_state = "fennec"
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
color_src = MATRIXED
matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/tails_animated/human/fennec
name = "Fennec"
icon_state = "fennec"
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
color_src = MATRIXED
matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/tails/human/fish
name = "Fish"
icon_state = "fish"
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
color_src = MATRIXED
matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails_animated/human/fish
name = "Fish"
icon_state = "fish"
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
color_src = MATRIXED
matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails/human/fox
name = "Fox"
icon_state = "fox"
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
color_src = MATRIXED
matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/tails_animated/human/fox
name = "Fox"
icon_state = "fox"
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
color_src = MATRIXED
matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/tails/human/horse
name = "Horse"
@@ -287,36 +291,42 @@
icon_state = "husky"
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
color_src = MATRIXED
matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/tails_animated/human/husky
name = "Husky"
icon_state = "husky"
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
color_src = MATRIXED
matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/tails/human/insect
name = "Insect"
icon_state = "insect"
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
color_src = MATRIXED
matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails_animated/human/insect
name = "Insect"
icon_state = "insect"
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
color_src = MATRIXED
matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails/human/kitsune
name = "Kitsune"
icon_state = "kitsune"
color_src = MATRIXED
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/tails_animated/human/kitsune
name = "Kitsune"
icon_state = "kitsune"
color_src = MATRIXED
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/tails/human/ltiger
name = "Light Tiger"
@@ -331,108 +341,126 @@
icon_state = "murid"
color_src = MATRIXED
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
matrixed_sections = MATRIX_GREEN
/datum/sprite_accessory/tails_animated/human/murid
name = "Murid"
icon_state = "murid"
color_src = MATRIXED
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
matrixed_sections = MATRIX_GREEN
/datum/sprite_accessory/tails/orca
name = "Orca"
icon_state = "orca"
color_src = MATRIXED
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails_animated/orca
name = "Orca"
icon_state = "orca"
color_src = MATRIXED
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails/human/otie
name = "Otusian"
icon_state = "otie"
color_src = MATRIXED
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails_animated/human/otie
name = "Otusian"
icon_state = "otie"
color_src = MATRIXED
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails/human/rabbit
name = "Rabbit"
icon_state = "rabbit"
color_src = MATRIXED
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails_animated/human/rabbit
name = "Rabbit"
icon_state = "rabbit"
color_src = MATRIXED
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails/human/ailurus
name = "Red Panda"
icon_state = "wah"
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
color_src = MATRIXED
matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/tails_animated/human/ailurus
name = "Red Panda"
icon_state = "wah"
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
color_src = MATRIXED
matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/tails/human/pede
name = "Scolipede"
icon_state = "pede"
color_src = MATRIXED
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails_animated/human/pede
name = "Scolipede"
icon_state = "pede"
color_src = MATRIXED
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails/human/sergal
name = "Sergal"
icon_state = "sergal"
color_src = MATRIXED
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/tails_animated/human/sergal
name = "Sergal"
icon_state = "sergal"
color_src = MATRIXED
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/tails/human/shark
name = "Shark"
icon_state = "shark"
color_src = MATRIXED
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails_animated/human/shark
name = "Shark"
icon_state = "shark"
color_src = MATRIXED
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails/human/skunk
name = "skunk"
icon_state = "skunk"
color_src = MATRIXED
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
matrixed_sections = MATRIX_ALL
/datum/sprite_accessory/tails_animated/human/skunk
name = "skunk"
icon_state = "skunk"
color_src = MATRIXED
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
matrixed_sections = MATRIX_ALL
/datum/sprite_accessory/tails/human/smooth
name = "Smooth"
@@ -463,60 +491,70 @@
icon_state = "squirrel"
color_src = MATRIXED
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails_animated/human/squirrel
name = "Squirrel"
icon_state = "squirrel"
color_src = MATRIXED
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails/human/tamamo_kitsune
name = "Tamamo Kitsune Tails" //Tamamo-no-Tiro, let it be known!
icon_state = "9sune"
color_src = MATRIXED
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/tails_animated/human/tamamo_kitsune
name = "Tamamo Kitsune Tails"
icon_state = "9sune"
color_src = MATRIXED
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/tails/human/tentacle
name = "Tentacle"
icon_state = "tentacle"
color_src = MATRIXED
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails_animated/human/tentacle
name = "Tentacle"
icon_state = "tentacle"
color_src = MATRIXED
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails/human/tiger
name = "Tiger"
icon_state = "tiger"
color_src = MATRIXED
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
matrixed_sections = MATRIX_ALL
/datum/sprite_accessory/tails_animated/human/tiger
name = "Tiger"
icon_state = "tiger"
color_src = MATRIXED
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
matrixed_sections = MATRIX_ALL
/datum/sprite_accessory/tails/human/wolf
name = "Wolf"
icon_state = "wolf"
color_src = MATRIXED
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails_animated/human/wolf
name = "Wolf"
icon_state = "wolf"
color_src = MATRIXED
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
matrixed_sections = MATRIX_RED
/******************************************
************** Furry Tails ****************
@@ -526,7 +564,6 @@
color_src = MATRIXED
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
recommended_species = list("mammal", "slimeperson", "podweak", "felinid", "insect")
mutant_part_string = "tail"
relevant_layers = list(BODY_BEHIND_LAYER, BODY_FRONT_LAYER)
/datum/sprite_accessory/tails/mam_tails/none
@@ -538,7 +575,6 @@
/datum/sprite_accessory/tails_animated/mam_tails_animated
color_src = MATRIXED
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
mutant_part_string = "tailwag"
relevant_layers = list(BODY_BEHIND_LAYER, BODY_FRONT_LAYER)
/datum/sprite_accessory/tails_animated/mam_tails_animated/is_not_visible(var/mob/living/carbon/human/H, var/tauric)
@@ -552,34 +588,42 @@
/datum/sprite_accessory/tails/mam_tails/axolotl
name = "Axolotl"
icon_state = "axolotl"
matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails_animated/mam_tails_animated/axolotl
name = "Axolotl"
icon_state = "axolotl"
matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails/mam_tails/batl
name = "Bat (Long)"
icon_state = "batl"
matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/tails_animated/mam_tails_animated/batl
name = "Bat (Long)"
icon_state = "batl"
matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/tails/mam_tails/bats
name = "Bat (Short)"
icon_state = "bats"
matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/tails_animated/mam_tails_animated/bats
name = "Bat (Short)"
icon_state = "bats"
matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/tails/mam_tails/bee
name = "Bee"
icon_state = "bee"
matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/tails_animated/mam_tails_animated/bee
name = "Bee"
icon_state = "bee"
matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/tails/mam_tails/cat
name = "Cat"
@@ -594,34 +638,42 @@
/datum/sprite_accessory/tails/mam_tails/catbig
name = "Cat, Big"
icon_state = "catbig"
matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails_animated/mam_tails_animated/catbig
name = "Cat, Big"
icon_state = "catbig"
matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails/mam_tails/twocat
name = "Cat, Double"
icon_state = "twocat"
matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails_animated/mam_tails_animated/twocat
name = "Cat, Double"
icon_state = "twocat"
matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails/mam_tails/corvid
name = "Corvid"
icon_state = "crow"
matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails_animated/mam_tails_animated/corvid
name = "Corvid"
icon_state = "crow"
matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails/mam_tail/cow
name = "Cow"
icon_state = "cow"
matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails_animated/mam_tails_animated/cow
name = "Cow"
icon_state = "cow"
matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails/mam_tails/dtiger
name = "Dark Tiger"
@@ -638,42 +690,52 @@
/datum/sprite_accessory/tails/mam_tails/eevee
name = "Eevee"
icon_state = "eevee"
matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/tails_animated/mam_tails_animated/eevee
name = "Eevee"
icon_state = "eevee"
matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/tails/mam_tails/fennec
name = "Fennec"
icon_state = "fennec"
matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/tails_animated/mam_tails_animated/fennec
name = "Fennec"
icon_state = "fennec"
matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/tails/mam_tails/fish
name = "Fish"
icon_state = "fish"
matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails_animated/mam_tails_animated/fish
name = "Fish"
icon_state = "fish"
matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails/mam_tails/fox
name = "Fox"
icon_state = "fox"
matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/tails_animated/mam_tails_animated/fox
name = "Fox"
icon_state = "fox"
matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/tails/mam_tails/hawk
name = "Hawk"
icon_state = "hawk"
matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails_animated/mam_tails_animated/hawk
name = "Hawk"
icon_state = "hawk"
matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails/mam_tails/horse
name = "Horse"
@@ -688,42 +750,52 @@
/datum/sprite_accessory/tails/mam_tails/husky
name = "Husky"
icon_state = "husky"
matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/tails_animated/mam_tails_animated/husky
name = "Husky"
icon_state = "husky"
matrixed_sections = MATRIX_RED_GREEN
datum/sprite_accessory/tails/mam_tails/insect
name = "Insect"
icon_state = "insect"
matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails_animated/mam_tails_animated/insect
name = "Insect"
icon_state = "insect"
matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails/mam_tails/kangaroo
name = "kangaroo"
icon_state = "kangaroo"
matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails_animated/mam_tails_animated/kangaroo
name = "kangaroo"
icon_state = "kangaroo"
matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails/mam_tails/kitsune
name = "Kitsune"
icon_state = "kitsune"
matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/tails_animated/mam_tails_animated/kitsune
name = "Kitsune"
icon_state = "kitsune"
matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/tails/mam_tails/lab
name = "Lab"
icon_state = "lab"
matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails_animated/mam_tails_animated/lab
name = "Lab"
icon_state = "lab"
matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails/mam_tails/ltiger
name = "Light Tiger"
@@ -740,84 +812,104 @@ datum/sprite_accessory/tails/mam_tails/insect
/datum/sprite_accessory/tails/mam_tails/murid
name = "Murid"
icon_state = "murid"
matrixed_sections = MATRIX_GREEN
/datum/sprite_accessory/tails_animated/mam_tails_animated/murid
name = "Murid"
icon_state = "murid"
matrixed_sections = MATRIX_GREEN
/datum/sprite_accessory/tails/mam_tails/orca
name = "Orca"
icon_state = "orca"
matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails_animated/mam_tails_animated/orca
name = "Orca"
icon_state = "orca"
matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails/mam_tails/otie
name = "Otusian"
icon_state = "otie"
matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails_animated/mam_tails_animated/otie
name = "Otusian"
icon_state = "otie"
matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails/mam_tails/rabbit
name = "Rabbit"
icon_state = "rabbit"
matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails_animated/mam_tails_animated/rabbit
name = "Rabbit"
icon_state = "rabbit"
matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails/mam_tails/ailurus
name = "Red Panda"
icon_state = "wah"
extra = TRUE
matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/tails_animated/mam_tails_animated/ailurus
name = "Red Panda"
icon_state = "wah"
extra = TRUE
matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/tails/mam_tails/pede
name = "Scolipede"
icon_state = "pede"
matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails_animated/mam_tails_animated/pede
name = "Scolipede"
icon_state = "pede"
matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails/mam_tails/sergal
name = "Sergal"
icon_state = "sergal"
matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/tails_animated/mam_tails_animated/sergal
name = "Sergal"
icon_state = "sergal"
matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/tails/mam_tails/shark
name = "Shark"
icon_state = "shark"
matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails_animated/mam_tails_animated/shark
name = "Shark"
icon_state = "shark"
matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails/mam_tails/shepherd
name = "Shepherd"
icon_state = "shepherd"
matrixed_sections = MATRIX_GREEN_BLUE
/datum/sprite_accessory/tails_animated/mam_tails_animated/shepherd
name = "Shepherd"
icon_state = "shepherd"
matrixed_sections = MATRIX_GREEN_BLUE
/datum/sprite_accessory/tails/mam_tails/skunk
name = "Skunk"
icon_state = "skunk"
matrixed_sections = MATRIX_ALL
/datum/sprite_accessory/tails_animated/mam_tails_animated/skunk
name = "Skunk"
icon_state = "skunk"
matrixed_sections = MATRIX_ALL
/datum/sprite_accessory/tails/mam_tails/smooth
name = "Smooth"
@@ -846,47 +938,59 @@ datum/sprite_accessory/tails/mam_tails/insect
/datum/sprite_accessory/tails/mam_tails/straighttail
name = "Straight Tail"
icon_state = "straighttail"
matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails_animated/mam_tails_animated/straighttail
name = "Straight Tail"
icon_state = "straighttail"
matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails/mam_tails/squirrel
name = "Squirrel"
icon_state = "squirrel"
matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails_animated/mam_tails_animated/squirrel
name = "Squirrel"
icon_state = "squirrel"
matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails/mam_tails/tamamo_kitsune
name = "Tamamo Kitsune Tails"
icon_state = "9sune"
matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/tails_animated/mam_tails_animated/tamamo_kitsune
name = "Tamamo Kitsune Tails"
icon_state = "9sune"
matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/tails/mam_tails/tentacle
name = "Tentacle"
icon_state = "tentacle"
matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails_animated/mam_tails_animated/tentacle
name = "Tentacle"
icon_state = "tentacle"
matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails/mam_tails/tiger
name = "Tiger"
icon_state = "tiger"
matrixed_sections = MATRIX_ALL
/datum/sprite_accessory/tails_animated/mam_tails_animated/tiger
name = "Tiger"
icon_state = "tiger"
matrixed_sections = MATRIX_ALL
/datum/sprite_accessory/tails/mam_tails/wolf
name = "Wolf"
icon_state = "wolf"
matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails_animated/mam_tails_animated/wolf
name = "Wolf"
icon_state = "wolf"
matrixed_sections = MATRIX_RED
+51 -20
View File
@@ -175,6 +175,7 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
//Called when cloning, copies some vars that should be kept
/datum/species/proc/copy_properties_from(datum/species/old_species)
mutant_bodyparts["limbs_id"] = old_species.mutant_bodyparts["limbs_id"]
return
//Please override this locally if you want to define when what species qualifies for what rank if human authority is enforced.
@@ -746,14 +747,7 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
)
var/g = (H.dna.features["body_model"] == FEMALE) ? "f" : "m"
var/list/colorlist = list()
var/husk = HAS_TRAIT(H, TRAIT_HUSK)
colorlist += husk ? ReadRGB("#a3a3a3") : ReadRGB("[H.dna.features["mcolor"]]00")
colorlist += husk ? ReadRGB("#a3a3a3") : ReadRGB("[H.dna.features["mcolor2"]]00")
colorlist += husk ? ReadRGB("#a3a3a3") : ReadRGB("[H.dna.features["mcolor3"]]00")
colorlist += husk ? list(0, 0, 0) : list(0, 0, 0, hair_alpha)
for(var/index in 1 to colorlist.len)
colorlist[index] /= 255
for(var/layer in relevant_layers)
var/list/standing = list()
@@ -775,6 +769,22 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
if(S.center)
accessory_overlay = center_image(accessory_overlay, S.dimension_x, S.dimension_y)
var/advanced_color_system = (H.dna.features["color_scheme"] == ADVANCED_CHARACTER_COLORING)
var/mutant_string = S.mutant_part_string
if(mutant_string == "tailwag") //wagging tails should be coloured the same way as your tail
mutant_string = "tail"
var/primary_string = advanced_color_system ? "[mutant_string]_primary" : "mcolor"
var/secondary_string = advanced_color_system ? "[mutant_string]_secondary" : "mcolor2"
var/tertiary_string = advanced_color_system ? "[mutant_string]_tertiary" : "mcolor3"
//failsafe: if there's no value for any of these, set it to white
if(!H.dna.features[primary_string])
H.dna.features[primary_string] = advanced_color_system ? H.dna.features["mcolor"] : "FFFFFF"
if(!H.dna.features[secondary_string])
H.dna.features[secondary_string] = advanced_color_system ? H.dna.features["mcolor2"] : "FFFFFF"
if(!H.dna.features[tertiary_string])
H.dna.features[tertiary_string] = advanced_color_system ? H.dna.features["mcolor3"] : "FFFFFF"
if(!husk)
if(!forced_colour)
switch(S.color_src)
@@ -784,20 +794,36 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
if(fixed_mut_color)
accessory_overlay.color = "#[fixed_mut_color]"
else
accessory_overlay.color = "#[H.dna.features["mcolor"]]"
accessory_overlay.color = "#[H.dna.features[primary_string]]"
if(MUTCOLORS2)
if(fixed_mut_color2)
accessory_overlay.color = "#[fixed_mut_color2]"
else
accessory_overlay.color = "#[H.dna.features["mcolor2"]]"
accessory_overlay.color = "#[H.dna.features[primary_string]]"
if(MUTCOLORS3)
if(fixed_mut_color3)
accessory_overlay.color = "#[fixed_mut_color3]"
else
accessory_overlay.color = "#[H.dna.features["mcolor3"]]"
accessory_overlay.color = "#[H.dna.features[primary_string]]"
if(MATRIXED)
accessory_overlay.color = list(colorlist)
var/list/accessory_colorlist = list()
if(S.matrixed_sections == MATRIX_RED || S.matrixed_sections == MATRIX_RED_GREEN || S.matrixed_sections == MATRIX_RED_BLUE || S.matrixed_sections == MATRIX_ALL)
accessory_colorlist += husk ? ReadRGB("#a3a3a3") : ReadRGB("[H.dna.features[primary_string]]00")
else
accessory_colorlist += husk ? ReadRGB("#a3a3a3") : ReadRGB("00000000")
if(S.matrixed_sections == MATRIX_GREEN || S.matrixed_sections == MATRIX_RED_GREEN || S.matrixed_sections == MATRIX_GREEN_BLUE || S.matrixed_sections == MATRIX_ALL)
accessory_colorlist += husk ? ReadRGB("#a3a3a3") : ReadRGB("[H.dna.features[secondary_string]]00")
else
accessory_colorlist += husk ? ReadRGB("#a3a3a3") : ReadRGB("00000000")
if(S.matrixed_sections == MATRIX_BLUE || S.matrixed_sections == MATRIX_RED_BLUE || S.matrixed_sections == MATRIX_GREEN_BLUE || S.matrixed_sections == MATRIX_ALL)
accessory_colorlist += husk ? ReadRGB("#a3a3a3") : ReadRGB("[H.dna.features[tertiary_string]]00")
else
accessory_colorlist += husk ? ReadRGB("#a3a3a3") : ReadRGB("00000000")
accessory_colorlist += husk ? list(0, 0, 0) : list(0, 0, 0, hair_alpha)
for(var/index in 1 to accessory_colorlist.len)
accessory_colorlist[index] /= 255
accessory_overlay.color = list(accessory_colorlist)
if(HAIR)
if(hair_color == "mutcolor")
@@ -820,7 +846,14 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
if(bodypart == "tail")
accessory_overlay.icon_state = "m_tail_husk_[layertext]"
if(S.color_src == MATRIXED)
accessory_overlay.color = colorlist
var/list/accessory_colorlist = list()
accessory_colorlist += husk ? ReadRGB("#a3a3a3") : ReadRGB("[H.dna.features[primary_string]]00")
accessory_colorlist += husk ? ReadRGB("#a3a3a3") : ReadRGB("[H.dna.features[secondary_string]]00")
accessory_colorlist += husk ? ReadRGB("#a3a3a3") : ReadRGB("[H.dna.features[tertiary_string]]00")
accessory_colorlist += husk ? list(0, 0, 0) : list(0, 0, 0, hair_alpha)
for(var/index in 1 to accessory_colorlist.len)
accessory_colorlist[index] /= 255
accessory_overlay.color = list(accessory_colorlist)
if(OFFSET_MUTPARTS in H.dna.species.offset_features)
accessory_overlay.pixel_x += H.dna.species.offset_features[OFFSET_MUTPARTS][1]
@@ -837,23 +870,22 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
if(S.center)
extra_accessory_overlay = center_image(extra_accessory_overlay, S.dimension_x, S.dimension_y)
switch(S.extra_color_src) //change the color of the extra overlay
if(MUTCOLORS)
if(fixed_mut_color)
extra_accessory_overlay.color = "#[fixed_mut_color]"
else
extra_accessory_overlay.color = "#[H.dna.features["mcolor"]]"
extra_accessory_overlay.color = "#[H.dna.features[secondary_string]]"
if(MUTCOLORS2)
if(fixed_mut_color2)
extra_accessory_overlay.color = "#[fixed_mut_color2]"
else
extra_accessory_overlay.color = "#[H.dna.features["mcolor2"]]"
extra_accessory_overlay.color = "#[H.dna.features[secondary_string]]"
if(MUTCOLORS3)
if(fixed_mut_color3)
extra_accessory_overlay.color = "#[fixed_mut_color3]"
else
extra_accessory_overlay.color = "#[H.dna.features["mcolor3"]]"
extra_accessory_overlay.color = "#[H.dna.features[secondary_string]]"
if(HAIR)
if(hair_color == "mutcolor")
extra_accessory_overlay.color = "#[H.dna.features["mcolor3"]]"
@@ -889,17 +921,17 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
if(fixed_mut_color)
extra2_accessory_overlay.color = "#[fixed_mut_color]"
else
extra2_accessory_overlay.color = "#[H.dna.features["mcolor"]]"
extra2_accessory_overlay.color = "#[H.dna.features[tertiary_string]]"
if(MUTCOLORS2)
if(fixed_mut_color2)
extra2_accessory_overlay.color = "#[fixed_mut_color2]"
else
extra2_accessory_overlay.color = "#[H.dna.features["mcolor2"]]"
extra2_accessory_overlay.color = "#[H.dna.features[tertiary_string]]"
if(MUTCOLORS3)
if(fixed_mut_color3)
extra2_accessory_overlay.color = "#[fixed_mut_color3]"
else
extra2_accessory_overlay.color = "#[H.dna.features["mcolor3"]]"
extra2_accessory_overlay.color = "#[H.dna.features[tertiary_string]]"
if(HAIR)
if(hair_color == "mutcolor3")
extra2_accessory_overlay.color = "#[H.dna.features["mcolor"]]"
@@ -916,7 +948,6 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
standing += extra2_accessory_overlay
H.overlays_standing[layernum] = standing
H.apply_overlay(BODY_BEHIND_LAYER)
@@ -669,6 +669,7 @@ use_mob_overlay_icon: if FALSE, it will always use the default_icon_file even if
//produces a key based on the human's limbs
/mob/living/carbon/human/generate_icon_render_key()
. = "[dna.species.mutant_bodyparts["limbs_id"]]"
. += "[dna.features["color_scheme"]]"
if(dna.check_mutation(HULK))
. += "-coloured-hulk"
@@ -708,6 +709,11 @@ use_mob_overlay_icon: if FALSE, it will always use the default_icon_file even if
. += "-[BP.dmg_overlay_type]"
if(BP.body_markings)
. += "-[BP.body_markings]"
if(length(BP.markings_color) && length(BP.markings_color[1]))
for(var/color in BP.markings_color[1])
. += "-[color]"
if(BP.icon)
. += "-[BP.icon]"
else
. += "-no_marking"
+13 -2
View File
@@ -496,8 +496,19 @@ It's fairly easy to fix if dealing with single letters but not so much with comp
colored_message = "<font color=[color]>[message]</font>"
else
colored_message = "<font color='[color]'>[message]</font>"
var/list/timestamped_message = list("[LAZYLEN(logging[smessage_type]) + 1]\[[TIME_STAMP("hh:mm:ss", FALSE)]\] [key_name(src)] [loc_name(src)]" = colored_message)
//This makes readability a bit better for admins.
switch(message_type)
if(LOG_WHISPER)
colored_message = "(WHISPER) [colored_message]"
if(LOG_OOC)
colored_message = "(OOC) [colored_message]"
if(LOG_ASAY)
colored_message = "(ASAY) [colored_message]"
if(LOG_EMOTE)
colored_message = "(EMOTE) [colored_message]"
var/list/timestamped_message = list("\[[TIME_STAMP("hh:mm:ss", FALSE)]\] [key_name(src)] [loc_name(src)]" = colored_message)
logging[smessage_type] += timestamped_message
+2 -2
View File
@@ -1373,9 +1373,9 @@
// next: take from or charge to the cell, depending on how much is left
if(cell && !shorted)
if(cur_excess > 0)
var/charging_cell = min(cur_excess, cell.maxcharge * GLOB.CHARGELEVEL)
var/charging_cell = min(min(cur_excess*GLOB.CELLRATE, cell.maxcharge * GLOB.CHARGELEVEL), cell.maxcharge - cell.charge)
cell.give(charging_cell)
add_load(charging_cell)
add_load(charging_cell/GLOB.CELLRATE)
lastused_total += charging_cell
longtermpower = min(10,longtermpower + 1)
if(chargemode && !charging)
+2 -2
View File
@@ -1,7 +1,7 @@
// stored_power += (pulse_strength-RAD_COLLECTOR_EFFICIENCY)*RAD_COLLECTOR_COEFFICIENT
#define RAD_COLLECTOR_EFFICIENCY 80 // radiation needs to be over this amount to get power
#define RAD_COLLECTOR_COEFFICIENT 100
#define RAD_COLLECTOR_STORED_OUT 0.04 // (this*100)% of stored power outputted per tick. Doesn't actualy change output total, lower numbers just means collectors output for longer in absence of a source
#define RAD_COLLECTOR_COEFFICIENT 125
#define RAD_COLLECTOR_STORED_OUT 0.05 // (this*100)% of stored power outputted per tick. Doesn't actualy change output total, lower numbers just means collectors output for longer in absence of a source
#define RAD_COLLECTOR_MINING_CONVERSION_RATE 0.00001 //This is gonna need a lot of tweaking to get right. This is the number used to calculate the conversion of watts to research points per process()
#define RAD_COLLECTOR_OUTPUT min(stored_power, (stored_power*RAD_COLLECTOR_STORED_OUT)+1000) //Produces at least 1000 watts if it has more than that stored
@@ -35,8 +35,18 @@ All effects don't start immediately, but rather get worse over time; the rate is
91-100: Dangerously toxic - swift death
*/
/datum/reagent/consumable/ethanol/on_mob_add(mob/living/L, amount)
. = ..()
if(!iscarbon(L))
return
var/mob/living/carbon/C = L
if(HAS_TRAIT(C, TRAIT_ROBOTIC_ORGANISM))
C.reagents.remove_reagent(type, amount, FALSE)
/datum/reagent/consumable/ethanol/on_mob_life(mob/living/carbon/C)
if(HAS_TRAIT(C, TRAIT_NO_ALCOHOL))
if(HAS_TRAIT(C, TRAIT_TOXIC_ALCOHOL))
C.adjustToxLoss((boozepwr/25)*REM,forced = TRUE)
else if(C.drunkenness < volume * boozepwr * ALCOHOL_THRESHOLD_MODIFIER)
var/booze_power = boozepwr
@@ -639,7 +639,11 @@
//body marking memes
var/list/colorlist = list()
//var/advanced_color_system = (H.dna.features["color_scheme"] == ADVANCED_CHARACTER_COLORING)
colorlist.Cut()
//colorlist += advanced_color_system ? ReadRGB("[H.dna.features["mam_body_markings_primary"]]00") : ReadRGB("[H.dna.features["mcolor"]]00")
//colorlist += advanced_color_system ? ReadRGB("[H.dna.features["mam_body_markings_secondary"]]00") : ReadRGB("[H.dna.features["mcolor2"]]00")
//colorlist += advanced_color_system ? ReadRGB("[H.dna.features["mam_body_markings_tertiary"]]00") : ReadRGB("[H.dna.features["mcolor3"]]00")
colorlist += ReadRGB("[H.dna.features["mcolor"]]00")
colorlist += ReadRGB("[H.dna.features["mcolor2"]]00")
colorlist += ReadRGB("[H.dna.features["mcolor3"]]00")
+8 -8
View File
@@ -71,21 +71,21 @@
// Generate page html
var/html = SStgui.basehtml
html = replacetextEx(html, "\[tgui:windowId]", id)
// Process inline assets
var/inline_styles = ""
var/inline_scripts = ""
// Inject inline assets
var/inline_assets_str = ""
for(var/datum/asset/asset in inline_assets)
var/mappings = asset.get_url_mappings()
for(var/name in mappings)
var/url = mappings[name]
// Not urlencoding since asset strings are considered safe
// Not encoding since asset strings are considered safe
if(copytext(name, -4) == ".css")
inline_styles += "<link rel=\"stylesheet\" type=\"text/css\" href=\"[url]\">\n"
inline_assets_str += "Byond.loadCss('[url]', true);\n"
else if(copytext(name, -3) == ".js")
inline_scripts += "<script type=\"text/javascript\" defer src=\"[url]\"></script>\n"
inline_assets_str += "Byond.loadJs('[url]', true);\n"
asset.send(client)
html = replacetextEx(html, "<!-- tgui:styles -->\n", inline_styles)
html = replacetextEx(html, "<!-- tgui:scripts -->\n", inline_scripts)
if(length(inline_assets_str))
inline_assets_str = "<script>\n" + inline_assets_str + "</script>\n"
html = replacetextEx(html, "<!-- tgui:assets -->\n", inline_assets_str)
// Inject custom HTML
html = replacetextEx(html, "<!-- tgui:html -->\n", inline_html)
// Open the window
@@ -0,0 +1,5 @@
author: "timothyteakettle"
delete-after: True
changes:
- bugfix: "a tonne of fixes to colourisation of parts, too many to name, including some sprite fixes"
- rscadd: "things now have their own individual primary/(secondary)/(tertiary) colours as required, and these can be modified by you"
@@ -0,0 +1,6 @@
author: "uomo91"
delete-after: True
changes:
- bugfix: "Fixed \"Show All\" tab in player panel logs being broken."
- bugfix: "Whispers, OOC, and various other things display differently in logs, visually distinguishing them from say logs."
- refactor: "Player panel logs will now show all logs chronologically, so you'll see commingled say and attack logs if you're on the \"Show All\" tab, etc..."
@@ -0,0 +1,4 @@
author: "Arturlang"
delete-after: True
changes:
- bugfix: "Hopefully fixes whitescreen issues for TGUI UI's by giving assets more time to get to the client"
@@ -0,0 +1,5 @@
author: "DeltaFire15"
delete-after: True
changes:
- bugfix: "Recharging APCs no longer use 0.2% of the power they should be using."
- bugfix: "APCs no longer always use as much power as they can for their cell, even if it is full."
@@ -0,0 +1,5 @@
author: "Acer202, with minor help from The0bserver"
delete-after: True
changes:
- rscadd: "After internal deliberation, CentCom has decided to run a limited reinstatement of public mining shuttles for use in more tried and true station classes. CentCom would like to remind you that this privilege is easily revoked, and that abuse may result in immediate detonation."
- rscadd: "Restores the mining shuttle on Pubby, Box, Delta, Meta, and Lambda Station."
@@ -0,0 +1,4 @@
author: "Putnam3145"
delete-after: True
changes:
- balance: "Spontaneous brain trauma now requires minimum 5 players"
@@ -0,0 +1,4 @@
author: "Putnam3145"
delete-after: True
changes:
- tweak: "gear harness no longer magically covers up the body mechanically despite covering up nothing visually"
@@ -0,0 +1,4 @@
author: "Putnam3145"
delete-after: True
changes:
- bugfix: "Dynamic vote no longer shows the none-storyteller."
@@ -0,0 +1,6 @@
author: "Putnam3145"
delete-after: True
changes:
- balance: "Rad collectors now get 1.25x as much energy from radiation"
- balance: "Rad collectors now put out 1.25x as much stored energy per tick"
- balance: "Above two rad collector changes give a total 56.25% power output increase"
@@ -0,0 +1,5 @@
author: "DeltaFire15"
delete-after: True
changes:
- balance: "Robotpeople are now fully immune to the effects of alcohol (drunkness etc.)"
- tweak: "Renames the alcohol intolerance trait in the code to make what it does more clear."
Binary file not shown.

Before

Width:  |  Height:  |  Size: 91 KiB

After

Width:  |  Height:  |  Size: 91 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

After

Width:  |  Height:  |  Size: 34 KiB

+20
View File
@@ -0,0 +1,20 @@
#!/usr/bin/env node
const {existsSync} = require(`fs`);
const {createRequire, createRequireFromPath} = require(`module`);
const {resolve, dirname} = require(`path`);
const relPnpApiPath = "../../../../.pnp.js";
const absPnpApiPath = resolve(__dirname, relPnpApiPath);
const absRequire = (createRequire || createRequireFromPath)(absPnpApiPath);
if (existsSync(absPnpApiPath)) {
if (!process.versions.pnp) {
// Setup the environment to be able to require eslint/bin/eslint.js
require(absPnpApiPath).setup();
}
}
// Defer to the real eslint/bin/eslint.js your application uses
module.exports = absRequire(`eslint/bin/eslint.js`);
+6
View File
@@ -0,0 +1,6 @@
{
"name": "eslint",
"version": "7.4.0-pnpify",
"main": "./lib/api.js",
"type": "commonjs"
}
+5
View File
@@ -0,0 +1,5 @@
# This file is automatically generated by PnPify.
# Manual changes will be lost!
integrations:
- vscode
+11 -1
View File
@@ -97,11 +97,21 @@ interface ByondType {
winset(id: string, propName: string, propValue: any): void;
/**
* Parses BYOND JSON
* Parses BYOND JSON.
*
* Uses a special encoding to preverse Infinity and NaN.
*/
parseJson(text: string): any;
/**
* Loads a stylesheet into the document.
*/
loadCss(url: string): void;
/**
* Loads a script into the document.
*/
loadJs(url: string): void;
}
declare const Byond: ByondType;
@@ -30,7 +30,6 @@
@include meta.load-css('~tgui/styles/components/Dimmer.scss');
@include meta.load-css('~tgui/styles/components/Divider.scss');
@include meta.load-css('~tgui/styles/components/Dropdown.scss');
@include meta.load-css('~tgui/styles/components/FatalError.scss');
@include meta.load-css('~tgui/styles/components/Flex.scss');
@include meta.load-css('~tgui/styles/components/Input.scss');
@include meta.load-css('~tgui/styles/components/Knob.scss');
+5 -61
View File
@@ -4,68 +4,9 @@
* @license MIT
*/
import { loadCSS as fgLoadCss } from 'fg-loadcss';
import { createLogger } from './logging';
const logger = createLogger('assets');
const EXCLUDED_PATTERNS = [/v4shim/i];
const RETRY_ATTEMPTS = 5;
const RETRY_INTERVAL = 3000;
const loadedStyleSheetByUrl = {};
const loadedMappings = {};
export const loadStyleSheet = (url, attempt = 1) => {
if (loadedStyleSheetByUrl[url]) {
return;
}
loadedStyleSheetByUrl[url] = true;
logger.log(`loading stylesheet '${url}'`);
/** @type {HTMLLinkElement} */
let node = fgLoadCss(url);
node.addEventListener('load', () => {
if (!isStyleSheetReallyLoaded(node, url)) {
node.parentNode.removeChild(node);
node = null;
loadedStyleSheetByUrl[url] = null;
if (attempt >= RETRY_ATTEMPTS) {
logger.error(`Error: Failed to load the stylesheet `
+ `'${url}' after ${RETRY_ATTEMPTS} attempts.\nIt was either `
+ `not found, or you're trying to load an empty stylesheet `
+ `that has no CSS rules in it.`);
return;
}
setTimeout(() => loadStyleSheet(url, attempt + 1), RETRY_INTERVAL);
return;
}
});
};
/**
* Checks whether the stylesheet was registered in the DOM
* and is not empty.
*/
const isStyleSheetReallyLoaded = (node, url) => {
// Method #1 (works on IE10+)
const styleSheet = node.sheet;
if (styleSheet) {
return styleSheet.rules.length > 0;
}
// Method #2
const styleSheets = document.styleSheets;
const len = styleSheets.length;
for (let i = 0; i < len; i++) {
const styleSheet = styleSheets[i];
if (styleSheet.href.includes(url)) {
return styleSheet.rules.length > 0;
}
}
// All methods failed
logger.warn(`Warning: stylesheet '${url}' was not found in the DOM`);
return false;
};
export const resolveAsset = name => (
loadedMappings[name] || name
);
@@ -73,7 +14,7 @@ export const resolveAsset = name => (
export const assetMiddleware = store => next => action => {
const { type, payload } = action;
if (type === 'asset/stylesheet') {
loadStyleSheet(payload);
Byond.loadCss(payload);
return;
}
if (type === 'asset/mappings') {
@@ -86,7 +27,10 @@ export const assetMiddleware = store => next => action => {
const ext = name.split('.').pop();
loadedMappings[name] = url;
if (ext === 'css') {
loadStyleSheet(url);
Byond.loadCss(url);
}
if (ext === 'js') {
Byond.loadJs(url);
}
}
return;
+3
View File
@@ -189,6 +189,9 @@ export const backendMiddleware = store => {
// Resume on incoming update
if (type === 'backend/update' && suspended) {
// Show the payload
logger.log('backend/update', payload);
// Signal renderer that we have resumed
resumeRenderer();
// Setup drag
setupDrag();
+1 -1
View File
@@ -24,7 +24,7 @@ export const debugMiddleware = store => {
if (key.code === KEY_F12) {
store.dispatch(toggleKitchenSink());
}
if (key.ctrl && key.shift && key.code === KEY_BACKSPACE) {
if (key.ctrl && key.alt && key.code === KEY_BACKSPACE) {
// NOTE: We need to call this in a timeout, because we need a clean
// stack in order for this to be a fatal error.
setTimeout(() => {
+1 -2
View File
@@ -4,8 +4,7 @@
"version": "4.2.0",
"dependencies": {
"common": "workspace:*",
"dompurify": "^2.0.11",
"fg-loadcss": "^2.1.0",
"dompurify": "^2.0.12",
"inferno": "^7.4.2",
"inferno-vnode-flags": "^7.4.2",
"marked": "^1.1.0",
@@ -1,97 +0,0 @@
/**
* Copyright (c) 2020 Aleksej Komarov
* SPDX-License-Identifier: MIT
*/
.FatalError {
display: block !important;
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
padding: 12px;
font-size: 12px;
font-family: Consolas, monospace;
color: #ffffff;
background-color: #0000dd;
z-index: 1000;
overflow: hidden;
text-align: center;
}
.FatalError__logo {
display: inline-block;
text-align: left;
font-size: 10px;
line-height: 8px;
position: relative;
margin-top: 12px;
top: 0;
left: 0;
animation:
FatalError__rainbow 2s linear infinite alternate,
FatalError__shadow 4s linear infinite alternate,
FatalError__tfmX 3s infinite alternate,
FatalError__tfmY 4s infinite alternate;
white-space: pre-wrap;
word-break: break-all;
}
.FatalError__header {
margin-top: 12px;
}
.FatalError__stack {
text-align: left;
white-space: pre-wrap;
word-break: break-all;
margin-top: 24px;
margin-bottom: 24px;
}
.FatalError__footer {
margin-bottom: 24px;
}
@keyframes FatalError__rainbow {
0% {
color: #ff0;
}
50% {
color: #0ff;
}
100% {
color: #f0f;
}
}
@keyframes FatalError__shadow {
0% {
left: -2px;
text-shadow: 4px 0 #f0f;
}
50% {
left: 0px;
text-shadow: 0px 0 #0ff;
}
100% {
left: 2px;
text-shadow: -4px 0 #ff0;
}
}
@keyframes FatalError__tfmX {
0% {
left: 15px;
}
100% {
left: -15px;
}
}
@keyframes FatalError__tfmY {
100% {
top: -15px;
}
}
-1
View File
@@ -23,7 +23,6 @@
@include meta.load-css('./components/Dimmer.scss');
@include meta.load-css('./components/Divider.scss');
@include meta.load-css('./components/Dropdown.scss');
@include meta.load-css('./components/FatalError.scss');
@include meta.load-css('./components/Flex.scss');
@include meta.load-css('./components/Input.scss');
@include meta.load-css('./components/Knob.scss');
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+231 -32
View File
@@ -17,9 +17,7 @@ if (window.__windowId__ === '[' + 'tgui:windowId' + ']') {
window.__windowId__ = null;
}
// BYOND API object
window.Byond = (function () {
var Byond = {};
(function () {
// Utility functions
var hasOwn = Object.prototype.hasOwnProperty;
var assign = function (target) {
@@ -33,6 +31,11 @@ window.Byond = (function () {
}
return target;
};
// BYOND API object
// ------------------------------------------------------
var Byond = window.Byond = {};
// Trident engine version
var tridentVersion = (function () {
var groups = navigator.userAgent.match(/Trident\/(\d+).+?;/i);
@@ -170,7 +173,135 @@ window.Byond = (function () {
}
};
return Byond;
// Asset loaders
// ------------------------------------------------------
var RETRY_ATTEMPTS = 5;
var RETRY_INTERVAL = 2000;
var loadedCssByUrl = {};
var loadedJsByUrl = {};
var isStyleSheetLoaded = function (node, url) {
// Method #1 (works on IE10+)
var styleSheet = node.sheet;
if (styleSheet) {
return styleSheet.rules.length > 0;
}
// Method #2
var styleSheets = document.styleSheets;
var len = styleSheets.length;
for (var i = 0; i < len; i++) {
var styleSheet = styleSheets[i];
if (styleSheet.href.indexOf(url) !== -1) {
return styleSheet.rules.length > 0;
}
}
// All methods failed
return false;
};
var onDocumentBodyReady = function (done) {
if (document.body) {
return done();
}
setTimeout(function () {
onDocumentBodyReady(done);
});
};
var getRefNode = function () {
var refs = (document.body || document.getElementsByTagName('head')[0])
.childNodes;
return refs[refs.length - 1];
};
// Based on fg-loadcss package
// See: https://github.com/filamentgroup/loadCSS
Byond.loadCss = function (url, sync, attempt) {
if (loadedCssByUrl[url]) {
return;
}
if (!attempt) {
attempt = 1;
}
loadedCssByUrl[url] = true;
// Inject the stylesheet
var ref = getRefNode();
/** @type {HTMLLinkElement} */
var node = document.createElement('link');
node.type = 'text/css';
node.rel = 'stylesheet';
node.href = url;
// Temporarily set media to something inapplicable
// to ensure it'll fetch without blocking render
if (!sync) {
node.media = 'only x';
}
onDocumentBodyReady(function () {
ref.parentNode.insertBefore(node, ref.nextSibling);
});
// Listen for the load event
node.onload = function () {
node.onload = null;
if (isStyleSheetLoaded(node, url)) {
// Render the stylesheet
node.media = 'all';
return;
}
// Try again
node.parentNode.removeChild(node);
node = null;
loadedCssByUrl[url] = null;
if (attempt >= RETRY_ATTEMPTS) {
throw new Error("Error: Failed to load the stylesheet "
+ "'" + url + "' after " + RETRY_ATTEMPTS + " attempts.\n"
+ "It was either not found, or you're trying to load "
+ "an empty stylesheet that has no CSS rules in it.");
}
setTimeout(function () {
Byond.loadCss(url, sync, attempt + 1);
}, RETRY_INTERVAL);
};
};
Byond.loadJs = function (url, sync, attempt) {
if (loadedJsByUrl[url]) {
return;
}
if (!attempt) {
attempt = 1;
}
loadedJsByUrl[url] = true;
// Inject the stylesheet
var ref = getRefNode();
var node = document.createElement('script');
node.type = 'text/javascript';
if (sync) {
node.defer = true;
}
else {
node.async = true;
}
node.src = url;
onDocumentBodyReady(function () {
ref.parentNode.insertBefore(node, ref.nextSibling);
});
node.onerror = function () {
node.onerror = null;
node.parentNode.removeChild(node);
node = null;
loadedJsByUrl[url] = null;
if (attempt >= RETRY_ATTEMPTS) {
throw new Error("Error: Failed to load the script "
+ "'" + url + "' after " + RETRY_ATTEMPTS + " attempts.");
}
setTimeout(function () {
Byond.loadJs(url, sync, attempt + 1);
}, RETRY_INTERVAL);
};
};
})();
// Global error handling
@@ -190,7 +321,7 @@ window.onerror = function (msg, url, line, col, error) {
var errorRoot = document.getElementById('FatalError');
var errorStack = document.getElementById('FatalError__stack');
if (errorRoot) {
errorRoot.className = 'FatalError';
errorRoot.className = 'FatalError FatalError--visible';
if (errorStack.textContent) {
errorStack.textContent += '\n\n' + stack;
}
@@ -263,15 +394,97 @@ if (!Function.prototype.bind) (function () {
})();
</script>
<!-- Styles -->
<!-- tgui:styles -->
<style>
.FatalError {
display: none;
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
padding: 12px;
font-size: 12px;
font-family: Consolas, monospace;
color: #ffffff;
background-color: #0000dd;
z-index: 1000;
overflow: hidden;
text-align: center;
}
<!-- Scripts -->
<!-- tgui:scripts -->
.FatalError--visible {
display: block !important;
}
.FatalError__logo {
display: inline-block;
text-align: left;
font-size: 10px;
line-height: 12px;
position: relative;
margin: 16px;
top: 0;
left: 0;
animation:
FatalError__rainbow 2s linear infinite alternate,
FatalError__shadow 4s linear infinite alternate,
FatalError__tfmX 3s infinite alternate,
FatalError__tfmY 4s infinite alternate;
white-space: pre;
}
.FatalError__header {
margin-top: 12px;
}
.FatalError__stack {
text-align: left;
white-space: pre-wrap;
word-break: break-all;
margin-top: 24px;
margin-bottom: 24px;
}
.FatalError__footer {
margin-bottom: 24px;
}
@keyframes FatalError__rainbow {
0% { color: #ff0; }
50% { color: #0ff; }
100% { color: #f0f; }
}
@keyframes FatalError__shadow {
0% {
left: -2px;
text-shadow: 4px 0 #f0f;
}
50% {
left: 0px;
text-shadow: 0px 0 #0ff;
}
100% {
left: 2px;
text-shadow: -4px 0 #ff0;
}
}
@keyframes FatalError__tfmX {
0% { left: 15px; }
100% { left: -15px; }
}
@keyframes FatalError__tfmY {
100% { top: -15px; }
}
</style>
</head>
<body>
<!-- Inline assets -->
<!-- tgui:assets -->
<!-- Inline HTML -->
<!-- tgui:html -->
@@ -279,36 +492,22 @@ if (!Function.prototype.bind) (function () {
<div id="react-root"></div>
<!-- Fatal error container -->
<div id="FatalError" style="display: none">
<div id="FatalError" class="FatalError">
<div class="FatalError__logo">
_____ _____ _______ _____
/\ \ /\ \ /::\ \ /\ \
/::\____\ /::\ \ /::::\ \ /::\ \
/::::| | \:::\ \ /::::::\ \ /::::\ \
/:::::| | \:::\ \ /::::::::\ \ /::::::\ \
/::::::| | \:::\ \ /:::/~~\:::\ \ /:::/\:::\ \
/:::/|::| | \:::\ \ /:::/ \:::\ \ /:::/__\:::\ \
/:::/ |::| | /::::\ \ /:::/ / \:::\ \ \:::\ \:::\ \
/:::/ |::| | _____ /::::::\ \ /:::/____/ \:::\____\ ___\:::\ \:::\ \
/:::/ |::| |/\ \ /:::/\:::\ \|:::| | |:::| |/\ \:::\ \:::\ \
/:: / |::| /::\____\/:::/ \:::\____\:::|____| |:::| /::\ \:::\ \:::\____\
\::/ /|::| /:::/ /:::/ \::/ /\:::\ \ /:::/ /\:::\ \:::\ \::/ /
\/____/ |::| /:::/ /:::/ / \/____/ \:::\ \ /:::/ / \:::\ \:::\ \/____/
|::|/:::/ /:::/ / \:::\ /:::/ / \:::\ \:::\ \
|::::::/ /:::/ / \:::\__/:::/ / \:::\ \:::\____\
|:::::/ /\::/ / \::::::::/ / \:::\ /:::/ /
|::::/ / \/____/ \::::::/ / \:::\/:::/ /
/:::/ / \::::/ / \::::::/ /
/:::/ / \::/____/ \::::/ /
\::/ / \::/ /
\/____/ \/____/
ooooo ooo . .oooooo. .oooooo..o
`888b. `8' .o8 d8P' `Y8b d8P' `Y8
8 `88b. 8 .o888oo 888 888 Y88bo.
8 `88b. 8 888 888 888 `"Y8888o.
8 `88b.8 888 888 888 `"Y88b
8 `888 888 . `88b d88' oo .d8P
o8o `8 "888" `Y8bood8P' 8""88888P'
</div>
<marquee class="FatalError__header">
A fatal exception has occurred at 002B:C562F1B7 in TGUI.
The current application will be terminated.
Please remain calm. Get to the nearest NTNet workstation
and send the copy of the following stack trace to:
www.github.com/tgstation/tgstation. Thank you for your cooperation.
www.github.com/Citadel-Station-13/Citadel-Station-13/issues. Thank you for your cooperation.
</marquee>
<div id="FatalError__stack" class="FatalError__stack"></div>
<div class="FatalError__footer">
+5 -13
View File
@@ -3062,10 +3062,10 @@ __metadata:
languageName: node
linkType: hard
"dompurify@npm:^2.0.11":
version: 2.0.12
resolution: "dompurify@npm:2.0.12"
checksum: 72fe758306be02d95c7ac51cecaf9d887dea6291cd83012b1c251d21912545c18d6ccc7140b84da2278a6910517cd1e996258991c7e3dda9b6da34f0b6040b91
"dompurify@npm:^2.0.12":
version: 2.2.2
resolution: "dompurify@npm:2.2.2"
checksum: eab7b8763c56256bb4fb009e59b814f750fe0a4be40f996f037f136a40dbe8107820989c7b548b92263076fce7023ee31c58a11ad479cba16b4626b8d91559f1
languageName: node
linkType: hard
@@ -3637,13 +3637,6 @@ __metadata:
languageName: node
linkType: hard
"fg-loadcss@npm:^2.1.0":
version: 2.1.0
resolution: "fg-loadcss@npm:2.1.0"
checksum: 5672a437bd51ba418ffa3c304394a4f85d6b53ae2bbcec2ef54d6498642af4e2c11a9902a55bf95cd96e7e787483c2087f56569484a3120a4228d880ffec6309
languageName: node
linkType: hard
"figgy-pudding@npm:^3.5.1":
version: 3.5.2
resolution: "figgy-pudding@npm:3.5.2"
@@ -8155,8 +8148,7 @@ fsevents@~2.1.2:
resolution: "tgui@workspace:packages/tgui"
dependencies:
common: "workspace:*"
dompurify: ^2.0.11
fg-loadcss: ^2.1.0
dompurify: ^2.0.12
inferno: ^7.4.2
inferno-vnode-flags: ^7.4.2
marked: ^1.1.0
+1 -1
View File
@@ -1,3 +1,3 @@
pygit2==1.0.1
bidict==0.13.1
Pillow==7.0.0
Pillow==7.1.0