This commit is contained in:
Fordoxia
2024-04-18 14:41:47 +01:00
283 changed files with 4908 additions and 16311 deletions
+2 -2
View File
@@ -288,10 +288,10 @@ Usage of this system is mandatory for any `Topic()` calls, and will produce erro
```dm
//Bad
"<a href='?src=\ref[src];'>Link!</a>"
"<a href='byond://?src=\ref[src];'>Link!</a>"
//Good
"<a href='?src=[UID()];'>Link!</a>"
"<a href='byond://?src=[UID()];'>Link!</a>"
```
### Use `var/name` format when declaring variables
+3
View File
@@ -68,3 +68,6 @@ $RECYCLE.BIN
# Linux libs
/*.so
# VIM swap files.
*.swp
@@ -797,6 +797,9 @@
/obj/effect/turf_decal/delivery/white,
/turf/simulated/floor/plating/airless,
/area/ruin/unpowered/althland_excavation)
"oh" = (
/turf/simulated/mineral/volcanic/lava_land_surface,
/area/lavaland/surface/outdoors)
"or" = (
/obj/structure/railing/corner{
dir = 8
@@ -1271,6 +1274,9 @@
nitrogen = 0
},
/area/lavaland/surface/outdoors)
"Mm" = (
/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface,
/area/lavaland/surface/outdoors)
"MT" = (
/obj/structure/grille/broken,
/obj/effect/decal/cleanable/glass,
@@ -1564,6 +1570,19 @@
/area/ruin/unpowered/althland_excavation)
(1,1,1) = {"
oh
oh
oh
oh
oh
oh
oh
oh
oh
Mm
Mm
Mm
Mm
Ei
Ei
Ei
@@ -1575,6 +1594,25 @@ Ei
Ei
Ei
Ei
Mm
Mm
oh
oh
oh
oh
"}
(2,1,1) = {"
oh
oh
oh
oh
Mm
Mm
Mm
Mm
Mm
Mm
Mm
TN
TN
TN
@@ -1591,17 +1629,17 @@ Ei
Ei
Ei
Ei
Ei
Ei
Ei
oh
oh
oh
"}
(2,1,1) = {"
Ei
Ei
Ei
Ei
Ei
Ei
(3,1,1) = {"
oh
oh
Mm
Mm
Mm
Mm
TN
TN
TN
@@ -1624,14 +1662,14 @@ Ei
Ei
Ei
Ei
Ei
Ei
oh
oh
"}
(3,1,1) = {"
Ei
Ei
Ei
Ei
(4,1,1) = {"
oh
Mm
Mm
Mm
TN
TN
TN
@@ -1656,13 +1694,13 @@ TN
TN
Ei
Ei
Ei
Ei
Mm
Mm
"}
(4,1,1) = {"
Ei
Ei
Ei
(5,1,1) = {"
oh
Mm
Mm
TN
sp
aU
@@ -1689,11 +1727,11 @@ TN
TN
Ei
Ei
Ei
Mm
"}
(5,1,1) = {"
Ei
Ei
(6,1,1) = {"
Mm
Mm
TN
TN
Ri
@@ -1723,9 +1761,9 @@ bm
Ei
Ei
"}
(6,1,1) = {"
Ei
Ei
(7,1,1) = {"
Mm
Mm
TN
PL
BZ
@@ -1755,8 +1793,8 @@ bm
Ei
Ei
"}
(7,1,1) = {"
Ei
(8,1,1) = {"
Mm
TN
TN
pE
@@ -1787,8 +1825,8 @@ Ei
Ei
Ei
"}
(8,1,1) = {"
Ei
(9,1,1) = {"
Mm
TN
sp
bC
@@ -1819,8 +1857,8 @@ aB
Ei
Ei
"}
(9,1,1) = {"
Ei
(10,1,1) = {"
Mm
TN
TN
TN
@@ -1851,8 +1889,8 @@ Ei
bm
Ei
"}
(10,1,1) = {"
Ei
(11,1,1) = {"
Mm
TN
ct
Pe
@@ -1883,8 +1921,8 @@ Ei
bm
Ei
"}
(11,1,1) = {"
Ei
(12,1,1) = {"
Mm
TN
pC
yb
@@ -1915,7 +1953,7 @@ Ei
TN
Ei
"}
(12,1,1) = {"
(13,1,1) = {"
Ei
TN
TN
@@ -1945,9 +1983,9 @@ Ei
Ei
Ei
TN
Ei
Mm
"}
(13,1,1) = {"
(14,1,1) = {"
Ei
TN
aU
@@ -1977,9 +2015,9 @@ XS
Ei
Ei
TN
Ei
Mm
"}
(14,1,1) = {"
(15,1,1) = {"
Ei
TN
Yz
@@ -2009,9 +2047,9 @@ Ei
Ei
Ei
TN
Ei
Mm
"}
(15,1,1) = {"
(16,1,1) = {"
Ei
TN
TN
@@ -2041,9 +2079,9 @@ Ei
BW
aB
TN
Ei
Mm
"}
(16,1,1) = {"
(17,1,1) = {"
Ei
TN
Ei
@@ -2073,9 +2111,9 @@ mK
uG
BW
TN
Ei
Mm
"}
(17,1,1) = {"
(18,1,1) = {"
Ei
bm
Ei
@@ -2105,9 +2143,9 @@ BW
LK
PM
TN
Ei
Mm
"}
(18,1,1) = {"
(19,1,1) = {"
Ei
bm
Ei
@@ -2137,9 +2175,9 @@ aB
BW
KU
TN
Ei
Mm
"}
(19,1,1) = {"
(20,1,1) = {"
Ei
TN
Ei
@@ -2169,9 +2207,9 @@ aB
aB
uG
TN
Ei
Mm
"}
(20,1,1) = {"
(21,1,1) = {"
Ei
TN
TN
@@ -2201,9 +2239,9 @@ aB
aB
aB
TN
Ei
Mm
"}
(21,1,1) = {"
(22,1,1) = {"
Ei
TN
ao
@@ -2233,9 +2271,9 @@ BW
TJ
BW
TN
Ei
Mm
"}
(22,1,1) = {"
(23,1,1) = {"
Ei
TN
at
@@ -2265,9 +2303,9 @@ mh
mK
uG
TN
Ei
Mm
"}
(23,1,1) = {"
(24,1,1) = {"
Ei
TN
aG
@@ -2297,10 +2335,10 @@ mh
mh
Gc
TN
Ei
Mm
"}
(24,1,1) = {"
Ei
(25,1,1) = {"
Mm
TN
TN
bU
@@ -2329,11 +2367,11 @@ gg
bN
TN
TN
Ei
Mm
"}
(25,1,1) = {"
Ei
Ei
(26,1,1) = {"
Mm
Mm
TN
az
DS
@@ -2360,12 +2398,12 @@ jL
Nv
jS
TN
Ei
Ei
Mm
Mm
"}
(26,1,1) = {"
Ei
Ei
(27,1,1) = {"
oh
Mm
TN
TN
ap
@@ -2392,13 +2430,13 @@ bL
YE
TN
TN
Ei
Ei
Mm
Mm
"}
(27,1,1) = {"
Ei
Ei
Ei
(28,1,1) = {"
oh
Mm
Mm
TN
TN
iA
@@ -2423,15 +2461,15 @@ kh
aE
TN
TN
Ei
Ei
Ei
Mm
Mm
oh
"}
(28,1,1) = {"
Ei
Ei
Ei
Ei
(29,1,1) = {"
oh
Mm
Mm
Mm
TN
TN
TN
@@ -2454,18 +2492,18 @@ TN
TN
TN
TN
Ei
Ei
Ei
Ei
Mm
Mm
oh
oh
"}
(29,1,1) = {"
Ei
Ei
Ei
Ei
Ei
Ei
(30,1,1) = {"
oh
oh
Mm
Mm
Mm
Mm
TN
TN
TN
@@ -2484,25 +2522,25 @@ TN
TN
TN
TN
Ei
Ei
Ei
Ei
Ei
Ei
Mm
Mm
Mm
oh
oh
oh
"}
(30,1,1) = {"
Ei
Ei
Ei
Ei
Ei
Ei
Ei
Ei
Ei
Ei
Ei
(31,1,1) = {"
oh
oh
oh
Mm
Mm
Mm
Mm
Mm
Mm
Mm
Mm
TN
TN
TN
@@ -2512,14 +2550,14 @@ TN
TN
TN
TN
Ei
Ei
Ei
Ei
Ei
Ei
Ei
Ei
Ei
Ei
Mm
Mm
Mm
Mm
Mm
oh
oh
oh
oh
oh
"}
@@ -1330,6 +1330,7 @@
},
/obj/effect/decal/cleanable/dirt,
/obj/effect/decal/cleanable/dirt,
/obj/item/storage/bag/plants/seed_sorting_tray,
/turf/simulated/floor/plasteel,
/area/ruin/ancientstation/hydroponics)
"dT" = (
@@ -4192,6 +4193,7 @@
/obj/item/reagent_containers/spray/weedspray,
/obj/item/reagent_containers/spray/pestspray,
/obj/item/reagent_containers/spray/cleaner,
/obj/item/reagent_containers/glass/bottle/nutrient/mut,
/turf/simulated/floor/plating,
/area/ruin/ancientstation)
"kh" = (
+3
View File
@@ -17393,6 +17393,7 @@
name = "south bump";
pixel_y = -24
},
/obj/item/storage/bag/plants/seed_sorting_tray,
/turf/simulated/floor/plasteel{
dir = 4;
icon_state = "green"
@@ -17627,6 +17628,7 @@
/obj/machinery/light{
dir = 4
},
/obj/item/reagent_containers/glass/bottle/nutrient/mut,
/turf/simulated/floor/plasteel{
dir = 4;
icon_state = "green"
@@ -83589,6 +83591,7 @@
/obj/item/shovel/spade,
/obj/item/shovel/spade,
/obj/item/plant_analyzer,
/obj/item/storage/bag/plants/seed_sorting_tray,
/turf/simulated/floor/grass,
/area/station/security/permabrig)
"sGj" = (
+3
View File
@@ -7908,6 +7908,7 @@
/obj/item/reagent_containers/glass/bottle/nutrient/ez,
/obj/item/reagent_containers/spray/pestspray,
/obj/item/reagent_containers/spray/plantbgone,
/obj/item/reagent_containers/glass/bottle/nutrient/mut,
/turf/simulated/floor/grass/jungle,
/area/station/hallway/secondary/garden)
"aYc" = (
@@ -7917,6 +7918,7 @@
/obj/item/reagent_containers/glass/bucket,
/obj/item/storage/bag/plants/portaseeder,
/obj/item/reagent_containers/glass/bucket,
/obj/item/storage/bag/plants/seed_sorting_tray,
/turf/simulated/floor/grass/jungle,
/area/station/hallway/secondary/garden)
"aYd" = (
@@ -43324,6 +43326,7 @@
/obj/item/plant_analyzer,
/obj/item/cultivator,
/obj/item/reagent_containers/spray/plantbgone,
/obj/item/storage/bag/plants/seed_sorting_tray,
/turf/simulated/floor/plasteel{
dir = 4;
icon_state = "green"
+85 -83
View File
@@ -9366,6 +9366,7 @@
/obj/structure/cable,
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/delivery/hollow,
/obj/item/reagent_containers/glass/bottle/nutrient/mut,
/turf/simulated/floor/plasteel,
/area/station/maintenance/abandoned_garden)
"aHr" = (
@@ -9676,6 +9677,7 @@
"aIl" = (
/obj/item/reagent_containers/glass/bottle/nutrient/ez,
/obj/item/reagent_containers/glass/bottle/nutrient/ez,
/obj/item/storage/bag/plants/seed_sorting_tray,
/turf/simulated/floor/plasteel{
icon_state = "red"
},
@@ -61698,13 +61700,21 @@
/turf/simulated/floor/plasteel,
/area/station/hallway/primary/aft/south)
"dHO" = (
/obj/effect/spawner/window/reinforced/grilled,
/obj/structure/cable{
d1 = 2;
d2 = 8;
icon_state = "2-8"
},
/obj/structure/cable{
d1 = 1;
d2 = 2;
icon_state = "1-2"
d2 = 8;
icon_state = "1-8"
},
/obj/structure/cable{
d2 = 8;
icon_state = "0-8"
},
/obj/structure/cable,
/obj/effect/spawner/window/reinforced/grilled,
/turf/simulated/floor/plating,
/area/station/hallway/secondary/exit)
"dHQ" = (
@@ -63938,16 +63948,6 @@
/obj/item/crowbar/red,
/turf/simulated/floor/plasteel/dark,
/area/station/maintenance/apmaint)
"dSB" = (
/obj/machinery/atmospherics/unary/portables_connector{
dir = 8
},
/obj/machinery/atmospherics/portable/canister/air,
/obj/effect/turf_decal/stripes/line{
dir = 10
},
/turf/simulated/floor/plasteel,
/area/station/hallway/secondary/exit)
"dSD" = (
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 4
@@ -66421,6 +66421,16 @@
/obj/effect/decal/cleanable/dirt,
/turf/simulated/wall,
/area/station/legal/lawoffice)
"evE" = (
/obj/structure/cable{
d1 = 1;
d2 = 2;
icon_state = "1-2"
},
/obj/structure/cable,
/obj/effect/spawner/window/reinforced/grilled,
/turf/simulated/floor/plating,
/area/station/hallway/secondary/exit)
"evX" = (
/obj/structure/cable,
/obj/effect/spawner/window/reinforced/grilled,
@@ -66555,6 +66565,22 @@
icon_state = "yellowcorner"
},
/area/station/hallway/primary/port/east)
"ezr" = (
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 6
},
/obj/structure/cable{
d1 = 4;
d2 = 8;
icon_state = "4-8"
},
/obj/structure/cable{
d1 = 2;
d2 = 4;
icon_state = "2-4"
},
/turf/simulated/floor/plasteel/white,
/area/station/medical/virology)
"ezR" = (
/obj/effect/decal/cleanable/dirt,
/turf/simulated/floor/plasteel{
@@ -71015,6 +71041,16 @@
},
/turf/simulated/floor/plating,
/area/station/command/office/rd)
"hli" = (
/obj/machinery/atmospherics/unary/portables_connector{
dir = 8
},
/obj/machinery/atmospherics/portable/canister/air,
/obj/effect/turf_decal/stripes/line{
dir = 10
},
/turf/simulated/floor/plasteel,
/area/station/hallway/secondary/exit)
"hly" = (
/obj/structure/table/wood,
/turf/simulated/floor/plasteel/dark,
@@ -73732,6 +73768,10 @@
icon_state = "bar"
},
/area/station/service/kitchen)
"iVe" = (
/obj/effect/spawner/airlock,
/turf/simulated/wall,
/area/station/service/chapel/office)
"iVg" = (
/obj/machinery/economy/atm/directional/west,
/turf/simulated/floor/plasteel{
@@ -75552,15 +75592,6 @@
icon_state = "whiteblue"
},
/area/station/medical/storage)
"kdg" = (
/obj/structure/sign/vacuum{
pixel_x = -32
},
/obj/effect/turf_decal/stripes/line{
dir = 8
},
/turf/simulated/floor/plasteel,
/area/station/hallway/secondary/exit)
"kdm" = (
/obj/machinery/power/apc/critical/directional/north,
/obj/machinery/firealarm{
@@ -75661,6 +75692,15 @@
},
/turf/simulated/floor/plasteel/dark,
/area/station/medical/morgue)
"kfC" = (
/obj/structure/sign/vacuum{
pixel_x = -32
},
/obj/effect/turf_decal/stripes/line{
dir = 8
},
/turf/simulated/floor/plasteel,
/area/station/hallway/secondary/exit)
"kfT" = (
/obj/structure/cable{
d2 = 4;
@@ -82346,22 +82386,6 @@
icon_state = "red"
},
/area/station/security/permabrig)
"ogR" = (
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 6
},
/obj/structure/cable{
d1 = 4;
d2 = 8;
icon_state = "4-8"
},
/obj/structure/cable{
d1 = 2;
d2 = 4;
icon_state = "2-4"
},
/turf/simulated/floor/plasteel/white,
/area/station/medical/virology)
"ogX" = (
/obj/machinery/camera{
c_tag = "Experimentation Lab Office";
@@ -91308,6 +91332,21 @@
},
/turf/simulated/floor/plasteel,
/area/station/science/research)
"tjT" = (
/obj/item/radio/intercom{
name = "west bump";
pixel_x = -28
},
/obj/machinery/newscaster{
dir = 1;
name = "south bump";
pixel_y = -28
},
/obj/effect/turf_decal/stripes/line{
dir = 10
},
/turf/simulated/floor/plasteel,
/area/station/hallway/secondary/exit)
"tkb" = (
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 6
@@ -91840,24 +91879,6 @@
icon_state = "yellowcorner"
},
/area/station/hallway/primary/port/west)
"tEp" = (
/obj/effect/spawner/window/reinforced/grilled,
/obj/structure/cable{
d1 = 2;
d2 = 8;
icon_state = "2-8"
},
/obj/structure/cable{
d1 = 1;
d2 = 8;
icon_state = "1-8"
},
/obj/structure/cable{
d2 = 8;
icon_state = "0-8"
},
/turf/simulated/floor/plating,
/area/station/hallway/secondary/exit)
"tEw" = (
/obj/structure/showcase{
density = 0;
@@ -92355,21 +92376,6 @@
/obj/effect/spawner/window/reinforced/grilled,
/turf/simulated/floor/plating,
/area/station/security/prison/cell_block)
"tSp" = (
/obj/item/radio/intercom{
name = "west bump";
pixel_x = -28
},
/obj/machinery/newscaster{
dir = 1;
name = "south bump";
pixel_y = -28
},
/obj/effect/turf_decal/stripes/line{
dir = 10
},
/turf/simulated/floor/plasteel,
/area/station/hallway/secondary/exit)
"tSt" = (
/obj/structure/table,
/obj/item/reagent_containers/drinks/drinkingglass{
@@ -93009,10 +93015,6 @@
icon_state = "darkred"
},
/area/station/security/processing)
"uil" = (
/obj/effect/spawner/airlock,
/turf/simulated/wall,
/area/station/service/chapel/office)
"uit" = (
/obj/machinery/atmospherics/unary/vent_pump{
dir = 4;
@@ -136691,7 +136693,7 @@ dIx
dIx
dIx
dIx
uil
iVe
abj
aaa
aaa
@@ -137202,7 +137204,7 @@ dPM
dkq
dSs
dSP
dSB
hli
dIH
dIH
dIH
@@ -137460,8 +137462,8 @@ dNa
dXJ
dKo
dUj
kdg
tSp
kfC
tjT
dIH
abj
aaa
@@ -140531,9 +140533,9 @@ pIY
kuJ
kpd
kpd
tEp
dHO
dHO
evE
evE
tJT
dKQ
jpk
@@ -149016,7 +149018,7 @@ dGw
dGw
hGZ
qgr
ogR
ezr
wWW
qfH
sRk
+114 -102
View File
@@ -22737,6 +22737,7 @@
},
/obj/item/reagent_containers/glass/bottle/nutrient/ez,
/obj/item/reagent_containers/spray/plantbgone,
/obj/item/reagent_containers/glass/bottle/nutrient/mut,
/turf/simulated/floor/plasteel,
/area/station/hallway/secondary/garden)
"bBN" = (
@@ -23451,17 +23452,6 @@
icon_state = "neutral"
},
/area/station/hallway/secondary/garden)
"bDJ" = (
/obj/structure/table,
/obj/item/hatchet,
/obj/item/crowbar,
/obj/item/plant_analyzer,
/obj/item/reagent_containers/glass/bucket,
/obj/item/cultivator,
/obj/item/paper/hydroponics,
/obj/machinery/alarm/directional/east,
/turf/simulated/floor/plasteel,
/area/station/hallway/secondary/garden)
"bDL" = (
/obj/structure/cable{
d1 = 1;
@@ -35222,15 +35212,6 @@
"cvo" = (
/turf/simulated/wall/r_wall,
/area/station/maintenance/medmaint)
"cvu" = (
/obj/machinery/alarm/directional/north,
/obj/structure/window/reinforced{
dir = 4
},
/obj/structure/flora/ausbushes/fernybush,
/obj/structure/flora/ausbushes/ppflowers,
/turf/simulated/floor/grass/no_creep,
/area/station/science/research)
"cvw" = (
/obj/structure/disposalpipe/segment,
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
@@ -38062,16 +38043,11 @@
/turf/simulated/floor/plasteel,
/area/station/hallway/secondary/exit)
"cGz" = (
/obj/structure/extinguisher_cabinet{
name = "west bump";
pixel_x = -27
/obj/machinery/economy/vending/scidrobe,
/turf/simulated/floor/plasteel{
dir = 4;
icon_state = "whitepurplecorner"
},
/obj/structure/window/reinforced{
dir = 4
},
/obj/structure/flora/ausbushes/fernybush,
/obj/structure/flora/ausbushes/ppflowers,
/turf/simulated/floor/grass/no_creep,
/area/station/science/research)
"cGA" = (
/obj/structure/chair/comfy/black{
@@ -45501,6 +45477,7 @@
name = "processing tint control";
pixel_x = -6;
pixel_y = 24;
range = 4;
req_access_txt = "63"
},
/obj/machinery/light_switch{
@@ -47558,25 +47535,6 @@
},
/turf/simulated/floor/engine,
/area/station/science/test_chamber)
"eIe" = (
/obj/machinery/firealarm{
dir = 4;
name = "east bump";
pixel_x = 24
},
/obj/structure/disposalpipe/segment,
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
/obj/structure/cable{
d1 = 1;
d2 = 2;
icon_state = "1-2"
},
/turf/simulated/floor/plasteel{
dir = 8;
icon_state = "whitepurple"
},
/area/station/science/research)
"eIj" = (
/obj/structure/table/wood,
/obj/item/folder/blue,
@@ -55721,6 +55679,18 @@
},
/turf/simulated/floor/plating,
/area/station/security/brig)
"hUK" = (
/obj/structure/table,
/obj/item/hatchet,
/obj/item/crowbar,
/obj/item/plant_analyzer,
/obj/item/reagent_containers/glass/bucket,
/obj/item/cultivator,
/obj/item/paper/hydroponics,
/obj/item/storage/bag/plants/seed_sorting_tray,
/obj/machinery/alarm/directional/east,
/turf/simulated/floor/plasteel,
/area/station/hallway/secondary/garden)
"hVa" = (
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
/turf/simulated/floor/plasteel,
@@ -65264,23 +65234,6 @@
icon_state = "dark"
},
/area/station/security/storage)
"lTc" = (
/obj/machinery/light{
dir = 4
},
/obj/structure/disposalpipe/segment,
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
/obj/structure/cable{
d1 = 1;
d2 = 2;
icon_state = "1-2"
},
/turf/simulated/floor/plasteel{
dir = 8;
icon_state = "whitepurple"
},
/area/station/science/research)
"lTB" = (
/obj/item/clothing/gloves/color/latex,
/obj/structure/rack,
@@ -66569,6 +66522,17 @@
/obj/machinery/atmospherics/pipe/simple/hidden/purple,
/turf/simulated/floor/engine,
/area/station/science/test_chamber)
"myX" = (
/obj/machinery/light{
dir = 4
},
/obj/structure/window/reinforced{
dir = 8
},
/obj/structure/flora/ausbushes/ppflowers,
/obj/structure/flora/ausbushes/fullgrass,
/turf/simulated/floor/grass/no_creep,
/area/station/science/research)
"myY" = (
/obj/machinery/atmospherics/pipe/manifold/hidden/supply,
/turf/simulated/floor/plasteel,
@@ -73158,6 +73122,31 @@
/obj/effect/spawner/random_spawners/oil_maybe,
/turf/simulated/floor/plasteel,
/area/station/maintenance/fsmaint)
"pmd" = (
/obj/structure/disposalpipe/segment{
dir = 4
},
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 4
},
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 4
},
/obj/structure/cable{
d1 = 4;
d2 = 8;
icon_state = "4-8"
},
/obj/machinery/newscaster{
dir = 1;
name = "south bump";
pixel_y = -28
},
/turf/simulated/floor/plasteel{
dir = 1;
icon_state = "whitepurple"
},
/area/station/science/research)
"pmE" = (
/obj/machinery/atmospherics/pipe/simple/visible/yellow{
dir = 4
@@ -73855,7 +73844,7 @@
"pCf" = (
/obj/machinery/hologram/holopad,
/turf/simulated/floor/plasteel{
dir = 4;
dir = 5;
icon_state = "whitepurple"
},
/area/station/science/research)
@@ -77202,14 +77191,6 @@
},
/turf/simulated/floor/plasteel,
/area/station/hallway/primary/central/north)
"qXr" = (
/obj/structure/window/reinforced{
dir = 4
},
/obj/structure/flora/ausbushes/fernybush,
/obj/structure/flora/ausbushes/ppflowers,
/turf/simulated/floor/grass/no_creep,
/area/station/science/research)
"qXK" = (
/obj/machinery/atmospherics/pipe/simple/visible/yellow,
/turf/simulated/floor/plasteel{
@@ -82271,8 +82252,10 @@
},
/area/station/supply/office)
"taP" = (
/obj/machinery/status_display{
pixel_x = -32
/obj/machinery/firealarm{
dir = 8;
name = "west bump";
pixel_x = -24
},
/turf/simulated/floor/plasteel{
dir = 4;
@@ -82916,10 +82899,10 @@
/turf/simulated/floor/plating,
/area/station/maintenance/apmaint)
"tnN" = (
/obj/item/kirbyplants/plant24,
/obj/machinery/camera{
c_tag = "Science Hallway - Research";
network = list("Research","SS13")
network = list("Research","SS13");
dir = 9
},
/obj/structure/disposalpipe/segment{
dir = 2;
@@ -82936,6 +82919,10 @@
d2 = 8;
icon_state = "2-8"
},
/obj/structure/extinguisher_cabinet{
name = "north bump";
pixel_y = 30
},
/turf/simulated/floor/plasteel{
dir = 8;
icon_state = "whitepurplecorner"
@@ -85368,6 +85355,16 @@
icon_state = "dark"
},
/area/station/medical/surgery/observation)
"uxo" = (
/obj/machinery/status_display{
layer = 4;
pixel_y = 32
},
/obj/item/kirbyplants/plant24,
/turf/simulated/floor/plasteel{
icon_state = "whitepurplecorner"
},
/area/station/science/research)
"uxy" = (
/obj/machinery/atmospherics/binary/pump{
dir = 0;
@@ -85659,6 +85656,7 @@
name = "north bump";
pixel_y = 24
},
/obj/item/storage/bag/plants/seed_sorting_tray,
/turf/simulated/floor/plasteel{
dir = 5;
icon_state = "green"
@@ -88949,11 +88947,6 @@
/turf/simulated/floor/grass/no_creep,
/area/station/security/permabrig)
"waj" = (
/obj/machinery/newscaster{
dir = 8;
name = "east bump";
pixel_x = 28
},
/obj/structure/disposalpipe/segment,
/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{
dir = 4
@@ -89524,7 +89517,7 @@
icon_state = "1-4"
},
/turf/simulated/floor/plasteel{
icon_state = "whitepurplecorner"
icon_state = "whitepurple"
},
/area/station/science/research)
"woK" = (
@@ -89994,6 +89987,17 @@
icon_state = "white"
},
/area/station/science/xenobiology)
"wzb" = (
/obj/structure/window/reinforced{
dir = 1
},
/obj/structure/window/reinforced{
dir = 8
},
/obj/structure/flora/ausbushes/fernybush,
/obj/structure/flora/ausbushes/ppflowers,
/turf/simulated/floor/grass/no_creep,
/area/station/science/research)
"wzx" = (
/obj/machinery/atmospherics/pipe/simple/hidden/cyan{
dir = 5
@@ -90752,9 +90756,6 @@
/turf/simulated/floor/plating,
/area/station/maintenance/fsmaint)
"wTJ" = (
/obj/machinery/light{
dir = 1
},
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 4
},
@@ -90766,6 +90767,9 @@
d2 = 8;
icon_state = "4-8"
},
/obj/machinery/light{
dir = 1
},
/turf/simulated/floor/plasteel{
icon_state = "whitepurple"
},
@@ -93440,6 +93444,14 @@
icon_state = "yellow"
},
/area/station/engineering/break_room)
"xYS" = (
/obj/structure/window/reinforced{
dir = 8
},
/obj/structure/flora/ausbushes/fernybush,
/obj/structure/flora/ausbushes/ppflowers,
/turf/simulated/floor/grass/no_creep,
/area/station/science/research)
"xZa" = (
/obj/structure/plasticflaps{
opacity = 1
@@ -111884,7 +111896,7 @@ cdT
cdT
cdT
cdT
bDJ
hUK
bBK
iWb
uiO
@@ -123734,8 +123746,8 @@ cic
fHG
fpM
cfw
cvu
qXr
uxo
qnt
cGz
cJp
qcw
@@ -123992,7 +124004,7 @@ bUy
fPC
uVF
wos
qnt
cwR
pCf
taP
pnh
@@ -124508,8 +124520,8 @@ cvl
wTJ
cwR
wIT
eIe
lTc
cOZ
cOZ
waj
des
fWN
@@ -124765,9 +124777,9 @@ bWe
mfG
cwR
cxP
lAX
lAX
lAX
wzb
myX
xYS
lAX
cfw
gTS
@@ -125021,10 +125033,10 @@ cut
soO
nry
cwR
cxP
eZW
lJA
rfD
pmd
lAX
lAX
lAX
lAX
uws
bGl
@@ -125280,8 +125292,8 @@ tnN
lGC
gcy
eZW
keQ
keQ
lJA
rfD
lAX
gEt
bGl
+13 -13
View File
@@ -46,26 +46,26 @@
#define R_HOST ((1<<18)-1) //17 bit bitmask, update me if we ever add more admin permissions. Sum of all permissions to allow easy setting.
#define ADMIN_QUE(user,display) "<a href='?_src_=holder;adminmoreinfo=[user.UID()]'>[display]</a>"
#define ADMIN_FLW(user,display) "<a href='?_src_=holder;adminplayerobservefollow=[user.UID()]'>[display]</a>"
#define ADMIN_PP(user,display) "<a href='?_src_=holder;adminplayeropts=[user.UID()]'>[display]</a>"
#define ADMIN_VV(atom,display) "<a href='?_src_=vars;Vars=[atom.UID()]'>[display]</a>"
#define ADMIN_SM(user,display) "<a href='?_src_=holder;subtlemessage=[user.UID()]'>[display]</a>"
#define ADMIN_TP(user,display) "<a href='?_src_=holder;traitor=[user.UID()]'>[display]</a>"
#define ADMIN_ALERT(user, display) "<a href='?_src_=holder;adminalert=[user.UID()]'>[display]</a>"
#define ADMIN_BSA(user,display) "<a href='?_src_=holder;BlueSpaceArtillery=[user.UID()]'>[display]</a>"
#define ADMIN_CENTCOM_REPLY(user,display) "<a href='?_src_=holder;CentcommReply=[user.UID()]'>[display]</a>"
#define ADMIN_SYNDICATE_REPLY(user,display) "<a href='?_src_=holder;SyndicateReply=[user.UID()]'>[display]</a>"
#define ADMIN_SC(user,display) "<a href='?_src_=holder;adminspawncookie=[user.UID()]'>[display]</a>"
#define ADMIN_QUE(user,display) "<a href='byond://?_src_=holder;adminmoreinfo=[user.UID()]'>[display]</a>"
#define ADMIN_FLW(user,display) "<a href='byond://?_src_=holder;adminplayerobservefollow=[user.UID()]'>[display]</a>"
#define ADMIN_PP(user,display) "<a href='byond://?_src_=holder;adminplayeropts=[user.UID()]'>[display]</a>"
#define ADMIN_VV(atom,display) "<a href='byond://?_src_=vars;Vars=[atom.UID()]'>[display]</a>"
#define ADMIN_SM(user,display) "<a href='byond://?_src_=holder;subtlemessage=[user.UID()]'>[display]</a>"
#define ADMIN_TP(user,display) "<a href='byond://?_src_=holder;traitor=[user.UID()]'>[display]</a>"
#define ADMIN_ALERT(user, display) "<a href='byond://?_src_=holder;adminalert=[user.UID()]'>[display]</a>"
#define ADMIN_BSA(user,display) "<a href='byond://?_src_=holder;BlueSpaceArtillery=[user.UID()]'>[display]</a>"
#define ADMIN_CENTCOM_REPLY(user,display) "<a href='byond://?_src_=holder;CentcommReply=[user.UID()]'>[display]</a>"
#define ADMIN_SYNDICATE_REPLY(user,display) "<a href='byond://?_src_=holder;SyndicateReply=[user.UID()]'>[display]</a>"
#define ADMIN_SC(user,display) "<a href='byond://?_src_=holder;adminspawncookie=[user.UID()]'>[display]</a>"
#define ADMIN_LOOKUP(user) "[key_name_admin(user)]([ADMIN_QUE(user,"?")])"
#define ADMIN_LOOKUPFLW(user) "[key_name_admin(user)]([ADMIN_QUE(user,"?")]) ([ADMIN_FLW(user,"FLW")])"
#define ADMIN_FULLMONTY(user) "[key_name_admin(user)] ([ADMIN_QUE(user,"?")]) ([ADMIN_PP(user,"PP")]) ([ADMIN_VV(user,"VV")]) ([ADMIN_SM(user,"SM")]) ([ADMIN_FLW(user,"FLW")]) ([ADMIN_TP(user,"TP")])"
#define ADMIN_JMP(src) "(<a href='?_src_=holder;adminplayerobservecoodjump=1;X=[src.x];Y=[src.y];Z=[src.z]'>JMP</a>)"
#define ADMIN_JMP(src) "(<a href='byond://?_src_=holder;adminplayerobservecoodjump=1;X=[src.x];Y=[src.y];Z=[src.z]'>JMP</a>)"
#define COORD(src) "[src ? "([src.x],[src.y],[src.z])" : "nonexistent location"]"
#define AREACOORD(src) "[src ? "[get_area_name(src, TRUE)] [COORD(src)]" : "nonexistent location" ]"
#define ADMIN_COORDJMP(src) "[src ? "[COORD(src)] [ADMIN_JMP(src)]" : "nonexistent location"]"
#define ADMIN_VERBOSEJMP(src) "[src ? "[AREACOORD(src)] [ADMIN_JMP(src)]" : "nonexistent location"]"
#define ADMIN_SHOWDETAILS(mask, content) "<a href='?_src_=holder;showdetails=[html_encode(content)]'>[mask]</a>"
#define ADMIN_SHOWDETAILS(mask, content) "<a href='byond://?_src_=holder;showdetails=[html_encode(content)]'>[mask]</a>"
/// Note text for suppressed CID warning
#define CIDWARNING_SUPPRESSED_NOTETEXT "CID COUNT WARNING DISABLED - Delete this note to re-enable"
+3
View File
@@ -1041,3 +1041,6 @@
///from of mob/MouseDrop(): (/atom/over, /mob/user)
#define COMSIG_DO_MOB_STRIP "do_mob_strip"
// Sent when a mob spawner is attacked directly or via projectile.
#define COMSIG_SPAWNER_SET_TARGET "spawner_set_target"
+2 -2
View File
@@ -185,8 +185,8 @@
#define SHOES_LAYER 28
#define GLOVES_LAYER 27
#define EARS_LAYER 26
#define SUIT_LAYER 25
#define BELT_LAYER 24 //Possible make this an overlay of somethign required to wear a belt?
#define BELT_LAYER 25 //Possible make this an overlay of something required to wear a belt?
#define SUIT_LAYER 24
#define SUIT_STORE_LAYER 23
#define BACK_LAYER 22
#define HEAD_ACCESSORY_LAYER 21
+1 -1
View File
@@ -80,7 +80,7 @@
//Returns a list in plain english as a string
/proc/english_list(list/input, nothing_text = "nothing", and_text = " and ", comma_text = ", ", final_comma_text = "" )
var/total = input.len
var/total = length(input)
if(!total)
return "[nothing_text]"
else if(total == 1)
+3 -3
View File
@@ -310,8 +310,8 @@
var/area/A
if(isatom(MT) && !QDELETED(MT))
A = get_area(MT)
else
A = get_area(user)
else
A = get_area(user)
if(A && A.hide_attacklogs)
loglevel = ATKLOG_ALL
else if(istype(MT))
@@ -556,7 +556,7 @@ GLOBAL_LIST_EMPTY(do_after_once_tracker)
to_chat(user, "Name = <b>[M.name]</b>; Real_name = [M.real_name]; Mind_name = [M.mind?"[M.mind.name]":""]; Key = <b>[M.key]</b>;")
to_chat(user, "Location = [location_description];")
to_chat(user, "[special_role_description]")
to_chat(user, "(<a href='?src=[usr.UID()];priv_msg=[M.client?.ckey]'>PM</a>) ([ADMIN_PP(M,"PP")]) ([ADMIN_VV(M,"VV")]) ([ADMIN_TP(M,"TP")]) ([ADMIN_SM(M,"SM")]) ([ADMIN_FLW(M,"FLW")])")
to_chat(user, "(<a href='byond://?src=[usr.UID()];priv_msg=[M.client?.ckey]'>PM</a>) ([ADMIN_PP(M,"PP")]) ([ADMIN_VV(M,"VV")]) ([ADMIN_TP(M,"TP")]) ([ADMIN_SM(M,"SM")]) ([ADMIN_FLW(M,"FLW")])")
// Gets the first mob contained in an atom, and warns the user if there's not exactly one
/proc/get_mob_in_atom_with_warning(atom/A, mob/user = usr)
+2
View File
@@ -468,6 +468,8 @@
text = replacetext(text, "\[/i\]", "</I>")
text = replacetext(text, "\[u\]", "<U>")
text = replacetext(text, "\[/u\]", "</U>")
text = replacetext(text, "\[s\]", "<S>")
text = replacetext(text, "\[/s\]", "</S>")
if(findtext(text, "\[signfont\]") || findtext(text, "\[/signfont\]")) // Make sure the text is there before giving off an error
if(check_rights(R_EVENT))
text = replacetext(text, "\[signfont\]", "<font face=\"[signfont]\"><i>")
+1 -1
View File
@@ -1252,7 +1252,7 @@ Standard way to write links -Sayu
/proc/topic_link(datum/D, arglist, content)
if(islist(arglist))
arglist = list2params(arglist)
return "<a href='?src=[D.UID()];[arglist]'>[content]</a>"
return "<a href='byond://?src=[D.UID()];[arglist]'>[content]</a>"
+1 -1
View File
@@ -463,7 +463,7 @@ SUBSYSTEM_DEF(dbcore)
// Just tells the admins if a query timed out, and asks if the server hung to help error reporting
/datum/db_query/proc/slow_query_check()
message_admins("HEY! A database query timed out. Did the server just hang? <a href='?_src_=holder;slowquery=yes'>\[YES\]</a>|<a href='?_src_=holder;slowquery=no'>\[NO\]</a>")
message_admins("HEY! A database query timed out. Did the server just hang? <a href='byond://?_src_=holder;slowquery=yes'>\[YES\]</a>|<a href='byond://?_src_=holder;slowquery=no'>\[NO\]</a>")
/**
+1 -1
View File
@@ -87,7 +87,7 @@ SUBSYSTEM_DEF(debugview)
if((SS.flags & SS_NO_FIRE) || !SS.can_fire)
continue
html += "[SS.state_colour()]\[[SS.state_letter()]][SS.ss_id]</font>\t[round(SS.cost, 1)]ms | [round(SS.tick_usage, 1)]% [SS.get_stat_details() ? "| [SS.get_stat_details()] " : ""]| <a href=?_src_=vars;Vars=[SS.UID()]>VV Edit</a>"
html += "[SS.state_colour()]\[[SS.state_letter()]][SS.ss_id]</font>\t[round(SS.cost, 1)]ms | [round(SS.tick_usage, 1)]% [SS.get_stat_details() ? "| [SS.get_stat_details()] " : ""]| <a href=byond://?_src_=vars;Vars=[SS.UID()]>VV Edit</a>"
popup.set_content(html.Join("<br>"))
popup.open(FALSE)
+22 -22
View File
@@ -101,11 +101,11 @@ SUBSYSTEM_DEF(events)
to_chat(world, message)
/datum/controller/subsystem/events/proc/GetInteractWindow()
var/html = "<A align='right' href='?src=[UID()];refresh=1'>Refresh</A>"
var/html = "<A align='right' href='byond://?src=[UID()];refresh=1'>Refresh</A>"
if(selected_event_container)
var/event_time = max(0, selected_event_container.next_event_time - world.time)
html += "<A align='right' href='?src=[UID()];back=1'>Back</A><br>"
html += "<A align='right' href='byond://?src=[UID()];back=1'>Back</A><br>"
html += "Time till start: [round(event_time / 600, 0.1)]<br>"
html += "<div class='block'>"
html += "<h2>Available [GLOB.severity_to_string[selected_event_container.severity]] Events (queued & running events will not be displayed)</h2>"
@@ -114,13 +114,13 @@ SUBSYSTEM_DEF(events)
for(var/datum/event_meta/EM in selected_event_container.available_events)
html += "<tr>"
html += "<td>[EM.name]</td>"
html += "<td><A align='right' href='?src=[UID()];set_weight=\ref[EM]'>[EM.weight]</A></td>"
html += "<td><A align='right' href='byond://?src=[UID()];set_weight=\ref[EM]'>[EM.weight]</A></td>"
html += "<td>[EM.min_weight]</td>"
html += "<td>[EM.max_weight == INFINITY ? "No max" : EM.max_weight]</td>"
html += "<td><A align='right' href='?src=[UID()];toggle_oneshot=\ref[EM]'>[EM.one_shot]</A></td>"
html += "<td><A align='right' href='?src=[UID()];toggle_enabled=\ref[EM]'>[EM.enabled]</A></td>"
html += "<td><A align='right' href='byond://?src=[UID()];toggle_oneshot=\ref[EM]'>[EM.one_shot]</A></td>"
html += "<td><A align='right' href='byond://?src=[UID()];toggle_enabled=\ref[EM]'>[EM.enabled]</A></td>"
html += "<td><span class='alert'>[EM.get_weight(number_active_with_role())]</span></td>"
html += "<td><A align='right' href='?src=[UID()];remove=\ref[EM];EC=\ref[selected_event_container]'>Remove</A></td>"
html += "<td><A align='right' href='byond://?src=[UID()];remove=\ref[EM];EC=\ref[selected_event_container]'>Remove</A></td>"
html += "</tr>"
html += "</table>"
html += "</div>"
@@ -130,16 +130,16 @@ SUBSYSTEM_DEF(events)
html += "<table[table_options]>"
html += "<tr [head_options]><td[row_options2]>Name</td><td[row_options2]>Type</td><td[row_options1]>Weight</td><td[row_options1]>OneShot</td></tr>"
html += "<tr>"
html += "<td><A align='right' href='?src=[UID()];set_name=\ref[new_event]'>[new_event.name ? new_event.name : "Enter Event"]</A></td>"
html += "<td><A align='right' href='?src=[UID()];set_type=\ref[new_event]'>[new_event.event_type ? new_event.event_type : "Select Type"]</A></td>"
html += "<td><A align='right' href='?src=[UID()];set_weight=\ref[new_event]'>[new_event.weight ? new_event.weight : 0]</A></td>"
html += "<td><A align='right' href='?src=[UID()];toggle_oneshot=\ref[new_event]'>[new_event.one_shot]</A></td>"
html += "<td><A align='right' href='byond://?src=[UID()];set_name=\ref[new_event]'>[new_event.name ? new_event.name : "Enter Event"]</A></td>"
html += "<td><A align='right' href='byond://?src=[UID()];set_type=\ref[new_event]'>[new_event.event_type ? new_event.event_type : "Select Type"]</A></td>"
html += "<td><A align='right' href='byond://?src=[UID()];set_weight=\ref[new_event]'>[new_event.weight ? new_event.weight : 0]</A></td>"
html += "<td><A align='right' href='byond://?src=[UID()];toggle_oneshot=\ref[new_event]'>[new_event.one_shot]</A></td>"
html += "</tr>"
html += "</table>"
html += "<A align='right' href='?src=[UID()];add=\ref[selected_event_container]'>Add</A><br>"
html += "<A align='right' href='byond://?src=[UID()];add=\ref[selected_event_container]'>Add</A><br>"
html += "</div>"
else
html += "<A align='right' href='?src=[UID()];toggle_report=1'>Round End Report: [report_at_round_end ? "On": "Off"]</A><br>"
html += "<A align='right' href='byond://?src=[UID()];toggle_report=1'>Round End Report: [report_at_round_end ? "On": "Off"]</A><br>"
html += "<div class='block'>"
html += "<h2>Event Start</h2>"
@@ -153,16 +153,16 @@ SUBSYSTEM_DEF(events)
html += "<td>[station_time_timestamp("hh:mm:ss", max(EC.next_event_time, world.time))]</td>"
html += "<td>[round(next_event_at / 600, 0.1)]</td>"
html += "<td>"
html += "<A align='right' href='?src=[UID()];dec_timer=2;event=\ref[EC]'>--</A>"
html += "<A align='right' href='?src=[UID()];dec_timer=1;event=\ref[EC]'>-</A>"
html += "<A align='right' href='?src=[UID()];inc_timer=1;event=\ref[EC]'>+</A>"
html += "<A align='right' href='?src=[UID()];inc_timer=2;event=\ref[EC]'>++</A>"
html += "<A align='right' href='byond://?src=[UID()];dec_timer=2;event=\ref[EC]'>--</A>"
html += "<A align='right' href='byond://?src=[UID()];dec_timer=1;event=\ref[EC]'>-</A>"
html += "<A align='right' href='byond://?src=[UID()];inc_timer=1;event=\ref[EC]'>+</A>"
html += "<A align='right' href='byond://?src=[UID()];inc_timer=2;event=\ref[EC]'>++</A>"
html += "</td>"
html += "<td>"
html += "<A align='right' href='?src=[UID()];pause=\ref[EC]'>[EC.delayed ? "Resume" : "Pause"]</A>"
html += "<A align='right' href='byond://?src=[UID()];pause=\ref[EC]'>[EC.delayed ? "Resume" : "Pause"]</A>"
html += "</td>"
html += "<td>"
html += "<A align='right' href='?src=[UID()];interval=\ref[EC]'>[EC.delay_modifier]</A>"
html += "<A align='right' href='byond://?src=[UID()];interval=\ref[EC]'>[EC.delay_modifier]</A>"
html += "</td>"
html += "</tr>"
html += "</table>"
@@ -177,9 +177,9 @@ SUBSYSTEM_DEF(events)
var/datum/event_meta/EM = EC.next_event
html += "<tr>"
html += "<td>[GLOB.severity_to_string[severity]]</td>"
html += "<td><A align='right' href='?src=[UID()];select_event=\ref[EC]'>[EM ? EM.name : "Random"]</A></td>"
html += "<td><A align='right' href='?src=[UID()];view_events=\ref[EC]'>View</A></td>"
html += "<td><A align='right' href='?src=[UID()];clear=\ref[EC]'>Clear</A></td>"
html += "<td><A align='right' href='byond://?src=[UID()];select_event=\ref[EC]'>[EM ? EM.name : "Random"]</A></td>"
html += "<td><A align='right' href='byond://?src=[UID()];view_events=\ref[EC]'>View</A></td>"
html += "<td><A align='right' href='byond://?src=[UID()];clear=\ref[EC]'>Clear</A></td>"
html += "</tr>"
html += "</table>"
html += "</div>"
@@ -201,7 +201,7 @@ SUBSYSTEM_DEF(events)
html += "<td>[EM.name]</td>"
html += "<td>[no_end ? "N/A" : station_time_timestamp("hh:mm:ss", ends_at)]</td>"
html += "<td>[no_end ? "N/A" : ends_in]</td>"
html += "<td><A align='right' href='?src=[UID()];stop=\ref[E]'>Stop</A></td>"
html += "<td><A align='right' href='byond://?src=[UID()];stop=\ref[E]'>Stop</A></td>"
html += "</tr>"
html += "</table>"
html += "</div>"
+2 -2
View File
@@ -130,8 +130,8 @@ SUBSYSTEM_DEF(ghost_spawns)
// Chat message
var/act_jump = ""
if(isatom(source))
act_jump = "<a href='?src=[M.UID()];jump=\ref[source]'>\[Teleport]</a>"
var/act_signup = "<a href='?src=[A.UID()];signup=1'>\[Sign Up]</a>"
act_jump = "<a href='byond://?src=[M.UID()];jump=\ref[source]'>\[Teleport]</a>"
var/act_signup = "<a href='byond://?src=[A.UID()];signup=1'>\[Sign Up]</a>"
to_chat(M, "<big><span class='boldnotice'>Now looking for candidates [role ? "to play as \an [role_cleanname || get_roletext(role)]" : "\"[question]\""]. [act_jump] [act_signup] [reason ? "<i>\nReason: [sanitize(reason)]</i>" : ""]</span></big>")
// Start processing it so it updates visually the timer
+1 -1
View File
@@ -782,7 +782,7 @@ SUBSYSTEM_DEF(ticker)
AR.handle_data(load_queries[ckey])
save_queries[ckey] = AR.get_save_query()
log_text += "<small>- <a href='?priv_msg=[ckey]'>[ckey]</a>: [AR.infraction_count]</small>"
log_text += "<small>- <a href='byond://?priv_msg=[ckey]'>[ckey]</a>: [AR.infraction_count]</small>"
log_text += "Investigation advised if there are a high number of infractions"
+16 -16
View File
@@ -157,10 +157,10 @@ SUBSYSTEM_DEF(tickets)
L += "<span class='[ticket_help_span]'>[ticket_help_type]: </span><span class='boldnotice'>[key_and_name][one_line ? " " : "<br>"]</span>"
if(M)
L += "([ADMIN_QUE(M,"?")]) ([ADMIN_PP(M,"PP")]) ([ADMIN_VV(M,"VV")]) ([ADMIN_TP(M,"TP")]) ([ADMIN_SM(M,"SM")]) ([admin_jump_link(M)])"
L += "(<a href='?_src_=holder;openticket=[ticketNum][anchor_link_extra]'>TICKET</a>) "
L += "[isAI(M) ? "(<a href='?_src_=holder;adminchecklaws=[M.UID()]'>CL</a>)" : ""] (<a href='?_src_=holder;take_question=[ticketNum][anchor_link_extra]'>TAKE</a>) "
L += "(<a href='?_src_=holder;resolve=[ticketNum][anchor_link_extra]'>RESOLVE</a>) (<a href='?_src_=holder;autorespond=[ticketNum][anchor_link_extra]'>AUTO</a>) "
L += "(<a href='?_src_=holder;convert_ticket=[ticketNum][anchor_link_extra]'>CONVERT</a>) :</span> <span class='[ticket_help_span]'>[one_line ? " " : "<br><br>"][msg]</span>"
L += "(<a href='byond://?_src_=holder;openticket=[ticketNum][anchor_link_extra]'>TICKET</a>) "
L += "[isAI(M) ? "(<a href='byond://?_src_=holder;adminchecklaws=[M.UID()]'>CL</a>)" : ""] (<a href='byond://?_src_=holder;take_question=[ticketNum][anchor_link_extra]'>TAKE</a>) "
L += "(<a href='byond://?_src_=holder;resolve=[ticketNum][anchor_link_extra]'>RESOLVE</a>) (<a href='byond://?_src_=holder;autorespond=[ticketNum][anchor_link_extra]'>AUTO</a>) "
L += "(<a href='byond://?_src_=holder;convert_ticket=[ticketNum][anchor_link_extra]'>CONVERT</a>) :</span> <span class='[ticket_help_span]'>[one_line ? " " : "<br><br>"][msg]</span>"
return L.Join()
//Open a new ticket and populate details then add to the list of open tickets
@@ -491,7 +491,7 @@ UI STUFF
dat += "<head><style>.adminticket{border:2px solid}</style></head>"
dat += "<body><h1>[ticket_system_name]</h1>"
dat +="<a href='?src=[UID()];refresh=1'>Refresh</a><br /><a href='?src=[UID()];showopen=1'>Open Tickets</a><a href='?src=[UID()];showresolved=1'>Resolved Tickets</a><a href='?src=[UID()];showclosed=1'>Closed Tickets</a>"
dat +="<a href='byond://?src=[UID()];refresh=1'>Refresh</a><br /><a href='byond://?src=[UID()];showopen=1'>Open Tickets</a><a href='byond://?src=[UID()];showresolved=1'>Resolved Tickets</a><a href='byond://?src=[UID()];showclosed=1'>Closed Tickets</a>"
if(tab == TICKET_OPEN)
dat += "<h2>Open Tickets</h2>"
dat += "<table style='width:1300px; border: 3px solid;'>"
@@ -500,7 +500,7 @@ UI STUFF
for(var/T in allTickets)
ticket = T
if(ticket.ticketState == TICKET_OPEN || ticket.ticketState == TICKET_STALE)
dat += "<tr style='[trStyle]'><td style ='[tdStyleleft]'><a href='?src=[UID()];resolve=[ticket.ticketNum]'>Resolve</a><a href='?src=[UID()];details=[ticket.ticketNum]'>Details</a> <br /> #[ticket.ticketNum] ([ticket.ingame_time_opened]) [ticket.ticketState == TICKET_STALE ? "<font color='red'><b>STALE</b></font>" : ""] </td><td style='[tdStyle]'><b>[makeUrlMessage(ticket, one_line = TRUE)]</b></td></tr>"
dat += "<tr style='[trStyle]'><td style ='[tdStyleleft]'><a href='byond://?src=[UID()];resolve=[ticket.ticketNum]'>Resolve</a><a href='byond://?src=[UID()];details=[ticket.ticketNum]'>Details</a> <br /> #[ticket.ticketNum] ([ticket.ingame_time_opened]) [ticket.ticketState == TICKET_STALE ? "<font color='red'><b>STALE</b></font>" : ""] </td><td style='[tdStyle]'><b>[makeUrlMessage(ticket, one_line = TRUE)]</b></td></tr>"
else
continue
else if(tab == TICKET_RESOLVED)
@@ -508,7 +508,7 @@ UI STUFF
for(var/T in allTickets)
ticket = T
if(ticket.ticketState == TICKET_RESOLVED)
dat += "<tr style='[trStyle]'><td style ='[tdStyleleft]'><a href='?src=[UID()];resolve=[ticket.ticketNum]'>Resolve</a><a href='?src=[UID()];details=[ticket.ticketNum]'>Details</a> <br /> #[ticket.ticketNum] ([ticket.ingame_time_opened]) </td><td style='[tdStyle]'><b>[makeUrlMessage(ticket, one_line = TRUE)]</b></td></tr>"
dat += "<tr style='[trStyle]'><td style ='[tdStyleleft]'><a href='byond://?src=[UID()];resolve=[ticket.ticketNum]'>Resolve</a><a href='byond://?src=[UID()];details=[ticket.ticketNum]'>Details</a> <br /> #[ticket.ticketNum] ([ticket.ingame_time_opened]) </td><td style='[tdStyle]'><b>[makeUrlMessage(ticket, one_line = TRUE)]</b></td></tr>"
else
continue
else if(tab == TICKET_CLOSED)
@@ -516,16 +516,16 @@ UI STUFF
for(var/T in allTickets)
ticket = T
if(ticket.ticketState == TICKET_CLOSED)
dat += "<tr style='[trStyle]'><td style ='[tdStyleleft]'><a href='?src=[UID()];resolve=[ticket.ticketNum]'>Resolve</a><a href='?src=[UID()];details=[ticket.ticketNum]'>Details</a> <br /> #[ticket.ticketNum] ([ticket.ingame_time_opened]) </td><td style='[tdStyle]'><b>[makeUrlMessage(ticket, one_line = TRUE)]</b></td></tr>"
dat += "<tr style='[trStyle]'><td style ='[tdStyleleft]'><a href='byond://?src=[UID()];resolve=[ticket.ticketNum]'>Resolve</a><a href='byond://?src=[UID()];details=[ticket.ticketNum]'>Details</a> <br /> #[ticket.ticketNum] ([ticket.ingame_time_opened]) </td><td style='[tdStyle]'><b>[makeUrlMessage(ticket, one_line = TRUE)]</b></td></tr>"
else
continue
dat += "</table>"
dat += "<h1>Resolve All</h1>"
if(ticket_system_name == "Mentor Tickets")
dat += "<a href='?src=[UID()];resolveall=1'>Resolve All Open Mentor Tickets</a></body>"
dat += "<a href='byond://?src=[UID()];resolveall=1'>Resolve All Open Mentor Tickets</a></body>"
else
dat += "<a href='?src=[UID()];resolveall=1'>Resolve All Open Admin Tickets</a></body>"
dat += "<a href='byond://?src=[UID()];resolveall=1'>Resolve All Open Admin Tickets</a></body>"
return dat
@@ -542,7 +542,7 @@ UI STUFF
var/dat = "<h1>[ticket_system_name]</h1>"
dat +="<a href='?src=[UID()];refresh=1'>Show All</a><a href='?src=[UID()];refreshdetail=[T.ticketNum]'>Refresh</a>"
dat +="<a href='byond://?src=[UID()];refresh=1'>Show All</a><a href='byond://?src=[UID()];refreshdetail=[T.ticketNum]'>Refresh</a>"
dat += "<h2>Ticket #[T.ticketNum]</h2>"
@@ -557,12 +557,12 @@ UI STUFF
dat += "<tr><td>[TR.to_string()]</td></tr>"
dat += "</table><br /><br />"
dat += "<a href='?src=[UID()];detailreopen=[T.ticketNum]'>Re-Open</a>[check_rights(rights_needed, 0) ? "<a href='?src=[UID()];autorespond=[T.ticketNum]'>Auto</a>": ""]<a href='?src=[UID()];detailresolve=[T.ticketNum]'>Resolve</a><br /><br />"
dat += "<a href='byond://?src=[UID()];detailreopen=[T.ticketNum]'>Re-Open</a>[check_rights(rights_needed, 0) ? "<a href='byond://?src=[UID()];autorespond=[T.ticketNum]'>Auto</a>": ""]<a href='byond://?src=[UID()];detailresolve=[T.ticketNum]'>Resolve</a><br /><br />"
if(!T.staffAssigned)
dat += "No staff member assigned to this [ticket_name] - <a href='?src=[UID()];assignstaff=[T.ticketNum]'>Take Ticket</a><br />"
dat += "No staff member assigned to this [ticket_name] - <a href='byond://?src=[UID()];assignstaff=[T.ticketNum]'>Take Ticket</a><br />"
else
dat += "[T.staffAssigned] is assigned to this Ticket. - <a href='?src=[UID()];assignstaff=[T.ticketNum]'>Take Ticket</a> - <a href='?src=[UID()];unassignstaff=[T.ticketNum]'>Unassign Ticket</a><br />"
dat += "[T.staffAssigned] is assigned to this Ticket. - <a href='byond://?src=[UID()];assignstaff=[T.ticketNum]'>Take Ticket</a> - <a href='byond://?src=[UID()];unassignstaff=[T.ticketNum]'>Unassign Ticket</a><br />"
if(T.lastStaffResponse)
dat += "<b>Last Staff response Response:</b> [T.lastStaffResponse] at [T.lastResponseTime]"
@@ -571,8 +571,8 @@ UI STUFF
dat += "<br /><br />"
dat += "<a href='?src=[UID()];detailclose=[T.ticketNum]'>Close Ticket</a>"
dat += "<a href='?src=[UID()];convert_ticket=[T.ticketNum]'>Convert Ticket</a>"
dat += "<a href='byond://?src=[UID()];detailclose=[T.ticketNum]'>Close Ticket</a>"
dat += "<a href='byond://?src=[UID()];convert_ticket=[T.ticketNum]'>Convert Ticket</a>"
var/datum/browser/popup = new(user, "[ticket_system_name]detail", "[ticket_system_name] #[T.ticketNum]", 1000, 600)
popup.set_content(dat)
+14
View File
@@ -7,6 +7,7 @@
var/spawn_text = "emerges from"
var/list/faction = list("mining")
COOLDOWN_DECLARE(last_rally)
/datum/component/spawner/Initialize(_mob_types, _spawn_time, _faction, _spawn_text, _max_mobs)
@@ -22,6 +23,7 @@
max_mobs=_max_mobs
RegisterSignal(parent, list(COMSIG_PARENT_QDELETING), PROC_REF(stop_spawning))
RegisterSignal(parent, COMSIG_SPAWNER_SET_TARGET, PROC_REF(rally_spawned_mobs))
START_PROCESSING(SSprocessing, src)
/datum/component/spawner/process()
@@ -49,3 +51,15 @@
L.nest = src
L.faction = src.faction
P.visible_message("<span class='danger'>[L] [spawn_text] [P].</span>")
/datum/component/spawner/proc/rally_spawned_mobs(parent, mob/living/target)
SIGNAL_HANDLER // COMSIG_SPAWNER_SET_TARGET
if(!(COOLDOWN_FINISHED(src, last_rally) && length(spawned_mobs)))
return
// start the cooldown first, because a rallied mob might fire on
// ourselves while this is happening, causing confusion
COOLDOWN_START(src, last_rally, 30 SECONDS)
for(var/mob/living/simple_animal/hostile/rallied as anything in spawned_mobs)
INVOKE_ASYNC(rallied, TYPE_PROC_REF(/mob/living/simple_animal/hostile, aggro_fast), target)
+21 -21
View File
@@ -141,25 +141,25 @@
var/atom/A = D
if(isliving(A))
var/mob/living/L = A
atomsnowflake += "<a href='?_src_=vars;rename=[L.UID()]'><b>[L]</b></a>"
atomsnowflake += "<a href='byond://?_src_=vars;rename=[L.UID()]'><b>[L]</b></a>"
if(L.dir)
atomsnowflake += "<br><font size='1'><a href='?_src_=vars;rotatedatum=[L.UID()];rotatedir=left'><<</a> <a href='?_src_=vars;datumedit=[L.UID()];varnameedit=dir'>[dir2text(L.dir)]</a> <a href='?_src_=vars;rotatedatum=[L.UID()];rotatedir=right'>>></a></font>"
atomsnowflake += "<br><font size='1'><a href='byond://?_src_=vars;rotatedatum=[L.UID()];rotatedir=left'><<</a> <a href='byond://?_src_=vars;datumedit=[L.UID()];varnameedit=dir'>[dir2text(L.dir)]</a> <a href='byond://?_src_=vars;rotatedatum=[L.UID()];rotatedir=right'>>></a></font>"
atomsnowflake += {"
<br><font size='1'><a href='?_src_=vars;datumedit=[L.UID()];varnameedit=ckey'>[L.ckey ? L.ckey : "No ckey"]</a> / <a href='?_src_=vars;datumedit=[L.UID()];varnameedit=real_name'>[L.real_name ? L.real_name : "No real name"]</a></font>
<br><font size='1'><a href='byond://?_src_=vars;datumedit=[L.UID()];varnameedit=ckey'>[L.ckey ? L.ckey : "No ckey"]</a> / <a href='byond://?_src_=vars;datumedit=[L.UID()];varnameedit=real_name'>[L.real_name ? L.real_name : "No real name"]</a></font>
<br><font size='1'>
BRUTE:<font size='1'><a href='?_src_=vars;mobToDamage=[L.UID()];adjustDamage=brute'>[L.getBruteLoss()]</a>
FIRE:<font size='1'><a href='?_src_=vars;mobToDamage=[L.UID()];adjustDamage=fire'>[L.getFireLoss()]</a>
TOXIN:<font size='1'><a href='?_src_=vars;mobToDamage=[L.UID()];adjustDamage=toxin'>[L.getToxLoss()]</a>
OXY:<font size='1'><a href='?_src_=vars;mobToDamage=[L.UID()];adjustDamage=oxygen'>[L.getOxyLoss()]</a>
CLONE:<font size='1'><a href='?_src_=vars;mobToDamage=[L.UID()];adjustDamage=clone'>[L.getCloneLoss()]</a>
BRAIN:<font size='1'><a href='?_src_=vars;mobToDamage=[L.UID()];adjustDamage=brain'>[L.getBrainLoss()]</a>
STAMINA:<font size='1'><a href='?_src_=vars;mobToDamage=[L.UID()];adjustDamage=stamina'>[L.getStaminaLoss()]</a>
BRUTE:<font size='1'><a href='byond://?_src_=vars;mobToDamage=[L.UID()];adjustDamage=brute'>[L.getBruteLoss()]</a>
FIRE:<font size='1'><a href='byond://?_src_=vars;mobToDamage=[L.UID()];adjustDamage=fire'>[L.getFireLoss()]</a>
TOXIN:<font size='1'><a href='byond://?_src_=vars;mobToDamage=[L.UID()];adjustDamage=toxin'>[L.getToxLoss()]</a>
OXY:<font size='1'><a href='byond://?_src_=vars;mobToDamage=[L.UID()];adjustDamage=oxygen'>[L.getOxyLoss()]</a>
CLONE:<font size='1'><a href='byond://?_src_=vars;mobToDamage=[L.UID()];adjustDamage=clone'>[L.getCloneLoss()]</a>
BRAIN:<font size='1'><a href='byond://?_src_=vars;mobToDamage=[L.UID()];adjustDamage=brain'>[L.getBrainLoss()]</a>
STAMINA:<font size='1'><a href='byond://?_src_=vars;mobToDamage=[L.UID()];adjustDamage=stamina'>[L.getStaminaLoss()]</a>
</font>
"}
else
atomsnowflake += "<a href='?_src_=vars;datumedit=[A.UID()];varnameedit=name'><b>[A]</b></a>"
atomsnowflake += "<a href='byond://?_src_=vars;datumedit=[A.UID()];varnameedit=name'><b>[A]</b></a>"
if(A.dir)
atomsnowflake += "<br><font size='1'><a href='?_src_=vars;rotatedatum=[A.UID()];rotatedir=left'><<</a> <a href='?_src_=vars;datumedit=[A.UID()];varnameedit=dir'>[dir2text(A.dir)]</a> <a href='?_src_=vars;rotatedatum=[D.UID()];rotatedir=right'>>></a></font>"
atomsnowflake += "<br><font size='1'><a href='byond://?_src_=vars;rotatedatum=[A.UID()];rotatedir=left'><<</a> <a href='byond://?_src_=vars;datumedit=[A.UID()];varnameedit=dir'>[dir2text(A.dir)]</a> <a href='byond://?_src_=vars;rotatedatum=[D.UID()];rotatedir=right'>>></a></font>"
else
atomsnowflake += "<b>[D]</b>"
@@ -409,7 +409,7 @@
</td>
<td width='50%'>
<div align='center'>
<a id='refresh_link' href='?_src_=vars;[islist ? "listrefresh=\ref[D]" : "datumrefresh=[D.UID()]"]'>Refresh</a>
<a id='refresh_link' href='byond://?_src_=vars;[islist ? "listrefresh=\ref[D]" : "datumrefresh=[D.UID()]"]'>Refresh</a>
<form>
<select name="file" size="1"
onchange="loadPage(this.form.elements\[0\])"
@@ -468,9 +468,9 @@
name = DA[name] // name is really the index until this line
else
value = DA[name]
header = "<li style='backgroundColor:white'>(<a href='?_src_=vars;listedit=\ref[DA];index=[index]'>E</a>) (<a href='?_src_=vars;listchange=\ref[DA];index=[index]'>C</a>) (<a href='?_src_=vars;listremove=\ref[DA];index=[index]'>-</a>) "
header = "<li style='backgroundColor:white'>(<a href='byond://?_src_=vars;listedit=\ref[DA];index=[index]'>E</a>) (<a href='byond://?_src_=vars;listchange=\ref[DA];index=[index]'>C</a>) (<a href='byond://?_src_=vars;listremove=\ref[DA];index=[index]'>-</a>) "
else
header = "<li style='backgroundColor:white'>(<a href='?_src_=vars;datumedit=[DA.UID()];varnameedit=[name]'>E</a>) (<a href='?_src_=vars;datumchange=[DA.UID()];varnamechange=[name]'>C</a>) (<a href='?_src_=vars;datummass=[DA.UID()];varnamemass=[name]'>M</a>) "
header = "<li style='backgroundColor:white'>(<a href='byond://?_src_=vars;datumedit=[DA.UID()];varnameedit=[name]'>E</a>) (<a href='byond://?_src_=vars;datumchange=[DA.UID()];varnamechange=[name]'>C</a>) (<a href='byond://?_src_=vars;datummass=[DA.UID()];varnamemass=[name]'>M</a>) "
else
header = "<li>"
@@ -491,9 +491,9 @@
else if(istype(value, /image))
var/image/I = value
#ifdef VARSICON
item = "<a href='?_src_=vars;Vars=[I.UID()]'>[name] \ref[value]</a> = /image (<span class='value'>[value]</span>) [bicon(value, use_class=0)]"
item = "<a href='byond://?_src_=vars;Vars=[I.UID()]'>[name] \ref[value]</a> = /image (<span class='value'>[value]</span>) [bicon(value, use_class=0)]"
#else
item = "<a href='?_src_=vars;Vars=[I.UID()]'>[name] \ref[value]</a> = /image (<span class='value'>[value]</span>)"
item = "<a href='byond://?_src_=vars;Vars=[I.UID()]'>[name] \ref[value]</a> = /image (<span class='value'>[value]</span>)"
#endif
else if(isfile(value))
@@ -501,11 +501,11 @@
else if(istype(value, /datum))
var/datum/D = value
item = "<a href='?_src_=vars;Vars=[D.UID()]'>[VV_HTML_ENCODE(name)] \ref[value]</a> = [D.type]"
item = "<a href='byond://?_src_=vars;Vars=[D.UID()]'>[VV_HTML_ENCODE(name)] \ref[value]</a> = [D.type]"
else if(isclient(value))
var/client/C = value
item = "<a href='?_src_=vars;Vars=[C.UID()]'>[VV_HTML_ENCODE(name)] \ref[value]</a> = [C] [C.type]"
item = "<a href='byond://?_src_=vars;Vars=[C.UID()]'>[VV_HTML_ENCODE(name)] \ref[value]</a> = [C] [C.type]"
//
else if(islist(value))
var/list/L = value
@@ -523,10 +523,10 @@
items += debug_variable(key, val, level + 1, sanitize = sanitize)
item = "<a href='?_src_=vars;VarsList=\ref[L]'>[VV_HTML_ENCODE(name)] = /list ([L.len])</a><ul>[items.Join()]</ul>"
item = "<a href='byond://?_src_=vars;VarsList=\ref[L]'>[VV_HTML_ENCODE(name)] = /list ([L.len])</a><ul>[items.Join()]</ul>"
else
item = "<a href='?_src_=vars;VarsList=\ref[L]'>[VV_HTML_ENCODE(name)] = /list ([L.len])</a>"
item = "<a href='byond://?_src_=vars;VarsList=\ref[L]'>[VV_HTML_ENCODE(name)] = /list ([L.len])</a>"
else
item = "[VV_HTML_ENCODE(name)] = <span class='value'>[VV_HTML_ENCODE(value)]</span>"
+1 -1
View File
@@ -86,7 +86,7 @@
if(disabled)
class = "linkOff"
topic = ""
return "<a class=\"[class]\" id='[id]' href='?src=[UID()];[topic]'>[label]</a>"
return "<a class=\"[class]\" id='[id]' href='byond://?src=[UID()];[topic]'>[label]</a>"
/datum/async_input/Topic(href, href_list)
if(href_list["submit"] || href_list["close"])
@@ -26,6 +26,7 @@
/datum/keybinding/lock
name = "Movement Lock (Prevents Moving When Held)"
category = KB_CATEGORY_MOVEMENT
keys = list("Ctrl")
/datum/keybinding/lock/down(client/C)
. = ..()
+11 -11
View File
@@ -133,8 +133,8 @@ if(!result || result.ckey != __ckey){\
var/list/dat = list()
dat += "<head><meta http-equiv='X-UA-Compatible' content='IE=edge'><style>.adminticket{border:2px solid} td{border:1px solid grey;} th{border:1px solid grey;} span{float:left;width:150px;}</style></head>"
dat += "<div style='min-height:100px'>"
dat += "<span>Time Search Range:</span> <a href='?src=[UID()];start_time=1'>[gameTimestamp(wtime = time_from)]</a>"
dat += " To: <a href='?src=[UID()];end_time=1'>[gameTimestamp(wtime = time_to)]</a>"
dat += "<span>Time Search Range:</span> <a href='byond://?src=[UID()];start_time=1'>[gameTimestamp(wtime = time_from)]</a>"
dat += " To: <a href='byond://?src=[UID()];end_time=1'>[gameTimestamp(wtime = time_to)]</a>"
dat += "<BR>"
dat += "<span>Mobs being used:</span>"
@@ -143,16 +143,16 @@ if(!result || result.ckey != __ckey){\
if(QDELETED(M))
selected_mobs -= i
continue
dat += "<a href='?src=[UID()];remove_mob=\ref[M]'>[get_display_name(M)]</a>"
dat += "<a href='?src=[UID()];add_mob=1'>Add Mob</a>"
dat += "<a href='?src=[UID()];clear_mobs=1'>Clear All Mobs</a>"
dat += "<a href='byond://?src=[UID()];remove_mob=\ref[M]'>[get_display_name(M)]</a>"
dat += "<a href='byond://?src=[UID()];add_mob=1'>Add Mob</a>"
dat += "<a href='byond://?src=[UID()];clear_mobs=1'>Clear All Mobs</a>"
dat += "<BR>"
dat += "<span>Ckeys being used:</span>"
for(var/ckey in selected_ckeys)
dat += "<a href='?src=[UID()];remove_ckey=[ckey]'>[get_ckey_name(ckey)]</a>"
dat += "<a href='?src=[UID()];add_ckey=1'>Add ckey</a>"
dat += "<a href='?src=[UID()];clear_ckeys=1'>Clear All ckeys</a>"
dat += "<a href='byond://?src=[UID()];remove_ckey=[ckey]'>[get_ckey_name(ckey)]</a>"
dat += "<a href='byond://?src=[UID()];add_ckey=1'>Add ckey</a>"
dat += "<a href='byond://?src=[UID()];clear_ckeys=1'>Clear All ckeys</a>"
dat += "<BR>"
dat += "<span>Log Types:</span>"
@@ -166,11 +166,11 @@ if(!result || result.ckey != __ckey){\
else
text = log_type
dat += "<a href='?src=[UID()];toggle_log_type=[log_type]' style='[style]'>[text]</a>"
dat += "<a href='byond://?src=[UID()];toggle_log_type=[log_type]' style='[style]'>[text]</a>"
dat += "<BR>"
dat += "<a href='?src=[UID()];clear_all=1'>Clear All Settings</a>"
dat += "<a href='?src=[UID()];search=1'>Search</a>"
dat += "<a href='byond://?src=[UID()];clear_all=1'>Clear All Settings</a>"
dat += "<a href='byond://?src=[UID()];search=1'>Search</a>"
dat += "</div>"
// Search results
+62 -62
View File
@@ -178,7 +178,7 @@
if(!recipient)
recipient = current
var/list/output = list()
output.Add("<meta charset='UTF-8'><b>[current.real_name]'s Memories:</b><hr>")
output.Add("<!DOCTYPE html><meta charset='UTF-8'><b>[current.real_name]'s Memories:</b><hr>")
output.Add(memory)
for(var/datum/antagonist/A in antag_datums)
@@ -216,9 +216,9 @@
return text.Join("<br>")
/datum/mind/proc/get_admin_objective_edit(datum/objective/objective)
return " <a href='?src=[UID()];obj_edit=\ref[objective]'>Edit</a> \
<a href='?src=[UID()];obj_delete=\ref[objective]'>Delete</a> \
<a href='?src=[UID()];obj_completed=\ref[objective]'>\
return " <a href='byond://?src=[UID()];obj_edit=\ref[objective]'>Edit</a> \
<a href='byond://?src=[UID()];obj_delete=\ref[objective]'>Delete</a> \
<a href='byond://?src=[UID()];obj_completed=\ref[objective]'>\
<font color=[objective.completed ? "green" : "red"]>Toggle Completion</font></a>"
/**
@@ -296,9 +296,9 @@
/datum/mind/proc/memory_edit_implant(mob/living/carbon/human/H)
if(ismindshielded(H))
. = "Mindshield Bio-chip:<a href='?src=[UID()];implant=remove'>Remove</a>|<b><font color='green'>Implanted</font></b></br>"
. = "Mindshield Bio-chip:<a href='byond://?src=[UID()];implant=remove'>Remove</a>|<b><font color='green'>Implanted</font></b></br>"
else
. = "Mindshield Bio-chip:<b>No Bio-chip</b>|<a href='?src=[UID()];implant=add'>Bio-chip [H.p_them()]!</a></br>"
. = "Mindshield Bio-chip:<b>No Bio-chip</b>|<a href='byond://?src=[UID()];implant=add'>Bio-chip [H.p_them()]!</a></br>"
/datum/mind/proc/memory_edit_revolution(mob/living/carbon/human/H)
@@ -307,46 +307,46 @@
if(ismindshielded(H))
. += "<b>NO</b>|headrev|rev"
else if(istype(rev, /datum/antagonist/rev/head))
. += "<a href='?src=[UID()];revolution=clear'>no</a>|<b><font color='red'>HEADREV</font></b>|<a href='?src=[UID()];revolution=rev'>rev</a>"
. += "<br>Flash: <a href='?src=[UID()];revolution=flash'>give</a>"
. += "<a href='byond://?src=[UID()];revolution=clear'>no</a>|<b><font color='red'>HEADREV</font></b>|<a href='byond://?src=[UID()];revolution=rev'>rev</a>"
. += "<br>Flash: <a href='byond://?src=[UID()];revolution=flash'>give</a>"
var/list/L = current.get_contents()
var/obj/item/flash/flash = locate() in L
if(flash)
if(!flash.broken)
. += "|<a href='?src=[UID()];revolution=takeflash'>take</a>."
. += "|<a href='byond://?src=[UID()];revolution=takeflash'>take</a>."
else
. += "|<a href='?src=[UID()];revolution=takeflash'>take</a>|<a href='?src=[UID()];revolution=repairflash'>repair</a>."
. += "|<a href='byond://?src=[UID()];revolution=takeflash'>take</a>|<a href='byond://?src=[UID()];revolution=repairflash'>repair</a>."
else
. += "."
. += " <a href='?src=[UID()];revolution=reequip'>Reequip</a> (gives flash/cham sec hud)."
. += " <a href='byond://?src=[UID()];revolution=reequip'>Reequip</a> (gives flash/cham sec hud)."
if(!rev.has_antag_objectives()) // if theres anything missing here, we want it to runtime. There should never be a rev without a rev team
. += "<br>Objectives are empty! Unless theres no command, this is likely a bug, please report it! <a href='?src=[UID()];revolution=autoobjectives'>Set to kill all heads</a>."
. += "<br>Objectives are empty! Unless theres no command, this is likely a bug, please report it! <a href='byond://?src=[UID()];revolution=autoobjectives'>Set to kill all heads</a>."
else if(rev)
. += "<a href='?src=[UID()];revolution=clear'>no</a>|<a href='?src=[UID()];revolution=headrev'>headrev</a>|<b><font color='red'>REV</font></b>"
. += "<a href='byond://?src=[UID()];revolution=clear'>no</a>|<a href='byond://?src=[UID()];revolution=headrev'>headrev</a>|<b><font color='red'>REV</font></b>"
else
. += "<b>NO</b>|<a href='?src=[UID()];revolution=headrev'>headrev</a>|<a href='?src=[UID()];revolution=rev'>rev</a>"
. += "<b>NO</b>|<a href='byond://?src=[UID()];revolution=headrev'>headrev</a>|<a href='byond://?src=[UID()];revolution=rev'>rev</a>"
. += _memory_edit_role_enabled(ROLE_REV)
/datum/mind/proc/memory_edit_cult(mob/living/carbon/human/H)
. = _memory_edit_header("cult")
if(has_antag_datum(/datum/antagonist/cultist))
. += "<a href='?src=[UID()];cult=clear'>no</a>|<b><font color='red'>CULTIST</font></b>"
. += "<br>Give <a href='?src=[UID()];cult=dagger'>dagger</a>|<a href='?src=[UID()];cult=runedmetal'>runedmetal</a>."
. += "<a href='byond://?src=[UID()];cult=clear'>no</a>|<b><font color='red'>CULTIST</font></b>"
. += "<br>Give <a href='byond://?src=[UID()];cult=dagger'>dagger</a>|<a href='byond://?src=[UID()];cult=runedmetal'>runedmetal</a>."
else
. += "<b>NO</b>|<a href='?src=[UID()];cult=cultist'>cultist</a>"
. += "<b>NO</b>|<a href='byond://?src=[UID()];cult=cultist'>cultist</a>"
. += _memory_edit_role_enabled(ROLE_CULTIST)
/datum/mind/proc/memory_edit_wizard(mob/living/carbon/human/H)
. = _memory_edit_header("wizard")
if(has_antag_datum(/datum/antagonist/wizard))
. += "<b><font color='red'>WIZARD</font></b>|<a href='?src=[UID()];wizard=clear'>no</a>"
. += "<br><a href='?src=[UID()];wizard=lair'>To lair</a>, <a href='?src=[UID()];common=undress'>undress</a>, <a href='?src=[UID()];wizard=dressup'>dress up</a>, <a href='?src=[UID()];wizard=name'>let choose name</a>."
. += "<b><font color='red'>WIZARD</font></b>|<a href='byond://?src=[UID()];wizard=clear'>no</a>"
. += "<br><a href='byond://?src=[UID()];wizard=lair'>To lair</a>, <a href='byond://?src=[UID()];common=undress'>undress</a>, <a href='byond://?src=[UID()];wizard=dressup'>dress up</a>, <a href='byond://?src=[UID()];wizard=name'>let choose name</a>."
else
. += "<a href='?src=[UID()];wizard=wizard'>wizard</a>|<b>NO</b>"
. += "<a href='byond://?src=[UID()];wizard=wizard'>wizard</a>|<b>NO</b>"
. += _memory_edit_role_enabled(ROLE_WIZARD)
@@ -354,15 +354,15 @@
. = _memory_edit_header("changeling", list("traitorchan"))
var/datum/antagonist/changeling/cling = has_antag_datum(/datum/antagonist/changeling)
if(cling)
. += "<b><font color='red'>CHANGELING</font></b>|<a href='?src=[UID()];changeling=clear'>no</a>"
. += "<b><font color='red'>CHANGELING</font></b>|<a href='byond://?src=[UID()];changeling=clear'>no</a>"
if(!cling.has_antag_objectives())
. += "<br>Objectives are empty! <a href='?src=[UID()];changeling=autoobjectives'>Randomize!</a>"
. += "<br>Objectives are empty! <a href='byond://?src=[UID()];changeling=autoobjectives'>Randomize!</a>"
if(length(cling.absorbed_dna))
var/datum/dna/DNA = cling.absorbed_dna[1]
if(current.real_name != DNA.real_name)
. += "<br><a href='?src=[UID()];changeling=initialdna'>Transform to initial appearance.</a>"
. += "<br><a href='byond://?src=[UID()];changeling=initialdna'>Transform to initial appearance.</a>"
else
. += "<a href='?src=[UID()];changeling=changeling'>changeling</a>|<b>NO</b>"
. += "<a href='byond://?src=[UID()];changeling=changeling'>changeling</a>|<b>NO</b>"
. += _memory_edit_role_enabled(ROLE_CHANGELING)
@@ -370,69 +370,69 @@
. = _memory_edit_header("vampire", list("traitorvamp"))
var/datum/antagonist/vampire/vamp = has_antag_datum(/datum/antagonist/vampire)
if(vamp)
. += "<b><font color='red'>VAMPIRE</font></b>|<a href='?src=[UID()];vampire=clear'>no</a>"
. += "<br>Usable blood: <a href='?src=[UID()];vampire=edit_usable_blood'>[vamp.bloodusable]</a>"
. += " | Total blood: <a href='?src=[UID()];vampire=edit_total_blood'>[vamp.bloodtotal]</a>"
. += "<b><font color='red'>VAMPIRE</font></b>|<a href='byond://?src=[UID()];vampire=clear'>no</a>"
. += "<br>Usable blood: <a href='byond://?src=[UID()];vampire=edit_usable_blood'>[vamp.bloodusable]</a>"
. += " | Total blood: <a href='byond://?src=[UID()];vampire=edit_total_blood'>[vamp.bloodtotal]</a>"
var/has_subclass = !QDELETED(vamp.subclass)
. += "<br>Subclass: <a href='?src=[UID()];vampire=change_subclass'>[has_subclass ? capitalize(vamp.subclass.name) : "None"]</a>"
. += "<br>Subclass: <a href='byond://?src=[UID()];vampire=change_subclass'>[has_subclass ? capitalize(vamp.subclass.name) : "None"]</a>"
if(has_subclass)
. += " | Force full power: <a href='?src=[UID()];vampire=full_power_override'>[vamp.subclass.full_power_override ? "Yes" : "No"]</a>"
. += " | Force full power: <a href='byond://?src=[UID()];vampire=full_power_override'>[vamp.subclass.full_power_override ? "Yes" : "No"]</a>"
if(!vamp.has_antag_objectives())
. += "<br>Objectives are empty! <a href='?src=[UID()];vampire=autoobjectives'>Randomize!</a>"
. += "<br>Objectives are empty! <a href='byond://?src=[UID()];vampire=autoobjectives'>Randomize!</a>"
else
. += "<a href='?src=[UID()];vampire=vampire'>vampire</a>|<b>NO</b>"
. += "<a href='byond://?src=[UID()];vampire=vampire'>vampire</a>|<b>NO</b>"
. += _memory_edit_role_enabled(ROLE_VAMPIRE)
/** Enthralled ***/
. += "<br><b><i>enthralled</i></b>: "
if(has_antag_datum(/datum/antagonist/mindslave/thrall))
. += "<b><font color='red'>THRALL</font></b>|<a href='?src=[UID()];vampthrall=clear'>no</a>"
. += "<b><font color='red'>THRALL</font></b>|<a href='byond://?src=[UID()];vampthrall=clear'>no</a>"
else
. += "thrall|<b>NO</b>"
/datum/mind/proc/memory_edit_nuclear(mob/living/carbon/human/H)
. = _memory_edit_header("nuclear")
if(src in SSticker.mode.syndicates)
. += "<b><font color='red'>OPERATIVE</b></font>|<a href='?src=[UID()];nuclear=clear'>no</a>"
. += "<br><a href='?src=[UID()];nuclear=lair'>To shuttle</a>, <a href='?src=[UID()];common=undress'>undress</a>, <a href='?src=[UID()];nuclear=dressup'>dress up</a>."
. += "<b><font color='red'>OPERATIVE</b></font>|<a href='byond://?src=[UID()];nuclear=clear'>no</a>"
. += "<br><a href='byond://?src=[UID()];nuclear=lair'>To shuttle</a>, <a href='byond://?src=[UID()];common=undress'>undress</a>, <a href='byond://?src=[UID()];nuclear=dressup'>dress up</a>."
var/code
for(var/obj/machinery/nuclearbomb/bombue in GLOB.machines)
if(length(bombue.r_code) <= 5 && bombue.r_code != "LOLNO" && bombue.r_code != "ADMIN")
code = bombue.r_code
break
if(code)
. += " Code is [code]. <a href='?src=[UID()];nuclear=tellcode'>tell the code.</a>"
. += " Code is [code]. <a href='byond://?src=[UID()];nuclear=tellcode'>tell the code.</a>"
else
. += "<a href='?src=[UID()];nuclear=nuclear'>operative</a>|<b>NO</b>"
. += "<a href='byond://?src=[UID()];nuclear=nuclear'>operative</a>|<b>NO</b>"
. += _memory_edit_role_enabled(ROLE_OPERATIVE)
/datum/mind/proc/memory_edit_abductor(mob/living/carbon/human/H)
. = _memory_edit_header("abductor")
if(src in SSticker.mode.abductors)
. += "<b><font color='red'>ABDUCTOR</font></b>|<a href='?src=[UID()];abductor=clear'>no</a>"
. += "|<a href='?src=[UID()];common=undress'>undress</a>|<a href='?src=[UID()];abductor=equip'>equip</a>"
. += "<b><font color='red'>ABDUCTOR</font></b>|<a href='byond://?src=[UID()];abductor=clear'>no</a>"
. += "|<a href='byond://?src=[UID()];common=undress'>undress</a>|<a href='byond://?src=[UID()];abductor=equip'>equip</a>"
else
. += "<a href='?src=[UID()];abductor=abductor'>abductor</a>|<b>NO</b>"
. += "<a href='byond://?src=[UID()];abductor=abductor'>abductor</a>|<b>NO</b>"
. += _memory_edit_role_enabled(ROLE_ABDUCTOR)
/datum/mind/proc/memory_edit_eventmisc(mob/living/H)
. = _memory_edit_header("event", list())
if(src in SSticker.mode.eventmiscs)
. += "<b>YES</b>|<a href='?src=[UID()];eventmisc=clear'>no</a>"
. += "<b>YES</b>|<a href='byond://?src=[UID()];eventmisc=clear'>no</a>"
else
. += "<a href='?src=[UID()];eventmisc=eventmisc'>Event Role</a>|<b>NO</b>"
. += "<a href='byond://?src=[UID()];eventmisc=eventmisc'>Event Role</a>|<b>NO</b>"
/datum/mind/proc/memory_edit_traitor()
. = _memory_edit_header("traitor", list("traitorchan", "traitorvamp"))
if(has_antag_datum(/datum/antagonist/traitor))
. += "<b><font color='red'>TRAITOR</font></b>|<a href='?src=[UID()];traitor=clear'>no</a>"
. += "<b><font color='red'>TRAITOR</font></b>|<a href='byond://?src=[UID()];traitor=clear'>no</a>"
var/datum/antagonist/traitor/T = has_antag_datum(/datum/antagonist/traitor)
if(!T.has_antag_objectives())
. += "<br>Objectives are empty! <a href='?src=[UID()];traitor=autoobjectives'>Randomize!</a>"
. += "<br>Objectives are empty! <a href='byond://?src=[UID()];traitor=autoobjectives'>Randomize!</a>"
else
. += "<a href='?src=[UID()];traitor=traitor'>traitor</a>|<b>NO</b>"
. += "<a href='byond://?src=[UID()];traitor=traitor'>traitor</a>|<b>NO</b>"
. += _memory_edit_role_enabled(ROLE_TRAITOR)
// Contractor
@@ -447,9 +447,9 @@
for(var/co in H.contracts)
var/datum/syndicate_contract/CO = co
. += "<br><B>Contract #[count++]</B>: "
. += "<a href='?src=[UID()];cuid=[CO.UID()];contractor=target'><b>[CO.contract.target?.name || "Invalid target!"]</b></a>|"
. += "<a href='?src=[UID()];cuid=[CO.UID()];contractor=locations'>locations</a>|"
. += "<a href='?src=[UID()];cuid=[CO.UID()];contractor=other'>more</a>|"
. += "<a href='byond://?src=[UID()];cuid=[CO.UID()];contractor=target'><b>[CO.contract.target?.name || "Invalid target!"]</b></a>|"
. += "<a href='byond://?src=[UID()];cuid=[CO.UID()];contractor=locations'>locations</a>|"
. += "<a href='byond://?src=[UID()];cuid=[CO.UID()];contractor=other'>more</a>|"
switch(CO.status)
if(CONTRACT_STATUS_INVALID)
. += "<b>INVALID</b>"
@@ -457,16 +457,16 @@
. += "inactive"
if(CONTRACT_STATUS_ACTIVE)
. += "<b><font color='orange'>ACTIVE</font></b>|"
. += "<a href='?src=[UID()];cuid=[CO.UID()];contractor=interrupt'>interrupt</a>|"
. += "<a href='?src=[UID()];cuid=[CO.UID()];contractor=fail'>fail</a>"
. += "<a href='byond://?src=[UID()];cuid=[CO.UID()];contractor=interrupt'>interrupt</a>|"
. += "<a href='byond://?src=[UID()];cuid=[CO.UID()];contractor=fail'>fail</a>"
if(CONTRACT_STATUS_COMPLETED)
. += "<font color='green'>COMPLETED</font>"
if(CONTRACT_STATUS_FAILED)
. += "<font color='red'>FAILED</font>"
. += "<br>"
. += "<a href='?src=[UID()];contractor=add'>Add Contract</a><br>"
. += "Claimable TC: <a href='?src=[UID()];contractor=tc'>[H.reward_tc_available]</a><br>"
. += "Available Rep: <a href='?src=[UID()];contractor=rep'>[H.rep]</a><br>"
. += "<a href='byond://?src=[UID()];contractor=add'>Add Contract</a><br>"
. += "Claimable TC: <a href='byond://?src=[UID()];contractor=tc'>[H.reward_tc_available]</a><br>"
. += "Available Rep: <a href='byond://?src=[UID()];contractor=rep'>[H.rep]</a><br>"
else
. += "<br>"
. += "<i>Has not logged in to contractor uplink</i>"
@@ -475,7 +475,7 @@
// Mindslave
. += "<br><b><i>mindslaved</i></b>: "
if(has_antag_datum(/datum/antagonist/mindslave, FALSE))
. += "<b><font color='red'>MINDSLAVE</font></b>|<a href='?src=[UID()];mindslave=clear'>no</a>"
. += "<b><font color='red'>MINDSLAVE</font></b>|<a href='byond://?src=[UID()];mindslave=clear'>no</a>"
else
. += "mindslave|<b>NO</b>"
@@ -483,28 +483,28 @@
. = "<i><b>Silicon</b></i>: "
var/mob/living/silicon/robot/robot = current
if(istype(robot) && robot.emagged)
. += "<br>Cyborg: <b><font color='red'>Is emagged!</font></b> <a href='?src=[UID()];silicon=unemag'>Unemag!</a><br>0th law: [robot.laws.zeroth_law]"
. += "<br>Cyborg: <b><font color='red'>Is emagged!</font></b> <a href='byond://?src=[UID()];silicon=unemag'>Unemag!</a><br>0th law: [robot.laws.zeroth_law]"
var/mob/living/silicon/ai/ai = current
if(istype(ai) && ai.connected_robots.len)
var/n_e_robots = 0
for(var/mob/living/silicon/robot/R in ai.connected_robots)
if(R.emagged)
n_e_robots++
. += "<br>[n_e_robots] of [ai.connected_robots.len] slaved cyborgs are emagged. <a href='?src=[UID()];silicon=unemagcyborgs'>Unemag</a>"
. += "<br>[n_e_robots] of [ai.connected_robots.len] slaved cyborgs are emagged. <a href='byond://?src=[UID()];silicon=unemagcyborgs'>Unemag</a>"
/datum/mind/proc/memory_edit_uplink()
. = ""
if(ishuman(current) && ((has_antag_datum(/datum/antagonist/traitor)) || \
(src in SSticker.mode.syndicates)))
. = "Uplink: <a href='?src=[UID()];common=uplink'>give</a>"
. = "Uplink: <a href='byond://?src=[UID()];common=uplink'>give</a>"
var/obj/item/uplink/hidden/suplink = find_syndicate_uplink()
var/crystals
if(suplink)
crystals = suplink.uses
if(suplink)
. += "|<a href='?src=[UID()];common=takeuplink'>take</a>"
. += "|<a href='byond://?src=[UID()];common=takeuplink'>take</a>"
if(usr.client.holder.rights & (R_SERVER|R_EVENT))
. += ", <a href='?src=[UID()];common=crystals'>[crystals]</a> crystals"
. += ", <a href='byond://?src=[UID()];common=crystals'>[crystals]</a> crystals"
else
. += ", [crystals] crystals"
. += "." //hiel grammar
@@ -517,7 +517,7 @@
var/list/out = list("<meta charset='UTF-8'><b>[name]</b>[(current && (current.real_name != name))?" (as [current.real_name])" : ""]")
out.Add("Mind currently owned by key: [key] [active ? "(synced)" : "(not synced)"]")
out.Add("Assigned role: [assigned_role]. <a href='?src=[UID()];role_edit=1'>Edit</a>")
out.Add("Assigned role: [assigned_role]. <a href='byond://?src=[UID()];role_edit=1'>Edit</a>")
out.Add("Factions and special roles:")
var/list/sections = list(
@@ -587,11 +587,11 @@
out.Add("<b>Memory:</b>")
out.Add(memory)
out.Add("<a href='?src=[UID()];memory_edit=1'>Edit memory</a><br>")
out.Add("<a href='byond://?src=[UID()];memory_edit=1'>Edit memory</a><br>")
out.Add("Objectives:")
out.Add(gen_objective_text(admin = TRUE))
out.Add("<a href='?src=[UID()];obj_add=1'>Add objective</a><br>")
out.Add("<a href='?src=[UID()];obj_announce=1'>Announce objectives</a><br>")
out.Add("<a href='byond://?src=[UID()];obj_add=1'>Add objective</a><br>")
out.Add("<a href='byond://?src=[UID()];obj_announce=1'>Announce objectives</a><br>")
usr << browse(out.Join("<br>"), "window=edit_memory[src];size=500x500")
/datum/mind/Topic(href, href_list)
+2 -2
View File
@@ -30,7 +30,7 @@
if(WIRE_BOMB_TIMING)
if(N.timing)
message_admins("[key_name_admin(usr)] pulsed a nuclear bomb's detonation wire, causing it to explode (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[holder.x];Y=[holder.y];Z=[holder.z]'>JMP</a>)")
message_admins("[key_name_admin(usr)] pulsed a nuclear bomb's detonation wire, causing it to explode (<A href='byond://?_src_=holder;adminplayerobservecoodjump=1;X=[holder.x];Y=[holder.y];Z=[holder.z]'>JMP</a>)")
N.explode()
if(WIRE_BOMB_SAFETY)
@@ -42,7 +42,7 @@
switch(wire)
if(WIRE_BOMB_SAFETY)
if(N.timing)
message_admins("[key_name_admin(usr)] cut a nuclear bomb's timing wire, causing it to explode (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[holder.x];Y=[holder.y];Z=[holder.z]'>JMP</a>)")
message_admins("[key_name_admin(usr)] cut a nuclear bomb's timing wire, causing it to explode (<A href='byond://?_src_=holder;adminplayerobservecoodjump=1;X=[holder.x];Y=[holder.y];Z=[holder.z]'>JMP</a>)")
N.explode()
if(WIRE_BOMB_TIMING)
+2 -2
View File
@@ -42,11 +42,11 @@
if(key)
if(C && C.holder && C.holder.fakekey && !include_name)
if(include_link)
. += "<a href='?priv_msg=[C.getStealthKey()];type=[type];ticket_id=[ticket_id]'>"
. += "<a href='byond://?priv_msg=[C.getStealthKey()];type=[type];ticket_id=[ticket_id]'>"
. += "Administrator"
else
if(include_link && C)
. += "<a href='?priv_msg=[C.ckey];type=[type];ticket_id=[ticket_id]'>"
. += "<a href='byond://?priv_msg=[C.ckey];type=[type];ticket_id=[ticket_id]'>"
. += key
// See if the player is on the watchlist. Requires admin permissions.
if(check_rights(R_ADMIN, FALSE) && C && C.watchlisted)
+1 -1
View File
@@ -970,7 +970,7 @@
if(target.dna?.GetSEState(GLOB.remotetalkblock))
message = "You feel [user.real_name] request a response from you... (Click here to project mind.)"
user.show_message("<i><span class='abductor'>You offer your mind to [(target in user.get_visible_mobs()) ? target.name : "the unknown entity"].</span></i>")
target.show_message("<i><span class='abductor'><a href='?src=[UID()];from=[target.UID()];to=[user.UID()]'>[message]</a></span></i>")
target.show_message("<i><span class='abductor'><a href='byond://?src=[UID()];from=[target.UID()];to=[user.UID()]'>[message]</a></span></i>")
expanded_minds += target
addtimer(CALLBACK(src, PROC_REF(removeAvailability), target), 10 SECONDS)
@@ -65,22 +65,22 @@
dat += "Collected Samples : [points] <br>"
dat += "Gear Credits: [credits] <br>"
dat += "<b>Transfer data in exchange for supplies:</b><br>"
dat += "<a href='?src=[UID()];dispense=baton'>Advanced Baton (2)</a><br>"
dat += "<a href='?src=[UID()];dispense=helmet'>Agent Helmet</a><br>"
dat += "<a href='?src=[UID()];dispense=vest'>Agent Vest</a><br>"
dat += "<a href='?src=[UID()];dispense=silencer'>Radio Silencer</a><br>"
dat += "<a href='?src=[UID()];dispense=tool'>Science Tool</a><br>"
dat += "<a href='?src=[UID()];dispense=mind_device'>Mental Interface Device (2)</a><br>"
dat += "<a href='?src=[UID()];dispense=organ_extractor'>Organ Extractor (2)</a><br>"
dat += "<a href='byond://?src=[UID()];dispense=baton'>Advanced Baton (2)</a><br>"
dat += "<a href='byond://?src=[UID()];dispense=helmet'>Agent Helmet</a><br>"
dat += "<a href='byond://?src=[UID()];dispense=vest'>Agent Vest</a><br>"
dat += "<a href='byond://?src=[UID()];dispense=silencer'>Radio Silencer</a><br>"
dat += "<a href='byond://?src=[UID()];dispense=tool'>Science Tool</a><br>"
dat += "<a href='byond://?src=[UID()];dispense=mind_device'>Mental Interface Device (2)</a><br>"
dat += "<a href='byond://?src=[UID()];dispense=organ_extractor'>Organ Extractor (2)</a><br>"
else
dat += "<span class='bad'>NO EXPERIMENT MACHINE DETECTED</span> <br>"
if(pad)
dat += "<span class='bad'>Emergency Teleporter System.</span>"
dat += "<span class='bad'>Consider using primary observation console first.</span>"
dat += "<a href='?src=[UID()];teleporter_send=1'>Activate Teleporter</A><br>"
dat += "<a href='byond://?src=[UID()];teleporter_send=1'>Activate Teleporter</A><br>"
if(gizmo && gizmo.marked)
dat += "<a href='?src=[UID()];teleporter_retrieve=1'>Retrieve Mark</A><br>"
dat += "<a href='byond://?src=[UID()];teleporter_retrieve=1'>Retrieve Mark</A><br>"
else
dat += "<span class='linkOff'>Retrieve Mark</span><br>"
else
@@ -90,15 +90,15 @@
dat += "<h4> Agent Vest Mode </h4><br>"
var/mode = vest.mode
if(mode == ABDUCTOR_VEST_STEALTH)
dat += "<a href='?src=[UID()];flip_vest=1'>Combat</A>"
dat += "<a href='byond://?src=[UID()];flip_vest=1'>Combat</A>"
dat += "<span class='linkOff'>Stealth</span>"
else
dat += "<span class='linkOff'>Combat</span>"
dat += "<a href='?src=[UID()];flip_vest=1'>Stealth</A>"
dat += "<a href='byond://?src=[UID()];flip_vest=1'>Stealth</A>"
dat+="<br>"
dat += "<a href='?src=[UID()];select_disguise=1'>Select Agent Vest Disguise</a><br>"
dat += "<a href='?src=[UID()];toggle_vest=1'>[vest.flags & NODROP ? "Unlock" : "Lock"] Vest</a><br>"
dat += "<a href='byond://?src=[UID()];select_disguise=1'>Select Agent Vest Disguise</a><br>"
dat += "<a href='byond://?src=[UID()];toggle_vest=1'>[vest.flags & NODROP ? "Unlock" : "Lock"] Vest</a><br>"
else
dat += "<span class='bad'>NO AGENT VEST DETECTED</span>"
var/datum/browser/popup = new(user, "computer", "Abductor Console", 400, 500)
+3 -3
View File
@@ -674,14 +674,14 @@ GLOBAL_VAR(bomb_set)
var/turf/diskturf = get_turf(src)
if(force)
message_admins("[src] has been !!force deleted!! in ([diskturf ? "[diskturf.x], [diskturf.y] ,[diskturf.z] - <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[diskturf.x];Y=[diskturf.y];Z=[diskturf.z]'>JMP</a>":"nonexistent location"]).")
message_admins("[src] has been !!force deleted!! in ([diskturf ? "[diskturf.x], [diskturf.y] ,[diskturf.z] - <A href='byond://?_src_=holder;adminplayerobservecoodjump=1;X=[diskturf.x];Y=[diskturf.y];Z=[diskturf.z]'>JMP</a>":"nonexistent location"]).")
log_game("[src] has been !!force deleted!! in ([diskturf ? "[diskturf.x], [diskturf.y] ,[diskturf.z]":"nonexistent location"]).")
GLOB.poi_list.Remove(src)
STOP_PROCESSING(SSobj, src)
return ..()
if(!restricted_to_station) // Non-restricted NADs should be allowed to be deleted, otherwise it becomes a restricted NAD when teleported
message_admins("[src] (unrestricted) has been deleted in ([diskturf ? "[diskturf.x], [diskturf.y] ,[diskturf.z] - <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[diskturf.x];Y=[diskturf.y];Z=[diskturf.z]'>JMP</a>":"nonexistent location"]). It will not respawn.")
message_admins("[src] (unrestricted) has been deleted in ([diskturf ? "[diskturf.x], [diskturf.y] ,[diskturf.z] - <A href='byond://?_src_=holder;adminplayerobservecoodjump=1;X=[diskturf.x];Y=[diskturf.y];Z=[diskturf.z]'>JMP</a>":"nonexistent location"]). It will not respawn.")
log_game("[src] (unrestricted) has been deleted in ([diskturf ? "[diskturf.x], [diskturf.y] ,[diskturf.z]":"nonexistent location"]). It will not respawn.")
GLOB.poi_list.Remove(src)
STOP_PROCESSING(SSobj, src)
@@ -692,7 +692,7 @@ GLOBAL_VAR(bomb_set)
GLOB.poi_list.Remove(src)
var/obj/item/disk/nuclear/NEWDISK = new(new_spawn)
transfer_fingerprints_to(NEWDISK)
message_admins("[src] has been destroyed at ([diskturf.x], [diskturf.y], [diskturf.z] - <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[diskturf.x];Y=[diskturf.y];Z=[diskturf.z]'>JMP</a>). Moving it to ([NEWDISK.x], [NEWDISK.y], [NEWDISK.z] - <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[NEWDISK.x];Y=[NEWDISK.y];Z=[NEWDISK.z]'>JMP</a>).")
message_admins("[src] has been destroyed at ([diskturf.x], [diskturf.y], [diskturf.z] - <A href='byond://?_src_=holder;adminplayerobservecoodjump=1;X=[diskturf.x];Y=[diskturf.y];Z=[diskturf.z]'>JMP</a>). Moving it to ([NEWDISK.x], [NEWDISK.y], [NEWDISK.z] - <A href='byond://?_src_=holder;adminplayerobservecoodjump=1;X=[NEWDISK.x];Y=[NEWDISK.y];Z=[NEWDISK.z]'>JMP</a>).")
log_game("[src] has been destroyed in ([diskturf.x], [diskturf.y], [diskturf.z]). Moving it to ([NEWDISK.x], [NEWDISK.y], [NEWDISK.z]).")
..()
return QDEL_HINT_HARDDEL_NOW // We want this to be deleted ASAP, but we want refs properly cleared too
+2 -2
View File
@@ -243,7 +243,7 @@ GLOBAL_VAR(scoreboard) // Variable to save the scoreboard string once it's been
// Generate the score panel
var/list/dat = list("<meta charset='UTF-8'><b>Round Statistics and Score</b><br><hr>")
var/list/dat = list("<!DOCTYPE html><meta charset='UTF-8'><b>Round Statistics and Score</b><br><hr>")
if(SSticker.mode)
dat += SSticker.mode.get_scoreboard_stats()
@@ -309,7 +309,7 @@ GLOBAL_VAR(scoreboard) // Variable to save the scoreboard string once it's been
for(var/mob/E in GLOB.player_list)
if(E.client)
to_chat(E, "<b>The crew's final score is:</b>")
to_chat(E, "<b><font size='4'><a href='?src=[E.UID()];scoreboard=1'>[crewscore]</a></font></b>")
to_chat(E, "<b><font size='4'><a href='byond://?src=[E.UID()];scoreboard=1'>[crewscore]</a></font></b>")
if(!E.get_preference(PREFTOGGLE_DISABLE_SCOREBOARD))
E << browse(GLOB.scoreboard, "window=roundstats;size=500x600")
+1 -1
View File
@@ -76,7 +76,7 @@ GLOBAL_LIST_INIT(role_playtime_requirements, list(
jtext = theirjob.title
msg += "<TD>[jtext]</TD>"
msg += "<TD><A href='?_src_=holder;getplaytimewindow=[C.mob.UID()]'>" + C.get_exp_type(EXP_TYPE_CREW) + "</a></TD>"
msg += "<TD><A href='byond://?_src_=holder;getplaytimewindow=[C.mob.UID()]'>" + C.get_exp_type(EXP_TYPE_CREW) + "</a></TD>"
msg += "[C.get_exp_dept_string()]"
msg += "</TR>"
+2 -2
View File
@@ -179,9 +179,9 @@
if(AI.control_disabled || (AI.stat == DEAD))
return
if(U.name == "Unknown")
to_chat(AI, "<b>[U]</b> holds <a href='?_src_=usr;show_paper=1;'>\a [itemname]</a> up to one of your cameras ...")
to_chat(AI, "<b>[U]</b> holds <a href='byond://?_src_=usr;show_paper=1;'>\a [itemname]</a> up to one of your cameras ...")
else
to_chat(AI, "<b><a href='?src=[AI.UID()];track=[html_encode(U.name)]'>[U]</a></b> holds <a href='?_src_=usr;show_paper=1;'>\a [itemname]</a> up to one of your cameras ...")
to_chat(AI, "<b><a href='byond://?src=[AI.UID()];track=[html_encode(U.name)]'>[U]</a></b> holds <a href='byond://?_src_=usr;show_paper=1;'>\a [itemname]</a> up to one of your cameras ...")
AI.last_paper_seen = "<html><meta charset='utf-8'><head><title>[itemname]</title></head><body><tt>[info]</tt></body></html>"
else if(O.client && O.client.eye == src)
to_chat(O, "[U] holds \a [itemname] up to one of the cameras ...")
+16 -14
View File
@@ -209,8 +209,8 @@
data["feedback"] = feedback
if(feedback && feedback["color"] == "good")
data["scan_successful"] = TRUE
if(feedback)
data["scan_successful"] = feedback["scan_succeeded"]
else
data["scan_successful"] = FALSE
@@ -240,6 +240,8 @@
if(scanner?.last_scan && desired_data)
var/list/costs = selected_pod.get_cloning_cost(scanner.last_scan, desired_data)
data["cloning_cost"] = costs
else
data["cloning_cost"] = list()
data["pods"] = pod_data
data["pod_amount"] = length(pods)
@@ -270,22 +272,22 @@
if("clone")
var/cost = selected_pod.get_cloning_cost(scanner.last_scan, desired_data)
if(selected_pod.biomass < cost[BIOMASS_COST] || (selected_pod.reagents.get_reagent_amount("sanguine_reagent") < cost[SANGUINE_COST]) || selected_pod.reagents.get_reagent_amount("osseous_reagent") < cost[OSSEOUS_COST])
feedback = list("text" = "The cloning operation is too expensive!", "color" = "bad")
feedback = list("text" = "The cloning operation is too expensive!", "color" = "bad", "scan_succeeded" = FALSE)
else
selected_pod.start_cloning(scanner.last_scan, desired_data)
scanner?.update_scan_status()
feedback = list("text" = "Beginning cloning operation...", "color" = "good")
feedback = list("text" = "Beginning cloning operation...", "color" = "good", "scan_succeeded" = TRUE)
return TRUE
if("scan")
if(!COOLDOWN_FINISHED(src, scancooldown))
feedback = list("text" = "The scanning array is still calibrating! Please wait...", "color" = "good")
feedback = list("text" = "The scanning array is still calibrating! Please wait...", "color" = "average", "scan_succeeded" = FALSE)
return TRUE
if(!scanner.occupant)
return FALSE
scanner.occupant.notify_ghost_cloning()
feedback = list("text" = "Scanning occupant! Please wait...", "color" = "good")
feedback = list("text" = "Scanning occupant! Please wait...", "color" = "good", "scan_succeeded" = FALSE)
COOLDOWN_START(src, scancooldown, 10 SECONDS)
addtimer(CALLBACK(src, PROC_REF(do_scan), patient_data), 5 SECONDS)
return TRUE
@@ -358,24 +360,24 @@
var/scanner_result = scanner.try_scan(scanner.occupant)
switch(scanner_result)
if(SCANNER_MISC)
feedback = list("text" = "Unable to analyze patient's genetic sequence.", "color" = "bad")
feedback = list("text" = "Unable to analyze patient's genetic sequence.", "color" = "bad", "scan_succeeded" = FALSE)
if(SCANNER_UNCLONEABLE_SPECIES)
feedback = list("text" = "[scanner.occupant.dna.species.name_plural] cannot be scanned.", "color" = "bad")
feedback = list("text" = "[scanner.occupant.dna.species.name_plural] cannot be scanned.", "color" = "bad", "scan_succeeded" = FALSE)
if(SCANNER_HUSKED)
feedback = list("text" = "The patient is husked.", "color" = "bad")
feedback = list("text" = "The patient is husked.", "color" = "bad", "scan_succeeded" = FALSE)
if(SCANNER_ABSORBED)
feedback = list("text" = "The patient cannot be scanned due to a lack of biofluids.", "color" = "bad")
feedback = list("text" = "The patient cannot be scanned due to a lack of biofluids.", "color" = "bad", "scan_succeeded" = FALSE)
if(SCANNER_NO_SOUL)
feedback = list("text" = "Failed to sequence the patient's brain. Further attempts may succeed.", "color" = "average")
feedback = list("text" = "Failed to sequence the patient's brain. Further attempts may succeed.", "color" = "average", "scan_succeeded" = FALSE)
if(SCANNER_BRAIN_ISSUE)
feedback = list("text" = "The patient's brain is inactive or missing.", "color" = "bad")
feedback = list("text" = "The patient's brain is inactive or missing.", "color" = "bad", "scan_succeeded" = FALSE)
else
var/datum/cloning_data/scan = scanner_result
if((scan.mindUID == patient_data?.mindUID) || (scan.mindUID == selected_pod?.patient_data?.mindUID))
feedback = list("text" = "Patient has already been scanned.", "color" = "good")
feedback = list("text" = "Patient has already been scanned.", "color" = "good", "scan_succeeded" = TRUE)
return TRUE
feedback = list("text" = "Successfully scanned the patient.", "color" = "good")
feedback = list("text" = "Successfully scanned the patient.", "color" = "good", "scan_succeeded" = TRUE)
desired_data = generate_healthy_data(scan)
#undef TAB_MAIN
@@ -255,7 +255,7 @@
Nuke_request(input, ui.user)
to_chat(ui.user, "<span class='notice'>Request sent.</span>")
log_game("[key_name(ui.user)] has requested the nuclear codes from Centcomm")
GLOB.major_announcement.Announce("The codes for the on-station nuclear self-destruct have been requested by [ui.user]. Confirmation or denial of this request will be sent shortly.", "Nuclear Self Destruct Codes Requested",'sound/AI/commandreport.ogg')
GLOB.major_announcement.Announce("The codes for the on-station nuclear self-destruct have been requested by [ui.user]. Confirmation or denial of this request will be sent shortly.", "Nuclear Self Destruct Codes Requested", 'sound/AI/nuke_codes.ogg')
centcomm_message_cooldown = world.time + 6000 // 10 minutes
setMenuState(ui.user, COMM_SCREEN_MAIN)
+23 -23
View File
@@ -98,10 +98,10 @@
dat += "<center><h4><font color='blue'[message]</h5></center>"
if(auth)
dat += "<h4><dd><A href='?src=[UID()];auth=1'>&#09;<font color='green'>\[Authenticated\]</font></a>&#09;/"
dat += " Server Power: <A href='?src=[UID()];active=1'>[src.linkedServer && src.linkedServer.active ? "<font color='green'>\[On\]</font>":"<font color='red'>\[Off\]</font>"]</a></h4>"
dat += "<h4><dd><A href='byond://?src=[UID()];auth=1'>&#09;<font color='green'>\[Authenticated\]</font></a>&#09;/"
dat += " Server Power: <A href='byond://?src=[UID()];active=1'>[src.linkedServer && src.linkedServer.active ? "<font color='green'>\[On\]</font>":"<font color='red'>\[Off\]</font>"]</a></h4>"
else
dat += "<h4><dd><A href='?src=[UID()];auth=1'>&#09;<font color='red'>\[Unauthenticated\]</font></a>&#09;/"
dat += "<h4><dd><A href='byond://?src=[UID()];auth=1'>&#09;<font color='red'>\[Unauthenticated\]</font></a>&#09;/"
dat += " Server Power: <u>[src.linkedServer && src.linkedServer.active ? "<font color='green'>\[On\]</font>":"<font color='red'>\[Off\]</font>"]</u></h4>"
if(hacking || emag)
@@ -115,23 +115,23 @@
if(0)
//&#09; = TAB
var/i = 0
dat += "<dd><A href='?src=[UID()];find=1'>&#09;[++i]. Link To A Server</a></dd>"
dat += "<dd><A href='byond://?src=[UID()];find=1'>&#09;[++i]. Link To A Server</a></dd>"
if(auth)
if(!linkedServer || (linkedServer.stat & (NOPOWER|BROKEN)))
dat += "<dd><A>&#09;ERROR: Server not found!</A><br></dd>"
else
dat += "<dd><A href='?src=[UID()];view=1'>&#09;[++i]. View Message Logs </a><br></dd>"
dat += "<dd><A href='?src=[UID()];viewr=1'>&#09;[++i]. View Request Console Logs </a></br></dd>"
dat += "<dd><A href='?src=[UID()];clear=1'>&#09;[++i]. Clear Message Logs</a><br></dd>"
dat += "<dd><A href='?src=[UID()];clearr=1'>&#09;[++i]. Clear Request Console Logs</a><br></dd>"
dat += "<dd><A href='?src=[UID()];pass=1'>&#09;[++i]. Set Custom Key</a><br></dd>"
dat += "<dd><A href='?src=[UID()];msg=1'>&#09;[++i]. Send Admin Message</a><br></dd>"
dat += "<dd><A href='byond://?src=[UID()];view=1'>&#09;[++i]. View Message Logs </a><br></dd>"
dat += "<dd><A href='byond://?src=[UID()];viewr=1'>&#09;[++i]. View Request Console Logs </a></br></dd>"
dat += "<dd><A href='byond://?src=[UID()];clear=1'>&#09;[++i]. Clear Message Logs</a><br></dd>"
dat += "<dd><A href='byond://?src=[UID()];clearr=1'>&#09;[++i]. Clear Request Console Logs</a><br></dd>"
dat += "<dd><A href='byond://?src=[UID()];pass=1'>&#09;[++i]. Set Custom Key</a><br></dd>"
dat += "<dd><A href='byond://?src=[UID()];msg=1'>&#09;[++i]. Send Admin Message</a><br></dd>"
else
for(var/n = ++i; n <= optioncount; n++)
dat += "<dd><font color='blue'>&#09;[n]. ---------------</font><br></dd>"
if((isAI(user) || isrobot(user)) && (user.mind.special_role && user.mind.is_original_mob(user)))
//Malf/Traitor AIs can bruteforce into the system to gain the Key.
dat += "<dd><A href='?src=[UID()];hack=1'><i><font color='Red'>*&@#. Bruteforce Key</font></i></font></a><br></dd>"
dat += "<dd><A href='byond://?src=[UID()];hack=1'><i><font color='Red'>*&@#. Bruteforce Key</font></i></font></a><br></dd>"
else
dat += "<br>"
@@ -147,7 +147,7 @@
//var/recipient = "Unspecified" //name of the person
//var/sender = "Unspecified" //name of the sender
//var/message = "Blank" //transferred message
dat += "<center><A href='?src=[UID()];back=1'>Back</a> - <A href='?src=[UID()];refresh=1'>Refresh</center><hr>"
dat += "<center><A href='byond://?src=[UID()];back=1'>Back</a> - <A href='byond://?src=[UID()];refresh=1'>Refresh</center><hr>"
dat += "<table border='1' width='100%'><tr><th width = '5%'>X</th><th width='15%'>Sender</th><th width='15%'>Recipient</th><th width='300px' word-wrap: break-word>Message</th></tr>"
for(var/datum/data_pda_msg/pda in src.linkedServer.pda_msgs)
index++
@@ -155,7 +155,7 @@
break
// Del - Sender - Recepient - Message
// X - Al Green - Your Mom - WHAT UP!?
dat += "<tr><td width = '5%'><center><A href='?src=[UID()];delete=\ref[pda]' style='color: rgb(255,0,0)'>X</a></center></td><td width='15%'>[pda.sender]</td><td width='15%'>[pda.recipient]</td><td width='300px'>[pda.message]</td></tr>"
dat += "<tr><td width = '5%'><center><A href='byond://?src=[UID()];delete=\ref[pda]' style='color: rgb(255,0,0)'>X</a></center></td><td width='15%'>[pda.sender]</td><td width='15%'>[pda.recipient]</td><td width='300px'>[pda.message]</td></tr>"
dat += "</table>"
//Hacking screen.
if(2)
@@ -202,13 +202,13 @@
//Fake messages
if(3)
dat += "<center><A href='?src=[UID()];back=1'>Back</a> - <A href='?src=[UID()];Reset=1'>Reset</a></center><hr>"
dat += "<center><A href='byond://?src=[UID()];back=1'>Back</a> - <A href='byond://?src=[UID()];Reset=1'>Reset</a></center><hr>"
dat += {"<table border='1' width='100%'>
<tr><td width='20%'><A href='?src=[UID()];select=Sender'>Sender</a></td>
<td width='20%'><A href='?src=[UID()];select=RecJob'>Sender's Job</a></td>
<td width='20%'><A href='?src=[UID()];select=Recepient'>Recipient</a></td>
<td width='300px' word-wrap: break-word><A href='?src=[UID()];select=Message'>Message</a></td></tr>"}
<tr><td width='20%'><A href='byond://?src=[UID()];select=Sender'>Sender</a></td>
<td width='20%'><A href='byond://?src=[UID()];select=RecJob'>Sender's Job</a></td>
<td width='20%'><A href='byond://?src=[UID()];select=Recepient'>Recipient</a></td>
<td width='300px' word-wrap: break-word><A href='byond://?src=[UID()];select=Message'>Message</a></td></tr>"}
//Sender - Sender's Job - Recepient - Message
//Al Green- Your Dad - Your Mom - WHAT UP!?
@@ -216,7 +216,7 @@
<td width='20%'>[customjob]</td>
<td width='20%'>[customrecepient ? customrecepient.owner : "NONE"]</td>
<td width='300px'>[custommessage]</td></tr>"}
dat += "</table><br><center><A href='?src=[UID()];select=Send'>Send</a>"
dat += "</table><br><center><A href='byond://?src=[UID()];select=Send'>Send</a>"
//Request Console Logs
if(4)
@@ -231,7 +231,7 @@
var/id_auth = "Unauthenticated" - 15%
var/priority = "Normal" - 10%
*/
dat += "<center><A href='?src=[UID()];back=1'>Back</a> - <A href='?src=[UID()];refresh=1'>Refresh</center><hr>"
dat += "<center><A href='byond://?src=[UID()];back=1'>Back</a> - <A href='byond://?src=[UID()];refresh=1'>Refresh</center><hr>"
dat += {"<table border='1' width='100%'><tr><th width = '5%'>X</th><th width='15%'>Sending Dep.</th><th width='15%'>Receiving Dep.</th>
<th width='300px' word-wrap: break-word>Message</th><th width='15%'>Stamp</th><th width='15%'>ID Auth.</th><th width='15%'>Priority.</th></tr>"}
for(var/datum/data_rc_msg/rc in src.linkedServer.rc_msgs)
@@ -240,7 +240,7 @@
break
// Del - Sender - Recepient - Message
// X - Al Green - Your Mom - WHAT UP!?
dat += {"<tr><td width = '5%'><center><A href='?src=[UID()];deleter=\ref[rc]' style='color: rgb(255,0,0)'>X</a></center></td><td width='15%'>[rc.send_dpt]</td>
dat += {"<tr><td width = '5%'><center><A href='byond://?src=[UID()];deleter=\ref[rc]' style='color: rgb(255,0,0)'>X</a></center></td><td width='15%'>[rc.send_dpt]</td>
<td width='15%'>[rc.rec_dpt]</td><td width='300px'>[rc.message]</td><td width='15%'>[rc.stamp]</td><td width='15%'>[rc.id_auth]</td><td width='15%'>[rc.priority]</td></tr>"}
dat += "</table>"
dat += "</body>"
@@ -457,7 +457,7 @@
//Sender isn't faking as someone who exists
if(isnull(PDARec))
src.linkedServer.send_pda_message("[customrecepient.owner]", "[customsender]","[custommessage]")
recipient_messenger.notify("<b>Message from [customsender] ([customjob]), </b>\"[custommessage]\" (<a href='?src=[UID()];choice=Message;target=\ref[src]'>Reply</a>)")
recipient_messenger.notify("<b>Message from [customsender] ([customjob]), </b>\"[custommessage]\" (<a href='byond://?src=[UID()];choice=Message;target=\ref[src]'>Reply</a>)")
sender_identity = customsender
//Sender is faking as someone who exists
else
@@ -467,7 +467,7 @@
if(!recipient_messenger.conversations.Find("\ref[PDARec]"))
recipient_messenger.conversations.Add("\ref[PDARec]")
recipient_messenger.notify("<b>Message from [PDARec.owner] ([customjob]), </b>\"[custommessage]\" (<a href='?src=[recipient_messenger.UID()];choice=Message;target=\ref[PDARec]'>Reply</a>)")
recipient_messenger.notify("<b>Message from [PDARec.owner] ([customjob]), </b>\"[custommessage]\" (<a href='byond://?src=[recipient_messenger.UID()];choice=Message;target=\ref[PDARec]'>Reply</a>)")
sender_identity = PDARec.owner
// Logging
@@ -243,7 +243,7 @@
R.SetLockdown(!R.lockcharge)
to_chat(R, "[!R.lockcharge ? "<span class='notice'>Your lockdown has been lifted!" : "<span class='alert'>You have been locked down!"]</span>")
if(R.connected_ai)
to_chat(R.connected_ai, "[!R.lockcharge ? "<span class='notice'>NOTICE - Cyborg lockdown lifted</span>" : "<span class='alert'>ALERT - Cyborg lockdown detected</span>"]: <a href='?src=[R.connected_ai.UID()];track=[html_encode(R.name)]'>[R.name]</a></span><br>")
to_chat(R.connected_ai, "[!R.lockcharge ? "<span class='notice'>NOTICE - Cyborg lockdown lifted</span>" : "<span class='alert'>ALERT - Cyborg lockdown detected</span>"]: <a href='byond://?src=[R.connected_ai.UID()];track=[html_encode(R.name)]'>[R.name]</a></span><br>")
. = TRUE
if("hackbot") // AIs hacking/emagging a borg
var/mob/living/silicon/robot/R = locateUID(params["uid"])
+10 -4
View File
@@ -228,9 +228,15 @@
/obj/item/autopsy_scanner,
/obj/item/holosign_creator/atmos,
/obj/item/clothing/gloves/color/black/forensics,
/obj/item/rcd,
/obj/item/rpd,
/obj/item/mod/control
/obj/item/mod/control,
/obj/item/stamp,
/obj/item/melee/knuckleduster/nanotrasen,
/obj/item/melee/rapier,
/obj/item/storage/belt/rapier,
/obj/item/nuke_core,
/obj/item/nuke_core_container,
/obj/item/documents,
/obj/item/clothing/gloves/color/black/krav_maga
)
// These items will NOT be preserved
var/list/do_not_preserve_items = list (
@@ -589,7 +595,7 @@
log_admin("<span class='notice'>[key_name(E)] entered a stasis pod.</span>")
if(SSticker.mode.tdm_gamemode)
SSblackbox.record_feedback("nested tally", "TDM_quitouts", 1, list(SSticker.mode.name, "TDM Cryopods"))
message_admins("[key_name_admin(E)] entered a stasis pod. (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[x];Y=[y];Z=[z]'>JMP</a>)")
message_admins("[key_name_admin(E)] entered a stasis pod. (<A href='byond://?_src_=holder;adminplayerobservecoodjump=1;X=[x];Y=[y];Z=[z]'>JMP</a>)")
add_fingerprint(E)
playsound(src, 'sound/machines/podclose.ogg', 5)
+10 -10
View File
@@ -100,21 +100,21 @@
user.set_machine(src)
var/list/dat = list()
dat +="<div class='statusDisplay' style='text-align:center'>"
dat += "<b><A href='?src=[UID()];action=toggle'>[!active ? "BREAK IT DOWN" : "SHUT IT DOWN"]<b></A><br>"
dat += "<b><A href='byond://?src=[UID()];action=toggle'>[!active ? "BREAK IT DOWN" : "SHUT IT DOWN"]<b></A><br>"
dat += "</div><br>"
dat += "<A href='?src=[UID()];action=select'> Select Track</A><br>"
dat += "<A href='byond://?src=[UID()];action=select'> Select Track</A><br>"
dat += "Track Selected: [selection.song_name]<br>"
dat += "Track Length: [DisplayTimeText(selection.song_length)]<br><br>"
dat += "<br>DJ's Soundboard:<b><br>"
dat +="<div class='statusDisplay'><div style='text-align:center'>"
dat += "<A href='?src=[UID()];action=horn'>Air Horn</A> "
dat += "<A href='?src=[UID()];action=alert'>Station Alert</A> "
dat += "<A href='?src=[UID()];action=siren'>Warning Siren</A> "
dat += "<A href='?src=[UID()];action=honk'>Honk</A><br>"
dat += "<A href='?src=[UID()];action=pump'>Shotgun Pump</A>"
dat += "<A href='?src=[UID()];action=pop'>Gunshot</A>"
dat += "<A href='?src=[UID()];action=saber'>Esword</A>"
dat += "<A href='?src=[UID()];action=harm'>Harm Alarm</A>"
dat += "<A href='byond://?src=[UID()];action=horn'>Air Horn</A> "
dat += "<A href='byond://?src=[UID()];action=alert'>Station Alert</A> "
dat += "<A href='byond://?src=[UID()];action=siren'>Warning Siren</A> "
dat += "<A href='byond://?src=[UID()];action=honk'>Honk</A><br>"
dat += "<A href='byond://?src=[UID()];action=pump'>Shotgun Pump</A>"
dat += "<A href='byond://?src=[UID()];action=pop'>Gunshot</A>"
dat += "<A href='byond://?src=[UID()];action=saber'>Esword</A>"
dat += "<A href='byond://?src=[UID()];action=harm'>Harm Alarm</A>"
var/datum/browser/popup = new(user, "vending", "Radiance Dance Machine - Mark IV", 400, 350)
popup.set_content(dat.Join())
popup.open()
+1 -1
View File
@@ -203,7 +203,7 @@
/obj/machinery/door/airlock/plasma/attackby(obj/item/C, mob/user, params)
if(C.get_heat() > 300)
message_admins("Plasma airlock ignited by [key_name_admin(user)] in ([x],[y],[z] - <a href='?_src_=holder;adminplayerobservecoodjump=1;X=[x];Y=[y];Z=[z]'>JMP</a>)")
message_admins("Plasma airlock ignited by [key_name_admin(user)] in ([x],[y],[z] - <a href='byond://?_src_=holder;adminplayerobservecoodjump=1;X=[x];Y=[y];Z=[z]'>JMP</a>)")
log_game("Plasma airlock ignited by [key_name(user)] in ([x],[y],[z])")
investigate_log("was <font color='red'><b>ignited</b></font> by [key_name(user)]","atmos")
ignite(C.get_heat())
+1 -1
View File
@@ -80,7 +80,7 @@
if(href_list["checkmate"])
if(cooling_down)
message_admins("Too many checkmates on chessboard, possible HREF exploits: [key_name_admin(usr)] on [src] (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[x];Y=[y];Z=[z]'>JMP</a>)")
message_admins("Too many checkmates on chessboard, possible HREF exploits: [key_name_admin(usr)] on [src] (<A href='byond://?_src_=holder;adminplayerobservecoodjump=1;X=[x];Y=[y];Z=[z]'>JMP</a>)")
return
visible_message("<span class='info'><span class='name'>[src.name]</span> beeps, \"WINNER!\"</span>")
new prize(get_turf(src), 80)
+9 -9
View File
@@ -166,8 +166,8 @@ GLOBAL_LIST_EMPTY(holopads)
if(temp)
dat = temp
else
dat = "<a href='?src=[UID()];AIrequest=1'>Request an AI's presence.</a><br>"
dat += "<a href='?src=[UID()];Holocall=1'>Call another holopad.</a><br>"
dat = "<a href='byond://?src=[UID()];AIrequest=1'>Request an AI's presence.</a><br>"
dat += "<a href='byond://?src=[UID()];Holocall=1'>Call another holopad.</a><br>"
if(LAZYLEN(holo_calls))
dat += "=====================================================<br>"
@@ -177,7 +177,7 @@ GLOBAL_LIST_EMPTY(holopads)
for(var/I in holo_calls)
var/datum/holocall/HC = I
if(HC.connected_holopad != src)
dat += "<a href='?src=[UID()];connectcall=[HC.UID()]'>Answer call from [get_area(HC.calling_holopad)].</a><br>"
dat += "<a href='byond://?src=[UID()];connectcall=[HC.UID()]'>Answer call from [get_area(HC.calling_holopad)].</a><br>"
one_unanswered_call = TRUE
else
one_answered_call = TRUE
@@ -188,7 +188,7 @@ GLOBAL_LIST_EMPTY(holopads)
for(var/I in holo_calls)
var/datum/holocall/HC = I
if(HC.connected_holopad == src)
dat += "<a href='?src=[UID()];disconnectcall=[HC.UID()] '>Disconnect call from [HC.user].</a><br>"
dat += "<a href='byond://?src=[UID()];disconnectcall=[HC.UID()] '>Disconnect call from [HC.user].</a><br>"
var/area/area = get_area(src)
var/datum/browser/popup = new(user, "holopad", "[area] holopad", 400, 300)
@@ -205,15 +205,15 @@ GLOBAL_LIST_EMPTY(holopads)
if(last_request + 200 < world.time)
last_request = world.time
temp = "You requested an AI's presence.<br>"
temp += "<a href='?src=[UID()];mainmenu=1'>Main Menu</a>"
temp += "<a href='byond://?src=[UID()];mainmenu=1'>Main Menu</a>"
var/area/area = get_area(src)
for(var/mob/living/silicon/ai/AI in GLOB.ai_list)
if(!AI.client)
continue
to_chat(AI, "<span class='info'>Your presence is requested at <a href='?src=[AI.UID()];jumptoholopad=[UID()]'>\the [area]</a>.</span>")
to_chat(AI, "<span class='info'>Your presence is requested at <a href='byond://?src=[AI.UID()];jumptoholopad=[UID()]'>\the [area]</a>.</span>")
else
temp = "A request for AI presence was already sent recently.<br>"
temp += "<a href='?src=[UID()];mainmenu=1'>Main Menu</a>"
temp += "<a href='byond://?src=[UID()];mainmenu=1'>Main Menu</a>"
else if(href_list["Holocall"])
if(outgoing_call)
@@ -222,7 +222,7 @@ GLOBAL_LIST_EMPTY(holopads)
to_chat(usr, "<span class='notice'>Finish dialling first!</span>")
return
temp = "You must stand on the holopad to make a call!<br>"
temp += "<a href='?src=[UID()];mainmenu=1'>Main Menu</a>"
temp += "<a href='byond://?src=[UID()];mainmenu=1'>Main Menu</a>"
if(usr.loc == loc)
var/list/callnames = list()
for(var/I in GLOB.holopads)
@@ -239,7 +239,7 @@ GLOBAL_LIST_EMPTY(holopads)
if(usr.loc == loc)
temp = "Dialing...<br>"
temp += "<a href='?src=[UID()];mainmenu=1'>Main Menu</a>"
temp += "<a href='byond://?src=[UID()];mainmenu=1'>Main Menu</a>"
new /datum/holocall(usr, src, callnames[result])
else if(href_list["connectcall"])
+3 -3
View File
@@ -104,13 +104,13 @@
dat += "Set Temperature: "
dat += "<a href='?src=[UID()];op=temp;val=-5'>-</a>"
dat += "<a href='byond://?src=[UID()];op=temp;val=-5'>-</a>"
dat += " [set_temperature]&deg;C "
dat += "<a href='?src=[UID()];op=temp;val=5'>+</a><br>"
dat += "<a href='byond://?src=[UID()];op=temp;val=5'>+</a><br>"
user.set_machine(src)
user << browse("<meta charset='utf-8'><head><title>Space Heater Control Panel</title></head><tt>[dat]</tt>", "window=spaceheater")
user << browse("<!DOCTYPE html><meta charset='utf-8'><head><title>Space Heater Control Panel</title></head><tt>[dat]</tt>", "window=spaceheater")
onclose(user, "spaceheater")
else
+7 -2
View File
@@ -142,17 +142,22 @@
icon_panel = "thin_vendor"
category = VENDOR_TYPE_DEPARTMENTAL
products = list(/obj/item/reagent_containers/glass/bottle/nutrient/ez = 20,
/obj/item/reagent_containers/glass/bottle/nutrient/mut = 15,
/obj/item/reagent_containers/glass/bottle/nutrient/l4z = 13,
/obj/item/reagent_containers/glass/bottle/nutrient/rh = 6,
/obj/item/reagent_containers/spray/pestspray = 20,
/obj/item/reagent_containers/syringe = 5,
/obj/item/reagent_containers/dropper = 5,
/obj/item/storage/bag/plants/seed_sorting_tray = 3,
/obj/item/storage/bag/plants = 5,
/obj/item/cultivator = 3,
/obj/item/shovel/spade = 3,
/obj/item/plant_analyzer = 4)
contraband = list(/obj/item/reagent_containers/glass/bottle/ammonia = 10,
/obj/item/reagent_containers/glass/bottle/diethylamine = 5)
contraband = list(/obj/item/reagent_containers/glass/bottle/ash = 10,
/obj/item/reagent_containers/glass/bottle/saltpetre = 2,
/obj/item/reagent_containers/glass/bottle/charcoal = 2,
/obj/item/reagent_containers/glass/bottle/mutagen = 2)
refill_canister = /obj/item/vending_refill/hydronutrients
+3 -3
View File
@@ -39,7 +39,7 @@
[integrity<30?"<font color='red'><b>DAMAGE LEVEL CRITICAL</b></font><br>":null]
[internal_damage&MECHA_INT_TEMP_CONTROL?"<font color='red'><b>CLOWN SUPPORT SYSTEM MALFUNCTION</b></font><br>":null]
[internal_damage&MECHA_INT_TANK_BREACH?"<font color='red'><b>GAS TANK HONK</b></font><br>":null]
[internal_damage&MECHA_INT_CONTROL_LOST?"<font color='red'><b>HONK-A-DOODLE</b></font> - <a href='?src=[UID()];repair_int_control_lost=1'>Recalibrate</a><br>":null]
[internal_damage&MECHA_INT_CONTROL_LOST?"<font color='red'><b>HONK-A-DOODLE</b></font> - <a href='byond://?src=[UID()];repair_int_control_lost=1'>Recalibrate</a><br>":null]
<b>IntegriHONK: </b> [integrity]%<br>
<b>PowerHONK charge: </b>[isnull(cell_charge)?"No powercell installed":"[cell.percent()]%"]<br>
<b>Air source: </b>[use_internal_tank?"Internal Airtank":"Environment"]<br>
@@ -48,7 +48,7 @@
<b>HONK pressure: </b>[cabin_pressure>WARNING_HIGH_PRESSURE ? "<font color='red'>[cabin_pressure]</font>": cabin_pressure]kPa<br>
<b>HONK temperature: </b> [return_temperature()]&deg;K|[return_temperature() - T0C]&deg;C<br>
<b>Lights: </b>[lights?"on":"off"]<br>
[dna?"<b>DNA-locked:</b><br> <span style='font-size:10px;letter-spacing:-1px;'>[dna]</span> \[<a href='?src=[UID()];reset_dna=1'>Reset</a>\]<br>":null]
[dna?"<b>DNA-locked:</b><br> <span style='font-size:10px;letter-spacing:-1px;'>[dna]</span> \[<a href='byond://?src=[UID()];reset_dna=1'>Reset</a>\]<br>":null]
"}
return output
@@ -111,7 +111,7 @@
var/output = {"<div class='wr'>
<div class='header'>Sounds of HONK:</div>
<div class='links'>
<a href='?src=[UID()];play_sound=sadtrombone'>Sad Trombone</a>
<a href='byond://?src=[UID()];play_sound=sadtrombone'>Sad Trombone</a>
</div>
</div>
"}
+1 -1
View File
@@ -41,7 +41,7 @@
var/output = {"<div class='wr'>
<div class='header'>Special</div>
<div class='links'>
<a href='?src=[UID()];switch_damtype=1'>Change melee damage type</a><br>
<a href='byond://?src=[UID()];switch_damtype=1'>Change melee damage type</a><br>
</div>
</div>
"}
+1 -1
View File
@@ -47,7 +47,7 @@
if(chassis.selected == src)
txt += "<b>[name]</b>"
else if(selectable)
txt += "<a href='?src=[chassis.UID()];select_equip=\ref[src]'>[name]</a>"
txt += "<a href='byond://?src=[chassis.UID()];select_equip=\ref[src]'>[name]</a>"
else
txt += "[name]"
@@ -105,7 +105,7 @@
if(output)
var/temp = ""
if(patient)
temp = "<br />\[Occupant: [patient] ([patient.stat > 1 ? "*DECEASED*" : "Health: [patient.health]%"])\]<br /><a href='?src=[UID()];view_stats=1'>View stats</a>|<a href='?src=[UID()];eject=1'>Eject</a>"
temp = "<br />\[Occupant: [patient] ([patient.stat > 1 ? "*DECEASED*" : "Health: [patient.health]%"])\]<br /><a href='byond://?src=[UID()];view_stats=1'>View stats</a>|<a href='byond://?src=[UID()];eject=1'>Eject</a>"
return "[output] [temp]"
/obj/item/mecha_parts/mecha_equipment/medical/sleeper/Topic(href,href_list)
@@ -184,7 +184,7 @@
if(SG && SG.reagents && islist(SG.reagents.reagent_list))
for(var/datum/reagent/R in SG.reagents.reagent_list)
if(R.volume > 0)
output += "<a href=\"?src=[UID()];inject=\ref[R];source=\ref[SG]\">Inject [R.name]</a><br />"
output += "<a href='byond://?src=[UID()];inject=\ref[R];source=\ref[SG]'>Inject [R.name]</a><br />"
return output
@@ -276,7 +276,7 @@
/obj/item/mecha_parts/mecha_equipment/medical/syringe_gun/get_equip_info()
var/output = ..()
if(output)
return "[output] \[<a href=\"?src=[UID()];toggle_mode=1\">[mode? "Analyze" : "Launch"]</a>\]<br />\[Syringes: [syringes.len]/[max_syringes] | Reagents: [reagents.total_volume]/[reagents.maximum_volume]\]<br /><a href='?src=[UID()];show_reagents=1'>Reagents list</a>"
return "[output] \[<a href='byond://?src=[UID()];toggle_mode=1'>[mode? "Analyze" : "Launch"]</a>\]<br />\[Syringes: [syringes.len]/[max_syringes] | Reagents: [reagents.total_volume]/[reagents.maximum_volume]\]<br /><a href='byond://?src=[UID()];show_reagents=1'>Reagents list</a>"
/obj/item/mecha_parts/mecha_equipment/medical/syringe_gun/action(atom/movable/target)
if(!action_checks(target))
@@ -436,9 +436,9 @@
var/output
for(var/datum/reagent/R in reagents.reagent_list)
if(R.volume > 0)
output += "[R]: [round(R.volume,0.001)] - <a href=\"?src=[UID()];purge_reagent=[R.id]\">Purge Reagent</a><br />"
output += "[R]: [round(R.volume,0.001)] - <a href='byond://?src=[UID()];purge_reagent=[R.id]'>Purge Reagent</a><br />"
if(output)
output += "Total: [round(reagents.total_volume,0.001)]/[reagents.maximum_volume] - <a href=\"?src=[UID()];purge_all=1\">Purge All</a>"
output += "Total: [round(reagents.total_volume,0.001)]/[reagents.maximum_volume] - <a href='byond://?src=[UID()];purge_all=1'>Purge All</a>"
return output || "None"
/obj/item/mecha_parts/mecha_equipment/medical/syringe_gun/proc/load_syringe(obj/item/reagent_containers/syringe/S)
@@ -92,7 +92,7 @@
/obj/item/mecha_parts/mecha_equipment/gravcatapult/get_equip_info()
return "[..()] [mode==1?"([locked||"Nothing"])":null] \[<a href='?src=[UID()];mode=1'>S</a>|<a href='?src=[UID()];mode=2'>P</a>\]"
return "[..()] [mode==1?"([locked||"Nothing"])":null] \[<a href='byond://?src=[UID()];mode=1'>S</a>|<a href='byond://?src=[UID()];mode=2'>P</a>\]"
/obj/item/mecha_parts/mecha_equipment/gravcatapult/Topic(href, href_list)
..()
@@ -172,7 +172,7 @@
/obj/item/mecha_parts/mecha_equipment/repair_droid/get_equip_info()
if(!chassis) return
return "<span style=\"color:[equip_ready?"#0f0":"#f00"];\">*</span>&nbsp; [name] - <a href='?src=[UID()];toggle_repairs=1'>[equip_ready?"A":"Dea"]ctivate</a>"
return "<span style=\"color:[equip_ready?"#0f0":"#f00"];\">*</span>&nbsp; [name] - <a href='byond://?src=[UID()];toggle_repairs=1'>[equip_ready?"A":"Dea"]ctivate</a>"
/obj/item/mecha_parts/mecha_equipment/repair_droid/Topic(href, href_list)
@@ -277,7 +277,7 @@
/obj/item/mecha_parts/mecha_equipment/tesla_energy_relay/get_equip_info()
if(!chassis) return
return "<span style=\"color:[equip_ready?"#0f0":"#f00"];\">*</span>&nbsp; [name] - <a href='?src=[UID()];toggle_relay=1'>[equip_ready?"A":"Dea"]ctivate</a>"
return "<span style=\"color:[equip_ready?"#0f0":"#f00"];\">*</span>&nbsp; [name] - <a href='byond://?src=[UID()];toggle_relay=1'>[equip_ready?"A":"Dea"]ctivate</a>"
/obj/item/mecha_parts/mecha_equipment/tesla_energy_relay/process()
@@ -346,7 +346,7 @@
/obj/item/mecha_parts/mecha_equipment/generator/get_equip_info()
var/output = ..()
if(output)
return "[output] \[[fuel_name]: [round(fuel_amount,0.1)] cm<sup>3</sup>\] - <a href='?src=[UID()];toggle=1'>[equip_ready?"A":"Dea"]ctivate</a>"
return "[output] \[[fuel_name]: [round(fuel_amount,0.1)] cm<sup>3</sup>\] - <a href='byond://?src=[UID()];toggle=1'>[equip_ready?"A":"Dea"]ctivate</a>"
/obj/item/mecha_parts/mecha_equipment/generator/action(target)
if(chassis)
@@ -292,7 +292,7 @@
occupant_message("Switched RCD to Construct Airlock.")
/obj/item/mecha_parts/mecha_equipment/rcd/get_equip_info()
return "[..()] \[<a href='?src=[UID()];mode=0'>D</a>|<a href='?src=[UID()];mode=1'>C</a>|<a href='?src=[UID()];mode=2'>A</a>\]"
return "[..()] \[<a href='byond://?src=[UID()];mode=0'>D</a>|<a href='byond://?src=[UID()];mode=1'>C</a>|<a href='byond://?src=[UID()];mode=2'>A</a>\]"
/obj/item/mecha_parts/mecha_equipment/mimercd
@@ -395,7 +395,7 @@
/obj/item/mecha_parts/mecha_equipment/cable_layer/get_equip_info()
var/output = ..()
if(output)
return "[output] \[Cable: [cable ? cable.amount : 0] m\][(cable && cable.amount) ? "- <a href='?src=[UID()];toggle=1'>[!equip_ready?"Dea":"A"]ctivate</a>|<a href='?src=[UID()];cut=1'>Cut</a>" : null]"
return "[output] \[Cable: [cable ? cable.amount : 0] m\][(cable && cable.amount) ? "- <a href='byond://?src=[UID()];toggle=1'>[!equip_ready?"Dea":"A"]ctivate</a>|<a href='byond://?src=[UID()];cut=1'>Cut</a>" : null]"
/obj/item/mecha_parts/mecha_equipment/cable_layer/proc/use_cable(amount)
if(!cable || cable.amount<1)
+2 -2
View File
@@ -256,7 +256,7 @@
return FALSE
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/get_equip_info()
return "[..()]\[[projectiles]\][(projectiles < initial(projectiles))?" - <a href='?src=[UID()];rearm=1'>Rearm</a>":null]"
return "[..()]\[[projectiles]\][(projectiles < initial(projectiles))?" - <a href='byond://?src=[UID()];rearm=1'>Rearm</a>":null]"
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/proc/rearm()
if(projectiles < initial(projectiles))
@@ -386,7 +386,7 @@
size=1
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/flashbang/clusterbang/limited/get_equip_info()//Limited version of the clusterbang launcher that can't reload
return "<span style=\"color:[equip_ready?"#0f0":"#f00"];\">*</span>&nbsp;[chassis.selected==src?"<b>":"<a href='?src=[chassis.UID()];select_equip=\ref[src]'>"][name][chassis.selected==src?"</b>":"</a>"]\[[projectiles]\]"
return "<span style=\"color:[equip_ready?"#0f0":"#f00"];\">*</span>&nbsp;[chassis.selected==src?"<b>":"<a href='byond://?src=[chassis.UID()];select_equip=\ref[src]'>"][name][chassis.selected==src?"</b>":"</a>"]\[[projectiles]\]"
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/flashbang/clusterbang/limited/rearm()
return//Extra bit of security
+2 -2
View File
@@ -918,7 +918,7 @@
to_chat(user, "[B.get_mecha_info_text()]")
break
//Nothing like a big, red link to make the player feel powerful!
to_chat(user, "<a href='?src=[user.UID()];ai_take_control=\ref[src]'><span class='userdanger'>ASSUME DIRECT CONTROL?</span></a><br>")
to_chat(user, "<a href='byond://?src=[user.UID()];ai_take_control=\ref[src]'><span class='userdanger'>ASSUME DIRECT CONTROL?</span></a><br>")
else
examine(user)
if(occupant)
@@ -933,7 +933,7 @@
if(!can_control_mech)
to_chat(user, "<span class='warning'>You cannot control exosuits without AI control beacons installed.</span>")
return
to_chat(user, "<a href='?src=[user.UID()];ai_take_control=\ref[src]'><span class='boldnotice'>Take control of exosuit?</span></a><br>")
to_chat(user, "<a href='byond://?src=[user.UID()];ai_take_control=\ref[src]'><span class='boldnotice'>Take control of exosuit?</span></a><br>")
/obj/mecha/transfer_ai(interaction, mob/user, mob/living/silicon/ai/AI, obj/item/aicard/card)
if(!..())
+25 -25
View File
@@ -55,7 +55,7 @@
"[MECHA_INT_FIRE]" = "<font color='red'><b>INTERNAL FIRE</b></font>",
"[MECHA_INT_TEMP_CONTROL]" = "<font color='red'><b>LIFE SUPPORT SYSTEM MALFUNCTION</b></font>",
"[MECHA_INT_TANK_BREACH]" = "<font color='red'><b>GAS TANK BREACH</b></font>",
"[MECHA_INT_CONTROL_LOST]" = "<font color='red'><b>COORDINATION SYSTEM CALIBRATION FAILURE</b></font> - <a href='?src=[UID()];repair_int_control_lost=1'>Recalibrate</a>",
"[MECHA_INT_CONTROL_LOST]" = "<font color='red'><b>COORDINATION SYSTEM CALIBRATION FAILURE</b></font> - <a href='byond://?src=[UID()];repair_int_control_lost=1'>Recalibrate</a>",
"[MECHA_INT_SHORT_CIRCUIT]" = "<font color='red'><b>SHORT CIRCUIT</b></font>"
)
for(var/tflag in dam_reports)
@@ -85,7 +85,7 @@
. += "<b>Cabin pressure: </b>[cabin_pressure>WARNING_HIGH_PRESSURE ? "<font color='red'>[cabin_pressure]</font>": cabin_pressure]kPa<br>"
. += "<b>Cabin temperature: </b> [return_temperature()]&deg;K|[return_temperature() - T0C]&deg;C<br>"
. += "<b>Lights: </b>[lights?"on":"off"]<br>"
. += "[dna ? "<b>DNA-locked:</b><br> <span style='font-size:10px;letter-spacing:-1px;'>[dna]</span> \[<a href='?src=[UID()];reset_dna=1'>Reset</a>\]<br>" : ""]"
. += "[dna ? "<b>DNA-locked:</b><br> <span style='font-size:10px;letter-spacing:-1px;'>[dna]</span> \[<a href='byond://?src=[UID()];reset_dna=1'>Reset</a>\]<br>" : ""]"
. += "[defense_action.owner ? "<b>Defence Mode: </b> [defence_mode ? "Enabled" : "Disabled"]<br>" : ""]"
. += "[overload_action.owner ? "<b>Leg Actuators Overload: </b> [leg_overload_mode ? "Enabled" : "Disabled"]<br>" : ""]"
. += "[thrusters_action.owner ? "<b>Thrusters: </b> [thrusters_active ? "Enabled" : "Disabled"]<br>" : ""]"
@@ -97,37 +97,37 @@
. = "<div class='wr'>"
. += "<div class='header'>Electronics</div>"
. += "<div class='links'>"
. += "<a href='?src=[UID()];toggle_lights=1'>Toggle Lights</a><br>"
. += "<a href='byond://?src=[UID()];toggle_lights=1'>Toggle Lights</a><br>"
. += "<b>Radio settings:</b><br>"
. += "Microphone: <a href='?src=[UID()];rmictoggle=1'><span id='rmicstate'>[radio.broadcasting?"Engaged":"Disengaged"]</span></a><br>"
. += "Speaker: <a href='?src=[UID()];rspktoggle=1'><span id='rspkstate'>[radio.listening?"Engaged":"Disengaged"]</span></a><br>"
. += "Microphone: <a href='byond://?src=[UID()];rmictoggle=1'><span id='rmicstate'>[radio.broadcasting?"Engaged":"Disengaged"]</span></a><br>"
. += "Speaker: <a href='byond://?src=[UID()];rspktoggle=1'><span id='rspkstate'>[radio.listening?"Engaged":"Disengaged"]</span></a><br>"
. += "Frequency:"
. += "<a href='?src=[UID()];rfreq=-10'>-</a>"
. += "<a href='?src=[UID()];rfreq=-2'>-</a>"
. += "<a href='byond://?src=[UID()];rfreq=-10'>-</a>"
. += "<a href='byond://?src=[UID()];rfreq=-2'>-</a>"
. += "<span id='rfreq'>[format_frequency(radio.frequency)]</span>"
. += "<a href='?src=[UID()];rfreq=2'>+</a>"
. += "<a href='?src=[UID()];rfreq=10'>+</a><br>"
. += "<a href='byond://?src=[UID()];rfreq=2'>+</a>"
. += "<a href='byond://?src=[UID()];rfreq=10'>+</a><br>"
. += "</div>"
. += "</div>"
. += "<div class='wr'>"
. += "<div class='header'>Airtank</div>"
. += "<div class='links'>"
. += "<a href='?src=[UID()];toggle_airtank=1'>Toggle Internal Airtank Usage</a><br>"
. += "<a href='byond://?src=[UID()];toggle_airtank=1'>Toggle Internal Airtank Usage</a><br>"
. += "</div>"
. += "</div>"
. += "<div class='wr'>"
. += "<div class='header'>Permissions & Logging</div>"
. += "<div class='links'>"
. += "<a href='?src=[UID()];toggle_id_upload=1'><span id='t_id_upload'>[add_req_access?"L":"Unl"]ock ID upload panel</span></a><br>"
. += "<a href='?src=[UID()];toggle_maint_access=1'><span id='t_maint_access'>[maint_access?"Forbid":"Permit"] maintenance protocols</span></a><br>"
. += "<a href='?src=[UID()];dna_lock=1'>DNA-lock</a><br>"
. += "<a href='?src=[UID()];view_log=1'>View internal log</a><br>"
. += "<a href='?src=[UID()];change_name=1'>Change exosuit name</a><br>"
. += "<a href='byond://?src=[UID()];toggle_id_upload=1'><span id='t_id_upload'>[add_req_access?"L":"Unl"]ock ID upload panel</span></a><br>"
. += "<a href='byond://?src=[UID()];toggle_maint_access=1'><span id='t_maint_access'>[maint_access?"Forbid":"Permit"] maintenance protocols</span></a><br>"
. += "<a href='byond://?src=[UID()];dna_lock=1'>DNA-lock</a><br>"
. += "<a href='byond://?src=[UID()];view_log=1'>View internal log</a><br>"
. += "<a href='byond://?src=[UID()];change_name=1'>Change exosuit name</a><br>"
. += "</div>"
. += "</div>"
. += "<div id='equipment_menu'>[get_equipment_menu()]</div>"
. += "<hr>"
. += "<a href='?src=[UID()];eject=1'>Eject</a><br>"
. += "<a href='byond://?src=[UID()];eject=1'>Eject</a><br>"
/obj/mecha/proc/get_equipment_menu() //outputs mecha html equipment menu
. = ""
@@ -136,7 +136,7 @@
. += "<div class='header'>Equipment</div>"
. += "<div class='links'>"
for(var/obj/item/mecha_parts/mecha_equipment/W in equipment)
. += "[W.name] <a href='?src=[W.UID()];detach=1'>Detach</a><br>"
. += "[W.name] <a href='byond://?src=[W.UID()];detach=1'>Detach</a><br>"
. += "<b>Available equipment slots:</b> [max_equip-equipment.len]"
. += "</div></div>"
@@ -179,19 +179,19 @@
<body>
<h1>Following keycodes are present in this system:</h1>"}
for(var/a in operation_req_access)
output += "[get_access_desc(a)] - <a href='?src=[UID()];del_req_access=[a];user=\ref[user];id_card=\ref[id_card]'>Delete</a><br>"
output += "[get_access_desc(a)] - <a href='byond://?src=[UID()];del_req_access=[a];user=\ref[user];id_card=\ref[id_card]'>Delete</a><br>"
output += "<a href='?src=[UID()];del_all_req_access=1;user=\ref[user];id_card=\ref[id_card]'><br><b>Delete All</b></a><br>"
output += "<a href='byond://?src=[UID()];del_all_req_access=1;user=\ref[user];id_card=\ref[id_card]'><br><b>Delete All</b></a><br>"
output += "<hr><h1>Following keycodes were detected on portable device:</h1>"
for(var/a in id_card.access)
if(a in operation_req_access) continue
if(!get_access_desc(a))
continue //there's some strange access without a name
output += "[get_access_desc(a)] - <a href='?src=[UID()];add_req_access=[a];user=\ref[user];id_card=\ref[id_card]'>Add</a><br>"
output += "[get_access_desc(a)] - <a href='byond://?src=[UID()];add_req_access=[a];user=\ref[user];id_card=\ref[id_card]'>Add</a><br>"
output += "<a href='?src=[UID()];add_all_req_access=1;user=\ref[user];id_card=\ref[id_card]'><br><b>Add All</b></a><br>"
output += "<hr><a href='?src=[UID()];finish_req_access=1;user=\ref[user]'>Finish</a> <font color='red'>(Warning! The ID upload panel will be locked. It can be unlocked only through Exosuit Interface.)</font>"
output += "<a href='byond://?src=[UID()];add_all_req_access=1;user=\ref[user];id_card=\ref[id_card]'><br><b>Add All</b></a><br>"
output += "<hr><a href='byond://?src=[UID()];finish_req_access=1;user=\ref[user]'>Finish</a> <font color='red'>(Warning! The ID upload panel will be locked. It can be unlocked only through Exosuit Interface.)</font>"
output += "</body></html>"
user << browse(output, "window=exosuit_add_access")
onclose(user, "exosuit_add_access")
@@ -207,9 +207,9 @@
</style>
</head>
<body>
[add_req_access?"<a href='?src=[UID()];req_access=1;id_card=\ref[id_card];user=\ref[user]'>Edit operation keycodes</a>":null]
[maint_access?"<a href='?src=[UID()];maint_access=1;id_card=\ref[id_card];user=\ref[user]'>Initiate/Stop maintenance protocol</a>":null]
[(state>0) ?"<a href='?src=[UID()];set_internal_tank_valve=1;user=\ref[user]'>Set Cabin Air Pressure</a>":null]
[add_req_access?"<a href='byond://?src=[UID()];req_access=1;id_card=\ref[id_card];user=\ref[user]'>Edit operation keycodes</a>":null]
[maint_access?"<a href='byond://?src=[UID()];maint_access=1;id_card=\ref[id_card];user=\ref[user]'>Initiate/Stop maintenance protocol</a>":null]
[(state>0) ?"<a href='byond://?src=[UID()];set_internal_tank_valve=1;user=\ref[user]'>Set Cabin Air Pressure</a>":null]
</body>
</html>"}
user << browse(output, "window=exosuit_maint_console")
+1 -1
View File
@@ -165,7 +165,7 @@
output += "<b>Cargo Compartment Contents:</b><div style=\"margin-left: 15px;\">"
if(cargo.len)
for(var/obj/O in cargo)
output += "<a href='?src=[UID()];drop_from_cargo=\ref[O]'>Unload</a> : [O]<br>"
output += "<a href='byond://?src=[UID()];drop_from_cargo=\ref[O]'>Unload</a> : [O]<br>"
else
output += "Nothing"
output += "</div>"
@@ -75,7 +75,7 @@
var/area/A = get_area(location)
var/where = "[A.name] | [location.x], [location.y]"
var/whereLink = "<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[location.x];Y=[location.y];Z=[location.z]'>[where]</a>"
var/whereLink = "<A href='byond://?_src_=holder;adminplayerobservecoodjump=1;X=[location.x];Y=[location.y];Z=[location.z]'>[where]</a>"
if(carry && carry.my_atom)
if(carry.my_atom.fingerprintslast)
+3
View File
@@ -924,3 +924,6 @@ GLOBAL_DATUM_INIT(welding_sparks, /mutable_appearance, mutable_appearance('icons
/obj/item/proc/canStrip(mob/stripper, mob/owner)
SHOULD_BE_PURE(TRUE)
return !(flags & NODROP) && !(flags & ABSTRACT)
/obj/item/proc/should_stack_with(obj/item/other)
return type == other.type && name == other.name
+5 -5
View File
@@ -29,7 +29,7 @@
switch(get_area_type())
if(AREA_SPACE)
text += "<p>According to [src], you are now in <b>outer space</b>. Hold your breath.</p> \
<p><a href='?src=[UID()];create_area=1'>Mark this place as new area.</a></p>"
<p><a href='byond://?src=[UID()];create_area=1'>Mark this place as new area.</a></p>"
if(AREA_SPECIAL)
text += "<p>This place is not noted on [src].</p>"
return text
@@ -107,12 +107,12 @@
var/area/our_area = get_area(src)
if(get_area_type() == AREA_STATION)
. += "<p>According to [src], you are now in <b>\"[sanitize(our_area.name)]\"</b>.</p>"
. += "<p>You may <a href='?src=[UID()];edit_area=1'> move an amendment</a> to the drawing.</p>"
. += "<p>You may <a href='byond://?src=[UID()];edit_area=1'> move an amendment</a> to the drawing.</p>"
if(!viewing)
. += "<p><a href='?src=[UID()];view_blueprints=1'>View structural data</a></p>"
. += "<p><a href='byond://?src=[UID()];view_blueprints=1'>View structural data</a></p>"
else
. += "<p><a href='?src=[UID()];refresh=1'>Refresh structural data</a></p>"
. += "<p><a href='?src=[UID()];hide_blueprints=1'>Hide structural data</a></p>"
. += "<p><a href='byond://?src=[UID()];refresh=1'>Refresh structural data</a></p>"
. += "<p><a href='byond://?src=[UID()];hide_blueprints=1'>Hide structural data</a></p>"
var/datum/browser/popup = new(user, "blueprints", "[src]", 700, 500)
popup.set_content(.)
popup.open()
+32 -30
View File
@@ -51,22 +51,22 @@
current_drawtype += copytext(preset_message, preset_message_index + 1)
current_drawtype = uppertext(current_drawtype)
dat += "<center><h2>Currently selected: [current_drawtype]</h2><br>"
dat += "<a href='?src=[UID()];type=random_letter'>Random letter</a><a href='?src=[UID()];type=letter'>Pick letter</a><br />"
dat += "<a href='?src=[UID()];type=message'>Message</a>"
dat += "<a href='byond://?src=[UID()];type=random_letter'>Random letter</a><a href='byond://?src=[UID()];type=letter'>Pick letter</a><br />"
dat += "<a href='byond://?src=[UID()];type=message'>Message</a>"
dat += "<hr>"
dat += "<h3>Runes:</h3><br>"
dat += "<a href='?src=[UID()];type=random_rune'>Random rune</a>"
dat += "<a href='byond://?src=[UID()];type=random_rune'>Random rune</a>"
for(var/i = 1; i <= 8; i++)
dat += "<a href='?src=[UID()];type=rune[i]'>Rune [i]</a>"
dat += "<a href='byond://?src=[UID()];type=rune[i]'>Rune [i]</a>"
if(!((i + 1) % 3)) //3 buttons in a row
dat += "<br>"
dat += "<hr>"
graffiti.Find()
dat += "<h3>Graffiti:</h3><br>"
dat += "<a href='?src=[UID()];type=random_graffiti'>Random graffiti</a>"
dat += "<a href='byond://?src=[UID()];type=random_graffiti'>Random graffiti</a>"
var/c = 1
for(var/T in graffiti)
dat += "<a href='?src=[UID()];type=[T]'>[T]</a>"
dat += "<a href='byond://?src=[UID()];type=[T]'>[T]</a>"
if(!((c + 1) % 3)) //3 buttons in a row
dat += "<br>"
c++
@@ -136,7 +136,6 @@
busy = FALSE
/obj/item/toy/crayon/attack(mob/M, mob/user)
var/huffable = istype(src,/obj/item/toy/crayon/spraycan)
if(M == user)
if(ishuman(user))
var/mob/living/carbon/human/H = user
@@ -147,7 +146,7 @@
playsound(loc, 'sound/items/eatfood.ogg', 50, 0)
user.adjust_nutrition(5)
if(times_eaten < max_bites)
to_chat(user, "<span class='notice'>You take a [huffable ? "huff" : "bite"] of the [name]. Delicious!</span>")
to_chat(user, "<span class='notice'>You take a bite of the [name]. Delicious!</span>")
else
to_chat(user, "<span class='warning'>There is no more of [name] left!</span>")
qdel(src)
@@ -258,7 +257,7 @@
update_window(user)
/obj/item/toy/crayon/mime/update_window(mob/living/user as mob)
dat += "<center><span style='border:1px solid #161616; background-color: [colour];'>&nbsp;&nbsp;&nbsp;</span><a href='?src=[UID()];color=1'>Change color</a></center>"
dat += "<center><span style='border:1px solid #161616; background-color: [colour];'>&nbsp;&nbsp;&nbsp;</span><a href='byond://?src=[UID()];color=1'>Change color</a></center>"
..()
/obj/item/toy/crayon/mime/Topic(href,href_list)
@@ -284,7 +283,7 @@
update_window(user)
/obj/item/toy/crayon/rainbow/update_window(mob/living/user as mob)
dat += "<center><span style='border:1px solid #161616; background-color: [colour];'>&nbsp;&nbsp;&nbsp;</span><a href='?src=[UID()];color=1'>Change color</a></center>"
dat += "<center><span style='border:1px solid #161616; background-color: [colour];'>&nbsp;&nbsp;&nbsp;</span><a href='byond://?src=[UID()];color=1'>Change color</a></center>"
..()
/obj/item/toy/crayon/rainbow/Topic(href,href_list[])
@@ -302,7 +301,7 @@
/obj/item/toy/crayon/spraycan
name = "\improper Nanotrasen-brand Rapid Paint Applicator"
desc = "A metallic container containing tasty paint."
desc = "A metallic container containing spray paint."
icon_state = "spraycan_cap"
var/capped = TRUE
instant = TRUE
@@ -312,6 +311,9 @@
..()
update_icon()
/obj/item/toy/crayon/spraycan/attack(mob/M, mob/user)
return // To stop you from eating spraycans. It's TOO SILLY!
/obj/item/toy/crayon/spraycan/attack_self(mob/living/user)
var/choice = tgui_input_list(user, "Do you want to...", "Spraycan Options", list("Toggle Cap","Change Drawing", "Change Color"))
switch(choice)
@@ -329,26 +331,26 @@
if(!proximity)
return
if(capped)
to_chat(user, "<span class='warning'>You cannot spray [target] while the cap is still on!</span>")
return
else
if(iscarbon(target))
if(uses - 10 > 0)
uses = uses - 10
var/mob/living/carbon/C = target
user.visible_message("<span class='danger'> [user] sprays [src] into the face of [target]!</span>")
if(C.client)
C.EyeBlurry(6 SECONDS)
C.EyeBlind(2 SECONDS)
if(ishuman(target))
var/mob/living/carbon/human/H = target
if(H.check_eye_prot() <= 0) // no eye protection? ARGH IT BURNS.
H.Confused(6 SECONDS)
H.KnockDown(6 SECONDS)
H.lip_style = "spray_face"
H.lip_color = colour
H.update_body()
playsound(user, 'sound/effects/spray.ogg', 5, TRUE, 5)
..()
if(iscarbon(target))
if(uses - 10 > 0)
uses = uses - 10
var/mob/living/carbon/C = target
user.visible_message("<span class='danger'> [user] sprays [src] into the face of [target]!</span>")
if(C.client)
C.EyeBlurry(6 SECONDS)
C.EyeBlind(2 SECONDS)
if(ishuman(target))
var/mob/living/carbon/human/H = target
if(H.check_eye_prot() <= 0) // no eye protection? ARGH IT BURNS.
H.Confused(6 SECONDS)
H.KnockDown(6 SECONDS)
H.lip_style = "spray_face"
H.lip_color = colour
H.update_body()
playsound(user, 'sound/effects/spray.ogg', 5, TRUE, 5)
..()
/obj/item/toy/crayon/spraycan/update_icon_state()
icon_state = "spraycan[capped ? "_cap" : ""]"
+2 -2
View File
@@ -77,7 +77,7 @@
else
set_mode(CLAMPED_OFF)
visible_message("<span class='notice'>[user] attaches [src] to the cable!</span>")
message_admins("Power sink activated by [key_name_admin(user)] at ([x],[y],[z] - <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[x];Y=[y];Z=[z]'>JMP</a>)")
message_admins("Power sink activated by [key_name_admin(user)] at ([x],[y],[z] - <A href='byond://?_src_=holder;adminplayerobservecoodjump=1;X=[x];Y=[y];Z=[z]'>JMP</a>)")
log_game("Power sink activated by [key_name(user)] at ([x],[y],[z])")
else
to_chat(user, "Device must be placed over an exposed cable to attach to it.")
@@ -140,7 +140,7 @@
if(power_drained > max_power * 0.98)
if(!admins_warned)
admins_warned = TRUE
message_admins("Power sink at ([x],[y],[z] - <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[x];Y=[y];Z=[z]'>JMP</a>) is 95% full. Explosion imminent.")
message_admins("Power sink at ([x],[y],[z] - <A href='byond://?_src_=holder;adminplayerobservecoodjump=1;X=[x];Y=[y];Z=[z]'>JMP</a>) is 95% full. Explosion imminent.")
playsound(src, 'sound/effects/screech.ogg', 100, 1, 1)
if(power_drained >= max_power)
@@ -210,7 +210,7 @@
var/mob/mob = get_mob_by_key(src.fingerprintslast)
investigate_log("Bomb valve opened at [A.name] ([bombturf.x],[bombturf.y],[bombturf.z]) with [attached_device ? attached_device : "no device"], attached by [attacher_name]. Last touched by: [key_name(mob)]", INVESTIGATE_BOMB)
message_admins("Bomb valve opened at <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[bombturf.x];Y=[bombturf.y];Z=[bombturf.z]'>[A.name] (JMP)</a> with [attached_device ? attached_device : "no device"], attached by [attacher_name]. Last touched by: [key_name_admin(mob)]")
message_admins("Bomb valve opened at <A href='byond://?_src_=holder;adminplayerobservecoodjump=1;X=[bombturf.x];Y=[bombturf.y];Z=[bombturf.z]'>[A.name] (JMP)</a> with [attached_device ? attached_device : "no device"], attached by [attacher_name]. Last touched by: [key_name_admin(mob)]")
log_game("Bomb valve opened at [A.name] ([bombturf.x],[bombturf.y],[bombturf.z]) with [attached_device ? attached_device : "no device"], attached by [attacher_name]. Last touched by: [key_name(mob)]")
if(user)
add_attack_logs(user, src, "Bomb valve opened with [attached_device ? attached_device : "no device"], attached by [attacher_name]. Last touched by: [key_name(mob)]", ATKLOG_FEW)
@@ -34,7 +34,7 @@
A.UpdateButtons()
/obj/item/voice_changer/proc/set_voice(mob/user)
var/chosen_voice = input("What voice would you like to mimic? Leave this empty to use the voice on your ID card.", "Set Voice Changer", voice, user)
var/chosen_voice = tgui_input_text(user, "What voice would you like to mimic? Leave this empty to use the voice on your ID card.", "Set Voice Changer")
if(!chosen_voice)
voice = null
to_chat(user, "<span class='notice'>You are now mimicking the voice on your ID card.</span>")
+1 -1
View File
@@ -107,7 +107,7 @@
dat = {"<B>[src] is empty</B><BR>"}
else
dat = {"<b>Ingredients:</b><br>[dat]"}
dat += {"<hr><br> <a href='?src=[UID()];action=dispose'>Dispose ingredients!</a><br>"}
dat += {"<hr><br> <a href='byond://?src=[UID()];action=dispose'>Dispose ingredients!</a><br>"}
var/datum/browser/popup = new(user, name, name, 400, 400)
popup.set_content(dat)
+6 -6
View File
@@ -326,13 +326,13 @@
return
/obj/item/robot_parts/robot_suit/proc/Interact(mob/user)
var/t1 = "Designation: <A href='?src=[UID()];Name=1'>[(created_name ? "[created_name]" : "Default Cyborg")]</a><br>\n"
t1 += "Master AI: <A href='?src=[UID()];Master=1'>[(forced_ai ? "[forced_ai.name]" : "Automatic")]</a><br><br>\n"
var/t1 = "Designation: <A href='byond://?src=[UID()];Name=1'>[(created_name ? "[created_name]" : "Default Cyborg")]</a><br>\n"
t1 += "Master AI: <A href='byond://?src=[UID()];Master=1'>[(forced_ai ? "[forced_ai.name]" : "Automatic")]</a><br><br>\n"
t1 += "LawSync Port: <A href='?src=[UID()];Law=1'>[(lawsync ? "Open" : "Closed")]</a><br>\n"
t1 += "AI Connection Port: <A href='?src=[UID()];AI=1'>[(aisync ? "Open" : "Closed")]</a><br>\n"
t1 += "Servo Motor Functions: <A href='?src=[UID()];Loco=1'>[(locomotion ? "Unlocked" : "Locked")]</a><br>\n"
t1 += "Panel Lock: <A href='?src=[UID()];Panel=1'>[(panel_locked ? "Engaged" : "Disengaged")]</a><br>\n"
t1 += "LawSync Port: <A href='byond://?src=[UID()];Law=1'>[(lawsync ? "Open" : "Closed")]</a><br>\n"
t1 += "AI Connection Port: <A href='byond://?src=[UID()];AI=1'>[(aisync ? "Open" : "Closed")]</a><br>\n"
t1 += "Servo Motor Functions: <A href='byond://?src=[UID()];Loco=1'>[(locomotion ? "Unlocked" : "Locked")]</a><br>\n"
t1 += "Panel Lock: <A href='byond://?src=[UID()];Panel=1'>[(panel_locked ? "Engaged" : "Disengaged")]</a><br>\n"
var/datum/browser/popup = new(user, "robotdebug", "Cyborg Boot Debug", 310, 220)
popup.set_content(t1)
popup.open()
+4 -4
View File
@@ -154,7 +154,7 @@
if(istype(E, /datum/stack_recipe_list))
var/datum/stack_recipe_list/srl = E
t1 += "<a href='?src=[UID()];sublist=[i]'>[srl.title]</a>"
t1 += "<a href='byond://?src=[UID()];sublist=[i]'>[srl.title]</a>"
if(istype(E, /datum/stack_recipe))
var/datum/stack_recipe/R = E
@@ -169,7 +169,7 @@
title += "[R.title]"
title += " ([R.req_amount] [src.singular_name]\s)"
if(can_build)
t1 += "<A href='?src=[UID()];sublist=[recipes_sublist];make=[i]'>[title]</A> "
t1 += "<A href='byond://?src=[UID()];sublist=[recipes_sublist];make=[i]'>[title]</A> "
else
t1 += "[title]"
continue
@@ -180,9 +180,9 @@
var/list/multipliers = list(5, 10, 25)
for(var/n in multipliers)
if(max_multiplier >= n)
t1 += " <A href='?src=[UID()];make=[i];multiplier=[n]'>[n * R.res_amount]x</A>"
t1 += " <A href='byond://?src=[UID()];make=[i];multiplier=[n]'>[n * R.res_amount]x</A>"
if(!(max_multiplier in multipliers))
t1 += " <A href='?src=[UID()];make=[i];multiplier=[max_multiplier]'>[max_multiplier * R.res_amount]x</A>"
t1 += " <A href='byond://?src=[UID()];make=[i];multiplier=[max_multiplier]'>[max_multiplier * R.res_amount]x</A>"
var/datum/browser/popup = new(user, "stack", name, recipe_width, recipe_height)
popup.set_content(t1)
@@ -134,7 +134,7 @@
/datum/stack_recipe/dangerous
/datum/stack_recipe/dangerous/post_build(mob/user, obj/item/stack/S, obj/result)
var/turf/targ = get_turf(user)
message_admins("[title] made by [key_name_admin(user)](<A HREF='?_src_=holder;adminmoreinfo=\ref[user]'>?</A>) in [get_area(user)] [ADMIN_COORDJMP(targ)]!",0,1)
message_admins("[title] made by [key_name_admin(user)](<A href='byond://?_src_=holder;adminmoreinfo=\ref[user]'>?</A>) in [get_area(user)] [ADMIN_COORDJMP(targ)]!",0,1)
log_game("[title] made by [key_name_admin(user)] at [get_area(user)] [targ.x], [targ.y], [targ.z].")
..()
@@ -13,7 +13,7 @@
atmos_spawn_air(LINDA_SPAWN_HEAT | LINDA_SPAWN_TOXINS, 5)
user.visible_message("<span class='warning'>[user.name] sets the plasma tiles on fire!</span>", \
"<span class='warning'>You set the plasma tiles on fire!</span>")
message_admins("Plasma tiles ignited by [key_name_admin(user)](<A HREF='?_src_=holder;adminmoreinfo=\ref[user]'>?</A>) (<A HREF='?_src_=holder;adminplayerobservefollow=\ref[user]'>FLW</A>) in ([x],[y],[z] - <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[x];Y=[y];Z=[z]'>JMP</a>)",0,1)
message_admins("Plasma tiles ignited by [key_name_admin(user)](<A href='byond://?_src_=holder;adminmoreinfo=\ref[user]'>?</A>) (<A href='byond://?_src_=holder;adminplayerobservefollow=\ref[user]'>FLW</A>) in ([x],[y],[z] - <A href='byond://?_src_=holder;adminplayerobservecoodjump=1;X=[x];Y=[y];Z=[z]'>JMP</a>)",0,1)
log_game("Plasma tiles ignited by [key_name(user)] in ([x],[y],[z])")
investigate_log("was <font color='red'><b>ignited</b></font> by [key_name(user)]","atmos")
qdel(src)
@@ -79,7 +79,7 @@
target = AM
loc = null
message_admins("[key_name_admin(user)]([ADMIN_QUE(user,"?")]) ([ADMIN_FLW(user,"FLW")]) planted [src.name] on [target.name] at ([target.x],[target.y],[target.z] - <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[target.x];Y=[target.y];Z=[target.z]'>JMP</a>) with [det_time] second fuse",0,1)
message_admins("[key_name_admin(user)]([ADMIN_QUE(user,"?")]) ([ADMIN_FLW(user,"FLW")]) planted [src.name] on [target.name] at ([target.x],[target.y],[target.z] - <A href='byond://?_src_=holder;adminplayerobservecoodjump=1;X=[target.x];Y=[target.y];Z=[target.z]'>JMP</a>) with [det_time] second fuse",0,1)
log_game("[key_name(user)] planted [name] on [target.name] at ([target.x],[target.y],[target.z]) with [det_time] second fuse")
AddComponent(/datum/component/persistent_overlay, image_overlay, target)
@@ -88,7 +88,7 @@
addtimer(CALLBACK(src, PROC_REF(prime)), det_time SECONDS)
/obj/item/grenade/plastic/suicide_act(mob/user)
message_admins("[key_name_admin(user)]([ADMIN_QUE(user,"?")]) ([ADMIN_FLW(user,"FLW")]) suicided with [src.name] at ([user.x],[user.y],[user.z] - <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[user.x];Y=[user.y];Z=[user.z]'>JMP</a>)",0,1)
message_admins("[key_name_admin(user)]([ADMIN_QUE(user,"?")]) ([ADMIN_FLW(user,"FLW")]) suicided with [src.name] at ([user.x],[user.y],[user.z] - <A href='byond://?_src_=holder;adminplayerobservecoodjump=1;X=[user.x];Y=[user.y];Z=[user.z]'>JMP</a>)",0,1)
log_game("[key_name(user)] suicided with [name] at ([user.x],[user.y],[user.z])")
user.visible_message("<span class='suicide'>[user] activates [src] and holds it above [user.p_their()] head! It looks like [user.p_theyre()] going out with a bang!</span>")
var/message_say = "FOR NO RAISIN!"
@@ -293,9 +293,9 @@
var/mob/last = get_mob_by_ckey(nadeassembly.fingerprintslast)
var/turf/T = get_turf(src)
var/area/A = get_area(T)
message_admins("grenade primed by an assembly, attached by [key_name_admin(M)] and last touched by [key_name_admin(last)] ([nadeassembly.a_left.name] and [nadeassembly.a_right.name]) at <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[T.x];Y=[T.y];Z=[T.z]'>[A.name] (JMP)</a>. [contained]")
message_admins("grenade primed by an assembly, attached by [key_name_admin(M)] and last touched by [key_name_admin(last)] ([nadeassembly.a_left.name] and [nadeassembly.a_right.name]) at <A href='byond://?_src_=holder;adminplayerobservecoodjump=1;X=[T.x];Y=[T.y];Z=[T.z]'>[A.name] (JMP)</a>. [contained]")
log_game("grenade primed by an assembly, attached by [key_name(M)] and last touched by [key_name(last)] ([nadeassembly.a_left.name] and [nadeassembly.a_right.name]) at [A.name] ([T.x], [T.y], [T.z]) [contained]")
investigate_log("grenade primed by an assembly, attached by [key_name_admin(M)] and last touched by [key_name_admin(last)] ([nadeassembly.a_left.name] and [nadeassembly.a_right.name]) at <a href='?_src_=holder;adminplayerobservecoodjump=1;X=[T.x];Y=[T.y];Z=[T.z]'>[A.name] (JMP)</a>.", INVESTIGATE_BOMB)
investigate_log("grenade primed by an assembly, attached by [key_name_admin(M)] and last touched by [key_name_admin(last)] ([nadeassembly.a_left.name] and [nadeassembly.a_right.name]) at <a href='byond://?_src_=holder;adminplayerobservecoodjump=1;X=[T.x];Y=[T.y];Z=[T.z]'>[A.name] (JMP)</a>.", INVESTIGATE_BOMB)
add_attack_logs(last, src, "has armed for detonation", ATKLOG_FEW)
update_mob()
@@ -427,9 +427,9 @@
var/mob/last = get_mob_by_ckey(nadeassembly.fingerprintslast)
var/turf/T = get_turf(src)
var/area/A = get_area(T)
message_admins("grenade primed by an assembly, attached by [key_name_admin(M)] and last touched by [key_name_admin(last)] ([nadeassembly.a_left.name] and [nadeassembly.a_right.name]) at <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[T.x];Y=[T.y];Z=[T.z]'>[A.name] (JMP)</a>.")
message_admins("grenade primed by an assembly, attached by [key_name_admin(M)] and last touched by [key_name_admin(last)] ([nadeassembly.a_left.name] and [nadeassembly.a_right.name]) at <A href='byond://?_src_=holder;adminplayerobservecoodjump=1;X=[T.x];Y=[T.y];Z=[T.z]'>[A.name] (JMP)</a>.")
log_game("grenade primed by an assembly, attached by [key_name(M)] and last touched by [key_name(last)] ([nadeassembly.a_left.name] and [nadeassembly.a_right.name]) at [A.name] ([T.x], [T.y], [T.z])")
investigate_log("grenade primed by an assembly, attached by [key_name_admin(M)] and last touched by [key_name_admin(last)] ([nadeassembly.a_left.name] and [nadeassembly.a_right.name]) at <a href='?_src_=holder;adminplayerobservecoodjump=1;X=[T.x];Y=[T.y];Z=[T.z]'>[A.name] (JMP)</a>.", INVESTIGATE_BOMB)
investigate_log("grenade primed by an assembly, attached by [key_name_admin(M)] and last touched by [key_name_admin(last)] ([nadeassembly.a_left.name] and [nadeassembly.a_right.name]) at <a href='byond://?_src_=holder;adminplayerobservecoodjump=1;X=[T.x];Y=[T.y];Z=[T.z]'>[A.name] (JMP)</a>.", INVESTIGATE_BOMB)
add_attack_logs(last, src, "has armed for detonation", ATKLOG_FEW)
else
addtimer(CALLBACK(src, PROC_REF(prime)), det_time)
@@ -70,7 +70,7 @@
add_fingerprint(user)
var/turf/bombturf = get_turf(src)
var/area/A = get_area(bombturf)
message_admins("[key_name_admin(usr)] has primed a [name] for detonation at <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[bombturf.x];Y=[bombturf.y];Z=[bombturf.z]'>[A.name] (JMP)</a>")
message_admins("[key_name_admin(usr)] has primed a [name] for detonation at <A href='byond://?_src_=holder;adminplayerobservecoodjump=1;X=[bombturf.x];Y=[bombturf.y];Z=[bombturf.z]'>[A.name] (JMP)</a>")
log_game("[key_name(usr)] has primed a [name] for detonation at [A.name] ([bombturf.x],[bombturf.y],[bombturf.z])")
investigate_log("[key_name(usr)] has primed a [name] for detonation at [A.name] ([bombturf.x],[bombturf.y],[bombturf.z])", INVESTIGATE_BOMB)
add_attack_logs(user, src, "has primed for detonation", ATKLOG_FEW)
@@ -74,7 +74,7 @@
qdel(W)
var/obj/singularity/singulo = new /obj/singularity(get_turf(user))
singulo.energy = 300 //To give it a small boost
message_admins("[key_name_admin(user)] detonated a bag of holding <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[x];Y=[y];Z=[z]'>JMP</a>)")
message_admins("[key_name_admin(user)] detonated a bag of holding <A href='byond://?_src_=holder;adminplayerobservecoodjump=1;X=[x];Y=[y];Z=[z]'>JMP</a>)")
log_game("[key_name(user)] detonated a bag of holding")
qdel(src)
else
@@ -206,7 +206,13 @@
max_combined_w_class = 40 //Doesn't matter what this is, so long as it's more or equal to storage_slots * plants.w_class
max_w_class = WEIGHT_CLASS_NORMAL
w_class = WEIGHT_CLASS_TINY
can_hold = list(/obj/item/food/snacks/grown,/obj/item/seeds,/obj/item/grown,/obj/item/food/snacks/grown/ash_flora,/obj/item/food/snacks/honeycomb)
can_hold = list(
/obj/item/seeds,
/obj/item/unsorted_seeds,
/obj/item/food/snacks/grown,
/obj/item/grown,
/obj/item/food/snacks/grown/ash_flora,
/obj/item/food/snacks/honeycomb)
resistance_flags = FLAMMABLE
/obj/item/storage/bag/plants/portaseeder
@@ -238,6 +244,23 @@
if(Adjacent(user) && ishuman(user) && !user.incapacitated(FALSE, TRUE))
process_plants(user)
/obj/item/storage/bag/plants/seed_sorting_tray
name = "seed sorting tray"
desc = "A simple wooden tray with compartments for manually sorting seeds. It's better than nothing, but a plant analyzer would be more effective."
icon = 'icons/obj/hydroponics/equipment.dmi'
icon_state = "seed_sorting_tray"
can_hold = list(
/obj/item/seeds,
/obj/item/unsorted_seeds)
/obj/item/storage/bag/plants/seed_sorting_tray/attack_self(mob/user)
var/depth = 0
for(var/obj/item/unsorted_seeds/unsorted in src)
if(!do_after(user, 1 SECONDS, TRUE, src, must_be_held = TRUE))
break
depth = min(8, depth + 1)
unsorted.sort(depth)
// -----------------------------
// Sheet Snatcher
// -----------------------------
@@ -335,7 +335,7 @@
for(var/obj/item/I in contents)
var/found = FALSE
for(var/datum/numbered_display/ND in numbered_contents)
if(ND.sample_object.type == I.type && ND.sample_object.name == I.name)
if(ND.sample_object.should_stack_with(I))
ND.number++
found = TRUE
break
@@ -247,7 +247,7 @@
var/pressure = air_contents.return_pressure()
if(pressure > TANK_FRAGMENT_PRESSURE)
if(!istype(loc,/obj/item/transfer_valve))
message_admins("Explosive tank rupture! last key to touch the tank was [fingerprintslast] (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[x];Y=[y];Z=[z]'>JMP</a>)")
message_admins("Explosive tank rupture! last key to touch the tank was [fingerprintslast] (<A href='byond://?_src_=holder;adminplayerobservecoodjump=1;X=[x];Y=[y];Z=[z]'>JMP</a>)")
log_game("Explosive tank rupture! last key to touch the tank was [fingerprintslast] at [x], [y], [z]")
// to_chat(world, "<span class='notice'>[x],[y] tank is exploding: [pressure] kPa</span>")
//Give the gas a chance to build up more pressure through reacting
@@ -42,6 +42,14 @@ GLOBAL_LIST_EMPTY(tendrils)
new /obj/structure/closet/crate/necropolis/tendril(loc)
return ..()
/obj/structure/spawner/lavaland/attacked_by(obj/item/I, mob/living/user)
. = ..()
SEND_SIGNAL(src, COMSIG_SPAWNER_SET_TARGET, user)
/obj/structure/spawner/lavaland/bullet_act(obj/item/projectile/P)
. = ..()
if(P.firer)
SEND_SIGNAL(src, COMSIG_SPAWNER_SET_TARGET, P.firer)
/obj/structure/spawner/lavaland/Destroy()
GLOB.tendrils -= src
@@ -178,7 +178,7 @@
/obj/structure/mineral_door/transparent/plasma/attackby(obj/item/W, mob/user)
if(W.get_heat())
message_admins("Plasma mineral door ignited by [key_name_admin(user)] in ([x], [y], [z] - <a href='?_src_=holder;adminplayerobservecoodjump=1;X=[x];Y=[y];Z=[z]'>JMP</a>)", 0, 1)
message_admins("Plasma mineral door ignited by [key_name_admin(user)] in ([x], [y], [z] - <a href='byond://?_src_=holder;adminplayerobservecoodjump=1;X=[x];Y=[y];Z=[z]'>JMP</a>)", 0, 1)
log_game("Plasma mineral door ignited by [key_name(user)] in ([x], [y], [z])")
investigate_log("was <font color='red'><b>ignited</b></font> by [key_name(user)]","atmos")
TemperatureAct(100)
+2 -2
View File
@@ -36,8 +36,8 @@
/obj/structure/noticeboard/attack_hand(user as mob)
var/dat = "<b>Noticeboard</b><br>"
for(var/obj/item/paper/P in src)
dat += "<a href='?src=[UID()];read=\ref[P]'>[P.name]</a> <a href='?src=[UID()];write=\ref[P]'>Write</a> <a href='?src=[UID()];remove=\ref[P]'>Remove</a><br>"
user << browse("<meta charset='utf-8'><head><title>Notices</title></head>[dat]","window=noticeboard")
dat += "<a href='byond://?src=[UID()];read=\ref[P]'>[P.name]</a> <a href='byond://?src=[UID()];write=\ref[P]'>Write</a> <a href='byond://?src=[UID()];remove=\ref[P]'>Remove</a><br>"
user << browse("<!DOCTYPE html><meta charset='utf-8'><head><title>Notices</title></head>[dat]","window=noticeboard")
onclose(user, "noticeboard")
/obj/structure/noticeboard/deconstruct(disassembled = TRUE)
+1 -1
View File
@@ -357,7 +357,7 @@ GLOBAL_LIST_EMPTY(safes)
drill.atom_say("Security spotted. Nanites deployed. Give them <b>hell.</b>")
driller.apply_status_effect(STATUS_EFFECT_DRILL_PAYBACK, src)
drill.song.start_playing(driller)
notify_ghosts("Security assault in progress in [get_area(src)]!", enter_link="<a href=?src=[UID()];follow=1>(Click to jump to!)</a>", source = src, action = NOTIFY_FOLLOW)
notify_ghosts("Security assault in progress in [get_area(src)]!", enter_link="<a href=byond://?src=[UID()];follow=1>(Click to jump to!)</a>", source = src, action = NOTIFY_FOLLOW)
for(var/mob/dead/observer/O in GLOB.player_list)
O.overlay_fullscreen("payback", /atom/movable/screen/fullscreen/payback, 0)
addtimer(CALLBACK(src, PROC_REF(ghost_payback_phase_2)), 2.7 SECONDS)
@@ -37,7 +37,7 @@
/turf/simulated/floor/mineral/plasma/attackby(obj/item/W, mob/user, params)
if(W.get_heat() > 300)//If the temperature of the object is over 300, then ignite
message_admins("Plasma flooring was ignited by [key_name_admin(user)]([ADMIN_QUE(user,"?")]) ([ADMIN_FLW(user,"FLW")]) in ([x],[y],[z] - <a href='?_src_=holder;adminplayerobservecoodjump=1;X=[x];Y=[y];Z=[z]'>JMP</a>)",0,1)
message_admins("Plasma flooring was ignited by [key_name_admin(user)]([ADMIN_QUE(user,"?")]) ([ADMIN_FLW(user,"FLW")]) in ([x],[y],[z] - <a href='byond://?_src_=holder;adminplayerobservecoodjump=1;X=[x];Y=[y];Z=[z]'>JMP</a>)",0,1)
log_game("Plasma flooring was <b>ignited by [key_name(user)] in ([x],[y],[z])")
investigate_log("was <font color='red'><b>ignited</b></font> by [key_name(user)]","atmos")
ignite(W.get_heat())
@@ -50,7 +50,7 @@
"<span class='danger'>[src] disintegrates into a cloud of plasma!</span>",\
"<span class='warning'>You hear a 'whoompf' and a roar.</span>")
ignite(2500) //Big enough to ignite
message_admins("Plasma wall ignited by [key_name_admin(user)] in ([x], [y], [z] - <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[x];Y=[y];Z=[z]'>JMP</a>)",0,1)
message_admins("Plasma wall ignited by [key_name_admin(user)] in ([x], [y], [z] - <A href='byond://?_src_=holder;adminplayerobservecoodjump=1;X=[x];Y=[y];Z=[z]'>JMP</a>)",0,1)
log_game("Plasma wall ignited by [key_name(user)] in ([x], [y], [z])")
investigate_log("was <font color='red'><b>ignited</b></font> by [key_name(user)]","atmos")
+2 -2
View File
@@ -548,9 +548,9 @@
if(!is_mining_level(z))
notify_admins = 1
if(!triggered_by_explosion)
message_admins("[key_name_admin(user)] has triggered a gibtonite deposit reaction at <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[bombturf.x];Y=[bombturf.y];Z=[bombturf.z]'>[A.name] (JMP)</a>.")
message_admins("[key_name_admin(user)] has triggered a gibtonite deposit reaction at <A href='byond://?_src_=holder;adminplayerobservecoodjump=1;X=[bombturf.x];Y=[bombturf.y];Z=[bombturf.z]'>[A.name] (JMP)</a>.")
else
message_admins("An explosion has triggered a gibtonite deposit reaction at <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[bombturf.x];Y=[bombturf.y];Z=[bombturf.z]'>[A.name] (JMP)</a>.")
message_admins("An explosion has triggered a gibtonite deposit reaction at <A href='byond://?_src_=holder;adminplayerobservecoodjump=1;X=[bombturf.x];Y=[bombturf.y];Z=[bombturf.z]'>[A.name] (JMP)</a>.")
if(!triggered_by_explosion)
log_game("[key_name(user)] has triggered a gibtonite deposit reaction at [A.name] ([A.x], [A.y], [A.z]).")
+2 -2
View File
@@ -108,7 +108,7 @@
/turf/simulated/wall/mineral/plasma/attackby(obj/item/W, mob/user)
if(W.get_heat() > 300)//If the temperature of the object is over 300, then ignite
message_admins("Plasma wall ignited by [key_name_admin(user)] in ([x], [y], [z] - <a href='?_src_=holder;adminplayerobservecoodjump=1;X=[x];Y=[y];Z=[z]'>JMP</a>)",0,1)
message_admins("Plasma wall ignited by [key_name_admin(user)] in ([x], [y], [z] - <a href='byond://?_src_=holder;adminplayerobservecoodjump=1;X=[x];Y=[y];Z=[z]'>JMP</a>)",0,1)
log_game("Plasma wall ignited by [key_name(user)] in ([x], [y], [z])")
investigate_log("was <font color='red'><b>ignited</b></font> by [key_name(user)]","atmos")
ignite(W.get_heat())
@@ -121,7 +121,7 @@
user.visible_message("<span class='danger'>[user] sets [src] on fire!</span>",\
"<span class='danger'>[src] disintegrates into a cloud of plasma!</span>",\
"<span class='warning'>You hear a 'whoompf' and a roar.</span>")
message_admins("Plasma wall ignited by [key_name_admin(user)] in ([x], [y], [z] - <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[x];Y=[y];Z=[z]'>JMP</a>)",0,1)
message_admins("Plasma wall ignited by [key_name_admin(user)] in ([x], [y], [z] - <A href='byond://?_src_=holder;adminplayerobservecoodjump=1;X=[x];Y=[y];Z=[z]'>JMP</a>)",0,1)
log_game("Plasma wall ignited by [key_name(user)] in ([x], [y], [z])")
investigate_log("was <font color='red'><b>ignited</b></font> by [key_name(user)]","atmos")
+1 -1
View File
@@ -38,7 +38,7 @@
lines += output_players.Join(", ") // Turn players into a comma separated list
if(check_rights(R_ADMIN, FALSE))
lines += "Click <a href='?_src_=holder;who_advanced=1'>here</a> for detailed (old) who."
lines += "Click <a href='byond://?_src_=holder;who_advanced=1'>here</a> for detailed (old) who."
var/msg = lines.Join("\n")
+1 -1
View File
@@ -132,7 +132,7 @@
var/last_editor = query_memoshow.item[4]
output += "<span class='memo'>Memo by <span class='prefix'>[ckey]</span> on [timestamp]"
if(last_editor)
output += "<br><span class='memoedit'>Last edit by [last_editor] <A href='?_src_=holder;memoeditlist=[ckey]'>(Click here to see edit log)</A></span>"
output += "<br><span class='memoedit'>Last edit by [last_editor] <A href='byond://?_src_=holder;memoeditlist=[ckey]'>(Click here to see edit log)</A></span>"
output += "<br>[memotext]</span><br>"
if(output)
to_chat(src, output)
+1
View File
@@ -240,6 +240,7 @@ GLOBAL_LIST_INIT(admin_verbs_maintainer, list(
/client/proc/vv_by_ref, // This allows you to lookup **ANYTHING** in the server memory by spamming refs. Locked for security.
/client/proc/cinematic, // This will break everyone's screens in the round. Dont use this for adminbus.
/client/proc/throw_runtime, // Do I even need to explain why this is locked?
/client/proc/allow_browser_inspect, // XSS prevention
))
GLOBAL_LIST_INIT(view_runtimes_verbs, list(
/client/proc/view_runtimes,
+86 -86
View File
@@ -82,33 +82,33 @@ GLOBAL_VAR_INIT(nologevent, 0)
if(M.client)
body += " played by <b>[M.client]</b> "
if(check_rights(R_PERMISSIONS, 0))
body += "\[<A href='?_src_=holder;editrights=rank;ckey=[M.ckey]'>[M.client.holder ? M.client.holder.rank : "Player"]</A>\] "
body += "\[<A href='byond://?_src_=holder;editrights=rank;ckey=[M.ckey]'>[M.client.holder ? M.client.holder.rank : "Player"]</A>\] "
else
body += "\[[M.client.holder ? M.client.holder.rank : "Player"]\] "
body += "\[<A href='?_src_=holder;getplaytimewindow=[M.UID()]'>" + M.client.get_exp_type(EXP_TYPE_CREW) + " as [EXP_TYPE_CREW]</a>\]"
body += "\[<A href='byond://?_src_=holder;getplaytimewindow=[M.UID()]'>" + M.client.get_exp_type(EXP_TYPE_CREW) + " as [EXP_TYPE_CREW]</a>\]"
body += "<br>BYOND account registration date: [M.client.byondacc_date || "ERROR"] [M.client.byondacc_age <= GLOB.configuration.general.byond_account_age_threshold ? "<b>" : ""]([M.client.byondacc_age] days old)[M.client.byondacc_age <= GLOB.configuration.general.byond_account_age_threshold ? "</b>" : ""]"
body += "<br>BYOND client version: [M.client.byond_version].[M.client.byond_build]"
body += "<br>Global Ban DB Lookup: [GLOB.configuration.url.centcom_ban_db_url ? "<a href='?_src_=holder;open_ccbdb=[M.client.ckey]'>Lookup</a>" : "<i>Disabled</i>"]"
body += "<br>Global Ban DB Lookup: [GLOB.configuration.url.centcom_ban_db_url ? "<a href='byond://?_src_=holder;open_ccbdb=[M.client.ckey]'>Lookup</a>" : "<i>Disabled</i>"]"
body += "<br>"
if(isnewplayer(M))
body += " <B>Hasn't Entered Game</B> "
else
body += " \[<A href='?_src_=holder;revive=[M.UID()]'>Heal</A>\] "
body += " \[<A href='byond://?_src_=holder;revive=[M.UID()]'>Heal</A>\] "
body += "<br><br>\[ "
body += "<a href='?_src_=holder;open_logging_view=[M.UID()];'>LOGS</a> - "
body += "<a href='?_src_=vars;Vars=[M.UID()]'>VV</a> - "
body += "<a href='byond://?_src_=holder;open_logging_view=[M.UID()];'>LOGS</a> - "
body += "<a href='byond://?_src_=vars;Vars=[M.UID()]'>VV</a> - "
body += "[ADMIN_TP(M,"TP")] - "
if(M.client)
body += "<a href='?src=[usr.UID()];priv_msg=[M.client.ckey]'>PM</a> - "
body += "<a href='byond://?src=[usr.UID()];priv_msg=[M.client.ckey]'>PM</a> - "
body += "[ADMIN_SM(M,"SM")] - "
if(ishuman(M) && M.mind)
body += "<a href='?_src_=holder;HeadsetMessage=[M.UID()]'>HM</a> - "
body += "<a href='byond://?_src_=holder;HeadsetMessage=[M.UID()]'>HM</a> - "
body += "[admin_jump_link(M)] - "
body += "<a href='?_src_=holder;adminalert=[M.UID()]'>SEND ALERT</a>\]</b><br>"
body += "<a href='byond://?_src_=holder;adminalert=[M.UID()]'>SEND ALERT</a>\]</b><br>"
body += "<b>Mob type:</b> [M.type]<br>"
if(M.client)
if(M.client.related_accounts_cid.len)
@@ -119,56 +119,56 @@ GLOBAL_VAR_INIT(nologevent, 0)
if(M.ckey)
body += "<b>Enabled AntagHUD</b>: [M.has_ahudded() ? "<b><font color='red'>TRUE</font></b>" : "false"]<br>"
body += "<b>Roundstart observer</b>: [M.is_roundstart_observer() ? "<b>true</b>" : "false"]<br>"
body += "<A href='?_src_=holder;boot2=[M.UID()]'>Kick</A> | "
body += "<A href='?_src_=holder;newban=[M.UID()];dbbanaddckey=[M.ckey]'>Ban</A> | "
body += "<A href='?_src_=holder;jobban2=[M.UID()];dbbanaddckey=[M.ckey]'>Jobban</A> | "
body += "<A href='?_src_=holder;shownoteckey=[M.ckey]'>Notes</A> | "
body += "<A href='byond://?_src_=holder;boot2=[M.UID()]'>Kick</A> | "
body += "<A href='byond://?_src_=holder;newban=[M.UID()];dbbanaddckey=[M.ckey]'>Ban</A> | "
body += "<A href='byond://?_src_=holder;jobban2=[M.UID()];dbbanaddckey=[M.ckey]'>Jobban</A> | "
body += "<A href='byond://?_src_=holder;shownoteckey=[M.ckey]'>Notes</A> | "
if(GLOB.configuration.url.forum_playerinfo_url)
body += "<A href='?_src_=holder;webtools=[M.ckey]'>WebInfo</A> | "
body += "<A href='byond://?_src_=holder;webtools=[M.ckey]'>WebInfo</A> | "
if(M.client)
if(M.client.watchlisted)
body += "<A href='?_src_=holder;watchremove=[M.ckey]'>Remove from Watchlist</A> | "
body += "<A href='?_src_=holder;watchedit=[M.ckey]'>Edit Watchlist Reason</A> "
body += "<A href='byond://?_src_=holder;watchremove=[M.ckey]'>Remove from Watchlist</A> | "
body += "<A href='byond://?_src_=holder;watchedit=[M.ckey]'>Edit Watchlist Reason</A> "
else
body += "<A href='?_src_=holder;watchadd=[M.ckey]'>Add to Watchlist</A> "
body += "<A href='byond://?_src_=holder;watchadd=[M.ckey]'>Add to Watchlist</A> "
body += "| <A href='?_src_=holder;sendtoprison=[M.UID()]'>Prison</A> | "
body += "\ <A href='?_src_=holder;sendbacktolobby=[M.UID()]'>Send back to Lobby</A> | "
body += "\ <A href='?_src_=holder;eraseflavortext=[M.UID()]'>Erase Flavor Text</A> | "
body += "\ <A href='?_src_=holder;userandomname=[M.UID()]'>Use Random Name</A> | "
body += "| <A href='byond://?_src_=holder;sendtoprison=[M.UID()]'>Prison</A> | "
body += "\ <A href='byond://?_src_=holder;sendbacktolobby=[M.UID()]'>Send back to Lobby</A> | "
body += "\ <A href='byond://?_src_=holder;eraseflavortext=[M.UID()]'>Erase Flavor Text</A> | "
body += "\ <A href='byond://?_src_=holder;userandomname=[M.UID()]'>Use Random Name</A> | "
body += {"<br><b>Mute: </b>
\[<A href='?_src_=holder;mute=[M.UID()];mute_type=[MUTE_IC]'><font color='[check_mute(M.client.ckey, MUTE_IC) ? "red" : "#6685f5"]'>IC</font></a> |
<A href='?_src_=holder;mute=[M.UID()];mute_type=[MUTE_OOC]'><font color='[check_mute(M.client.ckey, MUTE_OOC) ? "red" : "#6685f5"]'>OOC</font></a> |
<A href='?_src_=holder;mute=[M.UID()];mute_type=[MUTE_PRAY]'><font color='[check_mute(M.client.ckey, MUTE_PRAY) ? "red" : "#6685f5"]'>PRAY</font></a> |
<A href='?_src_=holder;mute=[M.UID()];mute_type=[MUTE_ADMINHELP]'><font color='[check_mute(M.client.ckey, MUTE_ADMINHELP) ? "red" : "#6685f5"]'>ADMINHELP</font></a> |
<A href='?_src_=holder;mute=[M.UID()];mute_type=[MUTE_DEADCHAT]'><font color='[check_mute(M.client.ckey, MUTE_DEADCHAT) ?" red" : "#6685f5"]'>DEADCHAT</font></a> |
<A href='?_src_=holder;mute=[M.UID()];mute_type=[MUTE_EMOTE]'><font color='[check_mute(M.client.ckey, MUTE_EMOTE) ?" red" : "#6685f5"]'>EMOTE</font></a>]
(<A href='?_src_=holder;mute=[M.UID()];mute_type=[MUTE_ALL]'><font color='[check_mute(M.client.ckey, MUTE_ALL) ? "red" : "#6685f5"]'>toggle all</font></a>)
\[<A href='byond://?_src_=holder;mute=[M.UID()];mute_type=[MUTE_IC]'><font color='[check_mute(M.client.ckey, MUTE_IC) ? "red" : "#6685f5"]'>IC</font></a> |
<A href='byond://?_src_=holder;mute=[M.UID()];mute_type=[MUTE_OOC]'><font color='[check_mute(M.client.ckey, MUTE_OOC) ? "red" : "#6685f5"]'>OOC</font></a> |
<A href='byond://?_src_=holder;mute=[M.UID()];mute_type=[MUTE_PRAY]'><font color='[check_mute(M.client.ckey, MUTE_PRAY) ? "red" : "#6685f5"]'>PRAY</font></a> |
<A href='byond://?_src_=holder;mute=[M.UID()];mute_type=[MUTE_ADMINHELP]'><font color='[check_mute(M.client.ckey, MUTE_ADMINHELP) ? "red" : "#6685f5"]'>ADMINHELP</font></a> |
<A href='byond://?_src_=holder;mute=[M.UID()];mute_type=[MUTE_DEADCHAT]'><font color='[check_mute(M.client.ckey, MUTE_DEADCHAT) ?" red" : "#6685f5"]'>DEADCHAT</font></a> |
<A href='byond://?_src_=holder;mute=[M.UID()];mute_type=[MUTE_EMOTE]'><font color='[check_mute(M.client.ckey, MUTE_EMOTE) ?" red" : "#6685f5"]'>EMOTE</font></a>]
(<A href='byond://?_src_=holder;mute=[M.UID()];mute_type=[MUTE_ALL]'><font color='[check_mute(M.client.ckey, MUTE_ALL) ? "red" : "#6685f5"]'>toggle all</font></a>)
"}
var/jumptoeye = ""
if(isAI(M))
var/mob/living/silicon/ai/A = M
if(A.client && A.eyeobj) // No point following clientless AI eyes
jumptoeye = " <b>(<A href='?_src_=holder;jumpto=[A.eyeobj.UID()]'>Eye</A>)</b>"
jumptoeye = " <b>(<A href='byond://?_src_=holder;jumpto=[A.eyeobj.UID()]'>Eye</A>)</b>"
body += {"<br><br>
<A href='?_src_=holder;jumpto=[M.UID()]'><b>Jump to</b></A>[jumptoeye] |
<A href='?_src_=holder;getmob=[M.UID()]'>Get</A> |
<A href='?_src_=holder;sendmob=[M.UID()]'>Send To</A>
<A href='byond://?_src_=holder;jumpto=[M.UID()]'><b>Jump to</b></A>[jumptoeye] |
<A href='byond://?_src_=holder;getmob=[M.UID()]'>Get</A> |
<A href='byond://?_src_=holder;sendmob=[M.UID()]'>Send To</A>
<br><br>
[check_rights(R_ADMIN,0) ? "[ADMIN_TP(M,"Traitor panel")] | " : "" ]
<A href='?_src_=holder;narrateto=[M.UID()]'>Narrate to</A> |
<A href='byond://?_src_=holder;narrateto=[M.UID()]'>Narrate to</A> |
[ADMIN_SM(M,"Subtle message")]
"}
if(check_rights(R_EVENT, 0))
body += {" | <A href='?_src_=holder;Bless=[M.UID()]'>Bless</A> | <A href='?_src_=holder;Smite=[M.UID()]'>Smite</A>"}
body += {" | <A href='byond://?_src_=holder;Bless=[M.UID()]'>Bless</A> | <A href='byond://?_src_=holder;Smite=[M.UID()]'>Smite</A>"}
if(isLivingSSD(M))
if(istype(M.loc, /obj/machinery/cryopod))
body += {" | <A href='?_src_=holder;cryossd=[M.UID()]'>De-Spawn</A> "}
body += {" | <A href='byond://?_src_=holder;cryossd=[M.UID()]'>De-Spawn</A> "}
else
body += {" | <A href='?_src_=holder;cryossd=[M.UID()]'>Cryo</A> "}
body += {" | <A href='byond://?_src_=holder;cryossd=[M.UID()]'>Cryo</A> "}
if(M.client)
if(!isnewplayer(M))
@@ -180,38 +180,38 @@ GLOBAL_VAR_INIT(nologevent, 0)
if(issmall(M))
body += "<B>Monkeyized</B> | "
else
body += "<A href='?_src_=holder;monkeyone=[M.UID()]'>Monkeyize</A> | "
body += "<A href='byond://?_src_=holder;monkeyone=[M.UID()]'>Monkeyize</A> | "
//Corgi
if(iscorgi(M))
body += "<B>Corgized</B> | "
else
body += "<A href='?_src_=holder;corgione=[M.UID()]'>Corgize</A> | "
body += "<A href='byond://?_src_=holder;corgione=[M.UID()]'>Corgize</A> | "
//AI / Cyborg
if(isAI(M))
body += "<B>Is an AI</B> "
else if(ishuman(M))
body += {"<A href='?_src_=holder;makeai=[M.UID()]'>Make AI</A> |
<A href='?_src_=holder;makerobot=[M.UID()]'>Make Robot</A> |
<A href='?_src_=holder;makealien=[M.UID()]'>Make Alien</A> |
<A href='?_src_=holder;makeslime=[M.UID()]'>Make Slime</A> |
<A href='?_src_=holder;makesuper=[M.UID()]'>Make Superhero</A>
body += {"<A href='byond://?_src_=holder;makeai=[M.UID()]'>Make AI</A> |
<A href='byond://?_src_=holder;makerobot=[M.UID()]'>Make Robot</A> |
<A href='byond://?_src_=holder;makealien=[M.UID()]'>Make Alien</A> |
<A href='byond://?_src_=holder;makeslime=[M.UID()]'>Make Slime</A> |
<A href='byond://?_src_=holder;makesuper=[M.UID()]'>Make Superhero</A>
"}
//Simple Animals
if(isanimal(M))
body += "<A href='?_src_=holder;makeanimal=[M.UID()]'>Re-Animalize</A> | "
body += "<A href='byond://?_src_=holder;makeanimal=[M.UID()]'>Re-Animalize</A> | "
else
body += "<A href='?_src_=holder;makeanimal=[M.UID()]'>Animalize</A> | "
body += "<A href='byond://?_src_=holder;makeanimal=[M.UID()]'>Animalize</A> | "
if(isobserver(M))
body += "<A href='?_src_=holder;incarn_ghost=[M.UID()]'>Re-incarnate</a> | "
body += "<A href='byond://?_src_=holder;incarn_ghost=[M.UID()]'>Re-incarnate</a> | "
if(ispAI(M))
body += "<B>Is a pAI</B> "
else
body += "<A href='?_src_=holder;makePAI=[M.UID()]'>Make pAI</A> | "
body += "<A href='byond://?_src_=holder;makePAI=[M.UID()]'>Make pAI</A> | "
// DNA2 - Admin Hax
if(M.dna && iscarbon(M))
@@ -226,7 +226,7 @@ GLOBAL_VAR_INIT(nologevent, 0)
if(bname)
var/bstate=M.dna.GetSEState(block)
var/bcolor="[(bstate)?"#006600":"#ff0000"]"
body += "<A href='?_src_=holder;togmutate=[M.UID()];block=[block]' style='color:[bcolor];'>[bname]</A><sub>[block]</sub>"
body += "<A href='byond://?_src_=holder;togmutate=[M.UID()];block=[block]' style='color:[bcolor];'>[bname]</A><sub>[block]</sub>"
else
body += "[block]"
body+="</td>"
@@ -234,42 +234,42 @@ GLOBAL_VAR_INIT(nologevent, 0)
body += {"<br><br>
<b>Rudimentary transformation:</b><font size=2><br>These transformations only create a new mob type and copy stuff over. They do not take into account MMIs and similar mob-specific things. The buttons in 'Transformations' are preferred, when possible.</font><br>
<A href='?_src_=holder;simplemake=observer;mob=[M.UID()]'>Observer</A> |
\[ Alien: <A href='?_src_=holder;simplemake=drone;mob=[M.UID()]'>Drone</A>,
<A href='?_src_=holder;simplemake=hunter;mob=[M.UID()]'>Hunter</A>,
<A href='?_src_=holder;simplemake=queen;mob=[M.UID()]'>Queen</A>,
<A href='?_src_=holder;simplemake=sentinel;mob=[M.UID()]'>Sentinel</A>,
<A href='?_src_=holder;simplemake=larva;mob=[M.UID()]'>Larva</A> \]
<A href='?_src_=holder;simplemake=human;mob=[M.UID()]'>Human</A>
\[ slime: <A href='?_src_=holder;simplemake=slime;mob=[M.UID()]'>Baby</A>,
<A href='?_src_=holder;simplemake=adultslime;mob=[M.UID()]'>Adult</A> \]
<A href='?_src_=holder;simplemake=monkey;mob=[M.UID()]'>Monkey</A> |
<A href='?_src_=holder;simplemake=robot;mob=[M.UID()]'>Cyborg</A> |
<A href='?_src_=holder;simplemake=cat;mob=[M.UID()]'>Cat</A> |
<A href='?_src_=holder;simplemake=runtime;mob=[M.UID()]'>Runtime</A> |
<A href='?_src_=holder;simplemake=corgi;mob=[M.UID()]'>Corgi</A> |
<A href='?_src_=holder;simplemake=ian;mob=[M.UID()]'>Ian</A> |
<A href='?_src_=holder;simplemake=crab;mob=[M.UID()]'>Crab</A> |
<A href='?_src_=holder;simplemake=coffee;mob=[M.UID()]'>Coffee</A> |
\[ Construct: <A href='?_src_=holder;simplemake=constructarmoured;mob=[M.UID()]'>Armoured</A> ,
<A href='?_src_=holder;simplemake=constructbuilder;mob=[M.UID()]'>Builder</A> ,
<A href='?_src_=holder;simplemake=constructwraith;mob=[M.UID()]'>Wraith</A> \]
<A href='?_src_=holder;simplemake=shade;mob=[M.UID()]'>Shade</A>
<A href='byond://?_src_=holder;simplemake=observer;mob=[M.UID()]'>Observer</A> |
\[ Alien: <A href='byond://?_src_=holder;simplemake=drone;mob=[M.UID()]'>Drone</A>,
<A href='byond://?_src_=holder;simplemake=hunter;mob=[M.UID()]'>Hunter</A>,
<A href='byond://?_src_=holder;simplemake=queen;mob=[M.UID()]'>Queen</A>,
<A href='byond://?_src_=holder;simplemake=sentinel;mob=[M.UID()]'>Sentinel</A>,
<A href='byond://?_src_=holder;simplemake=larva;mob=[M.UID()]'>Larva</A> \]
<A href='byond://?_src_=holder;simplemake=human;mob=[M.UID()]'>Human</A>
\[ slime: <A href='byond://?_src_=holder;simplemake=slime;mob=[M.UID()]'>Baby</A>,
<A href='byond://?_src_=holder;simplemake=adultslime;mob=[M.UID()]'>Adult</A> \]
<A href='byond://?_src_=holder;simplemake=monkey;mob=[M.UID()]'>Monkey</A> |
<A href='byond://?_src_=holder;simplemake=robot;mob=[M.UID()]'>Cyborg</A> |
<A href='byond://?_src_=holder;simplemake=cat;mob=[M.UID()]'>Cat</A> |
<A href='byond://?_src_=holder;simplemake=runtime;mob=[M.UID()]'>Runtime</A> |
<A href='byond://?_src_=holder;simplemake=corgi;mob=[M.UID()]'>Corgi</A> |
<A href='byond://?_src_=holder;simplemake=ian;mob=[M.UID()]'>Ian</A> |
<A href='byond://?_src_=holder;simplemake=crab;mob=[M.UID()]'>Crab</A> |
<A href='byond://?_src_=holder;simplemake=coffee;mob=[M.UID()]'>Coffee</A> |
\[ Construct: <A href='byond://?_src_=holder;simplemake=constructarmoured;mob=[M.UID()]'>Armoured</A> ,
<A href='byond://?_src_=holder;simplemake=constructbuilder;mob=[M.UID()]'>Builder</A> ,
<A href='byond://?_src_=holder;simplemake=constructwraith;mob=[M.UID()]'>Wraith</A> \]
<A href='byond://?_src_=holder;simplemake=shade;mob=[M.UID()]'>Shade</A>
"}
if(M.client)
body += {"<br><br>
<b>Other actions:</b>
<br>
<A href='?_src_=holder;forcespeech=[M.UID()]'>Forcesay</A> |
<A href='?_src_=holder;aroomwarp=[M.UID()]'>Admin Room</A> |
<A href='?_src_=holder;tdome1=[M.UID()]'>Thunderdome 1</A> |
<A href='?_src_=holder;tdome2=[M.UID()]'>Thunderdome 2</A> |
<A href='?_src_=holder;tdomeadmin=[M.UID()]'>Thunderdome Admin</A> |
<A href='?_src_=holder;tdomeobserve=[M.UID()]'>Thunderdome Observer</A> |
<A href='?_src_=holder;contractor_stop=[M.UID()]'>Stop Syndicate Jail Timer</A> |
<A href='?_src_=holder;contractor_start=[M.UID()]'>Start Syndicate Jail Timer</A> |
<A href='?_src_=holder;contractor_release=[M.UID()]'>Release now from Syndicate Jail</A> |
<A href='byond://?_src_=holder;forcespeech=[M.UID()]'>Forcesay</A> |
<A href='byond://?_src_=holder;aroomwarp=[M.UID()]'>Admin Room</A> |
<A href='byond://?_src_=holder;tdome1=[M.UID()]'>Thunderdome 1</A> |
<A href='byond://?_src_=holder;tdome2=[M.UID()]'>Thunderdome 2</A> |
<A href='byond://?_src_=holder;tdomeadmin=[M.UID()]'>Thunderdome Admin</A> |
<A href='byond://?_src_=holder;tdomeobserve=[M.UID()]'>Thunderdome Observer</A> |
<A href='byond://?_src_=holder;contractor_stop=[M.UID()]'>Stop Syndicate Jail Timer</A> |
<A href='byond://?_src_=holder;contractor_start=[M.UID()]'>Start Syndicate Jail Timer</A> |
<A href='byond://?_src_=holder;contractor_release=[M.UID()]'>Release now from Syndicate Jail</A> |
"}
body += {"<br>
@@ -314,14 +314,14 @@ GLOBAL_VAR_INIT(nologevent, 0)
var/list/dat = list()
var/cached_UID = UID()
dat += "<center>"
dat += "<p><a href='?src=[cached_UID];c_mode=1'>Change Game Mode</a><br></p>"
dat += "<p><a href='byond://?src=[cached_UID];c_mode=1'>Change Game Mode</a><br></p>"
if(GLOB.master_mode == "secret")
dat += "<p><a href='?src=[cached_UID];f_secret=1'>(Force Secret Mode)</a><br></p>"
dat += "<p><a href='byond://?src=[cached_UID];f_secret=1'>(Force Secret Mode)</a><br></p>"
dat += "<hr><br>"
dat += "<p><a href='?src=[cached_UID];create_object=1'>Create Object</a><br></p>"
dat += "<p><a href='?src=[cached_UID];quick_create_object=1'>Quick Create Object</a><br></p>"
dat += "<p><a href='?src=[cached_UID];create_turf=1'>Create Turf</a><br></p>"
dat += "<p><a href='?src=[cached_UID];create_mob=1'>Create Mob</a></p>"
dat += "<p><a href='byond://?src=[cached_UID];create_object=1'>Create Object</a><br></p>"
dat += "<p><a href='byond://?src=[cached_UID];quick_create_object=1'>Quick Create Object</a><br></p>"
dat += "<p><a href='byond://?src=[cached_UID];create_turf=1'>Create Turf</a><br></p>"
dat += "<p><a href='byond://?src=[cached_UID];create_mob=1'>Create Mob</a></p>"
var/datum/browser/popup = new(usr, "game_panel", "<div align='center'>Game Panel</div>", 210, 280)
popup.set_content(dat.Join(""))
@@ -595,7 +595,7 @@ GLOBAL_VAR_INIT(nologevent, 0)
if(!SSticker)
alert("Slow down a moment, let the ticker start first!")
return
if(SSblackbox)
SSblackbox.record_feedback("tally", "admin_verb", 1, "Delay") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
@@ -863,7 +863,7 @@ GLOBAL_VAR_INIT(gamma_ship_location, 1) // 0 = station , 1 = space
loc = get_turf(location)
if(where=="")
where=formatLocation(loc)
return "<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[loc.x];Y=[loc.y];Z=[loc.z]'>[where]</a>"
return "<A href='byond://?_src_=holder;adminplayerobservecoodjump=1;X=[loc.x];Y=[loc.y];Z=[loc.z]'>[where]</a>"
/proc/formatLocation(location)
var/turf/loc
+4 -4
View File
@@ -9,16 +9,16 @@ GLOBAL_LIST_EMPTY(custom_outfits) //Admin created outfits
holder.outfit_manager(usr)
/datum/admins/proc/outfit_manager(mob/admin)
var/list/dat = list("<ul>")
var/list/dat = list("<!DOCTYPE html><ul>")
for(var/datum/outfit/O in GLOB.custom_outfits)
var/vv = FALSE
var/datum/outfit/varedit/VO = O
if(istype(VO))
vv = length(VO.vv_values)
dat += "<li>[O.name][vv ? "(VV)" : ""]</li> <a href='?_src_=holder;save_outfit=1;chosen_outfit=[O.UID()]'>Save</a> <a href='?_src_=holder;delete_outfit=1;chosen_outfit=[O.UID()]'>Delete</a>"
dat += "<li>[O.name][vv ? "(VV)" : ""]</li> <a href='byond://?_src_=holder;save_outfit=1;chosen_outfit=[O.UID()]'>Save</a> <a href='byond://?_src_=holder;delete_outfit=1;chosen_outfit=[O.UID()]'>Delete</a>"
dat += "</ul>"
dat += "<a href='?_src_=holder;create_outfit_menu=1'>Create</a><br>"
dat += "<a href='?_src_=holder;load_outfit=1'>Load from file</a>"
dat += "<a href='byond://?_src_=holder;create_outfit_menu=1'>Create</a><br>"
dat += "<a href='byond://?_src_=holder;load_outfit=1'>Load from file</a>"
admin << browse(dat.Join(),"window=outfitmanager")
/datum/admins/proc/save_outfit(mob/admin,datum/outfit/O)
@@ -23,8 +23,8 @@
<body onload='selectTextField();updateSearch();'>
<div id='main'><table id='searchable' cellspacing='0'>
<tr class='title'>
<th style='width:125px;text-align:right;'>CKEY <a class='small' href='?src=[UID()];editrights=add'>\[+\]</a></th>
<th style='width:125px;'>RANK</th><th style='width:100%;'>PERMISSIONS</th>
<th style='width:20%;text-align:right;'>CKEY <a class='small' href='byond://?src=[UID()];editrights=add'>\[+\]</a></th>
<th style='width:20%;'>RANK</th><th style='width:60%;'>PERMISSIONS</th>
</tr>
"}
@@ -35,15 +35,15 @@
var/rights = rights2text(D.rights," ")
if(!rights) rights = "*none*"
output += {"<tr>
<td style='text-align:right;'>[adm_ckey] <a class='small' href='?src=[UID()];editrights=remove;ckey=[adm_ckey]'>\[-\]</a></td>
<td><a href='?src=[UID()];editrights=rank;ckey=[adm_ckey]'>[rank]</a></td>
<td><a class='small' href='?src=[UID()];editrights=permissions;ckey=[adm_ckey]'>[rights]</a></font></td>
<td style='text-align:right;'>[adm_ckey] <a class='small' href='byond://?src=[UID()];editrights=remove;ckey=[adm_ckey]'>\[-\]</a></td>
<td><a href='byond://?src=[UID()];editrights=rank;ckey=[adm_ckey]'>[rank]</a></td>
<td><a class='small' href='byond://?src=[UID()];editrights=permissions;ckey=[adm_ckey]'>[rights]</a></font></td>
</tr>"}
/*output += "<tr>"
output += "<td style='text-align:right;'>[adm_ckey] <a class='small' href='?src=[UID()];editrights=remove;ckey=[adm_ckey]'>\[-\]</a></td>"
output += "<td><a href='?src=[UID()];editrights=rank;ckey=[adm_ckey]'>[rank]</a></td>"
output += "<td><a class='small' href='?src=[UID()];editrights=permissions;ckey=[adm_ckey]'>[rights]</a></font></td>"
output += "<td style='text-align:right;'>[adm_ckey] <a class='small' href='byond://?src=[UID()];editrights=remove;ckey=[adm_ckey]'>\[-\]</a></td>"
output += "<td><a href='byond://?src=[UID()];editrights=rank;ckey=[adm_ckey]'>[rank]</a></td>"
output += "<td><a class='small' href='byond://?src=[UID()];editrights=permissions;ckey=[adm_ckey]'>[rights]</a></font></td>"
output += "</tr>"*/
output += {"
+22 -22
View File
@@ -79,19 +79,19 @@
body += "</td><td align='center'>";
body += "<a href='?src=[UID()];adminplayeropts="+mobUID+"'>PP</a> - "
body += "<a href='?src=[UID()];shownoteckey="+key+"'>N</a> - "
body += "<a href='?_src_=vars;Vars="+mobUID+"'>VV</a> - "
body += "<a href='?src=[UID()];traitor="+mobUID+"'>TP</a> - "
body += "<a href='?src=[usr.UID()];priv_msg="+client_ckey+"'>PM</a> - "
body += "<a href='?src=[UID()];subtlemessage="+mobUID+"'>SM</a> - "
body += "<a href='?src=[UID()];adminplayerobservefollow="+mobUID+"'>FLW</a> - "
body += "<a href='?src=[UID()];adminalert="+mobUID+"'>ALERT</a>"
body += "<a href='byond://?src=[UID()];adminplayeropts="+mobUID+"'>PP</a> - "
body += "<a href='byond://?src=[UID()];shownoteckey="+key+"'>N</a> - "
body += "<a href='byond://?_src_=vars;Vars="+mobUID+"'>VV</a> - "
body += "<a href='byond://?src=[UID()];traitor="+mobUID+"'>TP</a> - "
body += "<a href='byond://?src=[usr.UID()];priv_msg="+client_ckey+"'>PM</a> - "
body += "<a href='byond://?src=[UID()];subtlemessage="+mobUID+"'>SM</a> - "
body += "<a href='byond://?src=[UID()];adminplayerobservefollow="+mobUID+"'>FLW</a> - "
body += "<a href='byond://?src=[UID()];adminalert="+mobUID+"'>ALERT</a>"
if(eyeUID)
body += "|<a href='?src=[UID()];adminplayerobservefollow="+eyeUID+"'>EYE</a>"
body += "|<a href='byond://?src=[UID()];adminplayerobservefollow="+eyeUID+"'>EYE</a>"
body += "<br>"
if(antagonists)
body += "<font size='2'><a href='?src=[UID()];check_antagonist=1'><font color='red'><b>"+antagonists+"</b></font></a></font>";
body += "<font size='2'><a href='byond://?src=[UID()];check_antagonist=1'><font color='red'><b>"+antagonists+"</b></font></a></font>";
body += "</td></tr></table>";
@@ -202,7 +202,7 @@
<tr id='title_tr'>
<td align='center'>
<font size='5'><b>Player panel</b></font><br>
Hover over a line to see more information | [check_rights(R_ADMIN,0) ? "<a href='?src=[UID()];check_antagonist=1'>Check antagonists</a> | Kick <a href='?_src_=holder;kick_all_from_lobby=1;afkonly=0'>everyone</a>/<a href='?_src_=holder;kick_all_from_lobby=1;afkonly=1'>AFKers</a> in lobby" : "" ]
Hover over a line to see more information | [check_rights(R_ADMIN,0) ? "<a href='byond://?src=[UID()];check_antagonist=1'>Check antagonists</a> | Kick <a href='byond://?_src_=holder;kick_all_from_lobby=1;afkonly=0'>everyone</a>/<a href='byond://?_src_=holder;kick_all_from_lobby=1;afkonly=1'>AFKers</a> in lobby" : "" ]
<p>
</td>
</tr>
@@ -342,8 +342,8 @@
if(!dname)
dname = M
return {"<tr><td><a href='?src=[UID()];adminplayeropts=[M.UID()]'>[dname]</a><b>[caption]</b>[logout_status][istype(A, /area/station/security/permabrig) ? "<b><font color=red> (PERMA) </b></font>" : ""][M.stat == 2 ? " <b><font color=red>(DEAD)</font></b>" : ""]</td>
<td><A href='?src=[usr.UID()];priv_msg=[M.client?.ckey]'>PM</A> [ADMIN_FLW(M, "FLW")] </td>[close ? "</tr>" : ""]"}
return {"<tr><td><a href='byond://?src=[UID()];adminplayeropts=[M.UID()]'>[dname]</a><b>[caption]</b>[logout_status][istype(A, /area/station/security/permabrig) ? "<b><font color=red> (PERMA) </b></font>" : ""][M.stat == 2 ? " <b><font color=red>(DEAD)</font></b>" : ""]</td>
<td><A href='byond://?src=[usr.UID()];priv_msg=[M.client?.ckey]'>PM</A> [ADMIN_FLW(M, "FLW")] </td>[close ? "</tr>" : ""]"}
/datum/admins/proc/check_antagonists()
if(!check_rights(R_ADMIN))
@@ -354,18 +354,18 @@
dat += "Round Duration: <b>[round(ROUND_TIME / 36000)]:[add_zero(num2text(ROUND_TIME / 600 % 60), 2)]:[add_zero(num2text(ROUND_TIME / 10 % 60), 2)]</b><br>"
dat += "<b>Emergency shuttle</b><br>"
if(SSshuttle.emergency.mode < SHUTTLE_CALL)
dat += "<a href='?src=[UID()];call_shuttle=1'>Call Shuttle</a><br>"
dat += "<a href='byond://?src=[UID()];call_shuttle=1'>Call Shuttle</a><br>"
else
var/timeleft = SSshuttle.emergency.timeLeft()
if(SSshuttle.emergency.mode < SHUTTLE_DOCKED)
dat += "ETA: <a href='?_src_=holder;edit_shuttle_time=1'>[seconds_to_full_clock(timeleft)]</a><br>"
dat += "<a href='?_src_=holder;call_shuttle=2'>Send Back</a><br>"
dat += "ETA: <a href='byond://?_src_=holder;edit_shuttle_time=1'>[seconds_to_full_clock(timeleft)]</a><br>"
dat += "<a href='byond://?_src_=holder;call_shuttle=2'>Send Back</a><br>"
else
dat += "ETA: <a href='?_src_=holder;edit_shuttle_time=1'>[seconds_to_full_clock(timeleft)]</a><br>"
dat += "ETA: <a href='byond://?_src_=holder;edit_shuttle_time=1'>[seconds_to_full_clock(timeleft)]</a><br>"
dat += "<a href='?src=[UID()];delay_round_end=1'>[SSticker.delay_end ? "End Round Normally" : "Delay Round End"]</a><br>"
dat += "<a href='byond://?src=[UID()];delay_round_end=1'>[SSticker.delay_end ? "End Round Normally" : "Delay Round End"]</a><br>"
dat += "<br><b>Antagonist Teams</b><br>"
dat += "<a href='?src=[UID()];check_teams=1'>View Teams</a><br>"
dat += "<a href='byond://?src=[UID()];check_teams=1'>View Teams</a><br>"
if(SSticker.mode.syndicates.len)
dat += "<br><table cellspacing=5><tr><td><B>Syndicates</B></td><td></td></tr>"
for(var/datum/mind/N in SSticker.mode.syndicates)
@@ -381,7 +381,7 @@
while(!isturf(disk_loc))
if(ismob(disk_loc))
var/mob/M = disk_loc
dat += "carried by <a href='?src=[UID()];adminplayeropts=[M.UID()]'>[M.real_name]</a> "
dat += "carried by <a href='byond://?src=[UID()];adminplayeropts=[M.UID()]'>[M.real_name]</a> "
if(isobj(disk_loc))
var/obj/O = disk_loc
dat += "in \a [O.name] "
@@ -431,7 +431,7 @@
if(SSticker.mode.cult_team)
dat += check_role_table("Cultists", SSticker.mode.cult_team.members)
dat += "<a href='?src=[UID()];check_teams=1'>View Cult Team & Controls</a><br>"
dat += "<a href='byond://?src=[UID()];check_teams=1'>View Cult Team & Controls</a><br>"
if(SSticker.mode.traitors.len)
dat += check_role_table("Traitors", SSticker.mode.traitors)
@@ -519,7 +519,7 @@
if(show_objectives)
txt += {"
<td>
<a href='?src=[UID()];traitor=[M.UID()]'>Show Objective</a>
<a href='byond://?src=[UID()];traitor=[M.UID()]'>Show Objective</a>
</td>
"}
+57 -57
View File
@@ -7,9 +7,9 @@
if(!check_rights(0)) return
var/dat = "<html><meta charset='utf-8'><body><center>"
dat += "<a href='?src=[UID()];secretsmenu=tab;tab=0' [current_tab == 0 ? "class='linkOn'" : ""]>Debug</a>"
dat += "<a href='?src=[UID()];secretsmenu=tab;tab=1' [current_tab == 1 ? "class='linkOn'" : ""]>IC Events</a>"
dat += "<a href='?src=[UID()];secretsmenu=tab;tab=2' [current_tab == 2 ? "class='linkOn'" : ""]>OOC Events</a>"
dat += "<a href='byond://?src=[UID()];secretsmenu=tab;tab=0' [current_tab == 0 ? "class='linkOn'" : ""]>Debug</a>"
dat += "<a href='byond://?src=[UID()];secretsmenu=tab;tab=1' [current_tab == 1 ? "class='linkOn'" : ""]>IC Events</a>"
dat += "<a href='byond://?src=[UID()];secretsmenu=tab;tab=2' [current_tab == 2 ? "class='linkOn'" : ""]>OOC Events</a>"
dat += "</center>"
dat += "<HR>"
@@ -19,44 +19,44 @@
dat += {"
<center><B><h2>Admin Secrets</h2></B>
<B>Game</b><br>
<A href='?src=[UID()];secretsadmin=showailaws'>Show AI Laws</A>&nbsp;&nbsp;
<A href='?src=[UID()];secretsadmin=showgm'>Show Game Mode</A>&nbsp;&nbsp;
<A href='?src=[UID()];secretsadmin=manifest'>Show Crew Manifest</A><br>
<A href='?src=[UID()];secretsadmin=check_antagonist'>Show current traitors and objectives</A><BR>
<A href='?src=[UID()];secretsadmin=view_codewords'>Show code phrases and responses</A><BR>
<a href='?src=[UID()];secretsadmin=night_shift_set'>Set Night Shift Mode</a><br>
<A href='byond://?src=[UID()];secretsadmin=showailaws'>Show AI Laws</A>&nbsp;&nbsp;
<A href='byond://?src=[UID()];secretsadmin=showgm'>Show Game Mode</A>&nbsp;&nbsp;
<A href='byond://?src=[UID()];secretsadmin=manifest'>Show Crew Manifest</A><br>
<A href='byond://?src=[UID()];secretsadmin=check_antagonist'>Show current traitors and objectives</A><BR>
<A href='byond://?src=[UID()];secretsadmin=view_codewords'>Show code phrases and responses</A><BR>
<a href='byond://?src=[UID()];secretsadmin=night_shift_set'>Set Night Shift Mode</a><br>
<B>Bombs</b><br>
[check_rights(R_SERVER, 0) ? "&nbsp;&nbsp;<A href='?src=[UID()];secretsfun=togglebombcap'>Toggle bomb cap</A><br>" : "<br>"]
[check_rights(R_SERVER, 0) ? "&nbsp;&nbsp;<A href='byond://?src=[UID()];secretsfun=togglebombcap'>Toggle bomb cap</A><br>" : "<br>"]
<B>Lists</b><br>
<A href='?src=[UID()];secretsadmin=list_signalers'>Show last [length(GLOB.lastsignalers)] signalers</A>&nbsp;&nbsp;
<A href='?src=[UID()];secretsadmin=list_lawchanges'>Show last [length(GLOB.lawchanges)] law changes</A><BR>
<A href='?src=[UID()];secretsadmin=DNA'>List DNA (Blood)</A>&nbsp;&nbsp;
<A href='?src=[UID()];secretsadmin=fingerprints'>List Fingerprints</A><BR>
<A href='byond://?src=[UID()];secretsadmin=list_signalers'>Show last [length(GLOB.lastsignalers)] signalers</A>&nbsp;&nbsp;
<A href='byond://?src=[UID()];secretsadmin=list_lawchanges'>Show last [length(GLOB.lawchanges)] law changes</A><BR>
<A href='byond://?src=[UID()];secretsadmin=DNA'>List DNA (Blood)</A>&nbsp;&nbsp;
<A href='byond://?src=[UID()];secretsadmin=fingerprints'>List Fingerprints</A><BR>
<B>Power</b><br>
<A href='?src=[UID()];secretsfun=blackout'>Break all lights</A>&nbsp;&nbsp;
<A href='?src=[UID()];secretsfun=whiteout'>Fix all lights</A><BR>
<A href='?src=[UID()];secretsfun=power'>Make all areas powered</A>&nbsp;&nbsp;
<A href='?src=[UID()];secretsfun=unpower'>Make all areas unpowered</A>&nbsp;&nbsp;
<A href='?src=[UID()];secretsfun=quickpower'>Power all SMES</A><BR>
<A href='byond://?src=[UID()];secretsfun=blackout'>Break all lights</A>&nbsp;&nbsp;
<A href='byond://?src=[UID()];secretsfun=whiteout'>Fix all lights</A><BR>
<A href='byond://?src=[UID()];secretsfun=power'>Make all areas powered</A>&nbsp;&nbsp;
<A href='byond://?src=[UID()];secretsfun=unpower'>Make all areas unpowered</A>&nbsp;&nbsp;
<A href='byond://?src=[UID()];secretsfun=quickpower'>Power all SMES</A><BR>
</center>
"}
else if(check_rights(R_SERVER,0)) //only add this if admin secrets are unavailiable; otherwise, it's added inline
dat += "<center><b>Bomb cap: </b><A href='?src=[UID()];secretsfun=togglebombcap'>Toggle bomb cap</A><BR></center>"
dat += "<center><b>Bomb cap: </b><A href='byond://?src=[UID()];secretsfun=togglebombcap'>Toggle bomb cap</A><BR></center>"
dat += "<BR>"
if(check_rights(R_DEBUG,0))
dat += {"
<center>
<B>Security Level Elevated</B><BR>
<BR>
<A href='?src=[UID()];secretscoder=maint_access_engiebrig'>Change all maintenance doors to engie/brig access only</A><BR>
<A href='?src=[UID()];secretscoder=maint_ACCESS_BRIG'>Change all maintenance doors to brig access only</A><BR>
<A href='?src=[UID()];secretscoder=infinite_sec'>Remove cap on security officers</A>&nbsp;&nbsp;
<A href='byond://?src=[UID()];secretscoder=maint_access_engiebrig'>Change all maintenance doors to engie/brig access only</A><BR>
<A href='byond://?src=[UID()];secretscoder=maint_ACCESS_BRIG'>Change all maintenance doors to brig access only</A><BR>
<A href='byond://?src=[UID()];secretscoder=infinite_sec'>Remove cap on security officers</A>&nbsp;&nbsp;
<BR>
<B>Coder Secrets</B><BR>
<BR>
<A href='?src=[UID()];secretsadmin=list_job_debug'>Show Job Debug</A>&nbsp;&nbsp;
<A href='?src=[UID()];secretscoder=spawn_objects'>Admin Log</A><BR>
<A href='byond://?src=[UID()];secretsadmin=list_job_debug'>Show Job Debug</A>&nbsp;&nbsp;
<A href='byond://?src=[UID()];secretscoder=spawn_objects'>Admin Log</A><BR>
<BR>
</center>
"}
@@ -66,23 +66,23 @@
var/security_levels_data = ""
for(var/level_name in SSsecurity_level.available_levels)
var/datum/security_level/this_level = SSsecurity_level.available_levels[level_name]
security_levels_data += "<a href='?src=[UID()];secretsfun=securitylevel;number=[this_level.number_level]'>[this_level.name]</a>"
security_levels_data += "<a href='byond://?src=[UID()];secretsfun=securitylevel;number=[this_level.number_level]'>[this_level.name]</a>"
dat += {"
<center>
<h2><B>IC Events</B></h2>
<b>Teams</b><br>
<A href='?src=[UID()];secretsfun=infiltrators_syndicate'>Send SIT - Syndicate Infiltration Team</A>&nbsp;&nbsp;
<A href='?src=[UID()];secretsfun=striketeam_syndicate'>Send in a Syndie Strike Team</A>&nbsp;&nbsp;
<BR><A href='?src=[UID()];secretsfun=deathsquad'>Send in the Deathsquad</A>&nbsp;&nbsp;
<A href='?src=[UID()];secretsfun=gimmickteam'>Send in a Gimmick Team</A><BR>
<A href='byond://?src=[UID()];secretsfun=infiltrators_syndicate'>Send SIT - Syndicate Infiltration Team</A>&nbsp;&nbsp;
<A href='byond://?src=[UID()];secretsfun=striketeam_syndicate'>Send in a Syndie Strike Team</A>&nbsp;&nbsp;
<BR><A href='byond://?src=[UID()];secretsfun=deathsquad'>Send in the Deathsquad</A>&nbsp;&nbsp;
<A href='byond://?src=[UID()];secretsfun=gimmickteam'>Send in a Gimmick Team</A><BR>
<b>Change Security Level</b><BR>
[security_levels_data]<BR>
<b>Create Weather</b><BR>
<A href='?src=[UID()];secretsfun=weatherashstorm'>Weather - Ash Storm</A>&nbsp;&nbsp;
<A href='byond://?src=[UID()];secretsfun=weatherashstorm'>Weather - Ash Storm</A>&nbsp;&nbsp;
<BR>
<b>Reinforce Station</b><BR>
<A href='?src=[UID()];secretsfun=gammashuttle'>Move the Gamma Armory</A>&nbsp;&nbsp;
<A href='byond://?src=[UID()];secretsfun=gammashuttle'>Move the Gamma Armory</A>&nbsp;&nbsp;
<BR>
</center>"}
@@ -92,38 +92,38 @@
<center>
<h2><B>OOC Events</B></h2>
<b>Thunderdome</b><br>
<A href='?src=[UID()];secretsfun=tdomestart'>Start a Thunderdome match</A>&nbsp;&nbsp;
<A href='?src=[UID()];secretsfun=tdomereset'>Reset Thunderdome to default state</A><BR><br>
<A href='byond://?src=[UID()];secretsfun=tdomestart'>Start a Thunderdome match</A>&nbsp;&nbsp;
<A href='byond://?src=[UID()];secretsfun=tdomereset'>Reset Thunderdome to default state</A><BR><br>
<b>Clothing</b><br>
<A href='?src=[UID()];secretsfun=sec_clothes'>Remove 'internal' clothing</A>&nbsp;&nbsp;
<A href='?src=[UID()];secretsfun=sec_all_clothes'>Remove ALL clothing</A><BR>
<A href='byond://?src=[UID()];secretsfun=sec_clothes'>Remove 'internal' clothing</A>&nbsp;&nbsp;
<A href='byond://?src=[UID()];secretsfun=sec_all_clothes'>Remove ALL clothing</A><BR>
<b>TDM</b><br>
<A href='?src=[UID()];secretsfun=traitor_all'>Everyone is the traitor</A>&nbsp;&nbsp;
<A href='?src=[UID()];secretsfun=onlyone'>There can only be one!</A>&nbsp;&nbsp;
<A href='?src=[UID()];secretsfun=onlyme'>There can only be me!</A>&nbsp;&nbsp;
<A href='?src=[UID()];secretsfun=onlyoneteam'>Dodgeball (TDM)!</A><BR>
<A href='byond://?src=[UID()];secretsfun=traitor_all'>Everyone is the traitor</A>&nbsp;&nbsp;
<A href='byond://?src=[UID()];secretsfun=onlyone'>There can only be one!</A>&nbsp;&nbsp;
<A href='byond://?src=[UID()];secretsfun=onlyme'>There can only be me!</A>&nbsp;&nbsp;
<A href='byond://?src=[UID()];secretsfun=onlyoneteam'>Dodgeball (TDM)!</A><BR>
<b>Round-enders</b><br>
<A href='?src=[UID()];secretsfun=floorlava'>The floor is lava! (DANGEROUS: extremely lame)</A><BR>
<A href='?src=[UID()];secretsfun=fakelava'>The floor is fake-lava! (non-harmful)</A><BR>
<A href='?src=[UID()];secretsfun=monkey'>Turn all humans into monkeys</A><BR>
<A href='?src=[UID()];secretsfun=fakeguns'>Make all items look like guns</A><BR>
<A href='?src=[UID()];secretsfun=prisonwarp'>Warp all Players to Prison</A><BR>
<A href='?src=[UID()];secretsfun=stupify'>Make all players stupid</A><BR>
<A href='byond://?src=[UID()];secretsfun=floorlava'>The floor is lava! (DANGEROUS: extremely lame)</A><BR>
<A href='byond://?src=[UID()];secretsfun=fakelava'>The floor is fake-lava! (non-harmful)</A><BR>
<A href='byond://?src=[UID()];secretsfun=monkey'>Turn all humans into monkeys</A><BR>
<A href='byond://?src=[UID()];secretsfun=fakeguns'>Make all items look like guns</A><BR>
<A href='byond://?src=[UID()];secretsfun=prisonwarp'>Warp all Players to Prison</A><BR>
<A href='byond://?src=[UID()];secretsfun=stupify'>Make all players stupid</A><BR>
<b>Misc</b><br>
<A href='?src=[UID()];secretsfun=sec_classic1'>Remove firesuits, grilles, and pods</A>&nbsp;&nbsp;
<A href='?src=[UID()];secretsfun=tripleAI'>Triple AI mode (needs to be used in the lobby)</A><BR>
<A href='?src=[UID()];secretsfun=flicklights'>Ghost Mode</A>&nbsp;&nbsp;
<A href='?src=[UID()];secretsfun=schoolgirl'>Japanese Animes Mode</A>&nbsp;&nbsp;
<A href='?src=[UID()];secretsfun=eagles'>Egalitarian Station Mode</A><BR>
<A href='?src=[UID()];secretsfun=guns'>Summon Guns</A>&nbsp;&nbsp;
<A href='?src=[UID()];secretsfun=magic'>Summon Magic</A>
<A href='byond://?src=[UID()];secretsfun=sec_classic1'>Remove firesuits, grilles, and pods</A>&nbsp;&nbsp;
<A href='byond://?src=[UID()];secretsfun=tripleAI'>Triple AI mode (needs to be used in the lobby)</A><BR>
<A href='byond://?src=[UID()];secretsfun=flicklights'>Ghost Mode</A>&nbsp;&nbsp;
<A href='byond://?src=[UID()];secretsfun=schoolgirl'>Japanese Animes Mode</A>&nbsp;&nbsp;
<A href='byond://?src=[UID()];secretsfun=eagles'>Egalitarian Station Mode</A><BR>
<A href='byond://?src=[UID()];secretsfun=guns'>Summon Guns</A>&nbsp;&nbsp;
<A href='byond://?src=[UID()];secretsfun=magic'>Summon Magic</A>
<BR>
<A href='?src=[UID()];secretsfun=rolldice'>Roll the Dice</A><BR>
<A href='byond://?src=[UID()];secretsfun=rolldice'>Roll the Dice</A><BR>
<BR>
<BR>
<A href='?src=[UID()];secretsfun=moveferry'>Move Ferry</A><BR>
<A href='?src=[UID()];secretsfun=moveminingshuttle'>Move Mining Shuttle</A><BR>
<A href='?src=[UID()];secretsfun=movelaborshuttle'>Move Labor Shuttle</A><BR>
<A href='byond://?src=[UID()];secretsfun=moveferry'>Move Ferry</A><BR>
<A href='byond://?src=[UID()];secretsfun=moveminingshuttle'>Move Mining Shuttle</A><BR>
<A href='byond://?src=[UID()];secretsfun=movelaborshuttle'>Move Labor Shuttle</A><BR>
<BR>
</center>"}
dat += "</center></body></html>"
+15 -14
View File
@@ -175,19 +175,20 @@
/proc/show_note(target_ckey, index, linkless = 0)
if(!check_rights(R_ADMIN|R_MOD))
return
var/output
var/navbar
var/ruler
ruler = "<hr style='background:#000000; border:0; height:3px'>"
navbar = "<meta charset='UTF-8'><a href='?_src_=holder;nonalpha=1'>\[All\]</a>|<a href='?_src_=holder;nonalpha=2'>\[#\]</a>"
var/list/output = list("<!DOCTYPE html>")
var/list/navbar = list()
var/ruler = "<hr style='background:#000000; border:0; height:3px'>"
navbar = "<meta charset='UTF-8'><a href='byond://?_src_=holder;nonalpha=1'>\[All\]</a>|<a href='byond://?_src_=holder;nonalpha=2'>\[#\]</a>"
for(var/letter in GLOB.alphabet)
navbar += "|<a href='?_src_=holder;shownote=[letter]'>\[[letter]\]</a>"
navbar += "|<a href='byond://?_src_=holder;shownote=[letter]'>\[[letter]\]</a>"
navbar += "<br><form method='GET' name='search' action='?'>\
<input type='hidden' name='_src_' value='holder'>\
<input type='text' name='notessearch' value='[index]'>\
<input type='submit' value='Search'></form>"
if(!linkless)
output = navbar
output += navbar
if(target_ckey)
var/target_sql_ckey = ckey(target_ckey)
var/datum/db_query/query_get_notes = SSdbcore.NewQuery({"
@@ -200,7 +201,7 @@
return
output += "<h2><center>Notes of [target_ckey]</center></h2>"
if(!linkless)
output += "<center><a href='?_src_=holder;addnote=[target_ckey]'>\[Add Note\]</a></center>"
output += "<center><a href='byond://?_src_=holder;addnote=[target_ckey]'>\[Add Note\]</a></center>"
output += ruler
while(query_get_notes.NextRow())
var/id = query_get_notes.item[1]
@@ -219,15 +220,15 @@
output += "</b>"
if(!linkless)
output += " <a href='?_src_=holder;removenote=[id]'>\[Remove Note\]</a> [automated ? "\[Automated Note\]" : "<a href='?_src_=holder;editnote=[id]'>\[Edit Note\]</a>"]"
output += " <a href='byond://?_src_=holder;removenote=[id]'>\[Remove Note\]</a> [automated ? "\[Automated Note\]" : "<a href='byond://?_src_=holder;editnote=[id]'>\[Edit Note\]</a>"]"
if(last_editor)
output += " <font size='2'>Last edit by [last_editor] <a href='?_src_=holder;noteedits=[id]'>(Click here to see edit log)</a></font>"
output += " <font size='2'>Last edit by [last_editor] <a href='byond://?_src_=holder;noteedits=[id]'>(Click here to see edit log)</a></font>"
output += "<br>[replacetext(notetext, "\n", "<br>")]<hr style='background:#000000; border:0; height:1px'>"
qdel(query_get_notes)
else if(index)
var/index_ckey
var/search
output += "<center><a href='?_src_=holder;addnoteempty=1'>\[Add Note\]</a></center>"
output += "<center><a href='byond://?_src_=holder;addnoteempty=1'>\[Add Note\]</a></center>"
output += ruler
switch(index)
if(1)
@@ -246,12 +247,12 @@
message_admins("[usr.ckey] has started a note search with the following regex: [search] | CPU usage may be higher.")
while(query_list_notes.NextRow())
index_ckey = query_list_notes.item[1]
output += "<a href='?_src_=holder;shownoteckey=[index_ckey]'>[index_ckey]</a><br>"
output += "<a href='byond://?_src_=holder;shownoteckey=[index_ckey]'>[index_ckey]</a><br>"
CHECK_TICK
qdel(query_list_notes)
message_admins("The note search started by [usr.ckey] has completed. CPU should return to normal.")
else
output += "<center><a href='?_src_=holder;addnoteempty=1'>\[Add Note\]</a></center>"
output += "<center><a href='byond://?_src_=holder;addnoteempty=1'>\[Add Note\]</a></center>"
output += ruler
usr << browse(output, "window=show_notes;size=900x500")
usr << browse(output.Join(""), "window=show_notes;size=900x500")
+48 -48
View File
@@ -457,17 +457,17 @@
//Regular jobs
//Command (Blue)
jobs += "<table cellpadding='1' cellspacing='0' width='100%'>"
jobs += "<tr align='center' bgcolor='ccccff'><th colspan='[length(GLOB.command_positions)]'><a href='?src=[UID()];jobban3=commanddept;jobban4=[M.UID()];dbbanaddckey=[M.ckey]'>Command Positions</a></th></tr><tr align='center'>"
jobs += "<tr align='center' bgcolor='ccccff'><th colspan='[length(GLOB.command_positions)]'><a href='byond://?src=[UID()];jobban3=commanddept;jobban4=[M.UID()];dbbanaddckey=[M.ckey]'>Command Positions</a></th></tr><tr align='center'>"
for(var/jobPos in GLOB.command_positions)
if(!jobPos) continue
var/datum/job/job = SSjobs.GetJob(jobPos)
if(!job) continue
if(jobban_isbanned(M, job.title))
jobs += "<td width='20%'><a href='?src=[UID()];jobban3=[job.title];jobban4=[M.UID()];dbbanaddckey=[M.ckey]'><font color=red>[replacetext(job.title, " ", "&nbsp")]</font></a></td>"
jobs += "<td width='20%'><a href='byond://?src=[UID()];jobban3=[job.title];jobban4=[M.UID()];dbbanaddckey=[M.ckey]'><font color=red>[replacetext(job.title, " ", "&nbsp")]</font></a></td>"
counter++
else
jobs += "<td width='20%'><a href='?src=[UID()];jobban3=[job.title];jobban4=[M.UID()];dbbanaddckey=[M.ckey]'>[replacetext(job.title, " ", "&nbsp")]</a></td>"
jobs += "<td width='20%'><a href='byond://?src=[UID()];jobban3=[job.title];jobban4=[M.UID()];dbbanaddckey=[M.ckey]'>[replacetext(job.title, " ", "&nbsp")]</a></td>"
counter++
if(counter >= 6) //So things dont get squiiiiished!
@@ -478,17 +478,17 @@
//Security (Red)
counter = 0
jobs += "<table cellpadding='1' cellspacing='0' width='100%'>"
jobs += "<tr bgcolor='ffddf0'><th colspan='[length(GLOB.security_positions)]'><a href='?src=[UID()];jobban3=securitydept;jobban4=[M.UID()];dbbanaddckey=[M.ckey]'>Security Positions</a></th></tr><tr align='center'>"
jobs += "<tr bgcolor='ffddf0'><th colspan='[length(GLOB.security_positions)]'><a href='byond://?src=[UID()];jobban3=securitydept;jobban4=[M.UID()];dbbanaddckey=[M.ckey]'>Security Positions</a></th></tr><tr align='center'>"
for(var/jobPos in GLOB.security_positions)
if(!jobPos) continue
var/datum/job/job = SSjobs.GetJob(jobPos)
if(!job) continue
if(jobban_isbanned(M, job.title))
jobs += "<td width='20%'><a href='?src=[UID()];jobban3=[job.title];jobban4=[M.UID()];dbbanaddckey=[M.ckey]'><font color=red>[replacetext(job.title, " ", "&nbsp")]</font></a></td>"
jobs += "<td width='20%'><a href='byond://?src=[UID()];jobban3=[job.title];jobban4=[M.UID()];dbbanaddckey=[M.ckey]'><font color=red>[replacetext(job.title, " ", "&nbsp")]</font></a></td>"
counter++
else
jobs += "<td width='20%'><a href='?src=[UID()];jobban3=[job.title];jobban4=[M.UID()];dbbanaddckey=[M.ckey]'>[replacetext(job.title, " ", "&nbsp")]</a></td>"
jobs += "<td width='20%'><a href='byond://?src=[UID()];jobban3=[job.title];jobban4=[M.UID()];dbbanaddckey=[M.ckey]'>[replacetext(job.title, " ", "&nbsp")]</a></td>"
counter++
if(counter >= 5) //So things dont get squiiiiished!
@@ -499,17 +499,17 @@
//Engineering (Yellow)
counter = 0
jobs += "<table cellpadding='1' cellspacing='0' width='100%'>"
jobs += "<tr bgcolor='fff5cc'><th colspan='[length(GLOB.engineering_positions)]'><a href='?src=[UID()];jobban3=engineeringdept;jobban4=[M.UID()];dbbanaddckey=[M.ckey]'>Engineering Positions</a></th></tr><tr align='center'>"
jobs += "<tr bgcolor='fff5cc'><th colspan='[length(GLOB.engineering_positions)]'><a href='byond://?src=[UID()];jobban3=engineeringdept;jobban4=[M.UID()];dbbanaddckey=[M.ckey]'>Engineering Positions</a></th></tr><tr align='center'>"
for(var/jobPos in GLOB.engineering_positions)
if(!jobPos) continue
var/datum/job/job = SSjobs.GetJob(jobPos)
if(!job) continue
if(jobban_isbanned(M, job.title))
jobs += "<td width='20%'><a href='?src=[UID()];jobban3=[job.title];jobban4=[M.UID()];dbbanaddckey=[M.ckey]'><font color=red>[replacetext(job.title, " ", "&nbsp")]</font></a></td>"
jobs += "<td width='20%'><a href='byond://?src=[UID()];jobban3=[job.title];jobban4=[M.UID()];dbbanaddckey=[M.ckey]'><font color=red>[replacetext(job.title, " ", "&nbsp")]</font></a></td>"
counter++
else
jobs += "<td width='20%'><a href='?src=[UID()];jobban3=[job.title];jobban4=[M.UID()];dbbanaddckey=[M.ckey]'>[replacetext(job.title, " ", "&nbsp")]</a></td>"
jobs += "<td width='20%'><a href='byond://?src=[UID()];jobban3=[job.title];jobban4=[M.UID()];dbbanaddckey=[M.ckey]'>[replacetext(job.title, " ", "&nbsp")]</a></td>"
counter++
if(counter >= 5) //So things dont get squiiiiished!
@@ -520,17 +520,17 @@
//Medical (White)
counter = 0
jobs += "<table cellpadding='1' cellspacing='0' width='100%'>"
jobs += "<tr bgcolor='ffeef0'><th colspan='[length(GLOB.medical_positions)]'><a href='?src=[UID()];jobban3=medicaldept;jobban4=[M.UID()];dbbanaddckey=[M.ckey]'>Medical Positions</a></th></tr><tr align='center'>"
jobs += "<tr bgcolor='ffeef0'><th colspan='[length(GLOB.medical_positions)]'><a href='byond://?src=[UID()];jobban3=medicaldept;jobban4=[M.UID()];dbbanaddckey=[M.ckey]'>Medical Positions</a></th></tr><tr align='center'>"
for(var/jobPos in GLOB.medical_positions)
if(!jobPos) continue
var/datum/job/job = SSjobs.GetJob(jobPos)
if(!job) continue
if(jobban_isbanned(M, job.title))
jobs += "<td width='20%'><a href='?src=[UID()];jobban3=[job.title];jobban4=[M.UID()];dbbanaddckey=[M.ckey]'><font color=red>[replacetext(job.title, " ", "&nbsp")]</font></a></td>"
jobs += "<td width='20%'><a href='byond://?src=[UID()];jobban3=[job.title];jobban4=[M.UID()];dbbanaddckey=[M.ckey]'><font color=red>[replacetext(job.title, " ", "&nbsp")]</font></a></td>"
counter++
else
jobs += "<td width='20%'><a href='?src=[UID()];jobban3=[job.title];jobban4=[M.UID()];dbbanaddckey=[M.ckey]'>[replacetext(job.title, " ", "&nbsp")]</a></td>"
jobs += "<td width='20%'><a href='byond://?src=[UID()];jobban3=[job.title];jobban4=[M.UID()];dbbanaddckey=[M.ckey]'>[replacetext(job.title, " ", "&nbsp")]</a></td>"
counter++
if(counter >= 5) //So things dont get squiiiiished!
@@ -541,17 +541,17 @@
//Science (Purple)
counter = 0
jobs += "<table cellpadding='1' cellspacing='0' width='100%'>"
jobs += "<tr bgcolor='e79fff'><th colspan='[length(GLOB.science_positions)]'><a href='?src=[UID()];jobban3=sciencedept;jobban4=[M.UID()];dbbanaddckey=[M.ckey]'>Science Positions</a></th></tr><tr align='center'>"
jobs += "<tr bgcolor='e79fff'><th colspan='[length(GLOB.science_positions)]'><a href='byond://?src=[UID()];jobban3=sciencedept;jobban4=[M.UID()];dbbanaddckey=[M.ckey]'>Science Positions</a></th></tr><tr align='center'>"
for(var/jobPos in GLOB.science_positions)
if(!jobPos) continue
var/datum/job/job = SSjobs.GetJob(jobPos)
if(!job) continue
if(jobban_isbanned(M, job.title))
jobs += "<td width='20%'><a href='?src=[UID()];jobban3=[job.title];jobban4=[M.UID()];dbbanaddckey=[M.ckey]'><font color=red>[replacetext(job.title, " ", "&nbsp")]</font></a></td>"
jobs += "<td width='20%'><a href='byond://?src=[UID()];jobban3=[job.title];jobban4=[M.UID()];dbbanaddckey=[M.ckey]'><font color=red>[replacetext(job.title, " ", "&nbsp")]</font></a></td>"
counter++
else
jobs += "<td width='20%'><a href='?src=[UID()];jobban3=[job.title];jobban4=[M.UID()];dbbanaddckey=[M.ckey]'>[replacetext(job.title, " ", "&nbsp")]</a></td>"
jobs += "<td width='20%'><a href='byond://?src=[UID()];jobban3=[job.title];jobban4=[M.UID()];dbbanaddckey=[M.ckey]'>[replacetext(job.title, " ", "&nbsp")]</a></td>"
counter++
if(counter >= 5) //So things dont get squiiiiished!
@@ -562,17 +562,17 @@
//Service (Grey)
counter = 0
jobs += "<table cellpadding='1' cellspacing='0' width='100%'>"
jobs += "<tr bgcolor='dddddd'><th colspan='[length(GLOB.service_positions)]'><a href='?src=[UID()];jobban3=servicedept;jobban4=[M.UID()];dbbanaddckey=[M.ckey]'>Service Positions</a></th></tr><tr align='center'>"
jobs += "<tr bgcolor='dddddd'><th colspan='[length(GLOB.service_positions)]'><a href='byond://?src=[UID()];jobban3=servicedept;jobban4=[M.UID()];dbbanaddckey=[M.ckey]'>Service Positions</a></th></tr><tr align='center'>"
for(var/jobPos in GLOB.service_positions)
if(!jobPos) continue
var/datum/job/job = SSjobs.GetJob(jobPos)
if(!job) continue
if(jobban_isbanned(M, job.title))
jobs += "<td width='20%'><a href='?src=[UID()];jobban3=[job.title];jobban4=[M.UID()];dbbanaddckey=[M.ckey]'><font color=red>[replacetext(job.title, " ", "&nbsp")]</font></a></td>"
jobs += "<td width='20%'><a href='byond://?src=[UID()];jobban3=[job.title];jobban4=[M.UID()];dbbanaddckey=[M.ckey]'><font color=red>[replacetext(job.title, " ", "&nbsp")]</font></a></td>"
counter++
else
jobs += "<td width='20%'><a href='?src=[UID()];jobban3=[job.title];jobban4=[M.UID()];dbbanaddckey=[M.ckey]'>[replacetext(job.title, " ", "&nbsp")]</a></td>"
jobs += "<td width='20%'><a href='byond://?src=[UID()];jobban3=[job.title];jobban4=[M.UID()];dbbanaddckey=[M.ckey]'>[replacetext(job.title, " ", "&nbsp")]</a></td>"
counter++
if(counter >= 5) //So things dont get squiiiiished!
@@ -583,17 +583,17 @@
//Supply (Brown)
counter = 0
jobs += "<table cellpadding='1' cellspacing='0' width='100%'>"
jobs += "<tr bgcolor='e2c59d'><th colspan='[length(GLOB.supply_positions)]'><a href='?src=[UID()];jobban3=supplydept;jobban4=[M.UID()];dbbanaddckey=[M.ckey]'>Supply Positions</a></th></tr><tr align='center'>"
jobs += "<tr bgcolor='e2c59d'><th colspan='[length(GLOB.supply_positions)]'><a href='byond://?src=[UID()];jobban3=supplydept;jobban4=[M.UID()];dbbanaddckey=[M.ckey]'>Supply Positions</a></th></tr><tr align='center'>"
for(var/jobPos in GLOB.supply_positions)
if(!jobPos) continue
var/datum/job/job = SSjobs.GetJob(jobPos)
if(!job) continue
if(jobban_isbanned(M, job.title))
jobs += "<td width='20%'><a href='?src=[UID()];jobban3=[job.title];jobban4=[M.UID()];dbbanaddckey=[M.ckey]'><font color=red>[replacetext(job.title, " ", "&nbsp")]</font></a></td>"
jobs += "<td width='20%'><a href='byond://?src=[UID()];jobban3=[job.title];jobban4=[M.UID()];dbbanaddckey=[M.ckey]'><font color=red>[replacetext(job.title, " ", "&nbsp")]</font></a></td>"
counter++
else
jobs += "<td width='20%'><a href='?src=[UID()];jobban3=[job.title];jobban4=[M.UID()];dbbanaddckey=[M.ckey]'>[replacetext(job.title, " ", "&nbsp")]</a></td>"
jobs += "<td width='20%'><a href='byond://?src=[UID()];jobban3=[job.title];jobban4=[M.UID()];dbbanaddckey=[M.ckey]'>[replacetext(job.title, " ", "&nbsp")]</a></td>"
counter++
if(counter >= 5) //So things dont get squiiiiished!
@@ -604,17 +604,17 @@
//Non-Human (Green)
counter = 0
jobs += "<table cellpadding='1' cellspacing='0' width='100%'>"
jobs += "<tr bgcolor='ccffcc'><th colspan='[length(GLOB.nonhuman_positions)+1]'><a href='?src=[UID()];jobban3=nonhumandept;jobban4=[M.UID()];dbbanaddckey=[M.ckey]'>Non-human Positions</a></th></tr><tr align='center'>"
jobs += "<tr bgcolor='ccffcc'><th colspan='[length(GLOB.nonhuman_positions)+1]'><a href='byond://?src=[UID()];jobban3=nonhumandept;jobban4=[M.UID()];dbbanaddckey=[M.ckey]'>Non-human Positions</a></th></tr><tr align='center'>"
for(var/jobPos in GLOB.nonhuman_positions)
if(!jobPos) continue
var/datum/job/job = SSjobs.GetJob(jobPos)
if(!job) continue
if(jobban_isbanned(M, job.title))
jobs += "<td width='20%'><a href='?src=[UID()];jobban3=[job.title];jobban4=[M.UID()];dbbanaddckey=[M.ckey]'><font color=red>[replacetext(job.title, " ", "&nbsp")]</font></a></td>"
jobs += "<td width='20%'><a href='byond://?src=[UID()];jobban3=[job.title];jobban4=[M.UID()];dbbanaddckey=[M.ckey]'><font color=red>[replacetext(job.title, " ", "&nbsp")]</font></a></td>"
counter++
else
jobs += "<td width='20%'><a href='?src=[UID()];jobban3=[job.title];jobban4=[M.UID()];dbbanaddckey=[M.ckey]'>[replacetext(job.title, " ", "&nbsp")]</a></td>"
jobs += "<td width='20%'><a href='byond://?src=[UID()];jobban3=[job.title];jobban4=[M.UID()];dbbanaddckey=[M.ckey]'>[replacetext(job.title, " ", "&nbsp")]</a></td>"
counter++
if(counter >= 5) //So things dont get squiiiiished!
@@ -623,29 +623,29 @@
//Drone
if(jobban_isbanned(M, "Drone"))
jobs += "<td width='20%'><a href='?src=[UID()];jobban3=Drone;jobban4=[M.UID()];dbbanaddckey=[M.ckey]'><font color=red>Drone</font></a></td>"
jobs += "<td width='20%'><a href='byond://?src=[UID()];jobban3=Drone;jobban4=[M.UID()];dbbanaddckey=[M.ckey]'><font color=red>Drone</font></a></td>"
else
jobs += "<td width='20%'><a href='?src=[UID()];jobban3=Drone;jobban4=[M.UID()];dbbanaddckey=[M.ckey]'>Drone</a></td>"
jobs += "<td width='20%'><a href='byond://?src=[UID()];jobban3=Drone;jobban4=[M.UID()];dbbanaddckey=[M.ckey]'>Drone</a></td>"
//pAI
if(jobban_isbanned(M, "pAI"))
jobs += "<td width='20%'><a href='?src=[UID()];jobban3=pAI;jobban4=[M.UID()];dbbanaddckey=[M.ckey]'><font color=red>pAI</font></a></td>"
jobs += "<td width='20%'><a href='byond://?src=[UID()];jobban3=pAI;jobban4=[M.UID()];dbbanaddckey=[M.ckey]'><font color=red>pAI</font></a></td>"
else
jobs += "<td width='20%'><a href='?src=[UID()];jobban3=pAI;jobban4=[M.UID()];dbbanaddckey=[M.ckey]'>pAI</a></td>"
jobs += "<td width='20%'><a href='byond://?src=[UID()];jobban3=pAI;jobban4=[M.UID()];dbbanaddckey=[M.ckey]'>pAI</a></td>"
jobs += "</tr></table>"
//Antagonist (Orange)
var/isbanned_dept = jobban_isbanned(M, "Syndicate")
jobs += "<table cellpadding='1' cellspacing='0' width='100%'>"
jobs += "<tr bgcolor='ffeeaa'><th colspan='10'><a href='?src=[UID()];jobban3=Syndicate;jobban4=[M.UID()];dbbanaddckey=[M.ckey]'>Antagonist Positions</a></th></tr><tr align='center'>"
jobs += "<tr bgcolor='ffeeaa'><th colspan='10'><a href='byond://?src=[UID()];jobban3=Syndicate;jobban4=[M.UID()];dbbanaddckey=[M.ckey]'>Antagonist Positions</a></th></tr><tr align='center'>"
counter = 0
for(var/role in GLOB.antag_roles)
if(jobban_isbanned(M, role) || isbanned_dept)
jobs += "<td width='20%'><a href='?src=[UID()];jobban3=[role];jobban4=[M.UID()];dbbanaddckey=[M.ckey]'><font color=red>[replacetext(role, " ", "&nbsp")]</font></a></td>"
jobs += "<td width='20%'><a href='byond://?src=[UID()];jobban3=[role];jobban4=[M.UID()];dbbanaddckey=[M.ckey]'><font color=red>[replacetext(role, " ", "&nbsp")]</font></a></td>"
else
jobs += "<td width='20%'><a href='?src=[UID()];jobban3=[role];jobban4=[M.UID()];dbbanaddckey=[M.ckey]'>[replacetext(role, " ", "&nbsp")]</a></td>"
jobs += "<td width='20%'><a href='byond://?src=[UID()];jobban3=[role];jobban4=[M.UID()];dbbanaddckey=[M.ckey]'>[replacetext(role, " ", "&nbsp")]</a></td>"
counter++
if(counter >= 5) //So things dont get squiiiiished!
@@ -660,9 +660,9 @@
counter = 0
for(var/role in GLOB.other_roles)
if(jobban_isbanned(M, role) || isbanned_dept)
jobs += "<td width='20%'><a href='?src=[UID()];jobban3=[role];jobban4=[M.UID()];dbbanaddckey=[M.ckey]'><font color=red>[replacetext(role, " ", "&nbsp")]</font></a></td>"
jobs += "<td width='20%'><a href='byond://?src=[UID()];jobban3=[role];jobban4=[M.UID()];dbbanaddckey=[M.ckey]'><font color=red>[replacetext(role, " ", "&nbsp")]</font></a></td>"
else
jobs += "<td width='20%'><a href='?src=[UID()];jobban3=[role];jobban4=[M.UID()];dbbanaddckey=[M.ckey]'>[replacetext(role, " ", "&nbsp")]</a></td>"
jobs += "<td width='20%'><a href='byond://?src=[UID()];jobban3=[role];jobban4=[M.UID()];dbbanaddckey=[M.ckey]'>[replacetext(role, " ", "&nbsp")]</a></td>"
counter++
if(counter >= 5) //So things dont get squiiiiished!
@@ -671,7 +671,7 @@
jobs += "</tr></table>"
body = "<body>[jobs]</body>"
dat = "<tt>[header][body]</tt>"
dat = "<!DOCTYPE html><tt>[header][body]</tt>"
usr << browse(dat, "window=jobban2;size=800x490")
return
@@ -887,7 +887,7 @@
return
if(query_noteedits.NextRow())
var/edit_log = query_noteedits.item[1]
usr << browse(edit_log,"window=noteedits")
usr << browse("<!DOCTYPE html>[edit_log]","window=noteedits")
qdel(query_noteedits)
else if(href_list["newban"])
@@ -991,7 +991,7 @@
return
if(query_watchedits.NextRow())
var/edit_log = query_watchedits.item[1]
usr << browse(edit_log,"window=watchedits")
usr << browse("<!DOCTYPE html>[edit_log]","window=watchedits")
qdel(query_watchedits)
else if(href_list["mute"])
@@ -1013,11 +1013,11 @@
if(SSticker && SSticker.mode)
return alert(usr, "The game has already started.", null, null, null, null)
var/dat = {"<b>What mode do you wish to play?</b><hr>"}
var/dat = {"<!DOCTYPE html><b>What mode do you wish to play?</b><hr>"}
for(var/mode in GLOB.configuration.gamemode.gamemodes)
dat += {"<A href='?src=[UID()];c_mode2=[mode]'>[GLOB.configuration.gamemode.gamemode_names[mode]]</A><br>"}
dat += {"<A href='?src=[UID()];c_mode2=secret'>Secret</A><br>"}
dat += {"<A href='?src=[UID()];c_mode2=random'>Random</A><br>"}
dat += {"<A href='byond://?src=[UID()];c_mode2=[mode]'>[GLOB.configuration.gamemode.gamemode_names[mode]]</A><br>"}
dat += {"<A href='byond://?src=[UID()];c_mode2=secret'>Secret</A><br>"}
dat += {"<A href='byond://?src=[UID()];c_mode2=random'>Random</A><br>"}
dat += {"Now: [GLOB.master_mode]"}
usr << browse(dat, "window=c_mode")
@@ -1028,10 +1028,10 @@
return alert(usr, "The game has already started.", null, null, null, null)
if(GLOB.master_mode != "secret")
return alert(usr, "The game mode has to be secret!", null, null, null, null)
var/dat = {"<b>What game mode do you want to force secret to be? Use this if you want to change the game mode, but want the players to believe it's secret. This will only work if the current game mode is secret.</b><hr>"}
var/dat = {"<!DOCTYPE html><b>What game mode do you want to force secret to be? Use this if you want to change the game mode, but want the players to believe it's secret. This will only work if the current game mode is secret.</b><hr>"}
for(var/mode in GLOB.configuration.gamemode.gamemodes)
dat += {"<A href='?src=[UID()];f_secret2=[mode]'>[GLOB.configuration.gamemode.gamemode_names[mode]]</A><br>"}
dat += {"<A href='?src=[UID()];f_secret2=secret'>Random (default)</A><br>"}
dat += {"<A href='byond://?src=[UID()];f_secret2=[mode]'>[GLOB.configuration.gamemode.gamemode_names[mode]]</A><br>"}
dat += {"<A href='byond://?src=[UID()];f_secret2=secret'>Random (default)</A><br>"}
dat += {"Now: [GLOB.secret_force_mode]"}
usr << browse(dat, "window=f_secret")
@@ -2371,12 +2371,12 @@
else if(istype(fax, /obj/item/paper_bundle))
//having multiple people turning pages on a paper_bundle can cause issues
//open a browse window listing the contents instead
var/data = ""
var/data = "<!DOCTYPE html>"
var/obj/item/paper_bundle/B = fax
for(var/page = 1, page <= B.amount + 1, page++)
var/obj/pageobj = B.contents[page]
data += "<A href='?src=[UID()];AdminFaxViewPage=[page];paper_bundle=\ref[B]'>Page [page] - [pageobj.name]</A><BR>"
data += "<A href='byond://?src=[UID()];AdminFaxViewPage=[page];paper_bundle=\ref[B]'>Page [page] - [pageobj.name]</A><BR>"
usr << browse(data, "window=PaperBundle[B.UID()]")
else
@@ -2551,10 +2551,10 @@
to_chat(sender, "<span class='specialnoticebold'>Your headset pings, notifying you that a reply to your fax has arrived.</span>")
if(sender)
log_admin("[key_name(src.owner)] replied to a fax message from [key_name(sender)]: [input]")
message_admins("[key_name_admin(src.owner)] replied to a fax message from [key_name_admin(sender)] (<a href='?_src_=holder;AdminFaxView=\ref[P]'>VIEW</a>).", 1)
message_admins("[key_name_admin(src.owner)] replied to a fax message from [key_name_admin(sender)] (<a href='byond://?_src_=holder;AdminFaxView=\ref[P]'>VIEW</a>).", 1)
else
log_admin("[key_name(src.owner)] sent a fax message to [destination]: [input]")
message_admins("[key_name_admin(src.owner)] sent a fax message to [destination] (<a href='?_src_=holder;AdminFaxView=\ref[P]'>VIEW</a>).", 1)
message_admins("[key_name_admin(src.owner)] sent a fax message to [destination] (<a href='byond://?_src_=holder;AdminFaxView=\ref[P]'>VIEW</a>).", 1)
return
else if(href_list["refreshfaxpanel"])
@@ -2790,7 +2790,7 @@
return
if(query_memoedits.NextRow())
var/edit_log = query_memoedits.item[1]
usr << browse(edit_log,"window=memoeditlist")
usr << browse("<!DOCTYPE html>[edit_log]","window=memoeditlist")
qdel(query_memoedits)
else if(href_list["secretsfun"])
+1 -1
View File
@@ -103,7 +103,7 @@
var/text = ""
for(var/o in objs)
var/datum/t = o
text += "<A HREF='?_src_=vars;Vars=[t.UID()]'>\ref[t]</A>"
text += "<A href='byond://?_src_=vars;Vars=[t.UID()]'>\ref[t]</A>"
if(istype(t, /atom))
var/atom/a = t
+13 -13
View File
@@ -166,17 +166,17 @@
adminhelp(reply) //sender has left, adminhelp instead
return
var/ping_link = check_rights(R_ADMIN, 0, mob) ? "(<a href='?src=[pm_tracker.UID()];ping=[C.key]'>PING</a>)" : ""
var/ping_link = check_rights(R_ADMIN, 0, mob) ? "(<a href='byond://?src=[pm_tracker.UID()];ping=[C.key]'>PING</a>)" : ""
var/ticket_link
var/alert_link = check_rights(R_ADMIN, FALSE, mob) ? "(<a href='?src=[pm_tracker.UID()];adminalert=[C.mob.UID()]'>ALERT</a>)" : ""
var/alert_link = check_rights(R_ADMIN, FALSE, mob) ? "(<a href='byond://?src=[pm_tracker.UID()];adminalert=[C.mob.UID()]'>ALERT</a>)" : ""
if(ticket_id != -1)
if(message_type == MESSAGE_TYPE_MENTORPM)
ticket_link = "(<a href='?_src_=holder;openticket=[ticket_id];is_mhelp=1'>TICKET</a>)"
ticket_link = "(<a href='byond://?_src_=holder;openticket=[ticket_id];is_mhelp=1'>TICKET</a>)"
else
ticket_link = "(<a href='?_src_=holder;openticket=[ticket_id]'>TICKET</a>)"
ticket_link = "(<a href='byond://?_src_=holder;openticket=[ticket_id]'>TICKET</a>)"
var/emoji_msg = "<span class='emoji_enabled'>[msg]</span>"
var/recieve_window_link = "(<a href='?src=[C.pm_tracker.UID()];newtitle=[key]'>WINDOW</a>)"
var/recieve_window_link = "(<a href='byond://?src=[C.pm_tracker.UID()];newtitle=[key]'>WINDOW</a>)"
if(message_type == MESSAGE_TYPE_MENTORPM && check_rights(R_ADMIN|R_MENTOR, 0, C.mob))
recieve_window_link = ticket_link
else if(message_type == MESSAGE_TYPE_ADMINPM && check_rights(R_ADMIN, 0, C.mob))
@@ -187,7 +187,7 @@
else
recieve_message = chat_box_ahelp(recieve_message)
to_chat(C, recieve_message)
var/send_window_link = "(<a href='?src=[pm_tracker.UID()];newtitle=[C.key]'>WINDOW</a>)"
var/send_window_link = "(<a href='byond://?src=[pm_tracker.UID()];newtitle=[C.key]'>WINDOW</a>)"
if(message_type == MESSAGE_TYPE_MENTORPM && check_rights(R_ADMIN|R_MENTOR, 0, mob))
send_window_link = ticket_link
else if(message_type == MESSAGE_TYPE_ADMINPM && check_rights(R_ADMIN, 0, mob))
@@ -348,10 +348,10 @@
// If it was forced open, make them use a special close button that alerts admins to closure
if(forced)
dat += "<div style='float: right'><big><a href='?src=[UID()];altclose=1'>Close</a></big></div>"
dat += "<div style='float: right'><big><a href='byond://?src=[UID()];altclose=1'>Close</a></big></div>"
dat += "<a href='?src=[UID()];refresh=1'>Refresh</a>"
dat += "<a href='?src=[UID()];showarchived=1'>[show_archived ? "Hide" : "Show"] Archived</a>"
dat += "<a href='byond://?src=[UID()];refresh=1'>Refresh</a>"
dat += "<a href='byond://?src=[UID()];showarchived=1'>[show_archived ? "Hide" : "Show"] Archived</a>"
dat += "<br>"
for(var/title in pms)
if(pms[title].archived && !show_archived)
@@ -363,7 +363,7 @@
class = "linkOn"
else if(!pms[title].read)
label = "<i>*[label]</i>"
dat += "<a class='[class]' href='?src=[UID()];newtitle=[title]'>[label]</a>"
dat += "<a class='[class]' href='byond://?src=[UID()];newtitle=[title]'>[label]</a>"
var/datum/pm_convo/convo = pms[current_title]
var/datum/browser/popup = new(user, window_id, "Messages", 1000, 600, src)
@@ -393,10 +393,10 @@
dat += "<i><span class='typing'>[current_title] is typing</span></i>"
dat += "<br>"
dat += "</h4>"
dat += "<a href='?src=[UID()];reply=[current_title]'>Reply</a>"
dat += "<a href='?src=[UID()];archive=[current_title]'>[convo.archived ? "Unarchive" : "Archive"]</a>"
dat += "<a href='byond://?src=[UID()];reply=[current_title]'>Reply</a>"
dat += "<a href='byond://?src=[UID()];archive=[current_title]'>[convo.archived ? "Unarchive" : "Archive"]</a>"
if(check_rights(R_ADMIN, FALSE, user))
dat += "<a href='?src=[UID()];ping=[current_title]'>Ping</a>"
dat += "<a href='byond://?src=[UID()];ping=[current_title]'>Ping</a>"
popup.set_content(dat)
popup.open()
+15
View File
@@ -914,6 +914,21 @@ GLOBAL_PROTECT(AdminProcCallSpamPrevention)
GLOB.error_cache.showTo(usr)
/client/proc/allow_browser_inspect()
set category = "Debug"
set name = "Allow Browser Inspect"
set desc = "Allow browser debugging via inspect"
if(!check_rights(R_MAINTAINER) || !isclient(src))
return
if(byond_version < 516)
to_chat(src, "<span class='warning'>You can only use this on 516!</span>")
return
to_chat(src, "<span class='info'>You can now right click to use inspect on browsers.</span>")
winset(src, "", "browser-options=find,devtools")
/client/proc/visualise_active_turfs()
set category = "Debug"
set name = "Visualise Active Turfs"
@@ -26,9 +26,9 @@
usr.client.images += preview
if(alert(usr,"Confirm location.","Template Confirm","Yes","No") == "Yes")
var/timer = start_watch()
message_admins("<span class='adminnotice'>[key_name_admin(usr)] has started to place the map template ([template.name]) at <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[T.x];Y=[T.y];Z=[T.z]'>(JMP)</a></span>")
message_admins("<span class='adminnotice'>[key_name_admin(usr)] has started to place the map template ([template.name]) at <A href='byond://?_src_=holder;adminplayerobservecoodjump=1;X=[T.x];Y=[T.y];Z=[T.z]'>(JMP)</a></span>")
if(template.load(T, centered = TRUE))
message_admins("<span class='adminnotice'>[key_name_admin(usr)] has placed a map template ([template.name]) at <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[T.x];Y=[T.y];Z=[T.z]'>(JMP)</a>. Took [stop_watch(timer)]s.</span>")
message_admins("<span class='adminnotice'>[key_name_admin(usr)] has placed a map template ([template.name]) at <A href='byond://?_src_=holder;adminplayerobservecoodjump=1;X=[T.x];Y=[T.y];Z=[T.z]'>(JMP)</a>. Took [stop_watch(timer)]s.</span>")
else
to_chat(usr, "Failed to place map")
usr.client.images -= preview
+7 -7
View File
@@ -13,13 +13,13 @@
/datum/admins/proc/one_click_antag()
var/dat = {"<B>One-click Antagonist</B><br>
<a href='?src=[UID()];makeAntag=1'>Make Traitors</a><br>
<a href='?src=[UID()];makeAntag=2'>Make Changelings</a><br>
<a href='?src=[UID()];makeAntag=3'>Make Revolutionaries</a><br>
<a href='?src=[UID()];makeAntag=4'>Make Cult</a><br>
<a href='?src=[UID()];makeAntag=5'>Make Wizard (Requires Ghosts)</a><br>
<a href='?src=[UID()];makeAntag=6'>Make Vampires</a><br>
<a href='?src=[UID()];makeAntag=7'>Make Abductor Team (Requires Ghosts)</a><br>
<a href='byond://?src=[UID()];makeAntag=1'>Make Traitors</a><br>
<a href='byond://?src=[UID()];makeAntag=2'>Make Changelings</a><br>
<a href='byond://?src=[UID()];makeAntag=3'>Make Revolutionaries</a><br>
<a href='byond://?src=[UID()];makeAntag=4'>Make Cult</a><br>
<a href='byond://?src=[UID()];makeAntag=5'>Make Wizard (Requires Ghosts)</a><br>
<a href='byond://?src=[UID()];makeAntag=6'>Make Vampires</a><br>
<a href='byond://?src=[UID()];makeAntag=7'>Make Abductor Team (Requires Ghosts)</a><br>
"}
usr << browse(dat, "window=oneclickantag;size=400x400")
return
+1 -1
View File
@@ -43,7 +43,7 @@ GLOBAL_LIST_EMPTY(sounds_cache)
uploaded_sound.volume = 100 * M.client.prefs.get_channel_volume(CHANNEL_ADMIN)
var/this_uid = M.client.UID()
to_chat(M, "<span class='boldannounceic'>[ckey] played <code>[S]</code> (<a href='?src=[this_uid];action=silenceSound'>SILENCE</a>) (<a href='?src=[this_uid];action=muteAdmin&a=[ckey]'>ALWAYS SILENCE THIS ADMIN</a>)</span>")
to_chat(M, "<span class='boldannounceic'>[ckey] played <code>[S]</code> (<a href='byond://?src=[this_uid];action=silenceSound'>SILENCE</a>) (<a href='byond://?src=[this_uid];action=muteAdmin&a=[ckey]'>ALWAYS SILENCE THIS ADMIN</a>)</span>")
SEND_SOUND(M, uploaded_sound)
SSblackbox.record_feedback("tally", "admin_verb", 1, "Play Global Sound") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
+2 -2
View File
@@ -30,7 +30,7 @@
deity = GET_CULT_DATA(entity_name, "Cult God")
log_say("(PRAYER) [msg]", usr)
msg = "<span class='notice'>[bicon(cross)]<b><font color=[font_color]>[prayer_type][deity ? " (to [deity])" : ""][mind && HAS_MIND_TRAIT(usr, TRAIT_HOLY) ? " (blessings: [mind.num_blessed])" : ""]:</font> [key_name(src, 1)] ([ADMIN_QUE(src,"?")]) ([ADMIN_PP(src,"PP")]) ([ADMIN_VV(src,"VV")]) ([ADMIN_TP(src,"TP")]) ([ADMIN_SM(src,"SM")]) ([admin_jump_link(src)]) ([ADMIN_SC(src,"SC")]) (<A HREF='?_src_=holder;Bless=[UID()]'>BLESS</A>) (<A HREF='?_src_=holder;Smite=[UID()]'>SMITE</A>):</b> [msg]</span>"
msg = "<span class='notice'>[bicon(cross)]<b><font color=[font_color]>[prayer_type][deity ? " (to [deity])" : ""][mind && HAS_MIND_TRAIT(usr, TRAIT_HOLY) ? " (blessings: [mind.num_blessed])" : ""]:</font> [key_name(src, 1)] ([ADMIN_QUE(src,"?")]) ([ADMIN_PP(src,"PP")]) ([ADMIN_VV(src,"VV")]) ([ADMIN_TP(src,"TP")]) ([ADMIN_SM(src,"SM")]) ([admin_jump_link(src)]) ([ADMIN_SC(src,"SC")]) (<A href='byond://?_src_=holder;Bless=[UID()]'>BLESS</A>) (<A href='byond://?_src_=holder;Smite=[UID()]'>SMITE</A>):</b> [msg]</span>"
for(var/client/X in GLOB.admins)
if(check_rights(R_EVENT,0,X.mob))
@@ -67,7 +67,7 @@
"sender_uid" = Sender.UID(),
"message" = html_decode(msg)))
GLOB.ert_request_messages.Insert(1, insert_this) // insert it to the top of the list
msg = "<span class='adminnotice'><b><font color=orange>ERT REQUEST: </font>[key_name(Sender, 1)] ([ADMIN_PP(Sender,"PP")]) ([ADMIN_VV(Sender,"VV")]) ([ADMIN_TP(Sender,"TP")]) ([ADMIN_SM(Sender,"SM")]) ([admin_jump_link(Sender)]) ([ADMIN_BSA(Sender,"BSA")]) (<A HREF='?_src_=holder;ErtReply=[Sender.UID()]'>RESPOND</A>):</b> [msg]</span>"
msg = "<span class='adminnotice'><b><font color=orange>ERT REQUEST: </font>[key_name(Sender, 1)] ([ADMIN_PP(Sender,"PP")]) ([ADMIN_VV(Sender,"VV")]) ([ADMIN_TP(Sender,"TP")]) ([ADMIN_SM(Sender,"SM")]) ([admin_jump_link(Sender)]) ([ADMIN_BSA(Sender,"BSA")]) (<A href='byond://?_src_=holder;ErtReply=[Sender.UID()]'>RESPOND</A>):</b> [msg]</span>"
if(repeat_warning)
msg += "<BR><span class='adminnotice'><b>WARNING: ERT request has gone 5 minutes with no reply!</b></span>"
for(var/client/X in GLOB.admins)
+9 -9
View File
@@ -1042,9 +1042,9 @@ Traitors and the like can also be revived with the previous role mostly intact.
msg += "<TR><TD>[key_string]</TD><TD>[H.real_name]</TD><TD>[job_string]</TD><TD>[mins_ssd]</TD><TD>[role_string][obj_string]</TD>"
msg += "<TD>[get_area(H)]</TD><TD>[ADMIN_PP(H,"PP")]</TD>"
if(istype(H.loc, /obj/machinery/cryopod))
msg += "<TD><A href='?_src_=holder;cryossd=[H.UID()]'>De-Spawn</A></TD>"
msg += "<TD><A href='byond://?_src_=holder;cryossd=[H.UID()]'>De-Spawn</A></TD>"
else
msg += "<TD><A href='?_src_=holder;cryossd=[H.UID()]'>Cryo</A></TD>"
msg += "<TD><A href='byond://?_src_=holder;cryossd=[H.UID()]'>Cryo</A></TD>"
msg += "</TR>"
msg += "</TABLE><br></BODY></HTML>"
@@ -1082,9 +1082,9 @@ Traitors and the like can also be revived with the previous role mostly intact.
msg += "<TR><TD>[key_string]</TD><TD>[H.real_name]</TD><TD>[job_string]</TD><TD>[mins_afk]</TD><TD>[role_string][obj_string]</TD>"
msg += "<TD>[get_area(H)]</TD><TD>[ADMIN_PP(H,"PP")]</TD>"
if(istype(H.loc, /obj/machinery/cryopod))
msg += "<TD><A href='?_src_=holder;cryossd=[H.UID()];cryoafk=1'>De-Spawn</A></TD>"
msg += "<TD><A href='byond://?_src_=holder;cryossd=[H.UID()];cryoafk=1'>De-Spawn</A></TD>"
else
msg += "<TD><A href='?_src_=holder;cryossd=[H.UID()];cryoafk=1'>Cryo</A></TD>"
msg += "<TD><A href='byond://?_src_=holder;cryossd=[H.UID()];cryoafk=1'>Cryo</A></TD>"
msg += "</TR>"
msg += "</TABLE></BODY></HTML>"
src << browse(msg, "window=Player_ssd_afk_check;size=600x300")
@@ -1147,16 +1147,16 @@ Traitors and the like can also be revived with the previous role mostly intact.
to_chat(usr, "<span class='warning'>This verb can only be used if the round has started.</span>")
return
var/list/dat = list()
var/list/dat = list("<!DOCTYPE html>")
for(var/datum/station_goal/S in SSticker.mode.station_goals)
dat += "[S.name][S.completed ? " (C)" : ""] - <a href='?src=[S.UID()];announce=1'>Announce</a> | <a href='?src=[S.UID()];remove=1'>Remove</a>"
dat += "[S.name][S.completed ? " (C)" : ""] - <a href='byond://?src=[S.UID()];announce=1'>Announce</a> | <a href='byond://?src=[S.UID()];remove=1'>Remove</a>"
dat += ""
dat += "<a href='?src=[UID()];add_station_goal=1'>Add New Goal</a>"
dat += "<a href='byond://?src=[UID()];add_station_goal=1'>Add New Goal</a>"
dat += ""
dat += "<b>Secondary goals</b>"
for(var/datum/station_goal/secondary/SG in SSticker.mode.secondary_goals)
dat += "[SG.admin_desc][SG.completed ? " (C)" : ""] for [SG.requester_name || SG.department] - <a href='?src=[SG.UID()];announce=1'>Announce</a> | <a href='?src=[SG.UID()];remove=1'>Remove</a> | <a href='?src=[SG.UID()];mark_complete=1'>Mark complete</a> | <a href='?src=[SG.UID()];reset_progress=1'>Reset progress</a>"
dat += "<a href='?src=[UID()];add_secondary_goal=1'>Add New Secondary Goal</a>"
dat += "[SG.admin_desc][SG.completed ? " (C)" : ""] for [SG.requester_name || SG.department] - <a href='byond://?src=[SG.UID()];announce=1'>Announce</a> | <a href='byond://?src=[SG.UID()];remove=1'>Remove</a> | <a href='byond://?src=[SG.UID()];mark_complete=1'>Mark complete</a> | <a href='byond://?src=[SG.UID()];reset_progress=1'>Reset progress</a>"
dat += "<a href='byond://?src=[UID()];add_secondary_goal=1'>Add New Secondary Goal</a>"
usr << browse(dat.Join("<br>"), "window=goals;size=400x400")

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