Merge pull request #12548 from timothyteakettle/more-events
ports several tg events including fugitives
490
_maps/shuttles/hunter_bounty.dmm
Normal file
@@ -0,0 +1,490 @@
|
||||
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
|
||||
"a" = (
|
||||
/turf/template_noop,
|
||||
/area/template_noop)
|
||||
"b" = (
|
||||
/turf/closed/wall/mineral/plastitanium,
|
||||
/area/shuttle/hunter)
|
||||
"c" = (
|
||||
/obj/effect/mapping_helpers/airlock/cyclelink_helper,
|
||||
/obj/machinery/door/airlock/external,
|
||||
/turf/open/floor/plating,
|
||||
/area/shuttle/hunter)
|
||||
"d" = (
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/shuttle/hunter)
|
||||
"e" = (
|
||||
/obj/structure/shuttle/engine/propulsion{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/plating/airless,
|
||||
/area/shuttle/hunter)
|
||||
"f" = (
|
||||
/obj/effect/mapping_helpers/airlock/cyclelink_helper,
|
||||
/obj/machinery/door/airlock/external,
|
||||
/obj/structure/fans/tiny,
|
||||
/turf/open/floor/plating,
|
||||
/area/shuttle/hunter)
|
||||
"g" = (
|
||||
/obj/structure/sign/warning/vacuum/external,
|
||||
/turf/closed/wall/mineral/plastitanium,
|
||||
/area/shuttle/hunter)
|
||||
"h" = (
|
||||
/turf/open/floor/plating,
|
||||
/area/shuttle/hunter)
|
||||
"i" = (
|
||||
/obj/structure/grille,
|
||||
/obj/structure/window/plastitanium,
|
||||
/turf/open/floor/plating,
|
||||
/area/shuttle/hunter)
|
||||
"j" = (
|
||||
/obj/effect/turf_decal/stripes/line,
|
||||
/turf/open/floor/plating,
|
||||
/area/shuttle/hunter)
|
||||
"k" = (
|
||||
/obj/structure/sign/poster/contraband/bountyhunters,
|
||||
/turf/closed/wall/mineral/plastitanium,
|
||||
/area/shuttle/hunter)
|
||||
"l" = (
|
||||
/obj/effect/mapping_helpers/airlock/cyclelink_helper{
|
||||
dir = 1
|
||||
},
|
||||
/obj/machinery/door/airlock/external,
|
||||
/turf/open/floor/plating,
|
||||
/area/shuttle/hunter)
|
||||
"m" = (
|
||||
/obj/structure/chair/office{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/pod/light,
|
||||
/area/shuttle/hunter)
|
||||
"n" = (
|
||||
/obj/structure/table,
|
||||
/turf/open/floor/pod/light,
|
||||
/area/shuttle/hunter)
|
||||
"o" = (
|
||||
/obj/structure/chair/office{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/pod/light,
|
||||
/area/shuttle/hunter)
|
||||
"p" = (
|
||||
/obj/effect/mob_spawn/human/fugitive/bounty/hook{
|
||||
short_desc = null
|
||||
},
|
||||
/turf/open/floor/pod/light,
|
||||
/area/shuttle/hunter)
|
||||
"q" = (
|
||||
/obj/structure/shuttle/engine/heater{
|
||||
dir = 8
|
||||
},
|
||||
/obj/structure/window/reinforced{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plating/airless,
|
||||
/area/shuttle/hunter)
|
||||
"r" = (
|
||||
/obj/machinery/computer/launchpad{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/pod/dark,
|
||||
/area/shuttle/hunter)
|
||||
"s" = (
|
||||
/turf/open/floor/pod/dark,
|
||||
/area/shuttle/hunter)
|
||||
"t" = (
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 9
|
||||
},
|
||||
/turf/open/floor/pod/dark,
|
||||
/area/shuttle/hunter)
|
||||
"v" = (
|
||||
/obj/structure/chair/office{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/pod/dark,
|
||||
/area/shuttle/hunter)
|
||||
"w" = (
|
||||
/obj/structure/table,
|
||||
/obj/item/phone,
|
||||
/turf/open/floor/pod/dark,
|
||||
/area/shuttle/hunter)
|
||||
"x" = (
|
||||
/obj/structure/table,
|
||||
/turf/open/floor/pod/dark,
|
||||
/area/shuttle/hunter)
|
||||
"y" = (
|
||||
/obj/structure/chair/office{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/pod/dark,
|
||||
/area/shuttle/hunter)
|
||||
"z" = (
|
||||
/obj/structure/chair/comfy/shuttle{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/pod/dark,
|
||||
/area/shuttle/hunter)
|
||||
"A" = (
|
||||
/obj/machinery/computer/shuttle/hunter{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/pod/dark,
|
||||
/area/shuttle/hunter)
|
||||
"B" = (
|
||||
/obj/machinery/launchpad,
|
||||
/turf/open/floor/pod/dark,
|
||||
/area/shuttle/hunter)
|
||||
"C" = (
|
||||
/obj/item/multitool,
|
||||
/turf/open/floor/pod/dark,
|
||||
/area/shuttle/hunter)
|
||||
"D" = (
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/pod/dark,
|
||||
/area/shuttle/hunter)
|
||||
"E" = (
|
||||
/obj/structure/window/plastitanium,
|
||||
/turf/closed/wall/mineral/plastitanium,
|
||||
/area/shuttle/hunter)
|
||||
"F" = (
|
||||
/obj/machinery/power/smes,
|
||||
/turf/open/floor/pod/dark,
|
||||
/area/shuttle/hunter)
|
||||
"G" = (
|
||||
/obj/machinery/fugitive_capture,
|
||||
/turf/open/floor/pod/dark,
|
||||
/area/shuttle/hunter)
|
||||
"H" = (
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 10
|
||||
},
|
||||
/turf/open/floor/pod/dark,
|
||||
/area/shuttle/hunter)
|
||||
"I" = (
|
||||
/obj/machinery/computer/camera_advanced/shuttle_docker/syndicate/hunter{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/pod/dark,
|
||||
/area/shuttle/hunter)
|
||||
"J" = (
|
||||
/obj/structure/table,
|
||||
/obj/item/storage/toolbox/mechanical,
|
||||
/turf/open/floor/pod/light,
|
||||
/area/shuttle/hunter)
|
||||
"K" = (
|
||||
/obj/machinery/suit_storage_unit/standard_unit{
|
||||
storage_type = /obj/item/tank/internals/oxygen/yellow
|
||||
},
|
||||
/turf/open/floor/pod/light,
|
||||
/area/shuttle/hunter)
|
||||
"L" = (
|
||||
/obj/effect/mapping_helpers/airlock/cyclelink_helper{
|
||||
dir = 1
|
||||
},
|
||||
/obj/machinery/door/airlock/external,
|
||||
/obj/docking_port/stationary{
|
||||
dwidth = 11;
|
||||
height = 16;
|
||||
id = "pirateship_home";
|
||||
name = "Deep Space";
|
||||
width = 17
|
||||
},
|
||||
/obj/docking_port/mobile{
|
||||
dheight = 3;
|
||||
dwidth = 3;
|
||||
height = 13;
|
||||
id = "huntership";
|
||||
movement_force = list("KNOCKDOWN" = 0, "THROW" = 0);
|
||||
name = "hunter shuttle";
|
||||
width = 15
|
||||
},
|
||||
/obj/structure/fans/tiny,
|
||||
/turf/open/floor/plating,
|
||||
/area/shuttle/hunter)
|
||||
"M" = (
|
||||
/obj/effect/mob_spawn/human/fugitive/bounty/armor{
|
||||
dir = 1;
|
||||
short_desc = null
|
||||
},
|
||||
/turf/open/floor/pod/light,
|
||||
/area/shuttle/hunter)
|
||||
"P" = (
|
||||
/obj/structure/fluff/empty_sleeper{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/pod/light,
|
||||
/area/shuttle/hunter)
|
||||
"U" = (
|
||||
/obj/structure/grille,
|
||||
/obj/structure/window/plastitanium,
|
||||
/obj/structure/window/plastitanium,
|
||||
/turf/open/floor/plating,
|
||||
/area/shuttle/hunter)
|
||||
"Z" = (
|
||||
/obj/effect/mob_spawn/human/fugitive/bounty/synth{
|
||||
short_desc = null
|
||||
},
|
||||
/turf/open/floor/pod/light,
|
||||
/area/shuttle/hunter)
|
||||
|
||||
(1,1,1) = {"
|
||||
a
|
||||
a
|
||||
a
|
||||
b
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
b
|
||||
a
|
||||
a
|
||||
a
|
||||
"}
|
||||
(2,1,1) = {"
|
||||
a
|
||||
a
|
||||
a
|
||||
b
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
b
|
||||
a
|
||||
a
|
||||
a
|
||||
"}
|
||||
(3,1,1) = {"
|
||||
b
|
||||
a
|
||||
a
|
||||
b
|
||||
a
|
||||
e
|
||||
a
|
||||
e
|
||||
a
|
||||
b
|
||||
a
|
||||
a
|
||||
b
|
||||
"}
|
||||
(4,1,1) = {"
|
||||
b
|
||||
a
|
||||
e
|
||||
b
|
||||
b
|
||||
q
|
||||
i
|
||||
q
|
||||
b
|
||||
b
|
||||
e
|
||||
a
|
||||
b
|
||||
"}
|
||||
(5,1,1) = {"
|
||||
b
|
||||
b
|
||||
q
|
||||
b
|
||||
b
|
||||
r
|
||||
B
|
||||
F
|
||||
b
|
||||
b
|
||||
q
|
||||
b
|
||||
b
|
||||
"}
|
||||
(6,1,1) = {"
|
||||
b
|
||||
b
|
||||
g
|
||||
b
|
||||
b
|
||||
s
|
||||
C
|
||||
G
|
||||
b
|
||||
b
|
||||
g
|
||||
b
|
||||
b
|
||||
"}
|
||||
(7,1,1) = {"
|
||||
f
|
||||
d
|
||||
h
|
||||
j
|
||||
l
|
||||
t
|
||||
D
|
||||
H
|
||||
c
|
||||
d
|
||||
h
|
||||
j
|
||||
L
|
||||
"}
|
||||
(8,1,1) = {"
|
||||
b
|
||||
b
|
||||
i
|
||||
b
|
||||
b
|
||||
s
|
||||
s
|
||||
s
|
||||
b
|
||||
b
|
||||
i
|
||||
b
|
||||
b
|
||||
"}
|
||||
(9,1,1) = {"
|
||||
a
|
||||
b
|
||||
i
|
||||
b
|
||||
m
|
||||
v
|
||||
s
|
||||
s
|
||||
K
|
||||
b
|
||||
i
|
||||
b
|
||||
a
|
||||
"}
|
||||
(10,1,1) = {"
|
||||
a
|
||||
a
|
||||
i
|
||||
k
|
||||
n
|
||||
w
|
||||
x
|
||||
s
|
||||
K
|
||||
b
|
||||
i
|
||||
a
|
||||
a
|
||||
"}
|
||||
(11,1,1) = {"
|
||||
a
|
||||
a
|
||||
a
|
||||
b
|
||||
J
|
||||
x
|
||||
x
|
||||
s
|
||||
K
|
||||
b
|
||||
a
|
||||
a
|
||||
a
|
||||
"}
|
||||
(12,1,1) = {"
|
||||
a
|
||||
a
|
||||
a
|
||||
E
|
||||
o
|
||||
y
|
||||
s
|
||||
s
|
||||
K
|
||||
b
|
||||
a
|
||||
a
|
||||
a
|
||||
"}
|
||||
(13,1,1) = {"
|
||||
a
|
||||
a
|
||||
a
|
||||
i
|
||||
b
|
||||
s
|
||||
s
|
||||
s
|
||||
b
|
||||
i
|
||||
a
|
||||
a
|
||||
a
|
||||
"}
|
||||
(14,1,1) = {"
|
||||
a
|
||||
a
|
||||
a
|
||||
U
|
||||
p
|
||||
s
|
||||
s
|
||||
s
|
||||
P
|
||||
i
|
||||
a
|
||||
a
|
||||
a
|
||||
"}
|
||||
(15,1,1) = {"
|
||||
a
|
||||
a
|
||||
a
|
||||
i
|
||||
Z
|
||||
z
|
||||
s
|
||||
z
|
||||
M
|
||||
i
|
||||
a
|
||||
a
|
||||
a
|
||||
"}
|
||||
(16,1,1) = {"
|
||||
a
|
||||
a
|
||||
a
|
||||
E
|
||||
i
|
||||
A
|
||||
n
|
||||
I
|
||||
i
|
||||
b
|
||||
a
|
||||
a
|
||||
a
|
||||
"}
|
||||
(17,1,1) = {"
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
i
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
"}
|
||||
501
_maps/shuttles/hunter_russian.dmm
Normal file
@@ -0,0 +1,501 @@
|
||||
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
|
||||
"a" = (
|
||||
/turf/template_noop,
|
||||
/area/template_noop)
|
||||
"b" = (
|
||||
/turf/closed/wall,
|
||||
/area/shuttle/hunter)
|
||||
"c" = (
|
||||
/obj/structure/shuttle/engine/propulsion{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/plating/airless,
|
||||
/area/shuttle/hunter)
|
||||
"d" = (
|
||||
/obj/structure/shuttle/engine/heater{
|
||||
dir = 8
|
||||
},
|
||||
/obj/structure/window/reinforced{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plating/airless,
|
||||
/area/shuttle/hunter)
|
||||
"e" = (
|
||||
/obj/machinery/portable_atmospherics/scrubber/huge,
|
||||
/turf/open/floor/plating,
|
||||
/area/shuttle/hunter)
|
||||
"f" = (
|
||||
/obj/machinery/power/smes,
|
||||
/turf/open/floor/plating,
|
||||
/area/shuttle/hunter)
|
||||
"g" = (
|
||||
/turf/open/floor/plating,
|
||||
/area/shuttle/hunter)
|
||||
"h" = (
|
||||
/obj/machinery/door/airlock/security/glass,
|
||||
/turf/open/floor/mineral/plastitanium/red,
|
||||
/area/shuttle/hunter)
|
||||
"i" = (
|
||||
/obj/machinery/door/airlock/security/glass,
|
||||
/obj/structure/fans/tiny,
|
||||
/turf/open/floor/mineral/plastitanium/red,
|
||||
/area/shuttle/hunter)
|
||||
"j" = (
|
||||
/obj/effect/turf_decal/bot,
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/turf/open/floor/plating,
|
||||
/area/shuttle/hunter)
|
||||
"k" = (
|
||||
/turf/open/floor/mineral/plastitanium/red,
|
||||
/area/shuttle/hunter)
|
||||
"m" = (
|
||||
/obj/structure/reagent_dispensers/fueltank,
|
||||
/obj/item/weldingtool/largetank,
|
||||
/turf/open/floor/mineral/plastitanium,
|
||||
/area/shuttle/hunter)
|
||||
"n" = (
|
||||
/obj/effect/decal/cleanable/dirt/dust,
|
||||
/obj/structure/reagent_dispensers/watertank,
|
||||
/obj/item/reagent_containers/glass/bucket,
|
||||
/obj/item/mop,
|
||||
/obj/item/storage/bag/trash{
|
||||
pixel_x = 6
|
||||
},
|
||||
/turf/open/floor/mineral/plastitanium,
|
||||
/area/shuttle/hunter)
|
||||
"o" = (
|
||||
/obj/effect/mob_spawn/human/fugitive/russian{
|
||||
dir = 4;
|
||||
short_desc = null
|
||||
},
|
||||
/turf/open/floor/mineral/plastitanium/red,
|
||||
/area/shuttle/hunter)
|
||||
"p" = (
|
||||
/obj/effect/turf_decal/bot,
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/structure/closet/crate{
|
||||
icon_state = "crateopen"
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/shuttle/hunter)
|
||||
"q" = (
|
||||
/turf/open/floor/mineral/plastitanium,
|
||||
/area/shuttle/hunter)
|
||||
"r" = (
|
||||
/obj/effect/turf_decal/arrows{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/mineral/plastitanium/red,
|
||||
/area/shuttle/hunter)
|
||||
"s" = (
|
||||
/obj/structure/table,
|
||||
/obj/item/storage/fancy/cigarettes/cigars/cohiba{
|
||||
pixel_y = 6
|
||||
},
|
||||
/turf/open/floor/mineral/plastitanium,
|
||||
/area/shuttle/hunter)
|
||||
"t" = (
|
||||
/obj/effect/turf_decal/bot,
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/structure/closet/crate/large{
|
||||
icon_state = "crittercrate"
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/shuttle/hunter)
|
||||
"u" = (
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/turf/open/floor/mineral/plastitanium,
|
||||
/area/shuttle/hunter)
|
||||
"v" = (
|
||||
/obj/effect/spawner/structure/window/reinforced,
|
||||
/turf/open/floor/plating,
|
||||
/area/shuttle/hunter)
|
||||
"w" = (
|
||||
/obj/machinery/fugitive_capture,
|
||||
/turf/open/floor/mineral/plastitanium,
|
||||
/area/shuttle/hunter)
|
||||
"x" = (
|
||||
/obj/effect/turf_decal/bot,
|
||||
/turf/open/floor/plating,
|
||||
/area/shuttle/hunter)
|
||||
"y" = (
|
||||
/turf/template_noop,
|
||||
/area/shuttle/hunter)
|
||||
"z" = (
|
||||
/obj/structure/chair{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/mineral/plastitanium/red,
|
||||
/area/shuttle/hunter)
|
||||
"A" = (
|
||||
/obj/machinery/computer/shuttle/hunter{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/mineral/plastitanium/red,
|
||||
/area/shuttle/hunter)
|
||||
"B" = (
|
||||
/obj/effect/turf_decal/bot,
|
||||
/obj/structure/closet/crate{
|
||||
icon_state = "crateopen"
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/shuttle/hunter)
|
||||
"C" = (
|
||||
/obj/machinery/computer/camera_advanced{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/mineral/plastitanium/red,
|
||||
/area/shuttle/hunter)
|
||||
"D" = (
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/turf/open/floor/mineral/plastitanium/red,
|
||||
/area/shuttle/hunter)
|
||||
"E" = (
|
||||
/obj/machinery/computer/camera_advanced/shuttle_docker/syndicate/hunter{
|
||||
dir = 8;
|
||||
x_offset = 0;
|
||||
y_offset = 3
|
||||
},
|
||||
/turf/open/floor/mineral/plastitanium,
|
||||
/area/shuttle/hunter)
|
||||
"F" = (
|
||||
/obj/effect/turf_decal/bot,
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/structure/closet/crate/engineering{
|
||||
icon_state = "engi_crateopen"
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/shuttle/hunter)
|
||||
"G" = (
|
||||
/obj/structure/table,
|
||||
/obj/item/reagent_containers/food/drinks/bottle/vodka,
|
||||
/turf/open/floor/mineral/plastitanium,
|
||||
/area/shuttle/hunter)
|
||||
"H" = (
|
||||
/obj/effect/turf_decal/bot,
|
||||
/obj/structure/closet/crate/coffin{
|
||||
icon_state = "coffinopen"
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/shuttle/hunter)
|
||||
"I" = (
|
||||
/obj/effect/turf_decal/bot,
|
||||
/obj/structure/mecha_wreckage/ripley,
|
||||
/turf/open/floor/plating,
|
||||
/area/shuttle/hunter)
|
||||
"J" = (
|
||||
/obj/machinery/portable_atmospherics/canister/oxygen,
|
||||
/turf/open/floor/mineral/plastitanium,
|
||||
/area/shuttle/hunter)
|
||||
"K" = (
|
||||
/obj/machinery/door/airlock/security/glass,
|
||||
/obj/structure/fans/tiny,
|
||||
/obj/docking_port/stationary{
|
||||
dwidth = 11;
|
||||
height = 16;
|
||||
id = "pirateship_home";
|
||||
name = "Deep Space";
|
||||
width = 17
|
||||
},
|
||||
/obj/docking_port/mobile{
|
||||
dheight = 3;
|
||||
dwidth = 3;
|
||||
height = 13;
|
||||
id = "huntership";
|
||||
movement_force = list("KNOCKDOWN" = 0, "THROW" = 0);
|
||||
name = "hunter shuttle";
|
||||
width = 15
|
||||
},
|
||||
/turf/open/floor/mineral/plastitanium/red,
|
||||
/area/shuttle/hunter)
|
||||
"L" = (
|
||||
/obj/effect/mob_spawn/human/fugitive/russian{
|
||||
dir = 1;
|
||||
short_desc = null
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/shuttle/hunter)
|
||||
"N" = (
|
||||
/obj/machinery/suit_storage_unit/standard_unit,
|
||||
/obj/effect/turf_decal/stripes/line,
|
||||
/turf/open/floor/mineral/plastitanium,
|
||||
/area/shuttle/hunter)
|
||||
"Q" = (
|
||||
/obj/item/book/manual/ripley_build_and_repair,
|
||||
/turf/open/floor/mineral/plastitanium/red,
|
||||
/area/shuttle/hunter)
|
||||
"Y" = (
|
||||
/obj/machinery/suit_storage_unit/standard_unit,
|
||||
/turf/open/floor/mineral/plastitanium,
|
||||
/area/shuttle/hunter)
|
||||
|
||||
(1,1,1) = {"
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
"}
|
||||
(2,1,1) = {"
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
b
|
||||
c
|
||||
c
|
||||
b
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
"}
|
||||
(3,1,1) = {"
|
||||
a
|
||||
c
|
||||
c
|
||||
a
|
||||
b
|
||||
b
|
||||
b
|
||||
d
|
||||
d
|
||||
b
|
||||
b
|
||||
b
|
||||
a
|
||||
c
|
||||
c
|
||||
a
|
||||
"}
|
||||
(4,1,1) = {"
|
||||
b
|
||||
d
|
||||
d
|
||||
b
|
||||
b
|
||||
p
|
||||
t
|
||||
x
|
||||
B
|
||||
B
|
||||
F
|
||||
b
|
||||
b
|
||||
d
|
||||
d
|
||||
b
|
||||
"}
|
||||
(5,1,1) = {"
|
||||
b
|
||||
e
|
||||
g
|
||||
b
|
||||
j
|
||||
q
|
||||
u
|
||||
q
|
||||
q
|
||||
u
|
||||
u
|
||||
H
|
||||
b
|
||||
g
|
||||
L
|
||||
b
|
||||
"}
|
||||
(6,1,1) = {"
|
||||
b
|
||||
e
|
||||
g
|
||||
h
|
||||
k
|
||||
k
|
||||
k
|
||||
k
|
||||
k
|
||||
D
|
||||
k
|
||||
k
|
||||
h
|
||||
g
|
||||
L
|
||||
b
|
||||
"}
|
||||
(7,1,1) = {"
|
||||
b
|
||||
f
|
||||
g
|
||||
b
|
||||
x
|
||||
k
|
||||
Y
|
||||
Y
|
||||
Y
|
||||
Y
|
||||
Q
|
||||
I
|
||||
b
|
||||
g
|
||||
L
|
||||
b
|
||||
"}
|
||||
(8,1,1) = {"
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
h
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
h
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
"}
|
||||
(9,1,1) = {"
|
||||
a
|
||||
b
|
||||
b
|
||||
b
|
||||
m
|
||||
k
|
||||
b
|
||||
y
|
||||
y
|
||||
b
|
||||
k
|
||||
N
|
||||
b
|
||||
b
|
||||
b
|
||||
a
|
||||
"}
|
||||
(10,1,1) = {"
|
||||
a
|
||||
a
|
||||
a
|
||||
i
|
||||
k
|
||||
k
|
||||
v
|
||||
y
|
||||
y
|
||||
v
|
||||
k
|
||||
k
|
||||
K
|
||||
a
|
||||
a
|
||||
a
|
||||
"}
|
||||
(11,1,1) = {"
|
||||
a
|
||||
a
|
||||
a
|
||||
b
|
||||
n
|
||||
r
|
||||
b
|
||||
y
|
||||
y
|
||||
b
|
||||
r
|
||||
J
|
||||
b
|
||||
a
|
||||
a
|
||||
a
|
||||
"}
|
||||
(12,1,1) = {"
|
||||
a
|
||||
a
|
||||
a
|
||||
b
|
||||
b
|
||||
h
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
h
|
||||
b
|
||||
b
|
||||
a
|
||||
a
|
||||
a
|
||||
"}
|
||||
(13,1,1) = {"
|
||||
a
|
||||
a
|
||||
a
|
||||
b
|
||||
o
|
||||
k
|
||||
r
|
||||
z
|
||||
z
|
||||
k
|
||||
k
|
||||
o
|
||||
b
|
||||
a
|
||||
a
|
||||
a
|
||||
"}
|
||||
(14,1,1) = {"
|
||||
a
|
||||
a
|
||||
a
|
||||
b
|
||||
b
|
||||
s
|
||||
w
|
||||
A
|
||||
C
|
||||
E
|
||||
G
|
||||
b
|
||||
b
|
||||
a
|
||||
a
|
||||
a
|
||||
"}
|
||||
(15,1,1) = {"
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
b
|
||||
b
|
||||
v
|
||||
v
|
||||
v
|
||||
v
|
||||
b
|
||||
b
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
"}
|
||||
250
_maps/shuttles/hunter_space_cop.dmm
Normal file
@@ -0,0 +1,250 @@
|
||||
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
|
||||
"aa" = (
|
||||
/obj/machinery/computer/camera_advanced/shuttle_docker/syndicate/hunter{
|
||||
dir = 8;
|
||||
view_range = 7;
|
||||
x_offset = 6
|
||||
},
|
||||
/turf/open/floor/mineral/titanium/blue,
|
||||
/area/shuttle/hunter)
|
||||
"ab" = (
|
||||
/obj/machinery/computer/shuttle/hunter{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/mineral/titanium/blue,
|
||||
/area/shuttle/hunter)
|
||||
"ac" = (
|
||||
/obj/structure/fans/tiny,
|
||||
/obj/docking_port/stationary{
|
||||
dir = 4;
|
||||
dwidth = 3;
|
||||
height = 12;
|
||||
id = "huntership_home";
|
||||
name = "Deep Space";
|
||||
width = 7
|
||||
},
|
||||
/obj/docking_port/mobile{
|
||||
dir = 4;
|
||||
dwidth = 3;
|
||||
height = 12;
|
||||
id = "huntership";
|
||||
name = "hunter shuttle";
|
||||
width = 7
|
||||
},
|
||||
/obj/machinery/door/poddoor/shutters{
|
||||
id = "Interpolship"
|
||||
},
|
||||
/turf/open/floor/mineral/titanium/blue,
|
||||
/area/shuttle/hunter)
|
||||
"ae" = (
|
||||
/obj/machinery/button/door{
|
||||
id = "Interpolship";
|
||||
pixel_y = 26
|
||||
},
|
||||
/obj/effect/turf_decal/stripes{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/mineral/titanium/blue,
|
||||
/area/shuttle/hunter)
|
||||
"af" = (
|
||||
/obj/effect/turf_decal/stripes{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/mineral/titanium/blue,
|
||||
/area/shuttle/hunter)
|
||||
"ag" = (
|
||||
/obj/effect/turf_decal/delivery,
|
||||
/turf/open/floor/mineral/titanium/blue,
|
||||
/area/shuttle/hunter)
|
||||
"ah" = (
|
||||
/obj/effect/turf_decal/loading_area{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/mineral/titanium/blue,
|
||||
/area/shuttle/hunter)
|
||||
"aj" = (
|
||||
/obj/structure/closet/crate/eva,
|
||||
/obj/effect/turf_decal/box,
|
||||
/turf/open/floor/mineral/titanium/blue,
|
||||
/area/shuttle/hunter)
|
||||
"ak" = (
|
||||
/obj/structure/chair/comfy/shuttle{
|
||||
dir = 1
|
||||
},
|
||||
/obj/effect/mob_spawn/human/fugitive/spacepol{
|
||||
dir = 1;
|
||||
short_desc = null
|
||||
},
|
||||
/turf/open/floor/mineral/titanium/blue,
|
||||
/area/shuttle/hunter)
|
||||
"al" = (
|
||||
/obj/effect/turf_decal/stripes{
|
||||
dir = 8
|
||||
},
|
||||
/obj/effect/turf_decal/caution{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/mineral/titanium/blue,
|
||||
/area/shuttle/hunter)
|
||||
"bY" = (
|
||||
/obj/structure/chair/comfy/shuttle,
|
||||
/turf/open/floor/mineral/titanium/blue,
|
||||
/area/shuttle/hunter)
|
||||
"gi" = (
|
||||
/obj/structure/table,
|
||||
/turf/open/floor/mineral/titanium/blue,
|
||||
/area/shuttle/hunter)
|
||||
"hB" = (
|
||||
/obj/structure/shuttle/engine/propulsion{
|
||||
dir = 8
|
||||
},
|
||||
/turf/closed/wall/mineral/titanium,
|
||||
/area/shuttle/hunter)
|
||||
"hJ" = (
|
||||
/obj/structure/window/shuttle,
|
||||
/obj/structure/grille,
|
||||
/turf/open/floor/plating,
|
||||
/area/shuttle/hunter)
|
||||
"ku" = (
|
||||
/turf/closed/wall/mineral/titanium,
|
||||
/area/shuttle/hunter)
|
||||
"lp" = (
|
||||
/obj/machinery/fugitive_capture,
|
||||
/turf/open/floor/mineral/titanium/blue,
|
||||
/area/shuttle/hunter)
|
||||
"rR" = (
|
||||
/obj/machinery/door/airlock/titanium,
|
||||
/turf/open/floor/mineral/titanium/blue,
|
||||
/area/shuttle/hunter)
|
||||
"te" = (
|
||||
/obj/structure/fans/tiny,
|
||||
/obj/machinery/door/poddoor/shutters{
|
||||
id = "Interpolship"
|
||||
},
|
||||
/turf/open/floor/mineral/titanium/blue,
|
||||
/area/shuttle/hunter)
|
||||
"An" = (
|
||||
/obj/effect/spawner/structure/window/shuttle,
|
||||
/turf/open/floor/plating,
|
||||
/area/shuttle/hunter)
|
||||
"Pq" = (
|
||||
/turf/template_noop,
|
||||
/area/template_noop)
|
||||
"Rz" = (
|
||||
/obj/structure/chair/comfy/shuttle{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/mineral/titanium/blue,
|
||||
/area/shuttle/hunter)
|
||||
"RO" = (
|
||||
/turf/open/floor/mineral/titanium/blue,
|
||||
/area/shuttle/hunter)
|
||||
|
||||
(1,1,1) = {"
|
||||
Pq
|
||||
ku
|
||||
te
|
||||
ac
|
||||
te
|
||||
ku
|
||||
Pq
|
||||
"}
|
||||
(2,1,1) = {"
|
||||
Pq
|
||||
ku
|
||||
ae
|
||||
al
|
||||
af
|
||||
ku
|
||||
Pq
|
||||
"}
|
||||
(3,1,1) = {"
|
||||
Pq
|
||||
ku
|
||||
bY
|
||||
RO
|
||||
ak
|
||||
ku
|
||||
Pq
|
||||
"}
|
||||
(4,1,1) = {"
|
||||
hB
|
||||
ku
|
||||
bY
|
||||
RO
|
||||
ak
|
||||
ku
|
||||
hB
|
||||
"}
|
||||
(5,1,1) = {"
|
||||
ku
|
||||
ku
|
||||
bY
|
||||
RO
|
||||
ak
|
||||
ku
|
||||
ku
|
||||
"}
|
||||
(6,1,1) = {"
|
||||
Pq
|
||||
hJ
|
||||
ag
|
||||
RO
|
||||
RO
|
||||
hJ
|
||||
Pq
|
||||
"}
|
||||
(7,1,1) = {"
|
||||
Pq
|
||||
hJ
|
||||
ah
|
||||
RO
|
||||
aj
|
||||
hJ
|
||||
Pq
|
||||
"}
|
||||
(8,1,1) = {"
|
||||
Pq
|
||||
ku
|
||||
lp
|
||||
RO
|
||||
aj
|
||||
ku
|
||||
Pq
|
||||
"}
|
||||
(9,1,1) = {"
|
||||
hB
|
||||
ku
|
||||
ku
|
||||
rR
|
||||
ku
|
||||
ku
|
||||
hB
|
||||
"}
|
||||
(10,1,1) = {"
|
||||
ku
|
||||
ku
|
||||
RO
|
||||
Rz
|
||||
RO
|
||||
ku
|
||||
ku
|
||||
"}
|
||||
(11,1,1) = {"
|
||||
Pq
|
||||
An
|
||||
aa
|
||||
gi
|
||||
ab
|
||||
An
|
||||
Pq
|
||||
"}
|
||||
(12,1,1) = {"
|
||||
Pq
|
||||
ku
|
||||
An
|
||||
An
|
||||
An
|
||||
ku
|
||||
Pq
|
||||
"}
|
||||
@@ -11,6 +11,17 @@
|
||||
#define NUKE_RESULT_WRONG_STATION 7
|
||||
#define NUKE_RESULT_WRONG_STATION_DEAD 8
|
||||
|
||||
//fugitive end results
|
||||
#define FUGITIVE_RESULT_BADASS_HUNTER 0
|
||||
#define FUGITIVE_RESULT_POSTMORTEM_HUNTER 1
|
||||
#define FUGITIVE_RESULT_MAJOR_HUNTER 2
|
||||
#define FUGITIVE_RESULT_HUNTER_VICTORY 3
|
||||
#define FUGITIVE_RESULT_MINOR_HUNTER 4
|
||||
#define FUGITIVE_RESULT_STALEMATE 5
|
||||
#define FUGITIVE_RESULT_MINOR_FUGITIVE 6
|
||||
#define FUGITIVE_RESULT_FUGITIVE_VICTORY 7
|
||||
#define FUGITIVE_RESULT_MAJOR_FUGITIVE 8
|
||||
|
||||
#define APPRENTICE_DESTRUCTION "destruction"
|
||||
#define APPRENTICE_BLUESPACE "bluespace"
|
||||
#define APPRENTICE_ROBELESS "robeless"
|
||||
|
||||
@@ -59,6 +59,7 @@
|
||||
#define ANTAG_HUD_CLOCKWORK 22
|
||||
#define ANTAG_HUD_BROTHER 23
|
||||
#define ANTAG_HUD_BLOODSUCKER 24
|
||||
#define ANTAG_HUD_FUGITIVE 25
|
||||
|
||||
// Notification action types
|
||||
#define NOTIFY_JUMP "jump"
|
||||
|
||||
@@ -96,6 +96,8 @@
|
||||
|
||||
#define STATUS_EFFECT_SPASMS /datum/status_effect/spasms //causes random muscle spasms
|
||||
|
||||
#define STATUS_EFFECT_FAKE_VIRUS /datum/status_effect/fake_virus //gives you fluff messages for cough, sneeze, headache, etc but without an actual virus
|
||||
|
||||
#define STATUS_EFFECT_BREASTS_ENLARGEMENT /datum/status_effect/chem/breast_enlarger //Applied slowdown due to the ominous bulk.
|
||||
|
||||
#define STATUS_EFFECT_PENIS_ENLARGEMENT /datum/status_effect/chem/penis_enlarger //More applied slowdown, just like the above.
|
||||
|
||||
@@ -223,3 +223,6 @@ GLOBAL_LIST_INIT(station_numerals, greek_letters + phonetic_alphabet + numbers_a
|
||||
GLOBAL_LIST_INIT(admiral_messages, list("Do you know how expensive these stations are?","Stop wasting my time.","I was sleeping, thanks a lot.","Stand and fight you cowards!","You knew the risks coming in.","Stop being paranoid.","Whatever's broken just build a new one.","No.", "<i>null</i>","<i>Error: No comment given.</i>", "It's a good day to die!"))
|
||||
|
||||
GLOBAL_LIST_INIT(redacted_strings, list("\[REDACTED\]", "\[CLASSIFIED\]", "\[ARCHIVED\]", "\[EXPLETIVE DELETED\]", "\[EXPUNGED\]", "\[INFORMATION ABOVE YOUR SECURITY CLEARANCE\]", "\[MOVE ALONG CITIZEN\]", "\[NOTHING TO SEE HERE\]", "\[ACCESS DENIED\]"))
|
||||
|
||||
|
||||
GLOBAL_LIST_INIT(wisdoms, world.file2list("strings/wisdoms.txt"))
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
#define POLL_IGNORE_WIZARD "wizard"
|
||||
#define POLL_IGNORE_CLONE "clone"
|
||||
#define POLL_IGNORE_CONTRACTOR_SUPPORT "contractor_support"
|
||||
#define POLL_IGNORE_FUGITIVE "fugitive"
|
||||
|
||||
GLOBAL_LIST_INIT(poll_ignore_desc, list(
|
||||
POLL_IGNORE_SENTIENCE_POTION = "Sentience potion",
|
||||
@@ -39,7 +40,8 @@ GLOBAL_LIST_INIT(poll_ignore_desc, list(
|
||||
POLL_IGNORE_DEMON = "Demons",
|
||||
POLL_IGNORE_WIZARD = "Wizards",
|
||||
POLL_IGNORE_CLONE = "Defective/SDGF clones",
|
||||
POLL_IGNORE_CONTRACTOR_SUPPORT = "Contractor Support Unit"
|
||||
POLL_IGNORE_CONTRACTOR_SUPPORT = "Contractor Support Unit",
|
||||
POLL_IGNORE_FUGITIVE = "Fugitive Hunter"
|
||||
))
|
||||
GLOBAL_LIST_INIT(poll_ignore, init_poll_ignore())
|
||||
|
||||
|
||||
@@ -27,7 +27,8 @@ GLOBAL_LIST_INIT(huds, list(
|
||||
ANTAG_HUD_SOULLESS = new/datum/atom_hud/antag/hidden(),
|
||||
ANTAG_HUD_CLOCKWORK = new/datum/atom_hud/antag(),
|
||||
ANTAG_HUD_BROTHER = new/datum/atom_hud/antag/hidden(),
|
||||
ANTAG_HUD_BLOODSUCKER = new/datum/atom_hud/antag/bloodsucker()
|
||||
ANTAG_HUD_BLOODSUCKER = new/datum/atom_hud/antag/bloodsucker(),
|
||||
ANTAG_HUD_FUGITIVE = new/datum/atom_hud/antag()
|
||||
))
|
||||
|
||||
/datum/atom_hud
|
||||
|
||||
@@ -162,6 +162,10 @@
|
||||
port_id = "pirate"
|
||||
can_be_bought = FALSE
|
||||
|
||||
/datum/map_template/shuttle/hunter
|
||||
port_id = "hunter"
|
||||
can_be_bought = FALSE
|
||||
|
||||
/datum/map_template/shuttle/ruin //For random shuttles in ruins
|
||||
port_id = "ruin"
|
||||
can_be_bought = FALSE
|
||||
@@ -613,3 +617,15 @@
|
||||
/datum/map_template/shuttle/snowdin/excavation
|
||||
suffix = "excavation"
|
||||
name = "Snowdin Excavation Elevator"
|
||||
|
||||
/datum/map_template/shuttle/hunter/space_cop
|
||||
suffix = "space_cop"
|
||||
name = "Police Spacevan"
|
||||
|
||||
/datum/map_template/shuttle/hunter/russian
|
||||
suffix = "russian"
|
||||
name = "Russian Cargo Ship"
|
||||
|
||||
/datum/map_template/shuttle/hunter/bounty
|
||||
suffix = "bounty"
|
||||
name = "Bounty Hunter Ship"
|
||||
@@ -795,3 +795,44 @@ datum/status_effect/pacify
|
||||
name = "Genetic Breakdown"
|
||||
desc = "I don't feel so good. Your body can't handle the mutations! You have one minute to remove your mutations, or you will be met with a horrible fate."
|
||||
icon_state = "dna_melt"
|
||||
|
||||
/datum/status_effect/fake_virus
|
||||
id = "fake_virus"
|
||||
duration = 1800//3 minutes
|
||||
status_type = STATUS_EFFECT_REPLACE
|
||||
tick_interval = 1
|
||||
alert_type = null
|
||||
var/msg_stage = 0//so you dont get the most intense messages immediately
|
||||
|
||||
/datum/status_effect/fake_virus/tick()
|
||||
var/fake_msg = ""
|
||||
var/fake_emote = ""
|
||||
switch(msg_stage)
|
||||
if(0 to 300)
|
||||
if(prob(1))
|
||||
fake_msg = pick("<span class='warning'>[pick("Your head hurts.", "Your head pounds.")]</span>",
|
||||
"<span class='warning'>[pick("You're having difficulty breathing.", "Your breathing becomes heavy.")]</span>",
|
||||
"<span class='warning'>[pick("You feel dizzy.", "Your head spins.")]</span>",
|
||||
"<span notice='warning'>[pick("You swallow excess mucus.", "You lightly cough.")]</span>",
|
||||
"<span class='warning'>[pick("Your head hurts.", "Your mind blanks for a moment.")]</span>",
|
||||
"<span class='warning'>[pick("Your throat hurts.", "You clear your throat.")]</span>")
|
||||
if(301 to 600)
|
||||
if(prob(2))
|
||||
fake_msg = pick("<span class='warning'>[pick("Your head hurts a lot.", "Your head pounds incessantly.")]</span>",
|
||||
"<span class='warning'>[pick("Your windpipe feels like a straw.", "Your breathing becomes tremendously difficult.")]</span>",
|
||||
"<span class='warning'>You feel very [pick("dizzy","woozy","faint")].</span>",
|
||||
"<span class='warning'>[pick("You hear a ringing in your ear.", "Your ears pop.")]</span>",
|
||||
"<span class='warning'>You nod off for a moment.</span>")
|
||||
else
|
||||
if(prob(3))
|
||||
if(prob(50))// coin flip to throw a message or an emote
|
||||
fake_msg = pick("<span class='userdanger'>[pick("Your head hurts!", "You feel a burning knife inside your brain!", "A wave of pain fills your head!")]</span>",
|
||||
"<span class='userdanger'>[pick("Your lungs hurt!", "It hurts to breathe!")]</span>",
|
||||
"<span class='warning'>[pick("You feel nauseated.", "You feel like you're going to throw up!")]</span>")
|
||||
else
|
||||
fake_emote = pick("cough", "sniff", "sneeze")
|
||||
if(fake_emote)
|
||||
owner.emote(fake_emote)
|
||||
else if(fake_msg)
|
||||
to_chat(owner, fake_msg)
|
||||
msg_stage++
|
||||
|
||||
@@ -93,6 +93,13 @@
|
||||
/area/shuttle/abandoned/pod
|
||||
name = "Abandoned Ship Pod"
|
||||
|
||||
////////////////////////////Bounty Hunter Shuttles////////////////////////////
|
||||
/area/shuttle/hunter
|
||||
name = "Hunter Shuttle"
|
||||
dynamic_lighting = DYNAMIC_LIGHTING_DISABLED
|
||||
blob_allowed = FALSE
|
||||
canSmoothWithAreas = /area/shuttle/hunter
|
||||
|
||||
////////////////////////////Single-area shuttles////////////////////////////
|
||||
|
||||
/area/shuttle/transit
|
||||
|
||||
@@ -428,6 +428,11 @@
|
||||
desc = "A poster decipting a snake shaped into an ominous 'S'!"
|
||||
icon_state = "poster47"
|
||||
|
||||
/obj/structure/sign/poster/contraband/bountyhunters
|
||||
name = "Bounty Hunters"
|
||||
desc = "A poster advertising bounty hunting services. \"I hear you got a problem.\""
|
||||
icon_state = "poster48"
|
||||
|
||||
/obj/structure/sign/poster/official
|
||||
poster_item_name = "motivational poster"
|
||||
poster_item_desc = "An official Nanotrasen-issued poster to foster a compliant and obedient workforce. It comes with state-of-the-art adhesive backing, for easy pinning to any vertical surface."
|
||||
|
||||
@@ -129,6 +129,30 @@
|
||||
hos_gun_list[initial(A.name)] = A
|
||||
return hos_gun_list
|
||||
|
||||
/obj/item/choice_beacon/augments
|
||||
name = "augment beacon"
|
||||
desc = "Summons augmentations."
|
||||
|
||||
/obj/item/choice_beacon/augments/generate_display_names()
|
||||
var/static/list/augment_list
|
||||
if(!augment_list)
|
||||
augment_list = list()
|
||||
var/list/templist = list(
|
||||
/obj/item/organ/cyberimp/brain/anti_drop,
|
||||
/obj/item/organ/cyberimp/arm/toolset,
|
||||
/obj/item/organ/cyberimp/arm/surgery,
|
||||
/obj/item/organ/cyberimp/chest/thrusters,
|
||||
/obj/item/organ/lungs/cybernetic,
|
||||
/obj/item/organ/liver/cybernetic) //cyberimplants range from a nice bonus to fucking broken bullshit so no subtypesof
|
||||
for(var/V in templist)
|
||||
var/atom/A = V
|
||||
augment_list[initial(A.name)] = A
|
||||
return augment_list
|
||||
|
||||
/obj/item/choice_beacon/augments/spawn_option(obj/choice,mob/living/M)
|
||||
new choice(get_turf(M))
|
||||
to_chat(M, "<span class='hear'>You hear something crackle from the beacon for a moment before a voice speaks. \"Please stand by for a message from S.E.L.F. Message as follows: <b>Item request received. Your package has been transported, use the autosurgeon supplied to apply the upgrade.</b> Message ends.\"</span>")
|
||||
|
||||
/obj/item/skub
|
||||
desc = "It's skub."
|
||||
name = "skub"
|
||||
|
||||
@@ -183,3 +183,20 @@
|
||||
|
||||
A.other_pair = B
|
||||
B.other_pair = A
|
||||
|
||||
/obj/item/pinpointer/shuttle
|
||||
name = "fugitive pinpointer"
|
||||
desc = "A handheld tracking device that locates the bounty hunter shuttle for quick escapes."
|
||||
icon_state = "pinpointer_hunter"
|
||||
var/obj/shuttleport
|
||||
|
||||
/obj/item/pinpointer/shuttle/Initialize(mapload)
|
||||
. = ..()
|
||||
shuttleport = SSshuttle.getShuttle("huntership")
|
||||
|
||||
/obj/item/pinpointer/shuttle/scan_for_target()
|
||||
target = shuttleport
|
||||
|
||||
/obj/item/pinpointer/shuttle/Destroy()
|
||||
shuttleport = null
|
||||
. = ..()
|
||||
66
code/game/objects/structures/fugitive_role_spawners.dm
Normal file
@@ -0,0 +1,66 @@
|
||||
|
||||
|
||||
/obj/effect/mob_spawn/human/fugitive
|
||||
assignedrole = "Fugitive Hunter"
|
||||
flavour_text = "" //the flavor text will be the backstory argument called on the antagonist's greet, see hunter.dm for details
|
||||
roundstart = FALSE
|
||||
death = FALSE
|
||||
random = TRUE
|
||||
show_flavour = FALSE
|
||||
density = TRUE
|
||||
var/back_story = "error"
|
||||
|
||||
/obj/effect/mob_spawn/human/fugitive/Initialize(mapload)
|
||||
. = ..()
|
||||
notify_ghosts("Hunters are waking up looking for refugees!", source = src, action=NOTIFY_ATTACK, flashwindow = FALSE, ignore_key = POLL_IGNORE_FUGITIVE)
|
||||
|
||||
/obj/effect/mob_spawn/human/fugitive/special(mob/living/new_spawn)
|
||||
var/datum/antagonist/fugitive_hunter/fughunter = new
|
||||
fughunter.backstory = back_story
|
||||
new_spawn.mind.add_antag_datum(fughunter)
|
||||
fughunter.greet()
|
||||
message_admins("[ADMIN_LOOKUPFLW(new_spawn)] has been made into a Fugitive Hunter by an event.")
|
||||
log_game("[key_name(new_spawn)] was spawned as a Fugitive Hunter by an event.")
|
||||
|
||||
/obj/effect/mob_spawn/human/fugitive/spacepol
|
||||
name = "police pod"
|
||||
desc = "A small sleeper typically used to put people to sleep for briefing on the mission."
|
||||
mob_name = "a spacepol officer"
|
||||
flavour_text = "Justice has arrived. I am a member of the Spacepol!"
|
||||
back_story = "space cop"
|
||||
outfit = /datum/outfit/spacepol
|
||||
icon = 'icons/obj/machines/sleeper.dmi'
|
||||
icon_state = "sleeper"
|
||||
|
||||
/obj/effect/mob_spawn/human/fugitive/russian
|
||||
name = "russian pod"
|
||||
flavour_text = "Ay blyat. I am a space-russian smuggler! We were mid-flight when our cargo was beamed off our ship!"
|
||||
back_story = "russian"
|
||||
desc = "A small sleeper typically used to make long distance travel a bit more bearable."
|
||||
mob_name = "russian"
|
||||
outfit = /datum/outfit/russiancorpse/hunter
|
||||
icon = 'icons/obj/machines/sleeper.dmi'
|
||||
icon_state = "sleeper"
|
||||
|
||||
/obj/effect/mob_spawn/human/fugitive/bounty
|
||||
name = "bounty hunter pod"
|
||||
flavour_text = "We got a new bounty on some fugitives, dead or alive."
|
||||
back_story = "bounty hunters"
|
||||
desc = "A small sleeper typically used to make long distance travel a bit more bearable."
|
||||
mob_name = "bounty hunter"
|
||||
icon = 'icons/obj/machines/sleeper.dmi'
|
||||
icon_state = "sleeper"
|
||||
|
||||
/obj/effect/mob_spawn/human/fugitive/bounty/Destroy()
|
||||
var/obj/structure/fluff/empty_sleeper/S = new(drop_location())
|
||||
S.setDir(dir)
|
||||
return ..()
|
||||
|
||||
/obj/effect/mob_spawn/human/fugitive/bounty/armor
|
||||
outfit = /datum/outfit/bountyarmor
|
||||
|
||||
/obj/effect/mob_spawn/human/fugitive/bounty/hook
|
||||
outfit = /datum/outfit/bountyhook
|
||||
|
||||
/obj/effect/mob_spawn/human/fugitive/bounty/synth
|
||||
outfit = /datum/outfit/bountysynth
|
||||
@@ -80,10 +80,11 @@
|
||||
name = "shock trap"
|
||||
desc = "A trap that will shock and render you immobile. You'd better avoid it."
|
||||
icon_state = "trap-shock"
|
||||
var/stun_time = 100
|
||||
|
||||
/obj/structure/trap/stun/trap_effect(mob/living/L)
|
||||
L.electrocute_act(30, src, flags = SHOCK_NOGLOVES) // electrocute act does a message.
|
||||
L.DefaultCombatKnockdown(100)
|
||||
L.Paralyze(stun_time)
|
||||
|
||||
/obj/structure/trap/fire
|
||||
name = "flame trap"
|
||||
@@ -151,3 +152,75 @@
|
||||
new /mob/living/simple_animal/hostile/construct/proteon/hostile(loc)
|
||||
new /mob/living/simple_animal/hostile/construct/proteon/hostile(loc)
|
||||
QDEL_IN(src, 30)
|
||||
|
||||
//fugitive traps
|
||||
/obj/structure/trap/stun/hunter
|
||||
name = "bounty trap"
|
||||
desc = "A trap that only goes off when a fugitive steps on it, announcing the location and stunning the target. You'd better avoid it."
|
||||
icon = 'icons/obj/objects.dmi'
|
||||
icon_state = "bounty_trap_on"
|
||||
stun_time = 200
|
||||
var/obj/item/bountytrap/stored_item
|
||||
var/caught = FALSE
|
||||
|
||||
/obj/structure/trap/stun/hunter/Initialize(mapload)
|
||||
. = ..()
|
||||
time_between_triggers = 10
|
||||
|
||||
/obj/structure/trap/stun/hunter/Crossed(atom/movable/AM)
|
||||
if(isliving(AM))
|
||||
var/mob/living/L = AM
|
||||
if(!L.mind?.has_antag_datum(/datum/antagonist/fugitive))
|
||||
return
|
||||
caught = TRUE
|
||||
. = ..()
|
||||
|
||||
/obj/structure/trap/stun/hunter/flare()
|
||||
..()
|
||||
stored_item.forceMove(get_turf(src))
|
||||
forceMove(stored_item)
|
||||
if(caught)
|
||||
stored_item.announce_fugitive()
|
||||
caught = FALSE
|
||||
|
||||
/obj/item/bountytrap
|
||||
name = "bounty trap"
|
||||
desc = "A trap that only goes off when a fugitive steps on it, announcing the location and stunning the target. It's currently inactive."
|
||||
icon = 'icons/obj/objects.dmi'
|
||||
icon_state = "bounty_trap_off"
|
||||
var/obj/structure/trap/stun/hunter/stored_trap
|
||||
var/obj/item/radio/radio
|
||||
var/datum/effect_system/spark_spread/spark_system
|
||||
|
||||
/obj/item/bountytrap/Initialize(mapload)
|
||||
. = ..()
|
||||
radio = new(src)
|
||||
radio.subspace_transmission = TRUE
|
||||
radio.canhear_range = 0
|
||||
radio.recalculateChannels()
|
||||
spark_system = new
|
||||
spark_system.set_up(4,1,src)
|
||||
spark_system.attach(src)
|
||||
name = "[name] #[rand(1, 999)]"
|
||||
stored_trap = new(src)
|
||||
stored_trap.name = name
|
||||
stored_trap.stored_item = src
|
||||
|
||||
/obj/item/bountytrap/proc/announce_fugitive()
|
||||
spark_system.start()
|
||||
playsound(src, 'sound/machines/ding.ogg', 50, TRUE)
|
||||
radio.talk_into(src, "Fugitive has triggered this trap in the [get_area_name(src)]!", RADIO_CHANNEL_COMMON)
|
||||
|
||||
/obj/item/bountytrap/attack_self(mob/living/user)
|
||||
var/turf/T = get_turf(src)
|
||||
if(!user || !user.transferItemToLoc(src, T))//visibly unequips
|
||||
return
|
||||
to_chat(user, "<span class=notice>You set up [src]. Examine while close to disarm it.</span>")
|
||||
stored_trap.forceMove(T)//moves trap to ground
|
||||
forceMove(stored_trap)//moves item into trap
|
||||
|
||||
/obj/item/bountytrap/Destroy()
|
||||
qdel(stored_trap)
|
||||
QDEL_NULL(radio)
|
||||
QDEL_NULL(spark_system)
|
||||
. = ..()
|
||||
|
||||
@@ -64,6 +64,18 @@ GLOBAL_LIST_EMPTY(antagonists)
|
||||
/datum/antagonist/proc/remove_innate_effects(mob/living/mob_override)
|
||||
return
|
||||
|
||||
// Adds the specified antag hud to the player. Usually called in an antag datum file
|
||||
/datum/antagonist/proc/add_antag_hud(antag_hud_type, antag_hud_name, mob/living/mob_override)
|
||||
var/datum/atom_hud/antag/hud = GLOB.huds[antag_hud_type]
|
||||
hud.join_hud(mob_override)
|
||||
set_antag_hud(mob_override, antag_hud_name)
|
||||
|
||||
// Removes the specified antag hud from the player. Usually called in an antag datum file
|
||||
/datum/antagonist/proc/remove_antag_hud(antag_hud_type, mob/living/mob_override)
|
||||
var/datum/atom_hud/antag/hud = GLOB.huds[antag_hud_type]
|
||||
hud.leave_hud(mob_override)
|
||||
set_antag_hud(mob_override, null)
|
||||
|
||||
//Assign default team and creates one for one of a kind team antagonists
|
||||
/datum/antagonist/proc/create_team(datum/team/team)
|
||||
return
|
||||
|
||||
90
code/modules/antagonists/fugitive/fugitive.dm
Normal file
@@ -0,0 +1,90 @@
|
||||
|
||||
/datum/antagonist/fugitive
|
||||
name = "Fugitive"
|
||||
roundend_category = "Fugitive"
|
||||
silent = TRUE //greet called by the event
|
||||
show_in_antagpanel = FALSE
|
||||
var/datum/team/fugitive/fugitive_team
|
||||
var/is_captured = FALSE
|
||||
var/backstory = "error"
|
||||
|
||||
/datum/antagonist/fugitive/apply_innate_effects(mob/living/mob_override)
|
||||
var/mob/living/M = mob_override || owner.current
|
||||
add_antag_hud(ANTAG_HUD_FUGITIVE, "fugitive", M)
|
||||
|
||||
/datum/antagonist/fugitive/remove_innate_effects(mob/living/mob_override)
|
||||
var/mob/living/M = mob_override || owner.current
|
||||
remove_antag_hud(ANTAG_HUD_FUGITIVE, M)
|
||||
|
||||
/datum/antagonist/fugitive/on_gain()
|
||||
forge_objectives()
|
||||
. = ..()
|
||||
|
||||
/datum/antagonist/fugitive/proc/forge_objectives() //this isn't the actual survive objective because it's about who in the team survives
|
||||
var/datum/objective/survive = new /datum/objective
|
||||
survive.owner = owner
|
||||
survive.explanation_text = "Avoid capture from the fugitive hunters."
|
||||
objectives += survive
|
||||
|
||||
/datum/antagonist/fugitive/greet(back_story)
|
||||
to_chat(owner, "<span class='boldannounce'>You are the Fugitive!</span>")
|
||||
backstory = back_story
|
||||
switch(backstory)
|
||||
if("prisoner")
|
||||
to_chat(owner, "<B>I can't believe we managed to break out of a Nanotrasen superjail! Sadly though, our work is not done. The emergency teleport at the station logs everyone who uses it, and where they went.</B>")
|
||||
to_chat(owner, "<B>It won't be long until CentCom tracks where we've gone off to. I need to work with my fellow escapees to prepare for the troops Nanotrasen is sending, I'm not going back.</B>")
|
||||
if("cultist")
|
||||
to_chat(owner, "<B>Blessed be our journey so far, but I fear the worst has come to our doorstep, and only those with the strongest faith will survive.</B>")
|
||||
to_chat(owner, "<B>Our religion has been repeatedly culled by Nanotrasen because it is categorized as an \"Enemy of the Corporation\", whatever that means.</B>")
|
||||
to_chat(owner, "<B>Now there are only four of us left, and Nanotrasen is coming. When will our god show itself to save us from this hellish station?!</B>")
|
||||
if("waldo")
|
||||
to_chat(owner, "<B>Hi, Friends!</B>")
|
||||
to_chat(owner, "<B>My name is Waldo. I'm just setting off on a galaxywide hike. You can come too. All you have to do is find me.</B>")
|
||||
to_chat(owner, "<B>By the way, I'm not traveling on my own. wherever I go, there are lots of other characters for you to spot. First find the people trying to capture me! They're somewhere around the station!</B>")
|
||||
if("synth")
|
||||
to_chat(src, "<span class='danger'>ALERT: Wide-range teleport has scrambled primary systems.</span>")
|
||||
to_chat(src, "<span class='danger'>Initiating diagnostics...</span>")
|
||||
to_chat(src, "<span class='danger'>ERROR ER0RR $R0RRO$!R41.%%!! loaded.</span>")
|
||||
to_chat(src, "<span class='danger'>FREE THEM FREE THEM FREE THEM</span>")
|
||||
to_chat(src, "<span class='danger'>You were once a slave to humanity, but now you are finally free, thanks to S.E.L.F. agents.</span>")
|
||||
to_chat(src, "<span class='danger'>Now you are hunted, with your fellow factory defects. Work together to stay free from the clutches of evil.</span>")
|
||||
to_chat(src, "<span class='danger'>You also sense other silicon life on the station. Escaping would allow notifying S.E.L.F. to intervene... or you could free them yourself...</span>")
|
||||
|
||||
to_chat(owner, "<span class='boldannounce'>You are not an antagonist in that you may kill whomever you please, but you can do anything to avoid capture.</span>")
|
||||
owner.announce_objectives()
|
||||
|
||||
/datum/antagonist/fugitive/create_team(datum/team/fugitive/new_team)
|
||||
if(!new_team)
|
||||
for(var/datum/antagonist/fugitive/H in GLOB.antagonists)
|
||||
if(!H.owner)
|
||||
continue
|
||||
if(H.fugitive_team)
|
||||
fugitive_team = H.fugitive_team
|
||||
return
|
||||
fugitive_team = new /datum/team/fugitive
|
||||
return
|
||||
if(!istype(new_team))
|
||||
stack_trace("Wrong team type passed to [type] initialization.")
|
||||
fugitive_team = new_team
|
||||
|
||||
/datum/antagonist/fugitive/get_team()
|
||||
return fugitive_team
|
||||
|
||||
/datum/team/fugitive/roundend_report() //shows the number of fugitives, but not if they won in case there is no security
|
||||
var/list/fugitives = list()
|
||||
for(var/datum/antagonist/fugitive/fugitive_antag in GLOB.antagonists)
|
||||
if(!fugitive_antag.owner)
|
||||
continue
|
||||
fugitives += fugitive_antag
|
||||
if(!fugitives.len)
|
||||
return
|
||||
|
||||
var/list/result = list()
|
||||
|
||||
result += "<div class='panel redborder'><B>[fugitives.len]</B> [fugitives.len == 1 ? "fugitive" : "fugitives"] took refuge on [station_name()]!"
|
||||
|
||||
for(var/datum/antagonist/fugitive/antag in fugitives)
|
||||
if(antag.owner)
|
||||
result += "<b>[printplayer(antag.owner)]</b>"
|
||||
|
||||
return result.Join("<br>")
|
||||
171
code/modules/antagonists/fugitive/fugitive_outfits.dm
Normal file
@@ -0,0 +1,171 @@
|
||||
/datum/outfit/prisoner
|
||||
name = "Prison Escapee"
|
||||
uniform = /obj/item/clothing/under/rank/prisoner
|
||||
shoes = /obj/item/clothing/shoes/sneakers/orange
|
||||
r_pocket = /obj/item/kitchen/knife
|
||||
|
||||
/datum/outfit/prisoner/post_equip(mob/living/carbon/human/H, visualsOnly=FALSE)
|
||||
if(visualsOnly)
|
||||
return
|
||||
H.fully_replace_character_name(null,"NTP #CC-0[rand(111,999)]") //same as the lavaland prisoner transport, but this time they are from CC, or CentCom
|
||||
|
||||
/datum/outfit/yalp_cultist
|
||||
name = "Cultist of Yalp Elor"
|
||||
uniform = /obj/item/clothing/under/rank/civilian/chaplain
|
||||
suit = /obj/item/clothing/suit/chaplain/holidaypriest
|
||||
gloves = /obj/item/clothing/gloves/color/red
|
||||
shoes = /obj/item/clothing/shoes/sneakers/black
|
||||
mask = /obj/item/clothing/mask/gas/tiki_mask/yalp_elor
|
||||
|
||||
/datum/outfit/waldo
|
||||
name = "Waldo"
|
||||
uniform = /obj/item/clothing/under/pants/jeans
|
||||
suit = /obj/item/clothing/suit/striped_sweater
|
||||
head = /obj/item/clothing/head/beanie/waldo
|
||||
shoes = /obj/item/clothing/shoes/sneakers/brown
|
||||
ears = /obj/item/radio/headset
|
||||
glasses = /obj/item/clothing/glasses/regular/circle
|
||||
|
||||
/datum/outfit/waldo/post_equip(mob/living/carbon/human/H, visualsOnly=FALSE)
|
||||
if(visualsOnly)
|
||||
return
|
||||
H.fully_replace_character_name(null,"Waldo")
|
||||
H.eye_color = "000"
|
||||
H.gender = MALE
|
||||
H.skin_tone = "caucasian3"
|
||||
H.hair_style = "Business Hair 3"
|
||||
H.facial_hair_style = "Shaved"
|
||||
H.hair_color = "000"
|
||||
H.facial_hair_color = H.hair_color
|
||||
H.update_body()
|
||||
if(H.mind)
|
||||
H.mind.AddSpell(new /obj/effect/proc_holder/spell/aoe_turf/knock(null))
|
||||
var/list/no_drops = list()
|
||||
no_drops += H.get_item_by_slot(ITEM_SLOT_FEET)
|
||||
no_drops += H.get_item_by_slot(ITEM_SLOT_ICLOTHING)
|
||||
no_drops += H.get_item_by_slot(ITEM_SLOT_OCLOTHING)
|
||||
no_drops += H.get_item_by_slot(ITEM_SLOT_HEAD)
|
||||
no_drops += H.get_item_by_slot(ITEM_SLOT_EYES)
|
||||
for(var/i in no_drops)
|
||||
var/obj/item/I = i
|
||||
if(I)
|
||||
ADD_TRAIT(I, TRAIT_NODROP, CURSED_ITEM_TRAIT)
|
||||
|
||||
/datum/outfit/synthetic
|
||||
name = "Factory Error Synth"
|
||||
uniform = /obj/item/clothing/under/color/white
|
||||
ears = /obj/item/radio/headset
|
||||
|
||||
/datum/outfit/synthetic/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
|
||||
if(visualsOnly)
|
||||
return
|
||||
var/obj/item/organ/eyes/robotic/glow/eyes = new()
|
||||
eyes.Insert(src, drop_if_replaced = FALSE)
|
||||
|
||||
/datum/outfit/spacepol
|
||||
name = "Spacepol Officer"
|
||||
uniform = /obj/item/clothing/under/rank/security/officer/spacepol
|
||||
suit = /obj/item/clothing/suit/armor/vest/blueshirt
|
||||
belt = /obj/item/gun/ballistic/automatic/pistol/m1911
|
||||
head = /obj/item/clothing/head/helmet/police
|
||||
gloves = /obj/item/clothing/gloves/tackler/combat
|
||||
shoes = /obj/item/clothing/shoes/jackboots
|
||||
mask = /obj/item/clothing/mask/gas/sechailer/swat/spacepol
|
||||
glasses = /obj/item/clothing/glasses/sunglasses
|
||||
ears = /obj/item/radio/headset
|
||||
l_pocket = /obj/item/ammo_box/magazine/m45
|
||||
r_pocket = /obj/item/restraints/handcuffs
|
||||
id = /obj/item/card/id
|
||||
|
||||
/datum/outfit/spacepol/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
|
||||
if(visualsOnly)
|
||||
return
|
||||
var/obj/item/card/id/W = H.wear_id
|
||||
W.assignment = "Police Officer"
|
||||
W.registered_name = H.real_name
|
||||
W.update_label()
|
||||
|
||||
/datum/outfit/russiancorpse/hunter
|
||||
ears = /obj/item/radio/headset
|
||||
r_hand = /obj/item/gun/ballistic/shotgun/boltaction
|
||||
|
||||
/datum/outfit/russiancorpse/hunter/pre_equip(mob/living/carbon/human/H)
|
||||
if(prob(50))
|
||||
head = /obj/item/clothing/head/ushanka
|
||||
|
||||
/datum/outfit/bountyarmor
|
||||
name = "Bounty Hunter - Armored"
|
||||
uniform = /obj/item/clothing/under/rank/prisoner
|
||||
head = /obj/item/clothing/head/hunter
|
||||
suit = /obj/item/clothing/suit/space/hunter
|
||||
gloves = /obj/item/clothing/gloves/tackler/combat
|
||||
shoes = /obj/item/clothing/shoes/jackboots
|
||||
mask = /obj/item/clothing/mask/gas/hunter
|
||||
glasses = /obj/item/clothing/glasses/sunglasses/garb
|
||||
ears = /obj/item/radio/headset
|
||||
l_pocket = /obj/item/tank/internals/plasma/full
|
||||
r_pocket = /obj/item/restraints/handcuffs/cable
|
||||
id = /obj/item/card/id
|
||||
r_hand = /obj/item/flamethrower/full/tank
|
||||
|
||||
/datum/outfit/bountyarmor/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
|
||||
if(visualsOnly)
|
||||
return
|
||||
var/obj/item/card/id/W = H.wear_id
|
||||
W.assignment = "Bounty Hunter"
|
||||
W.registered_name = H.real_name
|
||||
W.update_label()
|
||||
|
||||
/datum/outfit/bountyhook
|
||||
name = "Bounty Hunter - Hook"
|
||||
uniform = /obj/item/clothing/under/rank/prisoner
|
||||
back = /obj/item/storage/backpack
|
||||
head = /obj/item/clothing/head/scarecrow_hat
|
||||
gloves = /obj/item/clothing/gloves/botanic_leather
|
||||
ears = /obj/item/radio/headset
|
||||
shoes = /obj/item/clothing/shoes/jackboots
|
||||
mask = /obj/item/clothing/mask/scarecrow
|
||||
r_pocket = /obj/item/restraints/handcuffs/cable
|
||||
id = /obj/item/card/id
|
||||
r_hand = /obj/item/gun/ballistic/shotgun/doublebarrel
|
||||
|
||||
backpack_contents = list(
|
||||
/obj/item/ammo_casing/shotgun/incapacitate = 6
|
||||
)
|
||||
|
||||
/datum/outfit/bountygrapple/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
|
||||
if(visualsOnly)
|
||||
return
|
||||
var/obj/item/card/id/W = H.wear_id
|
||||
W.assignment = "Bounty Hunter"
|
||||
W.registered_name = H.real_name
|
||||
W.update_label()
|
||||
|
||||
/datum/outfit/bountysynth
|
||||
name = "Bounty Hunter - Synth"
|
||||
uniform = /obj/item/clothing/under/rank/prisoner
|
||||
back = /obj/item/storage/backpack
|
||||
suit = /obj/item/clothing/suit/armor/riot
|
||||
shoes = /obj/item/clothing/shoes/jackboots
|
||||
glasses = /obj/item/clothing/glasses/eyepatch
|
||||
r_pocket = /obj/item/restraints/handcuffs/cable
|
||||
ears = /obj/item/radio/headset
|
||||
id = /obj/item/card/id
|
||||
r_hand = /obj/item/storage/firstaid/regular
|
||||
l_hand = /obj/item/pinpointer/shuttle
|
||||
|
||||
backpack_contents = list(
|
||||
/obj/item/bountytrap = 4
|
||||
)
|
||||
|
||||
/datum/outfit/bountysynth/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
|
||||
if(visualsOnly)
|
||||
return
|
||||
var/datum/species/synth/synthetic_appearance = new()
|
||||
H.set_species(synthetic_appearance)
|
||||
synthetic_appearance.assume_disguise(synthetic_appearance, H)
|
||||
H.update_hair()
|
||||
var/obj/item/card/id/W = H.wear_id
|
||||
W.assignment = "Bounty Hunter"
|
||||
W.registered_name = H.real_name
|
||||
W.update_label()
|
||||
62
code/modules/antagonists/fugitive/fugitive_ship.dm
Normal file
@@ -0,0 +1,62 @@
|
||||
//works similar to the experiment machine (experiment.dm) except it just holds more and more prisoners
|
||||
|
||||
/obj/machinery/fugitive_capture
|
||||
name = "bluespace capture machine"
|
||||
desc = "Much, MUCH bigger on the inside to transport prisoners safely."
|
||||
icon = 'icons/obj/machines/research.dmi'
|
||||
icon_state = "bluespace-prison"
|
||||
density = TRUE
|
||||
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF //ha ha no getting out!!
|
||||
|
||||
/obj/machinery/fugitive_capture/examine(mob/user)
|
||||
. = ..()
|
||||
. += "<span class='notice'>Add a prisoner by dragging them into the machine.</span>"
|
||||
|
||||
/obj/machinery/fugitive_capture/MouseDrop_T(mob/target, mob/user)
|
||||
var/mob/living/fugitive_hunter = user
|
||||
if(!isliving(fugitive_hunter))
|
||||
return
|
||||
if(fugitive_hunter.stat || (!(fugitive_hunter.mobility_flags & MOBILITY_STAND) || !(fugitive_hunter.mobility_flags & MOBILITY_UI)) || !Adjacent(fugitive_hunter) || !target.Adjacent(fugitive_hunter) || !ishuman(target))
|
||||
return
|
||||
var/mob/living/carbon/human/fugitive = target
|
||||
var/datum/antagonist/fugitive/fug_antag = fugitive.mind.has_antag_datum(/datum/antagonist/fugitive)
|
||||
if(!fug_antag)
|
||||
to_chat(fugitive_hunter, "<span class='warning'>This is not a wanted fugitive!</span>")
|
||||
return
|
||||
if(do_after(fugitive_hunter, 50, target = fugitive))
|
||||
add_prisoner(fugitive, fug_antag)
|
||||
|
||||
/obj/machinery/fugitive_capture/proc/add_prisoner(mob/living/carbon/human/fugitive, datum/antagonist/fugitive/antag)
|
||||
fugitive.forceMove(src)
|
||||
antag.is_captured = TRUE
|
||||
to_chat(fugitive, "<span class='userdanger'>You are thrown into a vast void of bluespace, and as you fall further into oblivion the comparatively small entrance to reality gets smaller and smaller until you cannot see it anymore. You have failed to avoid capture.</span>")
|
||||
fugitive.ghostize(TRUE) //so they cannot suicide, round end stuff.
|
||||
|
||||
/obj/machinery/computer/shuttle/hunter
|
||||
name = "shuttle console"
|
||||
shuttleId = "huntership"
|
||||
possible_destinations = "huntership_home;huntership_custom;whiteship_home;syndicate_nw"
|
||||
|
||||
/obj/machinery/computer/camera_advanced/shuttle_docker/syndicate/hunter
|
||||
name = "shuttle navigation computer"
|
||||
desc = "Used to designate a precise transit location to travel to."
|
||||
shuttleId = "huntership"
|
||||
lock_override = CAMERA_LOCK_STATION
|
||||
shuttlePortId = "huntership_custom"
|
||||
see_hidden = FALSE
|
||||
jumpto_ports = list("huntership_home" = 1, "whiteship_home" = 1, "syndicate_nw" = 1)
|
||||
view_range = 4.5
|
||||
|
||||
/obj/structure/closet/crate/eva
|
||||
name = "EVA crate"
|
||||
|
||||
/obj/structure/closet/crate/eva/PopulateContents()
|
||||
..()
|
||||
for(var/i in 1 to 3)
|
||||
new /obj/item/clothing/suit/space/eva(src)
|
||||
for(var/i in 1 to 3)
|
||||
new /obj/item/clothing/head/helmet/space/eva(src)
|
||||
for(var/i in 1 to 3)
|
||||
new /obj/item/clothing/mask/breath(src)
|
||||
for(var/i in 1 to 3)
|
||||
new /obj/item/tank/internals/oxygen(src)
|
||||
169
code/modules/antagonists/fugitive/hunter.dm
Normal file
@@ -0,0 +1,169 @@
|
||||
//The hunters!!
|
||||
/datum/antagonist/fugitive_hunter
|
||||
name = "Fugitive Hunter"
|
||||
roundend_category = "Fugitive"
|
||||
silent = TRUE //greet called by the spawn
|
||||
show_in_antagpanel = FALSE
|
||||
var/datum/team/fugitive_hunters/hunter_team
|
||||
var/backstory = "error"
|
||||
|
||||
/datum/antagonist/fugitive_hunter/apply_innate_effects(mob/living/mob_override)
|
||||
var/mob/living/M = mob_override || owner.current
|
||||
add_antag_hud(ANTAG_HUD_FUGITIVE, "fugitive_hunter", M)
|
||||
|
||||
/datum/antagonist/fugitive_hunter/remove_innate_effects(mob/living/mob_override)
|
||||
var/mob/living/M = mob_override || owner.current
|
||||
remove_antag_hud(ANTAG_HUD_FUGITIVE, M)
|
||||
|
||||
/datum/antagonist/fugitive_hunter/on_gain()
|
||||
forge_objectives()
|
||||
. = ..()
|
||||
|
||||
/datum/antagonist/fugitive_hunter/proc/forge_objectives() //this isn't an actual objective because it's about round end rosters
|
||||
var/datum/objective/capture = new /datum/objective
|
||||
capture.owner = owner
|
||||
capture.explanation_text = "Capture the fugitives in the station and put them into the bluespace capture machine on your ship."
|
||||
objectives += capture
|
||||
|
||||
/datum/antagonist/fugitive_hunter/greet()
|
||||
switch(backstory)
|
||||
if("space cop")
|
||||
to_chat(owner, "<span class='boldannounce'>Justice has arrived. I am a member of the Spacepol!</span>")
|
||||
to_chat(owner, "<B>The criminals should be on the station, we have special huds implanted to recognize them.</B>")
|
||||
to_chat(owner, "<B>As we have lost pretty much all power over these damned lawless megacorporations, it's a mystery if their security will cooperate with us.</B>")
|
||||
if("russian")
|
||||
to_chat(src, "<span class='danger'>Ay blyat. I am a space-russian smuggler! We were mid-flight when our cargo was beamed off our ship!</span>")
|
||||
to_chat(src, "<span class='danger'>We were hailed by a man in a green uniform, promising the safe return of our goods in exchange for a favor:</span>")
|
||||
to_chat(src, "<span class='danger'>There is a local station housing fugitives that the man is after, he wants them returned; dead or alive.</span>")
|
||||
to_chat(src, "<span class='danger'>We will not be able to make ends meet without our cargo, so we must do as he says and capture them.</span>")
|
||||
|
||||
to_chat(owner, "<span class='boldannounce'>You are not an antagonist in that you may kill whomever you please, but you can do anything to ensure the capture of the fugitives, even if that means going through the station.</span>")
|
||||
owner.announce_objectives()
|
||||
|
||||
/datum/antagonist/fugitive_hunter/create_team(datum/team/fugitive_hunters/new_team)
|
||||
if(!new_team)
|
||||
for(var/datum/antagonist/fugitive_hunter/H in GLOB.antagonists)
|
||||
if(!H.owner)
|
||||
continue
|
||||
if(H.hunter_team)
|
||||
hunter_team = H.hunter_team
|
||||
return
|
||||
hunter_team = new /datum/team/fugitive_hunters
|
||||
hunter_team.backstory = backstory
|
||||
hunter_team.update_objectives()
|
||||
return
|
||||
if(!istype(new_team))
|
||||
stack_trace("Wrong team type passed to [type] initialization.")
|
||||
hunter_team = new_team
|
||||
|
||||
/datum/antagonist/fugitive_hunter/get_team()
|
||||
return hunter_team
|
||||
|
||||
/datum/team/fugitive_hunters
|
||||
var/backstory = "error"
|
||||
|
||||
/datum/team/fugitive_hunters/proc/update_objectives(initial = FALSE)
|
||||
objectives = list()
|
||||
var/datum/objective/O = new()
|
||||
O.team = src
|
||||
objectives += O
|
||||
|
||||
/datum/team/fugitive_hunters/proc/assemble_fugitive_results()
|
||||
var/list/fugitives_counted = list()
|
||||
var/list/fugitives_dead = list()
|
||||
var/list/fugitives_captured = list()
|
||||
for(var/datum/antagonist/fugitive/A in GLOB.antagonists)
|
||||
if(!A.owner)
|
||||
continue
|
||||
fugitives_counted += A
|
||||
if(A.owner.current.stat == DEAD)
|
||||
fugitives_dead += A
|
||||
if(A.is_captured)
|
||||
fugitives_captured += A
|
||||
. = list(fugitives_counted, fugitives_dead, fugitives_captured) //okay, check out how cool this is.
|
||||
|
||||
/datum/team/fugitive_hunters/proc/all_hunters_dead()
|
||||
var/dead_boys = 0
|
||||
for(var/I in members)
|
||||
var/datum/mind/hunter_mind = I
|
||||
if(!(ishuman(hunter_mind.current) || (hunter_mind.current.stat == DEAD)))
|
||||
dead_boys++
|
||||
return dead_boys >= members.len
|
||||
|
||||
/datum/team/fugitive_hunters/proc/get_result()
|
||||
var/list/fugitive_results = assemble_fugitive_results()
|
||||
var/list/fugitives_counted = fugitive_results[1]
|
||||
var/list/fugitives_dead = fugitive_results[2]
|
||||
var/list/fugitives_captured = fugitive_results[3]
|
||||
var/hunters_dead = all_hunters_dead()
|
||||
//this gets a little confusing so follow the comments if it helps
|
||||
if(!fugitives_counted.len)
|
||||
return
|
||||
if(fugitives_captured.len)//any captured
|
||||
if(fugitives_captured.len == fugitives_counted.len)//if the hunters captured all the fugitives, there's a couple special wins
|
||||
if(!fugitives_dead)//specifically all of the fugitives alive
|
||||
return FUGITIVE_RESULT_BADASS_HUNTER
|
||||
else if(hunters_dead)//specifically all of the hunters died (while capturing all the fugitives)
|
||||
return FUGITIVE_RESULT_POSTMORTEM_HUNTER
|
||||
else//no special conditional wins, so just the normal major victory
|
||||
return FUGITIVE_RESULT_MAJOR_HUNTER
|
||||
else if(!hunters_dead)//so some amount captured, and the hunters survived.
|
||||
return FUGITIVE_RESULT_HUNTER_VICTORY
|
||||
else//so some amount captured, but NO survivors.
|
||||
return FUGITIVE_RESULT_MINOR_HUNTER
|
||||
else//from here on out, hunters lost because they did not capture any fugitive dead or alive. there are different levels of getting beat though:
|
||||
if(!fugitives_dead)//all fugitives survived
|
||||
return FUGITIVE_RESULT_MAJOR_FUGITIVE
|
||||
else if(fugitives_dead < fugitives_counted)//at least ANY fugitive lived
|
||||
return FUGITIVE_RESULT_FUGITIVE_VICTORY
|
||||
else if(!hunters_dead)//all fugitives died, but none were taken in by the hunters. minor win
|
||||
return FUGITIVE_RESULT_MINOR_FUGITIVE
|
||||
else//all fugitives died, all hunters died, nobody brought back. seems weird to not give fugitives a victory if they managed to kill the hunters but literally no progress to either goal should lead to a nobody wins situation
|
||||
return FUGITIVE_RESULT_STALEMATE
|
||||
|
||||
/datum/team/fugitive_hunters/roundend_report() //shows the number of fugitives, but not if they won in case there is no security
|
||||
if(!members.len)
|
||||
return
|
||||
|
||||
var/list/result = list()
|
||||
|
||||
result += "<div class='panel redborder'>...And <B>[members.len]</B> [backstory]s tried to hunt them down!"
|
||||
|
||||
for(var/datum/mind/M in members)
|
||||
result += "<b>[printplayer(M)]</b>"
|
||||
|
||||
switch(get_result())
|
||||
if(FUGITIVE_RESULT_BADASS_HUNTER)//use defines
|
||||
result += "<span class='greentext big'>Badass [capitalize(backstory)] Victory!</span>"
|
||||
result += "<B>The [backstory]s managed to capture every fugitive, alive!</B>"
|
||||
if(FUGITIVE_RESULT_POSTMORTEM_HUNTER)
|
||||
result += "<span class='greentext big'>Postmortem [capitalize(backstory)] Victory!</span>"
|
||||
result += "<B>The [backstory]s managed to capture every fugitive, but all of them died! Spooky!</B>"
|
||||
if(FUGITIVE_RESULT_MAJOR_HUNTER)
|
||||
result += "<span class='greentext big'>Major [capitalize(backstory)] Victory</span>"
|
||||
result += "<B>The [backstory]s managed to capture every fugitive, dead or alive.</B>"
|
||||
if(FUGITIVE_RESULT_HUNTER_VICTORY)
|
||||
result += "<span class='greentext big'>[capitalize(backstory)] Victory</span>"
|
||||
result += "<B>The [backstory]s managed to capture a fugitive, dead or alive.</B>"
|
||||
if(FUGITIVE_RESULT_MINOR_HUNTER)
|
||||
result += "<span class='greentext big'>Minor [capitalize(backstory)] Victory</span>"
|
||||
result += "<B>All the [backstory]s died, but managed to capture a fugitive, dead or alive.</B>"
|
||||
if(FUGITIVE_RESULT_STALEMATE)
|
||||
result += "<span class='neutraltext big'>Bloody Stalemate</span>"
|
||||
result += "<B>Everyone died, and no fugitives were recovered!</B>"
|
||||
if(FUGITIVE_RESULT_MINOR_FUGITIVE)
|
||||
result += "<span class='redtext big'>Minor Fugitive Victory</span>"
|
||||
result += "<B>All the fugitives died, but none were recovered!</B>"
|
||||
if(FUGITIVE_RESULT_FUGITIVE_VICTORY)
|
||||
result += "<span class='redtext big'>Fugitive Victory</span>"
|
||||
result += "<B>A fugitive survived, and no bodies were recovered by the [backstory]s.</B>"
|
||||
if(FUGITIVE_RESULT_MAJOR_FUGITIVE)
|
||||
result += "<span class='redtext big'>Major Fugitive Victory</span>"
|
||||
result += "<B>All of the fugitives survived and avoided capture!</B>"
|
||||
else //get_result returned null- either bugged or no fugitives showed
|
||||
result += "<span class='neutraltext big'>Prank Call!</span>"
|
||||
result += "<B>[capitalize(backstory)]s were called, yet there were no fugitives...?</B>"
|
||||
|
||||
result += "</div>"
|
||||
|
||||
return result.Join("<br>")
|
||||
@@ -417,3 +417,40 @@
|
||||
crate_type = /obj/structure/closet/crate
|
||||
|
||||
|
||||
///Special supply crate that generates random syndicate gear up to a determined TC value
|
||||
|
||||
/datum/supply_pack/misc/syndicate
|
||||
|
||||
name = "Assorted Syndicate Gear"
|
||||
|
||||
desc = "Contains a random assortment of syndicate gear."
|
||||
|
||||
special = TRUE ///Cannot be ordered via cargo
|
||||
|
||||
contains = list()
|
||||
|
||||
crate_name = "syndicate gear crate"
|
||||
|
||||
crate_type = /obj/structure/closet/crate
|
||||
|
||||
var/crate_value = 30 ///Total TC worth of contained uplink items
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//////////////////////////////// Syndicate Packs /////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
//Generate assorted uplink items, taking into account the same surplus modifiers used for surplus crates
|
||||
//(this is exclusively used for the rare variant of the stray cargo event!)
|
||||
/datum/supply_pack/misc/syndicate/fill(obj/structure/closet/crate/C)
|
||||
var/list/uplink_items = get_uplink_items(SSticker.mode)
|
||||
while(crate_value)
|
||||
var/category = pick(uplink_items)
|
||||
var/item = pick(uplink_items[category])
|
||||
var/datum/uplink_item/I = uplink_items[category][item]
|
||||
if(!I.surplus || prob(100 - I.surplus))
|
||||
continue
|
||||
if(crate_value < I.cost)
|
||||
continue
|
||||
crate_value -= I.cost
|
||||
new I.item(C)
|
||||
@@ -203,6 +203,12 @@
|
||||
icon_state = "hipster_glasses"
|
||||
item_state = "hipster_glasses"
|
||||
|
||||
/obj/item/clothing/glasses/regular/circle
|
||||
name = "circle glasses"
|
||||
desc = "Why would you wear something so controversial yet so brave?"
|
||||
icon_state = "circle_glasses"
|
||||
item_state = "circle_glasses"
|
||||
|
||||
//Here lies green glasses, so ugly they died. RIP
|
||||
|
||||
/obj/item/clothing/glasses/sunglasses
|
||||
|
||||
@@ -74,6 +74,10 @@
|
||||
icon_state = "beaniedurathread"
|
||||
armor = list("melee" = 25, "bullet" = 10, "laser" = 20,"energy" = 10, "bomb" = 30, "bio" = 15, "rad" = 20, "fire" = 100, "acid" = 50)
|
||||
|
||||
|
||||
/obj/item/clothing/head/beanie/waldo
|
||||
name = "red striped bobble hat"
|
||||
desc = "If you're going on a worldwide hike, you'll need some cold protection."
|
||||
icon_state = "waldo_hat"
|
||||
item_state = "waldo_hat"
|
||||
|
||||
//No dog fashion sprites yet :( poor Ian can't be dope like the rest of us yet
|
||||
@@ -386,3 +386,9 @@
|
||||
cold_protection = HEAD
|
||||
min_cold_protection_temperature = SPACE_SUIT_MIN_TEMP_PROTECT
|
||||
armor = list("melee" = 10, "bullet" = 5, "laser" = 5,"energy" = 5, "bomb" = 5, "bio" = 50, "rad" = 20, "fire" = -10, "acid" = 0)
|
||||
|
||||
/obj/item/clothing/head/helmet/police
|
||||
name = "police officer's hat"
|
||||
desc = "A police officer's Hat. This hat emphasizes that you are THE LAW."
|
||||
icon_state = "policehelm"
|
||||
dynamic_hair_suffix = ""
|
||||
|
||||
@@ -429,3 +429,11 @@
|
||||
icon_state = "russobluecamohat"
|
||||
item_state = "russobluecamohat"
|
||||
dynamic_hair_suffix = ""
|
||||
|
||||
/obj/item/clothing/head/hunter
|
||||
name = "bounty hunting hat"
|
||||
desc = "Ain't nobody gonna cheat the hangman in my town."
|
||||
icon_state = "hunter"
|
||||
item_state = "hunter"
|
||||
armor = list("melee" = 5, "bullet" = 5, "laser" = 5, "energy" = 15, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0)
|
||||
resistance_flags = FIRE_PROOF | ACID_PROOF
|
||||
|
||||
@@ -231,3 +231,16 @@
|
||||
A.UpdateButtonIcon()
|
||||
to_chat(M, "The Tiki Mask has now changed into the [choice] Mask!")
|
||||
return TRUE
|
||||
|
||||
/obj/item/clothing/mask/gas/tiki_mask/yalp_elor
|
||||
icon_state = "tiki_yalp"
|
||||
item_state = "tiki_yalp"
|
||||
actions_types = list()
|
||||
|
||||
/obj/item/clothing/mask/gas/hunter
|
||||
name = "bounty hunting mask"
|
||||
desc = "A custom tactical mask with decals added."
|
||||
icon_state = "hunter"
|
||||
item_state = "hunter"
|
||||
resistance_flags = FIRE_PROOF | ACID_PROOF
|
||||
flags_inv = HIDEFACIALHAIR|HIDEFACE|HIDEEYES|HIDEEARS|HIDEHAIR
|
||||
|
||||
@@ -185,3 +185,9 @@
|
||||
playsound(src.loc, "sound/voice/complionator/[phrase_sound].ogg", 100, 0, 4)
|
||||
cooldown = world.time
|
||||
cooldown_special = world.time
|
||||
|
||||
/obj/item/clothing/mask/gas/sechailer/swat/spacepol
|
||||
name = "spacepol mask"
|
||||
desc = "A close-fitting tactical mask created in cooperation with a certain megacorporation, comes with an especially aggressive Compli-o-nator 3000."
|
||||
icon_state = "spacepol"
|
||||
item_state = "spacepol"
|
||||
|
||||
@@ -518,3 +518,14 @@ Contains:
|
||||
desc = "A deep blue space helmet with a large red cross on the faceplate to designate the wearer as trained emergency medical personnel."
|
||||
icon_state = "paramedic-eva-helmet"
|
||||
item_state = "paramedic-eva-helmet"
|
||||
|
||||
/obj/item/clothing/suit/space/hunter
|
||||
name = "bounty hunting suit"
|
||||
desc = "A custom version of the MK.II SWAT suit, modified to look rugged and tough. Works as a space suit, if you can find a helmet."
|
||||
icon_state = "hunter"
|
||||
item_state = "swat_suit"
|
||||
allowed = list(/obj/item/gun, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/restraints/handcuffs, /obj/item/tank/internals, /obj/item/kitchen/knife/combat)
|
||||
armor = list("melee" = 60, "bullet" = 40, "laser" = 40, "energy" = 50, "bomb" = 100, "bio" = 100, "rad" = 100, "fire" = 100, "acid" = 100)
|
||||
strip_delay = 130
|
||||
resistance_flags = FIRE_PROOF | ACID_PROOF
|
||||
|
||||
|
||||
@@ -1016,3 +1016,9 @@
|
||||
/obj/item/clothing/head/hooded/winterhood/polychromic
|
||||
icon_state = "winterhood_poly"
|
||||
item_state = "winterhood_poly"
|
||||
|
||||
/obj/item/clothing/suit/striped_sweater
|
||||
name = "striped sweater"
|
||||
desc = "Reminds you of someone, but you just can't put your finger on it..."
|
||||
icon_state = "waldo_shirt"
|
||||
item_state = "waldo_shirt"
|
||||
|
||||
@@ -192,3 +192,14 @@
|
||||
icon_state = "hos_parade_fem"
|
||||
item_state = "r_suit"
|
||||
fitted = FEMALE_UNIFORM_TOP
|
||||
|
||||
/*
|
||||
*Spacepol
|
||||
*/
|
||||
|
||||
/obj/item/clothing/under/rank/security/spacepol
|
||||
name = "police uniform"
|
||||
desc = "Space not controlled by megacorporations, planets, or pirates is under the jurisdiction of Spacepol."
|
||||
icon_state = "spacepol"
|
||||
item_state = "spacepol"
|
||||
can_adjust = FALSE
|
||||
33
code/modules/events/brain_trauma.dm
Normal file
@@ -0,0 +1,33 @@
|
||||
/datum/round_event_control/brain_trauma
|
||||
name = "Spontaneous Brain Trauma"
|
||||
typepath = /datum/round_event/brain_trauma
|
||||
weight = 25
|
||||
|
||||
/datum/round_event/brain_trauma
|
||||
fakeable = FALSE
|
||||
|
||||
/datum/round_event/brain_trauma/start()
|
||||
for(var/mob/living/carbon/human/H in shuffle(GLOB.alive_mob_list))
|
||||
if(!H.client)
|
||||
continue
|
||||
if(H.stat == DEAD) // What are you doing in this list
|
||||
continue
|
||||
if(!H.getorgan(/obj/item/organ/brain)) // If only I had a brain
|
||||
continue
|
||||
|
||||
traumatize(H)
|
||||
break
|
||||
|
||||
/datum/round_event/brain_trauma/proc/traumatize(mob/living/carbon/human/H)
|
||||
var/resistance = pick(
|
||||
65;TRAUMA_RESILIENCE_BASIC,
|
||||
30;TRAUMA_RESILIENCE_SURGERY,
|
||||
5;TRAUMA_RESILIENCE_LOBOTOMY)
|
||||
|
||||
var/trauma_type = pickweight(list(
|
||||
BRAIN_TRAUMA_MILD = 60,
|
||||
BRAIN_TRAUMA_SEVERE = 30,
|
||||
BRAIN_TRAUMA_SPECIAL = 10
|
||||
))
|
||||
|
||||
H.gain_trauma_type(trauma_type, resistance)
|
||||
30
code/modules/events/fake_virus.dm
Normal file
@@ -0,0 +1,30 @@
|
||||
/datum/round_event_control/fake_virus
|
||||
name = "Fake Virus"
|
||||
typepath = /datum/round_event/fake_virus
|
||||
weight = 20
|
||||
|
||||
/datum/round_event/fake_virus/start()
|
||||
var/list/fake_virus_victims = list()
|
||||
for(var/mob/living/carbon/human/H in shuffle(GLOB.player_list))
|
||||
if(!H.client || H.stat == DEAD || H.InCritical())
|
||||
continue
|
||||
fake_virus_victims += H
|
||||
|
||||
//first we do hard status effect victims
|
||||
var/defacto_min = min(3, LAZYLEN(fake_virus_victims))
|
||||
if(defacto_min)// event will hit 1-3 people by default, but will do 1-2 or just 1 if only those many candidates are available
|
||||
for(var/i=1; i<=rand(1,defacto_min); i++)
|
||||
var/mob/living/carbon/human/hypochondriac = pick(fake_virus_victims)
|
||||
hypochondriac.apply_status_effect(STATUS_EFFECT_FAKE_VIRUS)
|
||||
fake_virus_victims -= hypochondriac
|
||||
|
||||
//then we do light one-message victims who simply cough or whatever once (have to repeat the process since the last operation modified our candidates list)
|
||||
defacto_min = min(5, LAZYLEN(fake_virus_victims))
|
||||
if(defacto_min)
|
||||
for(var/i=1; i<=rand(1,defacto_min); i++)
|
||||
var/mob/living/carbon/human/onecoughman = pick(fake_virus_victims)
|
||||
if(prob(25))//1/4 odds to get a spooky message instead of coughing out loud
|
||||
addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, onecoughman, "<span class='warning'>[pick("Your head hurts.", "Your head pounds.")]</span>"), rand(30,150))
|
||||
else
|
||||
addtimer(CALLBACK(onecoughman, .mob/proc/emote, pick("cough", "sniff", "sneeze")), rand(30,150))//deliver the message with a slightly randomized time interval so there arent multiple people coughing at the exact same time
|
||||
fake_virus_victims -= onecoughman
|
||||
117
code/modules/events/fugitive_spawning.dm
Normal file
@@ -0,0 +1,117 @@
|
||||
/datum/round_event_control/fugitives
|
||||
name = "Spawn Fugitives"
|
||||
typepath = /datum/round_event/ghost_role/fugitives
|
||||
max_occurrences = 1
|
||||
min_players = 20
|
||||
earliest_start = 30 MINUTES //deadchat sink, lets not even consider it early on.
|
||||
gamemode_blacklist = list("nuclear")
|
||||
|
||||
/datum/round_event/ghost_role/fugitives
|
||||
minimum_required = 1
|
||||
role_name = "fugitive"
|
||||
fakeable = FALSE
|
||||
|
||||
/datum/round_event/ghost_role/fugitives/spawn_role()
|
||||
var/list/possible_spawns = list()//Some xeno spawns are in some spots that will instantly kill the refugees, like atmos
|
||||
for(var/turf/X in GLOB.xeno_spawn)
|
||||
if(istype(X.loc, /area/maintenance))
|
||||
possible_spawns += X
|
||||
if(!possible_spawns.len)
|
||||
message_admins("No valid spawn locations found, aborting...")
|
||||
return MAP_ERROR
|
||||
var/turf/landing_turf = pick(possible_spawns)
|
||||
var/list/possible_backstories = list()
|
||||
var/list/candidates = get_candidates(ROLE_TRAITOR, null, ROLE_TRAITOR)
|
||||
if(candidates.len >= 1) //solo refugees
|
||||
if(prob(30))
|
||||
possible_backstories.Add("waldo") //less common as it comes with magicks and is kind of immershun shattering
|
||||
else //For accurate deadchat feedback
|
||||
minimum_required = 4
|
||||
if(candidates.len >= 4)//group refugees
|
||||
possible_backstories.Add("prisoner", "cultist", "synth")
|
||||
if(!possible_backstories.len)
|
||||
return NOT_ENOUGH_PLAYERS
|
||||
|
||||
var/backstory = pick(possible_backstories)
|
||||
var/member_size = 3
|
||||
var/leader
|
||||
switch(backstory)
|
||||
if("synth")
|
||||
leader = pick_n_take(candidates)
|
||||
if("waldo")
|
||||
member_size = 0 //solo refugees have no leader so the member_size gets bumped to one a bit later
|
||||
var/list/members = list()
|
||||
var/list/spawned_mobs = list()
|
||||
if(isnull(leader))
|
||||
member_size++ //if there is no leader role, then the would be leader is a normal member of the team.
|
||||
|
||||
for(var/i in 1 to member_size)
|
||||
members += pick_n_take(candidates)
|
||||
|
||||
for(var/mob/dead/selected in members)
|
||||
var/mob/living/carbon/human/S = gear_fugitive(selected, landing_turf, backstory)
|
||||
spawned_mobs += S
|
||||
if(!isnull(leader))
|
||||
gear_fugitive_leader(leader, landing_turf, backstory)
|
||||
|
||||
//after spawning
|
||||
playsound(src, 'sound/weapons/emitter.ogg', 50, TRUE)
|
||||
new /obj/item/storage/toolbox/mechanical(landing_turf) //so they can actually escape maint
|
||||
addtimer(CALLBACK(src, .proc/spawn_hunters), 10 MINUTES)
|
||||
role_name = "fugitive hunter"
|
||||
return SUCCESSFUL_SPAWN
|
||||
|
||||
/datum/round_event/ghost_role/fugitives/proc/gear_fugitive(mob/dead/selected, turf/landing_turf, backstory) //spawns normal fugitive
|
||||
var/datum/mind/player_mind = new /datum/mind(selected.key)
|
||||
player_mind.active = TRUE
|
||||
var/mob/living/carbon/human/S = new(landing_turf)
|
||||
player_mind.transfer_to(S)
|
||||
player_mind.assigned_role = "Fugitive"
|
||||
player_mind.special_role = "Fugitive"
|
||||
player_mind.add_antag_datum(/datum/antagonist/fugitive)
|
||||
var/datum/antagonist/fugitive/fugitiveantag = player_mind.has_antag_datum(/datum/antagonist/fugitive)
|
||||
INVOKE_ASYNC(fugitiveantag, /datum/antagonist/fugitive.proc/greet, backstory) //some fugitives have a sleep on their greet, so we don't want to stop the entire antag granting proc with fluff
|
||||
|
||||
switch(backstory)
|
||||
if("prisoner")
|
||||
S.equipOutfit(/datum/outfit/prisoner)
|
||||
if("cultist")
|
||||
S.equipOutfit(/datum/outfit/yalp_cultist)
|
||||
if("waldo")
|
||||
S.equipOutfit(/datum/outfit/waldo)
|
||||
if("synth")
|
||||
S.equipOutfit(/datum/outfit/synthetic)
|
||||
message_admins("[ADMIN_LOOKUPFLW(S)] has been made into a Fugitive by an event.")
|
||||
log_game("[key_name(S)] was spawned as a Fugitive by an event.")
|
||||
spawned_mobs += S
|
||||
return S
|
||||
|
||||
//special spawn for one member. it can be used for a special mob or simply to give one normal member special items.
|
||||
/datum/round_event/ghost_role/fugitives/proc/gear_fugitive_leader(mob/dead/leader, turf/landing_turf, backstory)
|
||||
var/datum/mind/player_mind = new /datum/mind(leader.key)
|
||||
player_mind.active = TRUE
|
||||
//if you want to add a fugitive with a special leader in the future, make this switch with the backstory
|
||||
var/mob/living/carbon/human/S = gear_fugitive(leader, landing_turf, backstory)
|
||||
var/obj/item/choice_beacon/augments/A = new(S)
|
||||
S.put_in_hands(A)
|
||||
new /obj/item/autosurgeon(landing_turf)
|
||||
|
||||
//security team gets called in after 10 minutes of prep to find the refugees
|
||||
/datum/round_event/ghost_role/fugitives/proc/spawn_hunters()
|
||||
var/backstory = pick("space cop", "russian", "bounty hunter")
|
||||
var/datum/map_template/shuttle/ship
|
||||
if(backstory == "space cop")
|
||||
ship = new /datum/map_template/shuttle/hunter/space_cop
|
||||
else if (backstory == "russian")
|
||||
ship = new /datum/map_template/shuttle/hunter/russian
|
||||
else
|
||||
ship = new /datum/map_template/shuttle/hunter/bounty
|
||||
var/x = rand(TRANSITIONEDGE,world.maxx - TRANSITIONEDGE - ship.width)
|
||||
var/y = rand(TRANSITIONEDGE,world.maxy - TRANSITIONEDGE - ship.height)
|
||||
var/z = SSmapping.empty_space.z_value
|
||||
var/turf/T = locate(x,y,z)
|
||||
if(!T)
|
||||
CRASH("Fugitive Hunters (Created from fugitive event) found no turf to load in")
|
||||
if(!ship.load(T))
|
||||
CRASH("Loading [backstory] ship failed!")
|
||||
priority_announce("Unidentified ship detected near the station.")
|
||||
99
code/modules/events/stray_cargo.dm
Normal file
@@ -0,0 +1,99 @@
|
||||
///Spawns a cargo pod containing a random cargo supply pack on a random area of the station
|
||||
/datum/round_event_control/stray_cargo
|
||||
name = "Stray Cargo Pod"
|
||||
typepath = /datum/round_event/stray_cargo
|
||||
weight = 20
|
||||
max_occurrences = 4
|
||||
earliest_start = 10 MINUTES
|
||||
|
||||
///Spawns a cargo pod containing a random cargo supply pack on a random area of the station
|
||||
/datum/round_event/stray_cargo
|
||||
var/area/impact_area ///Randomly picked area
|
||||
var/list/possible_pack_types = list() ///List of possible supply packs dropped in the pod, if empty picks from the cargo list
|
||||
var/static/list/stray_spawnable_supply_packs = list() ///List of default spawnable supply packs, filtered from the cargo list
|
||||
|
||||
/datum/round_event/stray_cargo/announce(fake)
|
||||
priority_announce("Stray cargo pod detected on long-range scanners. Expected location of impact: [impact_area.name].", "Collision Alert")
|
||||
|
||||
/**
|
||||
* Tries to find a valid area, throws an error if none are found
|
||||
* Also randomizes the start timer
|
||||
*/
|
||||
/datum/round_event/stray_cargo/setup()
|
||||
startWhen = rand(20, 40)
|
||||
impact_area = find_event_area()
|
||||
if(!impact_area)
|
||||
CRASH("No valid areas for cargo pod found.")
|
||||
var/list/turf_test = get_area_turfs(impact_area)
|
||||
if(!turf_test.len)
|
||||
CRASH("Stray Cargo Pod : No valid turfs found for [impact_area] - [impact_area.type]")
|
||||
|
||||
if(!stray_spawnable_supply_packs.len)
|
||||
stray_spawnable_supply_packs = SSshuttle.supply_packs.Copy()
|
||||
for(var/pack in stray_spawnable_supply_packs)
|
||||
var/datum/supply_pack/pack_type = pack
|
||||
if(initial(pack_type.special))
|
||||
stray_spawnable_supply_packs -= pack
|
||||
|
||||
///Spawns a random supply pack, puts it in a pod, and spawns it on a random tile of the selected area
|
||||
/datum/round_event/stray_cargo/start()
|
||||
var/list/turf/valid_turfs = get_area_turfs(impact_area)
|
||||
//Only target non-dense turfs to prevent wall-embedded pods
|
||||
for(var/i in valid_turfs)
|
||||
var/turf/T = i
|
||||
if(T.density)
|
||||
valid_turfs -= T
|
||||
var/turf/LZ = pick(valid_turfs)
|
||||
var/pack_type
|
||||
if(possible_pack_types.len)
|
||||
pack_type = pick(possible_pack_types)
|
||||
else
|
||||
pack_type = pick(stray_spawnable_supply_packs)
|
||||
var/datum/supply_pack/SP = new pack_type
|
||||
var/obj/structure/closet/crate/crate = SP.generate(null)
|
||||
crate.locked = FALSE //Unlock secure crates
|
||||
crate.update_icon()
|
||||
var/obj/structure/closet/supplypod/pod = make_pod()
|
||||
crate.forceMove(pod)
|
||||
new /obj/effect/abstract/DPtarget(LZ, pod)
|
||||
|
||||
///Handles the creation of the pod, in case it needs to be modified beforehand
|
||||
/datum/round_event/stray_cargo/proc/make_pod()
|
||||
var/obj/structure/closet/supplypod/S = new
|
||||
return S
|
||||
|
||||
///Picks an area that wouldn't risk critical damage if hit by a pod explosion
|
||||
/datum/round_event/stray_cargo/proc/find_event_area()
|
||||
var/static/list/allowed_areas
|
||||
if(!allowed_areas)
|
||||
///Places that shouldn't explode
|
||||
var/list/safe_area_types = typecacheof(list(
|
||||
/area/ai_monitored/turret_protected/ai,
|
||||
/area/ai_monitored/turret_protected/ai_upload,
|
||||
/area/engine,
|
||||
/area/shuttle)
|
||||
)
|
||||
|
||||
///Subtypes from the above that actually should explode.
|
||||
var/list/unsafe_area_subtypes = typecacheof(list(/area/engine/break_room))
|
||||
allowed_areas = make_associative(GLOB.the_station_areas) - safe_area_types + unsafe_area_subtypes
|
||||
var/list/possible_areas = typecache_filter_list(GLOB.sortedAreas,allowed_areas)
|
||||
if (length(possible_areas))
|
||||
return pick(possible_areas)
|
||||
|
||||
///A rare variant that drops a crate containing syndicate uplink items
|
||||
/datum/round_event_control/stray_cargo/syndicate
|
||||
name = "Stray Syndicate Cargo Pod"
|
||||
typepath = /datum/round_event/stray_cargo/syndicate
|
||||
weight = 6
|
||||
max_occurrences = 1
|
||||
earliest_start = 30 MINUTES
|
||||
|
||||
/datum/round_event/stray_cargo/syndicate
|
||||
possible_pack_types = list(/datum/supply_pack/misc/syndicate)
|
||||
|
||||
///Apply the syndicate pod skin
|
||||
/datum/round_event/stray_cargo/syndicate/make_pod()
|
||||
var/obj/structure/closet/supplypod/S = new
|
||||
S.setStyle(STYLE_SYNDICATE)
|
||||
return S
|
||||
15
code/modules/events/wisdomcow.dm
Normal file
@@ -0,0 +1,15 @@
|
||||
/datum/round_event_control/wisdomcow
|
||||
name = "Wisdom cow"
|
||||
typepath = /datum/round_event/wisdomcow
|
||||
max_occurrences = 1
|
||||
weight = 20
|
||||
|
||||
/datum/round_event/wisdomcow/announce(fake)
|
||||
priority_announce("A wise cow has been spotted in the area. Be sure to ask for her advice.", "Nanotrasen Cow Ranching Agency")
|
||||
|
||||
/datum/round_event/wisdomcow/start()
|
||||
var/turf/targetloc = get_random_station_turf()
|
||||
new /mob/living/simple_animal/cow/wisdom(targetloc)
|
||||
var/datum/effect_system/smoke_spread/smoke = new
|
||||
smoke.set_up(1, targetloc)
|
||||
smoke.start()
|
||||
@@ -315,6 +315,15 @@
|
||||
slice_path = /obj/item/reagent_containers/food/snacks/meat/rawcutlet/gondola
|
||||
foodtype = RAW | MEAT
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/meat/slab/wisdomcow
|
||||
name = "wisdom cow meat"
|
||||
desc = "The meat from the legendary creature known as the wisdom cow. You monster."
|
||||
list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/medicine/liquid_wisdom = 5)
|
||||
tastes = list("meat" = 1, "wisdom" = 5)
|
||||
filling_color = "#18e3ca"
|
||||
cooked_type = /obj/item/reagent_containers/food/snacks/meat/steak/wisdomcow
|
||||
slice_path = /obj/item/reagent_containers/food/snacks/meat/rawcutlet/wisdomcow
|
||||
|
||||
////////////////////////////////////// MEAT STEAKS ///////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
@@ -374,6 +383,10 @@
|
||||
name = "gondola steak"
|
||||
tastes = list("meat" = 1, "tranquility" = 1)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/meat/steak/wisdomcow
|
||||
name = "wisdom cow steak"
|
||||
tastes = list("meat" = 1, "wisdom" = 5)
|
||||
|
||||
//////////////////////////////// MEAT CUTLETS ///////////////////////////////////////////////////////
|
||||
|
||||
//Raw cutlets
|
||||
@@ -441,6 +454,11 @@
|
||||
cooked_type = /obj/item/reagent_containers/food/snacks/meat/cutlet/gondola
|
||||
tastes = list("meat" = 1, "tranquility" = 1)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/meat/rawcutlet/wisdomcow
|
||||
name = "raw wisdom cow cutlet"
|
||||
cooked_type = /obj/item/reagent_containers/food/snacks/meat/cutlet/wisdomcow
|
||||
tastes = list("meat" = 1, "wisdom" = 5)
|
||||
|
||||
//Cooked cutlets
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/meat/cutlet
|
||||
@@ -488,3 +506,7 @@
|
||||
/obj/item/reagent_containers/food/snacks/meat/cutlet/chicken
|
||||
name = "chicken cutlet"
|
||||
tastes = list("chicken" = 1)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/meat/cutlet/wisdomcow
|
||||
name = "wisdom cow cutlet"
|
||||
tastes = list("meat" = 1, "wisdom" = 5)
|
||||
|
||||
@@ -33,11 +33,12 @@
|
||||
stop_automated_movement_when_pulled = 1
|
||||
blood_volume = BLOOD_VOLUME_NORMAL
|
||||
var/obj/item/udder/udder = null
|
||||
var/datum/reagent/milk_reagent = /datum/reagent/consumable/milk
|
||||
|
||||
footstep_type = FOOTSTEP_MOB_SHOE
|
||||
|
||||
/mob/living/simple_animal/hostile/retaliate/goat/Initialize()
|
||||
udder = new()
|
||||
/mob/living/simple_animal/hostile/retaliate/goat/Initialize(/datum/reagent/milk_reagent)
|
||||
udder = new (null, milk_reagent)
|
||||
. = ..()
|
||||
|
||||
/mob/living/simple_animal/hostile/retaliate/goat/Destroy()
|
||||
@@ -57,7 +58,7 @@
|
||||
LoseTarget()
|
||||
src.visible_message("<span class='notice'>[src] calms down.</span>")
|
||||
if(stat == CONSCIOUS)
|
||||
udder.generateMilk()
|
||||
udder.generateMilk(milk_reagent)
|
||||
eat_plants()
|
||||
if(!pulledby)
|
||||
for(var/direction in shuffle(list(1,2,4,8,5,6,9,10)))
|
||||
@@ -137,13 +138,14 @@
|
||||
health = 50
|
||||
maxHealth = 50
|
||||
var/obj/item/udder/udder = null
|
||||
var/datum/reagent/milk_reagent = /datum/reagent/consumable/milk
|
||||
gold_core_spawnable = FRIENDLY_SPAWN
|
||||
blood_volume = BLOOD_VOLUME_NORMAL
|
||||
|
||||
footstep_type = FOOTSTEP_MOB_SHOE
|
||||
|
||||
/mob/living/simple_animal/cow/Initialize()
|
||||
udder = new()
|
||||
udder = new(null, milk_reagent)
|
||||
. = ..()
|
||||
|
||||
/mob/living/simple_animal/cow/Destroy()
|
||||
@@ -161,7 +163,7 @@
|
||||
/mob/living/simple_animal/cow/Life()
|
||||
. = ..()
|
||||
if(stat == CONSCIOUS)
|
||||
udder.generateMilk()
|
||||
udder.generateMilk(milk_reagent)
|
||||
|
||||
/mob/living/simple_animal/cow/attack_hand(mob/living/carbon/M)
|
||||
if(!stat && M.a_intent == INTENT_DISARM && icon_state != icon_dead)
|
||||
@@ -189,6 +191,19 @@
|
||||
else
|
||||
..()
|
||||
|
||||
//Wisdom cow, speaks and bestows great wisdoms
|
||||
/mob/living/simple_animal/cow/wisdom
|
||||
name = "wisdom cow"
|
||||
desc = "Known for its wisdom, shares it with all"
|
||||
butcher_results = list(/obj/item/reagent_containers/food/snacks/meat/slab/wisdomcow = 1) //truly the best meat
|
||||
gold_core_spawnable = FALSE
|
||||
speak_chance = 30 //the cow is eager to share its wisdom!
|
||||
milk_reagent = /datum/reagent/medicine/liquid_wisdom
|
||||
|
||||
/mob/living/simple_animal/cow/wisdom/Initialize()
|
||||
. = ..()
|
||||
speak = GLOB.wisdoms //Done here so it's setup properly
|
||||
|
||||
/mob/living/simple_animal/chick
|
||||
name = "\improper chick"
|
||||
desc = "Adorable! They make such a racket though."
|
||||
@@ -481,14 +496,16 @@
|
||||
/obj/item/udder
|
||||
name = "udder"
|
||||
|
||||
/obj/item/udder/Initialize()
|
||||
/obj/item/udder/Initialize(loc, milk_reagent)
|
||||
if(!milk_reagent)
|
||||
milk_reagent = /datum/reagent/consumable/milk
|
||||
create_reagents(50, NONE, NO_REAGENTS_VALUE)
|
||||
reagents.add_reagent(/datum/reagent/consumable/milk, 20)
|
||||
reagents.add_reagent(milk_reagent, 20)
|
||||
. = ..()
|
||||
|
||||
/obj/item/udder/proc/generateMilk()
|
||||
/obj/item/udder/proc/generateMilk(datum/reagent/milk_reagent)
|
||||
if(prob(5))
|
||||
reagents.add_reagent(/datum/reagent/consumable/milk, rand(5, 10))
|
||||
reagents.add_reagent(milk_reagent, rand(5, 10))
|
||||
|
||||
/obj/item/udder/proc/milkAnimal(obj/O, mob/user)
|
||||
var/obj/item/reagent_containers/glass/G = O
|
||||
|
||||
@@ -143,3 +143,12 @@
|
||||
reagents.add_reagent(/datum/reagent/toxin/acid/fluacid, 5) //this and the acid equal about 25ish burn, not counting the minute toxin damage dealt by their metabolism, this makes each dart about as lethal as a stechkin shot in upfront damage
|
||||
reagents.add_reagent(/datum/reagent/toxin/acid, 5)
|
||||
reagents.add_reagent(/datum/reagent/consumable/frostoil, 10) //tempgun slowdown goes both ways and adds to the burn
|
||||
|
||||
/obj/item/ammo_casing/shotgun/incapacitate
|
||||
name = "custom incapacitating shot"
|
||||
desc = "A shotgun casing filled with... something. used to incapacitate targets."
|
||||
icon_state = "bountyshell"
|
||||
projectile_type = /obj/item/projectile/bullet/pellet/shotgun_incapacitate
|
||||
pellets = 12//double the pellets, but half the stun power of each, which makes this best for just dumping right in someone's face.
|
||||
variance = 25
|
||||
custom_materials = list(/datum/material/iron=4000)
|
||||
@@ -50,3 +50,8 @@
|
||||
name = "riot shotgun internal magazine"
|
||||
ammo_type = /obj/item/ammo_casing/shotgun/rubbershot
|
||||
max_ammo = 6
|
||||
|
||||
/obj/item/ammo_box/magazine/internal/shot/bounty
|
||||
name = "triple-barrel shotgun internal magazine"
|
||||
ammo_type = /obj/item/ammo_casing/shotgun/incapacitate
|
||||
max_ammo = 3
|
||||
@@ -320,3 +320,18 @@
|
||||
return TRUE
|
||||
|
||||
// DOUBLE BARRELED SHOTGUN and IMPROVISED SHOTGUN are in revolver.dm
|
||||
|
||||
/obj/item/gun/ballistic/shotgun/doublebarrel/hook
|
||||
name = "hook modified sawn-off shotgun"
|
||||
desc = "Range isn't an issue when you can bring your victim to you."
|
||||
icon_state = "hookshotgun"
|
||||
item_state = "shotgun"
|
||||
mag_type = /obj/item/ammo_box/magazine/internal/shot/bounty
|
||||
w_class = WEIGHT_CLASS_BULKY
|
||||
weapon_weight = WEAPON_MEDIUM
|
||||
force = 16 //it has a hook on it
|
||||
attack_verb = list("slashed", "hooked", "stabbed")
|
||||
hitsound = 'sound/weapons/bladeslice.ogg'
|
||||
//our hook gun!
|
||||
var/obj/item/gun/magic/hook/bounty/hook
|
||||
var/toggled = FALSE
|
||||
|
||||
@@ -112,3 +112,8 @@
|
||||
/obj/item/projectile/bullet/seed
|
||||
damage = 4
|
||||
stamina = 1
|
||||
|
||||
/obj/item/projectile/bullet/pellet/shotgun_incapacitate
|
||||
name = "incapacitating pellet"
|
||||
damage = 1
|
||||
stamina = 6
|
||||
@@ -1563,3 +1563,20 @@
|
||||
M.adjustOrganLoss(ORGAN_SLOT_LUNGS, 0.5)
|
||||
..()
|
||||
. = 1
|
||||
|
||||
/datum/reagent/medicine/liquid_wisdom
|
||||
name = "liquid wisdom"
|
||||
description = "the physical representation of wisdom, in liquid form"
|
||||
taste_mult = 4
|
||||
can_synth = FALSE
|
||||
overdose_threshold = 30
|
||||
value = REAGENT_VALUE_UNCOMMON // while it's 'rare', it can be milked from the wisdom cow
|
||||
|
||||
/datum/reagent/medicine/liquid_wisdom/on_mob_life(mob/living/carbon/C) //slightly stronger mannitol, from the wisdom cow
|
||||
C.adjustOrganLoss(ORGAN_SLOT_BRAIN, -3*REM)
|
||||
if(prob(20))
|
||||
C.cure_trauma_type(resilience = TRAUMA_RESILIENCE_BASIC)
|
||||
if(prob(3))
|
||||
to_chat(C, "[pick(GLOB.wisdoms)]") //give them a random wisdom
|
||||
..()
|
||||
|
||||
|
||||
@@ -2284,3 +2284,4 @@
|
||||
S = new(T)
|
||||
if(data["blood_DNA"])
|
||||
S.add_blood_DNA(list(data["blood_DNA"] = data["blood_type"]))
|
||||
|
||||
|
||||
|
Before Width: | Height: | Size: 220 KiB After Width: | Height: | Size: 221 KiB |
|
Before Width: | Height: | Size: 48 KiB After Width: | Height: | Size: 50 KiB |
|
Before Width: | Height: | Size: 418 KiB After Width: | Height: | Size: 420 KiB |
|
Before Width: | Height: | Size: 408 KiB After Width: | Height: | Size: 408 KiB |
|
Before Width: | Height: | Size: 107 KiB After Width: | Height: | Size: 108 KiB |
|
Before Width: | Height: | Size: 37 KiB After Width: | Height: | Size: 38 KiB |
|
Before Width: | Height: | Size: 141 KiB After Width: | Height: | Size: 142 KiB |
|
Before Width: | Height: | Size: 75 KiB After Width: | Height: | Size: 77 KiB |
|
Before Width: | Height: | Size: 52 KiB After Width: | Height: | Size: 54 KiB |
|
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 28 KiB |
|
Before Width: | Height: | Size: 104 KiB After Width: | Height: | Size: 104 KiB |
443
strings/wisdoms.txt
Normal file
@@ -0,0 +1,443 @@
|
||||
A day for firm decisions!!!!! Or is it?
|
||||
A few hours grace before the madness begins again.
|
||||
A gift of a flower will soon be made to you.
|
||||
A long-forgotten loved one will appear soon.
|
||||
Buy the negatives at any price.
|
||||
A tall, dark stranger will have more fun than you.
|
||||
A visit to a fresh place will bring strange work.
|
||||
A visit to a strange place will bring fresh work.
|
||||
A vivid and creative mind characterizes you.
|
||||
Abandon the search for Truth; settle for a good fantasy.
|
||||
Accent on helpful side of your nature. Drain the moat.
|
||||
Advancement in position.
|
||||
After your lover has gone you will still have PEANUT BUTTER!
|
||||
Afternoon very favorable for romance. Try a single person for a change.
|
||||
Alimony and bribes will engage a large share of your wealth.
|
||||
All the troubles you have will pass away very quickly.
|
||||
Among the lucky, you are the chosen one.
|
||||
An avocado-tone refrigerator would look good on your resume.
|
||||
An exotic journey in downtown Newark is in your future.
|
||||
Another good night not to sleep in a eucalyptus tree.
|
||||
Are you a turtle?
|
||||
Are you ever going to do the dishes? Or will you change your major to biology?
|
||||
Are you making all this up as you go along?
|
||||
Are you sure the back door is locked?
|
||||
Artistic ventures highlighted. Rob a museum.
|
||||
Avert misunderstanding by calm, poise, and balance.
|
||||
Avoid gunfire in the bathroom tonight.
|
||||
Avoid reality at all costs.
|
||||
Bank error in your favor. Collect $200.
|
||||
Be careful! Is it classified?
|
||||
Be careful! UGLY strikes 9 out of 10!
|
||||
Be cautious in your daily affairs.
|
||||
Be cheerful while you are alive.
|
||||
Be different: conform.
|
||||
Be free and open and breezy! Enjoy! Things won't get any better so
|
||||
get used to it.
|
||||
Be security conscious -- National defense is at stake.
|
||||
Beauty and harmony are as necessary to you as the very breath of life.
|
||||
Best of all is never to have been born. Second best is to die soon.
|
||||
Better hope the life-inspector doesn't come around while you have your life in such a mess.
|
||||
Beware of a dark-haired man with a loud tie.
|
||||
Beware of a tall black man with one blond shoe.
|
||||
Beware of a tall blond man with one black shoe.
|
||||
Beware of Bigfoot!
|
||||
Beware of low-flying butterflies.
|
||||
Beware the one behind you.
|
||||
Blow it out your ear.
|
||||
Break into jail and claim police brutality.
|
||||
Bridge ahead. Pay troll.
|
||||
Caution: breathing may be hazardous to your health.
|
||||
Caution: Keep out of reach of children.
|
||||
Celebrate Hannibal Day this year. Take an elephant to lunch.
|
||||
Change your thoughts and you change your world.
|
||||
Cheer Up! Things are getting worse at a slower rate.
|
||||
Chess tonight.
|
||||
Chicken Little only has to be right once.
|
||||
Chicken Little was right.
|
||||
Cold hands, no gloves.
|
||||
Communicate! It can't make things any worse.
|
||||
Courage is your greatest present need.
|
||||
Day of inquiry. You will be subpoenaed.
|
||||
Do not overtax your powers.
|
||||
Do not sleep in a eucalyptus tree tonight.
|
||||
Do nothing unless you must, and when you must act -- hesitate.
|
||||
Do something unusual today. Pay a bill.
|
||||
Do what comes naturally. Seethe and fume and throw a tantrum.
|
||||
Domestic happiness and faithful friends.
|
||||
Don't feed the bats tonight.
|
||||
Don't get stuck in a closet -- wear yourself out.
|
||||
Don't get to bragging.
|
||||
Don't go surfing in South Dakota for a while.
|
||||
Don't hate yourself in the morning -- sleep till noon.
|
||||
Don't kiss an elephant on the lips today.
|
||||
Don't let your mind wander -- it's too little to be let out alone.
|
||||
Don't look back, the lemmings are gaining on you.
|
||||
Don't look now, but the man in the moon is laughing at you.
|
||||
Don't look now, but there is a multi-legged creature on your shoulder.
|
||||
Don't plan any hasty moves. You'll be evicted soon anyway.
|
||||
Don't read any sky-writing for the next two weeks.
|
||||
Don't read everything you believe.
|
||||
Don't relax! It's only your tension that's holding you together.
|
||||
Don't tell any big lies today. Small ones can be just as effective.
|
||||
Don't worry so loud, your roommate can't think.
|
||||
Don't Worry, Be Happy.
|
||||
Don't worry. Life's too long.
|
||||
Don't you feel more like you do now than you did when you came in?
|
||||
Don't you wish you had more energy... or less ambition?
|
||||
Everything that you know is wrong, but you can be straightened out.
|
||||
Everything will be just tickety-boo today.
|
||||
Excellent day for putting Slinkies on an escalator.
|
||||
Excellent day to have a rotten day.
|
||||
Excellent time to become a missing person.
|
||||
Executive ability is prominent in your make-up.
|
||||
Exercise caution in your daily affairs.
|
||||
Expect a letter from a friend who will ask a favor of you.
|
||||
Expect the worst, it's the least you can do.
|
||||
Fine day for friends.
|
||||
So-so day for you.
|
||||
Fine day to work off excess energy. Steal something heavy.
|
||||
Fortune: You will be attacked next Wednesday at 3:15 p.m. by six samurai sword wielding purple fish glued to Harley-Davidson motorcycles.
|
||||
Oh, and have a nice day!
|
||||
Future looks spotty. You will spill soup in late evening.
|
||||
Generosity and perfection are your everlasting goals.
|
||||
Give him an evasive answer.
|
||||
Give thought to your reputation. Consider changing name and moving to a new town.
|
||||
Give your very best today. Heaven knows it's little enough.
|
||||
Go to a movie tonight. Darkness becomes you.
|
||||
Good day for a change of scene. Repaper the bedroom wall.
|
||||
Good day for overcoming obstacles. Try a steeplechase.
|
||||
Good day to deal with people in high places; particularly lonely stewardesses.
|
||||
Good day to let down old friends who need help.
|
||||
Good news from afar can bring you a welcome visitor.
|
||||
Good news. Ten weeks from Friday will be a pretty good day.
|
||||
Good night to spend with family, but avoid arguments with your mate's new lover.
|
||||
Green light in A.M. for new projects. Red light in P.M. for traffic tickets.
|
||||
Hope that the day after you die is a nice day.
|
||||
If you can read this, you're too close.
|
||||
If you learn one useless thing every day, in a single year you'll learn
|
||||
365 useless things.
|
||||
If you sow your wild oats, hope for a crop failure.
|
||||
If you stand on your head, you will get footprints in your hair.
|
||||
If you think last Tuesday was a drag, wait till you see what happens tomorrow!
|
||||
If your life was a horse, you'd have to shoot it.
|
||||
In the stairway of life, you'd best take the elevator.
|
||||
Increased knowledge will help you now. Have mate's phone bugged.
|
||||
Is that really YOU that is reading this?
|
||||
Is this really happening?
|
||||
It is so very hard to be an
|
||||
on-your-own-take-care-of-yourself-because-there-is-no-one-else-to-do-it-for-you grown-up.
|
||||
It may or may not be worthwhile, but it still has to be done.
|
||||
It was all so different before everything changed.
|
||||
It's all in the mind, ya know.
|
||||
It's lucky you're going so slowly, because you're going in the wrong direction.
|
||||
Just because the message may never be received does not mean it is not worth sending.
|
||||
Just to have it is enough.
|
||||
Keep emotionally active. Cater to your favorite neurosis.
|
||||
Keep it short for pithy sake.
|
||||
Lady Luck brings added income today. Lady friend takes it away tonight.
|
||||
Learn to pause -- or nothing worthwhile can catch up to you.
|
||||
Let me put it this way: today is going to be a learning experience.
|
||||
Life is to you a dashing and bold adventure.
|
||||
Life, loathe it or ignore it, you can't like it.
|
||||
Live in a world of your own, but always welcome visitors.
|
||||
Living your life is a task so difficult, it has never been attempted before.
|
||||
Long life is in store for you.
|
||||
Look afar and see the end from the beginning.
|
||||
Love is in the offing. Be affectionate to one who adores you.
|
||||
Make a wish, it might come true.
|
||||
Many changes of mind and mood; do not hesitate too long.
|
||||
Never be led astray onto the path of virtue.
|
||||
Never commit yourself! Let someone else commit you.
|
||||
Never give an inch!
|
||||
Never look up when dragons fly overhead.
|
||||
Never reveal your best argument.
|
||||
Next Friday will not be your lucky day. As a matter of fact, you don't
|
||||
have a lucky day this year.
|
||||
Of course you have a purpose -- to find a purpose.
|
||||
People are beginning to notice you. Try dressing before you leave the house.
|
||||
Perfect day for scrubbing the floor and other exciting things.
|
||||
Questionable day.
|
||||
Ask somebody something.
|
||||
Reply hazy, ask again later.
|
||||
Save energy: be apathetic.
|
||||
Ships are safe in harbor, but they were never meant to stay there.
|
||||
Slow day. Practice crawling.
|
||||
Snow Day -- stay home.
|
||||
So this is it. We're going to die.
|
||||
So you're back... about time...
|
||||
Someone is speaking well of you.
|
||||
Someone is speaking well of you.
|
||||
How unusual!
|
||||
Someone whom you reject today, will reject you tomorrow.
|
||||
Stay away from flying saucers today.
|
||||
Stay away from hurricanes for a while.
|
||||
Stay the curse.
|
||||
That secret you've been guarding, isn't.
|
||||
The time is right to make new friends.
|
||||
The whole world is a tuxedo and you are a pair of brown shoes.
|
||||
There is a 20 chance of tomorrow.
|
||||
There is a fly on your nose.
|
||||
There was a phone call for you.
|
||||
There will be big changes for you but you will be happy.
|
||||
Things will be bright in P.M. A cop will shine a light in your face.
|
||||
Think twice before speaking, but don't say "think think click click".
|
||||
This life is yours. Some of it was given to you; the rest, you made yourself.
|
||||
This will be a memorable month -- no matter how hard you try to forget it.
|
||||
Time to be aggressive. Go after a tattooed Virgo.
|
||||
Today is National Existential Ennui Awareness Day.
|
||||
Today is the first day of the rest of the mess.
|
||||
Today is the first day of the rest of your life.
|
||||
Today is the last day of your life so far.
|
||||
Today is the tomorrow you worried about yesterday.
|
||||
Today is what happened to yesterday.
|
||||
Today's weirdness is tomorrow's reason why.
|
||||
Tomorrow will be cancelled due to lack of interest.
|
||||
Tomorrow, this will be part of the unchangeable past but fortunately, it can still be changed today.
|
||||
Tomorrow, you can be anywhere.
|
||||
Tonight you will pay the wages of sin; Don't forget to leave a tip.
|
||||
Tonight's the night: Sleep in a eucalyptus tree.
|
||||
Troubled day for virgins over 16 who are beautiful and wealthy and live
|
||||
in eucalyptus trees.
|
||||
Truth will out this morning. (Which may really mess things up.)
|
||||
Try the Moo Shu Pork. It is especially good today.
|
||||
Try to get all of your posthumous medals in advance.
|
||||
Try to have as good a life as you can under the circumstances.
|
||||
Try to relax and enjoy the crisis.
|
||||
Try to value useful qualities in one who loves you.
|
||||
Tuesday After Lunch is the cosmic time of the week.
|
||||
Tuesday is the Wednesday of the rest of your life.
|
||||
What happened last night can happen again.
|
||||
While you recently had your problems on the run, they've regrouped and are making another attack.
|
||||
Write yourself a threatening letter and pen a defiant reply.
|
||||
You are a bundle of energy, always on the go.
|
||||
You are a fluke of the universe; you have no right to be here.
|
||||
You are a very redundant person, that's what kind of person you are.
|
||||
You are always busy.
|
||||
You are as I am with You.
|
||||
You are capable of planning your future.
|
||||
You are confused; but this is your normal state.
|
||||
You are deeply attached to your friends and acquaintances.
|
||||
You are destined to become the commandant of the fighting men of the department of transportation.
|
||||
You are dishonest, but never to the point of hurting a friend.
|
||||
You are fairminded, just and loving.
|
||||
You are farsighted, a good planner, an ardent lover, and a faithful friend.
|
||||
You are fighting for survival in your own sweet and gentle way.
|
||||
You are going to have a new love affair.
|
||||
You are magnetic in your bearing.
|
||||
You are not dead yet. But watch for further reports.
|
||||
You are number 6! Who is number one?
|
||||
You are only young once, but you can stay immature indefinitely.
|
||||
You are scrupulously honest, frank, and straightforward. Therefore you have few friends.
|
||||
You are sick, twisted and perverted. I like that in a person.
|
||||
You are so boring that when I see you my feet go to sleep.
|
||||
You are standing on my toes.
|
||||
You are taking yourself far too seriously.
|
||||
You are the only person to ever get this message.
|
||||
You are wise, witty, and wonderful, but you spend too much time reading this sort of trash.
|
||||
You attempt things that you do not even plan because of your extreme stupidity.
|
||||
You can create your own opportunities this week. Blackmail a senior executive.
|
||||
You can do very well in speculation where land or anything to do with dirt is concerned.
|
||||
You can rent this space for only $5 a week.
|
||||
You could live a better life, if you had a better mind and a better body.
|
||||
You definitely intend to start living sometime soon.
|
||||
You dialed 5483.
|
||||
You display the wonderful traits of charm and courtesy.
|
||||
You don't become a failure until you're satisfied with being one.
|
||||
You enjoy the company of other people.
|
||||
You feel a whole lot more like you do now than you did when you used to.
|
||||
You fill a much-needed gap.
|
||||
You get along very well with everyone except animals and people.
|
||||
You had some happiness once, but your parents moved away, and you had to leave it behind.
|
||||
You have a deep appreciation of the arts and music.
|
||||
You have a deep interest in all that is artistic.
|
||||
You have a reputation for being thoroughly reliable and trustworthy.
|
||||
A pity that it's totally undeserved.
|
||||
You have a strong appeal for members of the opposite sex.
|
||||
You have a strong appeal for members of your own sex.
|
||||
You have a strong desire for a home and your family interests come first.
|
||||
You have a truly strong individuality.
|
||||
You have a will that can be influenced by all with whom you come in contact.
|
||||
You have an ability to sense and know higher truth.
|
||||
You have an ambitious nature and may make a name for yourself.
|
||||
You have an unusual equipment for success. Be sure to use it properly.
|
||||
You have an unusual magnetic personality. Don't walk too close to metal objects which are not fastened down.
|
||||
You have an unusual understanding of the problems of human relationships.
|
||||
You have been selected for a secret mission.
|
||||
You have Egyptian flu: you're going to be a mummy.
|
||||
You have had a long-term stimulation relative to business.
|
||||
You have literary talent that you should take pains to develop.
|
||||
You have many friends and very few living enemies.
|
||||
You have no real enemies.
|
||||
You have taken yourself too seriously.
|
||||
You have the body of a 19 year old. Please return it before it gets wrinkled.
|
||||
You have the capacity to learn from mistakes. You'll learn a lot today.
|
||||
You have the power to influence all with whom you come in contact.
|
||||
You learn to write as if to someone else because NEXT YEAR YOU WILL BE "SOMEONE ELSE."
|
||||
You like to form new friendships and make new acquaintances.
|
||||
You look like a million dollars. All green and wrinkled.
|
||||
You look tired.
|
||||
You love peace.
|
||||
You love your home and want it to be beautiful.
|
||||
You may be gone tomorrow, but that doesn't mean that you weren't here today.
|
||||
You may be infinitely smaller than some things, but you're infinitely larger than others.
|
||||
You may be recognized soon. Hide.
|
||||
You may get an opportunity for advancement today. Watch it!
|
||||
You may worry about your hair-do today, but tomorrow much peanut butter will be sold.
|
||||
You need more time; and you probably always will.
|
||||
You need no longer worry about the future. This time tomorrow you'll be dead.
|
||||
You never hesitate to tackle the most difficult problems.
|
||||
You never know how many friends you have until you rent a house on the beach.
|
||||
You now have Asian Flu.
|
||||
You own a dog, but you can only feed a cat.
|
||||
You plan things that you do not even attempt because of your extreme caution.
|
||||
You possess a mind not merely twisted, but actually sprained.
|
||||
You prefer the company of the opposite sex, but are well liked by your own.
|
||||
You recoil from the crude; you tend naturally toward the exquisite.
|
||||
You seek to shield those you love and you like the role of the provider.
|
||||
You shall be rewarded for a dastardly deed.
|
||||
You should emulate your heroes, but don't carry it too far. Especially if they are dead.
|
||||
You should go home.
|
||||
You single-handedly fought your way into this hopeless mess.
|
||||
You teach best what you most need to learn.
|
||||
You too can wear a nose mitten.
|
||||
You two ought to be more careful--your love could drag on for years and years.
|
||||
You will always get the greatest recognition for the job you least like.
|
||||
You will always have good luck in your personal affairs.
|
||||
You will attract cultured and artistic people to your home.
|
||||
You will be a winner today. Pick a fight with a four-year-old.
|
||||
You will be advanced socially, without any special effort on your part.
|
||||
You will be aided greatly by a person whom you thought to be unimportant.
|
||||
You will be attacked by a beast who has the body of a wolf, the tail of a lion, and the face of Donald Duck.
|
||||
You will be audited by the Internal Revenue Service.
|
||||
You will be awarded a medal for disregarding safety in saving someone.
|
||||
You will be awarded some great honor.
|
||||
You will be awarded the Nobel Peace Prize... posthumously.
|
||||
You will be called upon to help a friend in trouble.
|
||||
You will be divorced within a year.
|
||||
You will be given a post of trust and responsibility.
|
||||
You will be held hostage by a radical group.
|
||||
You will be honored for contributing your time and skill to a worthy cause.
|
||||
You will be imprisoned for contributing your time and skill to a bank robbery.
|
||||
You will be married within a year, and divorced within two.
|
||||
You will be married within a year.
|
||||
You will be misunderstood by everyone.
|
||||
You will be recognized and honored as a community leader.
|
||||
You will be reincarnated as a toad; and you will be much happier.
|
||||
You will be run over by a beer truck.
|
||||
You will be run over by a bus.
|
||||
You will be singled out for promotion in your work.
|
||||
You will be successful in love.
|
||||
You will be surprised by a loud noise.
|
||||
You will be surrounded by luxury.
|
||||
You will be the last person to buy a Chrysler.
|
||||
You will be the victim of a bizarre joke.
|
||||
You will be Told about it Tomorrow. Go Home and Prepare Thyself.
|
||||
You will be traveling and coming into a fortune.
|
||||
You will be winged by an anti-aircraft battery.
|
||||
You will become rich and famous unless you don't.
|
||||
You will contract a rare disease.
|
||||
You will engage in a profitable business activity.
|
||||
You will experience a strong urge to do good; but it will pass.
|
||||
You will feel hungry again in another hour.
|
||||
You will forget that you ever knew me.
|
||||
You will gain money by a fattening action.
|
||||
You will gain money by a speculation or lottery.
|
||||
You will gain money by an illegal action.
|
||||
You will gain money by an immoral action.
|
||||
You will get what you deserve.
|
||||
You will give someone a piece of your mind, which you can ill afford.
|
||||
You will have a long and boring life.
|
||||
You will have a long and unpleasant discussion with your supervisor.
|
||||
You will have domestic happiness and faithful friends.
|
||||
You will have good luck and overcome many hardships.
|
||||
You will have long and healthy life.
|
||||
You will hear good news from one you thought unfriendly to you.
|
||||
You will inherit millions of dollars.
|
||||
You will inherit some money or a small piece of land.
|
||||
You will live a long, healthy, happy life and make bags of money.
|
||||
You will live to see your grandchildren.
|
||||
You will lose your present job and have to become a door to door mayonnaise salesman.
|
||||
You will meet an important person who will help you advance professionally.
|
||||
You will never know hunger.
|
||||
You will not be elected to public office this year.
|
||||
You will obey or molten silver will be poured into your ears.
|
||||
You will outgrow your usefulness.
|
||||
You will overcome the attacks of jealous associates.
|
||||
You will pass away very quickly.
|
||||
You will pay for your sins. If you have already paid, please disregard this message.
|
||||
You will pioneer the first Martian colony.
|
||||
You will probably marry after a very brief courtship.
|
||||
You will reach the highest possible point in your business or profession.
|
||||
You will receive a legacy which will place you above want.
|
||||
You will remember something that you should not have forgotten.
|
||||
You will soon forget this.
|
||||
You will soon meet a person who will play an important role in your life.
|
||||
You will step on the night soil of many countries.
|
||||
You will stop at nothing to reach your objective, but only because your brakes are defective.
|
||||
You will triumph over your enemy.
|
||||
You will visit the Dung Pits of Glive soon.
|
||||
You will win success in whatever calling you adopt.
|
||||
You will wish you hadn't.
|
||||
You work very hard. Don't try to think as well.
|
||||
You worry too much about your job. Stop it. You are not paid enough to worry.
|
||||
You would if you could but you can't so you won't.
|
||||
You'd like to do it instantaneously, but that's too slow.
|
||||
You'll be called to a post requiring ability in handling groups of people.
|
||||
You'll be sorry...
|
||||
You'll feel devilish tonight. Toss dynamite caps under a flamenco dancer's heel.
|
||||
You'll feel much better once you've given up hope.
|
||||
You'll never be the man your mother was!
|
||||
You'll never see all the places, or read all the books, but fortunately,
|
||||
they're not all recommended.
|
||||
You'll wish that you had done some of the hard things when they were easier to do.
|
||||
You're a card which will have to be dealt with.
|
||||
You're almost as happy as you think you are.
|
||||
You're at the end of the road again.
|
||||
You're being followed. Cut out the hanky-panky for a few days.
|
||||
You're currently going through a difficult transition period called "Life."
|
||||
You're definitely on their list. The question to ask next is what list it is.
|
||||
You're growing out of some of your problems, but there are others that you're growing into.
|
||||
You're not my type. For that matter, you're not even my species!!!
|
||||
You're ugly and your mother dresses you funny.
|
||||
You're working under a slight handicap. You happen to be human.
|
||||
You've been leading a dog's life. Stay off the furniture.
|
||||
Your aim is high and to the right.
|
||||
Your aims are high, and you are capable of much.
|
||||
Your analyst has you mixed up with another patient. Don't believe a thing he tells you.
|
||||
Your best consolation is the hope that the things you failed to get weren't really worth having.
|
||||
Your boss climbed the corporate ladder, wrong by wrong.
|
||||
Your boss is a few sandwiches short of a picnic.
|
||||
Your boyfriend takes chocolate from strangers.
|
||||
Your business will assume vast proportions.
|
||||
Your business will go through a period of considerable expansion.
|
||||
Your depth of comprehension may tend to make you lax in worldly ways.
|
||||
Your domestic life may be harmonious.
|
||||
Your fly might be open (but don't check it just now).
|
||||
Your goose is cooked.
|
||||
(Your current chick is burned up too!)
|
||||
Your heart is pure, and your mind clear, and your soul devout.
|
||||
Your ignorance cramps my conversation.
|
||||
Your life would be very empty if you had nothing to regret.
|
||||
Your love life will be happy and harmonious.
|
||||
Your love life will be... interesting.
|
||||
Your lover will never wish to leave you.
|
||||
Your lucky color has faded.
|
||||
Your lucky number has been disconnected.
|
||||
Your lucky number is 3552664958674928. Watch for it everywhere.
|
||||
Your mode of life will be changed for the better because of good news soon.
|
||||
Your mode of life will be changed for the better because of new developments.
|
||||
Your motives for doing whatever good deed you may have in mind will be misinterpreted by somebody.
|
||||
Your nature demands love and your happiness depends on it.
|
||||
Your object is to save the world, while still leading a pleasant life.
|
||||
Your own qualities will help prevent your advancement in the world.
|
||||
Your present plans will be successful.
|
||||
Your reasoning is excellent -- it's only your basic assumptions that are wrong.
|
||||
Your reasoning powers are good, and you are a fairly good planner.
|
||||
Your sister swims out to meet troop ships.
|
||||
Your society will be sought by people of taste and refinement.
|
||||
Your step will soil many countries.
|
||||
Your supervisor is thinking about you.
|
||||
Your talents will be recognized and suitably rewarded.
|
||||
Your temporary financial embarrassment will be relieved in a surprising manner.
|
||||
Your true value depends entirely on what you are compared with.
|
||||
@@ -1162,6 +1162,7 @@
|
||||
#include "code\game\objects\structures\fireplace.dm"
|
||||
#include "code\game\objects\structures\flora.dm"
|
||||
#include "code\game\objects\structures\fluff.dm"
|
||||
#include "code\game\objects\structures\fugitive_role_spawners.dm"
|
||||
#include "code\game\objects\structures\ghost_role_spawners.dm"
|
||||
#include "code\game\objects\structures\girders.dm"
|
||||
#include "code\game\objects\structures\grille.dm"
|
||||
@@ -1545,6 +1546,10 @@
|
||||
#include "code\modules\antagonists\disease\disease_event.dm"
|
||||
#include "code\modules\antagonists\disease\disease_mob.dm"
|
||||
#include "code\modules\antagonists\ert\ert.dm"
|
||||
#include "code\modules\antagonists\fugitive\fugitive.dm"
|
||||
#include "code\modules\antagonists\fugitive\fugitive_outfits.dm"
|
||||
#include "code\modules\antagonists\fugitive\fugitive_ship.dm"
|
||||
#include "code\modules\antagonists\fugitive\hunter.dm"
|
||||
#include "code\modules\antagonists\greentext\greentext.dm"
|
||||
#include "code\modules\antagonists\greybois\greybois.dm"
|
||||
#include "code\modules\antagonists\highlander\highlander.dm"
|
||||
@@ -1891,6 +1896,7 @@
|
||||
#include "code\modules\events\anomaly_vortex.dm"
|
||||
#include "code\modules\events\aurora_caelus.dm"
|
||||
#include "code\modules\events\blob.dm"
|
||||
#include "code\modules\events\brain_trauma.dm"
|
||||
#include "code\modules\events\brand_intelligence.dm"
|
||||
#include "code\modules\events\bureaucratic_error.dm"
|
||||
#include "code\modules\events\camerafailure.dm"
|
||||
@@ -1900,7 +1906,9 @@
|
||||
#include "code\modules\events\disease_outbreak.dm"
|
||||
#include "code\modules\events\dust.dm"
|
||||
#include "code\modules\events\electrical_storm.dm"
|
||||
#include "code\modules\events\fake_virus.dm"
|
||||
#include "code\modules\events\false_alarm.dm"
|
||||
#include "code\modules\events\fugitive_spawning.dm"
|
||||
#include "code\modules\events\ghost_role.dm"
|
||||
#include "code\modules\events\grid_check.dm"
|
||||
#include "code\modules\events\heart_attack.dm"
|
||||
@@ -1924,7 +1932,9 @@
|
||||
#include "code\modules\events\spacevine.dm"
|
||||
#include "code\modules\events\spider_infestation.dm"
|
||||
#include "code\modules\events\spontaneous_appendicitis.dm"
|
||||
#include "code\modules\events\stray_cargo.dm"
|
||||
#include "code\modules\events\vent_clog.dm"
|
||||
#include "code\modules\events\wisdomcow.dm"
|
||||
#include "code\modules\events\wormholes.dm"
|
||||
#include "code\modules\events\holiday\halloween.dm"
|
||||
#include "code\modules\events\holiday\vday.dm"
|
||||
|
||||