Merge branch 'master' of https://github.com/Citadel-Station-13/Citadel-Station-13 into tgui-alerts-and-what-not

This commit is contained in:
SandPoot
2021-10-16 14:11:00 -03:00
30 changed files with 8625 additions and 7826 deletions
+115 -43
View File
@@ -5636,6 +5636,7 @@
"akL" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/machinery/meter,
/obj/structure/closet/firecloset,
/turf/open/floor/plating,
/area/maintenance/fore)
"akM" = (
@@ -7654,14 +7655,6 @@
/obj/structure/disposalpipe/segment{
dir = 4
},
/obj/machinery/power/apc{
areastring = "/area/commons/fitness";
name = "Fitness Room APC";
pixel_y = -24
},
/obj/structure/cable{
icon_state = "0-8"
},
/turf/open/floor/plating,
/area/maintenance/fore/secondary)
"apv" = (
@@ -11734,6 +11727,14 @@
/area/commons/dorms)
"aAo" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/machinery/power/apc{
areastring = "/area/commons/fitness";
name = "Fitness Room APC";
pixel_y = -24
},
/obj/structure/cable{
icon_state = "0-8"
},
/turf/open/floor/plasteel/dark,
/area/commons/dorms)
"aAp" = (
@@ -11743,6 +11744,9 @@
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
dir = 4
},
/obj/structure/cable{
icon_state = "2-4"
},
/turf/open/floor/plasteel,
/area/commons/dorms)
"aAr" = (
@@ -13044,6 +13048,10 @@
/obj/machinery/door/firedoor,
/turf/open/floor/mineral/titanium/blue,
/area/commons/toilet)
"aDW" = (
/obj/structure/loot_pile/maint,
/turf/open/floor/plasteel,
/area/cargo/warehouse)
"aDZ" = (
/obj/structure/cable{
icon_state = "4-8"
@@ -16620,10 +16628,10 @@
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
"aOg" = (
/obj/structure/closet/emcloset,
/obj/effect/turf_decal/stripes/line{
dir = 5
},
/obj/structure/closet/firecloset,
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
"aOh" = (
@@ -21423,10 +21431,10 @@
/turf/open/floor/plasteel,
/area/hallway/secondary/exit)
"baF" = (
/obj/structure/closet/emcloset,
/obj/effect/turf_decal/stripes/line{
dir = 9
},
/obj/structure/closet/firecloset,
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
"baG" = (
@@ -23427,8 +23435,8 @@
/turf/open/floor/plasteel,
/area/hallway/secondary/exit)
"bgg" = (
/obj/structure/closet/emcloset,
/obj/effect/turf_decal/stripes/line,
/obj/structure/closet/firecloset,
/turf/open/floor/plasteel,
/area/hallway/secondary/exit)
"bgh" = (
@@ -25073,11 +25081,11 @@
/turf/open/floor/plasteel/white,
/area/science/research)
"bkj" = (
/obj/structure/closet/emcloset,
/obj/machinery/airalarm{
pixel_y = 24
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/structure/closet/firecloset,
/turf/open/floor/plasteel,
/area/cargo/storage)
"bkk" = (
@@ -25803,6 +25811,7 @@
/obj/machinery/light/small{
dir = 1
},
/obj/structure/loot_pile/maint,
/turf/open/floor/plating,
/area/maintenance/starboard/aft)
"blR" = (
@@ -33256,11 +33265,7 @@
/turf/open/floor/engine,
/area/science/storage)
"bDg" = (
/obj/structure/rack,
/obj/effect/spawner/lootdrop/maintenance{
lootcount = 3;
name = "3maintenance loot spawner"
},
/obj/structure/loot_pile/maint,
/turf/open/floor/plating,
/area/maintenance/starboard)
"bDh" = (
@@ -35075,6 +35080,7 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
/obj/effect/spawner/lootdrop/maintenance,
/turf/open/floor/plating,
/area/maintenance/aft)
"bHp" = (
@@ -46846,8 +46852,7 @@
/turf/open/floor/plating,
/area/maintenance/aft)
"cmo" = (
/obj/structure/rack,
/obj/effect/spawner/lootdrop/maintenance,
/obj/structure/loot_pile/maint,
/turf/open/floor/plating,
/area/maintenance/starboard/aft)
"cmq" = (
@@ -50917,6 +50922,7 @@
/obj/structure/disposalpipe/segment{
dir = 4
},
/obj/structure/loot_pile/maint,
/turf/open/floor/plating,
/area/maintenance/aft)
"cBE" = (
@@ -51909,6 +51915,13 @@
},
/turf/open/floor/plating,
/area/maintenance/starboard/aft)
"cPO" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
/obj/structure/loot_pile/maint,
/turf/open/floor/plating,
/area/maintenance/port/fore)
"cQw" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
@@ -52419,7 +52432,6 @@
/turf/open/floor/plasteel,
/area/engineering/atmos)
"dbb" = (
/obj/structure/lattice,
/obj/machinery/atmospherics/components/unary/relief_valve/atmos/atmos_waste{
dir = 1
},
@@ -52866,6 +52878,7 @@
/obj/machinery/light/small{
dir = 4
},
/obj/structure/loot_pile/maint,
/turf/open/floor/plating,
/area/maintenance/fore)
"dPs" = (
@@ -55457,6 +55470,10 @@
},
/turf/closed/wall,
/area/commons/dorms)
"hmT" = (
/obj/structure/loot_pile/maint,
/turf/open/floor/plating,
/area/maintenance/port)
"hnc" = (
/obj/structure/chair/pew/left{
dir = 4
@@ -55579,6 +55596,10 @@
/obj/machinery/atmospherics/pipe/simple/green/visible,
/turf/open/floor/plating,
/area/engineering/atmos)
"hyY" = (
/obj/structure/loot_pile/maint,
/turf/open/floor/plating,
/area/maintenance/starboard/fore)
"hzs" = (
/obj/effect/turf_decal/bot,
/obj/machinery/plate_press,
@@ -56988,6 +57009,13 @@
},
/turf/open/floor/plasteel,
/area/security/prison)
"jNT" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
/obj/structure/loot_pile/maint,
/turf/open/floor/plating,
/area/maintenance/aft)
"jOB" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
@@ -57171,6 +57199,13 @@
},
/turf/open/floor/plasteel,
/area/security/brig)
"kbO" = (
/obj/effect/turf_decal/tile/red{
dir = 8
},
/obj/structure/closet/firecloset,
/turf/open/floor/plasteel,
/area/hallway/primary/fore)
"kcx" = (
/obj/structure/lattice,
/obj/machinery/atmospherics/pipe/simple/dark/visible,
@@ -59356,6 +59391,7 @@
/obj/structure/sign/poster/official/fruit_bowl{
pixel_y = 32
},
/obj/structure/closet/firecloset,
/turf/open/floor/plasteel/white/corner{
dir = 1
},
@@ -59640,11 +59676,7 @@
/turf/open/floor/plasteel/dark,
/area/security/prison/cells)
"nkP" = (
/obj/structure/rack,
/obj/effect/spawner/lootdrop/maintenance{
lootcount = 8;
name = "8maintenance loot spawner"
},
/obj/structure/loot_pile/maint,
/turf/open/floor/plating,
/area/maintenance/port/aft)
"nmZ" = (
@@ -59821,6 +59853,14 @@
},
/turf/closed/wall,
/area/maintenance/disposal/incinerator)
"nzX" = (
/obj/effect/spawner/lootdrop/maintenance{
lootcount = 8;
name = "8maintenance loot spawner"
},
/obj/structure/rack,
/turf/open/floor/plating,
/area/maintenance/port/aft)
"nBI" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
@@ -60155,6 +60195,10 @@
/obj/machinery/vending/kink,
/turf/open/floor/plating,
/area/maintenance/bar)
"odV" = (
/obj/structure/loot_pile/maint,
/turf/open/floor/plating,
/area/maintenance/fore/secondary)
"ofj" = (
/obj/machinery/smartfridge/organ/preloaded,
/turf/closed/wall,
@@ -60729,6 +60773,10 @@
"pgf" = (
/turf/open/floor/mineral/titanium/blue,
/area/commons/dorms)
"pgl" = (
/obj/structure/closet/firecloset,
/turf/open/floor/plasteel,
/area/hallway/primary/port)
"pgn" = (
/obj/effect/turf_decal/stripes/line{
dir = 8
@@ -62140,6 +62188,11 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/open/floor/plasteel,
/area/security/processing)
"rla" = (
/obj/effect/turf_decal/stripes/line,
/obj/structure/closet/firecloset,
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
"rmN" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 6
@@ -64398,6 +64451,9 @@
/obj/structure/disposalpipe/sorting/mail{
sortType = 26
},
/obj/structure/cable{
icon_state = "1-2"
},
/turf/open/floor/plasteel,
/area/commons/dorms)
"uys" = (
@@ -65387,6 +65443,10 @@
/obj/machinery/atmospherics/pipe/simple/dark/visible,
/turf/open/space,
/area/space/nearstation)
"vPd" = (
/obj/structure/loot_pile/maint,
/turf/open/floor/plating,
/area/maintenance/port/fore)
"vPs" = (
/obj/structure/lattice/catwalk,
/obj/structure/cable{
@@ -65577,6 +65637,13 @@
/obj/item/assembly/signaler,
/turf/open/floor/plating,
/area/maintenance/bar)
"wgo" = (
/obj/effect/turf_decal/stripes/line{
dir = 10
},
/obj/structure/closet/firecloset,
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
"wgu" = (
/obj/machinery/door/airlock/maintenance{
name = "Permabrig Maintenance";
@@ -65594,6 +65661,11 @@
},
/turf/open/floor/plasteel,
/area/commons/fitness/pool)
"wiR" = (
/obj/effect/landmark/event_spawn,
/obj/structure/loot_pile/maint,
/turf/open/floor/plating,
/area/maintenance/port/fore)
"wjd" = (
/obj/effect/turf_decal/stripes/line,
/obj/structure/table,
@@ -77093,7 +77165,7 @@ awW
awZ
aym
azz
aAF
wgo
awW
aaa
aaa
@@ -77326,7 +77398,7 @@ apJ
awZ
aIK
ayl
aAE
rla
awW
aaa
aaa
@@ -82463,7 +82535,7 @@ cCs
ann
ann
hCn
arH
cwS
ayh
azi
aAx
@@ -82481,7 +82553,7 @@ aPz
aPz
aPz
aPz
aSg
hmT
aWj
aXP
aZr
@@ -83485,7 +83557,7 @@ anH
oCF
amC
anJ
aFJ
wiR
alU
axK
azG
@@ -84803,7 +84875,7 @@ aQN
fRe
qSo
aPA
bgt
hmT
bhS
bjk
aPz
@@ -85290,7 +85362,7 @@ alU
alU
alU
alU
ntt
cPO
amC
avW
gYo
@@ -87587,7 +87659,7 @@ aaa
ali
aoo
avY
amC
vPd
gsM
sCa
aoX
@@ -88179,7 +88251,7 @@ bCq
bVE
bWz
bHE
bHE
nkP
bLu
bCq
bLu
@@ -88909,7 +88981,7 @@ aTJ
aPK
aWA
aWC
baS
aDW
aZI
baS
cCn
@@ -89930,7 +90002,7 @@ aKc
aLp
aMV
aOy
aLE
pgl
aPQ
aRV
aSW
@@ -90481,7 +90553,7 @@ bHD
bJe
bCq
nkP
bHE
nzX
bHE
bHE
bHE
@@ -91963,7 +92035,7 @@ nbY
aiX
iRj
anz
aov
kbO
cCi
apU
ajd
@@ -101722,7 +101794,7 @@ uhm
ahn
aiA
ahn
grc
odV
anE
aod
ahn
@@ -107955,7 +108027,7 @@ bFH
bHb
bIw
bBN
bKT
jNT
bMb
bNd
bOt
@@ -110989,7 +111061,7 @@ alP
anf
anf
alP
anf
hyY
anf
apE
anf
@@ -115438,7 +115510,7 @@ clt
cQw
cCt
cOe
cOe
cmo
cNW
aaa
aaS
@@ -116696,7 +116768,7 @@ bKc
cNW
bMB
bNA
cOe
cmo
bSl
bUq
flc
+83 -14
View File
@@ -3715,6 +3715,7 @@
"alM" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/delivery,
/obj/structure/loot_pile/maint,
/turf/open/floor/plasteel,
/area/maintenance/starboard/fore)
"alN" = (
@@ -8243,6 +8244,7 @@
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
/obj/structure/loot_pile/maint,
/turf/open/floor/plasteel,
/area/maintenance/port/fore)
"aCE" = (
@@ -13713,8 +13715,8 @@
},
/turf/open/floor/plating{
initial_gas_mix = "o2=0.01;n2=0.01";
luminosity = 2;
initial_temperature = 2.7
initial_temperature = 2.7;
luminosity = 2
},
/area/security/prison)
"ban" = (
@@ -14376,8 +14378,8 @@
},
/turf/open/floor/plating{
initial_gas_mix = "o2=0.01;n2=0.01";
luminosity = 2;
initial_temperature = 2.7
initial_temperature = 2.7;
luminosity = 2
},
/area/security/prison)
"bdo" = (
@@ -31965,6 +31967,7 @@
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
/obj/structure/loot_pile/maint,
/turf/open/floor/plasteel,
/area/maintenance/starboard)
"clv" = (
@@ -35124,6 +35127,7 @@
"cuI" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/tile/red,
/obj/structure/loot_pile/maint,
/turf/open/floor/plasteel,
/area/maintenance/starboard)
"cuJ" = (
@@ -36310,6 +36314,12 @@
},
/turf/open/floor/plasteel,
/area/maintenance/port)
"cCK" = (
/obj/effect/decal/cleanable/dirt,
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/structure/loot_pile/maint,
/turf/open/floor/plating,
/area/maintenance/port/aft)
"cCM" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
@@ -38007,6 +38017,7 @@
/obj/machinery/light/small{
dir = 8
},
/obj/structure/loot_pile/maint,
/turf/open/floor/plating,
/area/maintenance/port)
"cLM" = (
@@ -38752,6 +38763,7 @@
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
/obj/structure/loot_pile/maint,
/turf/open/floor/plasteel,
/area/maintenance/starboard/aft)
"cNJ" = (
@@ -57355,6 +57367,7 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 5
},
/obj/structure/loot_pile/maint,
/turf/open/floor/plating,
/area/maintenance/port)
"dAv" = (
@@ -59204,6 +59217,7 @@
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
/obj/structure/loot_pile/maint,
/turf/open/floor/plasteel{
heat_capacity = 1e+006
},
@@ -62652,6 +62666,7 @@
/obj/effect/turf_decal/tile/neutral{
dir = 4
},
/obj/structure/loot_pile/maint,
/turf/open/floor/plasteel,
/area/maintenance/aft)
"dLj" = (
@@ -62702,6 +62717,7 @@
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
/obj/structure/loot_pile/maint,
/turf/open/floor/plasteel,
/area/maintenance/starboard/aft)
"dLn" = (
@@ -63084,6 +63100,7 @@
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
/obj/structure/loot_pile/maint,
/turf/open/floor/plasteel{
heat_capacity = 1e+006
},
@@ -79161,6 +79178,10 @@
"gWu" = (
/turf/closed/wall,
/area/cargo/warehouse)
"gWF" = (
/obj/structure/loot_pile/maint,
/turf/open/floor/plating,
/area/maintenance/port/fore)
"gXc" = (
/obj/structure/sign/painting/library{
pixel_y = 32
@@ -95240,6 +95261,11 @@
},
/turf/open/floor/plasteel,
/area/service/library/abandoned)
"mpB" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/loot_pile/maint,
/turf/open/floor/plating,
/area/maintenance/port)
"mqb" = (
/obj/structure/cable{
icon_state = "1-2"
@@ -97242,6 +97268,17 @@
},
/turf/closed/wall/r_wall,
/area/science/circuit)
"mYR" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
/obj/structure/loot_pile/maint,
/turf/open/floor/plasteel,
/area/maintenance/starboard/aft)
"mYT" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/closet/cardboard,
@@ -109909,6 +109946,7 @@
"rCr" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/decal/cleanable/cobweb/cobweb2,
/obj/structure/loot_pile/maint,
/turf/open/floor/plating,
/area/cargo/warehouse)
"rCv" = (
@@ -109944,6 +109982,11 @@
},
/turf/open/floor/plasteel,
/area/cargo/storage)
"rCR" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/loot_pile/maint,
/turf/open/floor/plating,
/area/maintenance/port/aft)
"rDp" = (
/obj/structure/table/glass,
/obj/structure/cable/white{
@@ -114162,6 +114205,13 @@
},
/turf/open/floor/carpet,
/area/commons/vacant_room/office)
"sWQ" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
/obj/structure/loot_pile/maint,
/turf/open/floor/plating,
/area/maintenance/port/aft)
"sWY" = (
/obj/machinery/door/firedoor,
/obj/structure/cable/white{
@@ -119197,6 +119247,10 @@
},
/turf/open/floor/plasteel,
/area/command/heads_quarters/hos)
"uIT" = (
/obj/structure/loot_pile/maint,
/turf/open/floor/plating,
/area/maintenance/port)
"uJd" = (
/obj/item/kirbyplants/random,
/obj/item/radio/intercom{
@@ -128561,6 +128615,21 @@
},
/turf/open/floor/plasteel,
/area/cargo/storage)
"yia" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
/obj/effect/turf_decal/tile/neutral{
dir = 4
},
/obj/structure/loot_pile/maint,
/turf/open/floor/plasteel{
heat_capacity = 1e+006
},
/area/maintenance/starboard/aft)
"yiq" = (
/obj/structure/reflector/single/anchored{
dir = 6
@@ -150094,7 +150163,7 @@ opi
xbs
qjg
qjg
ceb
mpB
cLv
cMQ
cOq
@@ -157015,7 +157084,7 @@ caE
cdY
cfR
chI
ceb
mpB
cfU
cmi
cnI
@@ -158117,7 +158186,7 @@ dOl
ean
dLW
dZg
dLW
rCR
ecv
edf
edl
@@ -158756,7 +158825,7 @@ lxH
odN
quN
asF
alg
gWF
avq
awo
axJ
@@ -159295,7 +159364,7 @@ qOV
ary
aKj
bbQ
alg
gWF
beK
bgj
alf
@@ -159345,7 +159414,7 @@ ojB
roP
uhj
cCO
cea
uIT
cJZ
cLI
cNg
@@ -160932,7 +161001,7 @@ dPG
dQz
dRy
dSx
dOS
cCK
dUg
dUX
dVL
@@ -164529,7 +164598,7 @@ dOY
dPR
dfm
dRK
dOl
sWQ
pPz
sBt
vSo
@@ -180428,7 +180497,7 @@ hYQ
jjL
pzu
fzU
cYj
yia
cZV
dbC
ddr
@@ -181206,7 +181275,7 @@ ddt
ddt
aaB
dbD
diW
mYR
aaR
dbA
dnU
File diff suppressed because it is too large Load Diff
+3
View File
@@ -95,3 +95,6 @@
#define STICKYBAN_DB_CACHE_TIME 10 SECONDS
#define STICKYBAN_ROGUE_CHECK_TIME 5
/// for asay pings, this is the index in the return list for [/proc/check_admin_pings] that contains the message modified with underlines for the spotted names
#define ADMINSAY_PING_UNDERLINE_NAME_INDEX "!underlined_names"
+1 -1
View File
@@ -189,7 +189,7 @@
var/image/item_overlay = image(holding)
item_overlay.alpha = 92
if(!user.can_equip(holding, slot_id, TRUE))
if(!user.can_equip(holding, slot_id, TRUE, TRUE))
item_overlay.color = "#FF0000"
else
item_overlay.color = "#00ff00"
@@ -88,3 +88,6 @@
/datum/config_entry/number/rounds_until_hard_restart
config_entry_value = -1
min_val = 0
/datum/config_entry/string/force_gamemode
config_entry_value = null
+26 -3
View File
@@ -71,6 +71,9 @@ SUBSYSTEM_DEF(ticker)
var/station_integrity = 100 // stored at roundend for use in some antag goals
var/emergency_reason
/// If the gamemode fails to be run too many times, we swap to a preset gamemode, this should give admins time to set their preferred one
var/emergency_swap = 0
/datum/controller/subsystem/ticker/Initialize(timeofday)
load_mode()
@@ -179,7 +182,11 @@ SUBSYSTEM_DEF(ticker)
timeLeft = 0
if(!modevoted)
send_gamemode_vote()
var/forcemode = CONFIG_GET(string/force_gamemode)
if(forcemode)
force_gamemode(forcemode)
if(!forcemode || (GLOB.master_mode == "dynamic" && CONFIG_GET(flag/dynamic_voting)))
send_gamemode_vote()
//countdown
if(timeLeft < 0)
return
@@ -227,13 +234,15 @@ SUBSYSTEM_DEF(ticker)
/datum/controller/subsystem/ticker/proc/setup()
to_chat(world, "<span class='boldannounce'>Starting game...</span>")
var/init_start = world.timeofday
GLOB.master_mode = "dynamic"
if(emergency_swap >= 10)
force_gamemode("extended") // If everything fails extended does not have hard requirements for starting, could be changed if needed.
mode = config.pick_mode(GLOB.master_mode)
if(!mode.can_start())
to_chat(world, "<B>Unable to start [mode.name].</B> Not enough players, [mode.required_players] players and [mode.required_enemies] eligible antagonists needed. Reverting to pre-game lobby.")
qdel(mode)
mode = null
SSjob.ResetOccupations()
emergency_swap++
return 0
CHECK_TICK
@@ -252,6 +261,7 @@ SUBSYSTEM_DEF(ticker)
QDEL_NULL(mode)
to_chat(world, "<B>Error setting up [GLOB.master_mode].</B> Reverting to pre-game lobby.")
SSjob.ResetOccupations()
emergency_swap++
return 0
else
message_admins("<span class='notice'>DEBUG: Bypassing prestart checks...</span>")
@@ -305,6 +315,19 @@ SUBSYSTEM_DEF(ticker)
return TRUE
/datum/controller/subsystem/ticker/proc/force_gamemode(gamemode)
if(gamemode)
if(!modevoted)
modevoted = TRUE
if(gamemode in config.modes)
GLOB.master_mode = gamemode
SSticker.save_mode(gamemode)
message_admins("The gamemode has been set to [gamemode].")
else
GLOB.master_mode = "extended"
SSticker.save_mode("extended")
message_admins("force_gamemode proc received an invalid gamemode, defaulting to extended.")
/datum/controller/subsystem/ticker/proc/PostSetup()
set waitfor = FALSE
mode.post_setup()
@@ -618,7 +641,7 @@ SUBSYSTEM_DEF(ticker)
/datum/controller/subsystem/ticker/proc/load_mode()
var/mode = trim(file2text("data/mode.txt"))
if(mode)
GLOB.master_mode = "dynamic"
GLOB.master_mode = mode
else
GLOB.master_mode = GLOB.dynamic_forced_extended
log_game("Saved mode is '[GLOB.master_mode]'")
+35 -2
View File
@@ -169,14 +169,21 @@
/obj/item/clothing/mask/gas/mime/sexy,
/obj/item/clothing/under/rank/civilian/mime/sexy)
/obj/effect/spawner/bundle/crate
var/pickone = FALSE
/obj/effect/spawner/bundle/crate/Initialize(mapload)
SHOULD_CALL_PARENT(FALSE)
if(items && items.len)
var/turf/T = get_turf(src)
var/obj/structure/closet/LC = locate(/obj/structure/closet) in T
if(LC)
for(var/path in items)
new path(LC)
if(pickone)
var/tospawn = pick(items)
new tospawn(LC)
else
for(var/path in items)
new path(LC)
return INITIALIZE_HINT_QDEL
/obj/effect/spawner/bundle/crate/mosin
@@ -192,3 +199,29 @@
/obj/item/gun/ballistic/automatic/surplus,
/obj/item/ammo_box/magazine/m10mm/rifle
)
/obj/effect/spawner/bundle/crate/levergun
name = "lever-action rifle spawner"
items = list(
/obj/item/gun/ballistic/shotgun/leveraction,
/obj/item/ammo_box/c38/pouch
)
/obj/effect/spawner/bundle/crate/cowboyhat
name = "cowboy hat spawner"
pickone = TRUE
items = list(
/obj/item/clothing/head/cowboyhat,
/obj/item/clothing/head/cowboyhat/black,
/obj/item/clothing/head/cowboyhat/white,
/obj/item/clothing/head/cowboyhat/pink,
/obj/item/clothing/head/cowboyhat/sec
)
/obj/effect/spawner/bundle/crate/cowboyboots
name = "cowboy boots spawner"
pickone = TRUE
items = list(
/obj/item/clothing/shoes/cowboyboots,
/obj/item/clothing/shoes/cowboyboots/black
)
+11
View File
@@ -300,6 +300,17 @@ CIGARETTE PACKETS ARE IN FANCY.DM
desc = "A Xeno Filtered brand cigarette."
list_reagents = list (/datum/reagent/drug/nicotine = 20, /datum/reagent/medicine/regen_jelly = 15, /datum/reagent/drug/krokodil = 4)
/obj/item/clothing/mask/cigarette/dart
name = "fat dart"
desc = "Chuff back this fat dart"
icon_state = "bigoff"
icon_on = "bigon"
icon_off = "bigoff"
w_class = WEIGHT_CLASS_BULKY
smoketime = 10000
chem_volume = 50
list_reagents = list(/datum/reagent/drug/nicotine = 15)
// Rollies.
/obj/item/clothing/mask/cigarette/rollie
+35 -5
View File
@@ -161,13 +161,14 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new)
var/client/initiator //semi-misnomer, it's the person who ahelped/was bwoinked
var/initiator_ckey
var/initiator_key_name
var/heard_by_no_admins = FALSE
var/list/_interactions //use AddInteraction() or, preferably, admin_ticket_log()
var/obj/effect/statclick/ahelp/statclick
var/static/ticket_counter = 0
/// did we send "answered" to irc yet
var/answered = FALSE
//call this on its own to create a ticket, don't manually assign current_ticket
//msg is the title of the ticket: usually the ahelp text
@@ -209,7 +210,6 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new)
log_admin_private("Ticket #[id]: [key_name(initiator)]: [name] - heard by [admin_number_present] non-AFK admins who have +BAN.")
if(admin_number_present <= 0)
to_chat(C, "<span class='notice'>No active admins are online, your adminhelp was sent to the admin irc.</span>")
heard_by_no_admins = TRUE
else
// citadel edit: send anyways
send2adminchat(initiator_ckey, "Ticket #[id]: [name] - Heard by [admin_number_present] admins present with +BAN.")
@@ -223,9 +223,8 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new)
return ..()
/datum/admin_help/proc/AddInteraction(formatted_message)
// if(heard_by_no_admins usr && usr.ckey != initiator_ckey)
// heard_by_no_admins = FALSE
if(usr && (usr.ckey != initiator_ckey))
if(usr && (usr.ckey != initiator_ckey) && !answered)
answered = TRUE
send2adminchat(initiator_ckey, "Ticket #[id]: Answered by [key_name(usr)]")
_interactions += "[TIME_STAMP("hh:mm:ss", FALSE)]: [formatted_message]"
@@ -732,3 +731,34 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new)
return founds
return msg
/**
* Checks a given message to see if any of the words contain an active admin's ckey with an @ before it
*
* Returns nothing if no pings are found, otherwise returns an associative list with ckey -> client
* Also modifies msg to underline the pings, then stores them in the key [ADMINSAY_PING_UNDERLINE_NAME_INDEX] for returning
*
* Arguments:
* * msg - the message being scanned
*/
/proc/check_admin_pings(msg)
//explode the input msg into a list
var/list/msglist = splittext(msg, " ")
var/list/admins_to_ping = list()
var/i = 0
for(var/word in msglist)
i++
if(!length(word))
continue
if(word[1] != "@")
continue
var/ckey_check = lowertext(copytext(word, 2))
var/client/client_check = GLOB.directory[ckey_check]
if(client_check?.holder)
msglist[i] = "<u>[word]</u>"
admins_to_ping[ckey_check] = client_check
if(length(admins_to_ping))
admins_to_ping[ADMINSAY_PING_UNDERLINE_NAME_INDEX] = jointext(msglist, " ") // without tuples, we must make do!
return admins_to_ping
+13
View File
@@ -8,6 +8,19 @@
msg = copytext_char(sanitize(msg), 1, MAX_MESSAGE_LEN)
if(!msg)
return
var/list/pinged_admin_clients = check_admin_pings(msg)
if(length(pinged_admin_clients) && pinged_admin_clients[ADMINSAY_PING_UNDERLINE_NAME_INDEX])
msg = pinged_admin_clients[ADMINSAY_PING_UNDERLINE_NAME_INDEX]
pinged_admin_clients -= ADMINSAY_PING_UNDERLINE_NAME_INDEX
for(var/iter_ckey in pinged_admin_clients)
var/client/iter_admin_client = pinged_admin_clients[iter_ckey]
if(!iter_admin_client?.holder)
continue
window_flash(iter_admin_client)
SEND_SOUND(iter_admin_client.mob, sound('sound/misc/bloop.ogg'))
msg = emoji_parse(msg)
mob.log_talk(msg, LOG_ASAY)
+3
View File
@@ -145,6 +145,9 @@
else
to_chat(src,"<span class='userlove'>You can't make that genital [picked_organ.aroused_state ? "unaroused" : "aroused"]!</span>")
picked_organ.update_appearance()
if(ishuman(src))
var/mob/living/carbon/human/human = src
human.update_genitals()
return
+23
View File
@@ -183,6 +183,29 @@
var/item = pick(contains)
new item(C)
/datum/supply_pack/security/armory/frontier
name = "Old West Surplus Crate"
desc = "Do you have a fauna problem? Do you want to live out your frontier-taming fantasies on a state-of-the-art plasma research and mining station? Do you want to pretend you lived in the Old West of Earthen fame? Well, this box - and its many hats - may be for you."
cost = 7500
contraband = TRUE
contains = list(/obj/effect/spawner/bundle/crate/cowboyhat,
/obj/effect/spawner/bundle/crate/cowboyboots,
/obj/item/clothing/under/pants/chaps,
/obj/item/reagent_containers/food/snacks/butterbiscuit,
/obj/item/reagent_containers/food/snacks/butterbiscuit,
/obj/item/reagent_containers/food/snacks/plumphelmetbiscuit,
/obj/item/reagent_containers/food/snacks/plumphelmetbiscuit,
/obj/item/ammo_box/c38/pouch,
/obj/item/ammo_box/c38/pouch,
/obj/item/ammo_box/c38/pouch,
/obj/effect/spawner/bundle/crate/levergun
)
/datum/supply_pack/security/armory/frontier/fill(obj/structure/closet/crate/C)
for(var/i in 1 to 5)
var/item = pick(contains)
new item(C)
/datum/supply_pack/security/armory/swat
name = "SWAT Crate"
desc = "Contains two fullbody sets of tough, fireproof, pressurized suits designed in a joint effort by IS-ERI and Nanotrasen. Each set contains a suit, helmet, mask, combat belt, and combat gloves. Requires Armory access to open."
+6 -3
View File
@@ -27,9 +27,12 @@
. = ..()
if(!ishuman(user))
return
if(slot == ITEM_SLOT_GLOVES)
var/mob/living/carbon/human/H = user
tackler = H.AddComponent(/datum/component/tackler, stamina_cost=tackle_stam_cost, base_knockdown = base_knockdown, range = tackle_range, speed = tackle_speed, skill_mod = skill_mod, min_distance = min_distance)
switch(slot) // I didn't like how it looked
if(SLOT_GLOVES)
var/mob/living/carbon/human/H = user
tackler = H.AddComponent(/datum/component/tackler, stamina_cost=tackle_stam_cost, base_knockdown = base_knockdown, range = tackle_range, speed = tackle_speed, skill_mod = skill_mod, min_distance = min_distance)
else
qdel(tackler) // Only wearing it!
/obj/item/clothing/gloves/tackler/dropped(mob/user)
. = ..()
@@ -1,11 +1,8 @@
#define MINER_DASH_RANGE 4
/*
BLOOD-DRUNK MINER
Effectively a highly aggressive miner, the blood-drunk miner has very few attacks but compensates by being highly aggressive.
The blood-drunk miner's attacks are as follows
- If not in KA range, it will rapidly dash at its target
- If in KA range, it will fire its kinetic accelerator
@@ -13,11 +10,8 @@ The blood-drunk miner's attacks are as follows
- After any of these attacks, may transform its cleaving saw:
Untransformed, it attacks very rapidly for smaller amounts of damage
Transformed, it attacks at normal speed for higher damage and cleaves enemies hit
When the blood-drunk miner dies, it leaves behind the cleaving saw it was using and its kinetic accelerator.
Difficulty: Medium
*/
/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner
@@ -37,7 +31,7 @@ Difficulty: Medium
move_to_delay = 2
projectiletype = /obj/item/projectile/kinetic/miner
projectilesound = 'sound/weapons/kenetic_accel.ogg'
ranged = 1
ranged = TRUE
ranged_cooldown_time = 16
pixel_x = -16
crusher_loot = list(/obj/item/melee/transforming/cleaving_saw, /obj/item/gun/energy/kinetic_accelerator/premiumka, /obj/item/crusher_trophy/miner_eye, /obj/item/disk/design_disk/modkit_disc/mob_and_turf_aoe,
@@ -55,18 +49,56 @@ Difficulty: Medium
var/dashing = FALSE
var/dash_cooldown = 15
var/guidance = FALSE
var/transform_stop_attack = FALSE // stops the blood drunk miner from attacking after transforming his weapon until the next attack chain
deathmessage = "falls to the ground, decaying into glowing particles."
death_sound = "bodyfall"
deathsound = "bodyfall"
footstep_type = FOOTSTEP_MOB_HEAVY
attack_action_types = list(/datum/action/innate/megafauna_attack/dash,
/datum/action/innate/megafauna_attack/kinetic_accelerator,
/datum/action/innate/megafauna_attack/transform_weapon)
/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner/guidance
guidance = TRUE
/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner/hunter/AttackingTarget()
/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner/Initialize()
. = ..()
if(. && prob(12))
INVOKE_ASYNC(src, .proc/dash)
miner_saw = new(src)
/datum/action/innate/megafauna_attack/dash
name = "Dash To Target"
icon_icon = 'icons/mob/actions/actions_items.dmi'
button_icon_state = "sniper_zoom"
chosen_message = "<span class='colossus'>You are now dashing to your target.</span>"
chosen_attack_num = 1
/datum/action/innate/megafauna_attack/kinetic_accelerator
name = "Fire Kinetic Accelerator"
icon_icon = 'icons/obj/guns/energy.dmi'
button_icon_state = "kineticgun"
chosen_message = "<span class='colossus'>You are now shooting your kinetic accelerator.</span>"
chosen_attack_num = 2
/datum/action/innate/megafauna_attack/transform_weapon
name = "Transform Weapon"
icon_icon = 'icons/obj/lavaland/artefacts.dmi'
button_icon_state = "cleaving_saw"
chosen_message = "<span class='colossus'>You are now transforming your weapon.</span>"
chosen_attack_num = 3
/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner/OpenFire()
if(client)
switch(chosen_attack)
if(1)
dash(target)
if(2)
shoot_ka()
if(3)
transform_weapon()
return
Goto(target, move_to_delay, minimum_distance)
if(get_dist(src, target) > MINER_DASH_RANGE && dash_cooldown <= world.time)
dash_attack()
else
shoot_ka()
transform_weapon()
/obj/item/melee/transforming/cleaving_saw/miner //nerfed saw because it is very murdery
force = 6
@@ -74,7 +106,7 @@ Difficulty: Medium
/obj/item/melee/transforming/cleaving_saw/miner/attack(mob/living/target, mob/living/carbon/human/user)
target.add_stun_absorption("miner", 10, INFINITY)
. = ..()
..()
target.stun_absorption -= "miner"
/obj/item/projectile/kinetic/miner
@@ -83,22 +115,16 @@ Difficulty: Medium
icon_state = "ka_tracer"
range = MINER_DASH_RANGE
/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner/Initialize()
. = ..()
internal = new/obj/item/gps/internal/miner(src)
miner_saw = new(src)
/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner/adjustHealth(amount, updating_health = TRUE, forced = FALSE)
var/adjustment_amount = amount * 0.1
if(world.time + adjustment_amount > next_action)
DelayNextAction(adjustment_amount, considered_action = FALSE, flush = TRUE) //attacking it interrupts it attacking, but only briefly
DelayNextAction(adjustment_amount) //attacking it interrupts it attacking, but only briefly
. = ..()
/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner/death()
if(health > 0)
return
new /obj/effect/temp_visual/dir_setting/miner_death(loc, dir)
return ..()
. = ..()
if(.)
new /obj/effect/temp_visual/dir_setting/miner_death(loc, dir)
/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner/Move(atom/newloc)
if(dashing || (newloc && newloc.z == z && (islava(newloc) || ischasm(newloc)))) //we're not stupid!
@@ -110,11 +136,14 @@ Difficulty: Medium
return
return ..()
/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner/MeleeAction(patience = TRUE)
transform_stop_attack = FALSE
return ..()
/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner/AttackingTarget()
if(QDELETED(target))
return
if(!CheckActionCooldown() || !Adjacent(target)) //some cheating
INVOKE_ASYNC(src, .proc/quick_attack_loop)
if(client)
transform_stop_attack = FALSE
if(QDELETED(target) || transform_stop_attack)
return
face_atom(target)
if(isliving(target))
@@ -129,12 +158,10 @@ Difficulty: Medium
adjustHealth(-(L.maxHealth * 0.5))
L.gib()
return TRUE
miner_saw.melee_attack_chain(src, target, null, ATTACK_IGNORE_CLICKDELAY)
FlushCurrentAction()
DelayNextAction(CLICK_CD_MELEE)
miner_saw.melee_attack_chain(src, target)
if(guidance)
adjustHealth(-2)
transform_weapon()
INVOKE_ASYNC(src, .proc/quick_attack_loop)
return TRUE
/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner/do_attack_animation(atom/A, visual_effect_icon, obj/item/used_item, no_effect)
@@ -147,16 +174,10 @@ Difficulty: Medium
. = ..()
if(. && target && !targets_the_same)
wander = TRUE
transform_weapon()
INVOKE_ASYNC(src, .proc/quick_attack_loop)
/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner/OpenFire()
Goto(target, move_to_delay, minimum_distance)
if(get_dist(src, target) > MINER_DASH_RANGE && dash_cooldown <= world.time)
INVOKE_ASYNC(src, .proc/dash, target)
else
shoot_ka()
transform_weapon()
/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner/proc/dash_attack()
INVOKE_ASYNC(src, .proc/dash, target)
shoot_ka()
/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner/proc/shoot_ka()
if(ranged_cooldown <= world.time && get_dist(src, target) <= MINER_DASH_RANGE && !Adjacent(target))
@@ -165,22 +186,7 @@ Difficulty: Medium
face_atom(target)
new /obj/effect/temp_visual/dir_setting/firing_effect(loc, dir)
Shoot(target)
DelayNextAction(CLICK_CD_RANGE, flush = TRUE)
//I'm still of the belief that this entire proc needs to be wiped from existence.
// do not take my touching of it to be endorsement of it. ~mso
/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner/proc/quick_attack_loop()
while(!QDELETED(target) && !CheckActionCooldown()) //this is done this way because next_move can change to be sooner while we sleep.
stoplag(1)
sleep((next_action - world.time) * 1.5) //but don't ask me what the fuck this is about
if(QDELETED(target))
return
if(dashing || !CheckActionCooldown() || !Adjacent(target))
if(dashing && next_action <= world.time)
SetNextAction(1, considered_action = FALSE, immediate = FALSE, flush = TRUE)
INVOKE_ASYNC(src, .proc/quick_attack_loop) //lets try that again.
return
AttackingTarget()
DelayNextAction(CLICK_CD_RANGE)
/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner/proc/dash(atom/dash_target)
if(world.time < dash_cooldown)
@@ -225,19 +231,23 @@ Difficulty: Medium
dashing = TRUE
alpha = 0
animate(src, alpha = 255, time = 5)
sleep(2)
SLEEP_CHECK_DEATH(2)
D.forceMove(step_forward_turf)
forceMove(target_turf)
playsound(target_turf, 'sound/weapons/punchmiss.ogg', 40, 1, -1)
sleep(1)
SLEEP_CHECK_DEATH(1)
dashing = FALSE
shoot_ka()
return TRUE
/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner/proc/transform_weapon()
if(time_until_next_transform <= world.time)
miner_saw.transform_cooldown = 0
miner_saw.transform_weapon(src, TRUE)
if(!miner_saw.active)
rapid_melee = 5 // 4 deci cooldown before changes, npcpool subsystem wait is 20, 20/4 = 5
else
rapid_melee = 3 // same thing but halved (slightly rounded up)
transform_stop_attack = TRUE
icon_state = "miner[miner_saw.active ? "_transformed":""]"
icon_living = "miner[miner_saw.active ? "_transformed":""]"
time_until_next_transform = world.time + rand(50, 100)
@@ -269,6 +279,14 @@ Difficulty: Medium
desc = "The sweet blood, oh, it sings to me."
invisibility = 100
/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner/guidance
guidance = TRUE
/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner/hunter/AttackingTarget()
. = ..()
if(. && prob(12))
INVOKE_ASYNC(src, .proc/dash)
/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner/doom
name = "hostile-environment miner"
desc = "A miner destined to hop across dimensions for all eternity, hunting anomalous creatures."
@@ -277,4 +295,5 @@ Difficulty: Medium
ranged_cooldown_time = 8
dash_cooldown = 8
#undef MINER_DASH_RANGE
@@ -39,7 +39,7 @@
/obj/item/ammo_casing/c38/lethal
name = ".38 bullet casing"
desc = "A .38 bullet casing"
desc = "A .38 bullet casing."
projectile_type = /obj/item/projectile/bullet/c38
/obj/item/ammo_casing/c38/trac
@@ -60,6 +60,13 @@
desc = "Designed to quickly reload revolvers. These rounds are manufactured within extremely tight tolerances, making them easy to show off trickshots with."
ammo_type = /obj/item/ammo_casing/c38/match
/obj/item/ammo_box/c38/pouch
name = "ammo packet (.38)"
desc = "A small ammunition packet made of synthleather. Not particularly useful for speedily reloading, but can hold a bit more."
multiload = FALSE
max_ammo = 8
icon_state = "38pch"
/obj/item/ammo_box/g4570
name = "ammo box (.45-70 GOVT)"
desc = "Brought to you at great expense,this box contains 10 more .45-70 GOVT bullets."
@@ -61,3 +61,7 @@
ammo_type = /obj/item/ammo_casing/c38 // they're rubber by default, i guess
caliber = "38"
max_ammo = 7
/obj/item/ammo_box/magazine/internal/shot/levergun/brush
name = "brush gun internal magazine"
ammo_type = /obj/item/ammo_casing/g4570
@@ -122,7 +122,7 @@
icon_state = "c20r[magazine ? "-[CEILING(get_ammo(0)/4, 1)*4]" : ""][chambered ? "" : "-e"][suppressed ? "-suppressed" : ""]"
/obj/item/gun/ballistic/automatic/wt550
name = "security semi-auto smg"
name = "security semi-auto PDW"
desc = "An outdated personal defence weapon. Uses 4.6x30mm rounds and is designated the WT-550 Semi-Automatic SMG."
icon_state = "wt550"
item_state = "arg"
@@ -11,6 +11,7 @@
mag_type = /obj/item/ammo_box/magazine/internal/shot
casing_ejector = FALSE
var/recentpump = 0 // to prevent spammage
var/clip_delay = CLICK_CD_MELEE
weapon_weight = WEAPON_HEAVY
sawn_item_state = "sawnshotgun"
@@ -24,7 +25,8 @@
playsound(user, 'sound/weapons/shotguninsert.ogg', 60, 1)
A.update_icon()
update_icon()
user.SetNextAction(CLICK_CD_MELEE)
if(istype(A, /obj/item/ammo_box))
user.SetNextAction(clip_delay)
/obj/item/gun/ballistic/shotgun/process_chamber(mob/living/user, empty_chamber = 0)
return ..() //changed argument value
@@ -359,9 +361,13 @@
icon_state = "levercarabine"
item_state = "leveraction"
sawn_item_state = "maresleg"
var/can_cut = TRUE
/obj/item/gun/ballistic/shotgun/leveraction/attackby(obj/item/A, mob/user, params)
..()
if(!can_cut)
to_chat(user, "<span class='warning'>You can't cut \the [src] down!</span>")
return
if(A.tool_behaviour == TOOL_SAW || istype(A, /obj/item/gun/energy/plasmacutter))
sawoff(user)
if(istype(A, /obj/item/melee/transforming/energy))
@@ -377,3 +383,11 @@
icon_state = "[unique_reskin[current_skin]][sawn_off ? "-sawn" : ""][chambered ? "" : "-e"]"
else
icon_state = "[initial(icon_state)][sawn_off ? "-sawn" : ""][chambered ? "" : "-e"]"
/obj/item/gun/ballistic/shotgun/leveraction/brush
name = "brush gun"
desc = "While lever-actions have been horribly out of date for hundreds of years now, \
putting a nicely sized hole in a man-sized target with a .45-70 round has stayed relatively timeless."
icon_state = "brushgun"
can_cut = FALSE
mag_type = /obj/item/ammo_box/magazine/internal/shot/levergun/brush
+2 -1
View File
@@ -14,7 +14,8 @@
/obj/item/storage/fancy/rollingpapers = 5)
contraband = list(/obj/item/lighter = 3,
/obj/item/clothing/mask/vape = 5,
/obj/item/storage/fancy/cigarettes/cigpack_shadyjims = 1)
/obj/item/storage/fancy/cigarettes/cigpack_shadyjims = 1,
/obj/item/clothing/mask/cigarette/dart = 3)
premium = list(/obj/item/storage/fancy/cigarettes/cigpack_robustgold = 3,
/obj/item/storage/fancy/cigarettes/cigars = 1,
/obj/item/storage/fancy/cigarettes/cigars/havana = 1,
+6
View File
@@ -66,3 +66,9 @@ DISABLE_HIGH_POP_MC_MODE_AMOUNT 60
## Uncomment to set the number of /world/Reboot()s before the DreamDaemon restarts itself. 0 means restart every round. Requires tgstation server tools.
#ROUNDS_UNTIL_HARD_RESTART 10
## Force Gamemode ##
## Disallows roundstart gamemode voting if not null or uncommented
## Just input the gamemode lowercase in there, the thing will take a simple string for it
## Invalid gamemodes will default extended, have fun.
#FORCE_GAMEMODE
+38 -26
View File
@@ -50,6 +50,44 @@
-->
<div class="commit sansserif">
<h2 class="date">16 October 2021</h2>
<h3 class="author">Ryll/Shaps updated:</h3>
<ul class="changes bgimages16">
<li class="rscadd">Asay now supports pings (via using @[adminckey])</li>
</ul>
<h3 class="author">SandPoot updated:</h3>
<ul class="changes bgimages16">
<li class="bugfix">If a gamemode fails to load too many times, a safe gamemode will be loaded instead.</li>
<li class="code_imp">Dynamic is no longer hardcoded, and you can now set a gamemode to be forced in the configs.</li>
<li class="bugfix">Equip delays are a bit less weird now, only relevant for coders/people who use straight jackets... on themself, since that's the only thing that uses it right now.</li>
<li class="bugfix">Toggling arousal will properly update your sprite.</li>
<li class="bugfix">That also means no spam when moving it in your hands.</li>
</ul>
<h3 class="author">WanderingFox95 updated:</h3>
<ul class="changes bgimages16">
<li class="bugfix">Removes the quick attack loop (like TG did it)</li>
</ul>
<h3 class="author">dapnee updated:</h3>
<ul class="changes bgimages16">
<li class="rscadd">BEPIS to science tweak: moved the courtroom</li>
</ul>
<h3 class="author">keronshb updated:</h3>
<ul class="changes bgimages16">
<li class="rscadd">Adds the fat dart cigarette and to vendors</li>
<li class="imageadd">Adds the sprites for the fat dart</li>
</ul>
<h2 class="date">13 October 2021</h2>
<h3 class="author">Hatterhat updated:</h3>
<ul class="changes bgimages16">
<li class="rscadd">Contraband dealers are now embracing their inner Old Space Westerner. Look for the Old West Surplus Crate on your mildly-hacked cargo console today.</li>
</ul>
<h3 class="author">MrJWhit updated:</h3>
<ul class="changes bgimages16">
<li class="rscadd">Adds more fire-saftey closets and trashpiles to boxstation</li>
<li class="rscadd">Adds trashpiles to delta.</li>
</ul>
<h2 class="date">30 September 2021</h2>
<h3 class="author">Hatterhat updated:</h3>
<ul class="changes bgimages16">
@@ -482,32 +520,6 @@
<ul class="changes bgimages16">
<li class="bugfix">Polyvitiligo actually changes your color now</li>
</ul>
<h2 class="date">13 August 2021</h2>
<h3 class="author">Putnam3145 updated:</h3>
<ul class="changes bgimages16">
<li class="bugfix">makes certain organs no longer have circular references</li>
</ul>
<h2 class="date">12 August 2021</h2>
<h3 class="author">Arturlang updated:</h3>
<ul class="changes bgimages16">
<li class="rscdel">Nonslimes and nonvampires will no longer be able to increase their blood to stupid heights</li>
</ul>
<h3 class="author">Putnam3145 updated:</h3>
<ul class="changes bgimages16">
<li class="refactor">Supermatter values use auxgm</li>
</ul>
<h3 class="author">cadyn updated:</h3>
<ul class="changes bgimages16">
<li class="server">precompile.sh and build.sh updated, auxmos set to 0.2.3 in dependencies.sh</li>
</ul>
<h2 class="date">11 August 2021</h2>
<h3 class="author">timothyteakettle updated:</h3>
<ul class="changes bgimages16">
<li class="rscadd">lets felinids, humans and moths have markings</li>
</ul>
</div>
<b>GoonStation 13 Development Team</b>
+27
View File
@@ -30120,3 +30120,30 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py.
to outbreaks, theoretically.
Putnam3145:
- rscdel: Minesweeper's "play on same board"
2021-10-13:
Hatterhat:
- rscadd: Contraband dealers are now embracing their inner Old Space Westerner.
Look for the Old West Surplus Crate on your mildly-hacked cargo console today.
MrJWhit:
- rscadd: Adds more fire-saftey closets and trashpiles to boxstation
- rscadd: Adds trashpiles to delta.
2021-10-16:
Ryll/Shaps:
- rscadd: Asay now supports pings (via using @[adminckey])
SandPoot:
- bugfix: If a gamemode fails to load too many times, a safe gamemode will be loaded
instead.
- code_imp: Dynamic is no longer hardcoded, and you can now set a gamemode to be
forced in the configs.
- bugfix: Equip delays are a bit less weird now, only relevant for coders/people
who use straight jackets... on themself, since that's the only thing that uses
it right now.
- bugfix: Toggling arousal will properly update your sprite.
- bugfix: That also means no spam when moving it in your hands.
WanderingFox95:
- bugfix: Removes the quick attack loop (like TG did it)
dapnee:
- rscadd: 'BEPIS to science tweak: moved the courtroom'
keronshb:
- rscadd: Adds the fat dart cigarette and to vendors
- imageadd: Adds the sprites for the fat dart
Binary file not shown.

Before

Width:  |  Height:  |  Size: 49 KiB

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 49 KiB

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.