Merge remote-tracking branch 'refs/remotes/Citadel-Station-13/master' into iv-dripper-punctures
@@ -1,4 +1,4 @@
|
||||
[*]
|
||||
insert_final_newline = false
|
||||
insert_final_newline = true
|
||||
indent_style = tab
|
||||
indent_size = 4
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
FROM tgstation/byond:512.1453 as base
|
||||
FROM tgstation/byond:512.1463 as base
|
||||
|
||||
FROM base as build_base
|
||||
|
||||
@@ -25,7 +25,7 @@ COPY dependencies.sh .
|
||||
RUN /bin/bash -c "source dependencies.sh \
|
||||
&& git fetch --depth 1 origin \$RUST_G_VERSION" \
|
||||
&& git checkout FETCH_HEAD \
|
||||
&& cargo build --release
|
||||
&& ~/.cargo/bin/cargo build --release
|
||||
|
||||
FROM build_base as bsql
|
||||
|
||||
@@ -87,4 +87,4 @@ RUN ln -s /tgstation/libBSQL.so /root/.byond/bin/libBSQL.so
|
||||
|
||||
VOLUME [ "/tgstation/config", "/tgstation/data" ]
|
||||
|
||||
ENTRYPOINT [ "DreamDaemon", "tgstation.dmb", "-port", "1337", "-trusted", "-close", "-verbose" ]
|
||||
ENTRYPOINT [ "DreamDaemon", "tgstation.dmb", "-port", "1337", "-trusted", "-close", "-verbose" ]
|
||||
|
||||
@@ -458,4 +458,4 @@ b
|
||||
b
|
||||
b
|
||||
a
|
||||
"}
|
||||
"}
|
||||
|
||||
@@ -87,6 +87,7 @@
|
||||
/obj/item/organ/alien/plasmavessel/small,
|
||||
/turf/open/floor/plating/airless,
|
||||
/area/ruin/unpowered)
|
||||
|
||||
(1,1,1) = {"
|
||||
a
|
||||
a
|
||||
|
||||
@@ -166,9 +166,6 @@
|
||||
/obj/effect/turf_decal/tile/bar{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plasteel{
|
||||
initial_gas_mix = "TEMP=2.7"
|
||||
},
|
||||
/turf/open/floor/plating/airless{
|
||||
icon_state = "platingdmg2"
|
||||
},
|
||||
|
||||
@@ -2718,7 +2718,6 @@
|
||||
/area/awaymission/snowdin/cave/cavern)
|
||||
"gg" = (
|
||||
/obj/machinery/atmospherics/components/unary/outlet_injector/on,
|
||||
/turf/open/floor/plating/asteroid/snow/ice,
|
||||
/turf/open/floor/plating/snowed/cavern,
|
||||
/area/awaymission/snowdin/post/cavern2)
|
||||
"gh" = (
|
||||
@@ -2905,11 +2904,6 @@
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/awaymission/snowdin/post/gateway)
|
||||
"gx" = (
|
||||
/obj/structure/barricade/wooden/snowed,
|
||||
/turf/open/floor/plating/asteroid/snow/ice,
|
||||
/turf/open/floor/plating/snowed/cavern,
|
||||
/area/awaymission/snowdin/cave/cavern)
|
||||
"gy" = (
|
||||
/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
|
||||
piping_layer = 3;
|
||||
@@ -8627,10 +8621,6 @@
|
||||
},
|
||||
/turf/open/floor/plasteel/dark/snowdin,
|
||||
/area/awaymission/snowdin/outside)
|
||||
"sT" = (
|
||||
/turf/open/floor/plating/snowed/smoothed,
|
||||
/turf/open/floor/plating/snowed,
|
||||
/area/awaymission/snowdin/outside)
|
||||
"sU" = (
|
||||
/obj/effect/turf_decal/weather/snow,
|
||||
/obj/effect/turf_decal/stripes/white/line{
|
||||
@@ -11504,10 +11494,6 @@
|
||||
},
|
||||
/turf/open/floor/plating/snowed,
|
||||
/area/awaymission/snowdin/outside)
|
||||
"AD" = (
|
||||
/turf/open/floor/plating,
|
||||
/turf/open/floor/plating/snowed,
|
||||
/area/awaymission/snowdin/outside)
|
||||
"AE" = (
|
||||
/obj/item/pen,
|
||||
/turf/open/floor/plating{
|
||||
@@ -12164,10 +12150,6 @@
|
||||
},
|
||||
/turf/open/floor/plating/asteroid/snow,
|
||||
/area/awaymission/snowdin/outside)
|
||||
"Cx" = (
|
||||
/turf/open/floor/plating/asteroid/snow/ice,
|
||||
/turf/open/floor/plating/snowed/cavern,
|
||||
/area/awaymission/snowdin/cave/cavern)
|
||||
"Cy" = (
|
||||
/obj/machinery/light/small{
|
||||
brightness = 3;
|
||||
@@ -24303,7 +24285,7 @@ am
|
||||
af
|
||||
sx
|
||||
sJ
|
||||
sT
|
||||
dX
|
||||
te
|
||||
te
|
||||
te
|
||||
@@ -24389,7 +24371,7 @@ af
|
||||
af
|
||||
af
|
||||
dX
|
||||
sT
|
||||
dX
|
||||
te
|
||||
te
|
||||
te
|
||||
@@ -24560,7 +24542,7 @@ af
|
||||
am
|
||||
sx
|
||||
sK
|
||||
sT
|
||||
dX
|
||||
te
|
||||
te
|
||||
te
|
||||
@@ -24646,7 +24628,7 @@ af
|
||||
af
|
||||
af
|
||||
dX
|
||||
sT
|
||||
dX
|
||||
te
|
||||
te
|
||||
te
|
||||
@@ -24817,7 +24799,7 @@ ak
|
||||
af
|
||||
sx
|
||||
sJ
|
||||
sT
|
||||
dX
|
||||
te
|
||||
te
|
||||
te
|
||||
@@ -24852,7 +24834,7 @@ dX
|
||||
dX
|
||||
dX
|
||||
dX
|
||||
sT
|
||||
dX
|
||||
te
|
||||
te
|
||||
te
|
||||
@@ -24903,7 +24885,7 @@ dX
|
||||
dX
|
||||
dX
|
||||
dX
|
||||
sT
|
||||
dX
|
||||
te
|
||||
te
|
||||
te
|
||||
@@ -25074,7 +25056,7 @@ af
|
||||
fq
|
||||
sx
|
||||
sK
|
||||
sT
|
||||
dX
|
||||
te
|
||||
te
|
||||
te
|
||||
@@ -25160,7 +25142,7 @@ af
|
||||
af
|
||||
af
|
||||
dX
|
||||
sT
|
||||
dX
|
||||
te
|
||||
te
|
||||
te
|
||||
@@ -25331,7 +25313,7 @@ af
|
||||
sf
|
||||
sx
|
||||
sJ
|
||||
sT
|
||||
dX
|
||||
te
|
||||
te
|
||||
te
|
||||
@@ -25417,7 +25399,7 @@ af
|
||||
af
|
||||
af
|
||||
dX
|
||||
sT
|
||||
dX
|
||||
te
|
||||
te
|
||||
te
|
||||
@@ -26715,7 +26697,7 @@ zK
|
||||
oa
|
||||
te
|
||||
Au
|
||||
AD
|
||||
te
|
||||
yW
|
||||
af
|
||||
ag
|
||||
@@ -60052,8 +60034,8 @@ qi
|
||||
qi
|
||||
qi
|
||||
qi
|
||||
gx
|
||||
gx
|
||||
tR
|
||||
tR
|
||||
oZ
|
||||
oZ
|
||||
oZ
|
||||
@@ -61188,7 +61170,7 @@ qi
|
||||
oZ
|
||||
oZ
|
||||
oZ
|
||||
Cx
|
||||
qi
|
||||
qi
|
||||
oZ
|
||||
oZ
|
||||
@@ -64271,7 +64253,7 @@ sY
|
||||
oZ
|
||||
oZ
|
||||
sY
|
||||
Cx
|
||||
qi
|
||||
oZ
|
||||
oZ
|
||||
sY
|
||||
@@ -64528,7 +64510,7 @@ oZ
|
||||
oY
|
||||
oZ
|
||||
oZ
|
||||
Cx
|
||||
qi
|
||||
oZ
|
||||
oZ
|
||||
oZ
|
||||
|
||||
@@ -245,24 +245,10 @@
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/awaymission/research/interior/engineering)
|
||||
"aS" = (
|
||||
/turf/open/floor/plasteel{
|
||||
icon_state = "damaged4"
|
||||
},
|
||||
/turf/closed/wall/mineral/plastitanium,
|
||||
/area/awaymission/research/interior/engineering)
|
||||
"aT" = (
|
||||
/mob/living/simple_animal/hostile/syndicate/melee/sword,
|
||||
/turf/open/floor/plating,
|
||||
/area/awaymission/research/interior/engineering)
|
||||
"aU" = (
|
||||
/turf/open/floor/plasteel{
|
||||
icon_state = "damaged1"
|
||||
},
|
||||
/turf/closed/wall/mineral/plastitanium{
|
||||
dir = 4
|
||||
},
|
||||
/area/awaymission/research/interior/engineering)
|
||||
"aV" = (
|
||||
/obj/item/stack/sheet/plasteel,
|
||||
/obj/effect/turf_decal/tile/yellow{
|
||||
@@ -340,12 +326,6 @@
|
||||
icon_state = "damaged4"
|
||||
},
|
||||
/area/awaymission/research/interior/engineering)
|
||||
"bc" = (
|
||||
/turf/open/floor/plasteel{
|
||||
icon_state = "damaged5"
|
||||
},
|
||||
/turf/closed/wall/mineral/plastitanium,
|
||||
/area/awaymission/research/interior/engineering)
|
||||
"bd" = (
|
||||
/turf/open/floor/plasteel{
|
||||
icon_state = "damaged3"
|
||||
@@ -43716,7 +43696,7 @@ al
|
||||
al
|
||||
al
|
||||
al
|
||||
aS
|
||||
al
|
||||
bb
|
||||
bo
|
||||
bG
|
||||
@@ -43974,7 +43954,7 @@ ap
|
||||
an
|
||||
aJ
|
||||
nf
|
||||
bc
|
||||
al
|
||||
bp
|
||||
bH
|
||||
ar
|
||||
@@ -45001,7 +44981,7 @@ al
|
||||
al
|
||||
al
|
||||
al
|
||||
aU
|
||||
al
|
||||
bg
|
||||
bt
|
||||
bL
|
||||
|
||||
@@ -7539,7 +7539,6 @@
|
||||
/area/awaymission/snowdin/cave/cavern)
|
||||
"qj" = (
|
||||
/obj/machinery/atmospherics/components/unary/outlet_injector/on,
|
||||
/turf/open/floor/plating/asteroid/snow/ice,
|
||||
/turf/open/floor/plating/snowed/cavern,
|
||||
/area/awaymission/snowdin/post/cavern2)
|
||||
"qk" = (
|
||||
@@ -8686,10 +8685,6 @@
|
||||
},
|
||||
/turf/open/floor/plasteel/dark/snowdin,
|
||||
/area/awaymission/snowdin/outside)
|
||||
"sT" = (
|
||||
/turf/open/floor/plating/snowed/smoothed,
|
||||
/turf/open/floor/plating/snowed,
|
||||
/area/awaymission/snowdin/outside)
|
||||
"sU" = (
|
||||
/obj/effect/turf_decal/weather/snow,
|
||||
/obj/effect/turf_decal/stripes/white/line{
|
||||
@@ -8945,11 +8940,6 @@
|
||||
/mob/living/simple_animal/hostile/poison/giant_spider/nurse/ice,
|
||||
/turf/open/floor/plating/asteroid/snow/ice,
|
||||
/area/awaymission/snowdin/cave/cavern)
|
||||
"tM" = (
|
||||
/obj/structure/barricade/wooden/snowed,
|
||||
/turf/open/floor/plating/asteroid/snow/ice,
|
||||
/turf/open/floor/plating/snowed/cavern,
|
||||
/area/awaymission/snowdin/cave/cavern)
|
||||
"tN" = (
|
||||
/turf/open/floor/plating/ice/smooth,
|
||||
/area/awaymission/snowdin/outside)
|
||||
@@ -11572,10 +11562,6 @@
|
||||
},
|
||||
/turf/open/floor/plating/snowed,
|
||||
/area/awaymission/snowdin/outside)
|
||||
"AD" = (
|
||||
/turf/open/floor/plating,
|
||||
/turf/open/floor/plating/snowed,
|
||||
/area/awaymission/snowdin/outside)
|
||||
"AE" = (
|
||||
/obj/item/pen,
|
||||
/turf/open/floor/plating{
|
||||
@@ -12241,10 +12227,6 @@
|
||||
},
|
||||
/turf/open/floor/plating/asteroid/snow,
|
||||
/area/awaymission/snowdin/outside)
|
||||
"Cx" = (
|
||||
/turf/open/floor/plating/asteroid/snow/ice,
|
||||
/turf/open/floor/plating/snowed/cavern,
|
||||
/area/awaymission/snowdin/cave/cavern)
|
||||
"Cy" = (
|
||||
/obj/machinery/light/small{
|
||||
brightness = 3;
|
||||
@@ -13710,13 +13692,11 @@
|
||||
name = "mining conveyor"
|
||||
},
|
||||
/turf/open/floor/plating/asteroid/snow/ice,
|
||||
/turf/open/floor/plating/snowed/cavern,
|
||||
/area/awaymission/snowdin/cave/cavern)
|
||||
"FO" = (
|
||||
/obj/effect/turf_decal/stripes/line,
|
||||
/obj/effect/turf_decal/loading_area,
|
||||
/turf/open/floor/plating/asteroid/snow/ice,
|
||||
/turf/open/floor/plating/snowed/cavern,
|
||||
/area/awaymission/snowdin/cave/cavern)
|
||||
"FQ" = (
|
||||
/obj/effect/light_emitter{
|
||||
@@ -13788,7 +13768,6 @@
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plating/asteroid/snow/ice,
|
||||
/turf/open/floor/plating/snowed/cavern,
|
||||
/area/awaymission/snowdin/post/mining_dock)
|
||||
"FZ" = (
|
||||
/turf/closed/wall/ice,
|
||||
@@ -15860,20 +15839,6 @@
|
||||
/obj/effect/mapping_helpers/airlock/cyclelink_helper,
|
||||
/turf/open/floor/plating,
|
||||
/area/awaymission/snowdin/post/mining_dock)
|
||||
"WK" = (
|
||||
/obj/effect/turf_decal/stripes/corner{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plating/asteroid/snow/ice,
|
||||
/turf/open/floor/plating/snowed/cavern,
|
||||
/area/awaymission/snowdin/cave/cavern)
|
||||
"XO" = (
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plating/asteroid/snow/ice,
|
||||
/turf/open/floor/plating/snowed/cavern,
|
||||
/area/awaymission/snowdin/cave/cavern)
|
||||
"Yn" = (
|
||||
/obj/machinery/door/airlock/external/glass,
|
||||
/obj/effect/mapping_helpers/airlock/cyclelink_helper{
|
||||
@@ -24415,7 +24380,7 @@ am
|
||||
af
|
||||
sx
|
||||
sJ
|
||||
sT
|
||||
dX
|
||||
te
|
||||
te
|
||||
te
|
||||
@@ -24501,7 +24466,7 @@ af
|
||||
af
|
||||
af
|
||||
dX
|
||||
sT
|
||||
dX
|
||||
te
|
||||
te
|
||||
te
|
||||
@@ -24672,7 +24637,7 @@ af
|
||||
am
|
||||
sx
|
||||
sK
|
||||
sT
|
||||
dX
|
||||
te
|
||||
te
|
||||
te
|
||||
@@ -24758,7 +24723,7 @@ af
|
||||
af
|
||||
af
|
||||
dX
|
||||
sT
|
||||
dX
|
||||
te
|
||||
te
|
||||
te
|
||||
@@ -24929,7 +24894,7 @@ ak
|
||||
af
|
||||
sx
|
||||
sJ
|
||||
sT
|
||||
dX
|
||||
te
|
||||
te
|
||||
te
|
||||
@@ -24964,7 +24929,7 @@ dX
|
||||
dX
|
||||
dX
|
||||
dX
|
||||
sT
|
||||
dX
|
||||
te
|
||||
te
|
||||
te
|
||||
@@ -25015,7 +24980,7 @@ dX
|
||||
dX
|
||||
dX
|
||||
dX
|
||||
sT
|
||||
dX
|
||||
te
|
||||
te
|
||||
te
|
||||
@@ -25186,7 +25151,7 @@ af
|
||||
fq
|
||||
sx
|
||||
sK
|
||||
sT
|
||||
dX
|
||||
te
|
||||
te
|
||||
te
|
||||
@@ -25272,7 +25237,7 @@ af
|
||||
af
|
||||
af
|
||||
dX
|
||||
sT
|
||||
dX
|
||||
te
|
||||
te
|
||||
te
|
||||
@@ -25443,7 +25408,7 @@ af
|
||||
sf
|
||||
sx
|
||||
sJ
|
||||
sT
|
||||
dX
|
||||
te
|
||||
te
|
||||
te
|
||||
@@ -25529,7 +25494,7 @@ af
|
||||
af
|
||||
af
|
||||
dX
|
||||
sT
|
||||
dX
|
||||
te
|
||||
te
|
||||
te
|
||||
@@ -26827,7 +26792,7 @@ zK
|
||||
oa
|
||||
te
|
||||
Au
|
||||
AD
|
||||
te
|
||||
yW
|
||||
af
|
||||
ag
|
||||
@@ -60164,8 +60129,8 @@ qi
|
||||
qi
|
||||
qi
|
||||
qi
|
||||
tM
|
||||
tM
|
||||
tP
|
||||
tP
|
||||
oZ
|
||||
oZ
|
||||
oZ
|
||||
@@ -61300,7 +61265,7 @@ qi
|
||||
oZ
|
||||
oZ
|
||||
oZ
|
||||
Cx
|
||||
oZ
|
||||
qi
|
||||
oZ
|
||||
oZ
|
||||
@@ -64383,7 +64348,7 @@ sY
|
||||
oZ
|
||||
oZ
|
||||
sY
|
||||
Cx
|
||||
oZ
|
||||
oZ
|
||||
oZ
|
||||
sY
|
||||
@@ -64640,7 +64605,7 @@ oZ
|
||||
oY
|
||||
oZ
|
||||
oZ
|
||||
Cx
|
||||
oZ
|
||||
oZ
|
||||
oZ
|
||||
oZ
|
||||
@@ -65973,7 +65938,7 @@ oZ
|
||||
oZ
|
||||
oZ
|
||||
FN
|
||||
XO
|
||||
sl
|
||||
Gk
|
||||
GN
|
||||
Hj
|
||||
@@ -66486,7 +66451,7 @@ oZ
|
||||
oZ
|
||||
oZ
|
||||
oZ
|
||||
WK
|
||||
By
|
||||
xW
|
||||
xW
|
||||
xW
|
||||
|
||||
@@ -1,168 +0,0 @@
|
||||
|
||||
//custom access for some jobs. pasted together from ministation.
|
||||
|
||||
#define JOB_MODIFICATION_MAP_NAME "OmegaStation"
|
||||
|
||||
/datum/job/New()
|
||||
..()
|
||||
MAP_JOB_CHECK
|
||||
supervisors = "the captain and the head of personnel"
|
||||
|
||||
/datum/outfit/job/New()
|
||||
..()
|
||||
MAP_JOB_CHECK
|
||||
box = /obj/item/storage/box/survival/radio
|
||||
|
||||
/datum/job/assistant // Here so assistant appears on the top of the select job list.
|
||||
|
||||
//Command
|
||||
|
||||
/datum/job/captain/New()
|
||||
..()
|
||||
MAP_JOB_CHECK
|
||||
supervisors = "Nanotrasen and Central Command"
|
||||
|
||||
/datum/job/hop/New()
|
||||
..()
|
||||
MAP_JOB_CHECK
|
||||
supervisors = "the captain and Central Command"
|
||||
|
||||
/datum/job/hop/get_access()
|
||||
MAP_JOB_CHECK_BASE
|
||||
return get_all_accesses()
|
||||
|
||||
//Security
|
||||
|
||||
/datum/job/officer/New()
|
||||
..()
|
||||
MAP_JOB_CHECK
|
||||
total_positions = 3
|
||||
spawn_positions = 3
|
||||
access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_ARMORY, ACCESS_COURT, ACCESS_MAINT_TUNNELS, ACCESS_MORGUE, ACCESS_WEAPONS, ACCESS_FORENSICS_LOCKERS)
|
||||
minimal_access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_ARMORY, ACCESS_COURT, ACCESS_MAINT_TUNNELS, ACCESS_MORGUE, ACCESS_WEAPONS, ACCESS_FORENSICS_LOCKERS)
|
||||
|
||||
/datum/outfit/job/officer/New()
|
||||
..()
|
||||
MAP_JOB_CHECK
|
||||
box = /obj/item/storage/box/security/radio
|
||||
|
||||
/datum/job/detective/New()
|
||||
..()
|
||||
MAP_JOB_CHECK
|
||||
access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_ARMORY, ACCESS_COURT, ACCESS_MAINT_TUNNELS, ACCESS_MORGUE, ACCESS_WEAPONS, ACCESS_FORENSICS_LOCKERS)
|
||||
minimal_access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_ARMORY, ACCESS_COURT, ACCESS_MAINT_TUNNELS, ACCESS_MORGUE, ACCESS_WEAPONS, ACCESS_FORENSICS_LOCKERS)
|
||||
|
||||
/datum/outfit/job/detective/New()
|
||||
..()
|
||||
MAP_JOB_CHECK
|
||||
box = /obj/item/storage/box/security/radio
|
||||
|
||||
//Medbay
|
||||
|
||||
/datum/job/doctor/New()
|
||||
..()
|
||||
MAP_JOB_CHECK
|
||||
selection_color = "#ffffff"
|
||||
total_positions = 3
|
||||
spawn_positions = 3
|
||||
access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_CHEMISTRY, ACCESS_VIROLOGY, ACCESS_GENETICS)
|
||||
minimal_access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_CHEMISTRY, ACCESS_VIROLOGY, ACCESS_GENETICS)
|
||||
|
||||
//Engineering
|
||||
|
||||
/datum/job/engineer/New()
|
||||
..()
|
||||
MAP_JOB_CHECK
|
||||
total_positions = 2
|
||||
spawn_positions = 2
|
||||
access = list(ACCESS_EVA, ACCESS_ENGINE, ACCESS_ENGINE_EQUIP, ACCESS_TECH_STORAGE, ACCESS_MAINT_TUNNELS, ACCESS_EXTERNAL_AIRLOCKS, ACCESS_CONSTRUCTION, ACCESS_ATMOSPHERICS, ACCESS_TCOMSAT)
|
||||
minimal_access = list(ACCESS_EVA, ACCESS_ENGINE, ACCESS_ENGINE_EQUIP, ACCESS_TECH_STORAGE, ACCESS_MAINT_TUNNELS, ACCESS_EXTERNAL_AIRLOCKS, ACCESS_CONSTRUCTION, ACCESS_ATMOSPHERICS, ACCESS_TCOMSAT)
|
||||
|
||||
/datum/outfit/job/engineer/New()
|
||||
..()
|
||||
MAP_JOB_CHECK
|
||||
box = /obj/item/storage/box/engineer/radio
|
||||
|
||||
/datum/job/atmos/New()
|
||||
..()
|
||||
MAP_JOB_CHECK
|
||||
total_positions = 2
|
||||
spawn_positions = 2
|
||||
|
||||
//Science
|
||||
|
||||
/datum/job/scientist/New()
|
||||
..()
|
||||
MAP_JOB_CHECK
|
||||
total_positions = 3
|
||||
spawn_positions = 3
|
||||
access = list(ACCESS_ROBOTICS, ACCESS_TOX, ACCESS_TOX_STORAGE, ACCESS_RESEARCH, ACCESS_XENOBIOLOGY, ACCESS_MINERAL_STOREROOM, ACCESS_TECH_STORAGE)
|
||||
minimal_access = list(ACCESS_ROBOTICS, ACCESS_TOX, ACCESS_TOX_STORAGE, ACCESS_RESEARCH, ACCESS_XENOBIOLOGY, ACCESS_MINERAL_STOREROOM, ACCESS_TECH_STORAGE)
|
||||
|
||||
//Cargo
|
||||
|
||||
/datum/job/cargo_tech/New()
|
||||
..()
|
||||
MAP_JOB_CHECK
|
||||
total_positions = 2
|
||||
spawn_positions = 2
|
||||
access = list(ACCESS_MAINT_TUNNELS, ACCESS_MAILSORTING, ACCESS_CARGO, ACCESS_CARGO_BOT, ACCESS_QM, ACCESS_MINING, ACCESS_MINING_STATION, ACCESS_MINERAL_STOREROOM)
|
||||
minimal_access = list(ACCESS_MAINT_TUNNELS, ACCESS_MAILSORTING, ACCESS_CARGO, ACCESS_CARGO_BOT, ACCESS_QM, ACCESS_MINING, ACCESS_MINING_STATION, ACCESS_MINERAL_STOREROOM)
|
||||
|
||||
/datum/job/mining/New()
|
||||
..()
|
||||
MAP_JOB_CHECK
|
||||
total_positions = 2
|
||||
spawn_positions = 2
|
||||
access = list(ACCESS_MAINT_TUNNELS, ACCESS_MAILSORTING, ACCESS_CARGO, ACCESS_CARGO_BOT, ACCESS_QM, ACCESS_MINING, ACCESS_MINING_STATION, ACCESS_MINERAL_STOREROOM)
|
||||
minimal_access = list(ACCESS_MAINT_TUNNELS, ACCESS_MAILSORTING, ACCESS_CARGO, ACCESS_CARGO_BOT, ACCESS_QM, ACCESS_MINING, ACCESS_MINING_STATION, ACCESS_MINERAL_STOREROOM)
|
||||
|
||||
/datum/outfit/job/mining/New()
|
||||
..()
|
||||
box = /obj/item/storage/box/engineer/radio
|
||||
|
||||
//Service
|
||||
|
||||
/datum/job/bartender/New()
|
||||
..()
|
||||
MAP_JOB_CHECK
|
||||
access = list(ACCESS_HYDROPONICS, ACCESS_BAR, ACCESS_KITCHEN, ACCESS_MORGUE, ACCESS_WEAPONS)
|
||||
minimal_access = list(ACCESS_HYDROPONICS, ACCESS_BAR, ACCESS_KITCHEN, ACCESS_MORGUE, ACCESS_WEAPONS)
|
||||
|
||||
/datum/job/cook/New()
|
||||
..()
|
||||
MAP_JOB_CHECK
|
||||
access = list(ACCESS_HYDROPONICS, ACCESS_BAR, ACCESS_KITCHEN, ACCESS_MORGUE, ACCESS_WEAPONS)
|
||||
minimal_access = list(ACCESS_HYDROPONICS, ACCESS_BAR, ACCESS_KITCHEN, ACCESS_MORGUE, ACCESS_WEAPONS)
|
||||
|
||||
/datum/job/hydro/New()
|
||||
..()
|
||||
MAP_JOB_CHECK
|
||||
access = list(ACCESS_HYDROPONICS, ACCESS_BAR, ACCESS_KITCHEN, ACCESS_MORGUE, ACCESS_MAINT_TUNNELS)
|
||||
minimal_access = list(ACCESS_HYDROPONICS, ACCESS_BAR, ACCESS_KITCHEN, ACCESS_MORGUE, ACCESS_MAINT_TUNNELS)
|
||||
// they get maint access because of all the hydro content in maint
|
||||
|
||||
/datum/job/janitor/New()
|
||||
..()
|
||||
MAP_JOB_CHECK
|
||||
access = list(ACCESS_JANITOR, ACCESS_HYDROPONICS, ACCESS_BAR, ACCESS_KITCHEN, ACCESS_MORGUE, ACCESS_MAINT_TUNNELS)
|
||||
minimal_access = list(ACCESS_JANITOR, ACCESS_HYDROPONICS, ACCESS_BAR, ACCESS_KITCHEN, ACCESS_MORGUE, ACCESS_MAINT_TUNNELS)
|
||||
|
||||
|
||||
//Civilian
|
||||
|
||||
/datum/job/clown/New()
|
||||
..()
|
||||
MAP_JOB_CHECK
|
||||
supervisors = "nobody but yourself" //Honk
|
||||
|
||||
MAP_REMOVE_JOB(hos)
|
||||
MAP_REMOVE_JOB(chief_engineer)
|
||||
MAP_REMOVE_JOB(qm)
|
||||
MAP_REMOVE_JOB(cmo)
|
||||
MAP_REMOVE_JOB(geneticist)
|
||||
MAP_REMOVE_JOB(virologist)
|
||||
MAP_REMOVE_JOB(rd)
|
||||
MAP_REMOVE_JOB(warden)
|
||||
MAP_REMOVE_JOB(lawyer)
|
||||
MAP_REMOVE_JOB(chemist)
|
||||
@@ -1,21 +0,0 @@
|
||||
#define JOB_MODIFICATION_MAP_NAME "PubbyStation"
|
||||
|
||||
/datum/job/hos/New()
|
||||
..()
|
||||
MAP_JOB_CHECK
|
||||
access += ACCESS_CREMATORIUM
|
||||
minimal_access += ACCESS_CREMATORIUM
|
||||
|
||||
/datum/job/warden/New()
|
||||
..()
|
||||
MAP_JOB_CHECK
|
||||
access += ACCESS_CREMATORIUM
|
||||
minimal_access += ACCESS_CREMATORIUM
|
||||
|
||||
/datum/job/officer/New()
|
||||
..()
|
||||
MAP_JOB_CHECK
|
||||
access += ACCESS_CREMATORIUM
|
||||
minimal_access += ACCESS_CREMATORIUM
|
||||
|
||||
MAP_REMOVE_JOB(lawyer)
|
||||
@@ -443,8 +443,8 @@
|
||||
/obj/machinery/door/airlock/external/glass{
|
||||
name = "E.V.A Access"
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/obj/structure/fans/tiny,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/shuttle/abandoned/crew)
|
||||
"aK" = (
|
||||
/obj/effect/decal/cleanable/dirt{
|
||||
|
||||
@@ -17,10 +17,6 @@
|
||||
},
|
||||
/turf/open/floor/plating/airless,
|
||||
/area/ruin/powered/shuttle/medium_3)
|
||||
"g" = (
|
||||
/turf/closed/wall/mineral/plastitanium,
|
||||
/turf/closed/wall/mineral/titanium,
|
||||
/area/ruin/powered/shuttle/medium_3)
|
||||
"h" = (
|
||||
/turf/closed/wall/mineral/titanium,
|
||||
/area/ruin/powered/shuttle/medium_3)
|
||||
@@ -271,20 +267,20 @@ a
|
||||
a
|
||||
a
|
||||
c
|
||||
g
|
||||
h
|
||||
h
|
||||
g
|
||||
h
|
||||
h
|
||||
c
|
||||
g
|
||||
h
|
||||
j
|
||||
j
|
||||
g
|
||||
h
|
||||
c
|
||||
g
|
||||
h
|
||||
h
|
||||
g
|
||||
h
|
||||
h
|
||||
c
|
||||
a
|
||||
a
|
||||
@@ -343,7 +339,7 @@ a
|
||||
c
|
||||
c
|
||||
c
|
||||
g
|
||||
h
|
||||
G
|
||||
l
|
||||
l
|
||||
@@ -356,7 +352,7 @@ l
|
||||
l
|
||||
l
|
||||
G
|
||||
g
|
||||
h
|
||||
c
|
||||
c
|
||||
c
|
||||
@@ -391,7 +387,7 @@ a
|
||||
a
|
||||
c
|
||||
c
|
||||
g
|
||||
h
|
||||
G
|
||||
p
|
||||
G
|
||||
@@ -404,7 +400,7 @@ A
|
||||
G
|
||||
p
|
||||
G
|
||||
g
|
||||
h
|
||||
c
|
||||
c
|
||||
a
|
||||
@@ -463,7 +459,7 @@ a
|
||||
a
|
||||
c
|
||||
c
|
||||
g
|
||||
h
|
||||
G
|
||||
p
|
||||
G
|
||||
@@ -476,7 +472,7 @@ A
|
||||
G
|
||||
p
|
||||
G
|
||||
g
|
||||
h
|
||||
c
|
||||
c
|
||||
a
|
||||
@@ -511,7 +507,7 @@ a
|
||||
c
|
||||
c
|
||||
c
|
||||
g
|
||||
h
|
||||
G
|
||||
l
|
||||
l
|
||||
@@ -524,7 +520,7 @@ l
|
||||
l
|
||||
l
|
||||
G
|
||||
g
|
||||
h
|
||||
c
|
||||
c
|
||||
c
|
||||
@@ -583,20 +579,20 @@ a
|
||||
a
|
||||
a
|
||||
c
|
||||
g
|
||||
h
|
||||
h
|
||||
g
|
||||
h
|
||||
h
|
||||
c
|
||||
g
|
||||
h
|
||||
j
|
||||
j
|
||||
g
|
||||
h
|
||||
c
|
||||
g
|
||||
h
|
||||
h
|
||||
g
|
||||
h
|
||||
h
|
||||
c
|
||||
a
|
||||
a
|
||||
|
||||
@@ -99,6 +99,7 @@
|
||||
#define HIDEFACIALHAIR (1<<9)
|
||||
#define HIDENECK (1<<10)
|
||||
#define HIDETAUR (1<<11) //gotta hide that snowflake
|
||||
#define HIDESNOUT (1<<12) //or do we actually hide our snoots
|
||||
|
||||
//bitflags for clothing coverage - also used for limbs
|
||||
#define HEAD (1<<0)
|
||||
@@ -131,11 +132,17 @@
|
||||
#define NORMAL_SUIT_STYLE 0
|
||||
#define DIGITIGRADE_SUIT_STYLE 1
|
||||
|
||||
//Tauric Specific suits
|
||||
#define NOT_TAURIC 0
|
||||
#define SNEK_TAURIC 1
|
||||
#define PAW_TAURIC 2
|
||||
#define HOOF_TAURIC 3
|
||||
|
||||
//Helmets/masks for muzzles or beaks
|
||||
#define NORMAL_FACED 0
|
||||
#define MUZZLE_FACED 1
|
||||
#define BEAKED_FACED 2
|
||||
|
||||
//flags for outfits that have mutantrace variants (try not to use this): Currently only needed if you're trying to add tight fitting bootyshorts
|
||||
#define NO_MUTANTRACE_VARIATION 0
|
||||
#define MUTANTRACE_VARIATION 1
|
||||
|
||||
@@ -6,7 +6,8 @@
|
||||
icon_state = "clockwork_helmet"
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
resistance_flags = FIRE_PROOF | ACID_PROOF
|
||||
flags_inv = HIDEEARS|HIDEHAIR|HIDEFACE
|
||||
flags_inv = HIDEEARS|HIDEHAIR|HIDEFACE|HIDESNOUT
|
||||
mutantrace_variation = MUTANTRACE_VARIATION
|
||||
armor = list("melee" = 50, "bullet" = 70, "laser" = -25, "energy" = 0, "bomb" = 60, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 100)
|
||||
|
||||
/obj/item/clothing/head/helmet/clockwork/Initialize()
|
||||
|
||||
@@ -319,9 +319,10 @@
|
||||
icon_state = "magus"
|
||||
item_state = "magus"
|
||||
desc = "A helm worn by the followers of Nar'Sie."
|
||||
flags_inv = HIDEFACE|HIDEHAIR|HIDEFACIALHAIR|HIDEEARS|HIDEEYES
|
||||
flags_inv = HIDEFACE|HIDEHAIR|HIDEFACIALHAIR|HIDEEARS|HIDEEYES|HIDESNOUT
|
||||
armor = list("melee" = 30, "bullet" = 30, "laser" = 30,"energy" = 20, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 10, "acid" = 10)
|
||||
flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH
|
||||
mutantrace_variation = MUTANTRACE_VARIATION
|
||||
|
||||
/obj/item/clothing/suit/magusred
|
||||
name = "magus robes"
|
||||
|
||||
@@ -1584,6 +1584,8 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
new_snout = input(user, "Choose your character's snout:", "Character Preference") as null|anything in snowflake_snouts_list
|
||||
if(new_snout)
|
||||
features["snout"] = new_snout
|
||||
features["mam_snouts"] = "None"
|
||||
|
||||
|
||||
if("mam_snouts")
|
||||
var/list/snowflake_mam_snouts_list = list()
|
||||
@@ -1597,6 +1599,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
new_mam_snouts = input(user, "Choose your character's snout:", "Character Preference") as null|anything in snowflake_mam_snouts_list
|
||||
if(new_mam_snouts)
|
||||
features["mam_snouts"] = new_mam_snouts
|
||||
features["snout"] = "None"
|
||||
|
||||
if("horns")
|
||||
var/new_horns
|
||||
|
||||
@@ -8,6 +8,8 @@
|
||||
var/blockTracking = 0 //For AI tracking
|
||||
var/can_toggle = null
|
||||
dynamic_hair_suffix = "+generic"
|
||||
var/muzzle_var = NORMAL_STYLE
|
||||
mutantrace_variation = NO_MUTANTRACE_VARIATION //not all hats have muzzles
|
||||
|
||||
/obj/item/clothing/head/Initialize()
|
||||
. = ..()
|
||||
@@ -15,6 +17,25 @@
|
||||
var/mob/living/carbon/human/H = loc
|
||||
H.update_hair()
|
||||
|
||||
/obj/item/clothing/head/equipped(mob/user, slot)
|
||||
..()
|
||||
if(ishuman(user))
|
||||
var/mob/living/carbon/human/H = user
|
||||
var/datum/species/pref_species = H.dna.species
|
||||
|
||||
if(mutantrace_variation)
|
||||
if("mam_snouts" in pref_species.default_features)
|
||||
if(H.dna.features["mam_snouts"] != "None")
|
||||
muzzle_var = ALT_STYLE
|
||||
|
||||
else if("snout" in pref_species.default_features)
|
||||
if(H.dna.features["snout"] != "None")
|
||||
muzzle_var = ALT_STYLE
|
||||
|
||||
else
|
||||
muzzle_var = NORMAL_STYLE
|
||||
H.update_inv_head()
|
||||
|
||||
/obj/item/clothing/head/worn_overlays(isinhands = FALSE)
|
||||
. = list()
|
||||
if(!isinhands)
|
||||
|
||||
@@ -79,8 +79,9 @@
|
||||
name = "atmospheric technician's firefighting helmet"
|
||||
desc = "A firefighter's helmet, able to keep the user cool in any situation."
|
||||
clothing_flags = STOPSPRESSUREDAMAGE | THICKMATERIAL | BLOCK_GAS_SMOKE_EFFECT
|
||||
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR
|
||||
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR|HIDESNOUT
|
||||
heat_protection = HEAD
|
||||
max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT
|
||||
cold_protection = HEAD
|
||||
min_cold_protection_temperature = FIRE_HELM_MIN_TEMP_PROTECT
|
||||
mutantrace_variation = MUTANTRACE_VARIATION
|
||||
|
||||
@@ -74,6 +74,7 @@
|
||||
flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH
|
||||
visor_flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH
|
||||
dog_fashion = null
|
||||
mutantrace_variation = MUTANTRACE_VARIATION
|
||||
|
||||
/obj/item/clothing/head/helmet/attack_self(mob/user)
|
||||
if(can_toggle && !user.incapacitated())
|
||||
@@ -210,10 +211,11 @@
|
||||
icon_state = "knight_green"
|
||||
item_state = "knight_green"
|
||||
armor = list("melee" = 41, "bullet" = 15, "laser" = 5,"energy" = 5, "bomb" = 5, "bio" = 2, "rad" = 0, "fire" = 0, "acid" = 50)
|
||||
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR
|
||||
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDESNOUT
|
||||
flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH
|
||||
strip_delay = 80
|
||||
dog_fashion = null
|
||||
mutantrace_variation = MUTANTRACE_VARIATION
|
||||
|
||||
|
||||
/obj/item/clothing/head/helmet/knight/Initialize(mapload)
|
||||
@@ -242,6 +244,7 @@
|
||||
icon_state = "skull"
|
||||
item_state = "skull"
|
||||
strip_delay = 100
|
||||
mutantrace_variation = MUTANTRACE_VARIATION
|
||||
|
||||
//LightToggle
|
||||
|
||||
|
||||
@@ -65,7 +65,8 @@
|
||||
icon_state = "syndicate-helm-black-red"
|
||||
item_state = "syndicate-helm-black-red"
|
||||
desc = "A plastic replica of a Syndicate agent's space helmet. You'll look just like a real murderous Syndicate agent in this! This is a toy, it is not made for use in space!"
|
||||
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR
|
||||
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR|HIDESNOUT
|
||||
mutantrace_variation = MUTANTRACE_VARIATION
|
||||
|
||||
/obj/item/clothing/head/cueball
|
||||
name = "cueball helmet"
|
||||
@@ -73,7 +74,7 @@
|
||||
icon_state = "cueball"
|
||||
item_state="cueball"
|
||||
flags_cover = HEADCOVERSEYES|HEADCOVERSMOUTH
|
||||
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR
|
||||
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR|HIDESNOUT
|
||||
|
||||
/obj/item/clothing/head/snowman
|
||||
name = "Snowman Head"
|
||||
@@ -81,14 +82,14 @@
|
||||
icon_state = "snowman_h"
|
||||
item_state = "snowman_h"
|
||||
flags_cover = HEADCOVERSEYES
|
||||
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR
|
||||
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR|HIDESNOUT
|
||||
|
||||
/obj/item/clothing/head/justice
|
||||
name = "justice hat"
|
||||
desc = "Fight for what's righteous!"
|
||||
icon_state = "justicered"
|
||||
item_state = "justicered"
|
||||
flags_inv = HIDEHAIR|HIDEEARS|HIDEEYES|HIDEFACE|HIDEFACIALHAIR
|
||||
flags_inv = HIDEHAIR|HIDEEARS|HIDEEYES|HIDEFACE|HIDEFACIALHAIR|HIDESNOUT
|
||||
flags_cover = HEADCOVERSEYES
|
||||
|
||||
/obj/item/clothing/head/justice/blue
|
||||
@@ -159,14 +160,14 @@
|
||||
desc = "Bkaw!"
|
||||
icon_state = "chickenhead"
|
||||
item_state = "chickensuit"
|
||||
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR
|
||||
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR|HIDESNOUT
|
||||
|
||||
/obj/item/clothing/head/griffin
|
||||
name = "griffon head"
|
||||
desc = "Why not 'eagle head'? Who knows."
|
||||
icon_state = "griffinhat"
|
||||
item_state = "griffinhat"
|
||||
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR
|
||||
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR|HIDESNOUT
|
||||
|
||||
/obj/item/clothing/head/bearpelt
|
||||
name = "bear pelt hat"
|
||||
@@ -179,7 +180,7 @@
|
||||
icon_state = "xenos"
|
||||
item_state = "xenos_helm"
|
||||
desc = "A helmet made out of chitinous alien hide."
|
||||
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR
|
||||
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR|HIDESNOUT
|
||||
|
||||
/obj/item/clothing/head/fedora
|
||||
name = "fedora"
|
||||
@@ -267,13 +268,13 @@
|
||||
name = "paper sack hat"
|
||||
desc = "A paper sack with crude holes cut out for eyes. Useful for hiding one's identity or ugliness."
|
||||
icon_state = "papersack"
|
||||
flags_inv = HIDEHAIR|HIDEFACE|HIDEEARS
|
||||
flags_inv = HIDEHAIR|HIDEFACE|HIDEEARS|HIDESNOUT
|
||||
|
||||
/obj/item/clothing/head/papersack/smiley
|
||||
name = "paper sack hat"
|
||||
desc = "A paper sack with crude holes cut out for eyes and a sketchy smile drawn on the front. Not creepy at all."
|
||||
icon_state = "papersack_smile"
|
||||
flags_inv = HIDEHAIR|HIDEFACE|HIDEEARS
|
||||
flags_inv = HIDEHAIR|HIDEFACE|HIDEEARS|HIDESNOUT
|
||||
|
||||
/obj/item/clothing/head/crown
|
||||
name = "crown"
|
||||
@@ -297,7 +298,7 @@
|
||||
name = "foam lobster head"
|
||||
desc = "When everything's going to crab, protecting your head is the best choice."
|
||||
icon_state = "lobster_hat"
|
||||
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR
|
||||
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR|HIDESNOUT
|
||||
|
||||
/obj/item/clothing/head/drfreezehat
|
||||
name = "doctor freeze's wig"
|
||||
|
||||
@@ -28,6 +28,7 @@
|
||||
visor_flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE
|
||||
visor_flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH
|
||||
resistance_flags = FIRE_PROOF
|
||||
mutantrace_variation = MUTANTRACE_VARIATION
|
||||
|
||||
/obj/item/clothing/head/welding/attack_self(mob/user)
|
||||
weldingvisortoggle(user)
|
||||
@@ -113,7 +114,7 @@
|
||||
icon_state = "hardhat0_pumpkin"
|
||||
item_state = "hardhat0_pumpkin"
|
||||
item_color = "pumpkin"
|
||||
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR
|
||||
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR|HIDESNOUT
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0)
|
||||
brightness_on = 2 //luminosity when on
|
||||
flags_cover = HEADCOVERSEYES
|
||||
@@ -163,7 +164,7 @@
|
||||
icon_state = "cardborg_h"
|
||||
item_state = "cardborg_h"
|
||||
flags_cover = HEADCOVERSEYES
|
||||
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR
|
||||
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR|HIDESNOUT
|
||||
|
||||
dog_fashion = /datum/dog_fashion/head/cardborg
|
||||
|
||||
|
||||
@@ -7,6 +7,8 @@
|
||||
equip_delay_other = 40
|
||||
var/mask_adjusted = 0
|
||||
var/adjusted_flags = null
|
||||
var/muzzle_var = NORMAL_STYLE
|
||||
mutantrace_variation = NO_MUTANTRACE_VARIATION //most masks have overrides, but not all probably.
|
||||
|
||||
|
||||
/obj/item/clothing/mask/worn_overlays(isinhands = FALSE)
|
||||
@@ -18,6 +20,26 @@
|
||||
IF_HAS_BLOOD_DNA(src)
|
||||
. += mutable_appearance('icons/effects/blood.dmi', "maskblood")
|
||||
|
||||
/obj/item/clothing/mask/equipped(mob/user, slot)
|
||||
..()
|
||||
if(ishuman(user))
|
||||
var/mob/living/carbon/human/H = user
|
||||
var/datum/species/pref_species = H.dna.species
|
||||
|
||||
if(mutantrace_variation)
|
||||
if("mam_snouts" in pref_species.default_features)
|
||||
if(H.dna.features["mam_snouts"] != "None")
|
||||
muzzle_var = ALT_STYLE
|
||||
|
||||
else if("snout" in pref_species.default_features)
|
||||
if(H.dna.features["snout"] != "None")
|
||||
muzzle_var = ALT_STYLE
|
||||
else
|
||||
muzzle_var = NORMAL_STYLE
|
||||
|
||||
H.update_inv_wear_mask()
|
||||
|
||||
|
||||
/obj/item/clothing/mask/update_clothes_damaged_state(damaging = TRUE)
|
||||
..()
|
||||
if(ismob(loc))
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
visor_flags_inv = HIDEFACE|HIDEFACIALHAIR
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
actions_types = list(/datum/action/item_action/adjust)
|
||||
mutantrace_variation = MUTANTRACE_VARIATION
|
||||
|
||||
/obj/item/clothing/mask/balaclava/attack_self(mob/user)
|
||||
adjustmask(user)
|
||||
@@ -18,6 +19,7 @@
|
||||
item_state = "luchag"
|
||||
flags_inv = HIDEFACE|HIDEHAIR|HIDEFACIALHAIR
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
mutantrace_variation = MUTANTRACE_VARIATION
|
||||
|
||||
/obj/item/clothing/mask/luchador/speechModification(message)
|
||||
if(copytext(message, 1, 2) != "*")
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
flags_cover = MASKCOVERSMOUTH
|
||||
visor_flags_cover = MASKCOVERSMOUTH
|
||||
resistance_flags = NONE
|
||||
mutantrace_variation = MUTANTRACE_VARIATION
|
||||
|
||||
/obj/item/clothing/mask/breath/suicide_act(mob/living/carbon/user)
|
||||
user.visible_message("<span class='suicide'>[user] is wrapping \the [src]'s tube around [user.p_their()] neck! It looks like [user.p_theyre()] trying to commit suicide!</span>")
|
||||
|
||||
@@ -3,13 +3,21 @@
|
||||
desc = "A face-covering mask that can be connected to an air supply. While good for concealing your identity, it isn't good for blocking gas flow." //More accurate
|
||||
icon_state = "gas_alt"
|
||||
clothing_flags = BLOCK_GAS_SMOKE_EFFECT | MASKINTERNALS
|
||||
flags_inv = HIDEEARS|HIDEEYES|HIDEFACE|HIDEFACIALHAIR
|
||||
flags_inv = HIDEEARS|HIDEEYES|HIDEFACE|HIDEFACIALHAIR|HIDESNOUT
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
item_state = "gas_alt"
|
||||
gas_transfer_coefficient = 0.01
|
||||
permeability_coefficient = 0.01
|
||||
flags_cover = MASKCOVERSEYES | MASKCOVERSMOUTH
|
||||
resistance_flags = NONE
|
||||
mutantrace_variation = MUTANTRACE_VARIATION
|
||||
|
||||
/obj/item/clothing/mask/gas/glass
|
||||
name = "glass gas mask"
|
||||
desc = "A face-covering mask that can be connected to an air supply. This one doesn't obscure your face however." //More accurate
|
||||
icon_state = "gas_clear"
|
||||
flags_inv = HIDEEYES
|
||||
|
||||
|
||||
// **** Welding gas mask ****
|
||||
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
gas_transfer_coefficient = 0.9
|
||||
equip_delay_other = 20
|
||||
mutantrace_variation = MUTANTRACE_VARIATION
|
||||
|
||||
/obj/item/clothing/mask/muzzle/attack_paw(mob/user)
|
||||
if(iscarbon(user))
|
||||
@@ -30,6 +31,7 @@
|
||||
permeability_coefficient = 0.01
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 25, "rad" = 0, "fire" = 0, "acid" = 0)
|
||||
actions_types = list(/datum/action/item_action/adjust)
|
||||
mutantrace_variation = MUTANTRACE_VARIATION
|
||||
|
||||
/obj/item/clothing/mask/surgical/attack_self(mob/user)
|
||||
adjustmask(user)
|
||||
@@ -39,6 +41,7 @@
|
||||
desc = "Warning: moustache is fake."
|
||||
icon_state = "fake-moustache"
|
||||
flags_inv = HIDEFACE
|
||||
mutantrace_variation = MUTANTRACE_VARIATION
|
||||
|
||||
/obj/item/clothing/mask/fakemoustache/italian
|
||||
name = "italian moustache"
|
||||
@@ -66,6 +69,7 @@
|
||||
name = "joy mask"
|
||||
desc = "Express your happiness or hide your sorrows with this laughing face with crying tears of joy cutout."
|
||||
icon_state = "joy"
|
||||
mutantrace_variation = MUTANTRACE_VARIATION
|
||||
|
||||
/obj/item/clothing/mask/pig
|
||||
name = "pig mask"
|
||||
@@ -225,6 +229,7 @@
|
||||
slot_flags = ITEM_SLOT_MASK
|
||||
adjusted_flags = ITEM_SLOT_HEAD
|
||||
icon_state = "bandbotany"
|
||||
mutantrace_variation = MUTANTRACE_VARIATION
|
||||
|
||||
/obj/item/clothing/mask/bandana/attack_self(mob/user)
|
||||
adjustmask(user)
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
item_state = "spaceold"
|
||||
permeability_coefficient = 0.01
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 100, "rad" = 50, "fire" = 80, "acid" = 70)
|
||||
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR
|
||||
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR|HIDESNOUT
|
||||
dynamic_hair_suffix = ""
|
||||
dynamic_fhair_suffix = ""
|
||||
cold_protection = HEAD
|
||||
@@ -21,6 +21,7 @@
|
||||
flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH
|
||||
resistance_flags = NONE
|
||||
dog_fashion = null
|
||||
mutantrace_variation = MUTANTRACE_VARIATION
|
||||
|
||||
/obj/item/clothing/suit/space
|
||||
name = "space suit"
|
||||
|
||||
@@ -443,6 +443,7 @@
|
||||
icon_state = "hardsuit0-medical"
|
||||
item_state = "medical_helm"
|
||||
item_color = "medical"
|
||||
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR
|
||||
flash_protect = 0
|
||||
armor = list("melee" = 30, "bullet" = 5, "laser" = 10, "energy" = 5, "bomb" = 10, "bio" = 100, "rad" = 60, "fire" = 60, "acid" = 75)
|
||||
scan_reagents = 1
|
||||
|
||||
@@ -64,6 +64,7 @@ Contains:
|
||||
strip_delay = 130
|
||||
max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT
|
||||
resistance_flags = FIRE_PROOF | ACID_PROOF
|
||||
mutantrace_variation = NO_MUTANTRACE_VARIATION
|
||||
|
||||
/obj/item/clothing/suit/space/officer
|
||||
name = "officer's jacket"
|
||||
@@ -114,6 +115,7 @@ Contains:
|
||||
desc = "Ho ho ho. Merrry X-mas!"
|
||||
icon_state = "santahat"
|
||||
flags_cover = HEADCOVERSEYES
|
||||
mutantrace_variation = NO_MUTANTRACE_VARIATION
|
||||
|
||||
dog_fashion = /datum/dog_fashion/head/santa
|
||||
|
||||
@@ -137,12 +139,14 @@ Contains:
|
||||
strip_delay = 40
|
||||
equip_delay_other = 20
|
||||
flags_cover = HEADCOVERSEYES
|
||||
mutantrace_variation = NO_MUTANTRACE_VARIATION
|
||||
|
||||
/obj/item/clothing/head/helmet/space/pirate/bandana
|
||||
name = "royal bandana"
|
||||
desc = "A space-proof bandanna crafted with reflective kevlar."
|
||||
icon_state = "bandana"
|
||||
item_state = "bandana"
|
||||
mutantrace_variation = NO_MUTANTRACE_VARIATION
|
||||
|
||||
/obj/item/clothing/suit/space/pirate
|
||||
name = "royal waistcoat "
|
||||
@@ -250,6 +254,7 @@ Contains:
|
||||
strip_delay = 130
|
||||
max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT
|
||||
resistance_flags = ACID_PROOF | FIRE_PROOF
|
||||
mutantrace_variation = NO_MUTANTRACE_VARIATION
|
||||
|
||||
/obj/item/clothing/suit/space/freedom
|
||||
name = "eagle suit"
|
||||
@@ -273,6 +278,7 @@ Contains:
|
||||
brightness_on = 0 //luminosity when on
|
||||
actions_types = list()
|
||||
item_flags = NODROP
|
||||
mutantrace_variation = NO_MUTANTRACE_VARIATION
|
||||
|
||||
|
||||
/obj/item/clothing/suit/space/hardsuit/carp
|
||||
@@ -295,6 +301,7 @@ Contains:
|
||||
max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT
|
||||
actions_types = list()
|
||||
resistance_flags = FIRE_PROOF
|
||||
mutantrace_variation = NO_MUTANTRACE_VARIATION
|
||||
|
||||
/obj/item/clothing/suit/space/hardsuit/ert/paranormal
|
||||
name = "paranormal response team suit"
|
||||
@@ -304,6 +311,7 @@ Contains:
|
||||
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/ert/paranormal
|
||||
max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT
|
||||
resistance_flags = FIRE_PROOF
|
||||
tauric = TRUE //Citadel Add for tauric hardsuits
|
||||
|
||||
/obj/item/clothing/suit/space/hardsuit/ert/paranormal/Initialize()
|
||||
. = ..()
|
||||
|
||||
@@ -6,9 +6,10 @@
|
||||
permeability_coefficient = 0.01
|
||||
clothing_flags = THICKMATERIAL | BLOCK_GAS_SMOKE_EFFECT
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 100, "rad" = 60, "fire" = 30, "acid" = 100)
|
||||
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEHAIR|HIDEFACIALHAIR|HIDEFACE
|
||||
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEHAIR|HIDEFACIALHAIR|HIDEFACE|HIDESNOUT
|
||||
resistance_flags = ACID_PROOF
|
||||
flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH
|
||||
mutantrace_variation = MUTANTRACE_VARIATION
|
||||
|
||||
/obj/item/clothing/suit/bio_suit
|
||||
name = "bio suit"
|
||||
|
||||
@@ -180,6 +180,7 @@
|
||||
|
||||
/obj/item/clothing/suit/space/hardsuit/proc/ToggleHelmet()
|
||||
var/mob/living/carbon/human/H = src.loc
|
||||
var/datum/species/pref_species = H.dna.species
|
||||
if(!helmettype)
|
||||
return
|
||||
if(!helmet)
|
||||
@@ -193,6 +194,18 @@
|
||||
to_chat(H, "<span class='warning'>You're already wearing something on your head!</span>")
|
||||
return
|
||||
else if(H.equip_to_slot_if_possible(helmet,SLOT_HEAD,0,0,1))
|
||||
if(helmet.mutantrace_variation)
|
||||
if("mam_snouts" in pref_species.default_features)
|
||||
if(H.dna.features["mam_snouts"] != "None")
|
||||
helmet.muzzle_var = ALT_STYLE
|
||||
|
||||
else if("snout" in pref_species.default_features)
|
||||
if(H.dna.features["snout"] != "None")
|
||||
helmet.muzzle_var = ALT_STYLE
|
||||
else
|
||||
helmet.muzzle_var = NORMAL_STYLE
|
||||
H.update_inv_head()
|
||||
|
||||
to_chat(H, "<span class='notice'>You engage the helmet on the hardsuit.</span>")
|
||||
suittoggled = TRUE
|
||||
H.update_inv_wear_suit()
|
||||
|
||||
@@ -60,7 +60,7 @@
|
||||
icon_state = "bombsuit"
|
||||
clothing_flags = THICKMATERIAL
|
||||
armor = list("melee" = 20, "bullet" = 0, "laser" = 20,"energy" = 10, "bomb" = 100, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 50)
|
||||
flags_inv = HIDEFACE|HIDEMASK|HIDEEARS|HIDEEYES|HIDEHAIR|HIDEFACIALHAIR
|
||||
flags_inv = HIDEFACE|HIDEMASK|HIDEEARS|HIDEEYES|HIDEHAIR|HIDEFACIALHAIR|HIDESNOUT
|
||||
dynamic_hair_suffix = ""
|
||||
dynamic_fhair_suffix = ""
|
||||
cold_protection = HEAD
|
||||
@@ -71,6 +71,7 @@
|
||||
equip_delay_other = 70
|
||||
flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH
|
||||
resistance_flags = NONE
|
||||
mutantrace_variation = MUTANTRACE_VARIATION
|
||||
|
||||
|
||||
/obj/item/clothing/suit/bomb_suit
|
||||
@@ -123,13 +124,14 @@
|
||||
icon_state = "rad"
|
||||
desc = "A hood with radiation protective properties. The label reads, 'Made with lead. Please do not consume insulation.'"
|
||||
clothing_flags = THICKMATERIAL
|
||||
flags_inv = HIDEMASK|HIDEEARS|HIDEFACE|HIDEEYES|HIDEHAIR|HIDEFACIALHAIR
|
||||
flags_inv = HIDEMASK|HIDEEARS|HIDEFACE|HIDEEYES|HIDEHAIR|HIDEFACIALHAIR|HIDESNOUT
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 60, "rad" = 100, "fire" = 30, "acid" = 30)
|
||||
strip_delay = 60
|
||||
equip_delay_other = 60
|
||||
flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH
|
||||
resistance_flags = NONE
|
||||
rad_flags = RAD_PROTECT_CONTENTS
|
||||
mutantrace_variation = MUTANTRACE_VARIATION
|
||||
|
||||
/obj/item/clothing/suit/radiation
|
||||
name = "radiation suit"
|
||||
|
||||
@@ -122,28 +122,23 @@
|
||||
|
||||
/****************SEVA Suit and Mask****************/
|
||||
|
||||
/obj/item/clothing/suit/hooded/seva
|
||||
/obj/item/clothing/suit/hooded/explorer/seva
|
||||
name = "SEVA Suit"
|
||||
desc = "A fire-proof suit for exploring hot environments."
|
||||
icon_state = "seva"
|
||||
item_state = "seva"
|
||||
w_class = WEIGHT_CLASS_BULKY
|
||||
body_parts_covered = CHEST|GROIN|LEGS|ARMS
|
||||
max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT
|
||||
heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
|
||||
hoodtype = /obj/item/clothing/head/hooded/seva
|
||||
hoodtype = /obj/item/clothing/head/hooded/explorer/seva
|
||||
armor = list("melee" = 15, "bullet" = 10, "laser" = 10, "energy" = 10, "bomb" = 25, "bio" = 50, "rad" = 25, "fire" = 100, "acid" = 25)
|
||||
allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/resonator, /obj/item/mining_scanner, /obj/item/t_scanner/adv_mining_scanner, /obj/item/gun/energy/kinetic_accelerator, /obj/item/pickaxe)
|
||||
resistance_flags = FIRE_PROOF | GOLIATH_WEAKNESS
|
||||
tauric = TRUE //Citadel Add for tauric hardsuits
|
||||
|
||||
/obj/item/clothing/head/hooded/seva
|
||||
/obj/item/clothing/head/hooded/explorer/seva
|
||||
name = "SEVA Hood"
|
||||
desc = "A fire-proof hood for exploring hot environments."
|
||||
icon_state = "seva"
|
||||
item_state = "seva"
|
||||
body_parts_covered = HEAD
|
||||
flags_inv = HIDEHAIR|HIDEFACE|HIDEEARS
|
||||
max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT
|
||||
armor = list("melee" = 10, "bullet" = 10, "laser" = 10, "energy" = 10, "bomb" = 25, "bio" = 50, "rad" = 25, "fire" = 100, "acid" = 25)
|
||||
resistance_flags = FIRE_PROOF | GOLIATH_WEAKNESS
|
||||
@@ -152,43 +147,27 @@
|
||||
name = "SEVA Mask"
|
||||
desc = "A face-covering plate that can be connected to an air supply. Intended for use with the SEVA Suit."
|
||||
icon_state = "seva"
|
||||
clothing_flags = BLOCK_GAS_SMOKE_EFFECT | MASKINTERNALS
|
||||
flags_inv = HIDEEARS|HIDEEYES|HIDEFACE|HIDEFACIALHAIR
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
item_state = "seva"
|
||||
gas_transfer_coefficient = 0.01
|
||||
permeability_coefficient = 0.01
|
||||
flags_cover = MASKCOVERSEYES | MASKCOVERSMOUTH
|
||||
resistance_flags = FIRE_PROOF
|
||||
|
||||
/****************Exo-Suit and Mask****************/
|
||||
|
||||
/obj/item/clothing/suit/hooded/exo
|
||||
/obj/item/clothing/suit/hooded/explorer/exo
|
||||
name = "Exo-suit"
|
||||
desc = "A robust suit for exploring dangerous environments."
|
||||
icon_state = "exo"
|
||||
item_state = "exo"
|
||||
w_class = WEIGHT_CLASS_BULKY
|
||||
body_parts_covered = CHEST|GROIN|LEGS|ARMS
|
||||
min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT
|
||||
cold_protection = CHEST|GROIN|LEGS|ARMS
|
||||
max_heat_protection_temperature = FIRE_SUIT_MAX_TEMP_PROTECT
|
||||
heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
|
||||
hoodtype = /obj/item/clothing/head/hooded/exo
|
||||
hoodtype = /obj/item/clothing/head/hooded/explorer/exo
|
||||
armor = list("melee" = 65, "bullet" = 5, "laser" = 5, "energy" = 5, "bomb" = 60, "bio" = 25, "rad" = 10, "fire" = 0, "acid" = 0)
|
||||
allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/resonator, /obj/item/mining_scanner, /obj/item/t_scanner/adv_mining_scanner, /obj/item/gun/energy/kinetic_accelerator, /obj/item/pickaxe)
|
||||
resistance_flags = FIRE_PROOF | GOLIATH_RESISTANCE
|
||||
tauric = TRUE //Citadel Add for tauric hardsuits
|
||||
|
||||
/obj/item/clothing/head/hooded/exo
|
||||
/obj/item/clothing/head/hooded/explorer/exo
|
||||
name = "Exo-hood"
|
||||
desc = "A robust helmet for exploring dangerous environments."
|
||||
icon_state = "exo"
|
||||
item_state = "exo"
|
||||
body_parts_covered = HEAD
|
||||
flags_inv = HIDEHAIR|HIDEFACE|HIDEEARS
|
||||
min_cold_protection_temperature = FIRE_HELM_MIN_TEMP_PROTECT
|
||||
max_heat_protection_temperature = FIRE_HELM_MAX_TEMP_PROTECT
|
||||
armor = list("melee" = 65, "bullet" = 5, "laser" = 5, "energy" = 5, "bomb" = 60, "bio" = 25, "rad" = 10, "fire" = 0, "acid" = 0)
|
||||
resistance_flags = FIRE_PROOF | GOLIATH_RESISTANCE
|
||||
|
||||
@@ -196,11 +175,5 @@
|
||||
name = "Exosuit Mask"
|
||||
desc = "A face-covering mask that can be connected to an air supply. Intended for use with the Exosuit."
|
||||
icon_state = "exo"
|
||||
clothing_flags = BLOCK_GAS_SMOKE_EFFECT | MASKINTERNALS
|
||||
flags_inv = HIDEEARS|HIDEEYES|HIDEFACE|HIDEFACIALHAIR
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
item_state = "exo"
|
||||
gas_transfer_coefficient = 0.01
|
||||
permeability_coefficient = 0.01
|
||||
flags_cover = MASKCOVERSEYES | MASKCOVERSMOUTH
|
||||
resistance_flags = FIRE_PROOF
|
||||
@@ -329,7 +329,7 @@
|
||||
/obj/item/storage/backpack/duffelbag/mining_cloned
|
||||
name = "mining replacement kit"
|
||||
desc = "A large bag that has advance tools and a spare jumpsuit, boots, and gloves for a newly cloned miner to get back in the field. Even as a new Id!"
|
||||
|
||||
|
||||
/obj/item/storage/backpack/duffelbag/mining_cloned/PopulateContents()
|
||||
new /obj/item/pickaxe/mini(src)
|
||||
new /obj/item/clothing/under/rank/miner/lavaland(src)
|
||||
@@ -356,10 +356,10 @@
|
||||
var/drop_location = drop_location()
|
||||
switch(selection)
|
||||
if("Exo-suit")
|
||||
new /obj/item/clothing/suit/hooded/exo(drop_location)
|
||||
new /obj/item/clothing/suit/hooded/explorer/exo(drop_location)
|
||||
new /obj/item/clothing/mask/gas/exo(drop_location)
|
||||
if("SEVA suit")
|
||||
new /obj/item/clothing/suit/hooded/seva(drop_location)
|
||||
new /obj/item/clothing/suit/hooded/explorer/seva(drop_location)
|
||||
new /obj/item/clothing/mask/gas/seva(drop_location)
|
||||
|
||||
SSblackbox.record_feedback("tally", "suit_voucher_redeemed", 1, selection)
|
||||
|
||||
@@ -1267,7 +1267,7 @@
|
||||
/datum/sprite_accessory/tails_animated/human/none
|
||||
name = "None"
|
||||
icon_state = "none"
|
||||
|
||||
/*
|
||||
/datum/sprite_accessory/tails/human/cat
|
||||
name = "Cat"
|
||||
icon_state = "cat"
|
||||
@@ -1276,7 +1276,7 @@
|
||||
/datum/sprite_accessory/tails_animated/human/cat
|
||||
name = "Cat"
|
||||
icon_state = "cat"
|
||||
color_src = HAIR
|
||||
color_src = HAIR*/
|
||||
|
||||
/datum/sprite_accessory/snouts
|
||||
icon = 'icons/mob/mutant_bodyparts.dmi'
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
flags_cover = MASKCOVERSEYES | MASKCOVERSMOUTH
|
||||
layer = MOB_LAYER
|
||||
max_integrity = 100
|
||||
mutantrace_variation = MUTANTRACE_VARIATION
|
||||
|
||||
var/stat = CONSCIOUS //UNCONSCIOUS is the idle state in this case
|
||||
|
||||
|
||||
@@ -557,7 +557,7 @@ GLOBAL_LIST_EMPTY(roundstart_races)
|
||||
bodyparts_to_add -= "waggingspines"
|
||||
|
||||
if("snout" in mutant_bodyparts) //Take a closer look at that snout!
|
||||
if((H.wear_mask && (H.wear_mask.flags_inv & HIDEFACE)) || (H.head && (H.head.flags_inv & HIDEFACE)) || !HD || HD.status == BODYPART_ROBOTIC)
|
||||
if((H.wear_mask && (H.wear_mask.flags_inv & HIDESNOUT)) || (H.head && (H.head.flags_inv & HIDESNOUT)) || !HD || HD.status == BODYPART_ROBOTIC)
|
||||
bodyparts_to_add -= "snout"
|
||||
|
||||
if("frills" in mutant_bodyparts)
|
||||
@@ -569,7 +569,7 @@ GLOBAL_LIST_EMPTY(roundstart_races)
|
||||
bodyparts_to_add -= "horns"
|
||||
|
||||
if("ears" in mutant_bodyparts)
|
||||
if(!H.dna.features["ears"] || H.dna.features["ears"] == "None" || H.head && (H.head.flags_inv & HIDEHAIR) || (H.wear_mask && (H.wear_mask.flags_inv & HIDEHAIR)) || !HD || HD.status == BODYPART_ROBOTIC)
|
||||
if(!H.dna.features["ears"] || H.dna.features["ears"] == "None" || H.head && (H.head.flags_inv & HIDEEARS) || (H.wear_mask && (H.wear_mask.flags_inv & HIDEEARS)) || !HD || HD.status == BODYPART_ROBOTIC)
|
||||
bodyparts_to_add -= "ears"
|
||||
|
||||
if("wings" in mutant_bodyparts)
|
||||
@@ -607,11 +607,11 @@ GLOBAL_LIST_EMPTY(roundstart_races)
|
||||
bodyparts_to_add -= "mam_waggingtail"
|
||||
|
||||
if("mam_ears" in mutant_bodyparts)
|
||||
if(!H.dna.features["mam_ears"] || H.dna.features["mam_ears"] == "None" || H.head && (H.head.flags_inv & HIDEHAIR) || (H.wear_mask && (H.wear_mask.flags_inv & HIDEHAIR)) || !HD || HD.status == BODYPART_ROBOTIC)
|
||||
if(!H.dna.features["mam_ears"] || H.dna.features["mam_ears"] == "None" || H.head && (H.head.flags_inv & HIDEEARS) || (H.wear_mask && (H.wear_mask.flags_inv & HIDEEARS)) || !HD || HD.status == BODYPART_ROBOTIC)
|
||||
bodyparts_to_add -= "mam_ears"
|
||||
|
||||
if("mam_snouts" in mutant_bodyparts) //Take a closer look at that snout!
|
||||
if((H.wear_mask && (H.wear_mask.flags_inv & HIDEFACE)) || (H.head && (H.head.flags_inv & HIDEFACE)) || !HD || HD.status == BODYPART_ROBOTIC)
|
||||
if((H.wear_mask && (H.wear_mask.flags_inv & HIDESNOUT)) || (H.head && (H.head.flags_inv & HIDESNOUT)) || !HD || HD.status == BODYPART_ROBOTIC)
|
||||
bodyparts_to_add -= "mam_snouts"
|
||||
|
||||
if("taur" in mutant_bodyparts)
|
||||
@@ -691,8 +691,29 @@ GLOBAL_LIST_EMPTY(roundstart_races)
|
||||
S = GLOB.moth_wings_list[H.dna.features["moth_wings"]]
|
||||
if("caps")
|
||||
S = GLOB.caps_list[H.dna.features["caps"]]
|
||||
else
|
||||
S = citadel_mutant_bodyparts(bodypart, H)
|
||||
if("ipc_screen")
|
||||
S = GLOB.ipc_screens_list[H.dna.features["ipc_screen"]]
|
||||
if("ipc_antenna")
|
||||
S = GLOB.ipc_antennas_list[H.dna.features["ipc_antenna"]]
|
||||
if("mam_tail")
|
||||
S = GLOB.mam_tails_list[H.dna.features["mam_tail"]]
|
||||
if("mam_waggingtail")
|
||||
S = GLOB.mam_tails_animated_list[H.dna.features["mam_tail"]]
|
||||
if("mam_body_markings")
|
||||
S = GLOB.mam_body_markings_list[H.dna.features["mam_body_markings"]]
|
||||
if("mam_ears")
|
||||
S = GLOB.mam_ears_list[H.dna.features["mam_ears"]]
|
||||
if("mam_snouts")
|
||||
S = GLOB.mam_snouts_list[H.dna.features["mam_snouts"]]
|
||||
if("taur")
|
||||
S = GLOB.taur_list[H.dna.features["taur"]]
|
||||
if("xenodorsal")
|
||||
S = GLOB.xeno_dorsal_list[H.dna.features["xenodorsal"]]
|
||||
if("xenohead")
|
||||
S = GLOB.xeno_head_list[H.dna.features["xenohead"]]
|
||||
if("xenotail")
|
||||
S = GLOB.xeno_tail_list[H.dna.features["xenotail"]]
|
||||
|
||||
if(!S || S.icon_state == "none")
|
||||
continue
|
||||
|
||||
@@ -703,9 +724,9 @@ GLOBAL_LIST_EMPTY(roundstart_races)
|
||||
//A little rename so we don't have to use tail_lizard or tail_human when naming the sprites.
|
||||
if(bodypart == "tail_lizard" || bodypart == "tail_human" || bodypart == "mam_tail" || bodypart == "xenotail")
|
||||
bodypart = "tail"
|
||||
else if(bodypart == "waggingtail_lizard" || bodypart == "waggingtail_human")
|
||||
else if(bodypart == "waggingtail_lizard")
|
||||
bodypart = "waggingtail"
|
||||
if(bodypart == "mam_waggingtail")
|
||||
if(bodypart == "mam_waggingtail" || bodypart == "waggingtail_human")
|
||||
bodypart = "tailwag"
|
||||
if(bodypart == "mam_ears" || bodypart == "ears")
|
||||
bodypart = "ears"
|
||||
|
||||
@@ -324,13 +324,22 @@ There are several things that need to be remembered:
|
||||
/mob/living/carbon/human/update_inv_head()
|
||||
..()
|
||||
update_mutant_bodyparts()
|
||||
var/mutable_appearance/head_overlay = overlays_standing[HEAD_LAYER]
|
||||
if(head_overlay)
|
||||
if(head)
|
||||
remove_overlay(HEAD_LAYER)
|
||||
var/obj/item/clothing/head/H = head
|
||||
if(H.mutantrace_variation)
|
||||
if(H.muzzle_var == ALT_STYLE)
|
||||
H.alternate_worn_icon = 'modular_citadel/icons/mob/muzzled_helmet.dmi'
|
||||
else
|
||||
H.alternate_worn_icon = null
|
||||
|
||||
overlays_standing[HEAD_LAYER] = H.build_worn_icon(state = H.icon_state, default_layer = HEAD_LAYER, default_icon_file = ((head.alternate_worn_icon) ? H.alternate_worn_icon : 'icons/mob/head.dmi'))
|
||||
var/mutable_appearance/head_overlay = overlays_standing[HEAD_LAYER]
|
||||
|
||||
if(OFFSET_HEAD in dna.species.offset_features)
|
||||
head_overlay.pixel_x += dna.species.offset_features[OFFSET_HEAD][1]
|
||||
head_overlay.pixel_y += dna.species.offset_features[OFFSET_HEAD][2]
|
||||
overlays_standing[HEAD_LAYER] = head_overlay
|
||||
overlays_standing[HEAD_LAYER] = head_overlay
|
||||
apply_overlay(HEAD_LAYER)
|
||||
|
||||
/mob/living/carbon/human/update_inv_belt()
|
||||
@@ -429,13 +438,22 @@ There are several things that need to be remembered:
|
||||
|
||||
/mob/living/carbon/human/update_inv_wear_mask()
|
||||
..()
|
||||
var/mutable_appearance/mask_overlay = overlays_standing[FACEMASK_LAYER]
|
||||
if(mask_overlay)
|
||||
if(wear_mask)
|
||||
var/obj/item/clothing/mask/M = wear_mask
|
||||
remove_overlay(FACEMASK_LAYER)
|
||||
if(M.mutantrace_variation)
|
||||
if(M.muzzle_var == ALT_STYLE)
|
||||
M.alternate_worn_icon = 'modular_citadel/icons/mob/muzzled_mask.dmi'
|
||||
else
|
||||
M.alternate_worn_icon = null
|
||||
|
||||
overlays_standing[FACEMASK_LAYER] = M.build_worn_icon(state = wear_mask.icon_state, default_layer = FACEMASK_LAYER, default_icon_file = ((wear_mask.alternate_worn_icon) ? M.alternate_worn_icon : 'icons/mob/mask.dmi'))
|
||||
var/mutable_appearance/mask_overlay = overlays_standing[FACEMASK_LAYER]
|
||||
|
||||
if(OFFSET_FACEMASK in dna.species.offset_features)
|
||||
mask_overlay.pixel_x += dna.species.offset_features[OFFSET_FACEMASK][1]
|
||||
mask_overlay.pixel_y += dna.species.offset_features[OFFSET_FACEMASK][2]
|
||||
overlays_standing[FACEMASK_LAYER] = mask_overlay
|
||||
overlays_standing[FACEMASK_LAYER] = mask_overlay
|
||||
apply_overlay(FACEMASK_LAYER)
|
||||
update_mutant_bodyparts() //e.g. upgate needed because mask now hides lizard snout
|
||||
|
||||
|
||||
@@ -290,7 +290,7 @@
|
||||
gloves = /obj/item/clothing/gloves/color/black
|
||||
mask = /obj/item/clothing/mask/gas/explorer
|
||||
if(prob(20))
|
||||
suit = pickweight(list(/obj/item/clothing/suit/hooded/explorer = 6, /obj/item/clothing/suit/hooded/cloak/goliath = 2, /obj/item/clothing/suit/hooded/exo = 6, /obj/item/clothing/suit/hooded/seva = 6))
|
||||
suit = pickweight(list(/obj/item/clothing/suit/hooded/explorer = 6, /obj/item/clothing/suit/hooded/cloak/goliath = 2, /obj/item/clothing/suit/hooded/explorer/exo = 6, /obj/item/clothing/suit/hooded/explorer/seva = 6))
|
||||
if(prob(30))
|
||||
r_pocket = pickweight(list(/obj/item/stack/marker_beacon = 20, /obj/item/stack/spacecash/c1000 = 7, /obj/item/reagent_containers/hypospray/medipen/survival = 2, /obj/item/borg/upgrade/modkit/damage = 1 ))
|
||||
if(prob(10))
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#!/bin/sh
|
||||
#!/bin/bash
|
||||
|
||||
#Project dependencies file
|
||||
#Final authority on what's required to fully build the project
|
||||
@@ -11,7 +11,7 @@ export BYOND_MINOR=${LIST[1]}
|
||||
unset LIST
|
||||
|
||||
#rust_g git tag
|
||||
export RUST_G_VERSION=0.4.1
|
||||
export RUST_G_VERSION=0.4.2
|
||||
|
||||
#bsql git tag
|
||||
export BSQL_VERSION=v1.4.0.0
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
author: "Poojawa"
|
||||
delete-after: True
|
||||
changes:
|
||||
- imageadd: "added muzzled varients of space helmets and full masks"
|
||||
- imageadd: "added knight_grey to taur suits, all paranormal ERT now have tauric versions enabled"
|
||||
- bugfix: "Lava knights have digitigrade and tauric versions now"
|
||||
- rscadd: "Added a glass version of the gas mask, because it was in the files and looked nice. does everything regular ones do except make you an unknown"
|
||||
|
Before Width: | Height: | Size: 43 KiB After Width: | Height: | Size: 43 KiB |
@@ -86,6 +86,7 @@
|
||||
heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
|
||||
actions_types = list(/datum/action/item_action/toggle_helmet)
|
||||
var/obj/item/clothing/head/helmet/space/hardsuit/lavaknight/linkedhelm
|
||||
tauric = TRUE //Citadel Add for tauric hardsuits
|
||||
|
||||
var/energy_color = "#35FFF0"
|
||||
|
||||
@@ -101,7 +102,14 @@
|
||||
update_icon()
|
||||
|
||||
/obj/item/clothing/suit/space/hardsuit/lavaknight/update_icon()
|
||||
var/mutable_appearance/suit_overlay = mutable_appearance('modular_citadel/icons/lavaknight/item/suit.dmi', "knight_cydonia_overlay", LIGHTING_LAYER + 1)
|
||||
var/mutable_appearance/suit_overlay
|
||||
|
||||
if(taurmode == SNEK_TAURIC)
|
||||
suit_overlay = mutable_appearance('modular_citadel/icons/mob/taur_naga.dmi', "knight_cydonia_overlay", LIGHTING_LAYER + 1)
|
||||
else if(taurmode == PAW_TAURIC)
|
||||
suit_overlay = mutable_appearance('modular_citadel/icons/mob/taur_canine.dmi', "knight_cydonia_overlay", LIGHTING_LAYER + 1)
|
||||
else
|
||||
suit_overlay = mutable_appearance('modular_citadel/icons/lavaknight/item/suit.dmi', "knight_cydonia_overlay", LIGHTING_LAYER + 1)
|
||||
|
||||
if(energy_color)
|
||||
suit_overlay.color = energy_color
|
||||
@@ -122,7 +130,14 @@
|
||||
emissivelightsoff()
|
||||
|
||||
/obj/item/clothing/suit/space/hardsuit/lavaknight/proc/emissivelights(mob/user = usr)
|
||||
var/mutable_appearance/energy_overlay = mutable_appearance('modular_citadel/icons/lavaknight/mob/suit.dmi', "knight_cydonia_overlay", LIGHTING_LAYER + 1)
|
||||
var/mutable_appearance/energy_overlay
|
||||
if(taurmode == SNEK_TAURIC)
|
||||
energy_overlay = mutable_appearance('modular_citadel/icons/mob/taur_naga.dmi', "knight_cydonia_overlay", LIGHTING_LAYER + 1)
|
||||
else if(taurmode == PAW_TAURIC)
|
||||
energy_overlay = mutable_appearance('modular_citadel/icons/mob/taur_canine.dmi', "knight_cydonia_overlay", LIGHTING_LAYER + 1)
|
||||
else
|
||||
energy_overlay = mutable_appearance('modular_citadel/icons/lavaknight/mob/suit.dmi', "knight_cydonia_overlay", LIGHTING_LAYER + 1)
|
||||
|
||||
energy_overlay.color = energy_color
|
||||
energy_overlay.plane = LIGHTING_PLANE + 1
|
||||
user.cut_overlay(energy_overlay) //honk
|
||||
|
||||
@@ -159,7 +159,125 @@
|
||||
*/
|
||||
|
||||
/******************************************
|
||||
************ Human Ears/Tails *************
|
||||
*************** Human Ears ****************
|
||||
*******************************************/
|
||||
|
||||
/datum/sprite_accessory/ears/human/axolotl
|
||||
name = "Axolotl"
|
||||
icon_state = "axolotl"
|
||||
icon = 'modular_citadel/icons/mob/mam_ears.dmi'
|
||||
|
||||
/datum/sprite_accessory/ears/human/bear
|
||||
name = "Bear"
|
||||
icon_state = "bear"
|
||||
icon = 'modular_citadel/icons/mob/mam_ears.dmi'
|
||||
color_src = MATRIXED
|
||||
|
||||
/datum/sprite_accessory/ears/human/cow
|
||||
name = "Cow"
|
||||
icon_state = "cow"
|
||||
icon = 'modular_citadel/icons/mob/mam_ears.dmi'
|
||||
color_src = MATRIXED
|
||||
|
||||
/datum/sprite_accessory/ears/human/curled
|
||||
name = "Curled Horn"
|
||||
icon_state = "horn1"
|
||||
icon = 'modular_citadel/icons/mob/mam_ears.dmi'
|
||||
color_src = MUTCOLORS3
|
||||
|
||||
/datum/sprite_accessory/ears/human/eevee
|
||||
name = "Eevee"
|
||||
icon_state = "eevee"
|
||||
icon = 'modular_citadel/icons/mob/mam_ears.dmi'
|
||||
color_src = MATRIXED
|
||||
|
||||
/datum/sprite_accessory/ears/human/elephant
|
||||
name = "Elephant"
|
||||
icon_state = "elephant"
|
||||
icon = 'modular_citadel/icons/mob/mam_ears.dmi'
|
||||
color_src = MATRIXED
|
||||
|
||||
/datum/sprite_accessory/ears/fennec
|
||||
name = "Fennec"
|
||||
icon_state = "fennec"
|
||||
icon = 'modular_citadel/icons/mob/mam_ears.dmi'
|
||||
color_src = MATRIXED
|
||||
|
||||
/datum/sprite_accessory/ears/fish
|
||||
name = "Fish"
|
||||
icon_state = "fish"
|
||||
icon = 'modular_citadel/icons/mob/mam_ears.dmi'
|
||||
color_src = MATRIXED
|
||||
|
||||
/datum/sprite_accessory/ears/fox
|
||||
name = "Fox"
|
||||
icon_state = "fox"
|
||||
color_src = MATRIXED
|
||||
icon = 'modular_citadel/icons/mob/mam_ears.dmi'
|
||||
|
||||
/datum/sprite_accessory/ears/human/jellyfish
|
||||
name = "Jellyfish"
|
||||
icon_state = "jellyfish"
|
||||
color_src = HAIR
|
||||
|
||||
/datum/sprite_accessory/ears/lab
|
||||
name = "Dog, Floppy"
|
||||
icon_state = "lab"
|
||||
color_src = MATRIXED
|
||||
icon = 'modular_citadel/icons/mob/mam_ears.dmi'
|
||||
|
||||
/datum/sprite_accessory/ears/murid
|
||||
name = "Murid"
|
||||
icon_state = "murid"
|
||||
icon = 'modular_citadel/icons/mob/mam_ears.dmi'
|
||||
color_src = MATRIXED
|
||||
|
||||
/datum/sprite_accessory/ears/human/otie
|
||||
name = "Otusian"
|
||||
icon_state = "otie"
|
||||
color_src = MATRIXED
|
||||
icon = 'modular_citadel/icons/mob/mam_ears.dmi'
|
||||
|
||||
/datum/sprite_accessory/ears/human/pede
|
||||
name = "Scolipede"
|
||||
icon_state = "pede"
|
||||
icon = 'modular_citadel/icons/mob/mam_ears.dmi'
|
||||
color_src = MATRIXED
|
||||
|
||||
/datum/sprite_accessory/ears/human/rabbit
|
||||
name = "Rabbit"
|
||||
icon_state = "rabbit"
|
||||
color_src = MATRIXED
|
||||
icon = 'modular_citadel/icons/mob/mam_ears.dmi'
|
||||
|
||||
/datum/sprite_accessory/ears/human/sergal
|
||||
name = "Sergal"
|
||||
icon_state = "sergal"
|
||||
icon = 'modular_citadel/icons/mob/mam_ears.dmi'
|
||||
color_src = MATRIXED
|
||||
|
||||
/datum/sprite_accessory/ears/human/skunk
|
||||
name = "skunk"
|
||||
icon_state = "skunk"
|
||||
icon = 'modular_citadel/icons/mob/mam_ears.dmi'
|
||||
color_src = MATRIXED
|
||||
|
||||
/datum/sprite_accessory/ears/squirrel
|
||||
name = "Squirrel"
|
||||
icon_state = "squirrel"
|
||||
icon = 'modular_citadel/icons/mob/mam_ears.dmi'
|
||||
color_src = MATRIXED
|
||||
|
||||
/datum/sprite_accessory/ears/wolf
|
||||
name = "Wolf"
|
||||
icon_state = "wolf"
|
||||
color_src = MATRIXED
|
||||
icon = 'modular_citadel/icons/mob/mam_ears.dmi'
|
||||
|
||||
|
||||
|
||||
/******************************************
|
||||
************** Human Tails ****************
|
||||
*******************************************/
|
||||
|
||||
/datum/sprite_accessory/tails/human/ailurus
|
||||
@@ -168,11 +286,12 @@
|
||||
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
|
||||
color_src = MATRIXED
|
||||
|
||||
/datum/sprite_accessory/ears/human/axolotl
|
||||
name = "Axolotl"
|
||||
icon_state = "axolotl"
|
||||
icon = 'modular_citadel/icons/mob/mam_ears.dmi'
|
||||
|
||||
/datum/sprite_accessory/tails_animated/human/ailurus
|
||||
name = "Red Panda"
|
||||
icon_state = "wah"
|
||||
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
|
||||
color_src = MATRIXED
|
||||
|
||||
/datum/sprite_accessory/tails/human/axolotl
|
||||
name = "Axolotl"
|
||||
icon_state = "axolotl"
|
||||
@@ -185,12 +304,6 @@
|
||||
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
|
||||
color_src = MATRIXED
|
||||
|
||||
/datum/sprite_accessory/ears/human/bear
|
||||
name = "Bear"
|
||||
icon_state = "bear"
|
||||
icon = 'modular_citadel/icons/mob/mam_ears.dmi'
|
||||
color_src = MATRIXED
|
||||
|
||||
/datum/sprite_accessory/tails/human/bee
|
||||
name = "Bee"
|
||||
icon_state = "bee"
|
||||
@@ -202,7 +315,19 @@
|
||||
icon_state = "bee"
|
||||
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
|
||||
color_src = MATRIXED
|
||||
|
||||
/datum/sprite_accessory/tails/human/cat
|
||||
name = "Cat"
|
||||
icon_state = "cat"
|
||||
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
|
||||
color_src = HAIR
|
||||
|
||||
/datum/sprite_accessory/tails_animated/human/cat
|
||||
name = "Cat"
|
||||
icon_state = "cat"
|
||||
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
|
||||
color_src = HAIR
|
||||
|
||||
/datum/sprite_accessory/tails/human/catbig
|
||||
name = "Cat, Big"
|
||||
icon_state = "catbig"
|
||||
@@ -214,13 +339,7 @@
|
||||
icon_state = "catbig"
|
||||
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
|
||||
color_src = MATRIXED
|
||||
|
||||
/datum/sprite_accessory/ears/human/cow
|
||||
name = "Cow"
|
||||
icon_state = "cow"
|
||||
icon = 'modular_citadel/icons/mob/mam_ears.dmi'
|
||||
color_src = MATRIXED
|
||||
|
||||
|
||||
/datum/sprite_accessory/tails/human/cow
|
||||
name = "Cow"
|
||||
icon_state = "cow"
|
||||
@@ -240,19 +359,7 @@
|
||||
/datum/sprite_accessory/tails_animated/human/corvid
|
||||
name = "Corvid"
|
||||
icon_state = "crow"
|
||||
|
||||
/datum/sprite_accessory/ears/human/curled
|
||||
name = "Curled Horn"
|
||||
icon_state = "horn1"
|
||||
icon = 'modular_citadel/icons/mob/mam_ears.dmi'
|
||||
color_src = MUTCOLORS3
|
||||
|
||||
/datum/sprite_accessory/ears/human/eevee
|
||||
name = "Eevee"
|
||||
icon_state = "eevee"
|
||||
icon = 'modular_citadel/icons/mob/mam_ears.dmi'
|
||||
color_src = MATRIXED
|
||||
|
||||
|
||||
/datum/sprite_accessory/tails/human/eevee
|
||||
name = "Eevee"
|
||||
icon_state = "eevee"
|
||||
@@ -264,19 +371,7 @@
|
||||
icon_state = "eevee"
|
||||
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
|
||||
color_src = MATRIXED
|
||||
|
||||
/datum/sprite_accessory/ears/human/elephant
|
||||
name = "Elephant"
|
||||
icon_state = "elephant"
|
||||
icon = 'modular_citadel/icons/mob/mam_ears.dmi'
|
||||
color_src = MATRIXED
|
||||
|
||||
/datum/sprite_accessory/ears/fennec
|
||||
name = "Fennec"
|
||||
icon_state = "fennec"
|
||||
icon = 'modular_citadel/icons/mob/mam_ears.dmi'
|
||||
color_src = MATRIXED
|
||||
|
||||
|
||||
/datum/sprite_accessory/tails/human/fennec
|
||||
name = "Fennec"
|
||||
icon_state = "fennec"
|
||||
@@ -288,13 +383,7 @@
|
||||
icon_state = "fennec"
|
||||
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
|
||||
color_src = MATRIXED
|
||||
|
||||
/datum/sprite_accessory/ears/fish
|
||||
name = "Fish"
|
||||
icon_state = "fish"
|
||||
icon = 'modular_citadel/icons/mob/mam_ears.dmi'
|
||||
color_src = MATRIXED
|
||||
|
||||
|
||||
/datum/sprite_accessory/tails/human/fish
|
||||
name = "Fish"
|
||||
icon_state = "fish"
|
||||
@@ -306,13 +395,7 @@
|
||||
icon_state = "fish"
|
||||
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
|
||||
color_src = MATRIXED
|
||||
|
||||
/datum/sprite_accessory/ears/fox
|
||||
name = "Fox"
|
||||
icon_state = "fox"
|
||||
color_src = MATRIXED
|
||||
icon = 'modular_citadel/icons/mob/mam_ears.dmi'
|
||||
|
||||
|
||||
/datum/sprite_accessory/tails/human/fox
|
||||
name = "Fox"
|
||||
icon_state = "fox"
|
||||
@@ -360,12 +443,7 @@
|
||||
icon_state = "insect"
|
||||
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
|
||||
color_src = MATRIXED
|
||||
|
||||
/datum/sprite_accessory/ears/human/jellyfish
|
||||
name = "Jellyfish"
|
||||
icon_state = "jellyfish"
|
||||
color_src = HAIR
|
||||
|
||||
|
||||
/datum/sprite_accessory/tails/human/kitsune
|
||||
name = "Kitsune"
|
||||
icon_state = "kitsune"
|
||||
@@ -377,19 +455,7 @@
|
||||
icon_state = "kitsune"
|
||||
color_src = MATRIXED
|
||||
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
|
||||
|
||||
/datum/sprite_accessory/ears/lab
|
||||
name = "Dog, Floppy"
|
||||
icon_state = "lab"
|
||||
color_src = MATRIXED
|
||||
icon = 'modular_citadel/icons/mob/mam_ears.dmi'
|
||||
|
||||
/datum/sprite_accessory/ears/murid
|
||||
name = "Murid"
|
||||
icon_state = "murid"
|
||||
icon = 'modular_citadel/icons/mob/mam_ears.dmi'
|
||||
color_src = MATRIXED
|
||||
|
||||
|
||||
/datum/sprite_accessory/tails/human/murid
|
||||
name = "Murid"
|
||||
icon_state = "murid"
|
||||
@@ -401,13 +467,7 @@
|
||||
icon_state = "murid"
|
||||
color_src = MATRIXED
|
||||
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
|
||||
|
||||
/datum/sprite_accessory/ears/human/otie
|
||||
name = "Otusian"
|
||||
icon_state = "otie"
|
||||
color_src = MATRIXED
|
||||
icon = 'modular_citadel/icons/mob/mam_ears.dmi'
|
||||
|
||||
|
||||
/datum/sprite_accessory/tails/human/otie
|
||||
name = "Otusian"
|
||||
icon_state = "otie"
|
||||
@@ -431,13 +491,7 @@
|
||||
icon_state = "orca"
|
||||
color_src = MATRIXED
|
||||
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
|
||||
|
||||
/datum/sprite_accessory/ears/human/pede
|
||||
name = "Scolipede"
|
||||
icon_state = "pede"
|
||||
icon = 'modular_citadel/icons/mob/mam_ears.dmi'
|
||||
color_src = MATRIXED
|
||||
|
||||
|
||||
/datum/sprite_accessory/tails/human/pede
|
||||
name = "Scolipede"
|
||||
icon_state = "pede"
|
||||
@@ -449,13 +503,7 @@
|
||||
icon_state = "pede"
|
||||
color_src = MATRIXED
|
||||
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
|
||||
|
||||
/datum/sprite_accessory/ears/human/rabbit
|
||||
name = "Rabbit"
|
||||
icon_state = "rabbit"
|
||||
color_src = MATRIXED
|
||||
icon = 'modular_citadel/icons/mob/mam_ears.dmi'
|
||||
|
||||
|
||||
/datum/sprite_accessory/tails/human/rabbit
|
||||
name = "Rabbit"
|
||||
icon_state = "rabbit"
|
||||
@@ -467,13 +515,7 @@
|
||||
icon_state = "rabbit"
|
||||
color_src = MATRIXED
|
||||
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
|
||||
|
||||
/datum/sprite_accessory/ears/human/sergal
|
||||
name = "Sergal"
|
||||
icon_state = "sergal"
|
||||
icon = 'modular_citadel/icons/mob/mam_ears.dmi'
|
||||
color_src = MATRIXED
|
||||
|
||||
|
||||
/datum/sprite_accessory/tails/human/sergal
|
||||
name = "Sergal"
|
||||
icon_state = "sergal"
|
||||
@@ -485,13 +527,7 @@
|
||||
icon_state = "sergal"
|
||||
color_src = MATRIXED
|
||||
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
|
||||
|
||||
/datum/sprite_accessory/ears/human/skunk
|
||||
name = "skunk"
|
||||
icon_state = "skunk"
|
||||
icon = 'modular_citadel/icons/mob/mam_ears.dmi'
|
||||
color_src = MATRIXED
|
||||
|
||||
|
||||
/datum/sprite_accessory/tails/human/skunk
|
||||
name = "skunk"
|
||||
icon_state = "skunk"
|
||||
@@ -535,13 +571,7 @@
|
||||
/datum/sprite_accessory/tails_animated/human/straighttail
|
||||
name = "Straight Tail"
|
||||
icon_state = "straighttail"
|
||||
|
||||
/datum/sprite_accessory/ears/squirrel
|
||||
name = "Squirrel"
|
||||
icon_state = "squirrel"
|
||||
icon = 'modular_citadel/icons/mob/mam_ears.dmi'
|
||||
color_src = MATRIXED
|
||||
|
||||
|
||||
/datum/sprite_accessory/tails/human/squirrel
|
||||
name = "Squirrel"
|
||||
icon_state = "squirrel"
|
||||
@@ -565,7 +595,7 @@
|
||||
icon_state = "tentacle"
|
||||
color_src = MATRIXED
|
||||
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
|
||||
|
||||
|
||||
/datum/sprite_accessory/tails/human/tiger
|
||||
name = "Tiger"
|
||||
icon_state = "tiger"
|
||||
@@ -577,13 +607,7 @@
|
||||
icon_state = "tiger"
|
||||
color_src = MATRIXED
|
||||
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
|
||||
|
||||
/datum/sprite_accessory/ears/wolf
|
||||
name = "Wolf"
|
||||
icon_state = "wolf"
|
||||
color_src = MATRIXED
|
||||
icon = 'modular_citadel/icons/mob/mam_ears.dmi'
|
||||
|
||||
|
||||
/datum/sprite_accessory/tails/human/wolf
|
||||
name = "Wolf"
|
||||
icon_state = "wolf"
|
||||
@@ -595,9 +619,9 @@
|
||||
icon_state = "wolf"
|
||||
color_src = MATRIXED
|
||||
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
|
||||
|
||||
|
||||
/******************************************
|
||||
*************** Body Parts ****************
|
||||
*********** Mammal Body Parts *************
|
||||
*******************************************/
|
||||
|
||||
/datum/sprite_accessory/mam_ears
|
||||
@@ -1797,7 +1821,7 @@ datum/sprite_accessory/mam_tails/insect
|
||||
icon_state = "lunasune"
|
||||
|
||||
/*************** VIRGO PORTED HAIRS ****************************/
|
||||
#define VHAIR(_name, new_state) /datum/sprite_accessory/hair/##new_state/icon_state=#new_state;/datum/sprite_accessory/hair/##new_state/name = "Virgo - " + #_name
|
||||
#define VHAIR(_name, new_state) /datum/sprite_accessory/hair/##new_state/icon_state=#new_state;/datum/sprite_accessory/hair/##new_state/name = #_name + " (Virgo)"
|
||||
//VIRGO PORTED HAIRS
|
||||
VHAIR("Short Hair Rosa", hair_rosa_s)
|
||||
VHAIR("Short Hair 80s", hair_80s_s)
|
||||
@@ -1955,7 +1979,7 @@ VHAIR("Tressshoulder", hair_tressshoulder_s)
|
||||
//END
|
||||
#undef VHAIR
|
||||
|
||||
#define VFACE(_name, new_state) /datum/sprite_accessory/facial_hair/##new_state/icon_state=#new_state;;/datum/sprite_accessory/facial_hair/##new_state/name="Virgo" + #_name
|
||||
#define VFACE(_name, new_state) /datum/sprite_accessory/facial_hair/##new_state/icon_state=#new_state;;/datum/sprite_accessory/facial_hair/##new_state/name= #_name + " (Virgo)"
|
||||
VFACE("Watson", facial_watson_s)
|
||||
VFACE("Chaplin", facial_chaplin_s)
|
||||
VFACE("Fullbeard", facial_fullbeard_s)
|
||||
@@ -1994,4 +2018,4 @@ VFACE("Cropped Fullbeard", facial_croppedfullbeard_s)
|
||||
VFACE("Chinless Beard", facial_chinlessbeard_s)
|
||||
VFACE("Moonshiner", facial_moonshiner_s)
|
||||
VFACE("Tribearder", facial_tribearder_s)
|
||||
#undef VFACE
|
||||
#undef VFACE
|
||||
|
||||
@@ -82,7 +82,7 @@
|
||||
if(get_turf(target) == target_oldturf)
|
||||
target_table = locate(/obj/structure/table) in target_shove_turf.contents
|
||||
shove_blocked = TRUE
|
||||
|
||||
|
||||
if(shove_blocked && !target.is_shove_knockdown_blocked())
|
||||
var/directional_blocked = FALSE
|
||||
if(shove_dir in GLOB.cardinals) //Directional checks to make sure that we're not shoving through a windoor or something like that
|
||||
@@ -151,28 +151,3 @@
|
||||
|
||||
/obj/item/bodypart
|
||||
var/should_draw_citadel = FALSE
|
||||
|
||||
/datum/species/proc/citadel_mutant_bodyparts(bodypart, mob/living/carbon/human/H)
|
||||
switch(bodypart)
|
||||
if("ipc_screen")
|
||||
return GLOB.ipc_screens_list[H.dna.features["ipc_screen"]]
|
||||
if("ipc_antenna")
|
||||
return GLOB.ipc_antennas_list[H.dna.features["ipc_antenna"]]
|
||||
if("mam_tail")
|
||||
return GLOB.mam_tails_list[H.dna.features["mam_tail"]]
|
||||
if("mam_waggingtail")
|
||||
return GLOB.mam_tails_animated_list[H.dna.features["mam_tail"]]
|
||||
if("mam_body_markings")
|
||||
return GLOB.mam_body_markings_list[H.dna.features["mam_body_markings"]]
|
||||
if("mam_ears")
|
||||
return GLOB.mam_ears_list[H.dna.features["mam_ears"]]
|
||||
if("mam_snouts")
|
||||
return GLOB.mam_snouts_list[H.dna.features["mam_snouts"]]
|
||||
if("taur")
|
||||
return GLOB.taur_list[H.dna.features["taur"]]
|
||||
if("xenodorsal")
|
||||
return GLOB.xeno_dorsal_list[H.dna.features["xenodorsal"]]
|
||||
if("xenohead")
|
||||
return GLOB.xeno_head_list[H.dna.features["xenohead"]]
|
||||
if("xenotail")
|
||||
return GLOB.xeno_tail_list[H.dna.features["xenotail"]]
|
||||
|
||||
|
After Width: | Height: | Size: 43 KiB |
|
After Width: | Height: | Size: 74 KiB |
|
After Width: | Height: | Size: 45 KiB |
|
Before Width: | Height: | Size: 356 KiB After Width: | Height: | Size: 360 KiB |
|
Before Width: | Height: | Size: 110 KiB After Width: | Height: | Size: 118 KiB |
|
Before Width: | Height: | Size: 99 KiB After Width: | Height: | Size: 107 KiB |
@@ -15,10 +15,10 @@ var/admin_weight = 5 // admins are more likely to join a server with less admins
|
||||
var/player_substr = "players=" // search for this substring to locate # of players
|
||||
var/admin_substr = "admins=" // search for this to locate # of admins
|
||||
|
||||
world
|
||||
/world
|
||||
name = "TGstation Redirector"
|
||||
|
||||
world/New()
|
||||
/world/New()
|
||||
..()
|
||||
gen_configs()
|
||||
|
||||
@@ -29,7 +29,7 @@ world/New()
|
||||
|
||||
var/link = ""
|
||||
|
||||
mob/Login()
|
||||
/mob/Login()
|
||||
..()
|
||||
|
||||
var/list/weights = list()
|
||||
@@ -60,7 +60,7 @@ mob/Login()
|
||||
|
||||
src << link(serverlink)
|
||||
|
||||
proc/extract(var/data, var/type = PLAYERS)
|
||||
/proc/extract(var/data, var/type = PLAYERS)
|
||||
|
||||
var/nextpos = 0
|
||||
|
||||
|
||||
@@ -14,6 +14,13 @@
|
||||
* @author Miloslav Hula (https://github.com/milo)
|
||||
*/
|
||||
|
||||
define('S_LINK_EMBED', 1<<0);
|
||||
define('S_MENTIONS', 1<<1);
|
||||
define('S_MARKDOWN', 1<<2);
|
||||
define('S_HTML_COMMENTS', 1<<3);
|
||||
|
||||
define('F_UNVALIDATED_USER', 1<<0);
|
||||
define('F_SECRET_PR', 1<<1);
|
||||
|
||||
//CONFIGS ARE IN SECRET.PHP, THESE ARE JUST DEFAULTS!
|
||||
|
||||
@@ -32,17 +39,21 @@ $validation = "org";
|
||||
$validation_count = 1;
|
||||
$tracked_branch = 'master';
|
||||
$require_changelogs = false;
|
||||
$discordWebHooks = array();
|
||||
|
||||
require_once 'secret.php';
|
||||
|
||||
//CONFIG END
|
||||
function log_error($msg) {
|
||||
echo htmlSpecialChars($msg);
|
||||
file_put_contents('htwebhookerror.log', '['.date(DATE_ATOM).'] '.$msg.PHP_EOL, FILE_APPEND);
|
||||
}
|
||||
set_error_handler(function($severity, $message, $file, $line) {
|
||||
throw new \ErrorException($message, 0, $severity, $file, $line);
|
||||
});
|
||||
set_exception_handler(function($e) {
|
||||
header('HTTP/1.1 500 Internal Server Error');
|
||||
echo "Error on line {$e->getLine()}: " . htmlSpecialChars($e->getMessage());
|
||||
file_put_contents('htwebhookerror.log', '['.date(DATE_ATOM).'] '."Error on line {$e->getLine()}: " . $e->getMessage().PHP_EOL, FILE_APPEND);
|
||||
log_error('Error on line ' . $e->getLine() . ': ' . $e->getMessage());
|
||||
die();
|
||||
});
|
||||
$rawPost = NULL;
|
||||
@@ -110,24 +121,38 @@ switch (strtolower($_SERVER['HTTP_X_GITHUB_EVENT'])) {
|
||||
die();
|
||||
}
|
||||
|
||||
function apisend($url, $method = 'GET', $content = NULL) {
|
||||
global $apiKey;
|
||||
function apisend($url, $method = 'GET', $content = null, $authorization = null) {
|
||||
if (is_array($content))
|
||||
$content = json_encode($content);
|
||||
|
||||
$headers = array();
|
||||
$headers[] = 'Content-type: application/json';
|
||||
if ($authorization)
|
||||
$headers[] = 'Authorization: ' . $authorization;
|
||||
|
||||
$scontext = array('http' => array(
|
||||
'method' => $method,
|
||||
'header' =>
|
||||
"Content-type: application/json\r\n".
|
||||
'Authorization: token ' . $apiKey,
|
||||
'method' => $method,
|
||||
'header' => implode("\r\n", $headers),
|
||||
'ignore_errors' => true,
|
||||
'user_agent' => 'tgstation13.org-Github-Automation-Tools'
|
||||
));
|
||||
|
||||
if ($content)
|
||||
$scontext['http']['content'] = $content;
|
||||
|
||||
return file_get_contents($url, false, stream_context_create($scontext));
|
||||
|
||||
}
|
||||
|
||||
function github_apisend($url, $method = 'GET', $content = NULL) {
|
||||
global $apiKey;
|
||||
return apisend($url, $method, $content, 'token ' . $apiKey);
|
||||
}
|
||||
|
||||
function discord_webhook_send($webhook, $content) {
|
||||
return apisend($webhook, 'POST', $content);
|
||||
}
|
||||
|
||||
function validate_user($payload) {
|
||||
global $validation, $validation_count;
|
||||
$query = array();
|
||||
@@ -148,7 +173,7 @@ function validate_user($payload) {
|
||||
$querystring = '';
|
||||
foreach($query as $key => $value)
|
||||
$querystring .= ($querystring == '' ? '' : '+') . urlencode($key) . ':' . urlencode($value);
|
||||
$res = apisend('https://api.github.com/search/issues?q='.$querystring);
|
||||
$res = github_apisend('https://api.github.com/search/issues?q='.$querystring);
|
||||
$res = json_decode($res, TRUE);
|
||||
return $res['total_count'] >= (int)$validation_count;
|
||||
|
||||
@@ -156,9 +181,9 @@ function validate_user($payload) {
|
||||
|
||||
function get_labels($payload){
|
||||
$url = $payload['pull_request']['issue_url'] . '/labels';
|
||||
$existing_labels = json_decode(apisend($url), true);
|
||||
$existing_labels = json_decode(github_apisend($url), true);
|
||||
$existing = array();
|
||||
foreach($existing_labels as $label)
|
||||
foreach((array) $existing_labels as $label)
|
||||
$existing[] = $label['name'];
|
||||
return $existing;
|
||||
}
|
||||
@@ -174,7 +199,6 @@ function check_tag_and_replace($payload, $title_tag, $label, &$array_to_add_labe
|
||||
|
||||
function set_labels($payload, $labels, $remove) {
|
||||
$existing = get_labels($payload);
|
||||
|
||||
$tags = array();
|
||||
|
||||
$tags = array_merge($labels, $existing);
|
||||
@@ -188,20 +212,20 @@ function set_labels($payload, $labels, $remove) {
|
||||
$final[] = $t;
|
||||
|
||||
$url = $payload['pull_request']['issue_url'] . '/labels';
|
||||
echo apisend($url, 'PUT', $final);
|
||||
echo github_apisend($url, 'PUT', $final);
|
||||
}
|
||||
|
||||
//rip bs-12
|
||||
function tag_pr($payload, $opened) {
|
||||
//get the mergeable state
|
||||
$url = $payload['pull_request']['url'];
|
||||
$payload['pull_request'] = json_decode(apisend($url), TRUE);
|
||||
$payload['pull_request'] = json_decode(github_apisend($url), TRUE);
|
||||
if($payload['pull_request']['mergeable'] == null) {
|
||||
//STILL not ready. Give it a bit, then try one more time
|
||||
sleep(10);
|
||||
$payload['pull_request'] = json_decode(apisend($url), TRUE);
|
||||
$payload['pull_request'] = json_decode(github_apisend($url), TRUE);
|
||||
}
|
||||
|
||||
|
||||
$tags = array();
|
||||
$title = $payload['pull_request']['title'];
|
||||
if($opened) { //you only have one shot on these ones so as to not annoy maintainers
|
||||
@@ -249,16 +273,16 @@ function remove_ready_for_review($payload, $labels = null){
|
||||
if($index !== FALSE)
|
||||
unset($labels[$index]);
|
||||
$url = $payload['pull_request']['issue_url'] . '/labels';
|
||||
apisend($url, 'PUT', $labels);
|
||||
github_apisend($url, 'PUT', $labels);
|
||||
}
|
||||
|
||||
function dismiss_review($payload, $id, $reason){
|
||||
$content = array('message' => $reason);
|
||||
apisend($payload['pull_request']['url'] . '/reviews/' . $id . '/dismissals', 'PUT', $content);
|
||||
github_apisend($payload['pull_request']['url'] . '/reviews/' . $id . '/dismissals', 'PUT', $content);
|
||||
}
|
||||
|
||||
function get_reviews($payload){
|
||||
return json_decode(apisend($payload['pull_request']['url'] . '/reviews'), true);
|
||||
return json_decode(github_apisend($payload['pull_request']['url'] . '/reviews'), true);
|
||||
}
|
||||
|
||||
function check_ready_for_review($payload, $labels = null, $remove = array()){
|
||||
@@ -308,7 +332,7 @@ function check_ready_for_review($payload, $labels = null, $remove = array()){
|
||||
if(count($reviews_ids_with_changes_requested) > 0){
|
||||
//now get the review comments for the offending reviews
|
||||
|
||||
$review_comments = json_decode(apisend($payload['pull_request']['review_comments_url']), true);
|
||||
$review_comments = json_decode(github_apisend($payload['pull_request']['review_comments_url']), true);
|
||||
|
||||
foreach($review_comments as $C){
|
||||
//make sure they are part of an offending review
|
||||
@@ -350,7 +374,7 @@ function check_dismiss_changelog_review($payload){
|
||||
if($R['body'] == $review_message && strtolower($R['state']) == 'changes_requested')
|
||||
return;
|
||||
//otherwise make it ourself
|
||||
apisend($payload['pull_request']['url'] . '/reviews', 'POST', array('body' => $review_message, 'event' => 'REQUEST_CHANGES'));
|
||||
github_apisend($payload['pull_request']['url'] . '/reviews', 'POST', array('body' => $review_message, 'event' => 'REQUEST_CHANGES'));
|
||||
}
|
||||
else
|
||||
//kill previous reviews
|
||||
@@ -403,28 +427,191 @@ function handle_pr($payload) {
|
||||
return;
|
||||
}
|
||||
|
||||
$pr_flags = 0;
|
||||
if (strpos(strtolower($payload['pull_request']['title']), '[s]') !== false) {
|
||||
echo "PR Announcement Halted; Secret tag detected.\n";
|
||||
return;
|
||||
$pr_flags |= F_SECRET_PR;
|
||||
}
|
||||
if (!$validated) {
|
||||
echo "PR Announcement Halted; User not validated.\n";
|
||||
return;
|
||||
$pr_flags |= F_UNVALIDATED_USER;
|
||||
}
|
||||
discord_announce($action, $payload, $pr_flags);
|
||||
game_announce($action, $payload, $pr_flags);
|
||||
|
||||
}
|
||||
|
||||
function filter_announce_targets($targets, $owner, $repo, $action, $pr_flags) {
|
||||
foreach ($targets as $i=>$target) {
|
||||
if (isset($target['exclude_events']) && in_array($action, array_map('strtolower', $target['exclude_events']))) {
|
||||
unset($targets[$i]);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (isset($target['announce_secret']) && $target['announce_secret']) {
|
||||
if (!($pr_flags & F_SECRET_PR) && $target['announce_secret'] === 'only') {
|
||||
unset($targets[$i]);
|
||||
continue;
|
||||
}
|
||||
} else if ($pr_flags & F_SECRET_PR) {
|
||||
unset($targets[$i]);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (isset($target['announce_unvalidated']) && $target['announce_unvalidated']) {
|
||||
if (!($pr_flags & F_UNVALIDATED_USER) && $target['announce_unvalidated'] === 'only') {
|
||||
unset($targets[$i]);
|
||||
continue;
|
||||
}
|
||||
} else if ($pr_flags & F_UNVALIDATED_USER) {
|
||||
unset($targets[$i]);
|
||||
continue;
|
||||
}
|
||||
|
||||
$wildcard = false;
|
||||
if (isset($target['include_repos'])) {
|
||||
foreach ($target['include_repos'] as $match_string) {
|
||||
$owner_repo_pair = explode('/', strtolower($match_string));
|
||||
if (count($owner_repo_pair) != 2) {
|
||||
log_error('Bad include repo: `'. $match_string.'`');
|
||||
continue;
|
||||
}
|
||||
if (strtolower($owner) == $owner_repo_pair[0]) {
|
||||
if (strtolower($repo) == $owner_repo_pair[1])
|
||||
continue 2; //don't parse excludes when we have an exact include match
|
||||
if ($owner_repo_pair[1] == '*') {
|
||||
$wildcard = true;
|
||||
continue; //do parse excludes when we have a wildcard match (but check the other entries for exact matches first)
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!$wildcard) {
|
||||
unset($targets[$i]);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
if (isset($target['exclude_repos']))
|
||||
foreach ($target['exclude_repos'] as $match_string) {
|
||||
$owner_repo_pair = explode('/', strtolower($match_string));
|
||||
if (count($owner_repo_pair) != 2) {
|
||||
log_error('Bad exclude repo: `'. $match_string.'`');
|
||||
continue;
|
||||
}
|
||||
if (strtolower($owner) == $owner_repo_pair[0]) {
|
||||
if (strtolower($repo) == $owner_repo_pair[1]) {
|
||||
unset($targets[$i]);
|
||||
continue 2;
|
||||
}
|
||||
if ($owner_repo_pair[1] == '*') {
|
||||
if ($wildcard)
|
||||
log_error('Identical wildcard include and exclude: `'.$match_string.'`. Excluding.');
|
||||
unset($targets[$i]);
|
||||
continue 2;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return $targets;
|
||||
}
|
||||
|
||||
function game_announce($action, $payload, $pr_flags) {
|
||||
global $servers;
|
||||
|
||||
$msg = '['.$payload['pull_request']['base']['repo']['full_name'].'] Pull Request '.$action.' by '.htmlSpecialChars($payload['sender']['login']).': <a href="'.$payload['pull_request']['html_url'].'">'.htmlSpecialChars('#'.$payload['pull_request']['number'].' '.$payload['pull_request']['user']['login'].' - '.$payload['pull_request']['title']).'</a>';
|
||||
sendtoallservers('?announce='.urlencode($msg), $payload);
|
||||
|
||||
$game_servers = filter_announce_targets($servers, $payload['pull_request']['base']['repo']['owner']['login'], $payload['pull_request']['base']['repo']['name'], $action, $pr_flags);
|
||||
|
||||
$msg = '?announce='.urlencode($msg).'&payload='.urlencode(json_encode($payload));
|
||||
|
||||
foreach ($game_servers as $serverid => $server) {
|
||||
$server_message = $msg;
|
||||
if (isset($server['comskey']))
|
||||
$server_message .= '&key='.urlencode($server['comskey']);
|
||||
game_server_send($server['address'], $server['port'], $server_message);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
function discord_announce($action, $payload, $pr_flags) {
|
||||
global $discordWebHooks;
|
||||
$color;
|
||||
switch ($action) {
|
||||
case 'reopened':
|
||||
case 'opened':
|
||||
$color = 0x2cbe4e;
|
||||
break;
|
||||
case 'closed':
|
||||
$color = 0xcb2431;
|
||||
break;
|
||||
case 'merged':
|
||||
$color = 0x6f42c1;
|
||||
break;
|
||||
default:
|
||||
return;
|
||||
}
|
||||
$data = array(
|
||||
'username' => 'GitHub',
|
||||
'avatar_url' => $payload['pull_request']['base']['user']['avatar_url'],
|
||||
);
|
||||
|
||||
$content = 'Pull Request #'.$payload['pull_request']['number'].' *'.$action.'* by '.discord_sanitize($payload['sender']['login'])."\n".discord_sanitize($payload['pull_request']['user']['login']).' - __**'.discord_sanitize($payload['pull_request']['title']).'**__'."\n".'<'.$payload['pull_request']['html_url'].'>';
|
||||
|
||||
$embeds = array(
|
||||
array(
|
||||
'title' => '__**'.discord_sanitize($payload['pull_request']['title'], S_MARKDOWN).'**__',
|
||||
'description' => discord_sanitize(str_replace(array("\r\n", "\n"), array(' ', ' '), substr($payload['pull_request']['body'], 0, 320)), S_HTML_COMMENTS),
|
||||
'url' => $payload['pull_request']['html_url'],
|
||||
'color' => $color,
|
||||
'author' => array(
|
||||
'name' => discord_sanitize($payload['pull_request']['user']['login'], S_MARKDOWN),
|
||||
'url' => $payload['pull_request']['user']['html_url'],
|
||||
'icon_url' => $payload['pull_request']['user']['avatar_url']
|
||||
),
|
||||
'footer' => array(
|
||||
'text' => '#'.$payload['pull_request']['number'].' '.discord_sanitize($payload['pull_request']['base']['repo']['full_name'], S_MARKDOWN).' '.discord_sanitize($payload['pull_request']['head']['ref'], S_MARKDOWN).' -> '.discord_sanitize($payload['pull_request']['base']['ref'], S_MARKDOWN),
|
||||
'icon_url' => $payload['pull_request']['base']['user']['avatar_url']
|
||||
)
|
||||
)
|
||||
);
|
||||
$discordWebHook_targets = filter_announce_targets($discordWebHooks, $payload['pull_request']['base']['repo']['owner']['login'], $payload['pull_request']['base']['repo']['name'], $action, $pr_flags);
|
||||
foreach ($discordWebHook_targets as $discordWebHook) {
|
||||
$sending_data = $data;
|
||||
if (isset($discordWebHook['embed']) && $discordWebHook['embed']) {
|
||||
$sending_data['embeds'] = $embeds;
|
||||
if (!isset($discordWebHook['no_text']) || !$discordWebHook['no_text'])
|
||||
$sending_data['content'] = $content;
|
||||
} else {
|
||||
$sending_data['content'] = $content;
|
||||
}
|
||||
discord_webhook_send($discordWebHook['url'], $sending_data);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
function discord_sanitize($text, $flags = S_MENTIONS|S_LINK_EMBED|S_MARKDOWN) {
|
||||
if ($flags & S_MARKDOWN)
|
||||
$text = str_ireplace(array('\\', '*', '_', '~', '`', '|'), (array('\\\\', '\\*', '\\_', '\\~', '\\`', '\\|')), $text);
|
||||
|
||||
if ($flags & S_HTML_COMMENTS)
|
||||
$text = preg_replace('/<!--(.*)-->/Uis', '', $text);
|
||||
|
||||
if ($flags & S_MENTIONS)
|
||||
$text = str_ireplace(array('@everyone', '@here', '<@'), array('`@everyone`', '`@here`', '@<'), $text);
|
||||
|
||||
if ($flags & S_LINK_EMBED)
|
||||
$text = preg_replace("/((https?|ftp|byond)\:\/\/)([a-z0-9-.]*)\.([a-z]{2,3})(\:[0-9]{2,5})?(\/(?:[a-z0-9+\$_-]\.?)+)*\/?(\?[a-z+&\$_.-][a-z0-9;:@&%=+\/\$_.-]*)?(#[a-z_.-][a-z0-9+\$_.-]*)?/mi", '<$0>', $text);
|
||||
|
||||
return $text;
|
||||
}
|
||||
|
||||
//creates a comment on the payload issue
|
||||
function create_comment($payload, $comment){
|
||||
apisend($payload['pull_request']['comments_url'], 'POST', json_encode(array('body' => $comment)));
|
||||
github_apisend($payload['pull_request']['comments_url'], 'POST', json_encode(array('body' => $comment)));
|
||||
}
|
||||
|
||||
//returns the payload issue's labels as a flat array
|
||||
function get_pr_labels_array($payload){
|
||||
$url = $payload['pull_request']['issue_url'] . '/labels';
|
||||
$issue = json_decode(apisend($url), true);
|
||||
$issue = json_decode(github_apisend($url), true);
|
||||
$result = array();
|
||||
foreach($issue as $l)
|
||||
$result[] = $l['name'];
|
||||
@@ -492,13 +679,13 @@ function is_maintainer($payload, $author){
|
||||
$repo_is_org = $payload['pull_request']['base']['repo']['owner']['type'] == 'Organization';
|
||||
if($maintainer_team_id == null || !$repo_is_org) {
|
||||
$collaburl = str_replace('{/collaborator}', '/' . $author, $payload['pull_request']['base']['repo']['collaborators_url']) . '/permission';
|
||||
$perms = json_decode(apisend($collaburl), true);
|
||||
$perms = json_decode(github_apisend($collaburl), true);
|
||||
$permlevel = $perms['permission'];
|
||||
return $permlevel == 'admin' || $permlevel == 'write';
|
||||
}
|
||||
else {
|
||||
$check_url = 'https://api.github.com/teams/' . $maintainer_team_id . '/memberships/' . $author;
|
||||
$result = json_decode(apisend($check_url), true);
|
||||
$result = json_decode(github_apisend($check_url), true);
|
||||
return isset($result['state']) && $result['state'] == 'active';
|
||||
}
|
||||
}
|
||||
@@ -530,7 +717,7 @@ $github_diff = null;
|
||||
|
||||
function get_diff($payload) {
|
||||
global $github_diff;
|
||||
if ($github_diff === null) {
|
||||
if ($github_diff === null && $payload['pull_request']['diff_url']) {
|
||||
//go to the diff url
|
||||
$url = $payload['pull_request']['diff_url'];
|
||||
$github_diff = file_get_contents($url);
|
||||
@@ -597,7 +784,7 @@ function checkchangelog($payload, $compile = true) {
|
||||
$foundcltag = false;
|
||||
foreach ($body as $line) {
|
||||
$line = trim($line);
|
||||
if (substr($line,0,4) == ':cl:' || substr($line,0,1) == '🆑') {
|
||||
if (substr($line,0,4) == ':cl:' || substr($line,0,1) == '??') {
|
||||
$incltag = true;
|
||||
$foundcltag = true;
|
||||
$pos = strpos($line, " ");
|
||||
@@ -607,7 +794,7 @@ function checkchangelog($payload, $compile = true) {
|
||||
$username = $tmp;
|
||||
}
|
||||
continue;
|
||||
} else if (substr($line,0,5) == '/:cl:' || substr($line,0,6) == '/ :cl:' || substr($line,0,5) == ':/cl:' || substr($line,0,5) == '/🆑' || substr($line,0,6) == '/ 🆑' ) {
|
||||
} else if (substr($line,0,5) == '/:cl:' || substr($line,0,6) == '/ :cl:' || substr($line,0,5) == ':/cl:' || substr($line,0,5) == '/??' || substr($line,0,6) == '/ ??' ) {
|
||||
$incltag = false;
|
||||
$changelogbody = array_merge($changelogbody, $currentchangelogblock);
|
||||
continue;
|
||||
@@ -773,25 +960,10 @@ function checkchangelog($payload, $compile = true) {
|
||||
);
|
||||
|
||||
$filename = '/html/changelogs/AutoChangeLog-pr-'.$payload['pull_request']['number'].'.yml';
|
||||
echo apisend($payload['pull_request']['base']['repo']['url'].'/contents'.$filename, 'PUT', $content);
|
||||
echo github_apisend($payload['pull_request']['base']['repo']['url'].'/contents'.$filename, 'PUT', $content);
|
||||
}
|
||||
|
||||
function sendtoallservers($str, $payload = null) {
|
||||
global $servers;
|
||||
if (!empty($payload))
|
||||
$str .= '&payload='.urlencode(json_encode($payload));
|
||||
foreach ($servers as $serverid => $server) {
|
||||
$msg = $str;
|
||||
if (isset($server['comskey']))
|
||||
$msg .= '&key='.urlencode($server['comskey']);
|
||||
$rtn = export($server['address'], $server['port'], $msg);
|
||||
echo "Server Number $serverid replied: $rtn\n";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
function export($addr, $port, $str) {
|
||||
function game_server_send($addr, $port, $str) {
|
||||
// All queries must begin with a question mark (ie "?players")
|
||||
if($str{0} != '?') $str = ('?' . $str);
|
||||
|
||||
|
||||
@@ -4,7 +4,6 @@
|
||||
//Github lets you have it sign the message with a secret that you can validate. This prevents people from faking events.
|
||||
//This var should match the secret you configured for this webhook on github.
|
||||
//This is required as otherwise somebody could trick the script into leaking the api key.
|
||||
|
||||
$hookSecret = '08ajh0qj93209qj90jfq932j32r';
|
||||
|
||||
//Api key for pushing changelogs.
|
||||
@@ -14,23 +13,12 @@ $apiKey = '209ab8d879c0f987d06a09b9d879c0f987d06a09b9d8787d0a089c';
|
||||
//Used to prevent potential RCEs
|
||||
$repoOwnerAndName = "tgstation/tgstation";
|
||||
|
||||
//servers to announce PRs to
|
||||
$servers = array();
|
||||
/*
|
||||
$servers[0] = array();
|
||||
$servers[0]['address'] = 'game.tgstation13.org';
|
||||
$servers[0]['port'] = '1337';
|
||||
$servers[0]['comskey'] = '89aj90cq2fm0amc90832mn9rm90';
|
||||
$servers[1] = array();
|
||||
$servers[1]['address'] = 'game.tgstation13.org';
|
||||
$servers[1]['port'] = '2337';
|
||||
$servers[1]['comskey'] = '89aj90cq2fm0amc90832mn9rm90';
|
||||
*/
|
||||
|
||||
//Auto update settings
|
||||
$enable_live_tracking = true; //auto update this file from the repository
|
||||
$path_to_script = 'tools/WebhookProcessor/github_webhook_processor.php';
|
||||
$tracked_branch = "master";
|
||||
|
||||
//PR balance settings.
|
||||
$trackPRBalance = true; //set this to false to disable PR balance tracking
|
||||
$prBalanceJson = ''; //Set this to the path you'd like the writable pr balance file to be stored, not setting it writes it to the working directory
|
||||
$startingPRBalance = 5; //Starting balance for never before seen users
|
||||
@@ -44,6 +32,7 @@ $maintainer_team_id = 133041; //org team id that is exempt from PR balance syste
|
||||
// "org" - user has to have a pr merged in any repo in the organization (for repos owned directly by users, this applies to any repo directly owned by the same user.)
|
||||
// "disable" - disables.
|
||||
//defaults to org if left blank or given invalid values.
|
||||
//This can also be ignored on a per webhook or per game server bases.
|
||||
$validation = "org";
|
||||
|
||||
//how many merged prs must they have under the rules above to have their pr announced to the game servers.
|
||||
@@ -51,3 +40,94 @@ $validation_count = 1;
|
||||
|
||||
//enforce changelogs on PRs
|
||||
$require_changelogs = false;
|
||||
|
||||
/*
|
||||
* Announcement Settings.
|
||||
* Allows you to announce prs to discord webhooks or the game servers
|
||||
*/
|
||||
|
||||
/* Common configs:
|
||||
The following config items can be added to both game server and discord announcement endpoints. Simply replace the $servers part with $discordWebHooks:
|
||||
|
||||
include_repos - List of repos in owner/repo format to send to this endpoint. (defaults to all repos if not defined)
|
||||
* can be given in place of repo to match all repos under an organization
|
||||
$servers[$configitem]['include_repos'][] = "tgstation/*";
|
||||
|
||||
exclude_repos - List of repos in owner/repo format to not send to this endpoint.
|
||||
* can be given in place of repo to match all repos under an organization
|
||||
$servers[$configitem]['exclude_repos'][] = 'tgstation/TerraGov-Marine-Corps';
|
||||
$servers[$configitem]['exclude_repos'][] = 'tgstation/tgstation13.org';
|
||||
|
||||
exclude_events - List of events to not announce, values: opened, closed, reopened, or merged
|
||||
$servers[$configitem]['exclude_events'][] = 'closed';
|
||||
$servers[$configitem]['exclude_events'][] = 'reopened';
|
||||
|
||||
announce_secret - Announce secret/security prs that have a [s] in front of the title? Defaults to no.
|
||||
Can also be set to 'only' to only announce secret prs.
|
||||
$servers[$configitem]['announce_secret'] = false;
|
||||
$servers[$configitem]['announce_secret'] = 'only';
|
||||
|
||||
announce_unvalidated - Announce prs by unvalidated users (see the validation setting above)? Defaults to no.
|
||||
Can also be set to 'only' to only announce prs by unvalidated users.
|
||||
$servers[$configitem]['announce_unvalidated'] = false;
|
||||
|
||||
//Note: the same webhook or game server can be given in mutiple announce endpoints with different settings, allowing you to say, have embeds only show on prs to certain repos by excluding the repo in a endpoint with embed = false, and including the repo in a endpoint with embed = true true. This could also be used to only block closed and reopened events on prs by unvalidated users.
|
||||
|
||||
|
||||
|
||||
//Game servers to announce PRs to.
|
||||
/*
|
||||
$configitem = -1;//ignore me
|
||||
|
||||
//Game Server Start
|
||||
$servers[++$configitem] = array();
|
||||
$servers[$configitem]['address'] = 'game.tgstation13.org';
|
||||
$servers[$configitem]['port'] = '1337';
|
||||
$servers[$configitem]['comskey'] = '89aj90cq2fm0amc90832mn9rm90';
|
||||
//Game Server End
|
||||
|
||||
//Game Server Start
|
||||
$servers[++$configitem] = array();
|
||||
$servers[$configitem]['address'] = 'game.tgstation13.org';
|
||||
$servers[$configitem]['port'] = '2337';
|
||||
$servers[$configitem]['comskey'] = '89aj90cq2fm0amc90832mn9rm90';
|
||||
//Game Server End
|
||||
|
||||
unset($configitem);//ignore
|
||||
*/
|
||||
|
||||
//discord webhooks to announce PRs to.
|
||||
/*
|
||||
$configitem = -1;//ignore me
|
||||
|
||||
//Discord Webhook Start
|
||||
$discordWebHooks[++$configitem] = array();
|
||||
|
||||
// Webhook Url (you can get this from discord via the webhook setting menu of the server or a channel.)
|
||||
$discordWebHooks[$configitem]['url'] = 'https://discordapp.com/api/webhooks/538933489920245771/xaoYtVuype-P1rb_uthQLkh_C4iVL3sjtIvFEp7rsfhbBs8tDsSJgE0a9MNWJaoSPBPK';
|
||||
|
||||
// show an embed with more info?
|
||||
$discordWebHooks[$configitem]['embed'] = true;
|
||||
|
||||
// if the above is true, don't include the text portion before the embed.
|
||||
// (This option is not advised as it's not compatible with users who disable embeds).
|
||||
$discordWebHooks[$configitem]['no_text'] = false;
|
||||
//Discord Webhook End
|
||||
|
||||
//Discord Webhook Start
|
||||
$discordWebHooks[++$configitem] = array();
|
||||
|
||||
// Webhook Url (you can get this from discord via the webhook setting menu of the server or a channel.)
|
||||
$discordWebHooks[$configitem]['url'] = 'https://discordapp.com/api/webhooks/538933686956064769/q0uDel7S6eutvRIyEwsuZo_ppzAoxqUNeU2PRChYVsYoJmmn2f2YYSDoMjy9FhhXKqpI';
|
||||
|
||||
// show an embed with more info?
|
||||
$discordWebHooks[$configitem]['embed'] = true;
|
||||
|
||||
// if the above is true, don't include the text portion before the embed.
|
||||
// (This option is not advised as it's not compatible with users who disable embeds).
|
||||
$discordWebHooks[$configitem]['no_text'] = false;
|
||||
//Discord Webhook End
|
||||
*/
|
||||
|
||||
unset($configitem); //ignore
|
||||
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
/obj/machinery/power/apc/@SUBTYPES{dir = 1} : @OLD{@OLD; pixel_y = 23}
|
||||
/obj/machinery/power/apc/@SUBTYPES{dir = 2} : @OLD{@OLD; pixel_y = -23}
|
||||
/obj/machinery/power/apc/@SUBTYPES{dir = 4} : @OLD{@OLD; pixel_x = 24}
|
||||
/obj/machinery/power/apc/@SUBTYPES{dir = 8} : @OLD{@OLD; pixel_x = -25}
|
||||
@@ -0,0 +1,30 @@
|
||||
/obj/effect/turf_decal/stripes/corner {dir=1} : /obj/item/bear_armor {@OLD;dir=8}
|
||||
/obj/effect/turf_decal/stripes/corner {dir=2} : /obj/effect/turf_decal/stripes/corner {@OLD;dir=@SKIP}
|
||||
/obj/effect/turf_decal/stripes/corner {dir=4} : /obj/effect/turf_decal/stripes/corner {@OLD;dir=1}
|
||||
/obj/effect/turf_decal/stripes/corner {dir=8} : /obj/effect/turf_decal/stripes/corner {@OLD;dir=4}
|
||||
/obj/item/bear_armor {dir=8} : /obj/effect/turf_decal/stripes/corner {@OLD}
|
||||
/obj/effect/turf_decal/stripes/red/corner {dir=1} : /obj/item/bear_armor {@OLD;dir=8}
|
||||
/obj/effect/turf_decal/stripes/red/corner {dir=2} : /obj/effect/turf_decal/stripes/red/corner {@OLD;dir=@SKIP}
|
||||
/obj/effect/turf_decal/stripes/red/corner {dir=4} : /obj/effect/turf_decal/stripes/red/corner {@OLD;dir=1}
|
||||
/obj/effect/turf_decal/stripes/red/corner {dir=8} : /obj/effect/turf_decal/stripes/red/corner {@OLD;dir=4}
|
||||
/obj/item/bear_armor {dir=8} : /obj/effect/turf_decal/stripes/red/corner {@OLD}
|
||||
/obj/effect/turf_decal/stripes/white/corner {dir=1} : /obj/item/bear_armor {@OLD;dir=8}
|
||||
/obj/effect/turf_decal/stripes/white/corner {dir=2} : /obj/effect/turf_decal/stripes/white/corner {@OLD;dir=@SKIP}
|
||||
/obj/effect/turf_decal/stripes/white/corner {dir=4} : /obj/effect/turf_decal/stripes/white/corner {@OLD;dir=1}
|
||||
/obj/effect/turf_decal/stripes/white/corner {dir=8} : /obj/effect/turf_decal/stripes/white/corner {@OLD;dir=4}
|
||||
/obj/item/bear_armor {dir=8} : /obj/effect/turf_decal/stripes/white/corner {@OLD}
|
||||
/obj/effect/turf_decal/box/corners {dir=1} : /obj/item/bear_armor {@OLD;dir=8}
|
||||
/obj/effect/turf_decal/box/corners {dir=2} : /obj/effect/turf_decal/box/corners {@OLD;dir=@SKIP}
|
||||
/obj/effect/turf_decal/box/corners {dir=4} : /obj/effect/turf_decal/box/corners {@OLD;dir=1}
|
||||
/obj/effect/turf_decal/box/corners {dir=8} : /obj/effect/turf_decal/box/corners {@OLD;dir=4}
|
||||
/obj/item/bear_armor {dir=8} : /obj/effect/turf_decal/box/corners {@OLD}
|
||||
/obj/effect/turf_decal/box/red/corners {dir=1} : /obj/item/bear_armor {@OLD;dir=8}
|
||||
/obj/effect/turf_decal/box/red/corners {dir=2} : /obj/effect/turf_decal/box/red/corners {@OLD;dir=@SKIP}
|
||||
/obj/effect/turf_decal/box/red/corners {dir=4} : /obj/effect/turf_decal/box/red/corners {@OLD;dir=1}
|
||||
/obj/effect/turf_decal/box/red/corners {dir=8} : /obj/effect/turf_decal/box/red/corners {@OLD;dir=4}
|
||||
/obj/item/bear_armor {dir=8} : /obj/effect/turf_decal/box/red/corners {@OLD}
|
||||
/obj/effect/turf_decal/box/white/corners {dir=1} : /obj/item/bear_armor {@OLD;dir=8}
|
||||
/obj/effect/turf_decal/box/white/corners {dir=2} : /obj/effect/turf_decal/box/white/corners {@OLD;dir=@SKIP}
|
||||
/obj/effect/turf_decal/box/white/corners {dir=4} : /obj/effect/turf_decal/box/white/corners {@OLD;dir=1}
|
||||
/obj/effect/turf_decal/box/white/corners {dir=8} : /obj/effect/turf_decal/box/white/corners {@OLD;dir=4}
|
||||
/obj/item/bear_armor {dir=8} : /obj/effect/turf_decal/box/white/corners {@OLD}
|
||||
@@ -1,3 +1,3 @@
|
||||
pygit2==0.26.0
|
||||
pygit2==0.27.2
|
||||
bidict==0.13.1
|
||||
Pillow==5.1.0
|
||||
|
||||
@@ -23,14 +23,14 @@ Old paths properties:
|
||||
"""
|
||||
|
||||
default_map_directory = "../../_maps"
|
||||
replacement_re = re.compile('\s*([^{]*)\s*(\{(.*)\})?')
|
||||
replacement_re = re.compile(r'\s*(?P<path>[^{]*)\s*(\{(?P<props>.*)\})?')
|
||||
|
||||
#urgent todo: replace with actual parser, this is slow as janitor in crit
|
||||
split_re = re.compile('((?:[A-Za-z0-9_\-$]+)\s*=\s*(?:"(?:.+?)"|[^";]*)|@OLD)')
|
||||
split_re = re.compile(r'((?:[A-Za-z0-9_\-$]+)\s*=\s*(?:"(?:.+?)"|[^";]*)|@OLD)')
|
||||
|
||||
|
||||
def props_to_string(props):
|
||||
return "{{{0}}}".format(";".join([k+" = "+props[k] for k in props]))
|
||||
return "{{{}}}".format(";".join([f"{k} = {v}" for k, v in props.items()]))
|
||||
|
||||
|
||||
def string_to_props(propstring, verbose = False):
|
||||
@@ -48,8 +48,8 @@ def string_to_props(propstring, verbose = False):
|
||||
def parse_rep_string(replacement_string, verbose = False):
|
||||
# translates /blah/blah {meme = "test",} into path,prop dictionary tuple
|
||||
match = re.match(replacement_re, replacement_string)
|
||||
path = match.group(1)
|
||||
props = match.group(3)
|
||||
path = match['path']
|
||||
props = match['props']
|
||||
if props:
|
||||
prop_dict = string_to_props(props, verbose)
|
||||
else:
|
||||
@@ -65,9 +65,18 @@ def update_path(dmm_data, replacement_string, verbose=False):
|
||||
new_path, new_path_props = parse_rep_string(replacement_def, verbose)
|
||||
new_paths.append((new_path, new_path_props))
|
||||
|
||||
subtypes = ""
|
||||
if old_path.endswith("/@SUBTYPES"):
|
||||
old_path = old_path[:-len("/@SUBTYPES")]
|
||||
if verbose:
|
||||
print("Looking for subtypes of", old_path)
|
||||
subtypes = r"(?:/\w+)*"
|
||||
|
||||
replacement_pattern = re.compile(rf"(?P<path>{re.escape(old_path)}{subtypes})\s*(:?{{(?P<props>.*)}})?$")
|
||||
|
||||
def replace_def(match):
|
||||
if match.group(2):
|
||||
old_props = string_to_props(match.group(2), verbose)
|
||||
if match['props']:
|
||||
old_props = string_to_props(match['props'], verbose)
|
||||
else:
|
||||
old_props = dict()
|
||||
for filter_prop in old_path_props:
|
||||
@@ -83,7 +92,10 @@ def update_path(dmm_data, replacement_string, verbose=False):
|
||||
print("Found match : {0}".format(match.group(0)))
|
||||
out_paths = []
|
||||
for new_path, new_props in new_paths:
|
||||
out = new_path
|
||||
if new_path == "@OLD":
|
||||
out = match.group('path')
|
||||
else:
|
||||
out = new_path
|
||||
out_props = dict()
|
||||
for prop_name, prop_value in new_props.items():
|
||||
if prop_name == "@OLD":
|
||||
@@ -106,10 +118,9 @@ def update_path(dmm_data, replacement_string, verbose=False):
|
||||
return out_paths
|
||||
|
||||
def get_result(element):
|
||||
p = re.compile("{0}\s*({{(.*)}})?$".format(re.escape(old_path)))
|
||||
match = p.match(element)
|
||||
match = replacement_pattern.match(element)
|
||||
if match:
|
||||
return replace_def(match) # = re.sub(p,replace_def,element)
|
||||
return replace_def(match)
|
||||
else:
|
||||
return [element]
|
||||
|
||||
@@ -141,10 +152,12 @@ def update_all_maps(map_directory, updates, verbose=False):
|
||||
|
||||
def main(args):
|
||||
if args.inline:
|
||||
print("Using replacement:", args.update_source)
|
||||
updates = [args.update_source]
|
||||
else:
|
||||
with open(args.update_source) as f:
|
||||
updates = [line for line in f if line and not line.startswith("#") and not line.isspace()]
|
||||
print(f"Using {len(updates)} replacements from file:", args.update_source)
|
||||
|
||||
if args.map:
|
||||
update_map(args.map, updates, verbose=args.verbose)
|
||||
|
||||
@@ -1,9 +1,13 @@
|
||||
#!/bin/sh
|
||||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
#load dep exports
|
||||
. "$1/dependencies.sh"
|
||||
#need to switch to game dir for Dockerfile weirdness
|
||||
original_dir=$PWD
|
||||
cd $1
|
||||
. dependencies.sh
|
||||
cd $original_dir
|
||||
|
||||
#find out what we have (+e is important for this)
|
||||
set +e
|
||||
@@ -64,7 +68,6 @@ fi
|
||||
|
||||
echo "Deploying rust-g..."
|
||||
cd rust-g
|
||||
git clean -fxd
|
||||
git checkout $RUST_G_VERSION
|
||||
~/.cargo/bin/cargo build --release
|
||||
mv target/release/librust_g.so $1/rust_g
|
||||
@@ -72,10 +75,9 @@ cd ..
|
||||
|
||||
echo "Deploying BSQL..."
|
||||
cd BSQL
|
||||
git clean -fxd
|
||||
git checkout $BSQL_VERSION
|
||||
mkdir mysql
|
||||
mkdir artifacts
|
||||
mkdir -p mysql
|
||||
mkdir -p artifacts
|
||||
cd artifacts
|
||||
cmake .. -DCMAKE_CXX_COMPILER=g++-6 -DMARIA_LIBRARY=/usr/lib/i386-linux-gnu/libmariadb.so.2
|
||||
make
|
||||
@@ -92,6 +94,7 @@ shopt -s extglob dotglob
|
||||
mv !(build) build
|
||||
shopt -u dotglob
|
||||
|
||||
chmod +x build/tools/deploy.sh
|
||||
build/tools/deploy.sh $1 $1/build
|
||||
|
||||
rm -rf build
|
||||
rm -rf build
|
||||
|
||||
@@ -1,836 +1,3 @@
|
||||
@echo off
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<link rel="dns-prefetch" href="https://assets-cdn.github.com">
|
||||
<link rel="dns-prefetch" href="https://avatars0.githubusercontent.com">
|
||||
<link rel="dns-prefetch" href="https://avatars1.githubusercontent.com">
|
||||
<link rel="dns-prefetch" href="https://avatars2.githubusercontent.com">
|
||||
<link rel="dns-prefetch" href="https://avatars3.githubusercontent.com">
|
||||
<link rel="dns-prefetch" href="https://github-cloud.s3.amazonaws.com">
|
||||
<link rel="dns-prefetch" href="https://user-images.githubusercontent.com/">
|
||||
|
||||
|
||||
|
||||
<link crossorigin="anonymous" media="all" integrity="sha512-1FLfhli3wF1EqKy4+DmsB7My96mQ71ZtDpkmg/2A8RP+5uDgJ0zAT8sRDwSG0p75xQjd9aMIVb58gpjhC//ngA==" rel="stylesheet" href="https://assets-cdn.github.com/assets/frameworks-dcca19dafecb17dea634d2f083dc7f9f.css" />
|
||||
<link crossorigin="anonymous" media="all" integrity="sha512-ERzCrxQ9/KT3hsH+BMLLRcbwQp3/xat+ZqZrlySbC6YsUxwYAAGOf+5SpbATykqQxh1+B/Wz0kSpYnpdaff/tg==" rel="stylesheet" href="https://assets-cdn.github.com/assets/github-77ae44d8225d1c06908f977e09b0adab.css" />
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<meta name="viewport" content="width=device-width">
|
||||
|
||||
<title>tgstation/PreSynchronize.bat at cd924de80da882d14fb15f3f0f21102b8c8e7c45 · tgstation/tgstation</title>
|
||||
<meta name="description" content="the /tg/station branch of SS13. Contribute to tgstation/tgstation development by creating an account on GitHub.">
|
||||
<link rel="search" type="application/opensearchdescription+xml" href="/opensearch.xml" title="GitHub">
|
||||
<link rel="fluid-icon" href="https://github.com/fluidicon.png" title="GitHub">
|
||||
<meta property="fb:app_id" content="1401488693436528">
|
||||
|
||||
|
||||
<meta property="og:image" content="https://avatars3.githubusercontent.com/u/1363778?s=400&v=4" /><meta property="og:site_name" content="GitHub" /><meta property="og:type" content="object" /><meta property="og:title" content="tgstation/tgstation" /><meta property="og:url" content="https://github.com/tgstation/tgstation" /><meta property="og:description" content="the /tg/station branch of SS13. Contribute to tgstation/tgstation development by creating an account on GitHub." />
|
||||
|
||||
<link rel="assets" href="https://assets-cdn.github.com/">
|
||||
<link rel="web-socket" href="wss://live.github.com/_sockets/VjI6MzE0ODI1MTk1OmViYzlkZGNjNDZhYmMwMzY4YmJjYjFjZTRmZmZiZDg4YzA0ZjY4OGYxOTY0ODRkM2E5MzM2ODczYTIzNmVhM2M=--6c2d8ca39301e29fe1ef68370c138180226f4b09">
|
||||
<meta name="pjax-timeout" content="1000">
|
||||
<link rel="sudo-modal" href="/sessions/sudo_modal">
|
||||
<meta name="request-id" content="ECE5:46C6:172CF08:223ED1E:5BA4903B" data-pjax-transient>
|
||||
|
||||
|
||||
|
||||
|
||||
<meta name="selected-link" value="repo_source" data-pjax-transient>
|
||||
|
||||
<meta name="google-site-verification" content="KT5gs8h0wvaagLKAVWq8bbeNwnZZK1r1XQysX3xurLU">
|
||||
<meta name="google-site-verification" content="ZzhVyEFwb7w3e0-uOTltm8Jsck2F5StVihD0exw2fsA">
|
||||
<meta name="google-site-verification" content="GXs5KoUUkNCoaAZn7wPN-t01Pywp9M3sEjnt_3_ZWPc">
|
||||
|
||||
<meta name="octolytics-host" content="collector.githubapp.com" /><meta name="octolytics-app-id" content="github" /><meta name="octolytics-event-url" content="https://collector.githubapp.com/github-external/browser_event" /><meta name="octolytics-dimension-request_id" content="ECE5:46C6:172CF08:223ED1E:5BA4903B" /><meta name="octolytics-dimension-region_edge" content="iad" /><meta name="octolytics-dimension-region_render" content="iad" /><meta name="octolytics-actor-id" content="6293118" /><meta name="octolytics-actor-login" content="Poojawa" /><meta name="octolytics-actor-hash" content="a8cf3698b8dd6f5525fbe3f439daaa0c5b452070f8bb5e260d324a4837887888" />
|
||||
<meta name="analytics-location" content="/<user-name>/<repo-name>/blob/show" data-pjax-transient="true" />
|
||||
|
||||
|
||||
|
||||
<meta name="google-analytics" content="UA-3769691-2">
|
||||
|
||||
<meta class="js-ga-set" name="userId" content="dc57a225e44a4448758e8ceaed70b545" %>
|
||||
|
||||
<meta class="js-ga-set" name="dimension1" content="Logged In">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<meta name="hostname" content="github.com">
|
||||
<meta name="user-login" content="Poojawa">
|
||||
|
||||
<meta name="expected-hostname" content="github.com">
|
||||
<meta name="js-proxy-site-detection-payload" content="MGE2ODQ0MDAzOWUzZGY2NTk4N2I5ZTEyZTI1YzNiZDkwNzBmMjYwODU2ZDgzNWU3MGZlMzhiMGZmOTk4ODQxNnx7InJlbW90ZV9hZGRyZXNzIjoiNzEuOTAuMTY0LjExMSIsInJlcXVlc3RfaWQiOiJFQ0U1OjQ2QzY6MTcyQ0YwODoyMjNFRDFFOjVCQTQ5MDNCIiwidGltZXN0YW1wIjoxNTM3NTExNDg4LCJob3N0IjoiZ2l0aHViLmNvbSJ9">
|
||||
|
||||
<meta name="enabled-features" content="DASHBOARD_V2_LAYOUT_OPT_IN,EXPLORE_DISCOVER_REPOSITORIES,UNIVERSE_BANNER,MARKETPLACE_PLAN_RESTRICTION_EDITOR,MARKETPLACE_RETARGETING,QUOTE_MARKDOWN">
|
||||
|
||||
<meta name="html-safe-nonce" content="800ddeacd7ff9120efa459bbc42a092a76286025">
|
||||
|
||||
<meta http-equiv="x-pjax-version" content="7395d00cf82f905297bf628de3c71acd">
|
||||
|
||||
|
||||
<link href="https://github.com/tgstation/tgstation/commits/cd924de80da882d14fb15f3f0f21102b8c8e7c45.atom" rel="alternate" title="Recent Commits to tgstation:cd924de80da882d14fb15f3f0f21102b8c8e7c45" type="application/atom+xml">
|
||||
|
||||
<meta name="go-import" content="github.com/tgstation/tgstation git https://github.com/tgstation/tgstation.git">
|
||||
|
||||
<meta name="octolytics-dimension-user_id" content="1363778" /><meta name="octolytics-dimension-user_login" content="tgstation" /><meta name="octolytics-dimension-repository_id" content="3234987" /><meta name="octolytics-dimension-repository_nwo" content="tgstation/tgstation" /><meta name="octolytics-dimension-repository_public" content="true" /><meta name="octolytics-dimension-repository_is_fork" content="false" /><meta name="octolytics-dimension-repository_network_root_id" content="3234987" /><meta name="octolytics-dimension-repository_network_root_nwo" content="tgstation/tgstation" /><meta name="octolytics-dimension-repository_explore_github_marketplace_ci_cta_shown" content="false" />
|
||||
|
||||
|
||||
<link rel="canonical" href="https://github.com/tgstation/tgstation/blob/cd924de80da882d14fb15f3f0f21102b8c8e7c45/tools/tgs4_scripts/PreSynchronize.bat" data-pjax-transient>
|
||||
|
||||
|
||||
<meta name="browser-stats-url" content="https://api.github.com/_private/browser/stats">
|
||||
|
||||
<meta name="browser-errors-url" content="https://api.github.com/_private/browser/errors">
|
||||
|
||||
<link rel="mask-icon" href="https://assets-cdn.github.com/pinned-octocat.svg" color="#000000">
|
||||
<link rel="icon" type="image/x-icon" class="js-site-favicon" href="https://assets-cdn.github.com/favicon.ico">
|
||||
|
||||
<meta name="theme-color" content="#1e2327">
|
||||
|
||||
|
||||
<meta name="u2f-support" content="true">
|
||||
|
||||
<link rel="manifest" href="/manifest.json" crossOrigin="use-credentials">
|
||||
|
||||
</head>
|
||||
|
||||
<body class="logged-in env-production page-blob">
|
||||
|
||||
|
||||
<div class="position-relative js-header-wrapper ">
|
||||
<a href="#start-of-content" tabindex="1" class="p-3 bg-blue text-white show-on-focus js-skip-to-content">Skip to content</a>
|
||||
<div id="js-pjax-loader-bar" class="pjax-loader-bar"><div class="progress"></div></div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<header class="Header f5" role="banner">
|
||||
<div class="d-flex flex-justify-between px-3 container-lg">
|
||||
<div class="d-flex flex-justify-between ">
|
||||
<div class="">
|
||||
<a class="header-logo-invertocat" href="https://github.com/" data-hotkey="g d" aria-label="Homepage" data-ga-click="Header, go to dashboard, icon:logo">
|
||||
<svg height="32" class="octicon octicon-mark-github" viewBox="0 0 16 16" version="1.1" width="32" aria-hidden="true"><path fill-rule="evenodd" d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0 0 16 8c0-4.42-3.58-8-8-8z"/></svg>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="HeaderMenu d-flex flex-justify-between flex-auto">
|
||||
<div class="d-flex">
|
||||
<div class="">
|
||||
<div class="header-search scoped-search site-scoped-search js-site-search position-relative js-jump-to"
|
||||
role="combobox"
|
||||
aria-owns="jump-to-results"
|
||||
aria-label="Search or jump to"
|
||||
aria-haspopup="listbox"
|
||||
aria-expanded="false"
|
||||
>
|
||||
<div class="position-relative">
|
||||
<!-- '"` --><!-- </textarea></xmp> --></option></form><form class="js-site-search-form" data-scope-type="Repository" data-scope-id="3234987" data-scoped-search-url="/tgstation/tgstation/search" data-unscoped-search-url="/search" action="/tgstation/tgstation/search" accept-charset="UTF-8" method="get"><input name="utf8" type="hidden" value="✓" />
|
||||
<label class="form-control header-search-wrapper header-search-wrapper-jump-to position-relative d-flex flex-justify-between flex-items-center js-chromeless-input-container">
|
||||
<input type="text"
|
||||
class="form-control header-search-input jump-to-field js-jump-to-field js-site-search-focus js-site-search-field is-clearable"
|
||||
data-hotkey="s,/"
|
||||
name="q"
|
||||
value=""
|
||||
placeholder="Search or jump to…"
|
||||
data-unscoped-placeholder="Search or jump to…"
|
||||
data-scoped-placeholder="Search or jump to…"
|
||||
autocapitalize="off"
|
||||
aria-autocomplete="list"
|
||||
aria-controls="jump-to-results"
|
||||
data-jump-to-suggestions-path="/_graphql/GetSuggestedNavigationDestinations#csrf-token=ty7nMXmfPxiycFyUIisR6hE3ePmISo7IrWYW+Yl9sgjLsHHa8HRAhk8O55AuGQZGgtHtz7vXphya+0Zzl5SfYw=="
|
||||
spellcheck="false"
|
||||
autocomplete="off"
|
||||
>
|
||||
<input type="hidden" class="js-site-search-type-field" name="type" >
|
||||
<img src="https://assets-cdn.github.com/images/search-shortcut-hint.svg" alt="" class="mr-2 header-search-key-slash">
|
||||
|
||||
<div class="Box position-absolute overflow-hidden d-none jump-to-suggestions js-jump-to-suggestions-container">
|
||||
<ul class="d-none js-jump-to-suggestions-template-container">
|
||||
<li class="d-flex flex-justify-start flex-items-center p-0 f5 navigation-item js-navigation-item" role="option">
|
||||
<a tabindex="-1" class="no-underline d-flex flex-auto flex-items-center p-2 jump-to-suggestions-path js-jump-to-suggestion-path js-navigation-open" href="">
|
||||
<div class="jump-to-octicon js-jump-to-octicon mr-2 text-center d-none">
|
||||
<svg height="16" width="16" class="octicon octicon-repo flex-shrink-0 js-jump-to-octicon-repo d-none" title="Repository" aria-label="Repository" viewBox="0 0 12 16" version="1.1" role="img"><path fill-rule="evenodd" d="M4 9H3V8h1v1zm0-3H3v1h1V6zm0-2H3v1h1V4zm0-2H3v1h1V2zm8-1v12c0 .55-.45 1-1 1H6v2l-1.5-1.5L3 16v-2H1c-.55 0-1-.45-1-1V1c0-.55.45-1 1-1h10c.55 0 1 .45 1 1zm-1 10H1v2h2v-1h3v1h5v-2zm0-10H2v9h9V1z"/></svg>
|
||||
<svg height="16" width="16" class="octicon octicon-project flex-shrink-0 js-jump-to-octicon-project d-none" title="Project" aria-label="Project" viewBox="0 0 15 16" version="1.1" role="img"><path fill-rule="evenodd" d="M10 12h3V2h-3v10zm-4-2h3V2H6v8zm-4 4h3V2H2v12zm-1 1h13V1H1v14zM14 0H1a1 1 0 0 0-1 1v14a1 1 0 0 0 1 1h13a1 1 0 0 0 1-1V1a1 1 0 0 0-1-1z"/></svg>
|
||||
<svg height="16" width="16" class="octicon octicon-search flex-shrink-0 js-jump-to-octicon-search d-none" title="Search" aria-label="Search" viewBox="0 0 16 16" version="1.1" role="img"><path fill-rule="evenodd" d="M15.7 13.3l-3.81-3.83A5.93 5.93 0 0 0 13 6c0-3.31-2.69-6-6-6S1 2.69 1 6s2.69 6 6 6c1.3 0 2.48-.41 3.47-1.11l3.83 3.81c.19.2.45.3.7.3.25 0 .52-.09.7-.3a.996.996 0 0 0 0-1.41v.01zM7 10.7c-2.59 0-4.7-2.11-4.7-4.7 0-2.59 2.11-4.7 4.7-4.7 2.59 0 4.7 2.11 4.7 4.7 0 2.59-2.11 4.7-4.7 4.7z"/></svg>
|
||||
</div>
|
||||
|
||||
<img class="avatar mr-2 flex-shrink-0 js-jump-to-suggestion-avatar d-none" alt="" aria-label="Team" src="" width="28" height="28">
|
||||
|
||||
<div class="jump-to-suggestion-name js-jump-to-suggestion-name flex-auto overflow-hidden text-left no-wrap css-truncate css-truncate-target">
|
||||
</div>
|
||||
|
||||
<div class="border rounded-1 flex-shrink-0 bg-gray px-1 text-gray-light ml-1 f6 d-none js-jump-to-badge-search">
|
||||
<span class="js-jump-to-badge-search-text-default d-none" aria-label="in this repository">
|
||||
In this repository
|
||||
</span>
|
||||
<span class="js-jump-to-badge-search-text-global d-none" aria-label="in all of GitHub">
|
||||
All GitHub
|
||||
</span>
|
||||
<span aria-hidden="true" class="d-inline-block ml-1 v-align-middle">↵</span>
|
||||
</div>
|
||||
|
||||
<div aria-hidden="true" class="border rounded-1 flex-shrink-0 bg-gray px-1 text-gray-light ml-1 f6 d-none d-on-nav-focus js-jump-to-badge-jump">
|
||||
Jump to
|
||||
<span class="d-inline-block ml-1 v-align-middle">↵</span>
|
||||
</div>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
<ul class="d-none js-jump-to-no-results-template-container">
|
||||
<li class="d-flex flex-justify-center flex-items-center p-3 f5 d-none">
|
||||
<span class="text-gray">No suggested jump to results</span>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<ul id="jump-to-results" role="listbox" class="js-navigation-container jump-to-suggestions-results-container js-jump-to-suggestions-results-container" >
|
||||
<li class="d-flex flex-justify-center flex-items-center p-0 f5">
|
||||
<img src="https://assets-cdn.github.com/images/spinners/octocat-spinner-128.gif" alt="Octocat Spinner Icon" class="m-2" width="28">
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</label>
|
||||
</form> </div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<ul class="d-flex pl-2 flex-items-center text-bold list-style-none" role="navigation">
|
||||
<li>
|
||||
<a class="js-selected-navigation-item HeaderNavlink px-2" data-hotkey="g p" data-ga-click="Header, click, Nav menu - item:pulls context:user" aria-label="Pull requests you created" data-selected-links="/pulls /pulls/assigned /pulls/mentioned /pulls" href="/pulls">
|
||||
Pull requests
|
||||
</a> </li>
|
||||
<li>
|
||||
<a class="js-selected-navigation-item HeaderNavlink px-2" data-hotkey="g i" data-ga-click="Header, click, Nav menu - item:issues context:user" aria-label="Issues you created" data-selected-links="/issues /issues/assigned /issues/mentioned /issues" href="/issues">
|
||||
Issues
|
||||
</a> </li>
|
||||
<li>
|
||||
<a class="js-selected-navigation-item HeaderNavlink px-2" data-ga-click="Header, click, Nav menu - item:marketplace context:user" data-octo-click="marketplace_click" data-octo-dimensions="location:nav_bar" data-selected-links=" /marketplace" href="/marketplace">
|
||||
Marketplace
|
||||
</a> </li>
|
||||
<li>
|
||||
<a class="js-selected-navigation-item HeaderNavlink px-2" data-ga-click="Header, click, Nav menu - item:explore" data-selected-links="/explore /trending /trending/developers /integrations /integrations/feature/code /integrations/feature/collaborate /integrations/feature/ship showcases showcases_search showcases_landing /explore" href="/explore">
|
||||
Explore
|
||||
</a> </li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="d-flex">
|
||||
|
||||
<ul class="user-nav d-flex flex-items-center list-style-none" id="user-links">
|
||||
<li class="dropdown">
|
||||
<span class="d-inline-block px-2">
|
||||
|
||||
<a aria-label="You have no unread notifications" class="notification-indicator tooltipped tooltipped-s js-socket-channel js-notification-indicator" data-hotkey="g n" data-ga-click="Header, go to notifications, icon:read" data-channel="notification-changed:6293118" href="/notifications">
|
||||
<span class="mail-status "></span>
|
||||
<svg class="octicon octicon-bell" viewBox="0 0 14 16" version="1.1" width="14" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M13.99 11.991v1H0v-1l.73-.58c.769-.769.809-2.547 1.189-4.416.77-3.767 4.077-4.996 4.077-4.996 0-.55.45-1 .999-1 .55 0 1 .45 1 1 0 0 3.387 1.229 4.156 4.996.38 1.879.42 3.657 1.19 4.417l.659.58h-.01zM6.995 15.99c1.11 0 1.999-.89 1.999-1.999H4.996c0 1.11.89 1.999 1.999 1.999z"/></svg>
|
||||
</a>
|
||||
</span>
|
||||
</li>
|
||||
|
||||
<li class="dropdown">
|
||||
<details class="details-overlay details-reset d-flex px-2 flex-items-center">
|
||||
<summary class="HeaderNavlink"
|
||||
aria-label="Create new…"
|
||||
data-ga-click="Header, create new, icon:add">
|
||||
<svg class="octicon octicon-plus float-left mr-1 mt-1" viewBox="0 0 12 16" version="1.1" width="12" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M12 9H7v5H5V9H0V7h5V2h2v5h5v2z"/></svg>
|
||||
<span class="dropdown-caret mt-1"></span>
|
||||
</summary>
|
||||
<details-menu class="dropdown-menu dropdown-menu-sw">
|
||||
|
||||
<a role="menuitem" class="dropdown-item" href="/new" data-ga-click="Header, create new repository">
|
||||
New repository
|
||||
</a>
|
||||
|
||||
<a role="menuitem" class="dropdown-item" href="/new/import" data-ga-click="Header, import a repository">
|
||||
Import repository
|
||||
</a>
|
||||
|
||||
<a role="menuitem" class="dropdown-item" href="https://gist.github.com/" data-ga-click="Header, create new gist">
|
||||
New gist
|
||||
</a>
|
||||
|
||||
<a role="menuitem" class="dropdown-item" href="/organizations/new" data-ga-click="Header, create new organization">
|
||||
New organization
|
||||
</a>
|
||||
|
||||
|
||||
<div class="dropdown-divider"></div>
|
||||
<div class="dropdown-header">
|
||||
<span title="tgstation/tgstation">This repository</span>
|
||||
</div>
|
||||
<a role="menuitem" class="dropdown-item" href="/tgstation/tgstation/issues/new/choose" data-ga-click="Header, create new issue">
|
||||
New issue
|
||||
</a>
|
||||
|
||||
</details-menu>
|
||||
</details>
|
||||
</li>
|
||||
|
||||
<li class="dropdown">
|
||||
|
||||
<details class="details-overlay details-reset d-flex pl-2 flex-items-center">
|
||||
<summary class="HeaderNavlink name mt-1"
|
||||
aria-label="View profile and more"
|
||||
data-ga-click="Header, show menu, icon:avatar">
|
||||
<img alt="@Poojawa" class="avatar float-left mr-1" src="https://avatars0.githubusercontent.com/u/6293118?s=40&v=4" height="20" width="20">
|
||||
<span class="dropdown-caret"></span>
|
||||
</summary>
|
||||
<details-menu class="dropdown-menu dropdown-menu-sw">
|
||||
<ul>
|
||||
<li class="header-nav-current-user css-truncate"><a role="menuitem" class="no-underline user-profile-link px-3 pt-2 pb-2 mb-n2 mt-n1 d-block" href="/Poojawa" data-ga-click="Header, go to profile, text:Signed in as">Signed in as <strong class="css-truncate-target">Poojawa</strong></a></li>
|
||||
<li class="dropdown-divider"></li>
|
||||
<li><a role="menuitem" class="dropdown-item" href="/Poojawa" data-ga-click="Header, go to profile, text:your profile">Your profile</a></li>
|
||||
<li><a role="menuitem" class="dropdown-item" href="/Poojawa?tab=repositories" data-ga-click="Header, go to repositories, text:your repositories">Your repositories</a></li>
|
||||
<li><a role="menuitem" class="dropdown-item" href="/Poojawa?tab=stars" data-ga-click="Header, go to starred repos, text:your stars">Your stars</a></li>
|
||||
<li><a role="menuitem" class="dropdown-item" href="https://gist.github.com/" data-ga-click="Header, your gists, text:your gists">Your gists</a></li>
|
||||
<li class="dropdown-divider"></li>
|
||||
<li><a role="menuitem" class="dropdown-item" href="https://help.github.com" data-ga-click="Header, go to help, text:help">Help</a></li>
|
||||
<li><a role="menuitem" class="dropdown-item" href="/settings/profile" data-ga-click="Header, go to settings, icon:settings">Settings</a></li>
|
||||
<li>
|
||||
<!-- '"` --><!-- </textarea></xmp> --></option></form><form class="logout-form" action="/logout" accept-charset="UTF-8" method="post"><input name="utf8" type="hidden" value="✓" /><input type="hidden" name="authenticity_token" value="cwrBqlTqFi+7rjGuKuZTGeisJsfoD/PVfY3vlteOGawSJBzpAoXol32aBNzCIR2dPnIv0ITxkleelObSwVvy4g==" />
|
||||
<button type="submit" class="dropdown-item dropdown-signout" data-ga-click="Header, sign out, icon:logout" role="menuitem">
|
||||
Sign out
|
||||
</button>
|
||||
</form> </li>
|
||||
</ul>
|
||||
</details-menu>
|
||||
</details>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
<!-- '"` --><!-- </textarea></xmp> --></option></form><form class="sr-only right-0" action="/logout" accept-charset="UTF-8" method="post"><input name="utf8" type="hidden" value="✓" /><input type="hidden" name="authenticity_token" value="ceLUe4rJix7QsRS5MywXBuaCJLelJjqq74Vr4Y94yksQzAk43KZ1phaFIcvb61mCMFwtoMnYWygMnGKlma0hBQ==" />
|
||||
<button type="submit" class="dropdown-item dropdown-signout" data-ga-click="Header, sign out, icon:logout">
|
||||
Sign out
|
||||
</button>
|
||||
</form> </div>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<div id="start-of-content" class="show-on-focus"></div>
|
||||
|
||||
<div id="js-flash-container">
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div role="main" class="application-main ">
|
||||
<div itemscope itemtype="http://schema.org/SoftwareSourceCode" class="">
|
||||
<div id="js-repo-pjax-container" data-pjax-container >
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="pagehead repohead instapaper_ignore readability-menu experiment-repo-nav ">
|
||||
<div class="repohead-details-container clearfix container">
|
||||
|
||||
<ul class="pagehead-actions">
|
||||
<li>
|
||||
<!-- '"` --><!-- </textarea></xmp> --></option></form><form data-autosubmit="true" data-remote="true" class="js-social-container" action="/notifications/subscribe" accept-charset="UTF-8" method="post"><input name="utf8" type="hidden" value="✓" /><input type="hidden" name="authenticity_token" value="GAE/NpD6hiRnB53T97m9a3Hk6JBNlCsIOU7jEmehyc5an3j5s6cux9UuA0s5D233KATaWbOUgOIb5POzhhqc0A==" /> <input type="hidden" name="repository_id" id="repository_id" value="3234987" class="form-control" />
|
||||
|
||||
<div class="select-menu js-menu-container js-select-menu">
|
||||
<a href="/tgstation/tgstation/subscription"
|
||||
class="btn btn-sm btn-with-count select-menu-button js-menu-target"
|
||||
role="button"
|
||||
aria-haspopup="true"
|
||||
aria-expanded="false"
|
||||
aria-label="Toggle repository notifications menu"
|
||||
data-ga-click="Repository, click Watch settings, action:blob#show">
|
||||
<span class="js-select-button">
|
||||
<svg class="octicon octicon-eye v-align-text-bottom" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M8.06 2C3 2 0 8 0 8s3 6 8.06 6C13 14 16 8 16 8s-3-6-7.94-6zM8 12c-2.2 0-4-1.78-4-4 0-2.2 1.8-4 4-4 2.22 0 4 1.8 4 4 0 2.22-1.78 4-4 4zm2-4c0 1.11-.89 2-2 2-1.11 0-2-.89-2-2 0-1.11.89-2 2-2 1.11 0 2 .89 2 2z"/></svg>
|
||||
Watch
|
||||
</span>
|
||||
</a>
|
||||
<a class="social-count js-social-count"
|
||||
href="/tgstation/tgstation/watchers"
|
||||
aria-label="104 users are watching this repository">
|
||||
104
|
||||
</a>
|
||||
|
||||
<div class="select-menu-modal-holder">
|
||||
<div class="select-menu-modal subscription-menu-modal js-menu-content">
|
||||
<div class="select-menu-header js-navigation-enable" tabindex="-1">
|
||||
<svg class="octicon octicon-x js-menu-close" role="img" aria-label="Close" viewBox="0 0 12 16" version="1.1" width="12" height="16"><path fill-rule="evenodd" d="M7.48 8l3.75 3.75-1.48 1.48L6 9.48l-3.75 3.75-1.48-1.48L4.52 8 .77 4.25l1.48-1.48L6 6.52l3.75-3.75 1.48 1.48L7.48 8z"/></svg>
|
||||
<span class="select-menu-title">Notifications</span>
|
||||
</div>
|
||||
|
||||
<div class="select-menu-list js-navigation-container" role="menu">
|
||||
|
||||
<div class="select-menu-item js-navigation-item selected" role="menuitem" tabindex="0">
|
||||
<svg class="octicon octicon-check select-menu-item-icon" viewBox="0 0 12 16" version="1.1" width="12" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5L12 5z"/></svg>
|
||||
<div class="select-menu-item-text">
|
||||
<input type="radio" name="do" id="do_included" value="included" checked="checked" />
|
||||
<span class="select-menu-item-heading">Not watching</span>
|
||||
<span class="description">Be notified when participating or @mentioned.</span>
|
||||
<span class="js-select-button-text hidden-select-button-text">
|
||||
<svg class="octicon octicon-eye v-align-text-bottom" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M8.06 2C3 2 0 8 0 8s3 6 8.06 6C13 14 16 8 16 8s-3-6-7.94-6zM8 12c-2.2 0-4-1.78-4-4 0-2.2 1.8-4 4-4 2.22 0 4 1.8 4 4 0 2.22-1.78 4-4 4zm2-4c0 1.11-.89 2-2 2-1.11 0-2-.89-2-2 0-1.11.89-2 2-2 1.11 0 2 .89 2 2z"/></svg>
|
||||
Watch
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="select-menu-item js-navigation-item " role="menuitem" tabindex="0">
|
||||
<svg class="octicon octicon-check select-menu-item-icon" viewBox="0 0 12 16" version="1.1" width="12" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5L12 5z"/></svg>
|
||||
<div class="select-menu-item-text">
|
||||
<input type="radio" name="do" id="do_subscribed" value="subscribed" />
|
||||
<span class="select-menu-item-heading">Watching</span>
|
||||
<span class="description">Be notified of all conversations.</span>
|
||||
<span class="js-select-button-text hidden-select-button-text">
|
||||
<svg class="octicon octicon-eye v-align-text-bottom" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M8.06 2C3 2 0 8 0 8s3 6 8.06 6C13 14 16 8 16 8s-3-6-7.94-6zM8 12c-2.2 0-4-1.78-4-4 0-2.2 1.8-4 4-4 2.22 0 4 1.8 4 4 0 2.22-1.78 4-4 4zm2-4c0 1.11-.89 2-2 2-1.11 0-2-.89-2-2 0-1.11.89-2 2-2 1.11 0 2 .89 2 2z"/></svg>
|
||||
Unwatch
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="select-menu-item js-navigation-item " role="menuitem" tabindex="0">
|
||||
<svg class="octicon octicon-check select-menu-item-icon" viewBox="0 0 12 16" version="1.1" width="12" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5L12 5z"/></svg>
|
||||
<div class="select-menu-item-text">
|
||||
<input type="radio" name="do" id="do_ignore" value="ignore" />
|
||||
<span class="select-menu-item-heading">Ignoring</span>
|
||||
<span class="description">Never be notified.</span>
|
||||
<span class="js-select-button-text hidden-select-button-text">
|
||||
<svg class="octicon octicon-mute v-align-text-bottom" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M8 2.81v10.38c0 .67-.81 1-1.28.53L3 10H1c-.55 0-1-.45-1-1V7c0-.55.45-1 1-1h2l3.72-3.72C7.19 1.81 8 2.14 8 2.81zm7.53 3.22l-1.06-1.06-1.97 1.97-1.97-1.97-1.06 1.06L11.44 8 9.47 9.97l1.06 1.06 1.97-1.97 1.97 1.97 1.06-1.06L13.56 8l1.97-1.97z"/></svg>
|
||||
Stop ignoring
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
|
||||
<div class="js-toggler-container js-social-container starring-container ">
|
||||
<!-- '"` --><!-- </textarea></xmp> --></option></form><form class="starred js-social-form" action="/tgstation/tgstation/unstar" accept-charset="UTF-8" method="post"><input name="utf8" type="hidden" value="✓" /><input type="hidden" name="authenticity_token" value="U3s3LUPoTj+ctA71daHiKOKz7pMSNnnbBpxdETWtik9+T0H5o8eL6df09xbw9gPa/H/iQkEaZJVeQNQmGx1KiA==" />
|
||||
<input type="hidden" name="context" value="repository"></input>
|
||||
<button
|
||||
type="submit"
|
||||
class="btn btn-sm btn-with-count js-toggler-target"
|
||||
aria-label="Unstar this repository" title="Unstar tgstation/tgstation"
|
||||
data-ga-click="Repository, click unstar button, action:blob#show; text:Unstar">
|
||||
<svg class="octicon octicon-star v-align-text-bottom" viewBox="0 0 14 16" version="1.1" width="14" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M14 6l-4.9-.64L7 1 4.9 5.36 0 6l3.6 3.26L2.67 14 7 11.67 11.33 14l-.93-4.74L14 6z"/></svg>
|
||||
Unstar
|
||||
</button>
|
||||
<a class="social-count js-social-count" href="/tgstation/tgstation/stargazers"
|
||||
aria-label="559 users starred this repository">
|
||||
559
|
||||
</a>
|
||||
</form>
|
||||
<!-- '"` --><!-- </textarea></xmp> --></option></form><form class="unstarred js-social-form" action="/tgstation/tgstation/star" accept-charset="UTF-8" method="post"><input name="utf8" type="hidden" value="✓" /><input type="hidden" name="authenticity_token" value="7nKJrPPubPmXraI10d9ZdN9nRAfBRc5b6BtK/YDHuPQQnAFlXXHcDkDMhVfBPeuk5t7deBFANYAqDszsfNycGw==" />
|
||||
<input type="hidden" name="context" value="repository"></input>
|
||||
<button
|
||||
type="submit"
|
||||
class="btn btn-sm btn-with-count js-toggler-target"
|
||||
aria-label="Star this repository" title="Star tgstation/tgstation"
|
||||
data-ga-click="Repository, click star button, action:blob#show; text:Star">
|
||||
<svg class="octicon octicon-star v-align-text-bottom" viewBox="0 0 14 16" version="1.1" width="14" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M14 6l-4.9-.64L7 1 4.9 5.36 0 6l3.6 3.26L2.67 14 7 11.67 11.33 14l-.93-4.74L14 6z"/></svg>
|
||||
Star
|
||||
</button>
|
||||
<a class="social-count js-social-count" href="/tgstation/tgstation/stargazers"
|
||||
aria-label="559 users starred this repository">
|
||||
559
|
||||
</a>
|
||||
</form> </div>
|
||||
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<!-- '"` --><!-- </textarea></xmp> --></option></form><form class="btn-with-count" action="/tgstation/tgstation/fork" accept-charset="UTF-8" method="post"><input name="utf8" type="hidden" value="✓" /><input type="hidden" name="authenticity_token" value="io7K9+cnF7sFzTP/xobVmyU3QrSkDd3fNv9kqgUsf9xue59F6iKps9pgBWcDkzDPK/135PTAX9SgNnbfDQvJUA==" />
|
||||
<button
|
||||
type="submit"
|
||||
class="btn btn-sm btn-with-count"
|
||||
data-ga-click="Repository, show fork modal, action:blob#show; text:Fork"
|
||||
title="Fork your own copy of tgstation/tgstation to your account"
|
||||
aria-label="Fork your own copy of tgstation/tgstation to your account">
|
||||
<svg class="octicon octicon-repo-forked v-align-text-bottom" viewBox="0 0 10 16" version="1.1" width="10" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M8 1a1.993 1.993 0 0 0-1 3.72V6L5 8 3 6V4.72A1.993 1.993 0 0 0 2 1a1.993 1.993 0 0 0-1 3.72V6.5l3 3v1.78A1.993 1.993 0 0 0 5 15a1.993 1.993 0 0 0 1-3.72V9.5l3-3V4.72A1.993 1.993 0 0 0 8 1zM2 4.2C1.34 4.2.8 3.65.8 3c0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2 0 .65-.55 1.2-1.2 1.2zm3 10c-.66 0-1.2-.55-1.2-1.2 0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2 0 .65-.55 1.2-1.2 1.2zm3-10c-.66 0-1.2-.55-1.2-1.2 0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2 0 .65-.55 1.2-1.2 1.2z"/></svg>
|
||||
Fork
|
||||
</button>
|
||||
</form>
|
||||
<a href="/tgstation/tgstation/network/members" class="social-count"
|
||||
aria-label="1916 users forked this repository">
|
||||
1,916
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<h1 class="public ">
|
||||
<svg class="octicon octicon-repo" viewBox="0 0 12 16" version="1.1" width="12" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M4 9H3V8h1v1zm0-3H3v1h1V6zm0-2H3v1h1V4zm0-2H3v1h1V2zm8-1v12c0 .55-.45 1-1 1H6v2l-1.5-1.5L3 16v-2H1c-.55 0-1-.45-1-1V1c0-.55.45-1 1-1h10c.55 0 1 .45 1 1zm-1 10H1v2h2v-1h3v1h5v-2zm0-10H2v9h9V1z"/></svg>
|
||||
<span class="author" itemprop="author"><a class="url fn" rel="author" href="/tgstation">tgstation</a></span><!--
|
||||
--><span class="path-divider">/</span><!--
|
||||
--><strong itemprop="name"><a data-pjax="#js-repo-pjax-container" href="/tgstation/tgstation">tgstation</a></strong>
|
||||
|
||||
</h1>
|
||||
|
||||
</div>
|
||||
|
||||
<nav class="reponav js-repo-nav js-sidenav-container-pjax container"
|
||||
itemscope
|
||||
itemtype="http://schema.org/BreadcrumbList"
|
||||
role="navigation"
|
||||
data-pjax="#js-repo-pjax-container">
|
||||
|
||||
<span itemscope itemtype="http://schema.org/ListItem" itemprop="itemListElement">
|
||||
<a class="js-selected-navigation-item selected reponav-item" itemprop="url" data-hotkey="g c" data-selected-links="repo_source repo_downloads repo_commits repo_releases repo_tags repo_branches repo_packages /tgstation/tgstation" href="/tgstation/tgstation">
|
||||
<svg class="octicon octicon-code" viewBox="0 0 14 16" version="1.1" width="14" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M9.5 3L8 4.5 11.5 8 8 11.5 9.5 13 14 8 9.5 3zm-5 0L0 8l4.5 5L6 11.5 2.5 8 6 4.5 4.5 3z"/></svg>
|
||||
<span itemprop="name">Code</span>
|
||||
<meta itemprop="position" content="1">
|
||||
</a> </span>
|
||||
|
||||
<span itemscope itemtype="http://schema.org/ListItem" itemprop="itemListElement">
|
||||
<a itemprop="url" data-hotkey="g i" class="js-selected-navigation-item reponav-item" data-selected-links="repo_issues repo_labels repo_milestones /tgstation/tgstation/issues" href="/tgstation/tgstation/issues">
|
||||
<svg class="octicon octicon-issue-opened" viewBox="0 0 14 16" version="1.1" width="14" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"/></svg>
|
||||
<span itemprop="name">Issues</span>
|
||||
<span class="Counter">1,310</span>
|
||||
<meta itemprop="position" content="2">
|
||||
</a> </span>
|
||||
|
||||
<span itemscope itemtype="http://schema.org/ListItem" itemprop="itemListElement">
|
||||
<a data-hotkey="g p" itemprop="url" class="js-selected-navigation-item reponav-item" data-selected-links="repo_pulls checks /tgstation/tgstation/pulls" href="/tgstation/tgstation/pulls">
|
||||
<svg class="octicon octicon-git-pull-request" viewBox="0 0 12 16" version="1.1" width="12" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M11 11.28V5c-.03-.78-.34-1.47-.94-2.06C9.46 2.35 8.78 2.03 8 2H7V0L4 3l3 3V4h1c.27.02.48.11.69.31.21.2.3.42.31.69v6.28A1.993 1.993 0 0 0 10 15a1.993 1.993 0 0 0 1-3.72zm-1 2.92c-.66 0-1.2-.55-1.2-1.2 0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2 0 .65-.55 1.2-1.2 1.2zM4 3c0-1.11-.89-2-2-2a1.993 1.993 0 0 0-1 3.72v6.56A1.993 1.993 0 0 0 2 15a1.993 1.993 0 0 0 1-3.72V4.72c.59-.34 1-.98 1-1.72zm-.8 10c0 .66-.55 1.2-1.2 1.2-.65 0-1.2-.55-1.2-1.2 0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2zM2 4.2C1.34 4.2.8 3.65.8 3c0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2 0 .65-.55 1.2-1.2 1.2z"/></svg>
|
||||
<span itemprop="name">Pull requests</span>
|
||||
<span class="Counter">39</span>
|
||||
<meta itemprop="position" content="3">
|
||||
</a> </span>
|
||||
|
||||
<a data-hotkey="g b" class="js-selected-navigation-item reponav-item" data-selected-links="repo_projects new_repo_project repo_project /tgstation/tgstation/projects" href="/tgstation/tgstation/projects">
|
||||
<svg class="octicon octicon-project" viewBox="0 0 15 16" version="1.1" width="15" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M10 12h3V2h-3v10zm-4-2h3V2H6v8zm-4 4h3V2H2v12zm-1 1h13V1H1v14zM14 0H1a1 1 0 0 0-1 1v14a1 1 0 0 0 1 1h13a1 1 0 0 0 1-1V1a1 1 0 0 0-1-1z"/></svg>
|
||||
Projects
|
||||
<span class="Counter" >7</span>
|
||||
</a>
|
||||
|
||||
|
||||
<a class="js-selected-navigation-item reponav-item" data-hotkey="g w" data-selected-links="repo_wiki /tgstation/tgstation/wiki" href="/tgstation/tgstation/wiki">
|
||||
<svg class="octicon octicon-book" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M3 5h4v1H3V5zm0 3h4V7H3v1zm0 2h4V9H3v1zm11-5h-4v1h4V5zm0 2h-4v1h4V7zm0 2h-4v1h4V9zm2-6v9c0 .55-.45 1-1 1H9.5l-1 1-1-1H2c-.55 0-1-.45-1-1V3c0-.55.45-1 1-1h5.5l1 1 1-1H15c.55 0 1 .45 1 1zm-8 .5L7.5 3H2v9h6V3.5zm7-.5H9.5l-.5.5V12h6V3z"/></svg>
|
||||
Wiki
|
||||
</a>
|
||||
<a class="js-selected-navigation-item reponav-item" data-selected-links="repo_graphs repo_contributors dependency_graph pulse /tgstation/tgstation/pulse" href="/tgstation/tgstation/pulse">
|
||||
<svg class="octicon octicon-graph" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M16 14v1H0V0h1v14h15zM5 13H3V8h2v5zm4 0H7V3h2v10zm4 0h-2V6h2v7z"/></svg>
|
||||
Insights
|
||||
</a>
|
||||
|
||||
</nav>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<div class="container new-discussion-timeline experiment-repo-nav ">
|
||||
<div class="repository-content ">
|
||||
|
||||
|
||||
<a class="d-none js-permalink-shortcut" data-hotkey="y" href="/tgstation/tgstation/blob/cd924de80da882d14fb15f3f0f21102b8c8e7c45/tools/tgs4_scripts/PreSynchronize.bat">Permalink</a>
|
||||
|
||||
<!-- blob contrib key: blob_contributors:v21:a8af3c52c671641b9648cd2fb87b6033 -->
|
||||
|
||||
|
||||
|
||||
<div class="file-navigation">
|
||||
|
||||
<div class="select-menu branch-select-menu js-menu-container js-select-menu float-left">
|
||||
<button class=" btn btn-sm select-menu-button js-menu-target css-truncate" data-hotkey="w"
|
||||
|
||||
type="button" aria-label="Switch branches or tags" aria-expanded="false" aria-haspopup="true">
|
||||
<i>Tree:</i>
|
||||
<span class="js-select-button css-truncate-target">cd924de80d</span>
|
||||
</button>
|
||||
|
||||
<div class="select-menu-modal-holder js-menu-content js-navigation-container" data-pjax>
|
||||
|
||||
<div class="select-menu-modal">
|
||||
<div class="select-menu-header">
|
||||
<svg class="octicon octicon-x js-menu-close" role="img" aria-label="Close" viewBox="0 0 12 16" version="1.1" width="12" height="16"><path fill-rule="evenodd" d="M7.48 8l3.75 3.75-1.48 1.48L6 9.48l-3.75 3.75-1.48-1.48L4.52 8 .77 4.25l1.48-1.48L6 6.52l3.75-3.75 1.48 1.48L7.48 8z"/></svg>
|
||||
<span class="select-menu-title">Switch branches/tags</span>
|
||||
</div>
|
||||
|
||||
<div class="select-menu-filters">
|
||||
<div class="select-menu-text-filter">
|
||||
<input type="text" aria-label="Filter branches/tags" id="context-commitish-filter-field" class="form-control js-filterable-field js-navigation-enable" placeholder="Filter branches/tags">
|
||||
</div>
|
||||
<div class="select-menu-tabs">
|
||||
<ul>
|
||||
<li class="select-menu-tab">
|
||||
<a href="#" data-tab-filter="branches" data-filter-placeholder="Filter branches/tags" class="js-select-menu-tab" role="tab">Branches</a>
|
||||
</li>
|
||||
<li class="select-menu-tab">
|
||||
<a href="#" data-tab-filter="tags" data-filter-placeholder="Find a tag…" class="js-select-menu-tab" role="tab">Tags</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="select-menu-list select-menu-tab-bucket js-select-menu-tab-bucket" data-tab-filter="branches" role="menu">
|
||||
|
||||
<div data-filterable-for="context-commitish-filter-field" data-filterable-type="substring">
|
||||
|
||||
|
||||
<a class="select-menu-item js-navigation-item js-navigation-open "
|
||||
href="/tgstation/tgstation/blob/master/tools/tgs4_scripts/PreSynchronize.bat"
|
||||
data-name="master"
|
||||
data-skip-pjax="true"
|
||||
rel="nofollow">
|
||||
<svg class="octicon octicon-check select-menu-item-icon" viewBox="0 0 12 16" version="1.1" width="12" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5L12 5z"/></svg>
|
||||
<span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
|
||||
master
|
||||
</span>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="select-menu-no-results">Nothing to show</div>
|
||||
</div>
|
||||
|
||||
<div class="select-menu-list select-menu-tab-bucket js-select-menu-tab-bucket" data-tab-filter="tags">
|
||||
<div data-filterable-for="context-commitish-filter-field" data-filterable-type="substring">
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<div class="select-menu-no-results">Nothing to show</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="BtnGroup float-right">
|
||||
<a href="/tgstation/tgstation/find/cd924de80da882d14fb15f3f0f21102b8c8e7c45"
|
||||
class="js-pjax-capture-input btn btn-sm BtnGroup-item"
|
||||
data-pjax
|
||||
data-hotkey="t">
|
||||
Find file
|
||||
</a>
|
||||
<clipboard-copy for="blob-path" class="btn btn-sm BtnGroup-item">
|
||||
Copy path
|
||||
</clipboard-copy>
|
||||
</div>
|
||||
<div id="blob-path" class="breadcrumb">
|
||||
<span class="repo-root js-repo-root"><span class="js-path-segment"><a data-pjax="true" rel="nofollow" href="/tgstation/tgstation/tree/cd924de80da882d14fb15f3f0f21102b8c8e7c45"><span>tgstation</span></a></span></span><span class="separator">/</span><span class="js-path-segment"><a data-pjax="true" rel="nofollow" href="/tgstation/tgstation/tree/cd924de80da882d14fb15f3f0f21102b8c8e7c45/tools"><span>tools</span></a></span><span class="separator">/</span><span class="js-path-segment"><a data-pjax="true" rel="nofollow" href="/tgstation/tgstation/tree/cd924de80da882d14fb15f3f0f21102b8c8e7c45/tools/tgs4_scripts"><span>tgs4_scripts</span></a></span><span class="separator">/</span><strong class="final-path">PreSynchronize.bat</strong>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<include-fragment src="/tgstation/tgstation/contributors/cd924de80da882d14fb15f3f0f21102b8c8e7c45/tools/tgs4_scripts/PreSynchronize.bat" class="commit-tease commit-loader">
|
||||
<div>
|
||||
Fetching contributors…
|
||||
</div>
|
||||
|
||||
<div class="commit-tease-contributors">
|
||||
<img alt="" class="loader-loading float-left" src="https://assets-cdn.github.com/images/spinners/octocat-spinner-32-EAF2F5.gif" width="16" height="16" />
|
||||
<span class="loader-error">Cannot retrieve contributors at this time</span>
|
||||
</div>
|
||||
</include-fragment>
|
||||
|
||||
|
||||
<div class="file">
|
||||
<div class="file-header">
|
||||
<div class="file-actions">
|
||||
|
||||
<div class="BtnGroup">
|
||||
<a id="raw-url" class="btn btn-sm BtnGroup-item" href="/tgstation/tgstation/raw/cd924de80da882d14fb15f3f0f21102b8c8e7c45/tools/tgs4_scripts/PreSynchronize.bat">Raw</a>
|
||||
<a class="btn btn-sm js-update-url-with-hash BtnGroup-item" data-hotkey="b" href="/tgstation/tgstation/blame/cd924de80da882d14fb15f3f0f21102b8c8e7c45/tools/tgs4_scripts/PreSynchronize.bat">Blame</a>
|
||||
<a rel="nofollow" class="btn btn-sm BtnGroup-item" href="/tgstation/tgstation/commits/cd924de80da882d14fb15f3f0f21102b8c8e7c45/tools/tgs4_scripts/PreSynchronize.bat">History</a>
|
||||
</div>
|
||||
|
||||
<button class="btn-octicon disabled tooltipped tooltipped-nw"
|
||||
type="button"
|
||||
disabled
|
||||
aria-label="You must be on a branch to open this file in GitHub Desktop">
|
||||
<svg class="octicon octicon-device-desktop" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M15 2H1c-.55 0-1 .45-1 1v9c0 .55.45 1 1 1h5.34c-.25.61-.86 1.39-2.34 2h8c-1.48-.61-2.09-1.39-2.34-2H15c.55 0 1-.45 1-1V3c0-.55-.45-1-1-1zm0 9H1V3h14v8z"/></svg>
|
||||
</button>
|
||||
|
||||
<button type="button" class="btn-octicon disabled tooltipped tooltipped-nw"
|
||||
aria-label="You must be on a branch to make or propose changes to this file">
|
||||
<svg class="octicon octicon-pencil" viewBox="0 0 14 16" version="1.1" width="14" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M0 12v3h3l8-8-3-3-8 8zm3 2H1v-2h1v1h1v1zm10.3-9.3L12 6 9 3l1.3-1.3a.996.996 0 0 1 1.41 0l1.59 1.59c.39.39.39 1.02 0 1.41z"/></svg>
|
||||
</button>
|
||||
<button type="button" class="btn-octicon btn-octicon-danger disabled tooltipped tooltipped-nw"
|
||||
aria-label="You must be on a branch to make or propose changes to this file">
|
||||
<svg class="octicon octicon-trashcan" viewBox="0 0 12 16" version="1.1" width="12" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M11 2H9c0-.55-.45-1-1-1H5c-.55 0-1 .45-1 1H2c-.55 0-1 .45-1 1v1c0 .55.45 1 1 1v9c0 .55.45 1 1 1h7c.55 0 1-.45 1-1V5c.55 0 1-.45 1-1V3c0-.55-.45-1-1-1zm-1 12H3V5h1v8h1V5h1v8h1V5h1v8h1V5h1v9zm1-10H2V3h9v1z"/></svg>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="file-info">
|
||||
4 lines (2 sloc)
|
||||
<span class="file-info-divider"></span>
|
||||
99 Bytes
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div itemprop="text" class="blob-wrapper data type-batchfile">
|
||||
<table class="highlight tab-size js-file-line-container" data-tab-size="4">
|
||||
<tr>
|
||||
<td id="L1" class="blob-num js-line-number" data-line-number="1"></td>
|
||||
<td id="LC1" class="blob-code blob-code-inner js-file-line"><span class="pl-k">@</span><span class="pl-k">echo</span> <span class="pl-k">off</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td id="L2" class="blob-num js-line-number" data-line-number="2"></td>
|
||||
<td id="LC2" class="blob-code blob-code-inner js-file-line">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td id="L3" class="blob-num js-line-number" data-line-number="3"></td>
|
||||
<td id="LC3" class="blob-code blob-code-inner js-file-line"><span class="pl-k">powershell</span> -NoProfile -ExecutionPolicy Bypass -File PreSynchronize.ps1 -game_path %<span class="pl-v">1</span></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<details class="details-reset details-overlay BlobToolbar position-absolute js-file-line-actions dropdown d-none" aria-hidden="true">
|
||||
<summary class="btn-octicon ml-0 px-2 p-0 bg-white border border-gray-dark rounded-1" aria-label="Inline file action toolbar">
|
||||
<svg class="octicon octicon-kebab-horizontal" viewBox="0 0 13 16" version="1.1" width="13" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M1.5 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3zm5 0a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3zM13 7.5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0z"/></svg>
|
||||
</summary>
|
||||
<details-menu>
|
||||
<ul class="BlobToolbar-dropdown dropdown-menu dropdown-menu-se mt-2">
|
||||
<li><clipboard-copy role="menuitem" class="dropdown-item" id="js-copy-lines" style="cursor:pointer;" data-original-text="Copy lines">Copy lines</clipboard-copy></li>
|
||||
<li><clipboard-copy role="menuitem" class="dropdown-item" id="js-copy-permalink" style="cursor:pointer;" data-original-text="Copy permalink">Copy permalink</clipboard-copy></li>
|
||||
<li><a class="dropdown-item js-update-url-with-hash" id="js-view-git-blame" role="menuitem" href="/tgstation/tgstation/blame/cd924de80da882d14fb15f3f0f21102b8c8e7c45/tools/tgs4_scripts/PreSynchronize.bat">View git blame</a></li>
|
||||
<li><a class="dropdown-item" id="js-new-issue" role="menuitem" href="/tgstation/tgstation/issues/new/choose">Open new issue</a></li>
|
||||
</ul>
|
||||
</details-menu>
|
||||
</details>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<details class="details-reset details-overlay details-overlay-dark">
|
||||
<summary data-hotkey="l" aria-label="Jump to line"></summary>
|
||||
<details-dialog class="Box Box--overlay d-flex flex-column anim-fade-in fast linejump" aria-label="Jump to line">
|
||||
<!-- '"` --><!-- </textarea></xmp> --></option></form><form class="js-jump-to-line-form Box-body d-flex" action="" accept-charset="UTF-8" method="get"><input name="utf8" type="hidden" value="✓" />
|
||||
<input class="form-control flex-auto mr-3 linejump-input js-jump-to-line-field" type="text" placeholder="Jump to line…" aria-label="Jump to line" autofocus>
|
||||
<button type="submit" class="btn" data-close-dialog>Go</button>
|
||||
</form> </details-dialog>
|
||||
</details>
|
||||
|
||||
|
||||
</div>
|
||||
<div class="modal-backdrop js-touch-events"></div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="footer container-lg px-3" role="contentinfo">
|
||||
<div class="position-relative d-flex flex-justify-between pt-6 pb-2 mt-6 f6 text-gray border-top border-gray-light ">
|
||||
<ul class="list-style-none d-flex flex-wrap ">
|
||||
<li class="mr-3">© 2018 <span title="0.18787s from unicorn-74c5d68655-dfkpw">GitHub</span>, Inc.</li>
|
||||
<li class="mr-3"><a data-ga-click="Footer, go to terms, text:terms" href="https://github.com/site/terms">Terms</a></li>
|
||||
<li class="mr-3"><a data-ga-click="Footer, go to privacy, text:privacy" href="https://github.com/site/privacy">Privacy</a></li>
|
||||
<li class="mr-3"><a href="https://help.github.com/articles/github-security/" data-ga-click="Footer, go to security, text:security">Security</a></li>
|
||||
<li class="mr-3"><a href="https://status.github.com/" data-ga-click="Footer, go to status, text:status">Status</a></li>
|
||||
<li><a data-ga-click="Footer, go to help, text:help" href="https://help.github.com">Help</a></li>
|
||||
</ul>
|
||||
|
||||
<a aria-label="Homepage" title="GitHub" class="footer-octicon mr-lg-4" href="https://github.com">
|
||||
<svg height="24" class="octicon octicon-mark-github" viewBox="0 0 16 16" version="1.1" width="24" aria-hidden="true"><path fill-rule="evenodd" d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0 0 16 8c0-4.42-3.58-8-8-8z"/></svg>
|
||||
</a>
|
||||
<ul class="list-style-none d-flex flex-wrap ">
|
||||
<li class="mr-3"><a data-ga-click="Footer, go to contact, text:contact" href="https://github.com/contact">Contact GitHub</a></li>
|
||||
<li class="mr-3"><a href="https://github.com/pricing" data-ga-click="Footer, go to Pricing, text:Pricing">Pricing</a></li>
|
||||
<li class="mr-3"><a href="https://developer.github.com" data-ga-click="Footer, go to api, text:api">API</a></li>
|
||||
<li class="mr-3"><a href="https://training.github.com" data-ga-click="Footer, go to training, text:training">Training</a></li>
|
||||
<li class="mr-3"><a href="https://blog.github.com" data-ga-click="Footer, go to blog, text:blog">Blog</a></li>
|
||||
<li><a data-ga-click="Footer, go to about, text:about" href="https://github.com/about">About</a></li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
<div class="d-flex flex-justify-center pb-6">
|
||||
<span class="f6 text-gray-light"></span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div id="ajax-error-message" class="ajax-error-message flash flash-error">
|
||||
<svg class="octicon octicon-alert" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"/></svg>
|
||||
<button type="button" class="flash-close js-ajax-error-dismiss" aria-label="Dismiss error">
|
||||
<svg class="octicon octicon-x" viewBox="0 0 12 16" version="1.1" width="12" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.48 8l3.75 3.75-1.48 1.48L6 9.48l-3.75 3.75-1.48-1.48L4.52 8 .77 4.25l1.48-1.48L6 6.52l3.75-3.75 1.48 1.48L7.48 8z"/></svg>
|
||||
</button>
|
||||
You can’t perform that action at this time.
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<script crossorigin="anonymous" integrity="sha512-Bb0Wovr1o2Cb3KlmHRGIjQlsUxTAa1LYyxdQ/tsndUC+t7gAyu/2fpdLW7eex9HXv13smytm3gzMD5+Z81gb9A==" type="application/javascript" src="https://assets-cdn.github.com/assets/frameworks-2b155dd967d6dd0a278d1a91dcafbeec.js"></script>
|
||||
|
||||
<script crossorigin="anonymous" async="async" integrity="sha512-MsXVzDqDi5b0jU60Tq39xkgfoNu3ehfnpdo2TPM99QKvNjrx0gSHZS5fvQ8PcxqMtHugMifkKyFfgMc9UUe6/Q==" type="application/javascript" src="https://assets-cdn.github.com/assets/github-f2f02359503c1eb68287242b53372803.js"></script>
|
||||
|
||||
|
||||
|
||||
<div class="js-stale-session-flash stale-session-flash flash flash-warn flash-banner d-none">
|
||||
<svg class="octicon octicon-alert" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"/></svg>
|
||||
<span class="signed-in-tab-flash">You signed in with another tab or window. <a href="">Reload</a> to refresh your session.</span>
|
||||
<span class="signed-out-tab-flash">You signed out in another tab or window. <a href="">Reload</a> to refresh your session.</span>
|
||||
</div>
|
||||
<div class="facebox" id="facebox" style="display:none;">
|
||||
<div class="facebox-popup">
|
||||
<div class="facebox-content" role="dialog" aria-labelledby="facebox-header" aria-describedby="facebox-description">
|
||||
</div>
|
||||
<button type="button" class="facebox-close js-facebox-close" aria-label="Close modal">
|
||||
<svg class="octicon octicon-x" viewBox="0 0 12 16" version="1.1" width="12" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.48 8l3.75 3.75-1.48 1.48L6 9.48l-3.75 3.75-1.48-1.48L4.52 8 .77 4.25l1.48-1.48L6 6.52l3.75-3.75 1.48 1.48L7.48 8z"/></svg>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<template id="site-details-dialog">
|
||||
<details class="details-reset details-overlay details-overlay-dark lh-default text-gray-dark" open>
|
||||
<summary aria-haspopup="dialog" aria-label="Close dialog"></summary>
|
||||
<details-dialog class="Box Box--overlay d-flex flex-column anim-fade-in fast">
|
||||
<button class="Box-btn-octicon m-0 btn-octicon position-absolute right-0 top-0" type="button" aria-label="Close dialog" data-close-dialog>
|
||||
<svg class="octicon octicon-x" viewBox="0 0 12 16" version="1.1" width="12" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.48 8l3.75 3.75-1.48 1.48L6 9.48l-3.75 3.75-1.48-1.48L4.52 8 .77 4.25l1.48-1.48L6 6.52l3.75-3.75 1.48 1.48L7.48 8z"/></svg>
|
||||
</button>
|
||||
<div class="octocat-spinner my-6 js-details-dialog-spinner"></div>
|
||||
</details-dialog>
|
||||
</details>
|
||||
</template>
|
||||
|
||||
<div class="Popover js-hovercard-content position-absolute" style="display: none; outline: none;" tabindex="0">
|
||||
<div class="Popover-message Popover-message--bottom-left Popover-message--large Box box-shadow-large" style="width:360px;">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="hovercard-aria-description" class="sr-only">
|
||||
Press h to open a hovercard with more details.
|
||||
</div>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
||||
powershell -NoProfile -ExecutionPolicy Bypass -File PreSynchronize.ps1 -game_path %1
|
||||
|
||||
@@ -5,19 +5,23 @@ set -e
|
||||
shopt -s globstar
|
||||
|
||||
if [ "$BUILD_TOOLS" = false ]; then
|
||||
if grep '"aaa" = \(.+\)' _maps/**/*.dmm; then
|
||||
if grep -E '^\".+\" = \(.+\)' _maps/**/*.dmm; then
|
||||
echo "Non-TGM formatted map detected. Please convert it using Map Merger!"
|
||||
exit 1
|
||||
fi;
|
||||
if grep -P '^\ttag = \"icon' _maps/**/*.dmm; then
|
||||
echo "tag vars from icon state generation detected in maps, please remove them."
|
||||
exit 1
|
||||
fi;
|
||||
if grep 'step_[xy]' _maps/**/*.dmm; then
|
||||
echo "step_[xy] variables detected in maps, please remove them."
|
||||
echo "step_x/step_y variables detected in maps, please remove them."
|
||||
exit 1
|
||||
fi;
|
||||
if grep 'pixel_[xy] = 0' _maps/**/*.dmm; then
|
||||
echo "pixel_[xy] = 0 detected in maps, please review to ensure they are not dirty varedits."
|
||||
echo "pixel_x/pixel_y = 0 variables detected in maps, please review to ensure they are not dirty varedits."
|
||||
fi;
|
||||
if grep '\td[1-2] =' _maps/**/*.dmm; then
|
||||
echo "d[1-2] cable variables detected in maps, please remove them."
|
||||
if grep -P '\td[1-2] =' _maps/**/*.dmm; then
|
||||
echo "d1/d2 cable variables detected in maps, please remove them."
|
||||
exit 1
|
||||
fi;
|
||||
if grep '^/area/.+[\{]' _maps/**/*.dmm; then
|
||||
@@ -47,7 +51,7 @@ if [ "$BUILD_TOOLS" = false ]; then
|
||||
else
|
||||
tools/travis/dm.sh -DTRAVISBUILDING tgstation.dme
|
||||
|
||||
sh tools/deploy.sh travis_test
|
||||
tools/deploy.sh travis_test
|
||||
mkdir travis_test/config
|
||||
|
||||
#test config
|
||||
|
||||