Merge branch 'Citadel-Station-13:master' into master
This commit is contained in:
@@ -875,7 +875,8 @@
|
||||
/area/service/cafeteria)
|
||||
"cj" = (
|
||||
/obj/effect/decal/cleanable/blood/old,
|
||||
/obj/item/clothing/suit/space/syndicate/orange,
|
||||
/obj/item/clothing/suit/space/syndicate/green/dark,
|
||||
/obj/item/clothing/head/helmet/space/syndicate/green/dark,
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/ruin/space/has_grav/skelter/sec)
|
||||
"ck" = (
|
||||
@@ -1366,6 +1367,9 @@
|
||||
dir = 1;
|
||||
icon_state = "trimline_fill"
|
||||
},
|
||||
/mob/living/simple_animal/hostile/syndicate/melee/sword/space{
|
||||
name = "Impostrous Commando"
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/ruin/space/has_grav/skelter/nav)
|
||||
"ds" = (
|
||||
@@ -1895,6 +1899,7 @@
|
||||
/obj/structure/cable/yellow{
|
||||
icon_state = "1-2"
|
||||
},
|
||||
/obj/item/clothing/head/helmet/space/syndicate/blue,
|
||||
/turf/open/floor/plating,
|
||||
/area/ruin/space/has_grav/skelter/engine/powerstorage)
|
||||
"eC" = (
|
||||
@@ -2483,6 +2488,7 @@
|
||||
/obj/structure/cable/yellow{
|
||||
icon_state = "1-2"
|
||||
},
|
||||
/obj/item/clothing/head/helmet/space/syndicate,
|
||||
/turf/open/floor/plating,
|
||||
/area/ruin/space/has_grav/skelter/engine/powerstorage)
|
||||
"fR" = (
|
||||
@@ -2581,6 +2587,7 @@
|
||||
/obj/item/clothing/suit/space/syndicate/orange{
|
||||
desc = "Wait, don't these normally come with a helmet?"
|
||||
},
|
||||
/obj/item/clothing/head/helmet/space/syndicate/orange,
|
||||
/turf/open/floor/plating,
|
||||
/area/ruin/space/has_grav/skelter/forehall)
|
||||
"gg" = (
|
||||
@@ -2726,6 +2733,7 @@
|
||||
dir = 1;
|
||||
pixel_y = -24
|
||||
},
|
||||
/obj/item/clothing/head/helmet/space/syndicate/green,
|
||||
/turf/open/floor/carpet,
|
||||
/area/ruin/space/has_grav/skelter/admin)
|
||||
"gx" = (
|
||||
@@ -2823,6 +2831,10 @@
|
||||
/area/ruin/space/has_grav/skelter/engine/lower)
|
||||
"gH" = (
|
||||
/obj/structure/rack,
|
||||
/obj/item/dnainjector/tonguespike{
|
||||
desc = "It's a little suspicious.";
|
||||
name = "suspicious serum"
|
||||
},
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/ruin/space/has_grav/skelter/sec)
|
||||
"gI" = (
|
||||
@@ -2907,18 +2919,18 @@
|
||||
/turf/open/floor/mineral/titanium/white,
|
||||
/area/ruin/space/has_grav/skelter/shields)
|
||||
"gT" = (
|
||||
/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
|
||||
dir = 8;
|
||||
icon_state = "scrub_map_on-2"
|
||||
},
|
||||
/obj/structure/cable/yellow{
|
||||
icon_state = "0-8"
|
||||
},
|
||||
/obj/machinery/power/apc{
|
||||
cell_type = null;
|
||||
dir = 1;
|
||||
name = "Shield Room APC";
|
||||
pixel_y = 23
|
||||
},
|
||||
/obj/machinery/atmospherics/components/unary/vent_scrubber{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/mineral/titanium/white,
|
||||
/area/ruin/space/has_grav/skelter/shields)
|
||||
"gU" = (
|
||||
@@ -3136,7 +3148,9 @@
|
||||
/obj/structure/cable/yellow{
|
||||
icon_state = "1-8"
|
||||
},
|
||||
/turf/open/floor/mineral/titanium/white,
|
||||
/turf/open/floor/plating/airless{
|
||||
icon_state = "platingdmg1"
|
||||
},
|
||||
/area/ruin/space/has_grav/skelter/shields)
|
||||
"hp" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
|
||||
@@ -3325,7 +3339,9 @@
|
||||
/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/mineral/titanium/white,
|
||||
/turf/open/floor/plating/airless{
|
||||
icon_state = "platingdmg2"
|
||||
},
|
||||
/area/ruin/space/has_grav/skelter/shields)
|
||||
"hO" = (
|
||||
/obj/machinery/shieldgen,
|
||||
@@ -3523,18 +3539,20 @@
|
||||
/turf/open/floor/circuit,
|
||||
/area/ruin/space/has_grav/skelter/shields)
|
||||
"il" = (
|
||||
/turf/open/floor/mineral/titanium/white,
|
||||
/obj/structure/lattice,
|
||||
/turf/open/space/basic,
|
||||
/area/ruin/space/has_grav/skelter/shields)
|
||||
"im" = (
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/on{
|
||||
dir = 1
|
||||
},
|
||||
/obj/machinery/light,
|
||||
/obj/machinery/firealarm{
|
||||
dir = 4;
|
||||
pixel_x = 24
|
||||
},
|
||||
/turf/open/floor/mineral/titanium/white,
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plating/airless{
|
||||
icon_state = "platingdmg3"
|
||||
},
|
||||
/area/ruin/space/has_grav/skelter/shields)
|
||||
"in" = (
|
||||
/turf/open/floor/plasteel{
|
||||
@@ -3722,10 +3740,6 @@
|
||||
/obj/effect/turf_decal/tile/blue{
|
||||
dir = 1
|
||||
},
|
||||
/obj/item/uplink/old{
|
||||
pixel_x = -4;
|
||||
pixel_y = 8
|
||||
},
|
||||
/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
|
||||
dir = 4;
|
||||
icon_state = "scrub_map_on-2"
|
||||
@@ -3839,7 +3853,10 @@
|
||||
/area/ruin/space/has_grav/skelter/comms)
|
||||
"iP" = (
|
||||
/obj/structure/rack,
|
||||
/obj/item/gun/ballistic/automatic/pistol,
|
||||
/obj/item/book/granter/martial/cqc{
|
||||
name = "dusty manual";
|
||||
used = 1
|
||||
},
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/ruin/space/has_grav/skelter/sec)
|
||||
"iQ" = (
|
||||
@@ -3874,20 +3891,6 @@
|
||||
},
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/ruin/space/has_grav/skelter/storage)
|
||||
"iU" = (
|
||||
/obj/effect/turf_decal/tile/blue,
|
||||
/obj/effect/turf_decal/tile/blue{
|
||||
dir = 4
|
||||
},
|
||||
/obj/effect/turf_decal/tile/blue{
|
||||
dir = 8
|
||||
},
|
||||
/obj/effect/turf_decal/tile/blue{
|
||||
dir = 1
|
||||
},
|
||||
/obj/machinery/telecomms/relay/preset/auto,
|
||||
/turf/open/floor/plasteel/showroomfloor,
|
||||
/area/ruin/space/has_grav/skelter/comms)
|
||||
"iV" = (
|
||||
/obj/structure/chair/comfy/teal,
|
||||
/obj/effect/turf_decal/tile/blue,
|
||||
@@ -3917,6 +3920,7 @@
|
||||
/obj/item/clothing/suit/space/syndicate/black{
|
||||
desc = "Wait, don't these normally come with a helmet?"
|
||||
},
|
||||
/obj/item/clothing/head/helmet/space/syndicate/black,
|
||||
/turf/open/floor/plasteel/showroomfloor,
|
||||
/area/ruin/space/has_grav/skelter/comms)
|
||||
"iX" = (
|
||||
@@ -4078,7 +4082,9 @@
|
||||
/obj/effect/turf_decal/tile/blue{
|
||||
dir = 1
|
||||
},
|
||||
/obj/machinery/telecomms/allinone,
|
||||
/mob/living/simple_animal/hostile/syndicate/melee/space{
|
||||
name = "Impostrous Commando"
|
||||
},
|
||||
/turf/open/floor/plasteel/showroomfloor,
|
||||
/area/ruin/space/has_grav/skelter/comms)
|
||||
"jo" = (
|
||||
@@ -4146,12 +4152,6 @@
|
||||
/obj/item/gun/ballistic/automatic/pistol/no_mag,
|
||||
/turf/open/floor/plasteel/showroomfloor,
|
||||
/area/ruin/space/has_grav/skelter/comms)
|
||||
"jw" = (
|
||||
/turf/open/space/basic,
|
||||
/area/space/nearstation)
|
||||
"jx" = (
|
||||
/turf/open/space/basic,
|
||||
/area/template_noop)
|
||||
"jy" = (
|
||||
/obj/effect/turf_decal/tile/blue,
|
||||
/obj/effect/turf_decal/tile/blue{
|
||||
@@ -4166,6 +4166,66 @@
|
||||
/obj/item/ammo_casing/c10mm,
|
||||
/turf/open/floor/plasteel/showroomfloor,
|
||||
/area/ruin/space/has_grav/skelter/comms)
|
||||
"sg" = (
|
||||
/obj/effect/turf_decal/weather,
|
||||
/turf/open/floor/plating/airless,
|
||||
/area/ruin/space/has_grav/skelter/shields)
|
||||
"vv" = (
|
||||
/mob/living/simple_animal/hostile/syndicate/melee/space{
|
||||
name = "Impostrous Commando"
|
||||
},
|
||||
/turf/open/floor/plasteel/showroomfloor,
|
||||
/area/ruin/space/has_grav/skelter/engine/powerstorage)
|
||||
"vz" = (
|
||||
/obj/structure/fluff/broken_flooring{
|
||||
icon_state = "singular"
|
||||
},
|
||||
/turf/open/floor/plating/airless{
|
||||
icon_state = "platingdmg3"
|
||||
},
|
||||
/area/ruin/space/has_grav/skelter/shields)
|
||||
"AJ" = (
|
||||
/turf/open/floor/plating/asteroid/airless,
|
||||
/area/ruin/space/has_grav/skelter/shields)
|
||||
"AR" = (
|
||||
/mob/living/simple_animal/hostile/syndicate/ranged/shotgun/space{
|
||||
name = "Impostrous Commando"
|
||||
},
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/ruin/space/has_grav/skelter/sec)
|
||||
"JR" = (
|
||||
/obj/effect/turf_decal/weather,
|
||||
/turf/open/floor/plating/airless{
|
||||
icon_state = "platingdmg2"
|
||||
},
|
||||
/area/ruin/space/has_grav/skelter/shields)
|
||||
"Li" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
|
||||
dir = 4
|
||||
},
|
||||
/obj/structure/lattice,
|
||||
/turf/open/space/basic,
|
||||
/area/ruin/space/has_grav/skelter/shields)
|
||||
"OA" = (
|
||||
/obj/structure/fluff/broken_flooring{
|
||||
icon_state = "singular"
|
||||
},
|
||||
/turf/template_noop,
|
||||
/area/template_noop)
|
||||
"WM" = (
|
||||
/obj/effect/turf_decal/weather,
|
||||
/turf/open/floor/plating/airless,
|
||||
/area/ruin/unpowered/no_grav)
|
||||
"Zs" = (
|
||||
/obj/item/shard{
|
||||
icon_state = "medium"
|
||||
},
|
||||
/obj/structure/fluff/broken_flooring{
|
||||
dir = 8;
|
||||
icon_state = "pile"
|
||||
},
|
||||
/turf/template_noop,
|
||||
/area/template_noop)
|
||||
|
||||
(1,1,1) = {"
|
||||
ah
|
||||
@@ -4483,7 +4543,7 @@ cF
|
||||
cF
|
||||
ex
|
||||
eW
|
||||
cF
|
||||
AR
|
||||
fN
|
||||
gj
|
||||
hJ
|
||||
@@ -4525,7 +4585,7 @@ iI
|
||||
iQ
|
||||
iY
|
||||
ji
|
||||
jx
|
||||
ah
|
||||
"}
|
||||
(13,1,1) = {"
|
||||
ah
|
||||
@@ -4549,7 +4609,7 @@ gj
|
||||
iP
|
||||
gl
|
||||
hx
|
||||
hx
|
||||
vv
|
||||
is
|
||||
hx
|
||||
eA
|
||||
@@ -4705,7 +4765,7 @@ fV
|
||||
hX
|
||||
jb
|
||||
jj
|
||||
jw
|
||||
ah
|
||||
"}
|
||||
(19,1,1) = {"
|
||||
ah
|
||||
@@ -4885,7 +4945,7 @@ gO
|
||||
iT
|
||||
jf
|
||||
jk
|
||||
jw
|
||||
ah
|
||||
"}
|
||||
(25,1,1) = {"
|
||||
ay
|
||||
@@ -4942,7 +5002,7 @@ hH
|
||||
ih
|
||||
iG
|
||||
iN
|
||||
iU
|
||||
iO
|
||||
ii
|
||||
jl
|
||||
ah
|
||||
@@ -5091,10 +5151,10 @@ hn
|
||||
hM
|
||||
ik
|
||||
iH
|
||||
gA
|
||||
bx
|
||||
ae
|
||||
ah
|
||||
gz
|
||||
bL
|
||||
bL
|
||||
ak
|
||||
ah
|
||||
"}
|
||||
(32,1,1) = {"
|
||||
@@ -5118,13 +5178,13 @@ ga
|
||||
gx
|
||||
gR
|
||||
ho
|
||||
hM
|
||||
Li
|
||||
vz
|
||||
il
|
||||
il
|
||||
gA
|
||||
ae
|
||||
ah
|
||||
ah
|
||||
sg
|
||||
bL
|
||||
ak
|
||||
ak
|
||||
ah
|
||||
"}
|
||||
(33,1,1) = {"
|
||||
@@ -5150,12 +5210,12 @@ gS
|
||||
hp
|
||||
hN
|
||||
im
|
||||
gA
|
||||
gU
|
||||
ah
|
||||
ah
|
||||
ah
|
||||
ah
|
||||
sg
|
||||
JR
|
||||
ac
|
||||
ak
|
||||
ak
|
||||
bq
|
||||
"}
|
||||
(34,1,1) = {"
|
||||
ah
|
||||
@@ -5179,13 +5239,13 @@ gz
|
||||
gT
|
||||
hq
|
||||
hO
|
||||
gA
|
||||
gU
|
||||
ah
|
||||
ah
|
||||
ah
|
||||
ah
|
||||
ah
|
||||
gz
|
||||
sg
|
||||
WM
|
||||
ac
|
||||
ak
|
||||
ak
|
||||
cl
|
||||
"}
|
||||
(35,1,1) = {"
|
||||
aS
|
||||
@@ -5207,15 +5267,15 @@ dV
|
||||
gd
|
||||
gA
|
||||
gU
|
||||
gU
|
||||
gU
|
||||
gU
|
||||
ah
|
||||
ah
|
||||
ah
|
||||
ah
|
||||
ah
|
||||
ah
|
||||
gz
|
||||
AJ
|
||||
gz
|
||||
ac
|
||||
ac
|
||||
ac
|
||||
ac
|
||||
ak
|
||||
aZ
|
||||
"}
|
||||
(36,1,1) = {"
|
||||
ah
|
||||
@@ -5237,15 +5297,15 @@ fI
|
||||
ge
|
||||
gB
|
||||
gV
|
||||
jw
|
||||
ah
|
||||
ah
|
||||
ah
|
||||
ah
|
||||
ah
|
||||
ah
|
||||
ah
|
||||
ah
|
||||
aZ
|
||||
ac
|
||||
ak
|
||||
ak
|
||||
ac
|
||||
ac
|
||||
ac
|
||||
ac
|
||||
aZ
|
||||
"}
|
||||
(37,1,1) = {"
|
||||
ah
|
||||
@@ -5267,15 +5327,15 @@ cR
|
||||
gf
|
||||
ct
|
||||
cR
|
||||
ah
|
||||
ah
|
||||
ah
|
||||
ah
|
||||
ah
|
||||
ah
|
||||
ah
|
||||
ah
|
||||
ah
|
||||
aZ
|
||||
ak
|
||||
ak
|
||||
ak
|
||||
ak
|
||||
ac
|
||||
ac
|
||||
ac
|
||||
Zs
|
||||
"}
|
||||
(38,1,1) = {"
|
||||
ah
|
||||
@@ -5296,16 +5356,16 @@ bx
|
||||
dV
|
||||
ct
|
||||
ct
|
||||
ah
|
||||
ah
|
||||
ah
|
||||
ah
|
||||
ah
|
||||
ah
|
||||
ah
|
||||
ah
|
||||
ah
|
||||
ah
|
||||
aZ
|
||||
aZ
|
||||
ac
|
||||
ak
|
||||
ak
|
||||
ak
|
||||
ak
|
||||
ak
|
||||
ac
|
||||
aZ
|
||||
"}
|
||||
(39,1,1) = {"
|
||||
ah
|
||||
@@ -5326,16 +5386,16 @@ cu
|
||||
cb
|
||||
ae
|
||||
ah
|
||||
ah
|
||||
ah
|
||||
ah
|
||||
ah
|
||||
ah
|
||||
ah
|
||||
ah
|
||||
ah
|
||||
ah
|
||||
ah
|
||||
OA
|
||||
cl
|
||||
do
|
||||
ac
|
||||
ak
|
||||
ak
|
||||
ak
|
||||
ac
|
||||
aZ
|
||||
aS
|
||||
"}
|
||||
(40,1,1) = {"
|
||||
ah
|
||||
@@ -5356,15 +5416,15 @@ fr
|
||||
cc
|
||||
ah
|
||||
ah
|
||||
do
|
||||
aS
|
||||
bq
|
||||
ah
|
||||
aZ
|
||||
aZ
|
||||
ah
|
||||
ah
|
||||
ah
|
||||
ah
|
||||
ah
|
||||
ah
|
||||
ah
|
||||
ah
|
||||
aZ
|
||||
aS
|
||||
ah
|
||||
"}
|
||||
(41,1,1) = {"
|
||||
@@ -5387,13 +5447,13 @@ cc
|
||||
ah
|
||||
ah
|
||||
ah
|
||||
aZ
|
||||
do
|
||||
ah
|
||||
ah
|
||||
ah
|
||||
ah
|
||||
ah
|
||||
ah
|
||||
ah
|
||||
do
|
||||
aZ
|
||||
ba
|
||||
ah
|
||||
ah
|
||||
"}
|
||||
@@ -5419,12 +5479,12 @@ ah
|
||||
ah
|
||||
ah
|
||||
ah
|
||||
bF
|
||||
ah
|
||||
ah
|
||||
ah
|
||||
ah
|
||||
ah
|
||||
ah
|
||||
aZ
|
||||
ah
|
||||
"}
|
||||
(43,1,1) = {"
|
||||
@@ -5445,15 +5505,15 @@ ce
|
||||
ce
|
||||
ce
|
||||
ah
|
||||
aZ
|
||||
cl
|
||||
ah
|
||||
ah
|
||||
ah
|
||||
aZ
|
||||
aS
|
||||
ah
|
||||
ah
|
||||
ah
|
||||
ah
|
||||
ah
|
||||
ah
|
||||
cl
|
||||
ah
|
||||
ah
|
||||
"}
|
||||
@@ -5476,7 +5536,7 @@ ah
|
||||
ah
|
||||
ah
|
||||
ah
|
||||
ah
|
||||
bq
|
||||
ah
|
||||
ah
|
||||
ah
|
||||
|
||||
@@ -3664,7 +3664,8 @@
|
||||
/area/awaymission/moonoutpost19/research)
|
||||
"hk" = (
|
||||
/obj/structure/alien/weeds,
|
||||
/obj/structure/alien/egg,
|
||||
/obj/structure/bed/nest,
|
||||
/obj/item/clothing/mask/facehugger/impregnated,
|
||||
/turf/open/floor/plating/asteroid{
|
||||
heat_capacity = 1e+006;
|
||||
initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"
|
||||
@@ -26666,7 +26667,7 @@ ac
|
||||
ad
|
||||
ad
|
||||
ad
|
||||
hk
|
||||
ag
|
||||
ag
|
||||
ad
|
||||
ad
|
||||
@@ -26925,7 +26926,7 @@ ai
|
||||
ag
|
||||
ag
|
||||
ai
|
||||
hk
|
||||
ag
|
||||
ai
|
||||
ad
|
||||
ad
|
||||
@@ -27178,10 +27179,10 @@ ac
|
||||
ac
|
||||
ad
|
||||
ad
|
||||
hk
|
||||
ag
|
||||
ai
|
||||
ai
|
||||
hk
|
||||
ag
|
||||
aM
|
||||
ai
|
||||
ag
|
||||
@@ -27437,7 +27438,7 @@ ad
|
||||
ai
|
||||
ai
|
||||
aD
|
||||
aj
|
||||
hk
|
||||
ai
|
||||
ai
|
||||
aD
|
||||
@@ -27693,7 +27694,7 @@ ac
|
||||
ad
|
||||
ai
|
||||
ai
|
||||
aj
|
||||
hk
|
||||
ai
|
||||
aT
|
||||
av
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
+5435
-3319
File diff suppressed because it is too large
Load Diff
@@ -2750,7 +2750,6 @@
|
||||
/obj/machinery/light/small{
|
||||
dir = 4
|
||||
},
|
||||
/obj/effect/landmark/start/prisoner,
|
||||
/turf/open/floor/plasteel/freezer,
|
||||
/area/security/prison)
|
||||
"agP" = (
|
||||
@@ -61341,10 +61340,6 @@
|
||||
},
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/security/courtroom)
|
||||
"tVZ" = (
|
||||
/obj/effect/landmark/start/prisoner,
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/security/prison)
|
||||
"tXn" = (
|
||||
/obj/structure/sink{
|
||||
dir = 4;
|
||||
@@ -83604,7 +83599,7 @@ aaa
|
||||
aem
|
||||
aeq
|
||||
aeE
|
||||
tVZ
|
||||
aeU
|
||||
afo
|
||||
afD
|
||||
aga
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
#define JOB_MODIFICATION_MAP_NAME "PubbyStation"
|
||||
|
||||
/datum/job/hos/New()
|
||||
..()
|
||||
MAP_JOB_CHECK
|
||||
access += ACCESS_CREMATORIUM
|
||||
minimal_access += ACCESS_CREMATORIUM
|
||||
|
||||
/datum/job/warden/New()
|
||||
..()
|
||||
MAP_JOB_CHECK
|
||||
access += ACCESS_CREMATORIUM
|
||||
minimal_access += ACCESS_CREMATORIUM
|
||||
|
||||
/datum/job/officer/New()
|
||||
..()
|
||||
MAP_JOB_CHECK
|
||||
access += ACCESS_CREMATORIUM
|
||||
minimal_access += ACCESS_CREMATORIUM
|
||||
|
||||
/datum/job/prisoner/New()
|
||||
..()
|
||||
MAP_JOB_CHECK
|
||||
total_positions = 0
|
||||
spawn_positions = 2
|
||||
@@ -145,12 +145,9 @@
|
||||
/turf/open/floor/plating,
|
||||
/area/shuttle/escape)
|
||||
"eS" = (
|
||||
/obj/effect/turf_decal/trimline/red/filled/end{
|
||||
dir = 1
|
||||
},
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/machinery/recharger,
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/turf/open/floor/mineral/plastitanium/red/brig,
|
||||
/area/shuttle/escape)
|
||||
"eY" = (
|
||||
/obj/effect/turf_decal/trimline/blue/filled/line{
|
||||
@@ -240,9 +237,6 @@
|
||||
/turf/open/floor/grass,
|
||||
/area/shuttle/escape)
|
||||
"ht" = (
|
||||
/obj/effect/turf_decal/trimline/red/filled/line{
|
||||
dir = 9
|
||||
},
|
||||
/obj/structure/chair/comfy/shuttle,
|
||||
/obj/machinery/light{
|
||||
dir = 8
|
||||
@@ -250,19 +244,7 @@
|
||||
/obj/structure/reagent_dispensers/peppertank{
|
||||
pixel_y = 28
|
||||
},
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/shuttle/escape)
|
||||
"hC" = (
|
||||
/obj/effect/turf_decal/trimline/red/filled/corner{
|
||||
dir = 1
|
||||
},
|
||||
/obj/effect/turf_decal/trimline/red/filled/line{
|
||||
dir = 4
|
||||
},
|
||||
/obj/structure/chair/comfy/shuttle{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/turf/open/floor/mineral/plastitanium/red/brig,
|
||||
/area/shuttle/escape)
|
||||
"hJ" = (
|
||||
/obj/effect/turf_decal/trimline/blue/filled/line{
|
||||
@@ -287,10 +269,10 @@
|
||||
/turf/open/floor/grass,
|
||||
/area/shuttle/escape)
|
||||
"it" = (
|
||||
/mob/living/carbon/monkey,
|
||||
/obj/structure/flora/grass/jungle/b{
|
||||
icon_state = "bushb3"
|
||||
},
|
||||
/mob/living/carbon/monkey,
|
||||
/turf/open/floor/grass,
|
||||
/area/shuttle/escape)
|
||||
"iD" = (
|
||||
@@ -333,21 +315,6 @@
|
||||
/obj/effect/turf_decal/stripes/line,
|
||||
/turf/open/floor/plating,
|
||||
/area/shuttle/escape)
|
||||
"jX" = (
|
||||
/obj/effect/turf_decal/trimline/red/filled/line{
|
||||
dir = 9
|
||||
},
|
||||
/obj/structure/chair/comfy/shuttle{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/shuttle/escape)
|
||||
"jZ" = (
|
||||
/obj/effect/turf_decal/trimline/red/filled/corner{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/shuttle/escape)
|
||||
"ke" = (
|
||||
/obj/item/shovel/spade,
|
||||
/turf/open/floor/grass,
|
||||
@@ -385,13 +352,10 @@
|
||||
},
|
||||
/area/shuttle/escape)
|
||||
"lS" = (
|
||||
/obj/effect/turf_decal/trimline/red/filled/line{
|
||||
dir = 4
|
||||
},
|
||||
/obj/structure/chair/comfy/shuttle{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/turf/open/floor/mineral/plastitanium/red/brig,
|
||||
/area/shuttle/escape)
|
||||
"lT" = (
|
||||
/obj/effect/turf_decal/trimline/blue/filled/line{
|
||||
@@ -428,9 +392,9 @@
|
||||
/turf/open/floor/plasteel/white,
|
||||
/area/shuttle/escape)
|
||||
"mq" = (
|
||||
/mob/living/carbon/monkey,
|
||||
/obj/machinery/light/floor,
|
||||
/obj/structure/flora/ausbushes/sparsegrass,
|
||||
/mob/living/carbon/monkey,
|
||||
/turf/open/floor/grass,
|
||||
/area/shuttle/escape)
|
||||
"mw" = (
|
||||
@@ -557,13 +521,10 @@
|
||||
/turf/open/floor/plasteel/white,
|
||||
/area/shuttle/escape)
|
||||
"tL" = (
|
||||
/obj/effect/turf_decal/trimline/red/filled/line{
|
||||
dir = 8
|
||||
},
|
||||
/obj/structure/chair/comfy/shuttle{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/turf/open/floor/mineral/plastitanium/red/brig,
|
||||
/area/shuttle/escape)
|
||||
"uc" = (
|
||||
/obj/effect/turf_decal/weather/dirt{
|
||||
@@ -595,15 +556,12 @@
|
||||
/turf/open/floor/grass,
|
||||
/area/shuttle/escape)
|
||||
"vt" = (
|
||||
/obj/effect/turf_decal/trimline/red/filled/line{
|
||||
dir = 10
|
||||
},
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/item/restraints/handcuffs{
|
||||
pixel_y = 7
|
||||
},
|
||||
/obj/item/storage/fancy/donut_box,
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/turf/open/floor/mineral/plastitanium/red/brig,
|
||||
/area/shuttle/escape)
|
||||
"vx" = (
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
@@ -612,13 +570,9 @@
|
||||
/turf/open/floor/plating,
|
||||
/area/shuttle/escape)
|
||||
"vP" = (
|
||||
/obj/effect/turf_decal/trimline/red/filled/line,
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/turf/open/floor/mineral/plastitanium/red/brig,
|
||||
/area/shuttle/escape)
|
||||
"vW" = (
|
||||
/obj/effect/turf_decal/trimline/red/filled/line{
|
||||
dir = 6
|
||||
},
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/item/storage/box/handcuffs{
|
||||
pixel_y = 5
|
||||
@@ -626,7 +580,7 @@
|
||||
/obj/machinery/light{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/turf/open/floor/mineral/plastitanium/red/brig,
|
||||
/area/shuttle/escape)
|
||||
"wg" = (
|
||||
/obj/effect/turf_decal/trimline/green/filled/end{
|
||||
@@ -713,7 +667,7 @@
|
||||
name = "Brig";
|
||||
req_access_txt = "63; 42"
|
||||
},
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/turf/open/floor/mineral/plastitanium/red/brig,
|
||||
/area/shuttle/escape)
|
||||
"Ai" = (
|
||||
/obj/effect/turf_decal/weather/dirt{
|
||||
@@ -926,8 +880,8 @@
|
||||
/turf/open/floor/plasteel/white,
|
||||
/area/shuttle/escape)
|
||||
"Ia" = (
|
||||
/mob/living/carbon/monkey,
|
||||
/obj/structure/flora/ausbushes/sparsegrass,
|
||||
/mob/living/carbon/monkey,
|
||||
/turf/open/floor/grass,
|
||||
/area/shuttle/escape)
|
||||
"Io" = (
|
||||
@@ -1549,7 +1503,7 @@ gx
|
||||
WE
|
||||
VU
|
||||
Yu
|
||||
jX
|
||||
tL
|
||||
tL
|
||||
vt
|
||||
Yu
|
||||
@@ -1582,8 +1536,8 @@ gx
|
||||
VU
|
||||
Yu
|
||||
ht
|
||||
jZ
|
||||
WL
|
||||
vP
|
||||
vP
|
||||
vP
|
||||
zE
|
||||
HV
|
||||
@@ -1614,7 +1568,7 @@ WE
|
||||
(7,1,1) = {"
|
||||
VI
|
||||
eS
|
||||
hC
|
||||
lS
|
||||
lS
|
||||
lS
|
||||
vW
|
||||
|
||||
@@ -32,6 +32,9 @@
|
||||
#define MEDAL_VOID_ASCENSION "Void"
|
||||
#define MEDAL_TOOLBOX_SOUL "Toolsoul"
|
||||
#define MEDAL_CHEM_TUT "Beginner Chemist"
|
||||
#define MEDAL_HOT_DAMN "Hot Damn!"
|
||||
#define MEDAL_CAYENNE_DISK "Very Important Piscis"
|
||||
#define MEDAL_TRAM_SURFER "Tram Surfer"
|
||||
|
||||
//Skill medal hub IDs
|
||||
#define MEDAL_LEGENDARY_MINER "Legendary Miner"
|
||||
@@ -106,3 +109,19 @@
|
||||
|
||||
// DB ID for amount of consumed maintenance pills
|
||||
#define MAINTENANCE_PILL_SCORE "Maintenance Pill Score"
|
||||
|
||||
// DB ID for intento score
|
||||
#define INTENTO_SCORE "Intento Score"
|
||||
|
||||
// Tourist related achievements and scores
|
||||
|
||||
//centcom grades (achievement)
|
||||
|
||||
#define MEDAL_BAD_SERVICE "Bad Service"
|
||||
#define MEDAL_OKAY_SERVICE "Okay Service"
|
||||
#define MEDAL_GOOD_SERVICE "Good Service"
|
||||
|
||||
//scores
|
||||
|
||||
#define CHEF_TOURISTS_SERVED "Tourists Served As Chef"
|
||||
#define BARTENDER_TOURISTS_SERVED "Tourists Served As Bartender"
|
||||
|
||||
@@ -59,3 +59,4 @@
|
||||
#define COLOR_SILVER "#C0C0C0"
|
||||
#define COLOR_GRAY "#808080"
|
||||
#define COLOR_HALF_TRANSPARENT_BLACK "#0000007A"
|
||||
#define COLOR_BRIGHT_BLUE "#2CB2E8"
|
||||
|
||||
@@ -28,6 +28,11 @@
|
||||
//INDEXES
|
||||
#define COOLDOWN_EMPLOYMENT_CABINET "employment cabinet"
|
||||
|
||||
//car cooldowns
|
||||
#define COOLDOWN_CAR_HONK "car_honk"
|
||||
|
||||
//clown car cooldowns
|
||||
#define COOLDOWN_CLOWNCAR_RANDOMNESS "clown_car_randomness"
|
||||
|
||||
//TIMER COOLDOWN MACROS
|
||||
|
||||
|
||||
@@ -81,7 +81,8 @@
|
||||
#define SPACE list('sound/ambience/ambispace.ogg', 'sound/ambience/ambispace2.ogg', 'sound/ambience/title2.ogg', 'sound/ambience/ambiatmos.ogg')
|
||||
|
||||
#define MAINTENANCE list('sound/ambience/ambimaint1.ogg', 'sound/ambience/ambimaint2.ogg', 'sound/ambience/ambimaint3.ogg', 'sound/ambience/ambimaint4.ogg',\
|
||||
'sound/ambience/ambimaint5.ogg', 'sound/voice/lowHiss2.ogg', 'sound/voice/lowHiss3.ogg', 'sound/voice/lowHiss4.ogg', 'sound/ambience/ambitech2.ogg' )
|
||||
'sound/ambience/ambimaint5.ogg', 'sound/voice/lowHiss2.ogg', 'sound/voice/lowHiss3.ogg', 'sound/voice/lowHiss4.ogg', 'sound/ambience/ambitech2.ogg',\
|
||||
'sound/ambience/ambimaint10.ogg' )
|
||||
|
||||
#define AWAY_MISSION list('sound/ambience/ambitech.ogg', 'sound/ambience/ambitech2.ogg', 'sound/ambience/ambiruin.ogg',\
|
||||
'sound/ambience/ambiruin2.ogg', 'sound/ambience/ambiruin3.ogg', 'sound/ambience/ambiruin4.ogg',\
|
||||
|
||||
@@ -1,9 +1,20 @@
|
||||
//Vehicle control flags
|
||||
//Vehicle control flags. control flags describe access to actions in a vehicle.
|
||||
|
||||
#define VEHICLE_CONTROL_PERMISSION 1
|
||||
#define VEHICLE_CONTROL_DRIVE 2
|
||||
#define VEHICLE_CONTROL_KIDNAPPED 4 //Can't leave vehicle voluntarily, has to resist.
|
||||
///controls the vehicles movement
|
||||
#define VEHICLE_CONTROL_DRIVE (1<<0)
|
||||
///Can't leave vehicle voluntarily, has to resist.
|
||||
#define VEHICLE_CONTROL_KIDNAPPED (1<<1)
|
||||
///melee attacks/shoves a vehicle may have
|
||||
#define VEHICLE_CONTROL_MELEE (1<<2)
|
||||
///using equipment/weapons on the vehicle
|
||||
#define VEHICLE_CONTROL_EQUIPMENT (1<<3)
|
||||
///changing around settings and the like.
|
||||
#define VEHICLE_CONTROL_SETTINGS (1<<4)
|
||||
|
||||
//car_traits flags
|
||||
///Will this car kidnap people by ramming into them?
|
||||
#define CAN_KIDNAP (1<<0)
|
||||
|
||||
//Car trait flags
|
||||
#define CAN_KIDNAP 1
|
||||
#define CLOWN_CANNON_INACTIVE 0
|
||||
#define CLOWN_CANNON_BUSY 1
|
||||
#define CLOWN_CANNON_READY 2
|
||||
|
||||
@@ -109,7 +109,7 @@
|
||||
|
||||
/datum/achievement_data/ui_data(mob/user)
|
||||
var/ret_data = list() // screw standards (qustinnus you must rename src.data ok)
|
||||
ret_data["categories"] = list("Bosses", "Misc", "Mafia", "Scores")
|
||||
ret_data["categories"] = list("Bosses", "Jobs", "Misc", "Mafia", "Scores")
|
||||
ret_data["achievements"] = list()
|
||||
ret_data["user_key"] = user.ckey
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
///Name of the achievement, If null it won't show up in the achievement browser. (Handy for inheritance trees)
|
||||
var/name
|
||||
var/desc = "You did it."
|
||||
///Found in UI_Icons/Achievements
|
||||
///Found in ui_icons/achievements
|
||||
var/icon = "default"
|
||||
var/category = "Normal"
|
||||
|
||||
@@ -78,7 +78,7 @@
|
||||
|
||||
/datum/award/achievement/on_unlock(mob/user)
|
||||
. = ..()
|
||||
to_chat(user, "<span class='greenannounce'><B>Achievement unlocked: [name]!</B></span>")
|
||||
to_chat(user, span_greenannounce("<B>Achievement unlocked: [name]!</B>"))
|
||||
|
||||
///Scores are for leaderboarded things, such as killcount of a specific boss
|
||||
/datum/award/score
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
name = "Boss Killer"
|
||||
desc = "You've come a long ways from asking how to switch hands."
|
||||
database_id = "Boss Killer"
|
||||
// icon = "firstboss"
|
||||
icon = "firstboss"
|
||||
|
||||
/datum/award/achievement/boss/blood_miner_kill
|
||||
name = "Blood-Drunk Miner Killer"
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
|
||||
/datum/award/achievement/jobs
|
||||
category = "Jobs"
|
||||
icon = "basemisc"
|
||||
|
||||
//chemistry
|
||||
|
||||
/datum/award/achievement/jobs/chemistry_tut
|
||||
name = "Perfect chemistry blossom"
|
||||
desc = "Passed the chemistry tutorial with perfect purity!"
|
||||
database_id = MEDAL_CHEM_TUT
|
||||
icon = "chem_tut"
|
||||
|
||||
//all of service! hip hip!
|
||||
|
||||
/datum/award/achievement/jobs/service_bad
|
||||
name = "Centcom Grade: Shitty Service"
|
||||
desc = "Well, you at least tried. How about trying harder?"
|
||||
database_id = MEDAL_BAD_SERVICE
|
||||
icon = "chem_tut"
|
||||
|
||||
/datum/award/achievement/jobs/service_okay
|
||||
name = "Centcom Grade: Acceptable Service"
|
||||
desc = "Well, it'll do! You and your department did just fine."
|
||||
database_id = MEDAL_OKAY_SERVICE
|
||||
icon = "chem_tut"
|
||||
|
||||
/datum/award/achievement/jobs/service_good
|
||||
name = "Centcom Grade: Exemplary Service"
|
||||
desc = "Centcom is very impressed with your department!"
|
||||
database_id = MEDAL_GOOD_SERVICE
|
||||
icon = "chem_tut"
|
||||
|
||||
//civilian achievies! while not recognized by the code, it is recognized by our hearts
|
||||
@@ -0,0 +1,14 @@
|
||||
|
||||
//chef
|
||||
|
||||
/datum/award/score/chef_tourist_score
|
||||
name = "Tourists Served as Chef Highscore"
|
||||
desc = "Your highscore on serving tourist bots as chef."
|
||||
database_id = CHEF_TOURISTS_SERVED
|
||||
|
||||
//bartender
|
||||
|
||||
/datum/award/score/bartender_tourist_score
|
||||
name = "Tourists Served as Bartender Highscore"
|
||||
desc = "Your highscore on serving tourist bots as bartender."
|
||||
database_id = BARTENDER_TOURISTS_SERVED
|
||||
@@ -154,8 +154,20 @@
|
||||
database_id = MEDAL_TOOLBOX_SOUL
|
||||
icon = "toolbox_soul"
|
||||
|
||||
/datum/award/achievement/misc/chemistry_tut
|
||||
name = "Perfect chemistry blossom"
|
||||
desc = "Passed the chemistry tutorial with perfect purity!"
|
||||
database_id = MEDAL_CHEM_TUT
|
||||
icon = "chem_tut"
|
||||
/datum/award/achievement/misc/hot_damn
|
||||
name = "Hot Damn!"
|
||||
desc = "Sometimes you need to make some noise to make a point."
|
||||
database_id = MEDAL_HOT_DAMN
|
||||
icon = "hotdamn"
|
||||
|
||||
/datum/award/achievement/misc/cayenne_disk
|
||||
name = "Very Important Piscis"
|
||||
desc = "You can rest well now."
|
||||
database_id = MEDAL_CAYENNE_DISK
|
||||
icon = "cayenne_disk"
|
||||
|
||||
/datum/award/achievement/misc/tram_surfer
|
||||
name = "Tram Surfer"
|
||||
desc = "Lights out, guerilla radio!"
|
||||
database_id = MEDAL_TRAM_SURFER
|
||||
icon = "tram_surfer"
|
||||
|
||||
@@ -9,3 +9,9 @@
|
||||
name = "Maintenance Pills Consumed"
|
||||
desc = "Wait why?"
|
||||
database_id = MAINTENANCE_PILL_SCORE
|
||||
|
||||
///How high of a score on the Intento did we get?
|
||||
/datum/award/score/intento_score
|
||||
name = "Intento Score"
|
||||
desc = "A blast from the future?"
|
||||
database_id = INTENTO_SCORE
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
minimum_pressure = HAZARD_LOW_PRESSURE + 10
|
||||
maximum_pressure = LAVALAND_EQUIPMENT_EFFECT_PRESSURE - 1
|
||||
|
||||
minimum_temp = BODYTEMP_COLD_DAMAGE_LIMIT + 1
|
||||
minimum_temp = 270
|
||||
maximum_temp = 320
|
||||
|
||||
/datum/atmosphere/icemoon
|
||||
|
||||
@@ -331,6 +331,12 @@
|
||||
name = "Space Diner"
|
||||
description = "Come, traveler of the bluespace planes. Sit, enjoy a drink and take one of the fair maidens for a night. The exit is the way you came in, via that teleporter thingy, but do remember to stay safe."
|
||||
|
||||
/datum/map_template/ruin/space/suspicious
|
||||
id = "helterskelter"
|
||||
suffix = "skelter.dmm"
|
||||
name = "Helter Skelter"
|
||||
description = "You're looking mighty suspicious. Why don't you go and take a seat over in that driver?"
|
||||
|
||||
//Space ruins for the station z
|
||||
/datum/map_template/ruin/spacenearstation
|
||||
prefix = "_maps/RandomRuins/SpaceRuinsStation/"
|
||||
|
||||
@@ -176,15 +176,6 @@
|
||||
table[y1][x1] -= 10
|
||||
else if(table[y1][x1] < 0) //If flagged, remove the flag
|
||||
table[y1][x1] += 10
|
||||
if(href_list["same_board"]) //Reset the board... kinda
|
||||
if(game_status != MINESWEEPER_GAME_PLAYING)
|
||||
mine_sound = TRUE
|
||||
game_status = MINESWEEPER_GAME_PLAYING
|
||||
if(table[y1][x1] >= 10) //If revealed, become unrevealed!
|
||||
if(mine_sound)
|
||||
playsound(loc, 'sound/arcade/minesweeper_menuselect.ogg', 50, FALSE, extrarange = -3)
|
||||
mine_sound = FALSE
|
||||
table[y1][x1] -= 10
|
||||
if(table[y1][x1] > 10 && !reset_board)
|
||||
safe_squares_revealed += 1
|
||||
var/y2 = y1
|
||||
@@ -274,10 +265,10 @@
|
||||
prizevend(user, dope_prizes)
|
||||
|
||||
if(game_status == MINESWEEPER_GAME_WON)
|
||||
web += "[(rows < 10 || columns < 10) ? "<font size='4'>You won, but your board was too small! Pick a bigger board next time!" : "<font size='6'>Congratulations, you have won!"]<br><font size='3'>Want to play again?<br><b><a href='byond://?src=[REF(src)];Easy=1'><font color='#cc66ff'>Easy (9x9 board, 10 mines)</font></a><br><a href='byond://?src=[REF(src)];Intermediate=1'><font color='#cc66ff'>Intermediate (16x16 board, 40 mines)</font></a><br><a href='byond://?src=[REF(src)];Hard=1'><font color='#cc66ff'>Hard (16x30 board, 99 mines)</font></a><br><a href='byond://?src=[REF(src)];Custom=1'><font color='#cc66ff'>Custom</font></a></b><br><a href='byond://?src=[REF(src)];same_board=1'><font color='#cc66ff'>Play on the same board</font></a><br><a href='byond://?src=[REF(src)];Main_Menu=1'><font color='#cc66ff'>Return to Main Menu</font></a></b><br>"
|
||||
web += "[(rows < 10 || columns < 10) ? "<font size='4'>You won, but your board was too small! Pick a bigger board next time!" : "<font size='6'>Congratulations, you have won!"]<br><font size='3'>Want to play again?<br><b><a href='byond://?src=[REF(src)];Easy=1'><font color='#cc66ff'>Easy (9x9 board, 10 mines)</font></a><br><a href='byond://?src=[REF(src)];Intermediate=1'><font color='#cc66ff'>Intermediate (16x16 board, 40 mines)</font></a><br><a href='byond://?src=[REF(src)];Hard=1'><font color='#cc66ff'>Hard (16x30 board, 99 mines)</font></a><br><a href='byond://?src=[REF(src)];Custom=1'><font color='#cc66ff'>Custom</font></a></b><br><a href='byond://?src=[REF(src)];Main_Menu=1'><font color='#cc66ff'>Return to Main Menu</font></a></b><br>"
|
||||
|
||||
if(game_status == MINESWEEPER_GAME_LOST)
|
||||
web += "<font size='6'>You have lost!<br><font size='3'>Try again?<br><b><a href='byond://?src=[REF(src)];Easy=1'><font color='#cc66ff'>Easy (9x9 board, 10 mines)</font></a><br><a href='byond://?src=[REF(src)];Intermediate=1'><font color='#cc66ff'>Intermediate (16x16 board, 40 mines)</font></a><br><a href='byond://?src=[REF(src)];Hard=1'><font color='#cc66ff'>Hard (16x30 board, 99 mines)</font></a><br><a href='byond://?src=[REF(src)];Custom=1'><font color='#cc66ff'>Custom</font></a></b><br><a href='byond://?src=[REF(src)];same_board=1'><font color='#cc66ff'>Play on the same board</font></a><br><a href='byond://?src=[REF(src)];Main_Menu=1'><font color='#cc66ff'>Return to Main Menu</font></a></b><br>"
|
||||
web += "<font size='6'>You have lost!<br><font size='3'>Try again?<br><b><a href='byond://?src=[REF(src)];Easy=1'><font color='#cc66ff'>Easy (9x9 board, 10 mines)</font></a><br><a href='byond://?src=[REF(src)];Intermediate=1'><font color='#cc66ff'>Intermediate (16x16 board, 40 mines)</font></a><br><a href='byond://?src=[REF(src)];Hard=1'><font color='#cc66ff'>Hard (16x30 board, 99 mines)</font></a><br><a href='byond://?src=[REF(src)];Custom=1'><font color='#cc66ff'>Custom</font></a></b><br><a href='byond://?src=[REF(src)];Main_Menu=1'><font color='#cc66ff'>Return to Main Menu</font></a></b><br>"
|
||||
|
||||
if(game_status == MINESWEEPER_GAME_PLAYING)
|
||||
web += "<a href='byond://?src=[REF(src)];Main_Menu=1'><font color='#cc66ff'>Return to Main Menu</font></a><br>"
|
||||
|
||||
@@ -238,72 +238,73 @@
|
||||
return
|
||||
return ..()
|
||||
|
||||
/obj/item/toy/plush/proc/love(obj/item/toy/plush/Kisser, mob/living/user) //~<3
|
||||
var/chance = 100 //to steal a kiss, surely there's a 100% chance no-one would reject a plush such as I?
|
||||
var/concern = 20 //perhaps something might cloud true love with doubt
|
||||
var/loyalty = 30 //why should another get between us?
|
||||
var/duty = 50 //conquering another's is what I live for
|
||||
/obj/item/toy/plush/proc/love(obj/item/toy/plush/Kisser, mob/living/user) //~<3
|
||||
var/chance = 100 //to steal a kiss, surely there's a 100% chance no-one would reject a plush such as I?
|
||||
var/concern = 20 //perhaps something might cloud true love with doubt
|
||||
var/loyalty = 30 //why should another get between us?
|
||||
var/duty = 50 //conquering another's is what I live for
|
||||
|
||||
//we are not catholic
|
||||
if(young == TRUE || Kisser.young == TRUE)
|
||||
user.show_message("<span class='notice'>[src] plays tag with [Kisser].</span>", MSG_VISUAL,
|
||||
"<span class='notice'>They're happy.</span>", 0)
|
||||
user.show_message(span_notice("[src] plays tag with [Kisser]."), MSG_VISUAL,
|
||||
span_notice("They're happy."), NONE)
|
||||
Kisser.cheer_up()
|
||||
cheer_up()
|
||||
|
||||
//never again
|
||||
else if(Kisser in scorned)
|
||||
//message, visible, alternate message, neither visible nor audible
|
||||
user.show_message("<span class='notice'>[src] rejects the advances of [Kisser]!</span>", MSG_VISUAL,
|
||||
"<span class='notice'>That didn't feel like it worked.</span>", 0)
|
||||
user.show_message(span_notice("[src] rejects the advances of [Kisser]!"), MSG_VISUAL,
|
||||
span_notice("That didn't feel like it worked."), NONE)
|
||||
else if(src in Kisser.scorned)
|
||||
user.show_message("<span class='notice'>[Kisser] realises who [src] is and turns away.</span>", MSG_VISUAL,
|
||||
"<span class='notice'>That didn't feel like it worked.</span>", 0)
|
||||
user.show_message(span_notice("[Kisser] realises who [src] is and turns away."), MSG_VISUAL,
|
||||
span_notice("That didn't feel like it worked."), NONE)
|
||||
|
||||
//first comes love
|
||||
else if(Kisser.lover != src && Kisser.partner != src) //cannot be lovers or married
|
||||
if(Kisser.lover) //if the initiator has a lover
|
||||
Kisser.lover.heartbreak(Kisser) //the old lover can get over the kiss-and-run whilst the kisser has some fun
|
||||
chance -= concern //one heart already broken, what does another mean?
|
||||
if(lover) //if the recipient has a lover
|
||||
chance -= loyalty //mustn't... but those lips
|
||||
if(partner) //if the recipient has a partner
|
||||
chance -= duty //do we mate for life?
|
||||
else if(Kisser.lover != src && Kisser.partner != src) //cannot be lovers or married
|
||||
if(Kisser.lover) //if the initiator has a lover
|
||||
Kisser.lover.heartbreak(Kisser) //the old lover can get over the kiss-and-run whilst the kisser has some fun
|
||||
chance -= concern //one heart already broken, what does another mean?
|
||||
if(lover) //if the recipient has a lover
|
||||
chance -= loyalty //mustn't... but those lips
|
||||
if(partner) //if the recipient has a partner
|
||||
chance -= duty //do we mate for life?
|
||||
|
||||
if(prob(chance)) //did we bag a date?
|
||||
user.visible_message("<span class='notice'>[user] makes [Kisser] kiss [src]!</span>",
|
||||
"<span class='notice'>You make [Kisser] kiss [src]!</span>")
|
||||
if(lover) //who cares for the past, we live in the present
|
||||
if(prob(chance)) //did we bag a date?
|
||||
user.visible_message(span_notice("[user] makes [Kisser] kiss [src]!"),
|
||||
span_notice("You make [Kisser] kiss [src]!"))
|
||||
if(lover) //who cares for the past, we live in the present
|
||||
lover.heartbreak(src)
|
||||
new_lover(Kisser)
|
||||
Kisser.new_lover(src)
|
||||
else
|
||||
user.show_message("<span class='notice'>[src] rejects the advances of [Kisser], maybe next time?</span>", MSG_VISUAL,
|
||||
"<span class='notice'>That didn't feel like it worked, this time.</span>", 0)
|
||||
user.show_message(span_notice("[src] rejects the advances of [Kisser], maybe next time?"), MSG_VISUAL,
|
||||
span_notice("That didn't feel like it worked, this time."), NONE)
|
||||
|
||||
//then comes marriage
|
||||
else if(Kisser.lover == src && Kisser.partner != src) //need to be lovers (assumes loving is a two way street) but not married (also assumes similar)
|
||||
user.visible_message("<span class='notice'>[user] pronounces [Kisser] and [src] married! D'aw.</span>",
|
||||
"<span class='notice'>You pronounce [Kisser] and [src] married!</span>")
|
||||
else if(Kisser.lover == src && Kisser.partner != src) //need to be lovers (assumes loving is a two way street) but not married (also assumes similar)
|
||||
user.visible_message(span_notice("[user] pronounces [Kisser] and [src] married! D'aw."),
|
||||
span_notice("You pronounce [Kisser] and [src] married!"))
|
||||
new_partner(Kisser)
|
||||
Kisser.new_partner(src)
|
||||
|
||||
//then comes a baby in a baby's carriage, or an adoption in an adoption's orphanage
|
||||
else if(Kisser.partner == src && !plush_child) //the one advancing does not take ownership of the child and we have a one child policy in the toyshop
|
||||
user.visible_message("<span class='notice'>[user] is going to break [Kisser] and [src] by bashing them like that.</span>",
|
||||
"<span class='notice'>[Kisser] passionately embraces [src] in your hands. Look away you perv!</span>")
|
||||
else if(Kisser.partner == src && !plush_child) //the one advancing does not take ownership of the child and we have a one child policy in the toyshop
|
||||
user.visible_message(span_notice("[user] is going to break [Kisser] and [src] by bashing them like that."),
|
||||
span_notice("[Kisser] passionately embraces [src] in your hands. Look away you perv!"))
|
||||
user.client.give_award(/datum/award/achievement/misc/rule8, user)
|
||||
if(plop(Kisser))
|
||||
user.visible_message("<span class='notice'>Something drops at the feet of [user].</span>",
|
||||
"<span class='notice'>The miracle of oh god did that just come out of [src]?!</span>")
|
||||
user.visible_message(span_notice("Something drops at the feet of [user]."),
|
||||
span_notice("The miracle of oh god did that just come out of [src]?!"))
|
||||
|
||||
//then comes protection, or abstinence if we are catholic
|
||||
else if(Kisser.partner == src && plush_child)
|
||||
user.visible_message("<span class='notice'>[user] makes [Kisser] nuzzle [src]!</span>",
|
||||
"<span class='notice'>You make [Kisser] nuzzle [src]!</span>")
|
||||
user.visible_message(span_notice("[user] makes [Kisser] nuzzle [src]!"),
|
||||
span_notice("You make [Kisser] nuzzle [src]!"))
|
||||
|
||||
//then oh fuck something unexpected happened
|
||||
else
|
||||
user.show_message("<span class='warning'>[Kisser] and [src] don't know what to do with one another.</span>", 0)
|
||||
user.show_message(span_warning("[Kisser] and [src] don't know what to do with one another."), NONE)
|
||||
|
||||
/obj/item/toy/plush/proc/heartbreak(obj/item/toy/plush/Brutus)
|
||||
if(lover != Brutus)
|
||||
|
||||
@@ -79,6 +79,8 @@ GLOBAL_LIST_EMPTY(rubber_toolbox_icons)
|
||||
name = "mechanical toolbox"
|
||||
icon_state = "blue"
|
||||
item_state = "toolbox_blue"
|
||||
/// If FALSE, someone with a ensouled soulstone can sacrifice a spirit to change the sprite of this toolbox.
|
||||
var/has_soul = FALSE
|
||||
|
||||
/obj/item/storage/toolbox/mechanical/PopulateContents()
|
||||
new /obj/item/screwdriver(src)
|
||||
@@ -93,6 +95,7 @@ GLOBAL_LIST_EMPTY(rubber_toolbox_icons)
|
||||
icon_state = "toolbox_blue_old"
|
||||
has_latches = FALSE
|
||||
can_rubberify = FALSE
|
||||
has_soul = TRUE
|
||||
|
||||
/obj/item/storage/toolbox/mechanical/old/heirloom
|
||||
name = "old, robust toolbox" //this will be named "X family toolbox"
|
||||
@@ -126,7 +129,7 @@ GLOBAL_LIST_EMPTY(rubber_toolbox_icons)
|
||||
/obj/item/storage/toolbox/mechanical/old/clean/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum)
|
||||
calc_damage()
|
||||
..()
|
||||
|
||||
|
||||
/obj/item/storage/toolbox/mechanical/old/clean/PopulateContents()
|
||||
new /obj/item/screwdriver(src)
|
||||
new /obj/item/wrench(src)
|
||||
|
||||
@@ -2,8 +2,6 @@
|
||||
|
||||
GLOBAL_VAR(restart_counter)
|
||||
|
||||
GLOBAL_VAR_INIT(tgs_initialized, FALSE)
|
||||
|
||||
GLOBAL_VAR(topic_status_lastcache)
|
||||
GLOBAL_LIST(topic_status_cache)
|
||||
|
||||
@@ -76,7 +74,6 @@ GLOBAL_LIST(topic_status_cache)
|
||||
/world/proc/InitTgs()
|
||||
TgsNew(new /datum/tgs_event_handler/impl, TGS_SECURITY_TRUSTED)
|
||||
GLOB.revdata.load_tgs_info()
|
||||
GLOB.tgs_initialized = TRUE
|
||||
|
||||
/world/proc/HandleTestRun()
|
||||
//trigger things to run the whole process
|
||||
|
||||
@@ -226,16 +226,16 @@
|
||||
user.mind.AddSpell(new /obj/effect/proc_holder/spell/targeted/shed_human_form)
|
||||
if(!ishuman(user))
|
||||
return
|
||||
var/mob/living/carbon/human/H = user
|
||||
H.physiology.brute_mod *= 0.5
|
||||
H.physiology.burn_mod *= 0.5
|
||||
var/datum/antagonist/heretic/heretic = user.mind.has_antag_datum(/datum/antagonist/heretic)
|
||||
var/datum/eldritch_knowledge/flesh_grasp/ghoul1 = heretic.get_knowledge(/datum/eldritch_knowledge/flesh_grasp)
|
||||
ghoul1.ghoul_amt *= 3
|
||||
var/datum/eldritch_knowledge/flesh_ghoul/ghoul2 = heretic.get_knowledge(/datum/eldritch_knowledge/flesh_ghoul)
|
||||
ghoul2.max_amt *= 3
|
||||
var/mob/living/carbon/human/lord_of_arms = user
|
||||
lord_of_arms.physiology.brute_mod *= 0.5
|
||||
lord_of_arms.physiology.burn_mod *= 0.5
|
||||
lord_of_arms.client?.give_award(/datum/award/achievement/misc/flesh_ascension, lord_of_arms)
|
||||
var/datum/antagonist/heretic/heretic_datum = user.mind.has_antag_datum(/datum/antagonist/heretic)
|
||||
var/datum/eldritch_knowledge/flesh_grasp/grasp_ghoul = heretic_datum.get_knowledge(/datum/eldritch_knowledge/flesh_grasp)
|
||||
grasp_ghoul.ghoul_amt *= 3
|
||||
var/datum/eldritch_knowledge/flesh_ghoul/better_ghoul = heretic_datum.get_knowledge(/datum/eldritch_knowledge/flesh_ghoul)
|
||||
better_ghoul.max_amt *= 3
|
||||
|
||||
return ..()
|
||||
|
||||
/datum/eldritch_knowledge/flesh_blade_upgrade_2
|
||||
name = "Remembrance"
|
||||
|
||||
@@ -181,13 +181,13 @@
|
||||
var/mob/living/carbon/human/H = user
|
||||
H.physiology.brute_mod *= 0.5
|
||||
H.physiology.burn_mod *= 0.5
|
||||
H.client?.give_award(/datum/award/achievement/misc/rust_ascension, H)
|
||||
priority_announce("$^@&#*$^@(#&$(@&#^$&#^@# Fear the decay, for the Rustbringer, [user.real_name] has ascended! None shall escape the corrosion! $^@&#*$^@(#&$(@&#^$&#^@#","#$^@&#*$^@(#&$(@&#^$&#^@#", 'sound/announcer/classic/spanomalies.ogg')
|
||||
new /datum/rust_spread(loc)
|
||||
var/datum/antagonist/heretic/ascension = H.mind.has_antag_datum(/datum/antagonist/heretic)
|
||||
ascension.ascended = TRUE
|
||||
return ..()
|
||||
|
||||
|
||||
/datum/eldritch_knowledge/final/rust_final/on_life(mob/user)
|
||||
. = ..()
|
||||
if(!finished)
|
||||
|
||||
@@ -183,14 +183,14 @@
|
||||
var/datum/weather/void_storm/storm
|
||||
|
||||
/datum/eldritch_knowledge/final/void_final/on_finished_recipe(mob/living/user, list/atoms, loc)
|
||||
var/mob/living/carbon/human/H = user
|
||||
user.mind.AddSpell(new /obj/effect/proc_holder/spell/aoe_turf/repulse/eldritch)
|
||||
H.physiology.brute_mod *= 0.5
|
||||
H.physiology.burn_mod *= 0.5
|
||||
ADD_TRAIT(H, TRAIT_RESISTLOWPRESSURE, MAGIC_TRAIT)
|
||||
priority_announce("$^@&#*$^@(#&$(@&#^$&#^@# The nobleman of void [H.real_name] has arrived, step along the Waltz that ends worlds! $^@&#*$^@(#&$(@&#^$&#^@#","#$^@&#*$^@(#&$(@&#^$&#^@#", 'sound/announcer/classic/spanomalies.ogg')
|
||||
|
||||
sound_loop = new(list(user),TRUE,TRUE)
|
||||
var/mob/living/carbon/human/waltzing = user
|
||||
waltzing.mind.AddSpell(new /obj/effect/proc_holder/spell/aoe_turf/repulse/eldritch)
|
||||
waltzing.physiology.brute_mod *= 0.5
|
||||
waltzing.physiology.burn_mod *= 0.5
|
||||
ADD_TRAIT(waltzing, TRAIT_RESISTLOWPRESSURE, MAGIC_TRAIT)
|
||||
waltzing.client?.give_award(/datum/award/achievement/misc/void_ascension, waltzing)
|
||||
priority_announce("$^@&#*$^@(#&$(@&#^$&#^@# The nobleman of void [waltzing.real_name] has arrived, step along the Waltz that ends worlds! $^@&#*$^@(#&$(@&#^$&#^@#","#$^@&#*$^@(#&$(@&#^$&#^@#", 'sound/announcer/classic/spanomalies.ogg')
|
||||
sound_loop = new(user, TRUE, TRUE)
|
||||
return ..()
|
||||
|
||||
/datum/eldritch_knowledge/final/void_final/on_death()
|
||||
|
||||
@@ -50,6 +50,14 @@
|
||||
A.death()
|
||||
return ..()
|
||||
|
||||
/obj/item/soulstone/proc/hot_potato(mob/living/user)
|
||||
to_chat(user, span_userdanger("Holy magics residing in \the [src] burn your hand!"))
|
||||
var/obj/item/bodypart/affecting = user.get_bodypart("[(user.active_hand_index % 2 == 0) ? "r" : "l" ]_arm")
|
||||
affecting.receive_damage( 0, 10 ) // 10 burn damage
|
||||
user.emote("scream")
|
||||
user.update_damage_overlays()
|
||||
user.dropItemToGround(src)
|
||||
|
||||
//////////////////////////////Capturing////////////////////////////////////////////////////////
|
||||
|
||||
/obj/item/soulstone/attack(mob/living/carbon/human/M, mob/living/user)
|
||||
@@ -94,6 +102,35 @@
|
||||
to_chat(A, "<b>You have been released from your prison, but you are still bound to the cult's will. Help them succeed in their goals at all costs.</b>")
|
||||
was_used()
|
||||
|
||||
/obj/item/soulstone/pre_attack(atom/A, mob/living/user, params)
|
||||
var/mob/living/simple_animal/hostile/construct/shade/occupant = (locate() in src)
|
||||
var/obj/item/storage/toolbox/mechanical/target_toolbox = A
|
||||
if(!occupant || !istype(target_toolbox) || target_toolbox.has_soul)
|
||||
return ..()
|
||||
|
||||
if(iscultist(user))
|
||||
hot_potato(user)
|
||||
return
|
||||
if(!iscultist(user, TRUE) && !iswizard(user) && !usability)
|
||||
user.Unconscious(10 SECONDS)
|
||||
to_chat(user, span_userdanger("Your body is wracked with debilitating pain!"))
|
||||
return
|
||||
|
||||
user.visible_message("<span class='notice'>[user] holds [src] above [user.p_their()] head and forces it into [target_toolbox] with a flash of light!", \
|
||||
span_notice("You hold [src] above your head briefly, then force it into [target_toolbox], transferring the [occupant]'s soul!"), ignored_mobs = occupant)
|
||||
to_chat(occupant, span_userdanger("[user] holds you up briefly, then forces you into [target_toolbox]!"))
|
||||
to_chat(occupant, span_deadsay("<b>Your eternal soul has been sacrificed to restore the soul of a toolbox. Them's the breaks!</b>"))
|
||||
|
||||
occupant.client?.give_award(/datum/award/achievement/misc/toolbox_soul, occupant)
|
||||
occupant.deathmessage = "shrieks out in unholy pain as [occupant.p_their()] soul is absorbed into [target_toolbox]!"
|
||||
release_shades(user, TRUE)
|
||||
occupant.death()
|
||||
|
||||
target_toolbox.name = "soulful toolbox"
|
||||
target_toolbox.icon_state = "toolbox_blue_old"
|
||||
target_toolbox.has_soul = TRUE
|
||||
target_toolbox.has_latches = FALSE
|
||||
|
||||
///////////////////////////Transferring to constructs/////////////////////////////////////////////////////
|
||||
/obj/structure/constructshell
|
||||
name = "empty shell"
|
||||
|
||||
@@ -235,7 +235,7 @@
|
||||
. += "can-open"
|
||||
if(connected_port)
|
||||
. += "can-connector"
|
||||
var/pressure = air_contents.return_pressure()
|
||||
var/pressure = air_contents?.return_pressure()
|
||||
if(pressure >= 40 * ONE_ATMOSPHERE)
|
||||
. += "can-o3"
|
||||
else if(pressure >= 10 * ONE_ATMOSPHERE)
|
||||
@@ -295,6 +295,7 @@
|
||||
density = FALSE
|
||||
playsound(src.loc, 'sound/effects/spray.ogg', 10, TRUE, -3)
|
||||
investigate_log("was destroyed.", INVESTIGATE_ATMOS)
|
||||
update_icon_state()
|
||||
|
||||
if(holding)
|
||||
holding.forceMove(T)
|
||||
|
||||
@@ -427,25 +427,30 @@
|
||||
desc = "Comfy and supposedly flammable."
|
||||
icon_state = "flannel"
|
||||
item_state = "flannel"
|
||||
|
||||
/obj/item/clothing/suit/jacket/flannel/red
|
||||
/obj/item/clothing/suit/toggle/jacket/flannel/red
|
||||
name = "red flannel jacket"
|
||||
desc = "Comfy and supposedly flammable."
|
||||
icon_state = "flannel_red"
|
||||
item_state = "flannel_red"
|
||||
|
||||
/obj/item/clothing/suit/jacket/flannel/aqua
|
||||
togglename = "buttons"
|
||||
/obj/item/clothing/suit/toggle/jacket/flannel/aqua
|
||||
name = "aqua flannel jacket"
|
||||
desc = "Comfy and supposedly flammable."
|
||||
icon_state = "flannel_aqua"
|
||||
item_state = "flannel_aqua"
|
||||
|
||||
/obj/item/clothing/suit/jacket/flannel/brown
|
||||
togglename = "buttons"
|
||||
/obj/item/clothing/suit/toggle/jacket/flannel/brown
|
||||
name = "brown flannel jacket"
|
||||
desc = "Comfy and supposedly flammable."
|
||||
icon_state = "flannel_brown"
|
||||
item_state = "flannel_brown"
|
||||
|
||||
togglename = "buttons"
|
||||
/obj/item/clothing/suit/toggle/jacket/whitehoodie
|
||||
name = "soft hoodie"
|
||||
desc = "A soft hoodie with a TailorCo brand on the tag."
|
||||
icon_state = "white_hoodie"
|
||||
item_state = "white_hoodie"
|
||||
togglename = "zipper"
|
||||
/obj/item/clothing/suit/jacket/purplehoodie
|
||||
name = "purple hoodie"
|
||||
desc = "A soft purple hoodie with a TailorCo brand on the tag."
|
||||
@@ -482,6 +487,24 @@
|
||||
icon_state = "gothic_shirtcross"
|
||||
item_state = "gothic_shirtcross"
|
||||
|
||||
/obj/item/clothing/suit/jacket/gentlecoat
|
||||
name = "grey jacket"
|
||||
desc = "A grey coat with a TailorCo brand on the tag. Looks expensive."
|
||||
icon_state = "gentlecoat"
|
||||
item_state = "gentlecoat"
|
||||
|
||||
/obj/item/clothing/suit/toggle/jacket/greenjacket
|
||||
name = "green outdoorsmans jacket"
|
||||
desc = "A green jacket with a TailorCo brand on the tag. Looks expensive."
|
||||
icon_state = "coatar"
|
||||
item_state = "coatar"
|
||||
togglename = "zipper"
|
||||
/obj/item/clothing/suit/toggle/jacket/fancytrench
|
||||
name = "grey trenchcoat"
|
||||
desc = "A custom-tailored trenchcoat with a TailorCo brand on the tag."
|
||||
icon_state = "fancytrench"
|
||||
item_state = "fancytrench"
|
||||
togglename = "buttons"
|
||||
/obj/item/clothing/suit/jacket/leather
|
||||
name = "leather jacket"
|
||||
desc = "Pompadour not included."
|
||||
|
||||
@@ -24,7 +24,8 @@
|
||||
/area/holodeck,
|
||||
/area/shuttle,
|
||||
/area/maintenance,
|
||||
/area/science/test_area)
|
||||
/area/science/test_area,
|
||||
/area/commons/cryopod)
|
||||
)
|
||||
|
||||
//Subtypes from the above that actually should explode.
|
||||
|
||||
@@ -7,11 +7,11 @@
|
||||
instrument_flags = INSTRUMENT_LEGACY
|
||||
volume_multiplier = 1 //not as loud as synth'd
|
||||
|
||||
/datum/instrument/hardcoded/accordian
|
||||
name = "Accordian"
|
||||
id = "accordian"
|
||||
/datum/instrument/hardcoded/accordion
|
||||
name = "Accordion"
|
||||
id = "accordion"
|
||||
legacy_instrument_ext = "mid"
|
||||
legacy_instrument_path = "accordian"
|
||||
legacy_instrument_path = "accordion"
|
||||
|
||||
/datum/instrument/hardcoded/bikehorn
|
||||
name = "Bike Horn"
|
||||
|
||||
@@ -19,8 +19,8 @@
|
||||
"60"='sound/instruments/synthesis_samples/organ/crisis_hammond/c4.ogg',
|
||||
"72"='sound/instruments/synthesis_samples/organ/crisis_hammond/c5.ogg')
|
||||
|
||||
/datum/instrument/organ/crisis_accordian
|
||||
name = "Crisis Accordian"
|
||||
/datum/instrument/organ/crisis_accordion
|
||||
name = "Crisis Accordion"
|
||||
id = "crack"
|
||||
real_samples = list("36"='sound/instruments/synthesis_samples/organ/crisis_accordian/c2.ogg',
|
||||
"48"='sound/instruments/synthesis_samples/organ/crisis_accordian/c3.ogg',
|
||||
@@ -34,8 +34,8 @@
|
||||
"60"='sound/instruments/synthesis_samples/organ/crisis_harmonica/c4.ogg',
|
||||
"72"='sound/instruments/synthesis_samples/organ/crisis_harmonica/c5.ogg')
|
||||
|
||||
/datum/instrument/organ/crisis_tango_accordian
|
||||
name = "Crisis Tango Accordian"
|
||||
/datum/instrument/organ/crisis_tango_accordion
|
||||
name = "Crisis Tango Accordion"
|
||||
id = "crtango"
|
||||
real_samples = list("36"='sound/instruments/synthesis_samples/organ/crisis_tangaccordian/c2.ogg',
|
||||
"48"='sound/instruments/synthesis_samples/organ/crisis_tangaccordian/c3.ogg',
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
department_flag = CIVILIAN
|
||||
faction = "Station"
|
||||
total_positions = 0
|
||||
spawn_positions = 2
|
||||
spawn_positions = 4
|
||||
supervisors = "the security team"
|
||||
|
||||
outfit = /datum/outfit/job/prisoner
|
||||
|
||||
@@ -25,9 +25,6 @@
|
||||
else
|
||||
emp_damage = max(emp_damage-1, 0)
|
||||
|
||||
/mob/living/brain/handle_status_effects()
|
||||
return
|
||||
|
||||
/mob/living/brain/handle_traits()
|
||||
return
|
||||
|
||||
|
||||
@@ -83,6 +83,33 @@
|
||||
. += "Chemical Storage: [changeling.chem_charges]/[changeling.chem_storage]"
|
||||
. += "Absorbed DNA: [changeling.absorbedcount]"
|
||||
|
||||
//NINJACODE
|
||||
if(istype(wear_suit, /obj/item/clothing/suit/space/space_ninja)) //Only display if actually a ninja.
|
||||
var/obj/item/clothing/suit/space/space_ninja/SN = wear_suit
|
||||
. += "SpiderOS Status: [SN.s_initialized ? "Initialized" : "Disabled"]"
|
||||
. += "Current Time: [STATION_TIME_TIMESTAMP("hh:mm:ss", world.time)]"
|
||||
if(SN.s_initialized)
|
||||
//Suit gear
|
||||
. += "Energy Charge: [round(SN.cell.charge/100)]%"
|
||||
//Ninja status
|
||||
. += "Fingerprints: [md5(dna.uni_identity)]"
|
||||
. += "Unique Identity: [dna.unique_enzymes]"
|
||||
. += "Overall Status: [stat > 1 ? "dead" : "[health]% healthy"]"
|
||||
. += "Nutrition Status: [nutrition]"
|
||||
. += "Oxygen Loss: [getOxyLoss()]"
|
||||
. += "Toxin Levels: [getToxLoss()]"
|
||||
. += "Burn Severity: [getFireLoss()]"
|
||||
. += "Brute Trauma: [getBruteLoss()]"
|
||||
. += "Radiation Levels: [radiation] rad"
|
||||
. += "Body Temperature: [bodytemperature-T0C] degrees C ([bodytemperature*1.8-459.67] degrees F)"
|
||||
|
||||
//Diseases
|
||||
if(length(diseases))
|
||||
. += "Viruses:"
|
||||
for(var/thing in diseases)
|
||||
var/datum/disease/D = thing
|
||||
. += "* [D.name], Type: [D.spread_text], Stage: [D.stage]/[D.max_stages], Possible Cure: [D.cure_text]"
|
||||
|
||||
/mob/living/carbon/human/show_inv(mob/user)
|
||||
user.set_machine(src)
|
||||
var/has_breathable_mask = istype(wear_mask, /obj/item/clothing/mask)
|
||||
|
||||
@@ -570,24 +570,15 @@ GLOBAL_LIST_INIT(ballmer_windows_me_msg, list("Yo man, what if, we like, uh, put
|
||||
else
|
||||
SEND_SIGNAL(src, COMSIG_CLEAR_MOOD_EVENT, "jittery")
|
||||
|
||||
if(stuttering)
|
||||
stuttering = max(stuttering-1, 0)
|
||||
if(druggy)
|
||||
adjust_drugginess(-1)
|
||||
|
||||
if(slurring || drunkenness)
|
||||
slurring = max(slurring-1,0,drunkenness)
|
||||
|
||||
if(cultslurring)
|
||||
cultslurring = max(cultslurring-1, 0)
|
||||
|
||||
if(clockcultslurring)
|
||||
clockcultslurring = max(clockcultslurring-1, 0)
|
||||
if(drunkenness)
|
||||
drunkenness = max(drunkenness-1,0)
|
||||
|
||||
if(silent)
|
||||
silent = max(silent-1, 0)
|
||||
|
||||
if(druggy)
|
||||
adjust_drugginess(-1)
|
||||
|
||||
if(hallucination)
|
||||
handle_hallucinations()
|
||||
|
||||
|
||||
@@ -150,11 +150,26 @@
|
||||
/mob/living/proc/handle_stomach()
|
||||
return
|
||||
|
||||
//this updates all special effects: knockdown, druggy, stuttering, etc..
|
||||
/*
|
||||
* this updates some effects: mostly old stuff such as drunkness, druggy, stuttering, etc.
|
||||
* that should be converted to status effect datums one day.
|
||||
*/
|
||||
/mob/living/proc/handle_status_effects()
|
||||
if(confused)
|
||||
confused = max(0, confused - 1)
|
||||
|
||||
if(stuttering)
|
||||
stuttering = max(stuttering-1, 0)
|
||||
|
||||
if(slurring)
|
||||
slurring = max(slurring-1,0)
|
||||
|
||||
if(cultslurring)
|
||||
cultslurring = max(cultslurring-1, 0)
|
||||
|
||||
if(clockcultslurring)
|
||||
clockcultslurring = max(clockcultslurring-1, 0)
|
||||
|
||||
/mob/living/proc/handle_traits()
|
||||
//Eyes
|
||||
if(eye_blind) //blindness, heals slowly over time
|
||||
|
||||
@@ -166,7 +166,7 @@ GLOBAL_LIST_EMPTY(block_parry_data)
|
||||
/// Clickdelay duration post-parry if you fail to parry an attack
|
||||
var/parry_failed_clickcd_duration = 0 SECONDS
|
||||
/// Parry cooldown post-parry if failed. This is ADDED to parry_cooldown!!!
|
||||
var/parry_failed_cooldown_duration = 0 SECONDS
|
||||
var/parry_failed_cooldown_duration = 3.5 SECONDS
|
||||
|
||||
// Advanced
|
||||
/// Flags added to return value
|
||||
|
||||
@@ -66,6 +66,7 @@ GLOBAL_LIST(bad_gremlin_items)
|
||||
/mob/living/simple_animal/hostile/gremlin/Initialize()
|
||||
. = ..()
|
||||
AddElement(/datum/element/ventcrawling, given_tier = VENTCRAWLER_ALWAYS)
|
||||
ADD_TRAIT(src, TRAIT_SHOCKIMMUNE, INNATE_TRAIT)
|
||||
access_card = new /obj/item/card/id(src)
|
||||
var/datum/job/captain/C = new /datum/job/captain
|
||||
access_card.access = C.get_access()
|
||||
|
||||
@@ -95,20 +95,78 @@
|
||||
|
||||
/mob/living/simple_animal/hostile/carp/cayenne
|
||||
name = "Cayenne"
|
||||
real_name = "Cayenne"
|
||||
desc = "A failed Syndicate experiment in weaponized space carp technology, it now serves as a lovable mascot."
|
||||
gender = FEMALE
|
||||
regen_amount = 8
|
||||
|
||||
speak_emote = list("squeaks")
|
||||
maxHealth = 90
|
||||
health = 90
|
||||
gold_core_spawnable = NO_SPAWN
|
||||
faction = list(ROLE_SYNDICATE, "carp") //They are still a carp
|
||||
AIStatus = AI_OFF
|
||||
gold_core_spawnable = NO_SPAWN
|
||||
faction = list(ROLE_SYNDICATE)
|
||||
/// Keeping track of the nuke disk for the functionality of storing it.
|
||||
var/obj/item/disk/nuclear/disky
|
||||
/// Location of the file storing disk overlays
|
||||
// var/icon/disk_overlay_file = 'icons/mob/carp.dmi'
|
||||
/// Colored disk mouth appearance for adding it as a mouth overlay
|
||||
var/mutable_appearance/colored_disk_mouth
|
||||
|
||||
harm_intent_damage = 12
|
||||
obj_damage = 70
|
||||
melee_damage_lower = 15
|
||||
melee_damage_upper = 18
|
||||
/mob/living/simple_animal/hostile/carp/cayenne/Initialize()
|
||||
. = ..()
|
||||
// AddElement(/datum/element/pet_bonus, "bloops happily!")
|
||||
// colored_disk_mouth = mutable_appearance(SSgreyscale.GetColoredIconByType(/datum/greyscale_config/carp/disk_mouth, greyscale_colors), "disk_mouth")
|
||||
ADD_TRAIT(src, TRAIT_DISK_VERIFIER, INNATE_TRAIT) //carp can verify disky
|
||||
|
||||
/mob/living/simple_animal/hostile/carp/cayenne/IsAdvancedToolUser()
|
||||
return TRUE //carp SMART
|
||||
|
||||
/mob/living/simple_animal/hostile/carp/cayenne/death(gibbed)
|
||||
if(disky)
|
||||
disky.forceMove(drop_location())
|
||||
disky = null
|
||||
return ..()
|
||||
|
||||
/mob/living/simple_animal/hostile/carp/cayenne/Destroy(force)
|
||||
QDEL_NULL(disky)
|
||||
return ..()
|
||||
|
||||
/mob/living/simple_animal/hostile/carp/cayenne/examine(mob/user)
|
||||
. = ..()
|
||||
if(disky)
|
||||
. += span_notice("Wait... is that [disky] in [p_their()] mouth?")
|
||||
|
||||
/mob/living/simple_animal/hostile/carp/cayenne/AttackingTarget(atom/attacked_target)
|
||||
if(istype(attacked_target, /obj/item/disk/nuclear))
|
||||
var/obj/item/disk/nuclear/potential_disky = attacked_target
|
||||
if(potential_disky.anchored)
|
||||
return
|
||||
potential_disky.forceMove(src)
|
||||
disky = potential_disky
|
||||
to_chat(src, span_nicegreen("YES!! You manage to pick up [disky]. (Click anywhere to place it back down.)"))
|
||||
update_icon()
|
||||
if(!disky.fake)
|
||||
client.give_award(/datum/award/achievement/misc/cayenne_disk, src)
|
||||
return
|
||||
if(disky)
|
||||
if(isopenturf(attacked_target))
|
||||
to_chat(src, span_notice("You place [disky] on [attacked_target]"))
|
||||
disky.forceMove(attacked_target.drop_location())
|
||||
disky = null
|
||||
update_icon()
|
||||
else
|
||||
disky.melee_attack_chain(src, attacked_target)
|
||||
return
|
||||
return ..()
|
||||
|
||||
/mob/living/simple_animal/hostile/carp/cayenne/Exited(atom/movable/gone, direction)
|
||||
. = ..()
|
||||
if(disky == gone)
|
||||
disky = null
|
||||
update_icon()
|
||||
|
||||
/mob/living/simple_animal/hostile/carp/cayenne/update_overlays()
|
||||
. = ..()
|
||||
if(!disky || stat == DEAD)
|
||||
return
|
||||
// . += colored_disk_mouth
|
||||
// . += mutable_appearance(disk_overlay_file, "disk_overlay")
|
||||
|
||||
#undef REGENERATION_DELAY
|
||||
|
||||
@@ -32,6 +32,9 @@ Difficulty: Hard
|
||||
wander = FALSE
|
||||
del_on_death = TRUE
|
||||
blood_volume = BLOOD_VOLUME_NORMAL
|
||||
achievement_type = /datum/award/achievement/boss/wendigo_kill
|
||||
crusher_achievement_type = /datum/award/achievement/boss/wendigo_crusher
|
||||
score_achievement_type = /datum/award/score/wendigo_score
|
||||
deathmessage = "falls, shaking the ground around it"
|
||||
deathsound = 'sound/effects/gravhit.ogg'
|
||||
attack_action_types = list(/datum/action/innate/megafauna_attack/heavy_stomp,
|
||||
|
||||
@@ -136,7 +136,7 @@ GLOBAL_LIST_EMPTY(plague_rats)
|
||||
if(LAZYLEN(GLOB.plague_rats) >= cap)
|
||||
visible_message("<span class='warning'>[src] gnaws into its food, [cap] rats are now on the station!</span>")
|
||||
return
|
||||
var/mob/living/newmouse = new /mob/living/simple_animal/hostile/plaguerat(loc)
|
||||
new /mob/living/simple_animal/hostile/plaguerat(loc)
|
||||
visible_message("<span class='notice'>[src] gnaws into its food, attracting another rat!</span>")
|
||||
|
||||
/mob/living/simple_animal/hostile/plaguerat/proc/exit_vents()
|
||||
|
||||
@@ -195,12 +195,6 @@
|
||||
stat = CONSCIOUS
|
||||
med_hud_set_status()
|
||||
|
||||
|
||||
/mob/living/simple_animal/handle_status_effects()
|
||||
..()
|
||||
if(stuttering)
|
||||
stuttering = 0
|
||||
|
||||
/mob/living/simple_animal/proc/handle_automated_action()
|
||||
set waitfor = FALSE
|
||||
return
|
||||
|
||||
@@ -15,7 +15,6 @@
|
||||
|
||||
//Defines for the suit's unique abilities
|
||||
#define IS_NINJA_SUIT_INITIALIZATION(action) (istype(action, /datum/action/item_action/initialize_ninja_suit))
|
||||
#define IS_NINJA_SUIT_STATUS(action) (istype(action, /datum/action/item_action/ninjastatus))
|
||||
#define IS_NINJA_SUIT_BOOST(action) (istype(action, /datum/action/item_action/ninjaboost))
|
||||
#define IS_NINJA_SUIT_EMP(action) (istype(action, /datum/action/item_action/ninjapulse))
|
||||
#define IS_NINJA_SUIT_STAR_CREATION(action) (istype(action, /datum/action/item_action/ninjastar))
|
||||
|
||||
@@ -5,35 +5,3 @@
|
||||
button_icon_state = "health"
|
||||
icon_icon = 'icons/obj/device.dmi'
|
||||
var/action_background_icon_state = "bg_default_on"
|
||||
|
||||
/**
|
||||
* Proc called to put a status readout to the ninja in chat.
|
||||
*
|
||||
* Called put some information about the ninja's current status into chat.
|
||||
* This information used to be displayed constantly on the status tab screen
|
||||
* when the suit was on, but was turned into this as to remove the code from
|
||||
* human.dm
|
||||
*/
|
||||
/obj/item/clothing/suit/space/space_ninja/proc/ninjastatus()
|
||||
var/mob/living/carbon/human/ninja = affecting
|
||||
var/list/info_list = list()
|
||||
info_list += "<span class='info'>SpiderOS Status: [s_initialized ? "Initialized" : "Disabled"]</span>\n"
|
||||
//Ninja status
|
||||
info_list += "<span class='info'>Fingerprints: [md5(ninja.dna.uni_identity)]</span>\n"
|
||||
info_list += "<span class='info'>Unique Identity: [ninja.dna.unique_enzymes]</span>\n"
|
||||
info_list += "<span class='info'>Overall Status: [ninja.stat > 1 ? "dead" : "[ninja.health]% healthy"]</span>\n"
|
||||
info_list += "<span class='info'>Nutrition Status: [ninja.nutrition]</span>\n"
|
||||
info_list += "<span class='info'>Oxygen Loss: [ninja.getOxyLoss()]</span>\n"
|
||||
info_list += "<span class='info'>Toxin Levels: [ninja.getToxLoss()]</span>\n"
|
||||
info_list += "<span class='info'>Burn Severity: [ninja.getFireLoss()]</span>\n"
|
||||
info_list += "<span class='info'>Brute Trauma: [ninja.getBruteLoss()]</span>\n"
|
||||
info_list += "<span class='info'>Radiation Levels: [ninja.radiation] rad</span>\n"
|
||||
info_list += "<span class='info'>Body Temperature: [ninja.bodytemperature-T0C] degrees C ([ninja.bodytemperature*1.8-459.67] degrees F)</span>\n"
|
||||
|
||||
//Diseases
|
||||
if(length(ninja.diseases))
|
||||
info_list += "Viruses:"
|
||||
for(var/datum/disease/ninja_disease in ninja.diseases)
|
||||
info_list += "<span class='info'>* [ninja_disease.name], Type: [ninja_disease.spread_text], Stage: [ninja_disease.stage]/[ninja_disease.max_stages], Possible Cure: [ninja_disease.cure_text]</span>\n"
|
||||
|
||||
to_chat(ninja, "[info_list.Join()]")
|
||||
|
||||
@@ -121,9 +121,6 @@
|
||||
if(s_coold > 0)
|
||||
to_chat(user, "<span class='warning'><b>ERROR</b>: suit is on cooldown.</span>")
|
||||
return FALSE
|
||||
if(IS_NINJA_SUIT_STATUS(action))
|
||||
ninjastatus()
|
||||
return TRUE
|
||||
if(IS_NINJA_SUIT_BOOST(action))
|
||||
ninjaboost()
|
||||
return TRUE
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
playsound(user, 'sound/weapons/shotguninsert.ogg', 60, 1)
|
||||
A.update_icon()
|
||||
update_icon()
|
||||
user.SetNextAction(CLICK_CD_MELEE)
|
||||
|
||||
/obj/item/gun/ballistic/shotgun/process_chamber(mob/living/user, empty_chamber = 0)
|
||||
return ..() //changed argument value
|
||||
@@ -240,7 +241,7 @@
|
||||
|
||||
/obj/item/gun/ballistic/shotgun/automatic/combat/compact
|
||||
name = "warden's combat shotgun"
|
||||
desc = "A modified version of the semi automatic combat shotgun with a collapsible stock. For close encounters."
|
||||
desc = "A modified version of the semi-automatic combat shotgun with a collapsible stock and a safety that prevents firing while folded. For close encounters."
|
||||
icon_state = "cshotgunc"
|
||||
mag_type = /obj/item/ammo_box/magazine/internal/shot/com
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
@@ -250,7 +251,7 @@
|
||||
|
||||
/obj/item/gun/ballistic/shotgun/automatic/combat/compact/AltClick(mob/living/user)
|
||||
. = ..()
|
||||
if(!istype(user) || !user.canUseTopic(src, BE_CLOSE, ismonkey(user)))
|
||||
if(!istype(user) || !user.canUseTopic(src, BE_CLOSE, ismonkey(user)) || item_flags && IN_STORAGE)
|
||||
return
|
||||
toggle_stock(user)
|
||||
return TRUE
|
||||
@@ -276,6 +277,14 @@
|
||||
/obj/item/gun/ballistic/shotgun/automatic/combat/compact/update_icon_state()
|
||||
icon_state = "[current_skin ? unique_reskin[current_skin] : "cshotgun"][stock ? "" : "c"]"
|
||||
|
||||
/obj/item/gun/ballistic/shotgun/automatic/combat/compact/afterattack(atom/target, mob/living/user, flag, params)
|
||||
if(!stock)
|
||||
shoot_with_empty_chamber(user)
|
||||
to_chat(user, "<span class='warning'>[src] won't fire with a folded stock!</span>")
|
||||
else
|
||||
. = ..()
|
||||
update_icon()
|
||||
|
||||
//Dual Feed Shotgun
|
||||
|
||||
/obj/item/gun/ballistic/shotgun/automatic/dual_tube
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/obj/item/gun/magic/staff/motivation
|
||||
name = "Motivation"
|
||||
desc = "Rumored to have the ability to open up a portal the depths of Lavaland."
|
||||
desc = "Rumored to have the ability to open up a portal to the depths of Lavaland."
|
||||
icon = 'icons/obj/items_and_weapons.dmi'
|
||||
icon_state = "motivation"
|
||||
item_state = "motivation"
|
||||
@@ -21,15 +21,15 @@
|
||||
recharge_rate = 5
|
||||
var/datum/action/judgement_cut/judgementcut = new/datum/action/judgement_cut()
|
||||
block_parry_data = /datum/block_parry_data/motivation
|
||||
|
||||
|
||||
//to get this to toggle correctly
|
||||
/obj/item/gun/magic/staff/motivation/Initialize()
|
||||
. = ..()
|
||||
judgementcut = new(src)
|
||||
|
||||
//lets the user know that their judgment cuts are recharging
|
||||
//lets the user know that their judgement cuts are recharging
|
||||
/obj/item/gun/magic/staff/motivation/shoot_with_empty_chamber(mob/living/user as mob|obj)
|
||||
to_chat(user, "<span class='warning'>Judgment Cut is recharging.</span>")
|
||||
to_chat(user, "<span class='warning'>Judgement Cut is recharging.</span>")
|
||||
|
||||
//action button to toggle judgement cuts on/off
|
||||
/datum/action/judgement_cut
|
||||
@@ -47,7 +47,7 @@
|
||||
/obj/item/gun/magic/staff/motivation/can_trigger_gun(mob/living/user)
|
||||
. = ..()
|
||||
if(!judgementcut.judgement_toggled)
|
||||
to_chat(user, "<span class='notice'> Judgment Cut is disabled.</span>")
|
||||
to_chat(user, "<span class='notice'>Judgement Cut is disabled.</span>")
|
||||
return FALSE
|
||||
|
||||
//adds/removes judgement cut and judgement cut end upon pickup/drop
|
||||
|
||||
@@ -84,6 +84,7 @@
|
||||
else
|
||||
reagents.trans_to(D, amount_per_transfer_from_this, 1/range)
|
||||
D.add_atom_colour(mix_color_from_reagents(D.reagents.reagent_list), TEMPORARY_COLOUR_PRIORITY)
|
||||
playsound(src.loc, 'sound/effects/spray2.ogg', 50, 1, -6)
|
||||
last_spray = world.time
|
||||
INVOKE_ASYNC(D, /obj/effect/decal/chempuff/proc/run_puff, A)
|
||||
|
||||
|
||||
+1
-1
@@ -37,7 +37,7 @@
|
||||
build_path = /obj/item/storage/bag/tray
|
||||
category = list("initial","Dinnerware")
|
||||
|
||||
/datum/design/tray
|
||||
/datum/design/cafeteria_tray
|
||||
name = "Cafeteria Tray"
|
||||
id = "foodtray"
|
||||
build_type = AUTOLATHE
|
||||
|
||||
@@ -292,7 +292,5 @@
|
||||
desc = "An ancient blade said to have ties with Lavaland's most inner demons. \
|
||||
Allows you to cut from a far distance!"
|
||||
item = /obj/item/gun/magic/staff/motivation
|
||||
cost = 20
|
||||
player_minimum = 20
|
||||
cost = 10
|
||||
exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops, /datum/game_mode/traitor/internal_affairs)
|
||||
cant_discount = TRUE
|
||||
|
||||
@@ -91,9 +91,9 @@
|
||||
/obj/vehicle/proc/after_add_occupant(mob/M)
|
||||
auto_assign_occupant_flags(M)
|
||||
|
||||
/obj/vehicle/proc/auto_assign_occupant_flags(mob/M) //override for each type that needs it. Default is assign driver if drivers is not at max.
|
||||
/obj/vehicle/proc/auto_assign_occupant_flags(mob/M) //override for each type that needs it. Default is assign driver if drivers is not at max.
|
||||
if(driver_amount() < max_drivers)
|
||||
add_control_flags(M, VEHICLE_CONTROL_DRIVE|VEHICLE_CONTROL_PERMISSION)
|
||||
add_control_flags(M, VEHICLE_CONTROL_DRIVE)
|
||||
|
||||
/obj/vehicle/proc/remove_occupant(mob/M)
|
||||
if(!istype(M))
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
. = ..()
|
||||
initialize_controller_action_type(/datum/action/vehicle/sealed/remove_key, VEHICLE_CONTROL_DRIVE)
|
||||
if(car_traits & CAN_KIDNAP)
|
||||
initialize_controller_action_type(/datum/action/vehicle/sealed/DumpKidnappedMobs, VEHICLE_CONTROL_DRIVE)
|
||||
initialize_controller_action_type(/datum/action/vehicle/sealed/dump_kidnapped_mobs, VEHICLE_CONTROL_DRIVE)
|
||||
|
||||
/obj/vehicle/sealed/car/driver_move(mob/user, direction)
|
||||
if(key_type && !is_key(inserted_key))
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/obj/vehicle/sealed/car/clowncar
|
||||
name = "clown car"
|
||||
desc = "How someone could even fit in there is beyond me."
|
||||
desc = "How someone could even fit in there is byond me."
|
||||
icon_state = "clowncar"
|
||||
max_integrity = 150
|
||||
armor = list("melee" = 70, "bullet" = 40, "laser" = 40, "energy" = 0, "bomb" = 30, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 80)
|
||||
@@ -10,25 +10,36 @@
|
||||
car_traits = CAN_KIDNAP
|
||||
key_type = /obj/item/bikehorn
|
||||
key_type_exact = FALSE
|
||||
var/droppingoil = FALSE
|
||||
var/RTDcooldown = 150
|
||||
var/lastRTDtime = 0
|
||||
///list of headlight colors we use to pick through when we have party mode due to emag
|
||||
var/headlight_colors = list(COLOR_RED, COLOR_ORANGE, COLOR_YELLOW, COLOR_LIME, COLOR_BRIGHT_BLUE, COLOR_CYAN, COLOR_PURPLE)
|
||||
///Cooldown time inbetween [/obj/vehicle/sealed/car/clowncar/proc/roll_the_dice()] usages
|
||||
var/dice_cooldown_time = 150
|
||||
///How many times kidnappers in the clown car said thanks
|
||||
var/thankscount = 0
|
||||
///Current status of the cannon, alternates between CLOWN_CANNON_INACTIVE, CLOWN_CANNON_BUSY and CLOWN_CANNON_READY
|
||||
var/cannonmode = CLOWN_CANNON_INACTIVE
|
||||
var/light_on = TRUE
|
||||
|
||||
/obj/vehicle/sealed/car/clowncar/Initialize()
|
||||
. = ..()
|
||||
START_PROCESSING(SSobj,src)
|
||||
|
||||
/obj/vehicle/sealed/car/clowncar/process()
|
||||
if(light_on && (obj_flags & EMAGGED))
|
||||
set_light_color(pick(headlight_colors))
|
||||
|
||||
/obj/vehicle/sealed/car/clowncar/generate_actions()
|
||||
. = ..()
|
||||
initialize_controller_action_type(/datum/action/vehicle/sealed/horn/clowncar, VEHICLE_CONTROL_DRIVE)
|
||||
|
||||
/obj/vehicle/sealed/car/clowncar/driver_move(mob/user, direction) //Prevent it from moving onto space
|
||||
if(isspaceturf(get_step(src, direction)))
|
||||
return FALSE
|
||||
else
|
||||
return ..()
|
||||
initialize_controller_action_type(/datum/action/vehicle/sealed/horn, VEHICLE_CONTROL_DRIVE)
|
||||
initialize_controller_action_type(/datum/action/vehicle/sealed/thank, VEHICLE_CONTROL_KIDNAPPED)
|
||||
|
||||
/obj/vehicle/sealed/car/clowncar/auto_assign_occupant_flags(mob/M)
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
if(H.mind && HAS_TRAIT(H.mind, TRAIT_CLOWN_MENTALITY)) //Ensures only clowns can drive the car. (Including more at once)
|
||||
add_control_flags(M, VEHICLE_CONTROL_DRIVE|VEHICLE_CONTROL_PERMISSION)
|
||||
add_control_flags(H, VEHICLE_CONTROL_DRIVE)
|
||||
RegisterSignal(H, COMSIG_MOB_CLICKON, .proc/fire_cannon_at)
|
||||
M.log_message("has entered [src] as a possible driver", LOG_ATTACK)
|
||||
return
|
||||
add_control_flags(M, VEHICLE_CONTROL_KIDNAPPED)
|
||||
|
||||
@@ -36,106 +47,195 @@
|
||||
. = ..()
|
||||
playsound(src, pick('sound/vehicles/clowncar_load1.ogg', 'sound/vehicles/clowncar_load2.ogg'), 75)
|
||||
|
||||
/obj/vehicle/sealed/car/clowncar/after_add_occupant(mob/M, control_flags)
|
||||
. = ..()
|
||||
if(return_controllers_with_flag(VEHICLE_CONTROL_KIDNAPPED).len >= 30)
|
||||
for(var/mob/voreman as anything in return_drivers())
|
||||
voreman.client.give_award(/datum/award/achievement/misc/round_and_full, voreman)
|
||||
|
||||
/obj/vehicle/sealed/car/clowncar/attack_animal(mob/living/simple_animal/user, list/modifiers)
|
||||
if((user.loc != src) || user.environment_smash & (ENVIRONMENT_SMASH_WALLS|ENVIRONMENT_SMASH_RWALLS))
|
||||
return ..()
|
||||
|
||||
/obj/vehicle/sealed/car/clowncar/mob_exit(mob/M, silent = FALSE, randomstep = FALSE)
|
||||
. = ..()
|
||||
UnregisterSignal(M, COMSIG_MOB_CLICKON)
|
||||
|
||||
/obj/vehicle/sealed/car/clowncar/take_damage(damage_amount, damage_type = BRUTE, damage_flag = 0, sound_effect = 1, attack_dir)
|
||||
. = ..()
|
||||
if(prob(33))
|
||||
visible_message("<span class='danger'>[src] spews out a ton of space lube!</span>")
|
||||
visible_message(span_danger("[src] spews out a ton of space lube!"))
|
||||
new /obj/effect/particle_effect/foam(loc) //YEET
|
||||
|
||||
/obj/vehicle/sealed/car/clowncar/attacked_by(obj/item/I, mob/living/user, attackchain_flags = NONE, damage_multiplier = 1)
|
||||
/obj/vehicle/sealed/car/clowncar/attacked_by(obj/item/I, mob/living/user)
|
||||
. = ..()
|
||||
if(istype(I, /obj/item/reagent_containers/food/snacks/grown/banana))
|
||||
var/obj/item/reagent_containers/food/snacks/grown/banana/banana = I
|
||||
obj_integrity += min(banana.seed.potency, max_integrity-obj_integrity)
|
||||
to_chat(user, "<span class='danger'>You use the [banana] to repair the [src]!</span>")
|
||||
qdel(banana)
|
||||
if(!istype(I, /obj/item/reagent_containers/food/snacks/grown/banana))
|
||||
return
|
||||
var/obj/item/reagent_containers/food/snacks/grown/banana/banana = I
|
||||
obj_integrity += min(banana.seed.potency, max_integrity-obj_integrity)
|
||||
to_chat(user, span_danger("You use the [banana] to repair the [src]!"))
|
||||
qdel(banana)
|
||||
|
||||
/obj/vehicle/sealed/car/clowncar/Bump(atom/movable/M)
|
||||
/obj/vehicle/sealed/car/clowncar/Bump(atom/bumped)
|
||||
. = ..()
|
||||
if(isliving(M))
|
||||
if(ismegafauna(M))
|
||||
if(isliving(bumped))
|
||||
if(ismegafauna(bumped))
|
||||
return
|
||||
var/mob/living/L = M
|
||||
if(iscarbon(L))
|
||||
var/mob/living/carbon/C = L
|
||||
C.DefaultCombatKnockdown(40) //I play to make sprites go horizontal
|
||||
L.visible_message("<span class='warning'>[src] rams into [L] and sucks him up!</span>") //fuck off shezza this isn't ERP.
|
||||
mob_forced_enter(L)
|
||||
var/mob/living/hittarget_living = bumped
|
||||
if(iscarbon(hittarget_living))
|
||||
var/mob/living/carbon/carb = hittarget_living
|
||||
carb.DefaultCombatKnockdown(40) //I play to make sprites go horizontal
|
||||
hittarget_living.visible_message(span_warning("[src] rams into [hittarget_living] and sucks [hittarget_living.p_them()] up!")) //fuck off shezza this isn't ERP.
|
||||
mob_forced_enter(hittarget_living)
|
||||
playsound(src, pick('sound/vehicles/clowncar_ram1.ogg', 'sound/vehicles/clowncar_ram2.ogg', 'sound/vehicles/clowncar_ram3.ogg'), 75)
|
||||
else if(istype(M, /turf/closed) || istype(M, /obj/machinery/door/airlock/external))
|
||||
visible_message("<span class='warning'>[src] rams into [M] and crashes!</span>")
|
||||
playsound(src, pick('sound/vehicles/clowncar_crash1.ogg', 'sound/vehicles/clowncar_crash2.ogg'), 75)
|
||||
playsound(src, 'sound/vehicles/clowncar_crashpins.ogg', 75)
|
||||
DumpMobs(TRUE)
|
||||
log_combat(src, hittarget_living, "sucked up")
|
||||
return
|
||||
if(!istype(bumped, /turf/closed))
|
||||
return
|
||||
visible_message(span_warning("[src] rams into [bumped] and crashes!"))
|
||||
playsound(src, pick('sound/vehicles/clowncar_crash1.ogg', 'sound/vehicles/clowncar_crash2.ogg'), 75)
|
||||
playsound(src, 'sound/vehicles/clowncar_crashpins.ogg', 75)
|
||||
DumpMobs(TRUE)
|
||||
log_combat(src, bumped, "crashed into", null, "dumping all passengers")
|
||||
|
||||
/obj/vehicle/sealed/car/clowncar/emag_act(mob/user)
|
||||
. = ..()
|
||||
if(obj_flags & EMAGGED)
|
||||
return
|
||||
obj_flags |= EMAGGED
|
||||
to_chat(user, "<span class='danger'>You scramble the clowncar child safety lock and a panel with 6 colorful buttons appears!</span>")
|
||||
initialize_controller_action_type(/datum/action/vehicle/sealed/RollTheDice, VEHICLE_CONTROL_DRIVE)
|
||||
to_chat(user, span_danger("You scramble \the [src]'s child safety lock, and a panel with six colorful buttons appears!"))
|
||||
initialize_controller_action_type(/datum/action/vehicle/sealed/roll_the_dice, VEHICLE_CONTROL_DRIVE)
|
||||
initialize_controller_action_type(/datum/action/vehicle/sealed/cannon, VEHICLE_CONTROL_DRIVE)
|
||||
return TRUE
|
||||
|
||||
/obj/vehicle/sealed/car/clowncar/Destroy()
|
||||
/obj/vehicle/sealed/car/clowncar/obj_destruction(damage_flag)
|
||||
playsound(src, 'sound/vehicles/clowncar_fart.ogg', 100)
|
||||
STOP_PROCESSING(SSobj,src)
|
||||
return ..()
|
||||
|
||||
/obj/vehicle/sealed/car/clowncar/after_move(direction)
|
||||
. = ..()
|
||||
if(droppingoil)
|
||||
new /obj/effect/decal/cleanable/oil/slippery(loc)
|
||||
|
||||
/obj/vehicle/sealed/car/clowncar/proc/RollTheDice(mob/user)
|
||||
if(world.time - lastRTDtime < RTDcooldown)
|
||||
to_chat(user, "<span class='notice'>The button panel is currently recharging.</span>")
|
||||
/**
|
||||
* Plays a random funky effect
|
||||
* Only available while car is emagged
|
||||
* Possible effects:
|
||||
* * Spawn bananapeel
|
||||
* * Spawn random reagent foam
|
||||
* * Make the clown car look like a singulo temporarily
|
||||
* * Spawn Laughing chem gas
|
||||
* * Drop oil
|
||||
* * Fart and make everyone nearby laugh
|
||||
*/
|
||||
/obj/vehicle/sealed/car/clowncar/proc/roll_the_dice(mob/user)
|
||||
if(TIMER_COOLDOWN_CHECK(src, COOLDOWN_CLOWNCAR_RANDOMNESS))
|
||||
to_chat(user, span_notice("The button panel is currently recharging."))
|
||||
return
|
||||
lastRTDtime = world.time
|
||||
var/randomnum = rand(1,6)
|
||||
switch(randomnum)
|
||||
TIMER_COOLDOWN_START(src, COOLDOWN_CLOWNCAR_RANDOMNESS, dice_cooldown_time)
|
||||
switch(rand(1,6))
|
||||
if(1)
|
||||
visible_message("<span class='danger'>[user] has pressed one of the colorful buttons on [src] and a special banana peel drops out of it.</span>")
|
||||
visible_message(span_danger("[user] presses one of the colorful buttons on [src], and a special banana peel drops out of it."))
|
||||
new /obj/item/grown/bananapeel/specialpeel(loc)
|
||||
if(2)
|
||||
visible_message("<span class='danger'>[user] has pressed one of the colorful buttons on [src] and unknown chemicals flood out of it.</span>")
|
||||
var/datum/reagents/R = new/datum/reagents(300)
|
||||
R.my_atom = src
|
||||
R.add_reagent(get_random_reagent_id(), 100)
|
||||
visible_message(span_danger("[user] presses one of the colorful buttons on [src], and unknown chemicals flood out of it."))
|
||||
var/datum/reagents/randomchems = new/datum/reagents(300)
|
||||
randomchems.my_atom = src
|
||||
randomchems.add_reagent(get_random_reagent_id(), 100)
|
||||
var/datum/effect_system/foam_spread/foam = new
|
||||
foam.set_up(200, loc, R)
|
||||
foam.set_up(200, loc, randomchems)
|
||||
foam.start()
|
||||
if(3)
|
||||
visible_message("<span class='danger'>[user] has pressed one of the colorful buttons on [src] and the clown car turns on its singularity disguise system.</span>")
|
||||
visible_message(span_danger("[user] presses one of the colorful buttons on [src], and the clown car turns on its singularity disguise system."))
|
||||
icon = 'icons/obj/singularity.dmi'
|
||||
icon_state = "singularity_s1"
|
||||
addtimer(CALLBACK(src, .proc/ResetIcon), 100)
|
||||
addtimer(CALLBACK(src, .proc/reset_icon), 10 SECONDS)
|
||||
if(4)
|
||||
visible_message("<span class='danger'>[user] has pressed one of the colorful buttons on [src] and the clown car spews out a cloud of laughing gas.</span>")
|
||||
var/datum/reagents/R = new/datum/reagents(300)
|
||||
R.my_atom = src
|
||||
R.add_reagent(/datum/reagent/consumable/superlaughter, 50)
|
||||
visible_message(span_danger("[user] presses one of the colorful buttons on [src], and the clown car spews out a cloud of laughing gas."))
|
||||
var/datum/reagents/funnychems = new/datum/reagents(300)
|
||||
funnychems.my_atom = src
|
||||
funnychems.add_reagent(/datum/reagent/consumable/superlaughter, 50)
|
||||
var/datum/effect_system/smoke_spread/chem/smoke = new()
|
||||
smoke.set_up(R, 4)
|
||||
smoke.set_up(funnychems, 4)
|
||||
smoke.attach(src)
|
||||
smoke.start()
|
||||
if(5)
|
||||
visible_message("<span class='danger'>[user] has pressed one of the colorful buttons on [src] and the clown car starts dropping an oil trail.</span>")
|
||||
droppingoil = TRUE
|
||||
addtimer(CALLBACK(src, .proc/StopDroppingOil), 30)
|
||||
visible_message(span_danger("[user] presses one of the colorful buttons on [src], and the clown car starts dropping an oil trail."))
|
||||
RegisterSignal(src, COMSIG_MOVABLE_MOVED, .proc/cover_in_oil)
|
||||
addtimer(CALLBACK(src, .proc/stop_dropping_oil), 3 SECONDS)
|
||||
if(6)
|
||||
visible_message("<span class='danger'>[user] has pressed one of the colorful buttons on [src] and the clown car lets out a comedic toot.</span>")
|
||||
visible_message(span_danger("[user] presses one of the colorful buttons on [src], and the clown car lets out a comedic toot."))
|
||||
playsound(src, 'sound/vehicles/clowncar_fart.ogg', 100)
|
||||
for(var/mob/living/L in orange(loc, 6))
|
||||
L.emote("laughs")
|
||||
for(var/mob/living/L in occupants)
|
||||
for(var/mob/living/L as anything in occupants)
|
||||
L.emote("laughs")
|
||||
|
||||
/obj/vehicle/sealed/car/clowncar/proc/ResetIcon()
|
||||
///resets the icon and iconstate of the clowncar after it was set to singulo states
|
||||
/obj/vehicle/sealed/car/clowncar/proc/reset_icon()
|
||||
icon = initial(icon)
|
||||
icon_state = initial(icon_state)
|
||||
|
||||
/obj/vehicle/sealed/car/clowncar/proc/StopDroppingOil()
|
||||
droppingoil = FALSE
|
||||
///Deploys oil when the clowncar moves in oil deploy mode
|
||||
/obj/vehicle/sealed/car/clowncar/proc/cover_in_oil()
|
||||
SIGNAL_HANDLER
|
||||
new /obj/effect/decal/cleanable/oil/slippery(loc)
|
||||
|
||||
///Stops dropping oil after the time has run up
|
||||
/obj/vehicle/sealed/car/clowncar/proc/stop_dropping_oil()
|
||||
UnregisterSignal(src, COMSIG_MOVABLE_MOVED)
|
||||
|
||||
///Toggles the on and off state of the clown cannon that shoots random kidnapped people
|
||||
/obj/vehicle/sealed/car/clowncar/proc/toggle_cannon(mob/user)
|
||||
if(cannonmode == CLOWN_CANNON_BUSY)
|
||||
to_chat(user, span_notice("Please wait for the vehicle to finish its current action first."))
|
||||
return
|
||||
if(cannonmode) //canon active, deactivate
|
||||
flick("clowncar_fromfire", src)
|
||||
icon_state = "clowncar"
|
||||
addtimer(CALLBACK(src, .proc/deactivate_cannon), 2 SECONDS)
|
||||
playsound(src, 'sound/vehicles/clowncar_cannonmode2.ogg', 75)
|
||||
visible_message(span_danger("The [src] starts going back into mobile mode."))
|
||||
else
|
||||
canmove = FALSE //anchor and activate canon
|
||||
flick("clowncar_tofire", src)
|
||||
icon_state = "clowncar_fire"
|
||||
visible_message(span_danger("The [src] opens up and reveals a large cannon."))
|
||||
addtimer(CALLBACK(src, .proc/activate_cannon), 2 SECONDS)
|
||||
playsound(src, 'sound/vehicles/clowncar_cannonmode1.ogg', 75)
|
||||
cannonmode = CLOWN_CANNON_BUSY
|
||||
|
||||
///Finalizes canon activation
|
||||
/obj/vehicle/sealed/car/clowncar/proc/activate_cannon()
|
||||
// mouse_pointer = 'icons/effects/mouse_pointers/mecha_mouse.dmi'
|
||||
cannonmode = CLOWN_CANNON_READY
|
||||
for(var/mob/living/driver as anything in return_controllers_with_flag(VEHICLE_CONTROL_DRIVE))
|
||||
driver.update_mouse_pointer()
|
||||
|
||||
///Finalizes canon deactivation
|
||||
/obj/vehicle/sealed/car/clowncar/proc/deactivate_cannon()
|
||||
canmove = TRUE
|
||||
// mouse_pointer = null
|
||||
cannonmode = CLOWN_CANNON_INACTIVE
|
||||
for(var/mob/living/driver as anything in return_controllers_with_flag(VEHICLE_CONTROL_DRIVE))
|
||||
driver.update_mouse_pointer()
|
||||
|
||||
///Fires the cannon where the user clicks
|
||||
/obj/vehicle/sealed/car/clowncar/proc/fire_cannon_at(mob/user, atom/A, params)
|
||||
SIGNAL_HANDLER
|
||||
if(cannonmode != CLOWN_CANNON_READY || !length(return_controllers_with_flag(VEHICLE_CONTROL_KIDNAPPED)))
|
||||
return NONE
|
||||
var/mob/living/unlucky_sod = pick(return_controllers_with_flag(VEHICLE_CONTROL_KIDNAPPED))
|
||||
mob_exit(unlucky_sod, TRUE)
|
||||
flick("clowncar_recoil", src)
|
||||
playsound(src, pick('sound/vehicles/carcannon1.ogg', 'sound/vehicles/carcannon2.ogg', 'sound/vehicles/carcannon3.ogg'), 75)
|
||||
unlucky_sod.throw_at(A, 10, 2)
|
||||
log_combat(user, unlucky_sod, "fired", src, "towards [A]") //this doesn't catch if the mob hits something between the car and the target
|
||||
return COMSIG_MOB_CANCEL_CLICKON
|
||||
|
||||
///Increments the thanks counter every time someone thats been kidnapped thanks the driver
|
||||
/obj/vehicle/sealed/car/clowncar/proc/increment_thanks_counter()
|
||||
thankscount++
|
||||
if(thankscount < 100)
|
||||
return
|
||||
for(var/mob/busdriver as anything in return_drivers())
|
||||
busdriver.client.give_award(/datum/award/achievement/misc/the_best_driver, busdriver)
|
||||
|
||||
/obj/vehicle/sealed/car/clowncar/twitch_plays
|
||||
key_type = null
|
||||
@@ -144,12 +244,10 @@
|
||||
/obj/vehicle/sealed/car/clowncar/twitch_plays/Initialize()
|
||||
. = ..()
|
||||
AddComponent(/datum/component/twitch_plays/simple_movement)
|
||||
START_PROCESSING(SSfastprocess, src)
|
||||
GLOB.poi_list |= src
|
||||
notify_ghosts("Twitch Plays: Clown Car")
|
||||
|
||||
/obj/vehicle/sealed/car/clowncar/twitch_plays/Destroy()
|
||||
STOP_PROCESSING(SSfastprocess, src)
|
||||
GLOB.poi_list -= src
|
||||
return ..()
|
||||
|
||||
@@ -158,3 +256,4 @@
|
||||
if(!dir)
|
||||
return
|
||||
driver_move(null, dir)
|
||||
..()
|
||||
|
||||
@@ -126,44 +126,70 @@
|
||||
desc = "Honk your classy horn."
|
||||
button_icon_state = "car_horn"
|
||||
var/hornsound = 'sound/items/carhorn.ogg'
|
||||
var/last_honk_time
|
||||
|
||||
/datum/action/vehicle/sealed/horn/Trigger()
|
||||
if(world.time - last_honk_time > 20)
|
||||
vehicle_entered_target.visible_message("<span class='danger'>[vehicle_entered_target] loudly honks</span>")
|
||||
to_chat(owner, "<span class='notice'>You press the vehicle's horn.</span>")
|
||||
playsound(vehicle_entered_target, hornsound, 75)
|
||||
last_honk_time = world.time
|
||||
if(TIMER_COOLDOWN_CHECK(src, COOLDOWN_CAR_HONK))
|
||||
return
|
||||
TIMER_COOLDOWN_START(src, COOLDOWN_CAR_HONK, 2 SECONDS)
|
||||
vehicle_entered_target.visible_message(span_danger("[vehicle_entered_target] loudly honks!"))
|
||||
to_chat(owner, span_notice("You press [vehicle_entered_target]'s horn."))
|
||||
if(istype(vehicle_target.inserted_key, /obj/item/bikehorn))
|
||||
vehicle_target.inserted_key.attack_self(owner) //The bikehorn plays a sound instead
|
||||
return
|
||||
playsound(vehicle_entered_target, hornsound, 75)
|
||||
|
||||
/datum/action/vehicle/sealed/horn/clowncar/Trigger()
|
||||
if(world.time - last_honk_time > 20)
|
||||
vehicle_entered_target.visible_message("<span class='danger'>[vehicle_entered_target] loudly honks</span>")
|
||||
to_chat(owner, "<span class='notice'>You press the vehicle's horn.</span>")
|
||||
last_honk_time = world.time
|
||||
if(vehicle_target.inserted_key)
|
||||
vehicle_target.inserted_key.attack_self(owner) //The key plays a sound
|
||||
else
|
||||
playsound(vehicle_entered_target, hornsound, 75)
|
||||
|
||||
/datum/action/vehicle/sealed/DumpKidnappedMobs
|
||||
name = "Dump kidnapped mobs"
|
||||
/datum/action/vehicle/sealed/dump_kidnapped_mobs
|
||||
name = "Dump Kidnapped Mobs"
|
||||
desc = "Dump all objects and people in your car on the floor."
|
||||
button_icon_state = "car_dump"
|
||||
|
||||
/datum/action/vehicle/sealed/DumpKidnappedMobs/Trigger()
|
||||
vehicle_entered_target.visible_message("<span class='danger'>[vehicle_entered_target] starts dumping the people inside of it.</span>")
|
||||
/datum/action/vehicle/sealed/dump_kidnapped_mobs/Trigger()
|
||||
vehicle_entered_target.visible_message(span_danger("[vehicle_entered_target] starts dumping the people inside of it."))
|
||||
vehicle_entered_target.DumpSpecificMobs(VEHICLE_CONTROL_KIDNAPPED)
|
||||
|
||||
|
||||
/datum/action/vehicle/sealed/RollTheDice
|
||||
name = "Press a colorful button"
|
||||
/datum/action/vehicle/sealed/roll_the_dice
|
||||
name = "Press Colorful Button"
|
||||
desc = "Press one of those colorful buttons on your display panel!"
|
||||
button_icon_state = "car_rtd"
|
||||
|
||||
/datum/action/vehicle/sealed/RollTheDice/Trigger()
|
||||
if(istype(vehicle_entered_target, /obj/vehicle/sealed/car/clowncar))
|
||||
var/obj/vehicle/sealed/car/clowncar/C = vehicle_entered_target
|
||||
C.RollTheDice(owner)
|
||||
/datum/action/vehicle/sealed/roll_the_dice/Trigger()
|
||||
if(!istype(vehicle_entered_target, /obj/vehicle/sealed/car/clowncar))
|
||||
return
|
||||
var/obj/vehicle/sealed/car/clowncar/C = vehicle_entered_target
|
||||
C.roll_the_dice(owner)
|
||||
|
||||
/datum/action/vehicle/sealed/cannon
|
||||
name = "Toggle Siege Mode"
|
||||
desc = "Destroy them with their own fodder!"
|
||||
button_icon_state = "car_cannon"
|
||||
|
||||
/datum/action/vehicle/sealed/cannon/Trigger()
|
||||
if(!istype(vehicle_entered_target, /obj/vehicle/sealed/car/clowncar))
|
||||
return
|
||||
var/obj/vehicle/sealed/car/clowncar/C = vehicle_entered_target
|
||||
C.toggle_cannon(owner)
|
||||
|
||||
|
||||
/datum/action/vehicle/sealed/thank
|
||||
name = "Thank the Clown Car Driver"
|
||||
desc = "They're just doing their job."
|
||||
button_icon_state = "car_thanktheclown"
|
||||
COOLDOWN_DECLARE(thank_time_cooldown)
|
||||
|
||||
|
||||
/datum/action/vehicle/sealed/thank/Trigger()
|
||||
if(!istype(vehicle_entered_target, /obj/vehicle/sealed/car/clowncar))
|
||||
return
|
||||
if(!COOLDOWN_FINISHED(src, thank_time_cooldown))
|
||||
return
|
||||
COOLDOWN_START(src, thank_time_cooldown, 6 SECONDS)
|
||||
var/obj/vehicle/sealed/car/clowncar/clown_car = vehicle_entered_target
|
||||
var/mob/living/carbon/human/clown = pick(clown_car.return_drivers())
|
||||
if(!clown)
|
||||
return
|
||||
owner.say("Thank you for the fun ride, [clown.name]!")
|
||||
clown_car.increment_thanks_counter()
|
||||
|
||||
|
||||
/datum/action/vehicle/ridden/scooter/skateboard/ollie
|
||||
@@ -197,7 +223,9 @@
|
||||
L.Move(landing_turf, vehicle_target.dir)
|
||||
passtable_off(L, VEHICLE_TRAIT)
|
||||
V.pass_flags &= ~PASSTABLE
|
||||
if(locate(/obj/structure/table) in V.loc.contents)
|
||||
if((locate(/obj/structure/table) in V.loc.contents) || (locate(/obj/structure/fluff/railing) in V.loc.contents))
|
||||
if(locate(/obj/structure/fluff/railing) in V.loc.contents)
|
||||
L.client.give_award(/datum/award/achievement/misc/tram_surfer, L)
|
||||
V.grinding = TRUE
|
||||
V.icon_state = "[V.board_icon]-grind"
|
||||
addtimer(CALLBACK(V, /obj/vehicle/ridden/scooter/skateboard/.proc/grind), 2)
|
||||
|
||||
@@ -15,9 +15,9 @@
|
||||
/obj/item/clothing/glasses/monocle = 3,
|
||||
/obj/item/clothing/suit/jacket = 4,
|
||||
/obj/item/clothing/suit/jacket/flannel = 4,
|
||||
/obj/item/clothing/suit/jacket/flannel/red = 4,
|
||||
/obj/item/clothing/suit/jacket/flannel/aqua = 4,
|
||||
/obj/item/clothing/suit/jacket/flannel/brown = 4,
|
||||
/obj/item/clothing/suit/toggle/jacket/flannel/red = 4,
|
||||
/obj/item/clothing/suit/toggle/jacket/flannel/aqua = 4,
|
||||
/obj/item/clothing/suit/toggle/jacket/flannel/brown = 4,
|
||||
/obj/item/clothing/suit/jacket/puffer/vest = 4,
|
||||
/obj/item/clothing/suit/jacket/puffer = 4,
|
||||
/obj/item/clothing/suit/hooded/cloak/david = 4,
|
||||
@@ -219,7 +219,17 @@
|
||||
/obj/item/clothing/under/misc/corporateuniform = 5,
|
||||
/obj/item/clothing/suit/hooded/wintercoat/polychromic = 5,
|
||||
/obj/item/clothing/suit/toggle/wbreakpoly/polychromic = 5,
|
||||
/obj/item/clothing/shoes/sneakers/poly/polychromic = 10)
|
||||
/obj/item/clothing/shoes/sneakers/poly/polychromic = 10,
|
||||
/obj/item/clothing/suit/toggle/jacket/fancytrench = 4,
|
||||
/obj/item/clothing/suit/toggle/jacket/greenjacket = 4,
|
||||
/obj/item/clothing/suit/jacket/gentlecoat = 4,
|
||||
/obj/item/clothing/suit/jacket/gothicshirtcross = 4,
|
||||
/obj/item/clothing/suit/jacket/gothicshirt = 4,
|
||||
/obj/item/clothing/suit/jacket/gothiccoat = 4,
|
||||
/obj/item/clothing/suit/jacket/heartcoat = 4,
|
||||
/obj/item/clothing/suit/jacket/purplehoodie = 4,
|
||||
/obj/item/clothing/suit/jacket/bluehoodie = 4,
|
||||
/obj/item/clothing/suit/toggle/jacket/whitehoodie = 4)
|
||||
refill_canister = /obj/item/vending_refill/clothing
|
||||
default_price = PRICE_CHEAP
|
||||
extra_price = PRICE_BELOW_NORMAL
|
||||
|
||||
@@ -10,7 +10,9 @@
|
||||
/obj/item/toy/cards/deck/unum = 3,
|
||||
/obj/item/cardpack/series_one = 10,
|
||||
/obj/item/dyespray=3,
|
||||
/obj/item/tcgcard_binder = 5)
|
||||
/obj/item/tcgcard_binder = 5,
|
||||
/obj/item/canvas = 3,
|
||||
/obj/item/toy/crayon/spraycan = 3)
|
||||
contraband = list(/obj/item/dice/fudge = 9)
|
||||
premium = list(/obj/item/melee/skateboard/pro = 3,
|
||||
/obj/item/melee/skateboard/hoverboard = 1)
|
||||
|
||||
@@ -53,3 +53,4 @@
|
||||
#_maps/RandomRuins/SpaceRuins/spacehermit.dmm
|
||||
#_maps/RandomRuins/SpaceRuins/advancedlab.dmm
|
||||
#_maps/RandomRuins/SpaceRuins/spacediner.dmm
|
||||
#_maps/RandomRuins/SpaceRuins/skelter.dmm
|
||||
|
||||
+95
-64
@@ -50,6 +50,101 @@
|
||||
-->
|
||||
<div class="commit sansserif">
|
||||
|
||||
<h2 class="date">30 September 2021</h2>
|
||||
<h3 class="author">Hatterhat updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="rscdel">The xenomorph infestation on Moon Outpost 19 is significantly less prone to outbreaks, theoretically.</li>
|
||||
</ul>
|
||||
<h3 class="author">Putnam3145 updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="rscdel">Minesweeper's "play on same board"</li>
|
||||
</ul>
|
||||
|
||||
<h2 class="date">29 September 2021</h2>
|
||||
<h3 class="author">Ghommie updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="rscdel">Animals are no loner n(e)igh-immune to stuttering.</li>
|
||||
<li class="bugfix">Silicons and animals won't keep stuttering or slurring forever after being struck by something that made them like that in the first place (such as a Blue Space Artillery).</li>
|
||||
</ul>
|
||||
<h3 class="author">Hatterhat updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="balance">Reports from other stations' Wardens blasting themselves in sensitive places due to mishandled firearms has led to the introduction of a folding-stock safety for their shotgun, rendering it inoperable while the stock is folded.</li>
|
||||
<li class="balance">Compact combat shotguns now stay compact when stored, by virtue of being unable to be extended while in a bag.</li>
|
||||
<li class="balance">Reloading a shotgun with a shell clip now inflicts melee click delay.</li>
|
||||
</ul>
|
||||
<h3 class="author">LetterN updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="rscadd">clowncar railgun- i mean gun</li>
|
||||
<li class="rscadd">more achivements</li>
|
||||
<li class="rscadd">syndie carp can pick up the disky (and is smart now)</li>
|
||||
<li class="code_imp">hooks most of the achivements, all of the heretics work now</li>
|
||||
</ul>
|
||||
<h3 class="author">Putnam3145 updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="bugfix">Lavaland can no longer be too cold for its natives to surivive</li>
|
||||
</ul>
|
||||
<h3 class="author">buffyuwu updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="bugfix">flannels can now be toggled in style from buttoned to unbuttoned</li>
|
||||
<li class="rscadd">ports more rp and existing tg assets with minor edits into loadout selection</li>
|
||||
</ul>
|
||||
<h3 class="author">keronshb updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="refactor">Ninja status back in the status menu</li>
|
||||
</ul>
|
||||
<h3 class="author">zeroisthebiggay updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="bugfix">the monkey shuttle brig</li>
|
||||
<li class="rscadd">meta gets a prison</li>
|
||||
<li class="bugfix">the floating fire extinguisher</li>
|
||||
<li class="balance">fucks the motivation's cost.</li>
|
||||
<li class="soundadd">a new maintenance ambience</li>
|
||||
</ul>
|
||||
|
||||
<h2 class="date">28 September 2021</h2>
|
||||
<h3 class="author">zeroisthebiggay updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="balance">helter skelter loot insanity</li>
|
||||
<li class="bugfix">helter skelter comms insanity</li>
|
||||
</ul>
|
||||
|
||||
<h2 class="date">27 September 2021</h2>
|
||||
<h3 class="author">zeroisthebiggay updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="bugfix">helter skelter actually spawns</li>
|
||||
<li class="bugfix">code\modules\mob\living\simple_animal\hostile\plaguerat.dm:139:warning: newmouse: variable defined but not used</li>
|
||||
</ul>
|
||||
|
||||
<h2 class="date">25 September 2021</h2>
|
||||
<h3 class="author">buffyuwu updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="bugfix">fixes accordions</li>
|
||||
</ul>
|
||||
|
||||
<h2 class="date">24 September 2021</h2>
|
||||
<h3 class="author">zeroisthebiggay updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="balance">gremlins become shock immune</li>
|
||||
</ul>
|
||||
|
||||
<h2 class="date">23 September 2021</h2>
|
||||
<h3 class="author">KrabSpider updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="code_imp">cryogenics ain't a candidate for anomaly spawns anymore.</li>
|
||||
</ul>
|
||||
<h3 class="author">buffyuwu updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="rscadd">canvas and spray can are now sold in the fun vendor</li>
|
||||
</ul>
|
||||
|
||||
<h2 class="date">22 September 2021</h2>
|
||||
<h3 class="author">silicons updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="bugfix">dice bags can only hold dice</li>
|
||||
<li class="rscdel">limb damage changes reverted</li>
|
||||
<li class="bugfix">crawling can't be adrenals'd</li>
|
||||
</ul>
|
||||
|
||||
<h2 class="date">20 September 2021</h2>
|
||||
<h3 class="author">BlueWildrose updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
@@ -472,70 +567,6 @@
|
||||
<li class="rscadd">Decorative (read: Station-safe) water tile in the code</li>
|
||||
<li class="bugfix">Pubby's new water feature wont kill atmosphere anymore</li>
|
||||
</ul>
|
||||
|
||||
<h2 class="date">31 July 2021</h2>
|
||||
<h3 class="author">MrJWhit updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="bugfix">Fixes some minor mistakes around space near boxstation.</li>
|
||||
</ul>
|
||||
<h3 class="author">TripleShades updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="rscadd">Fountain area to public mining station-side tweak: Moved around the tables and chairs and monitor at public mining station-side</li>
|
||||
</ul>
|
||||
<h3 class="author">WanderingFox95 updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="rscadd">Added new ruin maps: The Bathhouse, The Library, The Engineering outpost, The Hotsprings(un-cursed), Lust, Wrath and an alternate spawn for the BDM in the form of a mining outpost, based on the same Ruins on the Ice Moon. removed: A lot of the fun items within the ice moon-based ruins that would break mining even more and trading cards.</li>
|
||||
<li class="balance">Yes, this includes that the lavaland version of the hot spring is literally just water and not cursed. tweak: Also "fixed" that only one version of the BDM ruin ever spawns. Not sure it needed fixing but even locally hosted, only blooddrunk2.dmm would spawn. Since I added another spawn for the BDM, I fixed that too.</li>
|
||||
</ul>
|
||||
|
||||
<h2 class="date">29 July 2021</h2>
|
||||
<h3 class="author">EmeraldSundisk updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="rscadd">Adds decals between Virology and the general Medbay to provide clarity</li>
|
||||
<li class="rscadd">Adds an airlock with access to the Engineering Cooling Loop</li>
|
||||
<li class="rscadd">The Maintenance Theater now has a suitable amount of dust</li>
|
||||
<li class="rscdel">Removed an errant entertainment monitor left in the morgue</li>
|
||||
<li class="rscdel">Removed redundant scrubber piping in and around the bar and kitchen tweak: Slightly readjusts an airpipe to take advantage of newfound space tweak: The Toxins Lab has received (predominantly) visual adjustments as to render it more in line with the general science department tweak: Toxins Storage is no longer its own area and as such needn't worry about APCs</li>
|
||||
<li class="bugfix">Hydroponics now has a proper APC as intended</li>
|
||||
</ul>
|
||||
|
||||
<h2 class="date">27 July 2021</h2>
|
||||
<h3 class="author">Putnam3145 updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="bugfix">Generic fires work now</li>
|
||||
<li class="balance">A knock-on effect of the HE pipe change is that space cooling is ~8.4x as powerful</li>
|
||||
</ul>
|
||||
|
||||
<h2 class="date">26 July 2021</h2>
|
||||
<h3 class="author">SandPoot updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="rscdel">Removes a sneaky transform button on the vore panel.</li>
|
||||
</ul>
|
||||
|
||||
<h2 class="date">24 July 2021</h2>
|
||||
<h3 class="author">MrJWhit updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="rscadd">Replaces the northwest maint room on box with a sadness room</li>
|
||||
<li class="rscadd">Replaces bar stripper room with an arcade on boxstation</li>
|
||||
<li class="rscadd">Squished the west bathrooms a bit and made a room to sell things on boxstation.</li>
|
||||
<li class="balance">Southeast maint hallway on box is now ziggy and zaggier.</li>
|
||||
<li class="bugfix">Fixed pipes being not connected with the recent map PR for boxstation.</li>
|
||||
</ul>
|
||||
<h3 class="author">Putnam3145 updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="bugfix">hallucination now bottoms out at 0</li>
|
||||
<li class="balance">supermatter now causes only half the hallucinations</li>
|
||||
</ul>
|
||||
<h3 class="author">cadyn updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="server">auxmos bump for dependencies.sh</li>
|
||||
</ul>
|
||||
|
||||
<h2 class="date">23 July 2021</h2>
|
||||
<h3 class="author">silicons updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="balance">Batons are slightly more powerful.</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<b>GoonStation 13 Development Team</b>
|
||||
|
||||
@@ -30058,3 +30058,65 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py.
|
||||
- rscdel: old tips
|
||||
- imageadd: all medipens get inhands
|
||||
- rscadd: some more brainhurt lines
|
||||
2021-09-22:
|
||||
silicons:
|
||||
- bugfix: dice bags can only hold dice
|
||||
- rscdel: limb damage changes reverted
|
||||
- bugfix: crawling can't be adrenals'd
|
||||
2021-09-23:
|
||||
KrabSpider:
|
||||
- code_imp: cryogenics ain't a candidate for anomaly spawns anymore.
|
||||
buffyuwu:
|
||||
- rscadd: canvas and spray can are now sold in the fun vendor
|
||||
2021-09-24:
|
||||
zeroisthebiggay:
|
||||
- balance: gremlins become shock immune
|
||||
2021-09-25:
|
||||
buffyuwu:
|
||||
- bugfix: fixes accordions
|
||||
2021-09-27:
|
||||
zeroisthebiggay:
|
||||
- bugfix: helter skelter actually spawns
|
||||
- bugfix: 'code\modules\mob\living\simple_animal\hostile\plaguerat.dm:139:warning:
|
||||
newmouse: variable defined but not used'
|
||||
2021-09-28:
|
||||
zeroisthebiggay:
|
||||
- balance: helter skelter loot insanity
|
||||
- bugfix: helter skelter comms insanity
|
||||
2021-09-29:
|
||||
Ghommie:
|
||||
- rscdel: Animals are no loner n(e)igh-immune to stuttering.
|
||||
- bugfix: Silicons and animals won't keep stuttering or slurring forever after being
|
||||
struck by something that made them like that in the first place (such as a Blue
|
||||
Space Artillery).
|
||||
Hatterhat:
|
||||
- balance: Reports from other stations' Wardens blasting themselves in sensitive
|
||||
places due to mishandled firearms has led to the introduction of a folding-stock
|
||||
safety for their shotgun, rendering it inoperable while the stock is folded.
|
||||
- balance: Compact combat shotguns now stay compact when stored, by virtue of being
|
||||
unable to be extended while in a bag.
|
||||
- balance: Reloading a shotgun with a shell clip now inflicts melee click delay.
|
||||
LetterN:
|
||||
- rscadd: clowncar railgun- i mean gun
|
||||
- rscadd: more achivements
|
||||
- rscadd: syndie carp can pick up the disky (and is smart now)
|
||||
- code_imp: hooks most of the achivements, all of the heretics work now
|
||||
Putnam3145:
|
||||
- bugfix: Lavaland can no longer be too cold for its natives to surivive
|
||||
buffyuwu:
|
||||
- bugfix: flannels can now be toggled in style from buttoned to unbuttoned
|
||||
- rscadd: ports more rp and existing tg assets with minor edits into loadout selection
|
||||
keronshb:
|
||||
- refactor: Ninja status back in the status menu
|
||||
zeroisthebiggay:
|
||||
- bugfix: the monkey shuttle brig
|
||||
- rscadd: meta gets a prison
|
||||
- bugfix: the floating fire extinguisher
|
||||
- balance: fucks the motivation's cost.
|
||||
- soundadd: a new maintenance ambience
|
||||
2021-09-30:
|
||||
Hatterhat:
|
||||
- rscdel: The xenomorph infestation on Moon Outpost 19 is significantly less prone
|
||||
to outbreaks, theoretically.
|
||||
Putnam3145:
|
||||
- rscdel: Minesweeper's "play on same board"
|
||||
|
||||
@@ -1,4 +0,0 @@
|
||||
author: "silicons"
|
||||
delete-after: True
|
||||
changes:
|
||||
- bugfix: "dice bags can only hold dice"
|
||||
@@ -1,4 +0,0 @@
|
||||
author: "silicons"
|
||||
delete-after: True
|
||||
changes:
|
||||
- rscdel: "limb damage changes reverted"
|
||||
@@ -1,4 +0,0 @@
|
||||
author: "silicons"
|
||||
delete-after: True
|
||||
changes:
|
||||
- bugfix: "crawling can't be adrenals'd"
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 473 KiB After Width: | Height: | Size: 488 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 170 KiB After Width: | Height: | Size: 178 KiB |
@@ -27,22 +27,22 @@
|
||||
|
||||
/datum/gear/suit/jacketflannelblack // all of these are reskins of bomber jackets but with the vibe to make you look like a true lumberjack
|
||||
name = "Black flannel jacket"
|
||||
path = /obj/item/clothing/suit/jacket/flannel
|
||||
path = /obj/item/clothing/suit/toggle/jacket/flannel
|
||||
subcategory = LOADOUT_SUBCATEGORY_SUIT_JACKETS
|
||||
|
||||
/datum/gear/suit/jacketflannelred
|
||||
name = "Red flannel jacket"
|
||||
path = /obj/item/clothing/suit/jacket/flannel/red
|
||||
path = /obj/item/clothing/suit/toggle/jacket/flannel/red
|
||||
subcategory = LOADOUT_SUBCATEGORY_SUIT_JACKETS
|
||||
|
||||
/datum/gear/suit/jacketflannelaqua
|
||||
name = "Aqua flannel jacket"
|
||||
path = /obj/item/clothing/suit/jacket/flannel/aqua
|
||||
path = /obj/item/clothing/suit/toggle/jacket/flannel/aqua
|
||||
subcategory = LOADOUT_SUBCATEGORY_SUIT_JACKETS
|
||||
|
||||
/datum/gear/suit/jacketflannelbrown
|
||||
name = "Brown flannel jacket"
|
||||
path = /obj/item/clothing/suit/jacket/flannel/brown
|
||||
path = /obj/item/clothing/suit/toggle/jacket/flannel/brown
|
||||
subcategory = LOADOUT_SUBCATEGORY_SUIT_JACKETS
|
||||
|
||||
/datum/gear/suit/jacketleather
|
||||
@@ -97,6 +97,12 @@
|
||||
name = "Brass winter coat"
|
||||
path = /obj/item/clothing/suit/hooded/wintercoat/ratvar/fake
|
||||
|
||||
/datum/gear/suit/whitehoodie
|
||||
name = "Soft hoodie"
|
||||
path = /obj/item/clothing/suit/toggle/jacket/whitehoodie
|
||||
loadout_flags = LOADOUT_CAN_NAME | LOADOUT_CAN_DESCRIPTION
|
||||
subcategory = LOADOUT_SUBCATEGORY_SUIT_JACKETS
|
||||
|
||||
/datum/gear/suit/jacketbluehoodie
|
||||
name = "Blue hoodie"
|
||||
path = /obj/item/clothing/suit/jacket/bluehoodie
|
||||
@@ -132,6 +138,25 @@
|
||||
loadout_flags = LOADOUT_CAN_NAME | LOADOUT_CAN_DESCRIPTION
|
||||
subcategory = LOADOUT_SUBCATEGORY_SUIT_GENERAL
|
||||
|
||||
/datum/gear/suit/gentlecoat
|
||||
name = "Grey coat"
|
||||
path = /obj/item/clothing/suit/jacket/gentlecoat
|
||||
loadout_flags = LOADOUT_CAN_NAME | LOADOUT_CAN_DESCRIPTION
|
||||
subcategory = LOADOUT_SUBCATEGORY_SUIT_COATS
|
||||
|
||||
/datum/gear/suit/greenjacket
|
||||
name = "Green outdoorsman jacket"
|
||||
path = /obj/item/clothing/suit/toggle/jacket/greenjacket
|
||||
loadout_flags = LOADOUT_CAN_NAME | LOADOUT_CAN_DESCRIPTION
|
||||
subcategory = LOADOUT_SUBCATEGORY_SUIT_JACKETS
|
||||
|
||||
/datum/gear/suit/fancytrench
|
||||
name = "Grey trenchcoat"
|
||||
path = /obj/item/clothing/suit/toggle/jacket/fancytrench
|
||||
loadout_flags = LOADOUT_CAN_NAME | LOADOUT_CAN_DESCRIPTION
|
||||
subcategory = LOADOUT_SUBCATEGORY_SUIT_COATS
|
||||
|
||||
|
||||
/datum/gear/suit/coat/polycoat
|
||||
name = "Polychromic winter coat"
|
||||
path = /obj/item/clothing/suit/hooded/wintercoat/polychromic
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+4
-2
@@ -458,6 +458,8 @@
|
||||
#include "code\datums\achievements\_awards.dm"
|
||||
#include "code\datums\achievements\boss_achievements.dm"
|
||||
#include "code\datums\achievements\boss_scores.dm"
|
||||
#include "code\datums\achievements\job_achievements.dm"
|
||||
#include "code\datums\achievements\job_scores.dm"
|
||||
#include "code\datums\achievements\mafia_achievements.dm"
|
||||
#include "code\datums\achievements\misc_achievements.dm"
|
||||
#include "code\datums\achievements\misc_scores.dm"
|
||||
@@ -1759,8 +1761,8 @@
|
||||
#include "code\modules\antagonists\slaughter\slaughter.dm"
|
||||
#include "code\modules\antagonists\slaughter\slaughter_antag.dm"
|
||||
#include "code\modules\antagonists\slaughter\slaughterevent.dm"
|
||||
#include "code\modules\antagonists\space_ninja\space_ninja.dm"
|
||||
#include "code\modules\antagonists\space_dragon\space_dragon.dm"
|
||||
#include "code\modules\antagonists\space_ninja\space_ninja.dm"
|
||||
#include "code\modules\antagonists\survivalist\survivalist.dm"
|
||||
#include "code\modules\antagonists\swarmer\swarmer.dm"
|
||||
#include "code\modules\antagonists\swarmer\swarmer_event.dm"
|
||||
@@ -2132,8 +2134,8 @@
|
||||
#include "code\modules\events\radiation_storm.dm"
|
||||
#include "code\modules\events\sentience.dm"
|
||||
#include "code\modules\events\shuttle_loan.dm"
|
||||
#include "code\modules\events\space_ninja.dm"
|
||||
#include "code\modules\events\space_dragon.dm"
|
||||
#include "code\modules\events\space_ninja.dm"
|
||||
#include "code\modules\events\spacevine.dm"
|
||||
#include "code\modules\events\spider_infestation.dm"
|
||||
#include "code\modules\events\spontaneous_appendicitis.dm"
|
||||
|
||||
Reference in New Issue
Block a user