mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-27 14:07:51 +01:00
Merge branch 'master' of https://github.com/Fordoxia/CRUNCHParadise
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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" = (
|
||||
|
||||
@@ -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" = (
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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>")
|
||||
|
||||
@@ -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>"
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -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>")
|
||||
|
||||
|
||||
/**
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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>"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
@@ -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>"
|
||||
|
||||
@@ -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
@@ -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
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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")
|
||||
|
||||
|
||||
@@ -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>"
|
||||
|
||||
|
||||
@@ -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 ...")
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -98,10 +98,10 @@
|
||||
dat += "<center><h4><font color='blue'[message]</h5></center>"
|
||||
|
||||
if(auth)
|
||||
dat += "<h4><dd><A href='?src=[UID()];auth=1'>	<font color='green'>\[Authenticated\]</font></a>	/"
|
||||
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'>	<font color='green'>\[Authenticated\]</font></a>	/"
|
||||
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'>	<font color='red'>\[Unauthenticated\]</font></a>	/"
|
||||
dat += "<h4><dd><A href='byond://?src=[UID()];auth=1'>	<font color='red'>\[Unauthenticated\]</font></a>	/"
|
||||
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)
|
||||
//	 = TAB
|
||||
var/i = 0
|
||||
dat += "<dd><A href='?src=[UID()];find=1'>	[++i]. Link To A Server</a></dd>"
|
||||
dat += "<dd><A href='byond://?src=[UID()];find=1'>	[++i]. Link To A Server</a></dd>"
|
||||
if(auth)
|
||||
if(!linkedServer || (linkedServer.stat & (NOPOWER|BROKEN)))
|
||||
dat += "<dd><A>	ERROR: Server not found!</A><br></dd>"
|
||||
else
|
||||
dat += "<dd><A href='?src=[UID()];view=1'>	[++i]. View Message Logs </a><br></dd>"
|
||||
dat += "<dd><A href='?src=[UID()];viewr=1'>	[++i]. View Request Console Logs </a></br></dd>"
|
||||
dat += "<dd><A href='?src=[UID()];clear=1'>	[++i]. Clear Message Logs</a><br></dd>"
|
||||
dat += "<dd><A href='?src=[UID()];clearr=1'>	[++i]. Clear Request Console Logs</a><br></dd>"
|
||||
dat += "<dd><A href='?src=[UID()];pass=1'>	[++i]. Set Custom Key</a><br></dd>"
|
||||
dat += "<dd><A href='?src=[UID()];msg=1'>	[++i]. Send Admin Message</a><br></dd>"
|
||||
dat += "<dd><A href='byond://?src=[UID()];view=1'>	[++i]. View Message Logs </a><br></dd>"
|
||||
dat += "<dd><A href='byond://?src=[UID()];viewr=1'>	[++i]. View Request Console Logs </a></br></dd>"
|
||||
dat += "<dd><A href='byond://?src=[UID()];clear=1'>	[++i]. Clear Message Logs</a><br></dd>"
|
||||
dat += "<dd><A href='byond://?src=[UID()];clearr=1'>	[++i]. Clear Request Console Logs</a><br></dd>"
|
||||
dat += "<dd><A href='byond://?src=[UID()];pass=1'>	[++i]. Set Custom Key</a><br></dd>"
|
||||
dat += "<dd><A href='byond://?src=[UID()];msg=1'>	[++i]. Send Admin Message</a><br></dd>"
|
||||
else
|
||||
for(var/n = ++i; n <= optioncount; n++)
|
||||
dat += "<dd><font color='blue'>	[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"])
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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())
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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"])
|
||||
|
||||
@@ -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]°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
@@ -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
|
||||
|
||||
|
||||
@@ -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()]°K|[return_temperature() - T0C]°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>
|
||||
"}
|
||||
|
||||
@@ -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>
|
||||
"}
|
||||
|
||||
@@ -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> [name] - <a href='?src=[UID()];toggle_repairs=1'>[equip_ready?"A":"Dea"]ctivate</a>"
|
||||
return "<span style=\"color:[equip_ready?"#0f0":"#f00"];\">*</span> [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> [name] - <a href='?src=[UID()];toggle_relay=1'>[equip_ready?"A":"Dea"]ctivate</a>"
|
||||
return "<span style=\"color:[equip_ready?"#0f0":"#f00"];\">*</span> [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)
|
||||
|
||||
@@ -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> [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> [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
|
||||
|
||||
@@ -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(!..())
|
||||
|
||||
@@ -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()]°K|[return_temperature() - T0C]°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")
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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];'> </span><a href='?src=[UID()];color=1'>Change color</a></center>"
|
||||
dat += "<center><span style='border:1px solid #161616; background-color: [colour];'> </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];'> </span><a href='?src=[UID()];color=1'>Change color</a></center>"
|
||||
dat += "<center><span style='border:1px solid #161616; background-color: [colour];'> </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" : ""]"
|
||||
|
||||
@@ -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>")
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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")
|
||||
|
||||
|
||||
@@ -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]).")
|
||||
|
||||
@@ -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")
|
||||
|
||||
|
||||
@@ -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")
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 += {"
|
||||
|
||||
@@ -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>
|
||||
"}
|
||||
|
||||
|
||||
@@ -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>
|
||||
<A href='?src=[UID()];secretsadmin=showgm'>Show Game Mode</A>
|
||||
<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>
|
||||
<A href='byond://?src=[UID()];secretsadmin=showgm'>Show Game Mode</A>
|
||||
<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) ? " <A href='?src=[UID()];secretsfun=togglebombcap'>Toggle bomb cap</A><br>" : "<br>"]
|
||||
[check_rights(R_SERVER, 0) ? " <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>
|
||||
<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>
|
||||
<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>
|
||||
<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>
|
||||
<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>
|
||||
<A href='?src=[UID()];secretsfun=whiteout'>Fix all lights</A><BR>
|
||||
<A href='?src=[UID()];secretsfun=power'>Make all areas powered</A>
|
||||
<A href='?src=[UID()];secretsfun=unpower'>Make all areas unpowered</A>
|
||||
<A href='?src=[UID()];secretsfun=quickpower'>Power all SMES</A><BR>
|
||||
<A href='byond://?src=[UID()];secretsfun=blackout'>Break all lights</A>
|
||||
<A href='byond://?src=[UID()];secretsfun=whiteout'>Fix all lights</A><BR>
|
||||
<A href='byond://?src=[UID()];secretsfun=power'>Make all areas powered</A>
|
||||
<A href='byond://?src=[UID()];secretsfun=unpower'>Make all areas unpowered</A>
|
||||
<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>
|
||||
<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>
|
||||
<BR>
|
||||
<B>Coder Secrets</B><BR>
|
||||
<BR>
|
||||
<A href='?src=[UID()];secretsadmin=list_job_debug'>Show Job Debug</A>
|
||||
<A href='?src=[UID()];secretscoder=spawn_objects'>Admin Log</A><BR>
|
||||
<A href='byond://?src=[UID()];secretsadmin=list_job_debug'>Show Job Debug</A>
|
||||
<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>
|
||||
<A href='?src=[UID()];secretsfun=striketeam_syndicate'>Send in a Syndie Strike Team</A>
|
||||
<BR><A href='?src=[UID()];secretsfun=deathsquad'>Send in the Deathsquad</A>
|
||||
<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>
|
||||
<A href='byond://?src=[UID()];secretsfun=striketeam_syndicate'>Send in a Syndie Strike Team</A>
|
||||
<BR><A href='byond://?src=[UID()];secretsfun=deathsquad'>Send in the Deathsquad</A>
|
||||
<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>
|
||||
<A href='byond://?src=[UID()];secretsfun=weatherashstorm'>Weather - Ash Storm</A>
|
||||
<BR>
|
||||
<b>Reinforce Station</b><BR>
|
||||
<A href='?src=[UID()];secretsfun=gammashuttle'>Move the Gamma Armory</A>
|
||||
<A href='byond://?src=[UID()];secretsfun=gammashuttle'>Move the Gamma Armory</A>
|
||||
<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>
|
||||
<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>
|
||||
<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>
|
||||
<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>
|
||||
<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>
|
||||
<A href='?src=[UID()];secretsfun=onlyone'>There can only be one!</A>
|
||||
<A href='?src=[UID()];secretsfun=onlyme'>There can only be me!</A>
|
||||
<A href='?src=[UID()];secretsfun=onlyoneteam'>Dodgeball (TDM)!</A><BR>
|
||||
<A href='byond://?src=[UID()];secretsfun=traitor_all'>Everyone is the traitor</A>
|
||||
<A href='byond://?src=[UID()];secretsfun=onlyone'>There can only be one!</A>
|
||||
<A href='byond://?src=[UID()];secretsfun=onlyme'>There can only be me!</A>
|
||||
<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>
|
||||
<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>
|
||||
<A href='?src=[UID()];secretsfun=schoolgirl'>Japanese Animes Mode</A>
|
||||
<A href='?src=[UID()];secretsfun=eagles'>Egalitarian Station Mode</A><BR>
|
||||
<A href='?src=[UID()];secretsfun=guns'>Summon Guns</A>
|
||||
<A href='?src=[UID()];secretsfun=magic'>Summon Magic</A>
|
||||
<A href='byond://?src=[UID()];secretsfun=sec_classic1'>Remove firesuits, grilles, and pods</A>
|
||||
<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>
|
||||
<A href='byond://?src=[UID()];secretsfun=schoolgirl'>Japanese Animes Mode</A>
|
||||
<A href='byond://?src=[UID()];secretsfun=eagles'>Egalitarian Station Mode</A><BR>
|
||||
<A href='byond://?src=[UID()];secretsfun=guns'>Summon Guns</A>
|
||||
<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>"
|
||||
|
||||
@@ -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
@@ -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, " ", " ")]</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, " ", " ")]</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, " ", " ")]</a></td>"
|
||||
jobs += "<td width='20%'><a href='byond://?src=[UID()];jobban3=[job.title];jobban4=[M.UID()];dbbanaddckey=[M.ckey]'>[replacetext(job.title, " ", " ")]</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, " ", " ")]</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, " ", " ")]</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, " ", " ")]</a></td>"
|
||||
jobs += "<td width='20%'><a href='byond://?src=[UID()];jobban3=[job.title];jobban4=[M.UID()];dbbanaddckey=[M.ckey]'>[replacetext(job.title, " ", " ")]</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, " ", " ")]</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, " ", " ")]</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, " ", " ")]</a></td>"
|
||||
jobs += "<td width='20%'><a href='byond://?src=[UID()];jobban3=[job.title];jobban4=[M.UID()];dbbanaddckey=[M.ckey]'>[replacetext(job.title, " ", " ")]</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, " ", " ")]</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, " ", " ")]</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, " ", " ")]</a></td>"
|
||||
jobs += "<td width='20%'><a href='byond://?src=[UID()];jobban3=[job.title];jobban4=[M.UID()];dbbanaddckey=[M.ckey]'>[replacetext(job.title, " ", " ")]</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, " ", " ")]</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, " ", " ")]</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, " ", " ")]</a></td>"
|
||||
jobs += "<td width='20%'><a href='byond://?src=[UID()];jobban3=[job.title];jobban4=[M.UID()];dbbanaddckey=[M.ckey]'>[replacetext(job.title, " ", " ")]</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, " ", " ")]</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, " ", " ")]</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, " ", " ")]</a></td>"
|
||||
jobs += "<td width='20%'><a href='byond://?src=[UID()];jobban3=[job.title];jobban4=[M.UID()];dbbanaddckey=[M.ckey]'>[replacetext(job.title, " ", " ")]</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, " ", " ")]</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, " ", " ")]</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, " ", " ")]</a></td>"
|
||||
jobs += "<td width='20%'><a href='byond://?src=[UID()];jobban3=[job.title];jobban4=[M.UID()];dbbanaddckey=[M.ckey]'>[replacetext(job.title, " ", " ")]</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, " ", " ")]</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, " ", " ")]</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, " ", " ")]</a></td>"
|
||||
jobs += "<td width='20%'><a href='byond://?src=[UID()];jobban3=[job.title];jobban4=[M.UID()];dbbanaddckey=[M.ckey]'>[replacetext(job.title, " ", " ")]</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, " ", " ")]</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, " ", " ")]</font></a></td>"
|
||||
else
|
||||
jobs += "<td width='20%'><a href='?src=[UID()];jobban3=[role];jobban4=[M.UID()];dbbanaddckey=[M.ckey]'>[replacetext(role, " ", " ")]</a></td>"
|
||||
jobs += "<td width='20%'><a href='byond://?src=[UID()];jobban3=[role];jobban4=[M.UID()];dbbanaddckey=[M.ckey]'>[replacetext(role, " ", " ")]</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, " ", " ")]</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, " ", " ")]</font></a></td>"
|
||||
else
|
||||
jobs += "<td width='20%'><a href='?src=[UID()];jobban3=[role];jobban4=[M.UID()];dbbanaddckey=[M.ckey]'>[replacetext(role, " ", " ")]</a></td>"
|
||||
jobs += "<td width='20%'><a href='byond://?src=[UID()];jobban3=[role];jobban4=[M.UID()];dbbanaddckey=[M.ckey]'>[replacetext(role, " ", " ")]</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"])
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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!
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
Reference in New Issue
Block a user