mirror of
https://github.com/Skyrat-SS13/Skyrat-tg.git
synced 2026-08-28 07:17:46 +01:00
Merge branch 'master' into upstream-merge-85370
This commit is contained in:
@@ -25,8 +25,8 @@
|
||||
/obj/item/clothing/shoes/galoshes{
|
||||
pixel_y = -5
|
||||
},
|
||||
/obj/item/flashlight/eyelight{
|
||||
pixel_y = 11
|
||||
/obj/item/flashlight{
|
||||
pixel_y = 8
|
||||
},
|
||||
/turf/open/floor/plating/icemoon,
|
||||
/area/ruin/plasma_facility/operations)
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -7935,6 +7935,15 @@
|
||||
/obj/structure/sink/kitchen/directional/south,
|
||||
/turf/open/floor/iron,
|
||||
/area/station/service/hydroponics)
|
||||
"cmh" = (
|
||||
/obj/effect/turf_decal/siding/wood/corner{
|
||||
dir = 4
|
||||
},
|
||||
/obj/effect/turf_decal/tile/neutral/half/contrasted{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/iron,
|
||||
/area/station/service/hydroponics/garden)
|
||||
"cmq" = (
|
||||
/obj/machinery/door/airlock/external{
|
||||
name = "External Access"
|
||||
@@ -9029,15 +9038,6 @@
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
|
||||
/turf/open/floor/plating,
|
||||
/area/station/maintenance/aft/greater)
|
||||
"cBD" = (
|
||||
/obj/effect/turf_decal/siding/wood/corner{
|
||||
dir = 4
|
||||
},
|
||||
/obj/effect/turf_decal/tile/neutral/half/contrasted{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/iron,
|
||||
/area/station/service/hydroponics/garden)
|
||||
"cBG" = (
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
|
||||
@@ -17599,6 +17599,14 @@
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
|
||||
/turf/open/floor/iron/white,
|
||||
/area/mine/living_quarters)
|
||||
"fjX" = (
|
||||
/obj/structure/sink/directional/south,
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
|
||||
/obj/effect/turf_decal/tile/green/half/contrasted{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/iron,
|
||||
/area/station/security/prison/garden)
|
||||
"fkc" = (
|
||||
/obj/machinery/power/terminal{
|
||||
dir = 8
|
||||
@@ -19597,6 +19605,12 @@
|
||||
dir = 1
|
||||
},
|
||||
/area/station/security/prison)
|
||||
"fQL" = (
|
||||
/obj/structure/cable,
|
||||
/obj/machinery/power/apc/auto_name/directional/south,
|
||||
/obj/item/radio/intercom/directional/west,
|
||||
/turf/open/floor/iron,
|
||||
/area/station/service/hydroponics/garden)
|
||||
"fQU" = (
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 6
|
||||
@@ -21885,21 +21899,6 @@
|
||||
/obj/machinery/light/small/directional/south,
|
||||
/turf/open/floor/plating,
|
||||
/area/station/hallway/secondary/exit/departure_lounge)
|
||||
"gBV" = (
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
|
||||
/obj/structure/cable,
|
||||
/obj/effect/turf_decal/trimline/red/filled/line{
|
||||
dir = 4
|
||||
},
|
||||
/obj/effect/turf_decal/trimline/red/filled/corner{
|
||||
dir = 8
|
||||
},
|
||||
/obj/machinery/holopad,
|
||||
/obj/effect/landmark/start/depsec/medical,
|
||||
/obj/machinery/computer/security/telescreen/med_sec/directional/east,
|
||||
/turf/open/floor/iron/dark/smooth_large,
|
||||
/area/station/security/checkpoint/medical)
|
||||
"gBX" = (
|
||||
/obj/structure/cable,
|
||||
/obj/effect/spawner/structure/window/hollow/reinforced/middle{
|
||||
@@ -24787,10 +24786,6 @@
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible,
|
||||
/turf/open/floor/plating,
|
||||
/area/station/maintenance/port/aft)
|
||||
"hto" = (
|
||||
/obj/structure/girder,
|
||||
/turf/closed/wall,
|
||||
/area/station/maintenance/starboard/aft)
|
||||
"htp" = (
|
||||
/obj/machinery/door/poddoor/preopen{
|
||||
id = "xenobio2";
|
||||
@@ -27127,6 +27122,12 @@
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
|
||||
/turf/open/floor/iron/dark,
|
||||
/area/station/ai_monitored/turret_protected/aisat/atmos)
|
||||
"ify" = (
|
||||
/obj/structure/disposalpipe/segment{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/iron/dark,
|
||||
/area/station/service/hydroponics/garden)
|
||||
"ifA" = (
|
||||
/obj/effect/spawner/structure/window/reinforced,
|
||||
/obj/structure/sign/warning/cold_temp,
|
||||
@@ -29669,6 +29670,21 @@
|
||||
/obj/effect/spawner/random/maintenance,
|
||||
/turf/open/floor/plating,
|
||||
/area/station/maintenance/department/medical/morgue)
|
||||
"iTE" = (
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
|
||||
/obj/structure/cable,
|
||||
/obj/effect/turf_decal/trimline/red/filled/line{
|
||||
dir = 4
|
||||
},
|
||||
/obj/effect/turf_decal/trimline/red/filled/corner{
|
||||
dir = 8
|
||||
},
|
||||
/obj/machinery/holopad,
|
||||
/obj/effect/landmark/start/depsec/medical,
|
||||
/obj/machinery/computer/security/telescreen/med_sec/directional/east,
|
||||
/turf/open/floor/iron/dark/smooth_large,
|
||||
/area/station/security/checkpoint/medical)
|
||||
"iTJ" = (
|
||||
/obj/structure/table,
|
||||
/obj/item/paper_bin{
|
||||
@@ -43790,12 +43806,6 @@
|
||||
/mob/living/carbon/human/species/monkey,
|
||||
/turf/open/floor/engine,
|
||||
/area/station/science/genetics)
|
||||
"nhS" = (
|
||||
/obj/structure/cable,
|
||||
/obj/machinery/power/apc/auto_name/directional/south,
|
||||
/obj/item/radio/intercom/directional/west,
|
||||
/turf/open/floor/iron,
|
||||
/area/station/service/hydroponics/garden)
|
||||
"nhT" = (
|
||||
/obj/machinery/door/airlock/external{
|
||||
glass = 1;
|
||||
@@ -52419,12 +52429,6 @@
|
||||
},
|
||||
/turf/open/floor/plating/snowed/icemoon,
|
||||
/area/icemoon/underground/explored)
|
||||
"pGy" = (
|
||||
/obj/structure/disposalpipe/segment{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/iron/dark,
|
||||
/area/station/service/hydroponics/garden)
|
||||
"pGJ" = (
|
||||
/obj/structure/sign/poster/contraband/random/directional/north,
|
||||
/obj/effect/mapping_helpers/burnt_floor,
|
||||
@@ -54283,13 +54287,6 @@
|
||||
},
|
||||
/turf/open/floor/iron,
|
||||
/area/station/command/heads_quarters/qm)
|
||||
"qiT" = (
|
||||
/obj/structure/reagent_dispensers/watertank,
|
||||
/obj/effect/turf_decal/tile/green/anticorner/contrasted{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/iron/dark,
|
||||
/area/station/service/hydroponics/garden)
|
||||
"qjb" = (
|
||||
/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible{
|
||||
dir = 10
|
||||
@@ -66884,6 +66881,13 @@
|
||||
/obj/effect/spawner/structure/window/reinforced,
|
||||
/turf/open/floor/plating,
|
||||
/area/station/medical/storage)
|
||||
"tQp" = (
|
||||
/obj/structure/reagent_dispensers/watertank,
|
||||
/obj/effect/turf_decal/tile/green/anticorner/contrasted{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/iron/dark,
|
||||
/area/station/service/hydroponics/garden)
|
||||
"tQE" = (
|
||||
/obj/effect/turf_decal/siding/brown/corner{
|
||||
dir = 4
|
||||
@@ -69459,6 +69463,17 @@
|
||||
"uIg" = (
|
||||
/turf/open/floor/engine/n2o,
|
||||
/area/station/engineering/atmos)
|
||||
"uIi" = (
|
||||
/obj/effect/turf_decal/siding/wood{
|
||||
dir = 1
|
||||
},
|
||||
/obj/machinery/camera/directional/east{
|
||||
c_tag = "Garden"
|
||||
},
|
||||
/obj/item/kirbyplants/random,
|
||||
/obj/machinery/status_display/ai/directional/east,
|
||||
/turf/open/floor/iron/dark,
|
||||
/area/station/service/hydroponics/garden)
|
||||
"uIj" = (
|
||||
/obj/machinery/disposal/bin,
|
||||
/obj/structure/disposalpipe/trunk{
|
||||
@@ -73912,14 +73927,6 @@
|
||||
/obj/effect/turf_decal/bot,
|
||||
/turf/open/floor/iron/large,
|
||||
/area/station/command/heads_quarters/ce)
|
||||
"wcz" = (
|
||||
/obj/structure/sink/directional/south,
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
|
||||
/obj/effect/turf_decal/tile/green/half/contrasted{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/iron,
|
||||
/area/station/security/prison/garden)
|
||||
"wcD" = (
|
||||
/obj/structure/chair/plastic{
|
||||
dir = 4
|
||||
@@ -77699,17 +77706,6 @@
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
|
||||
/turf/open/floor/carpet/blue,
|
||||
/area/station/hallway/secondary/entry)
|
||||
"xhg" = (
|
||||
/obj/effect/turf_decal/siding/wood{
|
||||
dir = 1
|
||||
},
|
||||
/obj/machinery/camera/directional/east{
|
||||
c_tag = "Garden"
|
||||
},
|
||||
/obj/item/kirbyplants/random,
|
||||
/obj/machinery/status_display/ai/directional/east,
|
||||
/turf/open/floor/iron/dark,
|
||||
/area/station/service/hydroponics/garden)
|
||||
"xhk" = (
|
||||
/turf/open/floor/iron/dark,
|
||||
/area/station/commons/storage/primary)
|
||||
@@ -169048,7 +169044,7 @@ bCp
|
||||
fYi
|
||||
tCL
|
||||
jNf
|
||||
wcz
|
||||
fjX
|
||||
hKI
|
||||
fWe
|
||||
ozX
|
||||
@@ -227938,7 +227934,7 @@ esv
|
||||
lCb
|
||||
ddZ
|
||||
eUA
|
||||
nhS
|
||||
fQL
|
||||
oCO
|
||||
oCO
|
||||
oCO
|
||||
@@ -228196,7 +228192,7 @@ eUi
|
||||
eBB
|
||||
tNd
|
||||
nor
|
||||
qiT
|
||||
tQp
|
||||
cgw
|
||||
mZu
|
||||
hjv
|
||||
@@ -228708,7 +228704,7 @@ lJO
|
||||
wDf
|
||||
sAR
|
||||
sAR
|
||||
cBD
|
||||
cmh
|
||||
kPy
|
||||
dQI
|
||||
pPT
|
||||
@@ -228965,8 +228961,8 @@ lJO
|
||||
mCT
|
||||
mut
|
||||
lGo
|
||||
xhg
|
||||
pGy
|
||||
uIi
|
||||
ify
|
||||
wCL
|
||||
tTc
|
||||
wtr
|
||||
@@ -251348,7 +251344,7 @@ pJC
|
||||
nKa
|
||||
dhk
|
||||
cDT
|
||||
gBV
|
||||
iTE
|
||||
cAI
|
||||
cMN
|
||||
uYm
|
||||
@@ -259618,7 +259614,7 @@ lXi
|
||||
vzD
|
||||
vzD
|
||||
vzD
|
||||
hto
|
||||
vzD
|
||||
jOj
|
||||
vzD
|
||||
daT
|
||||
|
||||
@@ -1155,16 +1155,6 @@
|
||||
/obj/machinery/door/window/left/directional/west,
|
||||
/turf/open/floor/grass,
|
||||
/area/station/service/hydroponics/garden)
|
||||
"atk" = (
|
||||
/obj/machinery/airalarm/directional/east,
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/item/storage/toolbox/mechanical,
|
||||
/obj/item/clothing/head/utility/welding,
|
||||
/obj/effect/turf_decal/siding/purple{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/iron,
|
||||
/area/station/science/robotics/mechbay)
|
||||
"atl" = (
|
||||
/obj/effect/mapping_helpers/broken_floor,
|
||||
/turf/open/floor/iron/freezer,
|
||||
@@ -5239,6 +5229,34 @@
|
||||
/obj/effect/mapping_helpers/broken_floor,
|
||||
/turf/open/floor/plating,
|
||||
/area/station/maintenance/port/greater)
|
||||
"bSi" = (
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/effect/turf_decal/trimline/yellow/filled/line{
|
||||
dir = 4
|
||||
},
|
||||
/obj/effect/turf_decal/trimline/yellow/filled/mid_joiner{
|
||||
dir = 4
|
||||
},
|
||||
/obj/item/hand_labeler{
|
||||
pixel_x = 3;
|
||||
pixel_y = 5
|
||||
},
|
||||
/obj/item/storage/pill_bottle/epinephrine{
|
||||
pixel_x = -9;
|
||||
pixel_y = 1
|
||||
},
|
||||
/obj/item/stack/sheet/mineral/plasma{
|
||||
pixel_y = 14;
|
||||
pixel_x = 3
|
||||
},
|
||||
/obj/item/hand_labeler_refill{
|
||||
pixel_x = 10;
|
||||
pixel_y = -2
|
||||
},
|
||||
/turf/open/floor/iron/white/smooth_edge{
|
||||
dir = 4
|
||||
},
|
||||
/area/station/medical/pharmacy)
|
||||
"bSr" = (
|
||||
/obj/effect/turf_decal/siding/purple{
|
||||
dir = 4
|
||||
@@ -10265,22 +10283,6 @@
|
||||
},
|
||||
/turf/open/floor/carpet/orange,
|
||||
/area/station/service/theater)
|
||||
"dGs" = (
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/item/storage/pill_bottle/epinephrine,
|
||||
/obj/item/stack/sheet/mineral/plasma{
|
||||
pixel_y = 12
|
||||
},
|
||||
/obj/effect/turf_decal/trimline/yellow/filled/line{
|
||||
dir = 4
|
||||
},
|
||||
/obj/effect/turf_decal/trimline/yellow/filled/mid_joiner{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/iron/white/smooth_edge{
|
||||
dir = 4
|
||||
},
|
||||
/area/station/medical/pharmacy)
|
||||
"dGt" = (
|
||||
/obj/effect/turf_decal/trimline/blue/filled/line{
|
||||
dir = 8
|
||||
@@ -10747,6 +10749,20 @@
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
|
||||
/turf/open/floor/iron,
|
||||
/area/station/cargo/storage)
|
||||
"dPo" = (
|
||||
/obj/item/stack/sheet/glass,
|
||||
/obj/item/clothing/glasses/welding,
|
||||
/obj/item/disk/tech_disk{
|
||||
pixel_y = 6
|
||||
},
|
||||
/obj/item/reagent_containers/dropper,
|
||||
/obj/structure/table,
|
||||
/obj/machinery/requests_console/auto_name/directional/north,
|
||||
/obj/effect/mapping_helpers/requests_console/supplies,
|
||||
/obj/effect/mapping_helpers/requests_console/ore_update,
|
||||
/obj/effect/mapping_helpers/requests_console/assistance,
|
||||
/turf/open/floor/iron/white,
|
||||
/area/station/science/lab)
|
||||
"dPq" = (
|
||||
/obj/machinery/camera/autoname/directional/east,
|
||||
/turf/open/floor/grass,
|
||||
@@ -17273,10 +17289,6 @@
|
||||
dir = 1
|
||||
},
|
||||
/area/station/science/research)
|
||||
"ggl" = (
|
||||
/obj/machinery/camera/autoname/directional/west,
|
||||
/turf/open/floor/grass,
|
||||
/area/station/service/hydroponics/garden)
|
||||
"ggu" = (
|
||||
/obj/machinery/door/airlock/public/glass{
|
||||
name = "Library"
|
||||
@@ -34379,6 +34391,11 @@
|
||||
/obj/machinery/computer/station_alert,
|
||||
/turf/open/floor/iron,
|
||||
/area/station/engineering/atmos/upper)
|
||||
"miq" = (
|
||||
/obj/machinery/computer/security/telescreen/rd/directional/south,
|
||||
/obj/machinery/keycard_auth/wall_mounted/directional/south,
|
||||
/turf/open/floor/glass/reinforced/plasma,
|
||||
/area/station/command/heads_quarters/rd)
|
||||
"mit" = (
|
||||
/obj/structure/weightmachine/weightlifter,
|
||||
/obj/machinery/newscaster/directional/east,
|
||||
@@ -39202,6 +39219,19 @@
|
||||
},
|
||||
/turf/open/floor/iron,
|
||||
/area/station/maintenance/disposal/incinerator)
|
||||
"nUW" = (
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/item/stack/sheet/plasteel{
|
||||
amount = 15
|
||||
},
|
||||
/obj/item/assembly/prox_sensor{
|
||||
pixel_x = 5;
|
||||
pixel_y = 7
|
||||
},
|
||||
/obj/structure/fireaxecabinet/mechremoval/directional/east,
|
||||
/obj/item/stack/sheet/glass/fifty,
|
||||
/turf/open/floor/iron/dark/textured,
|
||||
/area/station/science/robotics/lab)
|
||||
"nVa" = (
|
||||
/obj/structure/closet/secure_closet/brig/genpop,
|
||||
/obj/machinery/firealarm/directional/south,
|
||||
@@ -42471,20 +42501,6 @@
|
||||
/obj/machinery/digital_clock/directional/south,
|
||||
/turf/open/floor/iron/white/textured_large,
|
||||
/area/station/medical/treatment_center)
|
||||
"pfz" = (
|
||||
/obj/item/stack/sheet/glass,
|
||||
/obj/item/clothing/glasses/welding,
|
||||
/obj/item/disk/tech_disk{
|
||||
pixel_y = 6
|
||||
},
|
||||
/obj/item/reagent_containers/dropper,
|
||||
/obj/structure/table,
|
||||
/obj/machinery/requests_console/auto_name/directional/north,
|
||||
/obj/effect/mapping_helpers/requests_console/supplies,
|
||||
/obj/effect/mapping_helpers/requests_console/ore_update,
|
||||
/obj/effect/mapping_helpers/requests_console/assistance,
|
||||
/turf/open/floor/iron/white,
|
||||
/area/station/science/lab)
|
||||
"pfV" = (
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/iron,
|
||||
@@ -49567,12 +49583,6 @@
|
||||
/obj/machinery/digital_clock/directional/south,
|
||||
/turf/open/floor/iron/white,
|
||||
/area/station/science/lab)
|
||||
"rBL" = (
|
||||
/obj/machinery/computer/records/medical,
|
||||
/obj/effect/turf_decal/tile/red/fourcorners,
|
||||
/obj/machinery/computer/security/telescreen/med_sec/directional/north,
|
||||
/turf/open/floor/iron/dark,
|
||||
/area/station/security/checkpoint/medical)
|
||||
"rBT" = (
|
||||
/obj/structure/window/reinforced/spawner/directional/east,
|
||||
/obj/structure/transit_tube/station/dispenser/reverse{
|
||||
@@ -49759,6 +49769,10 @@
|
||||
/obj/machinery/firealarm/directional/north,
|
||||
/turf/open/floor/iron,
|
||||
/area/station/engineering/storage)
|
||||
"rEm" = (
|
||||
/obj/machinery/camera/autoname/directional/west,
|
||||
/turf/open/floor/grass,
|
||||
/area/station/service/hydroponics/garden)
|
||||
"rEp" = (
|
||||
/obj/structure/cable,
|
||||
/obj/effect/turf_decal/tile/dark_blue/half/contrasted{
|
||||
@@ -49937,6 +49951,16 @@
|
||||
/obj/structure/disposalpipe/segment,
|
||||
/turf/open/floor/iron,
|
||||
/area/station/cargo/sorting)
|
||||
"rHk" = (
|
||||
/obj/machinery/airalarm/directional/east,
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/item/storage/toolbox/mechanical,
|
||||
/obj/item/clothing/head/utility/welding,
|
||||
/obj/effect/turf_decal/siding/purple{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/iron,
|
||||
/area/station/science/robotics/mechbay)
|
||||
"rHm" = (
|
||||
/obj/structure/lattice/catwalk,
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
|
||||
@@ -53807,11 +53831,6 @@
|
||||
},
|
||||
/turf/open/floor/iron,
|
||||
/area/station/command/bridge)
|
||||
"sXs" = (
|
||||
/obj/machinery/computer/security/telescreen/rd/directional/south,
|
||||
/obj/machinery/keycard_auth/wall_mounted/directional/south,
|
||||
/turf/open/floor/glass/reinforced/plasma,
|
||||
/area/station/command/heads_quarters/rd)
|
||||
"sXG" = (
|
||||
/obj/effect/turf_decal/tile/purple/opposingcorners,
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
|
||||
@@ -58832,6 +58851,12 @@
|
||||
/obj/structure/cable,
|
||||
/turf/open/floor/plating/airless,
|
||||
/area/station/solars/port)
|
||||
"uJq" = (
|
||||
/obj/machinery/computer/records/medical,
|
||||
/obj/effect/turf_decal/tile/red/fourcorners,
|
||||
/obj/machinery/computer/security/telescreen/med_sec/directional/north,
|
||||
/turf/open/floor/iron/dark,
|
||||
/area/station/security/checkpoint/medical)
|
||||
"uJt" = (
|
||||
/obj/effect/mapping_helpers/engraving,
|
||||
/turf/closed/wall,
|
||||
@@ -66442,19 +66467,6 @@
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
|
||||
/turf/open/floor/carpet/purple,
|
||||
/area/station/service/library)
|
||||
"xvO" = (
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/item/stack/sheet/plasteel{
|
||||
amount = 15
|
||||
},
|
||||
/obj/item/assembly/prox_sensor{
|
||||
pixel_x = 5;
|
||||
pixel_y = 7
|
||||
},
|
||||
/obj/structure/fireaxecabinet/mechremoval/directional/east,
|
||||
/obj/item/stack/sheet/glass/fifty,
|
||||
/turf/open/floor/iron/dark/textured,
|
||||
/area/station/science/robotics/lab)
|
||||
"xvU" = (
|
||||
/obj/effect/landmark/event_spawn,
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
|
||||
@@ -82777,7 +82789,7 @@ mBj
|
||||
jHx
|
||||
iJF
|
||||
kFT
|
||||
rBL
|
||||
uJq
|
||||
sGt
|
||||
ltj
|
||||
fvo
|
||||
@@ -87401,7 +87413,7 @@ xlw
|
||||
qfB
|
||||
vyO
|
||||
hjW
|
||||
dGs
|
||||
bSi
|
||||
rdP
|
||||
qfB
|
||||
rgx
|
||||
@@ -88940,7 +88952,7 @@ tIH
|
||||
tIH
|
||||
tIH
|
||||
iuv
|
||||
ggl
|
||||
rEm
|
||||
tIH
|
||||
tIH
|
||||
kAg
|
||||
@@ -103815,7 +103827,7 @@ tdk
|
||||
hkc
|
||||
swi
|
||||
dHy
|
||||
atk
|
||||
rHk
|
||||
trL
|
||||
nMP
|
||||
xOU
|
||||
@@ -104319,7 +104331,7 @@ vfJ
|
||||
xbu
|
||||
gMK
|
||||
cPt
|
||||
pfz
|
||||
dPo
|
||||
wtu
|
||||
dfr
|
||||
mKF
|
||||
@@ -104340,7 +104352,7 @@ qnQ
|
||||
xcb
|
||||
wCO
|
||||
tld
|
||||
xvO
|
||||
nUW
|
||||
azv
|
||||
azv
|
||||
azv
|
||||
@@ -177836,7 +177848,7 @@ gmH
|
||||
rXS
|
||||
tOL
|
||||
fPv
|
||||
sXs
|
||||
miq
|
||||
iFN
|
||||
mZn
|
||||
oND
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
dir = 4
|
||||
},
|
||||
/obj/machinery/light/small/blacklight/directional/east,
|
||||
/turf/open/floor/bitrunning_transport,
|
||||
/turf/open/indestructible/bitrunning_transport,
|
||||
/area/virtual_domain/safehouse)
|
||||
"v" = (
|
||||
/obj/machinery/light/small/blacklight/directional/east,
|
||||
@@ -68,7 +68,7 @@
|
||||
/obj/effect/turf_decal/loading_area{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/bitrunning_transport,
|
||||
/turf/open/indestructible/bitrunning_transport,
|
||||
/area/virtual_domain/safehouse)
|
||||
"M" = (
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
/obj/effect/turf_decal/loading_area{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/bitrunning_transport,
|
||||
/turf/open/indestructible/bitrunning_transport,
|
||||
/area/virtual_domain/safehouse)
|
||||
"e" = (
|
||||
/obj/structure/table/reinforced/plastitaniumglass,
|
||||
@@ -59,7 +59,7 @@
|
||||
/obj/effect/turf_decal/loading_area{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/bitrunning_transport,
|
||||
/turf/open/indestructible/bitrunning_transport,
|
||||
/area/virtual_domain/safehouse)
|
||||
"z" = (
|
||||
/obj/effect/turf_decal/trimline/yellow/corner{
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
dir = 8
|
||||
},
|
||||
/obj/effect/landmark/bitrunning/cache_goal_turf,
|
||||
/turf/open/floor/bitrunning_transport,
|
||||
/turf/open/indestructible/bitrunning_transport,
|
||||
/area/virtual_domain/safehouse)
|
||||
"i" = (
|
||||
/obj/effect/turf_decal/siding/yellow{
|
||||
@@ -98,7 +98,7 @@
|
||||
/obj/effect/turf_decal/loading_area,
|
||||
/obj/effect/turf_decal/box/corners,
|
||||
/obj/effect/landmark/bitrunning/cache_goal_turf,
|
||||
/turf/open/floor/bitrunning_transport,
|
||||
/turf/open/indestructible/bitrunning_transport,
|
||||
/area/virtual_domain/safehouse)
|
||||
"T" = (
|
||||
/obj/effect/landmark/bitrunning/hololadder_spawn,
|
||||
|
||||
@@ -60,7 +60,7 @@
|
||||
/obj/effect/turf_decal/loading_area{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/bitrunning_transport,
|
||||
/turf/open/indestructible/bitrunning_transport,
|
||||
/area/virtual_domain/safehouse)
|
||||
"p" = (
|
||||
/obj/structure/railing,
|
||||
@@ -69,7 +69,7 @@
|
||||
/obj/effect/turf_decal/loading_area{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/bitrunning_transport,
|
||||
/turf/open/indestructible/bitrunning_transport,
|
||||
/area/virtual_domain/safehouse)
|
||||
"u" = (
|
||||
/obj/effect/decal/cleanable/dirt/dust,
|
||||
|
||||
@@ -63,7 +63,7 @@
|
||||
/obj/machinery/light/directional/east,
|
||||
/obj/structure/railing,
|
||||
/obj/effect/landmark/bitrunning/cache_goal_turf,
|
||||
/turf/open/floor/bitrunning_transport,
|
||||
/turf/open/indestructible/bitrunning_transport,
|
||||
/area/virtual_domain/safehouse)
|
||||
"A" = (
|
||||
/obj/effect/turf_decal/trimline/brown/filled/line{
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
},
|
||||
/obj/machinery/light/directional/east,
|
||||
/obj/effect/landmark/bitrunning/cache_goal_turf,
|
||||
/turf/open/floor/bitrunning_transport,
|
||||
/turf/open/indestructible/bitrunning_transport,
|
||||
/area/virtual_domain/safehouse)
|
||||
"B" = (
|
||||
/obj/effect/turf_decal/trimline/brown/filled/line{
|
||||
@@ -52,7 +52,7 @@
|
||||
},
|
||||
/obj/structure/railing,
|
||||
/obj/effect/landmark/bitrunning/cache_goal_turf,
|
||||
/turf/open/floor/bitrunning_transport,
|
||||
/turf/open/indestructible/bitrunning_transport,
|
||||
/area/virtual_domain/safehouse)
|
||||
"H" = (
|
||||
/obj/machinery/door/airlock/external/glass{
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/effect/landmark/bitrunning/cache_goal_turf,
|
||||
/obj/effect/turf_decal/loading_area,
|
||||
/turf/open/floor/bitrunning_transport,
|
||||
/turf/open/indestructible/bitrunning_transport,
|
||||
/area/virtual_domain/safehouse)
|
||||
"i" = (
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
@@ -41,7 +41,7 @@
|
||||
/obj/machinery/light/small/directional/south,
|
||||
/obj/effect/landmark/bitrunning/cache_goal_turf,
|
||||
/obj/effect/turf_decal/loading_area,
|
||||
/turf/open/floor/bitrunning_transport,
|
||||
/turf/open/indestructible/bitrunning_transport,
|
||||
/area/virtual_domain/safehouse)
|
||||
"m" = (
|
||||
/obj/modular_map_connector,
|
||||
|
||||
@@ -67,7 +67,7 @@
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/effect/landmark/bitrunning/cache_goal_turf,
|
||||
/obj/effect/turf_decal/loading_area,
|
||||
/turf/open/floor/bitrunning_transport,
|
||||
/turf/open/indestructible/bitrunning_transport,
|
||||
/area/virtual_domain/safehouse)
|
||||
"z" = (
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
@@ -98,7 +98,7 @@
|
||||
/obj/machinery/light/small/directional/south,
|
||||
/obj/effect/landmark/bitrunning/cache_goal_turf,
|
||||
/obj/effect/turf_decal/loading_area,
|
||||
/turf/open/floor/bitrunning_transport,
|
||||
/turf/open/indestructible/bitrunning_transport,
|
||||
/area/virtual_domain/safehouse)
|
||||
"E" = (
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
/obj/effect/turf_decal/loading_area{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/bitrunning_transport,
|
||||
/turf/open/indestructible/bitrunning_transport,
|
||||
/area/virtual_domain/safehouse)
|
||||
"v" = (
|
||||
/obj/machinery/light/small/directional/east,
|
||||
@@ -50,7 +50,7 @@
|
||||
/obj/effect/turf_decal/loading_area{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/bitrunning_transport,
|
||||
/turf/open/indestructible/bitrunning_transport,
|
||||
/area/virtual_domain/safehouse)
|
||||
"T" = (
|
||||
/obj/effect/landmark/bitrunning/hololadder_spawn,
|
||||
|
||||
@@ -759,7 +759,9 @@
|
||||
/turf/open/indestructible/white,
|
||||
/area/lavaland/surface/outdoors/virtual_domain)
|
||||
"WT" = (
|
||||
/obj/machinery/door/airlock/bananium,
|
||||
/obj/machinery/door/airlock/bananium{
|
||||
use_power = 0
|
||||
},
|
||||
/turf/open/floor/carpet,
|
||||
/area/lavaland/surface/outdoors/virtual_domain)
|
||||
"WX" = (
|
||||
|
||||
@@ -2540,7 +2540,7 @@
|
||||
/area/virtual_domain)
|
||||
"GD" = (
|
||||
/obj/effect/landmark/bitrunning/permanent_exit,
|
||||
/turf/open/floor/bitrunning_transport,
|
||||
/turf/open/indestructible/bitrunning_transport,
|
||||
/area/virtual_domain/protected_space/fullbright)
|
||||
"GI" = (
|
||||
/turf/open/floor/iron/dark/textured_large,
|
||||
|
||||
@@ -24,6 +24,8 @@
|
||||
///the list of interactions we can have with the owner
|
||||
#define BB_INTERACTIONS_WITH_OWNER "BB_interactions_with_owner"
|
||||
|
||||
///The trait checked by ai_behavior/find_potential_targets/prioritize_trait to return a target with a trait over the rest.
|
||||
#define BB_TARGET_PRIORITY_TRAIT "target_priority_trait"
|
||||
|
||||
/// Store a single or list of emotes at this key
|
||||
#define BB_EMOTE_KEY "BB_emotes"
|
||||
|
||||
@@ -70,8 +70,12 @@
|
||||
#define BB_LOBSTROSITY_TARGET_LIMB "BB_lobstrosity_target_limb"
|
||||
/// We increment this counter every time we try to move while dragging an arm and if we go too long we'll give up trying to get out of line of sight and just eat the fingers
|
||||
#define BB_LOBSTROSITY_FINGER_LUST "BB_lobstrosity_finger_lust"
|
||||
/// Does this carp still target lying mobs even if they aren't stunned, and flee from sary fishermen?
|
||||
#define BB_LOBSTROSITY_NAIVE_HUNTER "BB_lobstrosity_naive_hunter"
|
||||
|
||||
/// Does this carp run from scary fishermen?
|
||||
#define BB_CARPS_FEAR_FISHERMAN "BB_carp_fear_fisherman"
|
||||
|
||||
// eyeball keys
|
||||
///the death glare ability
|
||||
#define BB_GLARE_ABILITY "BB_glare_ability"
|
||||
|
||||
@@ -70,5 +70,3 @@ GLOBAL_VAR_INIT(gutlunch_count, 0)
|
||||
#define BB_RAPTOR_TROUGH_TARGET "raptor_trough_target"
|
||||
|
||||
#define MAX_RAPTOR_POP 64
|
||||
|
||||
|
||||
|
||||
@@ -106,6 +106,8 @@ DEFINE_BITFIELD(no_equip_flags, list(
|
||||
#define HIDESNOUT (1<<12)
|
||||
///hides mutant/moth wings, does not apply to functional wings
|
||||
#define HIDEMUTWINGS (1<<13)
|
||||
///hides belts and riggings
|
||||
#define HIDEBELT (1<<14)
|
||||
|
||||
//SKYRAT EDIT ADDITION: CUSTOM EAR TOGGLE FOR ANTHRO/ETC EAR SHOWING -
|
||||
/// Manually set this on items you want anthro ears to show on!
|
||||
|
||||
@@ -100,7 +100,7 @@
|
||||
#define JOB_CHAPLAIN "Chaplain"
|
||||
#define JOB_PSYCHOLOGIST "Psychologist"
|
||||
#define JOB_BARBER "Barber" // SKYRAT EDIT ADDITION
|
||||
#define JOB_BOUNCER "Service Guard" // SKYRAT EDIT ADDITION
|
||||
#define JOB_BOUNCER "Bouncer" // SKYRAT EDIT ADDITION
|
||||
//ERTs
|
||||
#define JOB_ERT_DEATHSQUAD "Death Commando"
|
||||
#define JOB_ERT_COMMANDER "Emergency Response Team Commander"
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
#define MAX_BOULDERS_PER_VENT 10
|
||||
/// Time multiplier
|
||||
#define INATE_BOULDER_SPEED_MULTIPLIER 3
|
||||
|
||||
// Vent type
|
||||
/// Large vents, giving large boulders.
|
||||
#define LARGE_VENT_TYPE "large"
|
||||
@@ -17,6 +18,14 @@
|
||||
/// Small vents, giving small boulders.
|
||||
#define SMALL_VENT_TYPE "small"
|
||||
|
||||
// Timers for the ore vents to perform wave defense.
|
||||
/// Duration for wave defense for a small vent.
|
||||
#define WAVE_DURATION_SMALL 60 SECONDS
|
||||
/// Duration for wave defense for a medium vent.
|
||||
#define WAVE_DURATION_MEDIUM 90 SECONDS
|
||||
/// Duration for wave defense for a large vent.
|
||||
#define WAVE_DURATION_LARGE 150 SECONDS
|
||||
|
||||
/// Proximity to a vent that a wall ore needs to be for 5 ore to be mined.
|
||||
#define VENT_PROX_VERY_HIGH 3
|
||||
/// Proximity to a vent that a wall ore needs to be for 4 ore to be mined.
|
||||
|
||||
@@ -225,6 +225,8 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai
|
||||
#define TRAIT_REVEAL_FISH "reveal_fish"
|
||||
///This trait gets you a list of fishes that can be caught when examining a fishing spot.
|
||||
#define TRAIT_EXAMINE_FISHING_SPOT "examine_fishing_spot"
|
||||
///lobstrosities and carps will prioritize/flee from those that have this trait (given by the skill-locked hat)
|
||||
#define TRAIT_SCARY_FISHERMAN "scary_fisherman"
|
||||
///Trait given to turfs or objects that can be fished from
|
||||
#define TRAIT_FISHING_SPOT "fishing_spot"
|
||||
///Trait given to mobs that can fish without a rod
|
||||
@@ -1125,6 +1127,9 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai
|
||||
///Trait given to limb by /mob/living/basic/living_limb_flesh
|
||||
#define TRAIT_IGNORED_BY_LIVING_FLESH "livingflesh_ignored"
|
||||
|
||||
///Trait given to organs that have been inside a living being previously
|
||||
#define TRAIT_USED_ORGAN "used_organ"
|
||||
|
||||
/// Trait given while using /datum/action/cooldown/mob_cooldown/wing_buffet
|
||||
#define TRAIT_WING_BUFFET "wing_buffet"
|
||||
/// Trait given while tired after using /datum/action/cooldown/mob_cooldown/wing_buffet
|
||||
|
||||
@@ -36,9 +36,12 @@
|
||||
|
||||
/// Typepath used for uplink items which don't actually produce an item (essentially just a placeholder)
|
||||
/// Future todo: Make this not necessary / make uplink items support item-less items natively
|
||||
#define ABSTRACT_UPLINK_ITEM /obj/effect/gibspawner/generic
|
||||
#define ABSTRACT_UPLINK_ITEM /obj/item/loot_table_maker
|
||||
|
||||
/// Lower threshold for which an uplink items's TC cost is considered "low" for spy bounties picking rewards
|
||||
#define SPY_LOWER_COST_THRESHOLD 5
|
||||
/// Upper threshold for which an uplink items's TC cost is considered "high" for spy bounties picking rewards
|
||||
#define SPY_UPPER_COST_THRESHOLD 12
|
||||
|
||||
/// Minimal cost for an item to be eligible for a discount
|
||||
#define TRAITOR_DISCOUNT_MIN_PRICE 4
|
||||
|
||||
@@ -69,14 +69,20 @@
|
||||
|
||||
//In inches
|
||||
#define PENIS_MIN_GIRTH PENIS_MIN_LENGTH
|
||||
#define PENIS_MAX_GIRTH 15
|
||||
#define PENIS_MAX_GIRTH 20
|
||||
/// for non oversized mobs with a 'normal' body size
|
||||
#define PENIS_MAX_GIRTH_NORMAL_SIZED 15
|
||||
#define PENIS_DEFAULT_GIRTH 5 // a lil big but not by much
|
||||
#define PENIS_MIN_LENGTH 1
|
||||
#define PENIS_MAX_LENGTH 20
|
||||
#define PENIS_MAX_LENGTH 36
|
||||
/// for non oversized mobs with a 'normal' body size
|
||||
#define PENIS_MAX_LENGTH_NORMAL_SIZED 20
|
||||
#define PENIS_DEFAULT_LENGTH 6 //still a lil long but not insane
|
||||
|
||||
#define TESTICLES_MIN_SIZE 0
|
||||
#define TESTICLES_MAX_SIZE 3
|
||||
#define TESTICLES_MAX_SIZE 6
|
||||
/// for non oversized mobs with a 'normal' body size
|
||||
#define TESTICLES_MAX_NORMAL_SIZED 3
|
||||
|
||||
#define SHEATH_NONE "None"
|
||||
#define SHEATH_NORMAL "Sheath"
|
||||
|
||||
@@ -1,5 +1,9 @@
|
||||
#define COMSIG_KB_MOB_PIXEL_SHIFT_DOWN "keybinding_mob_pixel_shift_down"
|
||||
#define COMSIG_KB_MOB_PIXEL_SHIFT_UP "keybinding_mob_pixel_shift_up"
|
||||
#define COMSIG_KB_MOB_ITEM_PIXEL_SHIFT_DOWN "keybinding_mob_item_pixelshift_down"
|
||||
#define COMSIG_KB_MOB_ITEM_PIXEL_SHIFT_UP "keybinding_mob_item_pixelshift_up"
|
||||
#define COMSIG_KB_MOB_PIXEL_TILT_DOWN "keybinding_mob_pixeltilt_down"
|
||||
#define COMSIG_KB_MOB_PIXEL_TILT_UP "keybinding_mob_pixeltilt_up"
|
||||
#define COMSIG_KB_CLIENT_LOOC_DOWN "keybinding_client_looc_down"
|
||||
#define COMSIG_KB_CLIENT_WHISPER_DOWN "keybinding_client_whisper_down"
|
||||
#define COMSIG_KB_LIVING_COMBAT_INDICATOR "keybinding_living_combat_indicator"
|
||||
|
||||
@@ -214,16 +214,16 @@
|
||||
if(istype(atom_to_find, type))
|
||||
return atom_to_find
|
||||
|
||||
while(!istype(atom_to_find.loc, type))
|
||||
while(!istype(atom_to_find, type))
|
||||
if(!atom_to_find.loc)
|
||||
return
|
||||
atom_to_find = atom_to_find.loc
|
||||
else if(isatom(type))
|
||||
atom_to_find = target
|
||||
if(atom_to_find.loc == type)
|
||||
if(atom_to_find == type)
|
||||
return atom_to_find
|
||||
|
||||
while(atom_to_find.loc != type)
|
||||
while(atom_to_find != type)
|
||||
if(!atom_to_find.loc)
|
||||
return
|
||||
atom_to_find = atom_to_find.loc
|
||||
|
||||
@@ -121,7 +121,7 @@
|
||||
if(isnull(user_input)) // User pressed cancel
|
||||
return
|
||||
if(no_trim)
|
||||
return copytext(html_encode(user_input), 1, max_length)
|
||||
return copytext_char(html_encode(user_input), 1, max_length)
|
||||
else
|
||||
return trim(html_encode(user_input), max_length) //trim is "outside" because html_encode can expand single symbols into multiple symbols (such as turning < into <)
|
||||
|
||||
@@ -140,7 +140,7 @@
|
||||
if(isnull(user_input)) // User pressed cancel
|
||||
return
|
||||
if(no_trim)
|
||||
return copytext(html_encode(user_input), 1, max_length)
|
||||
return copytext_char(html_encode(user_input), 1, max_length)
|
||||
else
|
||||
return trim(html_encode(user_input), max_length)
|
||||
|
||||
@@ -368,7 +368,7 @@
|
||||
*/
|
||||
/proc/truncate(text, max_length)
|
||||
if(length(text) > max_length)
|
||||
return copytext(text, 1, max_length)
|
||||
return copytext_char(text, 1, max_length)
|
||||
return text
|
||||
|
||||
//Returns a string with reserved characters and spaces before the first word and after the last word removed.
|
||||
|
||||
@@ -200,6 +200,7 @@ DEFINE_BITFIELD(flags_inv, list(
|
||||
"HIDEHEADGEAR" = HIDEHEADGEAR,
|
||||
"HIDEJUMPSUIT" = HIDEJUMPSUIT,
|
||||
"HIDEMASK" = HIDEMASK,
|
||||
"HIDEBELT" = HIDEBELT,
|
||||
"HIDENECK" = HIDENECK,
|
||||
"HIDESHOES" = HIDESHOES,
|
||||
"HIDESNOUT" = HIDESNOUT,
|
||||
|
||||
@@ -61,6 +61,7 @@ GLOBAL_LIST_INIT(traits_by_type, list(
|
||||
"TRAIT_ODD_CUSTOMIZABLE_FOOD_INGREDIENT" = TRAIT_ODD_CUSTOMIZABLE_FOOD_INGREDIENT,
|
||||
"TRAIT_ON_HIT_EFFECT" = TRAIT_ON_HIT_EFFECT,
|
||||
"TRAIT_RUNECHAT_HIDDEN" = TRAIT_RUNECHAT_HIDDEN,
|
||||
"TRAIT_SCARY_FISHERMAN" = TRAIT_SCARY_FISHERMAN,
|
||||
"TRAIT_SECLUDED_LOCATION" = TRAIT_SECLUDED_LOCATION,
|
||||
"TRAIT_SNOWSTORM_IMMUNE" = TRAIT_SNOWSTORM_IMMUNE,
|
||||
"TRAIT_TELEKINESIS_CONTROLLED" = TRAIT_TELEKINESIS_CONTROLLED,
|
||||
@@ -218,7 +219,6 @@ GLOBAL_LIST_INIT(traits_by_type, list(
|
||||
"TRAIT_ECHOLOCATION_RECEIVER" = TRAIT_ECHOLOCATION_RECEIVER,
|
||||
"TRAIT_ELDRITCH_PAINTING_EXAMINE" = TRAIT_ELDRITCH_PAINTING_EXAMINE,
|
||||
"TRAIT_ELITE_CHALLENGER" = TRAIT_ELITE_CHALLENGER,
|
||||
"TRAIT_EMOTEMUTE " = TRAIT_EMOTEMUTE,
|
||||
"TRAIT_EMOTEMUTE" = TRAIT_EMOTEMUTE,
|
||||
"TRAIT_EMPATH" = TRAIT_EMPATH,
|
||||
"TRAIT_ENTRAILS_READER" = TRAIT_ENTRAILS_READER,
|
||||
@@ -617,6 +617,7 @@ GLOBAL_LIST_INIT(traits_by_type, list(
|
||||
),
|
||||
/obj/item/organ = list(
|
||||
"TRAIT_LIVING_HEART" = TRAIT_LIVING_HEART,
|
||||
"TRAIT_USED_ORGAN" = TRAIT_USED_ORGAN,
|
||||
),
|
||||
/obj/item/organ/internal/liver = list(
|
||||
"TRAIT_BALLMER_SCIENTIST" = TRAIT_BALLMER_SCIENTIST,
|
||||
|
||||
@@ -18,6 +18,7 @@ GLOBAL_LIST_INIT(admin_visible_traits, list(
|
||||
"TRAIT_MOVE_VENTCRAWLING" = TRAIT_MOVE_VENTCRAWLING,
|
||||
"TRAIT_MOVE_UPSIDE_DOWN" = TRAIT_MOVE_UPSIDE_DOWN,
|
||||
"TRAIT_RUNECHAT_HIDDEN" = TRAIT_RUNECHAT_HIDDEN,
|
||||
"TRAIT_SCARY_FISHERMAN" = TRAIT_SCARY_FISHERMAN,
|
||||
"TRAIT_SNOWSTORM_IMMUNE" = TRAIT_SNOWSTORM_IMMUNE,
|
||||
"TRAIT_VOIDSTORM_IMMUNE" = TRAIT_VOIDSTORM_IMMUNE,
|
||||
"TRAIT_WEATHER_IMMUNE" = TRAIT_WEATHER_IMMUNE,
|
||||
@@ -29,14 +30,21 @@ GLOBAL_LIST_INIT(admin_visible_traits, list(
|
||||
"TRAIT_AGENDER" = TRAIT_AGENDER,
|
||||
"TRAIT_AGEUSIA" = TRAIT_AGEUSIA,
|
||||
"TRAIT_ALCOHOL_TOLERANCE" = TRAIT_ALCOHOL_TOLERANCE,
|
||||
"TRAIT_ALLOW_HERETIC_CASTING" = TRAIT_ALLOW_HERETIC_CASTING,
|
||||
"TRAIT_ALWAYS_NO_ACCESS" = TRAIT_ALWAYS_NO_ACCESS,
|
||||
"TRAIT_ALWAYS_WANTED" = TRAIT_ALWAYS_WANTED,
|
||||
"TRAIT_ANOSMIA" = TRAIT_ANOSMIA,
|
||||
"TRAIT_ANTENNAE" = TRAIT_ANTENNAE,
|
||||
"TRAIT_ANTIMAGIC" = TRAIT_ANTIMAGIC,
|
||||
"TRAIT_ANTIMAGIC_NO_SELFBLOCK" = TRAIT_ANTIMAGIC_NO_SELFBLOCK,
|
||||
"TRAIT_ANXIOUS" = TRAIT_ANXIOUS,
|
||||
"TRAIT_BADDNA" = TRAIT_BADDNA,
|
||||
"TRAIT_BADTOUCH" = TRAIT_BADTOUCH,
|
||||
"TRAIT_BALD" = TRAIT_BALD,
|
||||
"TRAIT_BALLOON_SUTRA" = TRAIT_BALLOON_SUTRA,
|
||||
"TRAIT_BATON_RESISTANCE" = TRAIT_BATON_RESISTANCE,
|
||||
"TRAIT_BEAST_EMPATHY" = TRAIT_BEAST_EMPATHY,
|
||||
"TRAIT_BLOB_ALLY" = TRAIT_BLOB_ALLY,
|
||||
"TRAIT_BLOCK_SHUTTLE_MOVEMENT" = TRAIT_BLOCK_SHUTTLE_MOVEMENT,
|
||||
"TRAIT_BLOOD_CLANS" = TRAIT_BLOOD_CLANS,
|
||||
"TRAIT_BLOODSHOT_EYES" = TRAIT_BLOODSHOT_EYES,
|
||||
@@ -45,20 +53,27 @@ GLOBAL_LIST_INIT(admin_visible_traits, list(
|
||||
"TRAIT_BOOZE_SLIDER" = TRAIT_BOOZE_SLIDER,
|
||||
"TRAIT_BYPASS_MEASURES" = TRAIT_BYPASS_MEASURES,
|
||||
"TRAIT_CAN_HOLD_ITEMS" = TRAIT_CAN_HOLD_ITEMS,
|
||||
"TRAIT_CAN_STRIP" = TRAIT_CAN_STRIP,
|
||||
"TRAIT_CAN_USE_NUKE" = TRAIT_CAN_USE_NUKE,
|
||||
"TRAIT_CANNOT_BE_UNBUCKLED" = TRAIT_CANNOT_BE_UNBUCKLED,
|
||||
"TRAIT_CANNOT_OPEN_PRESENTS" = TRAIT_CANNOT_OPEN_PRESENTS,
|
||||
"TRAIT_CATLIKE_GRACE" = TRAIT_CATLIKE_GRACE,
|
||||
"TRAIT_CHASM_DESTROYED" = TRAIT_CHASM_DESTROYED,
|
||||
"TRAIT_CHUNKYFINGERS_IGNORE_BATON" = TRAIT_CHUNKYFINGERS_IGNORE_BATON,
|
||||
"TRAIT_CHUNKYFINGERS" = TRAIT_CHUNKYFINGERS,
|
||||
"TRAIT_CLEANBOT_WHISPERER" = TRAIT_CLEANBOT_WHISPERER,
|
||||
"TRAIT_CLIFF_WALKER" = TRAIT_CLIFF_WALKER,
|
||||
"TRAIT_CLOWN_ENJOYER" = TRAIT_CLOWN_ENJOYER,
|
||||
"TRAIT_CLUMSY" = TRAIT_CLUMSY,
|
||||
"TRAIT_COMMISSIONED" = TRAIT_COMMISSIONED,
|
||||
"TRAIT_CORPSELOCKED" = TRAIT_CORPSELOCKED,
|
||||
"TRAIT_CRITICAL_CONDITION" = TRAIT_CRITICAL_CONDITION,
|
||||
"TRAIT_CULT_HALO" = TRAIT_CULT_HALO,
|
||||
"TRAIT_DEAF" = TRAIT_DEAF,
|
||||
"TRAIT_DEATHCOMA" = TRAIT_DEATHCOMA,
|
||||
"TRAIT_DEFIB_BLACKLISTED" = TRAIT_DEFIB_BLACKLISTED,
|
||||
"TRAIT_DEPRESSION" = TRAIT_DEPRESSION,
|
||||
"TRAIT_DETECT_STORM" = TRAIT_DETECT_STORM,
|
||||
"TRAIT_DIAGNOSTIC_HUD" = TRAIT_DIAGNOSTIC_HUD,
|
||||
"TRAIT_BOT_PATH_HUD" = TRAIT_BOT_PATH_HUD,
|
||||
"TRAIT_DISCOORDINATED_TOOL_USER" = TRAIT_DISCOORDINATED_TOOL_USER,
|
||||
@@ -70,42 +85,59 @@ GLOBAL_LIST_INIT(admin_visible_traits, list(
|
||||
"TRAIT_DWARF" = TRAIT_DWARF,
|
||||
"TRAIT_EASILY_WOUNDED" = TRAIT_EASILY_WOUNDED,
|
||||
"TRAIT_EASYDISMEMBER" = TRAIT_EASYDISMEMBER,
|
||||
"TRAIT_EMOTEMUTE " = TRAIT_EMOTEMUTE,
|
||||
"TRAIT_EMOTEMUTE" = TRAIT_EMOTEMUTE,
|
||||
"TRAIT_EMPATH" = TRAIT_EMPATH,
|
||||
"TRAIT_ENTRAILS_READER" = TRAIT_ENTRAILS_READER,
|
||||
"TRAIT_EXAMINE_FISHING_SPOT" = TRAIT_EXAMINE_FISHING_SPOT,
|
||||
"TRAIT_EXAMINE_FITNESS" = TRAIT_EXAMINE_FITNESS,
|
||||
"TRAIT_EXPANDED_FOV" = TRAIT_EXPANDED_FOV,
|
||||
"TRAIT_EXPERT_FISHER" = TRAIT_EXPERT_FISHER,
|
||||
"TRAIT_EXTROVERT" = TRAIT_EXTROVERT,
|
||||
"TRAIT_FAKEDEATH" = TRAIT_FAKEDEATH,
|
||||
"TRAIT_FASTMED" = TRAIT_FASTMED,
|
||||
"TRAIT_FAST_CUFFING" = TRAIT_FAST_CUFFING,
|
||||
"TRAIT_FAST_TYING" = TRAIT_FAST_TYING,
|
||||
"TRAIT_FAT" = TRAIT_FAT,
|
||||
"TRAIT_FEARLESS" = TRAIT_FEARLESS,
|
||||
"TRAIT_FENCE_CLIMBER" = TRAIT_FENCE_CLIMBER,
|
||||
"TRAIT_FIST_MINING" = TRAIT_FIST_MINING,
|
||||
"TRAIT_FIXED_HAIRCOLOR" = TRAIT_FIXED_HAIRCOLOR,
|
||||
"TRAIT_FIXED_MUTANT_COLORS" = TRAIT_FIXED_MUTANT_COLORS,
|
||||
"TRAIT_FLESH_DESIRE" = TRAIT_FLESH_DESIRE,
|
||||
"TRAIT_FLOORED" = TRAIT_FLOORED,
|
||||
"TRAIT_FORBID_MINING_SHUTTLE_CONSOLE_OUTSIDE_STATION" = TRAIT_FORBID_MINING_SHUTTLE_CONSOLE_OUTSIDE_STATION,
|
||||
"TRAIT_FORCED_STANDING" = TRAIT_FORCED_STANDING,
|
||||
"TRAIT_FREERUNNING" = TRAIT_FREERUNNING,
|
||||
"TRAIT_FREE_FLOAT_MOVEMENT" = TRAIT_FREE_FLOAT_MOVEMENT,
|
||||
"TRAIT_FREE_HYPERSPACE_MOVEMENT" = TRAIT_FREE_HYPERSPACE_MOVEMENT,
|
||||
"TRAIT_FREE_HYPERSPACE_SOFTCORDON_MOVEMENT" = TRAIT_FREE_HYPERSPACE_SOFTCORDON_MOVEMENT,
|
||||
"TRAIT_FRIENDLY" = TRAIT_FRIENDLY,
|
||||
"TRAIT_GAMER" = TRAIT_GAMER,
|
||||
"TRAIT_GAMERGOD" = TRAIT_GAMERGOD,
|
||||
"TRAIT_GARLIC_BREATH" = TRAIT_GARLIC_BREATH,
|
||||
"TRAIT_GENELESS" = TRAIT_GENELESS,
|
||||
"TRAIT_GIANT" = TRAIT_GIANT,
|
||||
"TRAIT_GOOD_HEARING" = TRAIT_GOOD_HEARING,
|
||||
"TRAIT_GRABWEAKNESS" = TRAIT_GRABWEAKNESS,
|
||||
"TRAIT_GREENTEXT_CURSED" = TRAIT_GREENTEXT_CURSED,
|
||||
"TRAIT_GUNFLIP" = TRAIT_GUNFLIP,
|
||||
"TRAIT_GUN_NATURAL" = TRAIT_GUN_NATURAL,
|
||||
"TRAIT_HANDS_BLOCKED" = TRAIT_HANDS_BLOCKED,
|
||||
"TRAIT_HARDLY_WOUNDED" = TRAIT_HARDLY_WOUNDED,
|
||||
"TRAIT_HATED_BY_DOGS" = TRAIT_HATED_BY_DOGS,
|
||||
"TRAIT_HEAVY_DRINKER" = TRAIT_HEAVY_DRINKER,
|
||||
"TRAIT_HEAVY_SLEEPER" = TRAIT_HEAVY_SLEEPER,
|
||||
"TRAIT_HIDE_EXTERNAL_ORGANS" = TRAIT_HIDE_EXTERNAL_ORGANS,
|
||||
"TRAIT_HIGH_VALUE_RANSOM" = TRAIT_HIGH_VALUE_RANSOM,
|
||||
"TRAIT_HOLY" = TRAIT_HOLY,
|
||||
"TRAIT_HUSK" = TRAIT_HUSK,
|
||||
"TRAIT_ID_APPRAISER" = TRAIT_ID_APPRAISER,
|
||||
"TRAIT_IGNORE_ELEVATION" = TRAIT_IGNORE_ELEVATION,
|
||||
"TRAIT_IGNORESLOWDOWN" = TRAIT_IGNORESLOWDOWN,
|
||||
"TRAIT_ILLITERATE" = TRAIT_ILLITERATE,
|
||||
"TRAIT_IMMOBILIZED" = TRAIT_IMMOBILIZED,
|
||||
"TRAIT_INCAPACITATED" = TRAIT_INCAPACITATED,
|
||||
"TRAIT_INTROVERT" = TRAIT_INTROVERT,
|
||||
"TRAIT_INVISIBLE_MAN" = TRAIT_INVISIBLE_MAN,
|
||||
"TRAIT_IWASBATONED" = TRAIT_IWASBATONED,
|
||||
"TRAIT_JOLLY" = TRAIT_JOLLY,
|
||||
@@ -113,23 +145,28 @@ GLOBAL_LIST_INIT(admin_visible_traits, list(
|
||||
"TRAIT_KNOCKEDOUT" = TRAIT_KNOCKEDOUT,
|
||||
"TRAIT_KNOW_ENGI_WIRES" = TRAIT_KNOW_ENGI_WIRES,
|
||||
"TRAIT_KNOW_ROBO_WIRES" = TRAIT_KNOW_ROBO_WIRES,
|
||||
"TRAIT_LIGHTBULB_REMOVER" = TRAIT_LIGHTBULB_REMOVER,
|
||||
"TRAIT_LIGHT_DRINKER" = TRAIT_LIGHT_DRINKER,
|
||||
"TRAIT_LIGHT_STEP" = TRAIT_LIGHT_STEP,
|
||||
"TRAIT_LIGHTBULB_REMOVER" = TRAIT_LIGHTBULB_REMOVER,
|
||||
"TRAIT_LIMBATTACHMENT" = TRAIT_LIMBATTACHMENT,
|
||||
"TRAIT_LITERATE" = TRAIT_LITERATE,
|
||||
"TRAIT_LIVERLESS_METABOLISM" = TRAIT_LIVERLESS_METABOLISM,
|
||||
"TRAIT_MADNESS_IMMUNE" = TRAIT_MADNESS_IMMUNE,
|
||||
"TRAIT_MAGICALLY_GIFTED" = TRAIT_MAGICALLY_GIFTED,
|
||||
"TRAIT_MARTIAL_ARTS_IMMUNE" = TRAIT_MARTIAL_ARTS_IMMUNE,
|
||||
"TRAIT_MEDICAL_HUD" = TRAIT_MEDICAL_HUD,
|
||||
"TRAIT_MIME_FAN" = TRAIT_MIME_FAN,
|
||||
"TRAIT_MIMING" = TRAIT_MIMING,
|
||||
"TRAIT_MINDSHIELD" = TRAIT_MINDSHIELD,
|
||||
"TRAIT_MOB_HIDE_HAPPINESS" = TRAIT_MOB_HIDE_HAPPINESS,
|
||||
"TRAIT_MORBID" = TRAIT_MORBID,
|
||||
"TRAIT_MULTIZ_SUIT_SENSORS" = TRAIT_MULTIZ_SUIT_SENSORS,
|
||||
"TRAIT_MUSICIAN" = TRAIT_MUSICIAN,
|
||||
"TRAIT_MUTANT_COLORS" = TRAIT_MUTANT_COLORS,
|
||||
"TRAIT_MUTE" = TRAIT_MUTE,
|
||||
"TRAIT_NAIVE" = TRAIT_NAIVE,
|
||||
"TRAIT_NEGATES_GRAVITY" = TRAIT_NEGATES_GRAVITY,
|
||||
"TRAIT_NEVER_WOUNDED" = TRAIT_NEVER_WOUNDED,
|
||||
"TRAIT_NICE_SHOT" = TRAIT_NICE_SHOT,
|
||||
"TRAIT_NIGHT_VISION" = TRAIT_NIGHT_VISION,
|
||||
@@ -138,13 +175,18 @@ GLOBAL_LIST_INIT(admin_visible_traits, list(
|
||||
"TRAIT_NO_DNA_COPY" = TRAIT_NO_DNA_COPY,
|
||||
"TRAIT_NO_EXTINGUISH" = TRAIT_NO_EXTINGUISH,
|
||||
"TRAIT_NO_GLIDE" = TRAIT_NO_GLIDE,
|
||||
"TRAIT_NO_GUN_AKIMBO" = TRAIT_NO_GUN_AKIMBO,
|
||||
"TRAIT_NO_MINDSWAP" = TRAIT_NO_MINDSWAP,
|
||||
"TRAIT_NO_MIRROR_REFLECTION" = TRAIT_NO_MIRROR_REFLECTION,
|
||||
"TRAIT_NO_PLASMA_TRANSFORM" = TRAIT_NO_PLASMA_TRANSFORM,
|
||||
"TRAIT_NO_SLIP_ALL" = TRAIT_NO_SLIP_ALL,
|
||||
"TRAIT_NO_SLIP_ICE" = TRAIT_NO_SLIP_ICE,
|
||||
"TRAIT_NO_SLIP_SLIDE" = TRAIT_NO_SLIP_SLIDE,
|
||||
"TRAIT_NO_SLIP_WATER" = TRAIT_NO_SLIP_WATER,
|
||||
"TRAIT_NO_SOUL" = TRAIT_NO_SOUL,
|
||||
"TRAIT_NO_STAGGER" = TRAIT_NO_STAGGER,
|
||||
"TRAIT_NO_TRANSFORM" = TRAIT_NO_TRANSFORM,
|
||||
"TRAIT_NO_TWOHANDING" = TRAIT_NO_TWOHANDING,
|
||||
"TRAIT_NO_UNDERWEAR" = TRAIT_NO_UNDERWEAR,
|
||||
"TRAIT_NO_ZOMBIFY" = TRAIT_NO_ZOMBIFY,
|
||||
"TRAIT_NOBLOOD" = TRAIT_NOBLOOD,
|
||||
@@ -153,7 +195,10 @@ GLOBAL_LIST_INIT(admin_visible_traits, list(
|
||||
"TRAIT_NOCRITOVERLAY" = TRAIT_NOCRITOVERLAY,
|
||||
"TRAIT_NODEATH" = TRAIT_NODEATH,
|
||||
"TRAIT_NODISMEMBER" = TRAIT_NODISMEMBER,
|
||||
"TRAIT_NOFAT" = TRAIT_NOFAT,
|
||||
"TRAIT_NOFEAR_HOLDUPS" = TRAIT_NOFEAR_HOLDUPS,
|
||||
"TRAIT_NOFIRE" = TRAIT_NOFIRE,
|
||||
"TRAIT_NOFIRE_SPREAD" = TRAIT_NOFIRE_SPREAD,
|
||||
"TRAIT_NOFLASH" = TRAIT_NOFLASH,
|
||||
"TRAIT_NOGUNS" = TRAIT_NOGUNS,
|
||||
"TRAIT_TOSS_GUN_HARD" = TRAIT_TOSS_GUN_HARD,
|
||||
@@ -162,7 +207,9 @@ GLOBAL_LIST_INIT(admin_visible_traits, list(
|
||||
"TRAIT_NOLIMBDISABLE" = TRAIT_NOLIMBDISABLE,
|
||||
"TRAIT_NOMOBSWAP" = TRAIT_NOMOBSWAP,
|
||||
"TRAIT_NOSOFTCRIT" = TRAIT_NOSOFTCRIT,
|
||||
"TRAIT_OFF_BALANCE_TACKLER" = TRAIT_OFF_BALANCE_TACKLER,
|
||||
"TRAIT_OIL_FRIED" = TRAIT_OIL_FRIED,
|
||||
"TRAIT_OVERDOSEIMMUNE" = TRAIT_OVERDOSEIMMUNE,
|
||||
"TRAIT_OVERWATCH_IMMUNE" = TRAIT_OVERWATCH_IMMUNE,
|
||||
"TRAIT_PACIFISM" = TRAIT_PACIFISM,
|
||||
"TRAIT_HIPPOCRATIC_OATH" = TRAIT_HIPPOCRATIC_OATH,
|
||||
@@ -174,6 +221,7 @@ GLOBAL_LIST_INIT(admin_visible_traits, list(
|
||||
"TRAIT_PASSTABLE" = TRAIT_PASSTABLE,
|
||||
"TRAIT_PASSWINDOW" = TRAIT_PASSWINDOW,
|
||||
"TRAIT_PERFECT_ATTACKER" = TRAIT_PERFECT_ATTACKER,
|
||||
"TRAIT_PERMANENTLY_MORTAL" = TRAIT_PERMANENTLY_MORTAL,
|
||||
"TRAIT_PHOTOGRAPHER" = TRAIT_PHOTOGRAPHER,
|
||||
"TRAIT_PIERCEIMMUNE" = TRAIT_PIERCEIMMUNE,
|
||||
"TRAIT_PLANT_SAFE" = TRAIT_PLANT_SAFE,
|
||||
@@ -184,16 +232,22 @@ GLOBAL_LIST_INIT(admin_visible_traits, list(
|
||||
"TRAIT_PROSOPAGNOSIA" = TRAIT_PROSOPAGNOSIA,
|
||||
"TRAIT_PULL_BLOCKED" = TRAIT_PULL_BLOCKED,
|
||||
"TRAIT_PUSHIMMUNE" = TRAIT_PUSHIMMUNE,
|
||||
"TRAIT_QUICK_BUILD" = TRAIT_QUICK_BUILD,
|
||||
"TRAIT_QUICK_CARRY" = TRAIT_QUICK_CARRY,
|
||||
"TRAIT_QUICKER_CARRY" = TRAIT_QUICKER_CARRY,
|
||||
"TRAIT_RADIMMUNE" = TRAIT_RADIMMUNE,
|
||||
"TRAIT_REMOTE_TASTING" = TRAIT_REMOTE_TASTING,
|
||||
"TRAIT_RESISTCOLD" = TRAIT_RESISTCOLD,
|
||||
"TRAIT_RESISTHEAT" = TRAIT_RESISTHEAT,
|
||||
"TRAIT_RESISTHEATHANDS" = TRAIT_RESISTHEATHANDS,
|
||||
"TRAIT_RESISTHIGHPRESSURE" = TRAIT_RESISTHIGHPRESSURE,
|
||||
"TRAIT_RESISTLOWPRESSURE" = TRAIT_RESISTLOWPRESSURE,
|
||||
"TRAIT_RESTRAINED" = TRAIT_RESTRAINED,
|
||||
"TRAIT_REVEAL_FISH" = TRAIT_REVEAL_FISH,
|
||||
"TRAIT_ROCK_STONER" = TRAIT_ROCK_STONER,
|
||||
"TRAIT_ROD_SUPLEX" = TRAIT_ROD_SUPLEX,
|
||||
"TRAIT_ROUGHRIDER" = TRAIT_ROUGHRIDER,
|
||||
"TRAIT_SABRAGE_PRO" = TRAIT_SABRAGE_PRO,
|
||||
"TRAIT_SECURITY_HUD" = TRAIT_SECURITY_HUD,
|
||||
"TRAIT_SELF_AWARE" = TRAIT_SELF_AWARE,
|
||||
"TRAIT_SETTLER" = TRAIT_SETTLER,
|
||||
@@ -208,23 +262,28 @@ GLOBAL_LIST_INIT(admin_visible_traits, list(
|
||||
"TRAIT_SLOW_FLIP" = TRAIT_SLOW_FLIP,
|
||||
"TRAIT_SMOKER" = TRAIT_SMOKER,
|
||||
"TRAIT_SNOB" = TRAIT_SNOB,
|
||||
"TRAIT_SOFTSPOKEN" = TRAIT_SOFTSPOKEN,
|
||||
"TRAIT_SOOTHED_THROAT" = TRAIT_SOOTHED_THROAT,
|
||||
"TRAIT_SPACEWALK" = TRAIT_SPACEWALK,
|
||||
"TRAIT_SPECIAL_TRAUMA_BOOST" = TRAIT_SPECIAL_TRAUMA_BOOST,
|
||||
"TRAIT_SPIRITUAL" = TRAIT_SPIRITUAL,
|
||||
"TRAIT_STABLEHEART" = TRAIT_STABLEHEART,
|
||||
"TRAIT_STABLELIVER" = TRAIT_STABLELIVER,
|
||||
"TRAIT_STRENGTH" = TRAIT_STRENGTH,
|
||||
"TRAIT_STRONG_GRABBER" = TRAIT_STRONG_GRABBER,
|
||||
"TRAIT_STRONG_STOMACH" = TRAIT_STRONG_STOMACH,
|
||||
"TRAIT_STUBBY_BODY" = TRAIT_STUBBY_BODY,
|
||||
"TRAIT_STUNIMMUNE" = TRAIT_STUNIMMUNE,
|
||||
"TRAIT_STURDY_FRAME" = TRAIT_STURDY_FRAME,
|
||||
"TRAIT_SUPERMATTER_SOOTHER" = TRAIT_SUPERMATTER_SOOTHER,
|
||||
"TRAIT_SURGEON" = TRAIT_SURGEON,
|
||||
"TRAIT_SURGICALLY_ANALYZED" = TRAIT_SURGICALLY_ANALYZED,
|
||||
"TRAIT_TAGGER" = TRAIT_TAGGER,
|
||||
"TRAIT_TENTACLE_IMMUNE" = TRAIT_TENTACLE_IMMUNE,
|
||||
"TRAIT_TESLA_SHOCKIMMUNE" = TRAIT_TESLA_SHOCKIMMUNE,
|
||||
"TRAIT_THERMAL_VISION" = TRAIT_THERMAL_VISION,
|
||||
"TRAIT_THROWINGARM" = TRAIT_THROWINGARM,
|
||||
"TRAIT_TIME_STOP_IMMUNE" = TRAIT_TIME_STOP_IMMUNE,
|
||||
"TRAIT_TOXIMMUNE" = TRAIT_TOXIMMUNE,
|
||||
"TRAIT_TOXINLOVER" = TRAIT_TOXINLOVER,
|
||||
"TRAIT_TRAIT_MEDIBOTCOMINGTHROUGH" = TRAIT_MEDIBOTCOMINGTHROUGH,
|
||||
@@ -240,7 +299,10 @@ GLOBAL_LIST_INIT(admin_visible_traits, list(
|
||||
"TRAIT_UNSTABLE" = TRAIT_UNSTABLE,
|
||||
"TRAIT_USED_DNA_VAULT" = TRAIT_USED_DNA_VAULT,
|
||||
"TRAIT_USES_SKINTONES" = TRAIT_USES_SKINTONES,
|
||||
"TRAIT_VENTCRAWLER_ALWAYS" = TRAIT_VENTCRAWLER_ALWAYS,
|
||||
"TRAIT_VENTCRAWLER_NUDE" = TRAIT_VENTCRAWLER_NUDE,
|
||||
"TRAIT_VIRUSIMMUNE" = TRAIT_VIRUSIMMUNE,
|
||||
"TRAIT_VIRUS_RESISTANCE" = TRAIT_VIRUS_RESISTANCE,
|
||||
"TRAIT_VORACIOUS" = TRAIT_VORACIOUS,
|
||||
"TRAIT_WOUND_LICKER" = TRAIT_WOUND_LICKER,
|
||||
"TRAIT_WEAK_SOUL" = TRAIT_WEAK_SOUL,
|
||||
|
||||
@@ -319,14 +319,14 @@ GLOBAL_LIST_EMPTY(radial_menus)
|
||||
current_page = WRAP(current_page + 1,1,pages+1)
|
||||
update_screen_objects()
|
||||
|
||||
/datum/radial_menu/proc/show_to(mob/M)
|
||||
/datum/radial_menu/proc/show_to(mob/M, offset_x = 0, offset_y = 0)
|
||||
if(current_user)
|
||||
hide()
|
||||
if(!M.client || !anchor)
|
||||
return
|
||||
current_user = M.client
|
||||
//Blank
|
||||
menu_holder = image(icon='icons/effects/effects.dmi',loc=anchor,icon_state="nothing", layer = RADIAL_BACKGROUND_LAYER)
|
||||
menu_holder = image(icon='icons/effects/effects.dmi',loc=anchor,icon_state="nothing", layer = RADIAL_BACKGROUND_LAYER, pixel_x = offset_x, pixel_y = offset_y)
|
||||
SET_PLANE_EXPLICIT(menu_holder, ABOVE_HUD_PLANE, M)
|
||||
menu_holder.appearance_flags |= KEEP_APART|RESET_ALPHA|RESET_COLOR|RESET_TRANSFORM
|
||||
menu_holder.vis_contents += elements + close_button
|
||||
@@ -358,7 +358,7 @@ GLOBAL_LIST_EMPTY(radial_menus)
|
||||
Choices should be a list where list keys are movables or text used for element names and return value
|
||||
and list values are movables/icons/images used for element icons
|
||||
*/
|
||||
/proc/show_radial_menu(mob/user, atom/anchor, list/choices, uniqueid, radius, datum/callback/custom_check, require_near = FALSE, tooltips = FALSE, no_repeat_close = FALSE, radial_slice_icon = "radial_slice", autopick_single_option = TRUE, entry_animation = TRUE, click_on_hover = FALSE)
|
||||
/proc/show_radial_menu(mob/user, atom/anchor, list/choices, uniqueid, radius, datum/callback/custom_check, require_near = FALSE, tooltips = FALSE, no_repeat_close = FALSE, radial_slice_icon = "radial_slice", autopick_single_option = TRUE, entry_animation = TRUE, click_on_hover = FALSE, user_space = FALSE)
|
||||
if(!user || !anchor || !length(choices))
|
||||
return
|
||||
|
||||
@@ -381,11 +381,18 @@ GLOBAL_LIST_EMPTY(radial_menus)
|
||||
menu.radius = radius
|
||||
if(istype(custom_check))
|
||||
menu.custom_check_callback = custom_check
|
||||
menu.anchor = anchor
|
||||
menu.anchor = user_space ? user : anchor
|
||||
menu.radial_slice_icon = radial_slice_icon
|
||||
menu.check_screen_border(user) //Do what's needed to make it look good near borders or on hud
|
||||
menu.set_choices(choices, tooltips, click_on_hover)
|
||||
menu.show_to(user)
|
||||
var/offset_x = 0
|
||||
var/offset_y = 0
|
||||
if (user_space)
|
||||
var/turf/user_turf = get_turf(user)
|
||||
var/turf/anchor_turf = get_turf(anchor)
|
||||
offset_x = (anchor_turf.x - user_turf.x) * world.icon_size + anchor.pixel_x - user.pixel_x
|
||||
offset_y = (anchor_turf.y - user_turf.y) * world.icon_size + anchor.pixel_y - user.pixel_y
|
||||
menu.show_to(user, offset_x, offset_y)
|
||||
menu.wait(user, anchor, require_near)
|
||||
var/answer = menu.selected_choice
|
||||
qdel(menu)
|
||||
|
||||
@@ -482,8 +482,26 @@
|
||||
|
||||
return TRUE
|
||||
|
||||
/atom/movable/screen/storage/cell
|
||||
|
||||
/atom/movable/screen/storage/cell/mouse_drop_receive(atom/target, mob/living/user, params)
|
||||
var/datum/storage/storage = master_ref?.resolve()
|
||||
|
||||
if (isnull(storage) || !istype(user) || storage != user.active_storage)
|
||||
return
|
||||
|
||||
if (!user.can_perform_action(storage.parent, FORBID_TELEKINESIS_REACH))
|
||||
return
|
||||
|
||||
if (target.loc != storage.real_location)
|
||||
return
|
||||
|
||||
/// Due to items in storage ignoring transparency for click hitboxes, this only can happen if we drag onto a free cell - aka after all current contents
|
||||
storage.real_location.contents -= target
|
||||
storage.real_location.contents += target
|
||||
storage.refresh_views()
|
||||
|
||||
/atom/movable/screen/storage/corner
|
||||
name = "storage"
|
||||
icon_state = "storage_corner_topleft"
|
||||
|
||||
/atom/movable/screen/storage/corner/top_right
|
||||
|
||||
@@ -37,6 +37,7 @@ GLOBAL_LIST_INIT_TYPED(quirk_blacklist, /list/datum/quirk, list(
|
||||
list(/datum/quirk/light_drinker, /datum/quirk/drunkhealing),
|
||||
list(/datum/quirk/oversized, /datum/quirk/freerunning),
|
||||
list(/datum/quirk/oversized, /datum/quirk/item_quirk/settler),
|
||||
list(/datum/quirk/echolocation, /datum/quirk/item_quirk/blindness, /datum/quirk/item_quirk/nearsighted, /datum/quirk/item_quirk/deafness),
|
||||
//SKYRAT EDIT ADDITION END
|
||||
))
|
||||
|
||||
|
||||
@@ -152,3 +152,15 @@ GLOBAL_LIST_INIT(target_interested_atoms, typecacheof(list(/mob, /obj/machinery/
|
||||
/// Returns the desired final target from the filtered list of targets
|
||||
/datum/ai_behavior/find_potential_targets/proc/pick_final_target(datum/ai_controller/controller, list/filtered_targets)
|
||||
return pick(filtered_targets)
|
||||
|
||||
/// Targets with the trait specified by the BB_TARGET_PRIORITY_TRAIT blackboard key will be prioritized over the rest.
|
||||
/datum/ai_behavior/find_potential_targets/prioritize_trait
|
||||
|
||||
/datum/ai_behavior/find_potential_targets/prioritize_trait/pick_final_target(datum/ai_controller/controller, list/filtered_targets)
|
||||
var/priority_targets = list()
|
||||
for(var/atom/target as anything in filtered_targets)
|
||||
if(HAS_TRAIT(target, controller.blackboard[BB_TARGET_PRIORITY_TRAIT]))
|
||||
priority_targets += target
|
||||
if(length(priority_targets))
|
||||
return pick(priority_targets)
|
||||
return ..()
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
/// Find something with a specific trait to run from
|
||||
/datum/ai_planning_subtree/find_target_prioritize_traits
|
||||
|
||||
/datum/ai_planning_subtree/find_target_prioritize_traits/SelectBehaviors(datum/ai_controller/controller, seconds_per_tick)
|
||||
. = ..()
|
||||
controller.queue_behavior(/datum/ai_behavior/find_potential_targets/prioritize_trait, BB_BASIC_MOB_CURRENT_TARGET, BB_TARGETING_STRATEGY, BB_BASIC_MOB_CURRENT_TARGET_HIDING_LOCATION, BB_TARGET_PRIORITY_TRAIT)
|
||||
@@ -12,6 +12,8 @@
|
||||
var/atom/flee_from = controller.blackboard[target_key]
|
||||
if (controller.blackboard[BB_BASIC_MOB_STOP_FLEEING] || QDELETED(flee_from))
|
||||
return
|
||||
if(!should_flee(controller, flee_from))
|
||||
return
|
||||
var/flee_distance = controller.blackboard[BB_BASIC_MOB_FLEE_DISTANCE] || DEFAULT_BASIC_FLEE_DISTANCE
|
||||
if (get_dist(controller.pawn, flee_from) >= flee_distance)
|
||||
return
|
||||
@@ -19,8 +21,21 @@
|
||||
controller.queue_behavior(flee_behaviour, target_key, hiding_place_key)
|
||||
return SUBTREE_RETURN_FINISH_PLANNING //we gotta get out of here.
|
||||
|
||||
/datum/ai_planning_subtree/flee_target/proc/should_flee(datum/ai_controller/controller, atom/flee_from)
|
||||
if (controller.blackboard[BB_BASIC_MOB_STOP_FLEEING] || QDELETED(flee_from))
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
/// Try to escape from your current target, without performing any other actions.
|
||||
/// Reads from some fleeing-specific targeting keys rather than the current mob target.
|
||||
/datum/ai_planning_subtree/flee_target/from_flee_key
|
||||
target_key = BB_BASIC_MOB_FLEE_TARGET
|
||||
hiding_place_key = BB_BASIC_MOB_FLEE_TARGET_HIDING_LOCATION
|
||||
|
||||
/// A subtype that forces the mob to flee from targets with the scary fisherman trait anyway.
|
||||
/datum/ai_planning_subtree/flee_target/from_fisherman
|
||||
|
||||
/datum/ai_planning_subtree/flee_target/from_fisherman/should_flee(datum/ai_controller/controller, atom/flee_from)
|
||||
if (!QDELETED(flee_from) && HAS_TRAIT(flee_from, TRAIT_SCARY_FISHERMAN))
|
||||
return TRUE
|
||||
return ..()
|
||||
|
||||
@@ -22,3 +22,12 @@
|
||||
return
|
||||
controller.queue_behavior(ranged_attack_behavior, BB_BASIC_MOB_CURRENT_TARGET, BB_TARGETING_STRATEGY, BB_BASIC_MOB_CURRENT_TARGET_HIDING_LOCATION)
|
||||
return SUBTREE_RETURN_FINISH_PLANNING //we are going into battle...no distractions.
|
||||
|
||||
/datum/ai_planning_subtree/basic_melee_attack_subtree/no_fisherman
|
||||
|
||||
/datum/ai_planning_subtree/basic_melee_attack_subtree/no_fisherman/SelectBehaviors(datum/ai_controller/controller, seconds_per_tick)
|
||||
var/atom/movable/target = controller.blackboard[BB_BASIC_MOB_CURRENT_TARGET]
|
||||
if(QDELETED(target))
|
||||
return ..()
|
||||
if(!HAS_TRAIT(target, TRAIT_SCARY_FISHERMAN))
|
||||
return ..()
|
||||
|
||||
@@ -12,4 +12,3 @@
|
||||
if(watcher.stat != DEAD)
|
||||
return
|
||||
return ..()
|
||||
|
||||
|
||||
@@ -111,7 +111,7 @@
|
||||
for(var/datum/callout_option/callout_option as anything in callout_options)
|
||||
callout_items[callout_option] = image(icon = 'icons/hud/radial.dmi', icon_state = callout_option::icon_state)
|
||||
|
||||
var/datum/callout_option/selection = show_radial_menu(user, get_turf(clicked_atom), callout_items, entry_animation = FALSE, click_on_hover = TRUE)
|
||||
var/datum/callout_option/selection = show_radial_menu(user, get_turf(clicked_atom), callout_items, entry_animation = FALSE, click_on_hover = TRUE, user_space = TRUE)
|
||||
if (!selection)
|
||||
return
|
||||
|
||||
|
||||
@@ -250,11 +250,17 @@
|
||||
)
|
||||
category = CAT_EQUIPMENT
|
||||
|
||||
/datum/crafting_recipe/bonedice
|
||||
name = "Bone Die"
|
||||
result = /obj/item/dice/d6/bone
|
||||
time = 5 SECONDS
|
||||
/datum/crafting_recipe/violin
|
||||
name = "Violin"
|
||||
result = /obj/item/instrument/violin
|
||||
reqs = list(
|
||||
/obj/item/stack/sheet/bone = 1,
|
||||
/obj/item/stack/sheet/mineral/wood = 4,
|
||||
/obj/item/stack/sheet/cloth = 2,
|
||||
/obj/item/stack/sheet/iron = 1,
|
||||
)
|
||||
category = CAT_EQUIPMENT
|
||||
tool_paths = list(
|
||||
/obj/item/hatchet,
|
||||
)
|
||||
time = 30 SECONDS
|
||||
category = CAT_ENTERTAINMENT
|
||||
crafting_flags = CRAFT_CHECK_DENSITY | CRAFT_MUST_BE_LEARNED
|
||||
|
||||
@@ -23,6 +23,17 @@
|
||||
time = 4 SECONDS
|
||||
category = CAT_EQUIPMENT
|
||||
|
||||
/datum/crafting_recipe/improvisedshield
|
||||
name = "Moonflower Shield"
|
||||
result = /obj/item/shield/buckler/moonflower
|
||||
reqs = list(
|
||||
/obj/item/seeds/sunflower/moonflower = 3,
|
||||
/obj/item/grown/log/steel = 3,
|
||||
)
|
||||
time = 4 SECONDS
|
||||
category = CAT_EQUIPMENT
|
||||
|
||||
|
||||
/datum/crafting_recipe/radiogloves
|
||||
name = "Radio Gloves"
|
||||
result = /obj/item/clothing/gloves/radio
|
||||
@@ -260,3 +271,18 @@
|
||||
)
|
||||
category = CAT_EQUIPMENT
|
||||
tool_behaviors = list(TOOL_WELDER, TOOL_WIRECUTTER)
|
||||
|
||||
// SKYRAT EDIT REMOVAL START
|
||||
/*
|
||||
/datum/crafting_recipe/arrow_quiver
|
||||
name = "Archery Quiver"
|
||||
result = /obj/item/storage/bag/quiver/lesser
|
||||
time = 10
|
||||
reqs = list(
|
||||
/obj/item/stack/sheet/leather = 4,
|
||||
/obj/item/stack/sheet/cardboard = 4
|
||||
)
|
||||
category = CAT_EQUIPMENT
|
||||
tool_behaviors = list(TOOL_WELDER, TOOL_WIRECUTTER)
|
||||
|
||||
*/ // SKYRAT EDIT REMOVAL END
|
||||
|
||||
@@ -191,3 +191,13 @@
|
||||
)
|
||||
time = 10 SECONDS
|
||||
category = CAT_WEAPON_MELEE
|
||||
|
||||
/datum/crafting_recipe/bambostaff
|
||||
name = "Bamboo Bo Staff"
|
||||
result = /obj/item/bambostaff
|
||||
reqs = list(
|
||||
/obj/item/stack/sheet/mineral/bamboo = 4,
|
||||
/obj/item/grown/log/steel = 2,
|
||||
)
|
||||
time = 8 SECONDS
|
||||
category = CAT_WEAPON_MELEE
|
||||
|
||||
@@ -375,6 +375,21 @@
|
||||
category = CAT_WEAPON_RANGED
|
||||
crafting_flags = CRAFT_CHECK_DENSITY | CRAFT_MUST_BE_LEARNED
|
||||
|
||||
/datum/crafting_recipe/shortbow
|
||||
name = "Shortbow"
|
||||
result = /obj/item/gun/ballistic/bow/shortbow
|
||||
reqs = list(
|
||||
/obj/item/stack/sheet/mineral/wood = 4,
|
||||
/obj/item/stack/sheet/cloth = 2,
|
||||
/obj/item/stack/sheet/iron = 1,
|
||||
)
|
||||
tool_paths = list(
|
||||
/obj/item/hatchet,
|
||||
)
|
||||
time = 30 SECONDS
|
||||
category = CAT_WEAPON_RANGED
|
||||
crafting_flags = CRAFT_CHECK_DENSITY | CRAFT_MUST_BE_LEARNED
|
||||
|
||||
/datum/crafting_recipe/photoncannon
|
||||
name = "Photon Cannon"
|
||||
result = /obj/item/gun/energy/photon
|
||||
|
||||
@@ -6,6 +6,61 @@
|
||||
time = 5 SECONDS
|
||||
category = CAT_CLOTHING
|
||||
|
||||
/datum/crafting_recipe/durathread_robe
|
||||
name = "Durathread Robe"
|
||||
result = /obj/item/clothing/suit/wizrobe/durathread
|
||||
reqs = list(
|
||||
/obj/item/stack/sheet/durathread = 3,
|
||||
/obj/item/stack/sheet/leather = 6,
|
||||
)
|
||||
time = 5 SECONDS
|
||||
category = CAT_CLOTHING
|
||||
|
||||
/datum/crafting_recipe/durathread_robe_fire
|
||||
name = "Durathread Pyromancer Robe"
|
||||
result = /obj/item/clothing/suit/wizrobe/durathread/fire
|
||||
reqs = list(/obj/item/clothing/suit/wizrobe/durathread = 1,
|
||||
/obj/item/grown/novaflower = 1,
|
||||
/obj/item/seeds/chili = 3)
|
||||
time = 2 SECONDS
|
||||
category = CAT_CLOTHING
|
||||
|
||||
/datum/crafting_recipe/durathread_robe_ice
|
||||
name = "Durathread Ice-o-mancer Robe"
|
||||
result = /obj/item/clothing/suit/wizrobe/durathread/ice
|
||||
reqs = list(/obj/item/clothing/suit/wizrobe/durathread = 1,
|
||||
/obj/item/seeds/chili/ice = 1,
|
||||
/obj/item/food/grown/herbs = 3)
|
||||
time = 2 SECONDS
|
||||
category = CAT_CLOTHING
|
||||
|
||||
/datum/crafting_recipe/durathread_robe_electric
|
||||
name = "Durathread Electromancer Robe"
|
||||
result = /obj/item/clothing/suit/wizrobe/durathread/electric
|
||||
reqs = list(/obj/item/clothing/suit/wizrobe/durathread = 1,
|
||||
/obj/item/food/grown/mushroom/jupitercup = 1,
|
||||
/obj/item/food/grown/sunflower = 3)
|
||||
time = 2 SECONDS
|
||||
category = CAT_CLOTHING
|
||||
|
||||
/datum/crafting_recipe/durathread_robe_earth
|
||||
name = "Durathread Geomancer Robe"
|
||||
result = /obj/item/clothing/suit/wizrobe/durathread/earth
|
||||
reqs = list(/obj/item/clothing/suit/wizrobe/durathread = 1,
|
||||
/obj/item/food/grown/cahnroot = 1,
|
||||
/obj/item/food/grown/potato = 3)
|
||||
time = 2 SECONDS
|
||||
category = CAT_CLOTHING
|
||||
|
||||
/datum/crafting_recipe/durathread_robe_necro
|
||||
name = "Durathread Necromancer Robe"
|
||||
result = /obj/item/clothing/suit/wizrobe/durathread/necro
|
||||
reqs = list(/obj/item/clothing/suit/wizrobe/durathread = 1,
|
||||
/obj/item/food/grown/cannabis/death = 2,
|
||||
/obj/item/food/grown/mushroom/angel = 2)
|
||||
time = 2 SECONDS
|
||||
category = CAT_CLOTHING
|
||||
|
||||
/datum/crafting_recipe/durathread_helmet
|
||||
name = "Durathread Helmet"
|
||||
result = /obj/item/clothing/head/helmet/durathread
|
||||
@@ -14,6 +69,62 @@
|
||||
time = 4 SECONDS
|
||||
category = CAT_CLOTHING
|
||||
|
||||
/datum/crafting_recipe/watermelon_armour
|
||||
name = "Watermelon Armour"
|
||||
result = /obj/item/clothing/suit/armor/durability/watermelon
|
||||
reqs = list(/obj/item/clothing/head/helmet/durability/watermelon = 3,
|
||||
/obj/item/stack/sheet/durathread = 1)
|
||||
time = 4 SECONDS
|
||||
category = CAT_CLOTHING
|
||||
|
||||
/datum/crafting_recipe/watermelon_armour_fr
|
||||
name = "Watermelon Armour"
|
||||
result = /obj/item/clothing/suit/armor/durability/watermelon/fire_resist
|
||||
reqs = list(/obj/item/clothing/head/helmet/durability/watermelon/fire_resist = 3,
|
||||
/obj/item/stack/sheet/durathread = 1)
|
||||
time = 4 SECONDS
|
||||
category = CAT_CLOTHING
|
||||
|
||||
/datum/crafting_recipe/holymelon_armour
|
||||
name = "Holymelon Armour"
|
||||
result = /obj/item/clothing/suit/armor/durability/holymelon
|
||||
reqs = list(/obj/item/clothing/head/helmet/durability/holymelon = 3,
|
||||
/obj/item/stack/sheet/durathread = 1)
|
||||
time = 4 SECONDS
|
||||
category = CAT_CLOTHING
|
||||
|
||||
/datum/crafting_recipe/holymelonmelon_armour_fr
|
||||
name = "Holymelon Armour"
|
||||
result = /obj/item/clothing/suit/armor/durability/holymelon/fire_resist
|
||||
reqs = list(/obj/item/clothing/head/helmet/durability/holymelon/fire_resist = 3,
|
||||
/obj/item/stack/sheet/durathread = 1)
|
||||
time = 4 SECONDS
|
||||
category = CAT_CLOTHING
|
||||
|
||||
/datum/crafting_recipe/barrelmelon_armour
|
||||
name = "Barrelmelon Armour"
|
||||
result = /obj/item/clothing/suit/armor/durability/barrelmelon
|
||||
reqs = list(/obj/item/clothing/head/helmet/durability/barrelmelon = 3,
|
||||
/obj/item/stack/sheet/durathread = 1)
|
||||
time = 4 SECONDS
|
||||
category = CAT_CLOTHING
|
||||
|
||||
/datum/crafting_recipe/barrelmelon_armour_fr
|
||||
name = "Barrelmelon Armour"
|
||||
result = /obj/item/clothing/suit/armor/durability/barrelmelon/fire_resist
|
||||
reqs = list(/obj/item/clothing/head/helmet/durability/barrelmelon/fire_resist = 3,
|
||||
/obj/item/stack/sheet/durathread = 1)
|
||||
time = 4 SECONDS
|
||||
category = CAT_CLOTHING
|
||||
|
||||
/datum/crafting_recipe/grass_sheath
|
||||
name = "Grass Sabre Sheath"
|
||||
result = /obj/item/storage/belt/grass_sabre
|
||||
reqs = list(/obj/item/food/grown/grass = 4,
|
||||
/obj/item/food/grown/grass/fairy = 2)
|
||||
time = 4 SECONDS
|
||||
category = CAT_CONTAINERS
|
||||
|
||||
/datum/crafting_recipe/fannypack
|
||||
name = "Fannypack"
|
||||
result = /obj/item/storage/belt/fannypack
|
||||
|
||||
@@ -111,3 +111,68 @@
|
||||
)
|
||||
category = CAT_WEAPON_AMMO
|
||||
crafting_flags = CRAFT_CHECK_DENSITY | CRAFT_MUST_BE_LEARNED
|
||||
|
||||
/datum/crafting_recipe/arrow
|
||||
name = "Arrow"
|
||||
result = /obj/item/ammo_casing/arrow
|
||||
reqs = list(
|
||||
/obj/item/stack/sheet/mineral/wood = 1,
|
||||
/obj/item/stack/sheet/cloth = 1,
|
||||
/obj/item/stack/sheet/iron = 1,
|
||||
)
|
||||
tool_paths = list(
|
||||
/obj/item/hatchet,
|
||||
)
|
||||
time = 5 SECONDS
|
||||
category = CAT_WEAPON_AMMO
|
||||
crafting_flags = CRAFT_CHECK_DENSITY | CRAFT_MUST_BE_LEARNED
|
||||
|
||||
/datum/crafting_recipe/sticky_arrow
|
||||
name = "Sticky arrow"
|
||||
result = /obj/item/ammo_casing/arrow/sticky
|
||||
reqs = list(
|
||||
/obj/item/ammo_casing/arrow = 1,
|
||||
/obj/item/food/honeycomb = 3,
|
||||
)
|
||||
time = 5 SECONDS
|
||||
category = CAT_WEAPON_AMMO
|
||||
crafting_flags = CRAFT_CHECK_DENSITY
|
||||
|
||||
/datum/crafting_recipe/poison_arrow
|
||||
name = "Poison arrow"
|
||||
result = /obj/item/ammo_casing/arrow/poison
|
||||
reqs = list(
|
||||
/obj/item/ammo_casing/arrow = 1,
|
||||
/obj/item/food/grown/berries/poison = 5,
|
||||
)
|
||||
time = 5 SECONDS
|
||||
category = CAT_WEAPON_AMMO
|
||||
crafting_flags = CRAFT_CHECK_DENSITY
|
||||
|
||||
/datum/crafting_recipe/plastic_arrow
|
||||
name = "Plastic Arrow"
|
||||
result = /obj/item/ammo_casing/arrow/plastic
|
||||
reqs = list(
|
||||
/obj/item/stack/sheet/plastic = 1,
|
||||
)
|
||||
tool_paths = list(
|
||||
/obj/item/hatchet,
|
||||
)
|
||||
time = 5 SECONDS
|
||||
category = CAT_WEAPON_AMMO
|
||||
crafting_flags = CRAFT_CHECK_DENSITY | CRAFT_MUST_BE_LEARNED
|
||||
|
||||
|
||||
/datum/crafting_recipe/holy_arrow
|
||||
name = "Holy Arrow"
|
||||
result = /obj/item/ammo_casing/arrow/holy
|
||||
reqs = list(
|
||||
/obj/item/ammo_casing/arrow = 1,
|
||||
/datum/reagent/water/holywater = 10,
|
||||
)
|
||||
tool_paths = list(
|
||||
/obj/item/gun/ballistic/bow/divine,
|
||||
)
|
||||
time = 5 SECONDS
|
||||
category = CAT_WEAPON_AMMO
|
||||
crafting_flags = CRAFT_CHECK_DENSITY | CRAFT_MUST_BE_LEARNED
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
/// Cooldown for the echolocation.
|
||||
COOLDOWN_DECLARE(cooldown_last)
|
||||
|
||||
/datum/component/echolocation/Initialize(echo_range, cooldown_time, image_expiry_time, fade_in_time, fade_out_time, images_are_static, blocking_trait, echo_group, echo_icon = "echo", color_path)
|
||||
/datum/component/echolocation/Initialize(echo_range, cooldown_time, image_expiry_time, fade_in_time, fade_out_time, images_are_static, blocking_trait, echo_group, echo_icon, color_path, use_echo = TRUE, show_own_outline = FALSE, personal_color = "#ffffff") // SKYRAT EDIT CHANGE - ORIGINAL: /datum/component/echolocation/Initialize(echo_range, cooldown_time, image_expiry_time, fade_in_time, fade_out_time, images_are_static, blocking_trait, echo_group, echo_icon = "echo", color_path)
|
||||
. = ..()
|
||||
var/mob/living/echolocator = parent
|
||||
if(!istype(echolocator))
|
||||
@@ -55,12 +55,19 @@
|
||||
src.images_are_static = images_are_static
|
||||
if(!isnull(blocking_trait))
|
||||
src.blocking_trait = blocking_trait
|
||||
// SKYRAT ADDITION START: echolocation
|
||||
src.show_own_outline = show_own_outline
|
||||
src.echo_color = personal_color
|
||||
// SKYRAT EDIT ADDITION END
|
||||
if(ispath(color_path))
|
||||
client_color = echolocator.add_client_colour(color_path)
|
||||
src.echo_group = echo_group || REF(src)
|
||||
echolocator.add_traits(list(TRAIT_ECHOLOCATION_RECEIVER, TRAIT_TRUE_NIGHT_VISION), echo_group) //so they see all the tiles they echolocated, even if they are in the dark
|
||||
echolocator.become_blind(ECHOLOCATION_TRAIT)
|
||||
echolocator.overlay_fullscreen("echo", /atom/movable/screen/fullscreen/echo, echo_icon)
|
||||
// SKYRAT EDIT ADDITION START
|
||||
if (use_echo) // add constructor toggle to not use the eye overlay
|
||||
echolocator.overlay_fullscreen("echo", /atom/movable/screen/fullscreen/echo, echo_icon)
|
||||
// SKYRAT EDIT ADDITION END
|
||||
START_PROCESSING(SSfastprocess, src)
|
||||
|
||||
/datum/component/echolocation/Destroy(force)
|
||||
@@ -85,7 +92,7 @@
|
||||
echolocate()
|
||||
|
||||
/datum/component/echolocation/proc/echolocate()
|
||||
if(!COOLDOWN_FINISHED(src, cooldown_last))
|
||||
if(stall || !COOLDOWN_FINISHED(src, cooldown_last)) // SKYRAT EDIT CHANGE - ORIGINAL: if(!COOLDOWN_FINISHED(src, cooldown_last))
|
||||
return
|
||||
COOLDOWN_START(src, cooldown_last, cooldown_time)
|
||||
var/mob/living/echolocator = parent
|
||||
@@ -121,11 +128,18 @@
|
||||
if(images_are_static)
|
||||
final_image.pixel_x = input.pixel_x
|
||||
final_image.pixel_y = input.pixel_y
|
||||
if(HAS_TRAIT_FROM(input, TRAIT_ECHOLOCATION_RECEIVER, echo_group)) //mark other echolocation with full white
|
||||
final_image.color = white_matrix
|
||||
// SKYRAT ADDITION START: echolocation (show outlines on self)
|
||||
if(HAS_TRAIT_FROM(input, TRAIT_ECHOLOCATION_RECEIVER, echo_group)) //mark other echolocation with full white, except ourselves
|
||||
var/datum/component/echolocation/located_component = input.GetComponent(/datum/component/echolocation)
|
||||
var/mob/living/echolocator = parent
|
||||
if(located_component)
|
||||
final_image.color = located_component.echo_color
|
||||
else if(input != echolocator)
|
||||
final_image.color = white_matrix
|
||||
// SKYRAT EDIT ADDITION END
|
||||
var/list/fade_ins = list(final_image)
|
||||
for(var/mob/living/echolocate_receiver as anything in receivers)
|
||||
if(echolocate_receiver == input)
|
||||
if(echolocate_receiver == input && !show_own_outline) // SKYRAT EDIT CHANGE - ORIGINAL: if(echolocate_receiver == input)
|
||||
continue
|
||||
if(receivers[echolocate_receiver][input])
|
||||
var/previous_image = receivers[echolocate_receiver][input]["image"]
|
||||
|
||||
@@ -68,6 +68,9 @@
|
||||
var/obj/item/organ/internal/heart/previous_heart = last_heart_we_ate?.resolve()
|
||||
if(we_ate_heart == previous_heart)
|
||||
return
|
||||
if (!HAS_TRAIT(we_ate_heart, TRAIT_USED_ORGAN))
|
||||
to_chat(eater, span_warning("This heart is utterly lifeless, you won't receive any boons from consuming it!"))
|
||||
return
|
||||
bites_taken = 0
|
||||
|
||||
last_heart_we_ate = WEAKREF(we_ate_heart)
|
||||
|
||||
@@ -227,9 +227,12 @@
|
||||
for(var/datum/uplink_item/item as anything in uplink_handler.extra_purchasable)
|
||||
if(item.stock_key in stock_list)
|
||||
extra_purchasable_stock[REF(item)] = stock_list[item.stock_key]
|
||||
var/atom/actual_item = item.item
|
||||
extra_purchasable += list(list(
|
||||
"id" = item.type,
|
||||
"name" = item.name,
|
||||
"icon" = actual_item.icon,
|
||||
"icon_state" = actual_item.icon_state,
|
||||
"cost" = item.cost,
|
||||
"desc" = item.desc,
|
||||
"category" = item.category ? initial(item.category.name) : null,
|
||||
@@ -288,6 +291,11 @@
|
||||
return
|
||||
item = SStraitor.uplink_items_by_type[item_path]
|
||||
uplink_handler.purchase_item(ui.user, item, parent)
|
||||
if("buy_raw_tc")
|
||||
if (uplink_handler.telecrystals <= 0)
|
||||
return
|
||||
var/desired_amount = tgui_input_number(ui.user, "How many raw telecrystals to buy?", "Buy Raw TC", default = uplink_handler.telecrystals, max_value = uplink_handler.telecrystals)
|
||||
uplink_handler.purchase_raw_tc(ui.user, desired_amount, parent)
|
||||
if("lock")
|
||||
if(!lockable)
|
||||
return TRUE
|
||||
|
||||
@@ -243,3 +243,18 @@
|
||||
obj_icon_state = "eyepatch"
|
||||
emote_hear = list("sighs gruffly.", "groans.")
|
||||
emote_see = list("considers their own mortality.", "stares bleakly into the middle distance.", "ponders the horrors of warfare.")
|
||||
|
||||
/datum/dog_fashion/head/watermelon
|
||||
name = "Watermelon Warrior %REAL_NAME%"
|
||||
desc = "5% safer than normal and ready to take on advantage!"
|
||||
obj_icon_state = "watermelon"
|
||||
|
||||
/datum/dog_fashion/head/holymelon
|
||||
name = "Holymelon Paladin %REAL_NAME%"
|
||||
desc = "Extraterrestial powers beware, %NAME% is here to smite you down!"
|
||||
obj_icon_state = "holymelon"
|
||||
|
||||
/datum/dog_fashion/head/barrelmelon
|
||||
name = "Barrelmelon Berserk %REAL_NAME%"
|
||||
desc = "Either the sturdiness of the helmet gave %REAL_NAME% a confidence boost, or its bit tight on their head..."
|
||||
obj_icon_state = "barrelmelon"
|
||||
|
||||
@@ -103,13 +103,12 @@
|
||||
if(tmp_sound && should_play_sound(user, intentional) && TIMER_COOLDOWN_FINISHED(user, type))
|
||||
TIMER_COOLDOWN_START(user, type, audio_cooldown)
|
||||
//SKYRAT EDIT CHANGE BEGIN
|
||||
//playsound(user, tmp_sound, 50, vary) - SKYRAT EDIT - ORIGINAL
|
||||
//playsound(source = user,soundin = tmp_sound,vol = 50, vary = vary, ignore_walls = sound_wall_ignore) - SKYRAT EDIT - ORIGINAL
|
||||
if(istype(src, /datum/emote/living/lewd))
|
||||
play_lewd_sound(user, tmp_sound, sound_volume, vary, pref_to_check = /datum/preference/toggle/erp/sounds)
|
||||
else
|
||||
playsound(user, tmp_sound, sound_volume, vary)
|
||||
playsound(source = user, soundin = tmp_sound, vol = sound_volume, vary = vary, ignore_walls = sound_wall_ignore)
|
||||
//SKYRAT EDIT CHANGE END
|
||||
playsound(source = user,soundin = tmp_sound,vol = 50, vary = vary, ignore_walls = sound_wall_ignore)
|
||||
|
||||
var/is_important = emote_type & EMOTE_IMPORTANT
|
||||
var/is_visual = emote_type & EMOTE_VISIBLE
|
||||
|
||||
@@ -2,26 +2,26 @@
|
||||
"meter": [
|
||||
{
|
||||
"type": "icon_state",
|
||||
"icon_state": "pressure_off",
|
||||
"icon_state": "meter_base",
|
||||
"blend_mode": "overlay"
|
||||
},
|
||||
{
|
||||
"type": "icon_state",
|
||||
"icon_state": "meter_base",
|
||||
"icon_state": "pressure_off",
|
||||
"blend_mode": "overlay"
|
||||
}
|
||||
],
|
||||
"meter0": [
|
||||
{
|
||||
"type": "icon_state",
|
||||
"icon_state": "pressure0",
|
||||
"blend_mode": "overlay",
|
||||
"color_ids": [ 1 ]
|
||||
"icon_state": "meter_base",
|
||||
"blend_mode": "overlay"
|
||||
},
|
||||
{
|
||||
"type": "icon_state",
|
||||
"icon_state": "meter_base",
|
||||
"blend_mode": "overlay"
|
||||
"icon_state": "pressure0",
|
||||
"blend_mode": "overlay",
|
||||
"color_ids": [ 1 ]
|
||||
},
|
||||
{
|
||||
"type": "icon_state",
|
||||
@@ -32,14 +32,14 @@
|
||||
"meter1_1": [
|
||||
{
|
||||
"type": "icon_state",
|
||||
"icon_state": "pressure1_1",
|
||||
"blend_mode": "overlay",
|
||||
"color_ids": [ 1 ]
|
||||
"icon_state": "meter_base",
|
||||
"blend_mode": "overlay"
|
||||
},
|
||||
{
|
||||
"type": "icon_state",
|
||||
"icon_state": "meter_base",
|
||||
"blend_mode": "overlay"
|
||||
"icon_state": "pressure1_1",
|
||||
"blend_mode": "overlay",
|
||||
"color_ids": [ 1 ]
|
||||
},
|
||||
{
|
||||
"type": "icon_state",
|
||||
@@ -50,14 +50,14 @@
|
||||
"meter1_2": [
|
||||
{
|
||||
"type": "icon_state",
|
||||
"icon_state": "pressure1_2",
|
||||
"blend_mode": "overlay",
|
||||
"color_ids": [ 1 ]
|
||||
"icon_state": "meter_base",
|
||||
"blend_mode": "overlay"
|
||||
},
|
||||
{
|
||||
"type": "icon_state",
|
||||
"icon_state": "meter_base",
|
||||
"blend_mode": "overlay"
|
||||
"icon_state": "pressure1_2",
|
||||
"blend_mode": "overlay",
|
||||
"color_ids": [ 1 ]
|
||||
},
|
||||
{
|
||||
"type": "icon_state",
|
||||
@@ -68,14 +68,14 @@
|
||||
"meter1_3": [
|
||||
{
|
||||
"type": "icon_state",
|
||||
"icon_state": "pressure1_3",
|
||||
"blend_mode": "overlay",
|
||||
"color_ids": [ 1 ]
|
||||
"icon_state": "meter_base",
|
||||
"blend_mode": "overlay"
|
||||
},
|
||||
{
|
||||
"type": "icon_state",
|
||||
"icon_state": "meter_base",
|
||||
"blend_mode": "overlay"
|
||||
"icon_state": "pressure1_3",
|
||||
"blend_mode": "overlay",
|
||||
"color_ids": [ 1 ]
|
||||
},
|
||||
{
|
||||
"type": "icon_state",
|
||||
@@ -86,14 +86,14 @@
|
||||
"meter1_4": [
|
||||
{
|
||||
"type": "icon_state",
|
||||
"icon_state": "pressure1_4",
|
||||
"blend_mode": "overlay",
|
||||
"color_ids": [ 1 ]
|
||||
"icon_state": "meter_base",
|
||||
"blend_mode": "overlay"
|
||||
},
|
||||
{
|
||||
"type": "icon_state",
|
||||
"icon_state": "meter_base",
|
||||
"blend_mode": "overlay"
|
||||
"icon_state": "pressure1_4",
|
||||
"blend_mode": "overlay",
|
||||
"color_ids": [ 1 ]
|
||||
},
|
||||
{
|
||||
"type": "icon_state",
|
||||
@@ -104,14 +104,14 @@
|
||||
"meter1_5": [
|
||||
{
|
||||
"type": "icon_state",
|
||||
"icon_state": "pressure1_5",
|
||||
"blend_mode": "overlay",
|
||||
"color_ids": [ 1 ]
|
||||
"icon_state": "meter_base",
|
||||
"blend_mode": "overlay"
|
||||
},
|
||||
{
|
||||
"type": "icon_state",
|
||||
"icon_state": "meter_base",
|
||||
"blend_mode": "overlay"
|
||||
"icon_state": "pressure1_5",
|
||||
"blend_mode": "overlay",
|
||||
"color_ids": [ 1 ]
|
||||
},
|
||||
{
|
||||
"type": "icon_state",
|
||||
@@ -122,14 +122,14 @@
|
||||
"meter1_6": [
|
||||
{
|
||||
"type": "icon_state",
|
||||
"icon_state": "pressure1_6",
|
||||
"blend_mode": "overlay",
|
||||
"color_ids": [ 1 ]
|
||||
"icon_state": "meter_base",
|
||||
"blend_mode": "overlay"
|
||||
},
|
||||
{
|
||||
"type": "icon_state",
|
||||
"icon_state": "meter_base",
|
||||
"blend_mode": "overlay"
|
||||
"icon_state": "pressure1_6",
|
||||
"blend_mode": "overlay",
|
||||
"color_ids": [ 1 ]
|
||||
},
|
||||
{
|
||||
"type": "icon_state",
|
||||
@@ -140,14 +140,14 @@
|
||||
"meter2_1": [
|
||||
{
|
||||
"type": "icon_state",
|
||||
"icon_state": "pressure2_1",
|
||||
"blend_mode": "overlay",
|
||||
"color_ids": [ 1 ]
|
||||
"icon_state": "meter_base",
|
||||
"blend_mode": "overlay"
|
||||
},
|
||||
{
|
||||
"type": "icon_state",
|
||||
"icon_state": "meter_base",
|
||||
"blend_mode": "overlay"
|
||||
"icon_state": "pressure2_1",
|
||||
"blend_mode": "overlay",
|
||||
"color_ids": [ 1 ]
|
||||
},
|
||||
{
|
||||
"type": "icon_state",
|
||||
@@ -158,14 +158,14 @@
|
||||
"meter2_2": [
|
||||
{
|
||||
"type": "icon_state",
|
||||
"icon_state": "pressure2_2",
|
||||
"blend_mode": "overlay",
|
||||
"color_ids": [ 1 ]
|
||||
"icon_state": "meter_base",
|
||||
"blend_mode": "overlay"
|
||||
},
|
||||
{
|
||||
"type": "icon_state",
|
||||
"icon_state": "meter_base",
|
||||
"blend_mode": "overlay"
|
||||
"icon_state": "pressure2_2",
|
||||
"blend_mode": "overlay",
|
||||
"color_ids": [ 1 ]
|
||||
},
|
||||
{
|
||||
"type": "icon_state",
|
||||
@@ -176,14 +176,14 @@
|
||||
"meter2_3": [
|
||||
{
|
||||
"type": "icon_state",
|
||||
"icon_state": "pressure2_3",
|
||||
"blend_mode": "overlay",
|
||||
"color_ids": [ 1 ]
|
||||
"icon_state": "meter_base",
|
||||
"blend_mode": "overlay"
|
||||
},
|
||||
{
|
||||
"type": "icon_state",
|
||||
"icon_state": "meter_base",
|
||||
"blend_mode": "overlay"
|
||||
"icon_state": "pressure2_3",
|
||||
"blend_mode": "overlay",
|
||||
"color_ids": [ 1 ]
|
||||
},
|
||||
{
|
||||
"type": "icon_state",
|
||||
@@ -194,14 +194,14 @@
|
||||
"meter2_4": [
|
||||
{
|
||||
"type": "icon_state",
|
||||
"icon_state": "pressure2_4",
|
||||
"blend_mode": "overlay",
|
||||
"color_ids": [ 1 ]
|
||||
"icon_state": "meter_base",
|
||||
"blend_mode": "overlay"
|
||||
},
|
||||
{
|
||||
"type": "icon_state",
|
||||
"icon_state": "meter_base",
|
||||
"blend_mode": "overlay"
|
||||
"icon_state": "pressure2_4",
|
||||
"blend_mode": "overlay",
|
||||
"color_ids": [ 1 ]
|
||||
},
|
||||
{
|
||||
"type": "icon_state",
|
||||
@@ -212,14 +212,14 @@
|
||||
"meter2_5": [
|
||||
{
|
||||
"type": "icon_state",
|
||||
"icon_state": "pressure2_5",
|
||||
"blend_mode": "overlay",
|
||||
"color_ids": [ 1 ]
|
||||
"icon_state": "meter_base",
|
||||
"blend_mode": "overlay"
|
||||
},
|
||||
{
|
||||
"type": "icon_state",
|
||||
"icon_state": "meter_base",
|
||||
"blend_mode": "overlay"
|
||||
"icon_state": "pressure2_5",
|
||||
"blend_mode": "overlay",
|
||||
"color_ids": [ 1 ]
|
||||
},
|
||||
{
|
||||
"type": "icon_state",
|
||||
@@ -230,14 +230,14 @@
|
||||
"meter2_6": [
|
||||
{
|
||||
"type": "icon_state",
|
||||
"icon_state": "pressure2_6",
|
||||
"blend_mode": "overlay",
|
||||
"color_ids": [ 1 ]
|
||||
"icon_state": "meter_base",
|
||||
"blend_mode": "overlay"
|
||||
},
|
||||
{
|
||||
"type": "icon_state",
|
||||
"icon_state": "meter_base",
|
||||
"blend_mode": "overlay"
|
||||
"icon_state": "pressure2_6",
|
||||
"blend_mode": "overlay",
|
||||
"color_ids": [ 1 ]
|
||||
},
|
||||
{
|
||||
"type": "icon_state",
|
||||
@@ -248,14 +248,14 @@
|
||||
"meter3_1": [
|
||||
{
|
||||
"type": "icon_state",
|
||||
"icon_state": "pressure3_1",
|
||||
"blend_mode": "overlay",
|
||||
"color_ids": [ 1 ]
|
||||
"icon_state": "meter_base",
|
||||
"blend_mode": "overlay"
|
||||
},
|
||||
{
|
||||
"type": "icon_state",
|
||||
"icon_state": "meter_base",
|
||||
"blend_mode": "overlay"
|
||||
"icon_state": "pressure3_1",
|
||||
"blend_mode": "overlay",
|
||||
"color_ids": [ 1 ]
|
||||
},
|
||||
{
|
||||
"type": "icon_state",
|
||||
@@ -266,14 +266,14 @@
|
||||
"meter3_2": [
|
||||
{
|
||||
"type": "icon_state",
|
||||
"icon_state": "pressure3_2",
|
||||
"blend_mode": "overlay",
|
||||
"color_ids": [ 1 ]
|
||||
"icon_state": "meter_base",
|
||||
"blend_mode": "overlay"
|
||||
},
|
||||
{
|
||||
"type": "icon_state",
|
||||
"icon_state": "meter_base",
|
||||
"blend_mode": "overlay"
|
||||
"icon_state": "pressure3_2",
|
||||
"blend_mode": "overlay",
|
||||
"color_ids": [ 1 ]
|
||||
},
|
||||
{
|
||||
"type": "icon_state",
|
||||
@@ -284,14 +284,14 @@
|
||||
"meter3_3": [
|
||||
{
|
||||
"type": "icon_state",
|
||||
"icon_state": "pressure3_3",
|
||||
"blend_mode": "overlay",
|
||||
"color_ids": [ 1 ]
|
||||
"icon_state": "meter_base",
|
||||
"blend_mode": "overlay"
|
||||
},
|
||||
{
|
||||
"type": "icon_state",
|
||||
"icon_state": "meter_base",
|
||||
"blend_mode": "overlay"
|
||||
"icon_state": "pressure3_3",
|
||||
"blend_mode": "overlay",
|
||||
"color_ids": [ 1 ]
|
||||
},
|
||||
{
|
||||
"type": "icon_state",
|
||||
@@ -302,14 +302,14 @@
|
||||
"meter3_4": [
|
||||
{
|
||||
"type": "icon_state",
|
||||
"icon_state": "pressure3_4",
|
||||
"blend_mode": "overlay",
|
||||
"color_ids": [ 1 ]
|
||||
"icon_state": "meter_base",
|
||||
"blend_mode": "overlay"
|
||||
},
|
||||
{
|
||||
"type": "icon_state",
|
||||
"icon_state": "meter_base",
|
||||
"blend_mode": "overlay"
|
||||
"icon_state": "pressure3_4",
|
||||
"blend_mode": "overlay",
|
||||
"color_ids": [ 1 ]
|
||||
},
|
||||
{
|
||||
"type": "icon_state",
|
||||
@@ -320,14 +320,14 @@
|
||||
"meter3_5": [
|
||||
{
|
||||
"type": "icon_state",
|
||||
"icon_state": "pressure3_5",
|
||||
"blend_mode": "overlay",
|
||||
"color_ids": [ 1 ]
|
||||
"icon_state": "meter_base",
|
||||
"blend_mode": "overlay"
|
||||
},
|
||||
{
|
||||
"type": "icon_state",
|
||||
"icon_state": "meter_base",
|
||||
"blend_mode": "overlay"
|
||||
"icon_state": "pressure3_5",
|
||||
"blend_mode": "overlay",
|
||||
"color_ids": [ 1 ]
|
||||
},
|
||||
{
|
||||
"type": "icon_state",
|
||||
@@ -338,14 +338,14 @@
|
||||
"meter3_6": [
|
||||
{
|
||||
"type": "icon_state",
|
||||
"icon_state": "pressure3_6",
|
||||
"blend_mode": "overlay",
|
||||
"color_ids": [ 1 ]
|
||||
"icon_state": "meter_base",
|
||||
"blend_mode": "overlay"
|
||||
},
|
||||
{
|
||||
"type": "icon_state",
|
||||
"icon_state": "meter_base",
|
||||
"blend_mode": "overlay"
|
||||
"icon_state": "pressure3_6",
|
||||
"blend_mode": "overlay",
|
||||
"color_ids": [ 1 ]
|
||||
},
|
||||
{
|
||||
"type": "icon_state",
|
||||
@@ -356,14 +356,14 @@
|
||||
"meter4": [
|
||||
{
|
||||
"type": "icon_state",
|
||||
"icon_state": "pressure4",
|
||||
"blend_mode": "overlay",
|
||||
"color_ids": [ 1 ]
|
||||
"icon_state": "meter_base",
|
||||
"blend_mode": "overlay"
|
||||
},
|
||||
{
|
||||
"type": "icon_state",
|
||||
"icon_state": "meter_base",
|
||||
"blend_mode": "overlay"
|
||||
"icon_state": "pressure4",
|
||||
"blend_mode": "overlay",
|
||||
"color_ids": [ 1 ]
|
||||
},
|
||||
{
|
||||
"type": "icon_state",
|
||||
|
||||
@@ -56,7 +56,7 @@
|
||||
glow_color = "blue"
|
||||
id = "deathsquad"
|
||||
|
||||
/datum/pod_style/advanced
|
||||
/datum/pod_style/cultist
|
||||
name = "bloody supply pod"
|
||||
ui_name = "Cultist"
|
||||
desc = "A Nanotrasen supply pod covered in scratch-marks, blood, and strange runes."
|
||||
|
||||
@@ -449,11 +449,38 @@ GLOBAL_LIST_EMPTY(cached_storage_typecaches)
|
||||
|
||||
SEND_SIGNAL(parent, COMSIG_ATOM_STORED_ITEM, to_insert, user, force)
|
||||
SEND_SIGNAL(src, COMSIG_STORAGE_STORED_ITEM, to_insert, user, force)
|
||||
RegisterSignal(to_insert, COMSIG_MOUSEDROPPED_ONTO, PROC_REF(mousedrop_receive))
|
||||
to_insert.forceMove(real_location)
|
||||
item_insertion_feedback(user, to_insert, override)
|
||||
parent.update_appearance()
|
||||
return TRUE
|
||||
|
||||
/// Since items inside storages ignore transparency for QOL reasons, we're tracking when things are dropped onto them instead of our UI elements
|
||||
/datum/storage/proc/mousedrop_receive(atom/dropped_onto, atom/movable/target, mob/user, params)
|
||||
SIGNAL_HANDLER
|
||||
|
||||
if (src != user.active_storage)
|
||||
return
|
||||
|
||||
if (!user.can_perform_action(parent, FORBID_TELEKINESIS_REACH))
|
||||
return
|
||||
|
||||
if (target.loc != real_location) // what even
|
||||
UnregisterSignal(target, COMSIG_MOUSEDROPPED_ONTO)
|
||||
return
|
||||
|
||||
if(numerical_stacking)
|
||||
return
|
||||
|
||||
var/drop_index = real_location.contents.Find(dropped_onto)
|
||||
real_location.contents -= target
|
||||
// Use an empty list if we're dropping onto the last item
|
||||
var/list/to_move = real_location.contents.len >= drop_index ? real_location.contents.Copy(drop_index) : list()
|
||||
real_location.contents -= to_move
|
||||
real_location.contents += target
|
||||
real_location.contents += to_move
|
||||
refresh_views()
|
||||
|
||||
/**
|
||||
* Inserts every item in a given list, with a progress bar
|
||||
*
|
||||
@@ -544,6 +571,7 @@ GLOBAL_LIST_EMPTY(cached_storage_typecaches)
|
||||
refresh_views()
|
||||
parent.update_appearance()
|
||||
|
||||
UnregisterSignal(thing, COMSIG_MOUSEDROPPED_ONTO)
|
||||
SEND_SIGNAL(parent, COMSIG_ATOM_REMOVED_ITEM, thing, remove_to_loc, silent)
|
||||
SEND_SIGNAL(src, COMSIG_STORAGE_REMOVED_ITEM, thing, remove_to_loc, silent)
|
||||
return TRUE
|
||||
@@ -719,7 +747,7 @@ GLOBAL_LIST_EMPTY(cached_storage_typecaches)
|
||||
parent.add_fingerprint(user)
|
||||
return COMPONENT_CANCEL_MOUSEDROP_ONTO
|
||||
|
||||
else if(ismob(over_object))
|
||||
if(ismob(over_object))
|
||||
if(over_object != user || !user.can_perform_action(parent, FORBID_TELEKINESIS_REACH | ALLOW_RESTING))
|
||||
return
|
||||
|
||||
@@ -727,13 +755,24 @@ GLOBAL_LIST_EMPTY(cached_storage_typecaches)
|
||||
INVOKE_ASYNC(src, PROC_REF(open_storage), user)
|
||||
return COMPONENT_CANCEL_MOUSEDROP_ONTO
|
||||
|
||||
else if(!istype(over_object, /atom/movable/screen))
|
||||
if(!user.can_perform_action(over_object, FORBID_TELEKINESIS_REACH))
|
||||
return
|
||||
if(istype(over_object, /atom/movable/screen))
|
||||
return
|
||||
|
||||
parent.add_fingerprint(user)
|
||||
INVOKE_ASYNC(src, PROC_REF(dump_content_at), over_object, user)
|
||||
return COMPONENT_CANCEL_MOUSEDROP_ONTO
|
||||
if(!user.can_perform_action(over_object, FORBID_TELEKINESIS_REACH))
|
||||
return
|
||||
|
||||
parent.add_fingerprint(user)
|
||||
|
||||
var/atom/dump_loc = over_object.get_dumping_location()
|
||||
if(isnull(dump_loc))
|
||||
return
|
||||
|
||||
/// Don't dump *onto* objects in the same storage as ourselves
|
||||
if (over_object.loc == parent.loc && !isnull(parent.loc.atom_storage) && isnull(over_object.atom_storage))
|
||||
return
|
||||
|
||||
INVOKE_ASYNC(src, PROC_REF(dump_content_at), over_object, dump_loc, user)
|
||||
return COMPONENT_CANCEL_MOUSEDROP_ONTO
|
||||
|
||||
/**
|
||||
* Dumps all of our contents at a specific location.
|
||||
@@ -741,7 +780,7 @@ GLOBAL_LIST_EMPTY(cached_storage_typecaches)
|
||||
* @param atom/dest_object where to dump to
|
||||
* @param mob/user the user who is dumping the contents
|
||||
*/
|
||||
/datum/storage/proc/dump_content_at(atom/dest_object, mob/user)
|
||||
/datum/storage/proc/dump_content_at(atom/dest_object, dump_loc, mob/user)
|
||||
if(locked)
|
||||
user.balloon_alert(user, "closed!")
|
||||
return
|
||||
@@ -764,10 +803,6 @@ GLOBAL_LIST_EMPTY(cached_storage_typecaches)
|
||||
SEND_SIGNAL(src, COMSIG_STORAGE_DUMP_POST_TRANSFER, dest_object, user)
|
||||
return
|
||||
|
||||
var/atom/dump_loc = dest_object.get_dumping_location()
|
||||
if(isnull(dump_loc))
|
||||
return
|
||||
|
||||
// Storage to loc transfer requires a do_after
|
||||
to_chat(user, span_notice("You start dumping out the contents of [parent] onto [dest_object]..."))
|
||||
if(!do_after(user, 2 SECONDS, target = dest_object))
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
/datum/storage_interface
|
||||
/// UI elements for this theme
|
||||
var/atom/movable/screen/close/closer
|
||||
var/atom/movable/screen/storage/cells
|
||||
var/atom/movable/screen/storage/cell/cells
|
||||
var/atom/movable/screen/storage/corner/corner_top_left
|
||||
var/atom/movable/screen/storage/corner/top_right/corner_top_right
|
||||
var/atom/movable/screen/storage/corner/bottom_left/corner_bottom_left
|
||||
|
||||
@@ -186,6 +186,7 @@
|
||||
/obj/machinery/LateInitialize()
|
||||
SHOULD_NOT_OVERRIDE(TRUE)
|
||||
post_machine_initialize()
|
||||
CheckParts()
|
||||
|
||||
/obj/machinery/Destroy(force)
|
||||
SSmachines.unregister_machine(src)
|
||||
|
||||
@@ -137,6 +137,7 @@
|
||||
icon = 'icons/obj/wallmounts.dmi'
|
||||
icon_state = "migniter"
|
||||
result_path = /obj/machinery/sparker
|
||||
custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT)
|
||||
pixel_shift = 26
|
||||
|
||||
/obj/machinery/sparker
|
||||
|
||||
@@ -119,6 +119,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/light_switch, 26)
|
||||
icon = 'icons/obj/machines/wallmounts.dmi'
|
||||
icon_state = "light-nopower"
|
||||
result_path = /obj/machinery/light_switch
|
||||
custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT)
|
||||
pixel_shift = 26
|
||||
|
||||
/obj/item/circuit_component/light_switch
|
||||
|
||||
@@ -25,7 +25,6 @@
|
||||
. = ..()
|
||||
AddComponent(/datum/component/plumbing/simple_demand)
|
||||
register_context()
|
||||
CheckParts()
|
||||
|
||||
/obj/machinery/medipen_refiller/add_context(atom/source, list/context, obj/item/held_item, mob/user)
|
||||
if(held_item)
|
||||
|
||||
@@ -36,9 +36,11 @@ Buildable meters
|
||||
icon_state_preview = "junction"
|
||||
pipe_type = /obj/machinery/atmospherics/pipe/heat_exchanging/junction
|
||||
/obj/item/pipe/directional/vent
|
||||
name = "air vent fitting"
|
||||
icon_state_preview = "uvent"
|
||||
pipe_type = /obj/machinery/atmospherics/components/unary/vent_pump
|
||||
/obj/item/pipe/directional/scrubber
|
||||
name = "air scrubber fitting"
|
||||
icon_state_preview = "scrubber"
|
||||
pipe_type = /obj/machinery/atmospherics/components/unary/vent_scrubber
|
||||
/obj/item/pipe/directional/connector
|
||||
@@ -78,6 +80,7 @@ Buildable meters
|
||||
RPD_type = PIPE_TRIN_M
|
||||
var/flipped = FALSE
|
||||
/obj/item/pipe/trinary/flippable/filter
|
||||
name = "gas filter fitting"
|
||||
icon_state_preview = "filter"
|
||||
pipe_type = /obj/machinery/atmospherics/components/trinary/filter
|
||||
/obj/item/pipe/trinary/flippable/mixer
|
||||
|
||||
@@ -449,3 +449,23 @@
|
||||
/obj/structure/table = list(/obj/structure/table/greyscale = 9, /obj/structure/table/abductor = 1),
|
||||
/obj/structure/toilet = list(/obj/structure/toilet/greyscale = 1),
|
||||
)
|
||||
|
||||
/datum/dimension_theme/bronze
|
||||
name = "Bronze"
|
||||
icon = 'icons/obj/weapons/spear.dmi'
|
||||
icon_state = "ratvarian_spear"
|
||||
material = /datum/material/bronze
|
||||
replace_walls = /turf/closed/wall/mineral/bronze
|
||||
replace_floors = list(/turf/open/floor/bronze = 1, /turf/open/floor/bronze/flat = 1, /turf/open/floor/bronze/filled = 1)
|
||||
replace_objs = list(
|
||||
/obj/structure/girder = list(/obj/structure/girder/bronze = 1),
|
||||
/obj/structure/window/fulltile = list(/obj/structure/window/bronze/fulltile = 1),
|
||||
/obj/structure/window = list(/obj/structure/window/bronze = 1),
|
||||
/obj/structure/statue = list(/obj/structure/statue/bronze/marx = 1), // karl marx was a servant of ratvar
|
||||
/obj/structure/table = list(/obj/structure/table/bronze = 1),
|
||||
/obj/structure/toilet = list(/obj/structure/toilet/greyscale = 1),
|
||||
/obj/structure/chair = list(/obj/structure/chair/bronze = 1),
|
||||
/obj/item/reagent_containers/cup/glass/trophy = list(/obj/item/reagent_containers/cup/glass/trophy/bronze_cup = 1),
|
||||
/obj/machinery/door/airlock = list(/obj/machinery/door/airlock/bronze = 1),
|
||||
)
|
||||
sound = 'sound/magic/clockwork/fellowship_armory.ogg'
|
||||
|
||||
@@ -33,3 +33,21 @@
|
||||
drift = generator(GEN_VECTOR, list(-0.1,0), list(0.1,0.025), UNIFORM_RAND)
|
||||
spin = generator(GEN_NUM, list(-15,15), NORMAL_RAND)
|
||||
scale = generator(GEN_VECTOR, list(0.5,0.5), list(2,2), NORMAL_RAND)
|
||||
|
||||
/particles/embers/spark
|
||||
count = 3
|
||||
spawning = 2
|
||||
gradient = list("#FBAF4D", "#FCE6B6", "#FFFFFF")
|
||||
lifespan = 1.5 SECONDS
|
||||
fade = 1 SECONDS
|
||||
fadein = 0.1 SECONDS
|
||||
grow = -0.1
|
||||
velocity = generator(GEN_CIRCLE, 3, 3, SQUARE_RAND)
|
||||
position = generator(GEN_SPHERE, 0, 0, LINEAR_RAND)
|
||||
scale = generator(GEN_VECTOR, list(0.5, 0.5), list(1,1), NORMAL_RAND)
|
||||
drift = list(0)
|
||||
|
||||
/particles/embers/spark/severe
|
||||
count = 10
|
||||
spawning = 5
|
||||
gradient = list("#FCE6B6", "#FFFFFF")
|
||||
|
||||
@@ -84,3 +84,16 @@
|
||||
grow = 0.05
|
||||
spin = 2
|
||||
color = "#fcffff77"
|
||||
|
||||
/particles/smoke/cyborg
|
||||
count = 5
|
||||
spawning = 1
|
||||
lifespan = 1 SECONDS
|
||||
fade = 1.8 SECONDS
|
||||
position = list(0, 0, 0)
|
||||
scale = list(0.5, 0.5)
|
||||
grow = 0.1
|
||||
|
||||
/particles/smoke/cyborg/heavy_damage
|
||||
lifespan = 0.8 SECONDS
|
||||
fade = 0.8 SECONDS
|
||||
|
||||
@@ -860,7 +860,7 @@
|
||||
if(carbon_target.client)
|
||||
carbon_target.set_eye_blur_if_lower(6 SECONDS)
|
||||
carbon_target.adjust_temp_blindness(2 SECONDS)
|
||||
if(carbon_target.get_eye_protection() <= 0) // no eye protection? ARGH IT BURNS. Warning: don't add a stun here. It's a roundstart item with some quirks.
|
||||
if(carbon_target.get_eye_protection() <= 0 || carbon_target.is_eyes_covered()) // no eye protection? ARGH IT BURNS. Warning: don't add a stun here. It's a roundstart item with some quirks. added redundancy because gas masks don't give you eye protection
|
||||
carbon_target.adjust_jitter(1 SECONDS)
|
||||
carbon_target.adjust_eye_blur(0.5 SECONDS)
|
||||
flash_color(carbon_target, flash_color=paint_color, flash_time=40)
|
||||
|
||||
@@ -147,7 +147,6 @@
|
||||
if(!cell || !cell_removable)
|
||||
return FALSE
|
||||
|
||||
cell.update_appearance()
|
||||
cell.forceMove(get_turf(src))
|
||||
balloon_alert(user, "removed [cell]")
|
||||
cell = null
|
||||
|
||||
@@ -963,14 +963,10 @@
|
||||
var/dark_light_range = 2.5
|
||||
///Variable to preserve old lighting behavior in flashlights, to handle darkness.
|
||||
var/dark_light_power = -3
|
||||
var/on = FALSE
|
||||
|
||||
/obj/item/flashlight/flashdark/update_brightness()
|
||||
. = ..()
|
||||
if(on)
|
||||
set_light(dark_light_range, dark_light_power)
|
||||
else
|
||||
set_light(0)
|
||||
set_light(dark_light_range, dark_light_power)
|
||||
|
||||
//type and subtypes spawned and used to give some eyes lights,
|
||||
/obj/item/flashlight/eyelight
|
||||
|
||||
@@ -352,10 +352,10 @@
|
||||
return
|
||||
|
||||
|
||||
if(iscarbon(talking_movable))
|
||||
var/mob/living/carbon/talking_carbon = talking_movable
|
||||
if(talking_carbon.client?.prefs.read_preference(/datum/preference/toggle/radio_noise))
|
||||
SEND_SOUND(talking_carbon, 'sound/misc/radio_talk.ogg')
|
||||
if(isliving(talking_movable))
|
||||
var/mob/living/talking_living = talking_movable
|
||||
if(talking_living.client?.prefs.read_preference(/datum/preference/toggle/radio_noise))
|
||||
SEND_SOUND(talking_living, 'sound/misc/radio_talk.ogg')
|
||||
|
||||
// All radios make an attempt to use the subspace system first
|
||||
signal.send_to_receivers()
|
||||
@@ -428,15 +428,17 @@
|
||||
SEND_SIGNAL(src, COMSIG_RADIO_RECEIVE_MESSAGE, data)
|
||||
flick_overlay_view(overlay_speaker_active, 5 SECONDS)
|
||||
|
||||
if(iscarbon(loc))
|
||||
var/mob/living/carbon/holder = loc
|
||||
if(!holder.client?.prefs.read_preference(/datum/preference/toggle/radio_noise))
|
||||
return
|
||||
if(!isliving(loc))
|
||||
return
|
||||
|
||||
var/list/spans = data["spans"]
|
||||
SEND_SOUND(holder, 'sound/misc/radio_receive.ogg')
|
||||
if(SPAN_COMMAND in spans)
|
||||
SEND_SOUND(holder, 'sound/misc/radio_important.ogg')
|
||||
var/mob/living/holder = loc
|
||||
if(!holder.client?.prefs.read_preference(/datum/preference/toggle/radio_noise))
|
||||
return
|
||||
|
||||
var/list/spans = data["spans"]
|
||||
SEND_SOUND(holder, 'sound/misc/radio_receive.ogg')
|
||||
if(SPAN_COMMAND in spans)
|
||||
SEND_SOUND(holder, 'sound/misc/radio_important.ogg')
|
||||
|
||||
/obj/item/radio/ui_state(mob/user)
|
||||
return GLOB.inventory_state
|
||||
|
||||
@@ -167,12 +167,6 @@
|
||||
icon_state = "de6"
|
||||
microwave_riggable = FALSE // You can't melt wood in the microwave
|
||||
|
||||
/obj/item/dice/d6/bone
|
||||
name = "bone die"
|
||||
desc = "A die carved from a creature's bone. Dried blood marks the indented pits."
|
||||
icon_state = "db6"
|
||||
microwave_riggable = FALSE // You can't melt bone in the microwave
|
||||
|
||||
/obj/item/dice/d6/space
|
||||
name = "space cube"
|
||||
desc = "A die with six sides. 6 TIMES 255 TIMES 255 TILE TOTAL EXISTENCE, SQUARE YOUR MIND OF EDUCATED STUPID: 2 DOES NOT EXIST."
|
||||
|
||||
@@ -16,6 +16,87 @@
|
||||
juice_typepath = /datum/reagent/consumable/watermelonjuice
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
|
||||
/obj/item/food/watermelonmush
|
||||
name = "watermelon mush"
|
||||
desc = "A plop of watery goodness."
|
||||
icon = 'icons/obj/service/hydroponics/harvest.dmi'
|
||||
icon_state = "watermelonpulp"
|
||||
food_reagents = list(
|
||||
/datum/reagent/water = 2,
|
||||
/datum/reagent/consumable/nutriment/vitamin = 0.1,
|
||||
/datum/reagent/consumable/nutriment = 0.5,
|
||||
)
|
||||
tastes = list("watermelon" = 1)
|
||||
foodtypes = FRUIT
|
||||
food_flags = FOOD_FINGER_FOOD
|
||||
juice_typepath = /datum/reagent/consumable/watermelonjuice
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
|
||||
/obj/item/food/holymelonslice
|
||||
name = "holymelon slice"
|
||||
desc = "A slice of holy goodness."
|
||||
icon = 'icons/obj/service/hydroponics/harvest.dmi'
|
||||
icon_state = "holymelonslice"
|
||||
food_reagents = list(
|
||||
/datum/reagent/water/holywater = 0.5,
|
||||
/datum/reagent/consumable/nutriment/vitamin = 0.2,
|
||||
/datum/reagent/consumable/nutriment = 1,
|
||||
)
|
||||
tastes = list("holymelon" = 1)
|
||||
foodtypes = FRUIT
|
||||
food_flags = FOOD_FINGER_FOOD
|
||||
juice_typepath = /datum/reagent/water/holywater
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
|
||||
/obj/item/food/holymelonmush
|
||||
name = "holymelon mush"
|
||||
desc = "A plop of holy goodness."
|
||||
icon = 'icons/obj/service/hydroponics/harvest.dmi'
|
||||
icon_state = "holymelonpulp"
|
||||
food_reagents = list(
|
||||
/datum/reagent/water/holywater = 1,
|
||||
/datum/reagent/consumable/nutriment/vitamin = 0.1,
|
||||
/datum/reagent/consumable/nutriment = 0.5,
|
||||
)
|
||||
tastes = list("holymelon" = 1)
|
||||
foodtypes = FRUIT
|
||||
food_flags = FOOD_FINGER_FOOD
|
||||
juice_typepath = /datum/reagent/water/holywater
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
|
||||
/obj/item/food/barrelmelonslice
|
||||
name = "barrelmelon slice"
|
||||
desc = "A slice of beery goodness."
|
||||
icon = 'icons/obj/service/hydroponics/harvest.dmi'
|
||||
icon_state = "barrelmelonslice"
|
||||
food_reagents = list(
|
||||
/datum/reagent/consumable/ethanol/beer = 1,
|
||||
/datum/reagent/consumable/nutriment/vitamin = 0.2,
|
||||
/datum/reagent/consumable/nutriment = 1,
|
||||
)
|
||||
tastes = list("beer" = 1)
|
||||
foodtypes = FRUIT
|
||||
food_flags = FOOD_FINGER_FOOD
|
||||
juice_typepath = /datum/reagent/consumable/ethanol/beer
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
|
||||
/obj/item/food/barrelmelonmush
|
||||
name = "barrelmelon mush"
|
||||
desc = "A plop of beery goodness."
|
||||
icon = 'icons/obj/service/hydroponics/harvest.dmi'
|
||||
icon_state = "barrelmelonpulp"
|
||||
food_reagents = list(
|
||||
/datum/reagent/consumable/ethanol/beer = 2,
|
||||
/datum/reagent/consumable/nutriment/vitamin = 0.1,
|
||||
/datum/reagent/consumable/nutriment = 0.5,
|
||||
)
|
||||
tastes = list("beer" = 1)
|
||||
foodtypes = FRUIT
|
||||
food_flags = FOOD_FINGER_FOOD
|
||||
juice_typepath = /datum/reagent/consumable/ethanol/beer
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
|
||||
|
||||
/obj/item/food/appleslice
|
||||
name = "apple slice"
|
||||
desc = "The perfect after-school snack."
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
|
||||
/obj/item/book/granter/crafting_recipe/fletching
|
||||
name = "Whittle Me This: Fletching for the Modern Spacer"
|
||||
desc = "A how-to guide to crafting and maintaining wooden bows, fletching arrows, and... making violins?"
|
||||
crafting_recipe_types = list(
|
||||
/datum/crafting_recipe/arrow,
|
||||
/datum/crafting_recipe/plastic_arrow,
|
||||
/datum/crafting_recipe/shortbow,
|
||||
/datum/crafting_recipe/holy_arrow,
|
||||
///datum/crafting_recipe/arrow_quiver, // SKYRAT EDIT REMOVAL: public-knowledge quiver
|
||||
/datum/crafting_recipe/violin,
|
||||
)
|
||||
icon_state = "book4"
|
||||
uses = INFINITY
|
||||
remarks = list(
|
||||
"Okay, so the quality of the wood has some impact.",
|
||||
"I feel like the violin chapter is in here as a joke, surely...",
|
||||
"The author seems oddly proud about how many years they've been hunting in 'these parts'...",
|
||||
"i really wish they'd stop with all the marriage euphemisms...",
|
||||
"I need membership? Membership with what?",
|
||||
"Okay, I think I get the point already...",
|
||||
)
|
||||
@@ -17,6 +17,8 @@
|
||||
obj_flags = CONDUCTS_ELECTRICITY
|
||||
slot_flags = ITEM_SLOT_BELT
|
||||
max_integrity = 40
|
||||
pickup_sound = 'sound/items/grenade_pick_up.ogg'
|
||||
drop_sound = 'sound/items/grenade_drop.ogg'
|
||||
/// Bitfields which prevent the grenade from detonating if set. Includes ([GRENADE_DUD]|[GRENADE_USED])
|
||||
var/dud_flags = NONE
|
||||
///Is this grenade currently armed?
|
||||
|
||||
@@ -48,6 +48,8 @@
|
||||
breakouttime = 1 MINUTES
|
||||
armor_type = /datum/armor/restraints_handcuffs
|
||||
custom_price = PAYCHECK_COMMAND * 0.35
|
||||
pickup_sound = 'sound/items/handcuffs_pick_up.ogg'
|
||||
drop_sound = 'sound/items/handcuffs_drop.ogg'
|
||||
|
||||
///How long it takes to handcuff someone
|
||||
var/handcuff_time = 4 SECONDS
|
||||
@@ -55,6 +57,8 @@
|
||||
var/handcuff_time_mod = 1
|
||||
///Sound that plays when starting to put handcuffs on someone
|
||||
var/cuffsound = 'sound/weapons/handcuffs.ogg'
|
||||
///Sound that plays when restrain is successful
|
||||
var/cuffsuccesssound = 'sound/items/handcuff_finish.ogg'
|
||||
///If set, handcuffs will be destroyed on application and leave behind whatever this is set to.
|
||||
var/trashtype = null
|
||||
/// How strong the cuffs are. Weak cuffs can be broken with wirecutters or boxcutters.
|
||||
@@ -120,6 +124,7 @@
|
||||
return
|
||||
|
||||
apply_cuffs(victim, user, dispense = iscyborg(user))
|
||||
playsound(loc, cuffsuccesssound, 30, TRUE, -2)
|
||||
|
||||
victim.visible_message(
|
||||
span_notice("[user] handcuffs [victim]."),
|
||||
|
||||
@@ -166,6 +166,19 @@
|
||||
force = 15
|
||||
throwforce = 15
|
||||
|
||||
/obj/item/knife/combat/root
|
||||
name = "cahn'root dagger"
|
||||
icon = 'icons/obj/weapons/stabby.dmi'
|
||||
icon_state = "rootdagger"
|
||||
worn_icon_state = "root_dagger"
|
||||
lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi'
|
||||
righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi'
|
||||
inhand_icon_state = "rootshiv"
|
||||
embed_type = /datum/embed_data/combat_knife/weak
|
||||
desc = "A root dagger, deceptively sharp. Perfect to hide and stab someone with, or make a couple and throw them at enemies."
|
||||
force = 15
|
||||
throwforce = 15
|
||||
|
||||
/obj/item/knife/combat/bone
|
||||
name = "bone dagger"
|
||||
inhand_icon_state = "bone_dagger"
|
||||
@@ -177,7 +190,6 @@
|
||||
desc = "A sharpened bone. The bare minimum in survival."
|
||||
embed_type = /datum/embed_data/combat_knife/weak
|
||||
obj_flags = parent_type::obj_flags & ~CONDUCTS_ELECTRICITY
|
||||
slot_flags = NONE
|
||||
force = 15
|
||||
throwforce = 15
|
||||
custom_materials = null
|
||||
@@ -189,7 +201,9 @@
|
||||
name = "cyborg knife"
|
||||
icon = 'icons/obj/items_cyborg.dmi'
|
||||
icon_state = "knife_cyborg"
|
||||
worn_icon_state = "knife_cyborg" //error sprite - this shouldn't have been dropped
|
||||
desc = "A cyborg-mounted plasteel knife. Extremely sharp and durable."
|
||||
slot_flags = NONE //you can't put this in your mouth
|
||||
|
||||
/obj/item/knife/shiv
|
||||
name = "glass shiv"
|
||||
@@ -279,3 +293,18 @@
|
||||
/obj/item/knife/shiv/carrot/suicide_act(mob/living/carbon/user)
|
||||
user.visible_message(span_suicide("[user] forcefully drives \the [src] into [user.p_their()] eye! It looks like [user.p_theyre()] trying to commit suicide!"))
|
||||
return BRUTELOSS
|
||||
|
||||
/obj/item/knife/shiv/parsnip
|
||||
name = "parsnip shiv"
|
||||
icon_state = "parsnipshiv"
|
||||
inhand_icon_state = "parsnipshiv"
|
||||
desc = "Truly putting 'snip' in the 'parsnip', and it's not sub-par either!"
|
||||
custom_materials = null
|
||||
|
||||
/obj/item/knife/shiv/root
|
||||
name = "cahn'root shiv"
|
||||
icon_state = "rootshiv"
|
||||
inhand_icon_state = "rootshiv"
|
||||
desc = "A root sharpened into a shiv. A root source of someone's stab wounds soon, most likely."
|
||||
custom_materials = null
|
||||
|
||||
|
||||
@@ -318,6 +318,8 @@
|
||||
bare_wound_bonus = 5
|
||||
clumsy_knockdown_time = 15 SECONDS
|
||||
active = FALSE
|
||||
pickup_sound = 'sound/items/stun_baton_pick_up.ogg'
|
||||
drop_sound = 'sound/items/stun_baton_drop.ogg'
|
||||
|
||||
/// The sound effecte played when our baton is extended.
|
||||
var/on_sound = 'sound/weapons/batonextend.ogg'
|
||||
@@ -436,6 +438,8 @@
|
||||
light_on = FALSE
|
||||
light_color = LIGHT_COLOR_ORANGE
|
||||
light_power = 0.5
|
||||
pickup_sound = 'sound/items/stun_baton_pick_up.ogg'
|
||||
drop_sound = 'sound/items/stun_baton_drop.ogg'
|
||||
|
||||
|
||||
var/throw_stun_chance = 35
|
||||
@@ -504,7 +508,6 @@
|
||||
/obj/item/melee/baton/security/Exited(atom/movable/mov_content)
|
||||
. = ..()
|
||||
if(mov_content == cell)
|
||||
cell.update_appearance()
|
||||
cell = null
|
||||
active = FALSE
|
||||
update_appearance()
|
||||
|
||||
@@ -164,6 +164,47 @@
|
||||
user.death(FALSE)
|
||||
REMOVE_TRAIT(src, TRAIT_NODROP, SABRE_SUICIDE_TRAIT)
|
||||
|
||||
|
||||
/obj/item/melee/parsnip_sabre
|
||||
name = "parsnip sabre"
|
||||
desc = "An elegant weapon, if weird weapon. Suprisingly sharp for being made from a parsnip."
|
||||
icon = 'icons/obj/weapons/sword.dmi'
|
||||
icon_state = "parsnip_sabre"
|
||||
inhand_icon_state = "parsnip_sabre"
|
||||
lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi'
|
||||
righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi'
|
||||
force = 15
|
||||
throwforce = 10
|
||||
demolition_mod = 0.3
|
||||
w_class = WEIGHT_CLASS_BULKY
|
||||
block_chance = 40
|
||||
armour_penetration = 40
|
||||
sharpness = SHARP_EDGED
|
||||
attack_verb_continuous = list("slashes", "cuts")
|
||||
attack_verb_simple = list("slash", "cut")
|
||||
block_sound = 'sound/weapons/parry.ogg'
|
||||
hitsound = 'sound/weapons/rapierhit.ogg'
|
||||
custom_materials = null
|
||||
wound_bonus = 5
|
||||
bare_wound_bonus = 15
|
||||
|
||||
/obj/item/melee/sabre/Initialize(mapload)
|
||||
. = ..()
|
||||
AddComponent(/datum/component/jousting)
|
||||
|
||||
/obj/item/melee/parsnip_sabre/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK, damage_type = BRUTE)
|
||||
if(attack_type == PROJECTILE_ATTACK || attack_type == LEAP_ATTACK)
|
||||
final_block_chance = 0 //Don't bring a sword to a gunfight, and also you aren't going to really block someone full body tackling you with a sword
|
||||
return ..()
|
||||
|
||||
/obj/item/melee/parsnip_sabre/on_exit_storage(datum/storage/container)
|
||||
. = ..()
|
||||
playsound(container.parent, 'sound/items/unsheath.ogg', 25, TRUE)
|
||||
|
||||
/obj/item/melee/parsnip_sabre/on_enter_storage(datum/storage/container)
|
||||
. = ..()
|
||||
playsound(container.parent, 'sound/items/sheath.ogg', 25, TRUE)
|
||||
|
||||
/obj/item/melee/beesword
|
||||
name = "The Stinger"
|
||||
desc = "Taken from a giant bee and folded over one thousand times in pure honey. Can sting through anything."
|
||||
|
||||
@@ -99,6 +99,15 @@
|
||||
max_integrity = 55
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
|
||||
/obj/item/shield/buckler/moonflower
|
||||
name = "moonflower buckler"
|
||||
desc = "A buckler made from a steel-cap reinforced moonflower."
|
||||
icon_state = "moonflower_buckler"
|
||||
inhand_icon_state = "moonflower_buckler"
|
||||
block_chance = 40
|
||||
max_integrity = 40
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
|
||||
/obj/item/shield/kite
|
||||
name = "kite shield"
|
||||
desc = "Protect your internal organs with this almond shaped shield."
|
||||
@@ -140,6 +149,8 @@
|
||||
shield_break_sound = 'sound/effects/glassbr3.ogg'
|
||||
shield_break_leftover = /obj/item/shard
|
||||
armor_type = /datum/armor/item_shield/riot
|
||||
pickup_sound = 'sound/items/plastic_shield_pick_up.ogg'
|
||||
drop_sound = 'sound/items/plastic_shield_drop.ogg'
|
||||
|
||||
/obj/item/shield/riot/Initialize(mapload)
|
||||
. = ..()
|
||||
|
||||
@@ -41,6 +41,7 @@ GLOBAL_LIST_INIT(rod_recipes, list ( \
|
||||
merge_type = /obj/item/stack/rods
|
||||
pickup_sound = 'sound/items/iron_rod_pick_up.ogg'
|
||||
drop_sound = 'sound/items/metal_drop.ogg'
|
||||
sound_vary = TRUE
|
||||
|
||||
/datum/embed_data/rods
|
||||
embed_chance = 50
|
||||
|
||||
@@ -398,6 +398,9 @@
|
||||
/obj/item/restraints/legcuffs/bola,
|
||||
/obj/item/stock_parts/power_store/cell/microfusion, //SKYRAT EDIT ADDITION
|
||||
))
|
||||
atom_storage.open_sound = 'sound/items/holster.ogg'
|
||||
atom_storage.open_sound_vary = TRUE
|
||||
atom_storage.rustle_sound = FALSE
|
||||
|
||||
/obj/item/storage/belt/security/full/PopulateContents()
|
||||
new /obj/item/reagent_containers/spray/pepper(src)
|
||||
@@ -883,6 +886,50 @@
|
||||
new /obj/item/melee/sabre(src)
|
||||
update_appearance()
|
||||
|
||||
/obj/item/storage/belt/grass_sabre
|
||||
name = "sabre sheath"
|
||||
desc = "An simple grass sheath designed to hold a sabre of... some sorts. Actual metal one might be too sharp, though..."
|
||||
icon_state = "grass_sheath"
|
||||
inhand_icon_state = "grass_sheath"
|
||||
worn_icon_state = "grass_sheath"
|
||||
w_class = WEIGHT_CLASS_BULKY
|
||||
interaction_flags_click = parent_type::interaction_flags_click | NEED_DEXTERITY | NEED_HANDS
|
||||
|
||||
/obj/item/storage/belt/grass_sabre/Initialize(mapload)
|
||||
. = ..()
|
||||
AddElement(/datum/element/update_icon_updates_onmob)
|
||||
|
||||
atom_storage.max_slots = 1
|
||||
atom_storage.rustle_sound = FALSE
|
||||
atom_storage.max_specific_storage = WEIGHT_CLASS_BULKY
|
||||
atom_storage.set_holdable(/obj/item/melee/sabre)
|
||||
atom_storage.click_alt_open = FALSE
|
||||
|
||||
/obj/item/storage/belt/grass_sabre/examine(mob/user)
|
||||
. = ..()
|
||||
if(length(contents))
|
||||
. += span_notice("Alt-click it to quickly draw the blade.")
|
||||
|
||||
/obj/item/storage/belt/grass_sabre/click_alt(mob/user)
|
||||
if(length(contents))
|
||||
var/obj/item/I = contents[1]
|
||||
user.visible_message(span_notice("[user] takes [I] out of [src]."), span_notice("You take [I] out of [src]."))
|
||||
user.put_in_hands(I)
|
||||
update_appearance()
|
||||
else
|
||||
balloon_alert(user, "it's empty!")
|
||||
return CLICK_ACTION_SUCCESS
|
||||
|
||||
/obj/item/storage/belt/grass_sabre/update_icon_state()
|
||||
icon_state = initial(inhand_icon_state)
|
||||
inhand_icon_state = initial(inhand_icon_state)
|
||||
worn_icon_state = initial(worn_icon_state)
|
||||
if(contents.len)
|
||||
icon_state += "-sabre"
|
||||
inhand_icon_state += "-sabre"
|
||||
worn_icon_state += "-sabre"
|
||||
return ..()
|
||||
|
||||
/obj/item/storage/belt/plant
|
||||
name = "botanical belt"
|
||||
desc = "A sturdy leather belt used to hold most hydroponics supplies."
|
||||
|
||||
@@ -43,7 +43,7 @@
|
||||
if(HAS_TRAIT(SSstation, STATION_TRAIT_RADIOACTIVE_NEBULA))
|
||||
new /obj/item/storage/pill_bottle/potassiodide(src)
|
||||
|
||||
if(LAZYLEN(SSmapping.multiz_levels))
|
||||
if(length(SSmapping.levels_by_trait(ZTRAIT_STATION)) > 1)
|
||||
new /obj/item/climbing_hook/emergency(src)
|
||||
|
||||
new /obj/item/oxygen_candle(src) //SKYRAT EDIT ADDITION
|
||||
|
||||
@@ -33,6 +33,8 @@
|
||||
/obj/item/gun/energy/laser/captain,
|
||||
/obj/item/gun/energy/e_gun/hos,
|
||||
))
|
||||
atom_storage.open_sound = 'sound/items/holster.ogg'
|
||||
atom_storage.open_sound_vary = TRUE
|
||||
|
||||
/obj/item/storage/belt/holster/energy
|
||||
name = "energy shoulder holsters"
|
||||
|
||||
@@ -191,7 +191,7 @@
|
||||
desc = "A hydraulic prying tool, simple but powerful."
|
||||
icon = 'icons/obj/items_cyborg.dmi'
|
||||
icon_state = "toolkit_engiborg_crowbar"
|
||||
worn_icon_state = "crowbar"
|
||||
worn_icon_state = "toolkit_engiborg_crowbar" //error sprite - this shouldn't have been dropped
|
||||
usesound = 'sound/items/jaws_pry.ogg'
|
||||
force = 10
|
||||
toolspeed = 0.5
|
||||
|
||||
@@ -505,6 +505,36 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
|
||||
user.visible_message(span_suicide("[user] is strangling [user.p_them()]self with [src]'s cord! It looks like [user.p_theyre()] trying to commit suicide!"))
|
||||
return OXYLOSS
|
||||
|
||||
/obj/item/bambostaff
|
||||
name = "Bamboo Staff"
|
||||
desc = "A long bamboo-made staff with steel-capped ends. It is rumoured that initiates of Spider Clan train with such before getting to learn how to use a katana."
|
||||
force = 10
|
||||
block_chance = 45
|
||||
block_sound = 'sound/weapons/genhit.ogg'
|
||||
slot_flags = ITEM_SLOT_BACK
|
||||
w_class = WEIGHT_CLASS_BULKY
|
||||
hitsound = SFX_SWING_HIT
|
||||
attack_verb_continuous = list("smashes", "slams", "whacks", "thwacks")
|
||||
attack_verb_simple = list("smash", "slam", "whack", "thwack")
|
||||
icon = 'icons/obj/weapons/staff.dmi'
|
||||
icon_state = "bambostaff0"
|
||||
inhand_icon_state = "bambostaff0"
|
||||
worn_icon_state = "bambostaff0"
|
||||
lefthand_file = 'icons/mob/inhands/weapons/staves_lefthand.dmi'
|
||||
righthand_file = 'icons/mob/inhands/weapons/staves_righthand.dmi'
|
||||
|
||||
/obj/item/nullrod/bostaff/Initialize(mapload)
|
||||
. = ..()
|
||||
AddComponent(/datum/component/two_handed, \
|
||||
force_unwielded = 10, \
|
||||
force_wielded = 14, \
|
||||
icon_wielded = "[base_icon_state]1", \
|
||||
)
|
||||
|
||||
/obj/item/nullrod/bostaff/update_icon_state()
|
||||
icon_state = "[base_icon_state]0"
|
||||
return ..()
|
||||
|
||||
/obj/item/cane
|
||||
name = "cane"
|
||||
desc = "A cane used by a true gentleman. Or a clown."
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
/// Icon to use as a 32x32 preview in crafting menus and such
|
||||
var/icon_preview
|
||||
var/icon_state_preview
|
||||
/// The vertical pixel offset applied when the object is anchored on a tile with table
|
||||
/// The vertical pixel_z offset applied when the object is anchored on a tile with table
|
||||
/// Ignored when set to 0 - to avoid shifting directional wall-mounted objects above tables
|
||||
var/anchored_tabletop_offset = 0
|
||||
|
||||
@@ -278,7 +278,14 @@ GLOBAL_LIST_EMPTY(objects_by_id_tag)
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
/// Adjusts the vertical pixel offset when the object is anchored on a tile with table
|
||||
/// Adjusts the vertical pixel_z offset when the object is anchored on a tile with table
|
||||
/obj/proc/check_on_table()
|
||||
if(anchored_tabletop_offset != 0 && !istype(src, /obj/structure/table) && locate(/obj/structure/table) in loc)
|
||||
pixel_y = anchored ? anchored_tabletop_offset : initial(pixel_y)
|
||||
if(anchored_tabletop_offset == 0)
|
||||
return
|
||||
if(istype(src, /obj/structure/table))
|
||||
return
|
||||
|
||||
if(anchored && locate(/obj/structure/table) in loc)
|
||||
pixel_z = anchored_tabletop_offset
|
||||
else
|
||||
pixel_z = initial(pixel_z)
|
||||
|
||||
@@ -39,6 +39,7 @@
|
||||
MEDIUM_VENT_TYPE = 5,
|
||||
SMALL_VENT_TYPE = 7,
|
||||
)
|
||||
var/wave_timer = WAVE_DURATION_SMALL
|
||||
|
||||
/// What string do we use to warn the player about the excavation event?
|
||||
var/excavation_warning = "Are you ready to excavate this ore vent?"
|
||||
@@ -219,6 +220,9 @@
|
||||
node.arrive(src)
|
||||
RegisterSignal(node, COMSIG_QDELETING, PROC_REF(handle_wave_conclusion))
|
||||
RegisterSignal(node, COMSIG_MOVABLE_MOVED, PROC_REF(handle_wave_conclusion))
|
||||
addtimer(CALLBACK(node, TYPE_PROC_REF(/atom, update_appearance)), wave_timer * 0.25)
|
||||
addtimer(CALLBACK(node, TYPE_PROC_REF(/atom, update_appearance)), wave_timer * 0.5)
|
||||
addtimer(CALLBACK(node, TYPE_PROC_REF(/atom, update_appearance)), wave_timer * 0.75)
|
||||
particles = new /particles/smoke/ash()
|
||||
for(var/i in 1 to 5) // Clears the surroundings of the ore vent before starting wave defense.
|
||||
for(var/turf/closed/mineral/rock in oview(i))
|
||||
@@ -247,11 +251,6 @@
|
||||
spawn_distance = 4, \
|
||||
spawn_distance_exclude = 3, \
|
||||
)
|
||||
var/wave_timer = 60 SECONDS
|
||||
if(boulder_size == BOULDER_SIZE_MEDIUM)
|
||||
wave_timer = 90 SECONDS
|
||||
else if(boulder_size == BOULDER_SIZE_LARGE)
|
||||
wave_timer = 150 SECONDS
|
||||
COOLDOWN_START(src, wave_cooldown, wave_timer)
|
||||
addtimer(CALLBACK(src, PROC_REF(handle_wave_conclusion)), wave_timer)
|
||||
icon_state = icon_state_tapped
|
||||
@@ -290,6 +289,7 @@
|
||||
icon_state = icon_state_tapped
|
||||
update_appearance(UPDATE_ICON_STATE)
|
||||
qdel(GetComponent(/datum/component/gps))
|
||||
UnregisterSignal(node, COMSIG_QDELETING)
|
||||
else
|
||||
visible_message(span_danger("\the [src] creaks and groans as the mining attempt fails, and the vent closes back up."))
|
||||
icon_state = initial(icon_state)
|
||||
@@ -474,18 +474,22 @@
|
||||
switch(string_boulder_size)
|
||||
if(LARGE_VENT_TYPE)
|
||||
boulder_size = BOULDER_SIZE_LARGE
|
||||
wave_timer = WAVE_DURATION_LARGE
|
||||
if(mapload)
|
||||
GLOB.ore_vent_sizes["large"] += 1
|
||||
if(MEDIUM_VENT_TYPE)
|
||||
boulder_size = BOULDER_SIZE_MEDIUM
|
||||
wave_timer = WAVE_DURATION_MEDIUM
|
||||
if(mapload)
|
||||
GLOB.ore_vent_sizes["medium"] += 1
|
||||
if(SMALL_VENT_TYPE)
|
||||
boulder_size = BOULDER_SIZE_SMALL
|
||||
wave_timer = WAVE_DURATION_SMALL
|
||||
if(mapload)
|
||||
GLOB.ore_vent_sizes["small"] += 1
|
||||
else
|
||||
boulder_size = BOULDER_SIZE_SMALL //Might as well set a default value
|
||||
wave_timer = WAVE_DURATION_SMALL
|
||||
name = initial(name)
|
||||
|
||||
|
||||
|
||||
@@ -356,6 +356,7 @@
|
||||
if((shove_flags & SHOVE_KNOCKDOWN_BLOCKED) || !(shove_flags & SHOVE_BLOCKED))
|
||||
return
|
||||
target.Knockdown(SHOVE_KNOCKDOWN_TABLE)
|
||||
target.apply_status_effect(/datum/status_effect/next_shove_stuns)
|
||||
target.visible_message(span_danger("[shover.name] shoves [target.name] onto \the [src]!"),
|
||||
span_userdanger("You're shoved onto \the [src] by [shover.name]!"), span_hear("You hear aggressive shuffling followed by a loud thud!"), COMBAT_MESSAGE_RANGE, shover)
|
||||
to_chat(shover, span_danger("You shove [target.name] onto \the [src]!"))
|
||||
|
||||
@@ -16,10 +16,15 @@ ADMIN_VERB(toggle_hub, R_SERVER, "Toggle Hub", "Toggles the server's visilibilit
|
||||
|
||||
SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggled Hub Visibility", "[GLOB.hub_visibility ? "Enabled" : "Disabled"]")) // If you are copy-pasting this, ensure the 4th parameter is unique to the new proc!
|
||||
|
||||
#define REGULAR_RESTART "Regular Restart"
|
||||
#define REGULAR_RESTART_DELAYED "Regular Restart (with delay)"
|
||||
#define HARD_RESTART "Hard Restart (No Delay/Feedback Reason)"
|
||||
#define HARDEST_RESTART "Hardest Restart (No actions, just reboot)"
|
||||
#define TGS_RESTART "Server Restart (Kill and restart DD)"
|
||||
ADMIN_VERB(restart, R_SERVER, "Reboot World", "Restarts the world immediately.", ADMIN_CATEGORY_SERVER)
|
||||
var/list/options = list("Regular Restart", "Regular Restart (with delay)", "Hard Restart (No Delay/Feeback Reason)", "Hardest Restart (No actions, just reboot)")
|
||||
var/list/options = list(REGULAR_RESTART, REGULAR_RESTART_DELAYED, HARD_RESTART, HARDEST_RESTART)
|
||||
if(world.TgsAvailable())
|
||||
options += "Server Restart (Kill and restart DD)";
|
||||
options += TGS_RESTART;
|
||||
|
||||
if(SSticker.admin_delay_notice)
|
||||
if(alert(user, "Are you sure? An admin has already delayed the round end for the following reason: [SSticker.admin_delay_notice]", "Confirmation", "Yes", "No") != "Yes")
|
||||
@@ -32,12 +37,12 @@ ADMIN_VERB(restart, R_SERVER, "Reboot World", "Restarts the world immediately.",
|
||||
BLACKBOX_LOG_ADMIN_VERB("Reboot World")
|
||||
var/init_by = "Initiated by [user.holder.fakekey ? "Admin" : user.key]."
|
||||
switch(result)
|
||||
if("Regular Restart")
|
||||
if(REGULAR_RESTART)
|
||||
if(!user.is_localhost())
|
||||
if(alert(user, "Are you sure you want to restart the server?","This server is live", "Restart", "Cancel") != "Restart")
|
||||
return FALSE
|
||||
SSticker.Reboot(init_by, "admin reboot - by [user.key] [user.holder.fakekey ? "(stealth)" : ""]", 10)
|
||||
if("Regular Restart (with delay)")
|
||||
if(REGULAR_RESTART_DELAYED)
|
||||
var/delay = input("What delay should the restart have (in seconds)?", "Restart Delay", 5) as num|null
|
||||
if(!delay)
|
||||
return FALSE
|
||||
@@ -45,16 +50,22 @@ ADMIN_VERB(restart, R_SERVER, "Reboot World", "Restarts the world immediately.",
|
||||
if(alert(user,"Are you sure you want to restart the server?","This server is live", "Restart", "Cancel") != "Restart")
|
||||
return FALSE
|
||||
SSticker.Reboot(init_by, "admin reboot - by [user.key] [user.holder.fakekey ? "(stealth)" : ""]", delay * 10)
|
||||
if("Hard Restart (No Delay, No Feeback Reason)")
|
||||
if(HARD_RESTART)
|
||||
to_chat(world, "World reboot - [init_by]")
|
||||
world.Reboot()
|
||||
if("Hardest Restart (No actions, just reboot)")
|
||||
if(HARDEST_RESTART)
|
||||
to_chat(world, "Hard world reboot - [init_by]")
|
||||
world.Reboot(fast_track = TRUE)
|
||||
if("Server Restart (Kill and restart DD)")
|
||||
if(TGS_RESTART)
|
||||
to_chat(world, "Server restart - [init_by]")
|
||||
world.TgsEndProcess()
|
||||
|
||||
#undef REGULAR_RESTART
|
||||
#undef REGULAR_RESTART_DELAYED
|
||||
#undef HARD_RESTART
|
||||
#undef HARDEST_RESTART
|
||||
#undef TGS_RESTART
|
||||
|
||||
ADMIN_VERB(end_round, R_SERVER, "End Round", "Forcibly ends the round and allows the server to restart normally.", ADMIN_CATEGORY_SERVER)
|
||||
var/confirm = tgui_alert(user, "End the round and restart the game world?", "End Round", list("Yes", "Cancel"))
|
||||
if(confirm != "Yes")
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
/**
|
||||
* # The path of Ash.
|
||||
* Spell names are in this language: OLD NORDIC
|
||||
* Both are related: Nordic Mythology-Yggdrassil-Ash Tree Genus-Ash
|
||||
*
|
||||
* Goes as follows:
|
||||
*
|
||||
@@ -233,7 +231,7 @@
|
||||
text = "[generate_heretic_text()] Fear the blaze, for the Ashlord, [user.real_name] has ascended! The flames shall consume all! [generate_heretic_text()]",
|
||||
title = "[generate_heretic_text()]",
|
||||
sound = 'sound/ambience/antag/heretic/ascend_ash.ogg',
|
||||
color_override = "white",
|
||||
color_override = "pink",
|
||||
)
|
||||
|
||||
var/datum/action/cooldown/spell/fire_sworn/circle_spell = new(user.mind)
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
/**
|
||||
* # The path of Blades. Stab stab.
|
||||
* Spell names are in this language: ARAMAIC
|
||||
* Both are related: Aramaic-Damascus-Blade
|
||||
*
|
||||
* Goes as follows:
|
||||
*
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
/**
|
||||
* # The path of Cosmos.
|
||||
* Spell names are in this language: SUMERIAN
|
||||
* Both are related: Sumerian-Original-Primordial-Cosmic
|
||||
*
|
||||
* Goes as follows:
|
||||
*
|
||||
@@ -285,7 +283,7 @@
|
||||
text = "[generate_heretic_text()] A Star Gazer has arrived into the station, [user.real_name] has ascended! This station is the domain of the Cosmos! [generate_heretic_text()]",
|
||||
title = "[generate_heretic_text()]",
|
||||
sound = 'sound/ambience/antag/heretic/ascend_cosmic.ogg',
|
||||
color_override = "purple",
|
||||
color_override = "pink",
|
||||
)
|
||||
var/mob/living/basic/heretic_summon/star_gazer/star_gazer_mob = new /mob/living/basic/heretic_summon/star_gazer(loc)
|
||||
star_gazer_mob.maxHealth = INFINITY
|
||||
|
||||
@@ -5,8 +5,6 @@
|
||||
|
||||
/**
|
||||
* # The path of Flesh.
|
||||
* Spell names are in this language: LATIN
|
||||
* Both are related: Latin-Rome-Hedonism-Flesh
|
||||
*
|
||||
* Goes as follows:
|
||||
*
|
||||
@@ -332,7 +330,7 @@
|
||||
text = "[generate_heretic_text()] Ever coiling vortex. Reality unfolded. ARMS OUTREACHED, THE LORD OF THE NIGHT, [user.real_name] has ascended! Fear the ever twisting hand! [generate_heretic_text()]",
|
||||
title = "[generate_heretic_text()]",
|
||||
sound = 'sound/ambience/antag/heretic/ascend_flesh.ogg',
|
||||
color_override = "red",
|
||||
color_override = "pink",
|
||||
)
|
||||
|
||||
var/datum/action/cooldown/spell/shapeshift/shed_human_form/worm_spell = new(user.mind)
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
/**
|
||||
* # The path of Lock.
|
||||
* Spell names are in this language: EGYPTIAN
|
||||
* Both are related: Egyptian-Mysteries-Secrets-Lock
|
||||
*
|
||||
* Goes as follows:
|
||||
*
|
||||
@@ -243,7 +241,7 @@
|
||||
text = "Delta-class dimensional anomaly detec[generate_heretic_text()] Reality rended, torn. Gates open, doors open, [user.real_name] has ascended! Fear the tide! [generate_heretic_text()]",
|
||||
title = "[generate_heretic_text()]",
|
||||
sound = 'sound/ambience/antag/heretic/ascend_knock.ogg',
|
||||
color_override = "yellow",
|
||||
color_override = "pink",
|
||||
)
|
||||
|
||||
// buffs
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
/**
|
||||
* # The path of Moon.
|
||||
* Spell names are in this language: ANCIENT HEBREW
|
||||
* Both are related: Ancient Hebrew-Moon Mysticism-Moon
|
||||
*
|
||||
* Goes as follows:
|
||||
*
|
||||
@@ -211,7 +209,7 @@
|
||||
The truth shall finally devour the lie! [generate_heretic_text()]",
|
||||
title = "[generate_heretic_text()]",
|
||||
sound = 'sound/ambience/antag/heretic/ascend_moon.ogg',
|
||||
color_override = "blue",
|
||||
color_override = "pink",
|
||||
)
|
||||
|
||||
ADD_TRAIT(user, TRAIT_MADNESS_IMMUNE, REF(src))
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
/**
|
||||
* # The path of Rust.
|
||||
* Spell names are in this language: OLD SLAVIC
|
||||
*
|
||||
* Goes as follows:
|
||||
*
|
||||
@@ -257,7 +256,7 @@
|
||||
text = "[generate_heretic_text()] Fear the decay, for the Rustbringer, [user.real_name] has ascended! None shall escape the corrosion! [generate_heretic_text()]",
|
||||
title = "[generate_heretic_text()]",
|
||||
sound = 'sound/ambience/antag/heretic/ascend_rust.ogg',
|
||||
color_override = "brown",
|
||||
color_override = "pink",
|
||||
)
|
||||
trigger(loc)
|
||||
RegisterSignal(user, COMSIG_MOVABLE_MOVED, PROC_REF(on_move))
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
// Heretic starting knowledge.
|
||||
// Default heretic language is Ancient Greek, because, uh, they're like ancient and shit.
|
||||
|
||||
/// Global list of all heretic knowledge that have route = PATH_START. List of PATHS.
|
||||
GLOBAL_LIST_INIT(heretic_start_knowledge, initialize_starting_knowledge())
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
/**
|
||||
* # The path of VOID.
|
||||
* Spell names are in this language: PALI
|
||||
* Both are related: Pali-Buddhism-Nothingness-Void
|
||||
*
|
||||
* Goes as follows:
|
||||
*
|
||||
@@ -221,7 +219,7 @@
|
||||
text = "[generate_heretic_text()] The nobleman of void [user.real_name] has arrived, stepping along the Waltz that ends worlds! [generate_heretic_text()]",
|
||||
title = "[generate_heretic_text()]",
|
||||
sound = 'sound/ambience/antag/heretic/ascend_void.ogg',
|
||||
color_override = "blue",
|
||||
color_override = "pink",
|
||||
)
|
||||
ADD_TRAIT(user, TRAIT_RESISTLOWPRESSURE, MAGIC_TRAIT)
|
||||
|
||||
|
||||
@@ -10,8 +10,8 @@
|
||||
school = SCHOOL_FORBIDDEN
|
||||
cooldown_time = 30 SECONDS
|
||||
|
||||
invocation = "Agresiv'noe rasprostra-neniye!"
|
||||
invocation_type = INVOCATION_SHOUT
|
||||
invocation = "A'GRSV SPR'D"
|
||||
invocation_type = INVOCATION_WHISPER
|
||||
spell_requirements = NONE
|
||||
|
||||
aoe_radius = 2
|
||||
|
||||
@@ -10,8 +10,8 @@
|
||||
school = SCHOOL_FORBIDDEN
|
||||
cooldown_time = 45 SECONDS
|
||||
|
||||
invocation = "Shea' shen-eh!"
|
||||
invocation_type = INVOCATION_SHOUT
|
||||
invocation = "AP'TRA VULN'RA!"
|
||||
invocation_type = INVOCATION_WHISPER
|
||||
spell_requirements = NONE
|
||||
|
||||
cast_range = 4
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
school = SCHOOL_FORBIDDEN
|
||||
cooldown_time = 70 SECONDS
|
||||
|
||||
invocation = "EID'R-ELDR!!!"
|
||||
invocation = "FL'MS"
|
||||
invocation_type = INVOCATION_WHISPER
|
||||
spell_requirements = NONE
|
||||
|
||||
@@ -72,8 +72,8 @@
|
||||
school = SCHOOL_FORBIDDEN
|
||||
cooldown_time = 30 SECONDS
|
||||
|
||||
invocation = "ILLA-LASARA'FOSS!!!"
|
||||
invocation_type = INVOCATION_SHOUT
|
||||
invocation = "C'SC'DE"
|
||||
invocation_type = INVOCATION_WHISPER
|
||||
spell_requirements = NONE
|
||||
|
||||
/// The radius the flames will go around the caster.
|
||||
@@ -112,7 +112,7 @@
|
||||
school = SCHOOL_FORBIDDEN
|
||||
cooldown_time = 300
|
||||
|
||||
invocation = "Eld'sky!"
|
||||
invocation = "F'RE"
|
||||
invocation_type = INVOCATION_WHISPER
|
||||
spell_requirements = NONE
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
school = SCHOOL_FORBIDDEN
|
||||
cooldown_time = 15 SECONDS
|
||||
|
||||
invocation = "Askgraar' goetur!"
|
||||
invocation = "ASH'N P'SSG'"
|
||||
invocation_type = INVOCATION_WHISPER
|
||||
spell_requirements = NONE
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
school = SCHOOL_FORBIDDEN
|
||||
cooldown_time = 45 SECONDS
|
||||
|
||||
invocation = "Fer're!"
|
||||
invocation = "CL'VE!"
|
||||
invocation_type = INVOCATION_WHISPER
|
||||
spell_requirements = NONE
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
school = SCHOOL_FORBIDDEN
|
||||
cooldown_time = 15 SECONDS
|
||||
|
||||
invocation = "Sanguis suctio!"
|
||||
invocation = "FL'MS O'ET'RN'ITY."
|
||||
invocation_type = INVOCATION_WHISPER
|
||||
spell_requirements = NONE
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user