mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-07-12 00:27:31 +01:00
Merge branch 'master' into upstream-merge-85543
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
|
||||
/// 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
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -219,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,
|
||||
|
||||
@@ -30,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,
|
||||
@@ -46,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,
|
||||
@@ -71,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,
|
||||
@@ -114,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,
|
||||
@@ -139,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,
|
||||
@@ -154,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,
|
||||
@@ -163,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,
|
||||
@@ -175,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,
|
||||
@@ -185,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,
|
||||
@@ -209,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,
|
||||
@@ -241,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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -48,7 +48,7 @@
|
||||
RegisterSignals(targ, list(COMSIG_LIVING_DISARM_HIT, COMSIG_LIVING_GET_PULLED), PROC_REF(cancel))
|
||||
RegisterSignals(weapon, list(COMSIG_ITEM_DROPPED, COMSIG_ITEM_EQUIPPED), PROC_REF(cancel))
|
||||
|
||||
var/distance = min(get_dist(shooter, target), 1) // treat 0 distance as adjacent
|
||||
var/distance = max(get_dist(shooter, target), 1) // treat 0 distance as adjacent
|
||||
var/distance_description = (distance <= 1 ? "point blank " : "")
|
||||
|
||||
shooter.visible_message(span_danger("[shooter] aims [weapon] [distance_description]at [target]!"),
|
||||
|
||||
@@ -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,8 +291,6 @@
|
||||
return
|
||||
item = SStraitor.uplink_items_by_type[item_path]
|
||||
uplink_handler.purchase_item(ui.user, item, parent)
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
if("buy_raw_tc")
|
||||
if (uplink_handler.telecrystals <= 0)
|
||||
return
|
||||
@@ -297,7 +298,6 @@
|
||||
if(!desired_amount || desired_amount < 1)
|
||||
return
|
||||
uplink_handler.purchase_raw_tc(ui.user, desired_amount, parent)
|
||||
>>>>>>> 63e3e2b25636 (Fixes an infinite tc glitch (#85543))
|
||||
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"
|
||||
|
||||
@@ -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."
|
||||
|
||||
@@ -186,6 +186,7 @@
|
||||
/obj/machinery/LateInitialize()
|
||||
SHOULD_NOT_OVERRIDE(TRUE)
|
||||
post_machine_initialize()
|
||||
CheckParts()
|
||||
|
||||
/obj/machinery/Destroy(force)
|
||||
SSmachines.unregister_machine(src)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -54,7 +54,7 @@
|
||||
|
||||
/obj/item/melee/sabre
|
||||
name = "officer's sabre" //SKYRAT EDIT - Buffed in modular_skyrat/modules/modular_weapons/code/melee.dm
|
||||
desc = "An elegant weapon, its monomolecular edge is capable of cutting through flesh and bone with ease."
|
||||
desc = "An elegant weapon, its monomolecular edge is capable of cutting through flesh and bone with ease."
|
||||
icon = 'icons/obj/weapons/sword.dmi'
|
||||
icon_state = "sabre"
|
||||
inhand_icon_state = "sabre"
|
||||
@@ -164,6 +164,47 @@
|
||||
user.death(FALSE)
|
||||
REMOVE_TRAIT(src, TRAIT_NODROP, SABRE_SUICIDE_TRAIT)
|
||||
|
||||
/obj/item/melee/parsnip_sabre
|
||||
name = "parsnip sabre"
|
||||
desc = "A weird, yet elegant weapon. Suprisingly sharp for something 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 sort. 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/parsnip_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."
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -192,7 +192,7 @@
|
||||
//BOMBANANA
|
||||
|
||||
/obj/item/seeds/banana/bombanana
|
||||
name = "pack of bombanana seeds"
|
||||
name = "bombanana seed pack"
|
||||
desc = "They're seeds that grow into bombanana trees. When grown, give to the clown."
|
||||
plantname = "Bombanana Tree"
|
||||
product = /obj/item/food/grown/banana/bombanana
|
||||
|
||||
@@ -251,7 +251,7 @@
|
||||
return SECONDARY_ATTACK_CALL_NORMAL
|
||||
|
||||
if(being_drained)
|
||||
balloon_alert(user, "already being drained!")
|
||||
loc.balloon_alert(user, "already being drained!")
|
||||
else
|
||||
INVOKE_ASYNC(src, PROC_REF(drain_influence), user, 1)
|
||||
|
||||
@@ -283,15 +283,15 @@
|
||||
/obj/effect/heretic_influence/proc/drain_influence(mob/living/user, knowledge_to_gain)
|
||||
|
||||
being_drained = TRUE
|
||||
balloon_alert(user, "draining influence...")
|
||||
loc.balloon_alert(user, "draining influence...")
|
||||
|
||||
if(!do_after(user, 10 SECONDS, src, hidden = TRUE))
|
||||
being_drained = FALSE
|
||||
balloon_alert(user, "interrupted!")
|
||||
loc.balloon_alert(user, "interrupted!")
|
||||
return
|
||||
|
||||
// We don't need to set being_drained back since we delete after anyways
|
||||
balloon_alert(user, "influence drained")
|
||||
loc.balloon_alert(user, "influence drained")
|
||||
|
||||
var/datum/antagonist/heretic/heretic_datum = IS_HERETIC(user)
|
||||
heretic_datum.knowledge_points += knowledge_to_gain
|
||||
|
||||
@@ -126,6 +126,21 @@
|
||||
on_update()
|
||||
return TRUE
|
||||
|
||||
/datum/uplink_handler/proc/purchase_raw_tc(mob/user, amount, atom/movable/source)
|
||||
if(shop_locked)
|
||||
return FALSE
|
||||
if(telecrystals < amount)
|
||||
return FALSE
|
||||
|
||||
telecrystals -= amount
|
||||
var/tcs = new /obj/item/stack/telecrystal(get_turf(user), amount)
|
||||
user.put_in_hands(tcs)
|
||||
|
||||
log_uplink("[key_name(user)] purchased [amount] raw telecrystals from [source]'s uplink")
|
||||
on_update()
|
||||
return TRUE
|
||||
|
||||
|
||||
/// Generates objectives for this uplink handler
|
||||
/datum/uplink_handler/proc/generate_objectives()
|
||||
var/potential_objectives_left = maximum_potential_objectives - (length(potential_objectives) + length(active_objectives))
|
||||
|
||||
@@ -18,10 +18,13 @@
|
||||
|
||||
for(var/datum/uplink_item/item_path as anything in subtypesof(/datum/uplink_item))
|
||||
var/datum/uplink_item/item = new item_path()
|
||||
var/atom/actual_item = item.item
|
||||
if(item.item) {
|
||||
items += list(list(
|
||||
"id" = item_path,
|
||||
"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,
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
help_text,
|
||||
)
|
||||
|
||||
if(!isliving(parent) || !isliving(old_body) || !server.is_operational || !pod.is_operational)
|
||||
if(!isliving(parent) || !isliving(old_body) || !old_mind || !server.is_operational || !pod.is_operational)
|
||||
return COMPONENT_INCOMPATIBLE
|
||||
|
||||
var/mob/living/avatar = parent
|
||||
@@ -66,6 +66,9 @@
|
||||
if(alias && avatar.real_name != alias)
|
||||
avatar.fully_replace_character_name(avatar.real_name, alias)
|
||||
|
||||
for(var/skill_type in old_mind.known_skills)
|
||||
avatar.mind.set_experience(skill_type, old_mind.get_skill_exp(skill_type), silent = TRUE)
|
||||
|
||||
avatar.playsound_local(avatar, 'sound/magic/blink.ogg', 25, TRUE)
|
||||
avatar.set_static_vision(2 SECONDS)
|
||||
avatar.set_temp_blindness(1 SECONDS) // I'm in
|
||||
@@ -281,6 +284,10 @@
|
||||
if(isnull(old_mind) || isnull(old_body))
|
||||
return
|
||||
|
||||
for(var/skill_type in avatar.mind.known_skills)
|
||||
old_mind.set_experience(skill_type, avatar.mind.get_skill_exp(skill_type), silent = TRUE)
|
||||
avatar.mind.set_experience(skill_type, 0, silent = TRUE)
|
||||
|
||||
ghost.mind = old_mind
|
||||
if(old_body.stat != DEAD)
|
||||
old_mind.transfer_to(old_body, force_key_move = TRUE)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/turf/open/floor/bitrunning_transport
|
||||
/turf/open/indestructible/bitrunning_transport
|
||||
name = "circuit floor"
|
||||
icon = 'icons/turf/floors.dmi'
|
||||
desc = "Looks complex. You can see the circuits running through the floor."
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
name = "Redfield Castle Archer"
|
||||
icon_state = "medisim_archer"
|
||||
|
||||
belt = /obj/item/storage/bag/quiver
|
||||
belt = /obj/item/storage/bag/quiver/full
|
||||
suit = /obj/item/clothing/suit/armor/vest/cuirass
|
||||
l_hand = /obj/item/gun/ballistic/bow
|
||||
|
||||
|
||||
@@ -313,11 +313,12 @@
|
||||
risky espionage hallway operations. Enjoy our product!"
|
||||
contraband = TRUE
|
||||
cost = CARGO_CRATE_VALUE * 6
|
||||
contains = list(/obj/item/clothing/under/syndicate/floortilecamo = 3,
|
||||
/obj/item/clothing/mask/floortilebalaclava = 3,
|
||||
/obj/item/clothing/gloves/combat/floortile = 3,
|
||||
/obj/item/clothing/shoes/jackboots/floortile = 3,
|
||||
/obj/item/storage/backpack/floortile = 3
|
||||
contains = list(
|
||||
/obj/item/clothing/under/syndicate/floortilecamo = 3,
|
||||
/obj/item/clothing/mask/floortilebalaclava = 3,
|
||||
/obj/item/clothing/gloves/combat/floortile = 3,
|
||||
/obj/item/clothing/shoes/jackboots/floortile = 3,
|
||||
/obj/item/storage/backpack/floortile = 3
|
||||
)
|
||||
crate_name = "floortile camouflauge crate"
|
||||
crate_type = /obj/structure/closet/crate/secure/weapon
|
||||
|
||||
@@ -303,3 +303,17 @@
|
||||
contains = list(/obj/item/wallframe/barsign/all_access)
|
||||
crate_name = "bar sign crate"
|
||||
discountable = SUPPLY_PACK_RARE_DISCOUNTABLE
|
||||
|
||||
/datum/supply_pack/service/bowmaking
|
||||
name = "Fletching and Bow-Making Starter Kit"
|
||||
desc = "A fairly outdated copy of 'Whittle Me This: Fletching for the Modern Spacer', along with some useful materials. \
|
||||
For those looking to get into bow-making, or give their LARPing a little more edge, you can't go wrong. Also has \
|
||||
instructions for making violins."
|
||||
cost = CARGO_CRATE_VALUE * 1.5
|
||||
contains = list(
|
||||
/obj/item/book/granter/crafting_recipe/fletching = 1,
|
||||
/obj/item/stack/sheet/mineral/wood = 10,
|
||||
/obj/item/stack/sheet/cloth = 10,
|
||||
)
|
||||
crate_name = "bowmaking starter kit crate"
|
||||
crate_type = /obj/structure/closet/crate/wooden
|
||||
|
||||
@@ -426,18 +426,22 @@
|
||||
insert(turf_underneath, holder)
|
||||
|
||||
/obj/structure/closet/supplypod/insert(atom/to_insert, atom/movable/holder)
|
||||
if(insertion_allowed(to_insert))
|
||||
if(isturf(to_insert))
|
||||
var/turf/turf_to_insert = to_insert
|
||||
turfs_in_cargo += turf_to_insert.type
|
||||
turf_to_insert.ScrapeAway()
|
||||
else
|
||||
var/atom/movable/movable_to_insert = to_insert
|
||||
movable_to_insert.forceMove(holder)
|
||||
return TRUE
|
||||
else
|
||||
if(!insertion_allowed(to_insert))
|
||||
return FALSE
|
||||
|
||||
if(isturf(to_insert))
|
||||
var/turf/turf_to_insert = to_insert
|
||||
turfs_in_cargo += turf_to_insert.type
|
||||
turf_to_insert.ScrapeAway()
|
||||
return TRUE
|
||||
|
||||
var/atom/movable/movable_to_insert = to_insert
|
||||
if (ismob(movable_to_insert))
|
||||
var/mob/mob_to_insert = movable_to_insert
|
||||
if (!isnull(mob_to_insert.buckled))
|
||||
mob_to_insert.buckled.unbuckle_mob(mob_to_insert, force = TRUE)
|
||||
movable_to_insert.forceMove(holder)
|
||||
|
||||
/obj/structure/closet/supplypod/insertion_allowed(atom/to_insert)
|
||||
if(to_insert.invisibility == INVISIBILITY_ABSTRACT)
|
||||
return FALSE
|
||||
|
||||
@@ -210,6 +210,14 @@
|
||||
name = "rice hat"
|
||||
desc = "Welcome to the rice fields, motherfucker."
|
||||
icon_state = "rice_hat"
|
||||
base_icon_state = "rice_hat"
|
||||
var/reversed = FALSE
|
||||
|
||||
/obj/item/clothing/head/costume/rice_hat/click_alt(mob/user)
|
||||
reversed = !reversed
|
||||
worn_icon_state = "[base_icon_state][reversed ? "_kim" : ""]"
|
||||
to_chat(user, span_notice("You [reversed ? "lower" : "raise"] the hat."))
|
||||
update_appearance()
|
||||
|
||||
/obj/item/clothing/head/costume/lizard
|
||||
name = "lizardskin cloche hat"
|
||||
|
||||
@@ -568,3 +568,106 @@
|
||||
fire = 50
|
||||
acid = 50
|
||||
wound = 30
|
||||
|
||||
/obj/item/clothing/head/helmet/durability/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)
|
||||
take_damage(1, BRUTE, 0, 0)
|
||||
|
||||
/obj/item/clothing/head/helmet/durability/watermelon
|
||||
name = "Watermelon Helmet"
|
||||
desc = "A helmet cut out from a watermelon. Might take a few hits, but don't expect it whitstand much."
|
||||
icon_state = "watermelon"
|
||||
inhand_icon_state = "watermelon"
|
||||
flags_inv = HIDEEARS
|
||||
dog_fashion = /datum/dog_fashion/head/watermelon
|
||||
armor_type = /datum/armor/helmet_watermelon
|
||||
max_integrity = 15
|
||||
|
||||
/obj/item/clothing/head/helmet/durability/watermelon/fire_resist
|
||||
resistance_flags = FIRE_PROOF
|
||||
armor_type = /datum/armor/helmet_watermelon_fr
|
||||
|
||||
/datum/armor/helmet_watermelon
|
||||
melee = 15
|
||||
bullet = 10
|
||||
energy = 10
|
||||
bomb = 10
|
||||
fire = 0
|
||||
acid = 25
|
||||
wound = 5
|
||||
|
||||
/datum/armor/helmet_watermelon_fr
|
||||
melee = 15
|
||||
bullet = 10
|
||||
energy = 10
|
||||
bomb = 10
|
||||
fire = 15
|
||||
acid = 30
|
||||
wound = 5
|
||||
|
||||
/obj/item/clothing/head/helmet/durability/holymelon
|
||||
name = "Holymelon Helmet"
|
||||
desc = "A helmet from a hollowed out holymelon. Might take a few hits, but don't expect it whitstand much."
|
||||
icon_state = "holymelon"
|
||||
inhand_icon_state = "holymelon"
|
||||
flags_inv = HIDEEARS
|
||||
dog_fashion = /datum/dog_fashion/head/holymelon
|
||||
armor_type = /datum/armor/helmet_watermelon
|
||||
max_integrity = 15
|
||||
var/decayed = FALSE
|
||||
|
||||
/obj/item/clothing/head/helmet/durability/holymelon/fire_resist
|
||||
resistance_flags = FIRE_PROOF
|
||||
armor_type = /datum/armor/helmet_watermelon_fr
|
||||
|
||||
/obj/item/clothing/head/helmet/durability/holymelon/Initialize(mapload)
|
||||
. = ..()
|
||||
if(decayed)
|
||||
decay()
|
||||
return
|
||||
|
||||
AddComponent(
|
||||
/datum/component/anti_magic, \
|
||||
antimagic_flags = MAGIC_RESISTANCE_HOLY, \
|
||||
inventory_flags = ITEM_SLOT_OCLOTHING, \
|
||||
charges = 1, \
|
||||
drain_antimagic = CALLBACK(src, PROC_REF(drain_antimagic)), \
|
||||
expiration = CALLBACK(src, PROC_REF(decay)) \
|
||||
)
|
||||
|
||||
/obj/item/clothing/head/helmet/durability/holymelon/proc/drain_antimagic(mob/user)
|
||||
to_chat(user, span_warning("[src] looses a bit of its shimmer and glossiness..."))
|
||||
|
||||
/obj/item/clothing/head/helmet/durability/holymelon/proc/decay()
|
||||
take_damage(8, BRUTE, 0, 0)
|
||||
|
||||
/obj/item/clothing/head/helmet/durability/barrelmelon
|
||||
name = "Barrelmelon Helmet"
|
||||
desc = "A helmet from hollowed out barrelmelon. As sturdy as if made from actual wood, though its rigid structure makes it break up quicker."
|
||||
icon_state = "barrelmelon"
|
||||
inhand_icon_state = "barrelmelon"
|
||||
flags_inv = HIDEEARS
|
||||
dog_fashion = /datum/dog_fashion/head/barrelmelon
|
||||
armor_type = /datum/armor/helmet_barrelmelon
|
||||
max_integrity = 10
|
||||
|
||||
/obj/item/clothing/head/helmet/durability/barrelmelon/fire_resist
|
||||
resistance_flags = FIRE_PROOF
|
||||
armor_type = /datum/armor/helmet_barrelmelon_fr
|
||||
|
||||
/datum/armor/helmet_barrelmelon
|
||||
melee = 25
|
||||
bullet = 20
|
||||
energy = 15
|
||||
bomb = 10
|
||||
fire = 0
|
||||
acid = 35
|
||||
wound = 10
|
||||
|
||||
/datum/armor/helmet_barrelmelon_fr
|
||||
melee = 25
|
||||
bullet = 20
|
||||
energy = 15
|
||||
bomb = 10
|
||||
fire = 20
|
||||
acid = 40
|
||||
wound = 10
|
||||
|
||||
@@ -118,33 +118,45 @@
|
||||
. = ..()
|
||||
if(!up)
|
||||
. += visor_icon
|
||||
if(smile)
|
||||
var/mutable_appearance/smiley = mutable_appearance(icon, smile_state)
|
||||
smiley.color = smile_color
|
||||
. += smiley
|
||||
|
||||
/obj/item/clothing/head/helmet/space/plasmaman/attackby(obj/item/hitting_item, mob/living/user)
|
||||
. = ..()
|
||||
if(istype(hitting_item, /obj/item/toy/crayon))
|
||||
if(smile == FALSE)
|
||||
var/obj/item/toy/crayon/CR = hitting_item
|
||||
to_chat(user, span_notice("You start drawing a smiley face on the helmet's visor.."))
|
||||
if(do_after(user, 2.5 SECONDS, target = src))
|
||||
smile = TRUE
|
||||
smile_color = CR.paint_color
|
||||
to_chat(user, "You draw a smiley on the helmet visor.")
|
||||
update_appearance()
|
||||
else
|
||||
to_chat(user, span_warning("Seems like someone already drew something on this helmet's visor!"))
|
||||
return
|
||||
if(istype(hitting_item, /obj/item/clothing/head))
|
||||
var/obj/item/clothing/hitting_clothing = hitting_item
|
||||
if(hitting_clothing.clothing_flags & STACKABLE_HELMET_EXEMPT)
|
||||
to_chat(user, span_notice("You cannot place [hitting_clothing.name] on helmet!"))
|
||||
return
|
||||
if(attached_hat)
|
||||
to_chat(user, span_notice("There's already something placed on helmet!"))
|
||||
return
|
||||
attached_hat = hitting_clothing
|
||||
to_chat(user, span_notice("You placed [hitting_clothing.name] on helmet!"))
|
||||
hitting_clothing.forceMove(src)
|
||||
/obj/item/clothing/head/helmet/space/plasmaman/item_interaction(mob/living/user, obj/item/tool, list/modifiers)
|
||||
if(istype(tool, /obj/item/toy/crayon))
|
||||
if(smile)
|
||||
to_chat(user, span_warning("Seems like someone already drew something on [src]'s visor!"))
|
||||
return ITEM_INTERACT_BLOCKING
|
||||
|
||||
var/obj/item/toy/crayon/crayon = tool
|
||||
to_chat(user, span_notice("You start drawing a smiley face on [src]'s visor..."))
|
||||
if(!do_after(user, 2.5 SECONDS, target = src))
|
||||
return ITEM_INTERACT_BLOCKING
|
||||
|
||||
smile = TRUE
|
||||
smile_color = crayon.paint_color
|
||||
to_chat(user, "You draw a smiley on [src] visor.")
|
||||
update_appearance()
|
||||
return ITEM_INTERACT_SUCCESS
|
||||
|
||||
if(!istype(tool, /obj/item/clothing/head))
|
||||
return NONE
|
||||
|
||||
var/obj/item/clothing/hitting_clothing = tool
|
||||
if(hitting_clothing.clothing_flags & STACKABLE_HELMET_EXEMPT)
|
||||
to_chat(user, span_notice("You cannot place [hitting_clothing.name] on [src]!"))
|
||||
return ITEM_INTERACT_BLOCKING
|
||||
|
||||
if(attached_hat)
|
||||
to_chat(user, span_notice("There's already something placed on [src]!"))
|
||||
return ITEM_INTERACT_BLOCKING
|
||||
|
||||
attached_hat = hitting_clothing
|
||||
to_chat(user, span_notice("You placed [hitting_clothing.name] on [src]!"))
|
||||
hitting_clothing.forceMove(src)
|
||||
update_appearance()
|
||||
return ITEM_INTERACT_SUCCESS
|
||||
|
||||
///By the by, helmets have the update_icon_updates_onmob element, so we don't have to call mob.update_worn_head()
|
||||
/obj/item/clothing/head/helmet/space/plasmaman/worn_overlays(mutable_appearance/standing, isinhands)
|
||||
|
||||
@@ -738,3 +738,113 @@
|
||||
fire = 50
|
||||
acid = 50
|
||||
wound = 30
|
||||
|
||||
/obj/item/clothing/suit/armor/durability/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)
|
||||
take_damage(1, BRUTE, 0, 0)
|
||||
|
||||
/obj/item/clothing/suit/armor/durability/watermelon
|
||||
name = "watermelon"
|
||||
desc = "An armour, made from watermelons. Propably won't take too many hits, but at least it looks serious... As serious as worn watermelon can be."
|
||||
icon_state = "watermelon"
|
||||
inhand_icon_state = null
|
||||
body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
|
||||
armor_type = /datum/armor/watermelon
|
||||
strip_delay = 60
|
||||
equip_delay_other = 40
|
||||
clothing_traits = list(TRAIT_BRAWLING_KNOCKDOWN_BLOCKED)
|
||||
max_integrity = 15
|
||||
|
||||
/obj/item/clothing/suit/armor/durability/watermelon/fire_resist
|
||||
resistance_flags = FIRE_PROOF
|
||||
armor_type = /datum/armor/watermelon_fr
|
||||
|
||||
/datum/armor/watermelon
|
||||
melee = 15
|
||||
bullet = 10
|
||||
energy = 10
|
||||
bomb = 10
|
||||
fire = 0
|
||||
acid = 25
|
||||
wound = 5
|
||||
|
||||
/datum/armor/watermelon_fr
|
||||
melee = 15
|
||||
bullet = 10
|
||||
energy = 10
|
||||
bomb = 10
|
||||
fire = 15
|
||||
acid = 30
|
||||
wound = 5
|
||||
|
||||
/obj/item/clothing/suit/armor/durability/holymelon
|
||||
name = "holymelon"
|
||||
desc = "An armour, made from holymelons. Inspires you to go on some sort of a crusade... Perhaps spreading spinach to children?"
|
||||
icon_state = "holymelon"
|
||||
inhand_icon_state = null
|
||||
body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
|
||||
armor_type = /datum/armor/watermelon
|
||||
strip_delay = 60
|
||||
equip_delay_other = 40
|
||||
clothing_traits = list(TRAIT_BRAWLING_KNOCKDOWN_BLOCKED)
|
||||
max_integrity = 15
|
||||
var/decayed = FALSE
|
||||
|
||||
/obj/item/clothing/suit/armor/durability/holymelon/fire_resist
|
||||
resistance_flags = FIRE_PROOF
|
||||
armor_type = /datum/armor/watermelon_fr
|
||||
|
||||
/obj/item/clothing/suit/armor/durability/holymelon/Initialize(mapload)
|
||||
. = ..()
|
||||
if(decayed)
|
||||
decay()
|
||||
return
|
||||
|
||||
AddComponent(
|
||||
/datum/component/anti_magic, \
|
||||
antimagic_flags = MAGIC_RESISTANCE_HOLY, \
|
||||
inventory_flags = ITEM_SLOT_OCLOTHING, \
|
||||
charges = 1, \
|
||||
drain_antimagic = CALLBACK(src, PROC_REF(drain_antimagic)), \
|
||||
expiration = CALLBACK(src, PROC_REF(decay)) \
|
||||
)
|
||||
|
||||
/obj/item/clothing/suit/armor/durability/holymelon/proc/drain_antimagic(mob/user)
|
||||
to_chat(user, span_warning("[src] looses a bit of its shimmer and glossiness..."))
|
||||
|
||||
/obj/item/clothing/suit/armor/durability/holymelon/proc/decay()
|
||||
take_damage(8, BRUTE, 0, 0)
|
||||
|
||||
|
||||
/obj/item/clothing/suit/armor/durability/barrelmelon
|
||||
name = "barrelmelon"
|
||||
desc = "An armour, made from barrelmelons. Reeks of ale, inspiring to courageous deeds. Or, perhaps, a bar brawl."
|
||||
icon_state = "barrelmelon"
|
||||
inhand_icon_state = null
|
||||
body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
|
||||
armor_type = /datum/armor/barrelmelon
|
||||
strip_delay = 60
|
||||
equip_delay_other = 40
|
||||
clothing_traits = list(TRAIT_BRAWLING_KNOCKDOWN_BLOCKED)
|
||||
max_integrity = 10
|
||||
|
||||
/obj/item/clothing/suit/armor/durability/barrelmelon/fire_resist
|
||||
resistance_flags = FIRE_PROOF
|
||||
armor_type = /datum/armor/barrelmelon_fr
|
||||
|
||||
/datum/armor/barrelmelon
|
||||
melee = 25
|
||||
bullet = 20
|
||||
energy = 15
|
||||
bomb = 10
|
||||
fire = 0
|
||||
acid = 35
|
||||
wound = 10
|
||||
|
||||
/datum/armor/barrelmelon_fr
|
||||
melee = 25
|
||||
bullet = 20
|
||||
energy = 15
|
||||
bomb = 10
|
||||
fire = 20
|
||||
acid = 40
|
||||
wound = 10
|
||||
|
||||
@@ -49,6 +49,17 @@
|
||||
resistance_flags = FLAMMABLE
|
||||
dog_fashion = /datum/dog_fashion/head/blue_wizard
|
||||
|
||||
/obj/item/clothing/head/wizard/chanterelle
|
||||
name = "chanterelle hat"
|
||||
desc = "An oversized chanterelle with hollow out space to fit a head in. Kinda looks like wizard's hat."
|
||||
icon_state = "chanterelle"
|
||||
inhand_icon_state = "chanterellehat"
|
||||
armor_type = /datum/armor/none
|
||||
resistance_flags = FLAMMABLE
|
||||
|
||||
/obj/item/clothing/head/wizard/chanterelle/fr
|
||||
resistance_flags = FIRE_PROOF
|
||||
|
||||
/obj/item/clothing/head/wizard/marisa
|
||||
name = "witch hat"
|
||||
desc = "Strange-looking hat-wear. Makes you want to cast fireballs."
|
||||
@@ -205,6 +216,48 @@
|
||||
actions_types = list(/datum/action/item_action/stickmen)
|
||||
|
||||
|
||||
/obj/item/clothing/suit/wizrobe/durathread
|
||||
name = "durathread robe"
|
||||
desc = "A rather dull durathread robe; not quite as protective as a proper piece of armour, but much stylish."
|
||||
icon_state = "durathread-fake"
|
||||
inhand_icon_state = null
|
||||
armor_type = /datum/armor/robe_durathread
|
||||
|
||||
/datum/armor/robe_durathread
|
||||
melee = 15
|
||||
bullet = 5
|
||||
laser = 25
|
||||
energy = 30
|
||||
bomb = 10
|
||||
fire = 30
|
||||
acid = 40
|
||||
|
||||
/obj/item/clothing/suit/wizrobe/durathread/fire
|
||||
name = "pyromancer robe"
|
||||
desc = "A rather dull durathread robe; not quite as protective as an woven armour, but much stylish."
|
||||
icon_state = "durathread-fire"
|
||||
|
||||
/obj/item/clothing/suit/wizrobe/durathread/ice
|
||||
name = "pyromancer robe"
|
||||
desc = "A rather dull durathread robe; not quite as protective as an woven armour, but much stylish."
|
||||
icon_state = "durathread-ice"
|
||||
|
||||
/obj/item/clothing/suit/wizrobe/durathread/electric
|
||||
name = "electromancer robe"
|
||||
desc = "Doesn't actually conduit or isolate from electricity. Though it does have some durability on account of being made from durathread."
|
||||
icon_state = "durathread-electric"
|
||||
|
||||
/obj/item/clothing/suit/wizrobe/durathread/earth
|
||||
name = "geomancer robe"
|
||||
desc = "A rather dull durathread robe; not quite as protective as an woven armour, but much stylish."
|
||||
icon_state = "durathread-earth"
|
||||
|
||||
/obj/item/clothing/suit/wizrobe/durathread/necro
|
||||
name = "necromancer robe"
|
||||
desc = "A rather dull durathread robe; not quite as protective as an woven armour, but much stylish."
|
||||
icon_state = "durathread-necro"
|
||||
|
||||
|
||||
/obj/item/clothing/suit/wizrobe/paper/ui_action_click(mob/user, action)
|
||||
stickmen()
|
||||
|
||||
|
||||
@@ -57,6 +57,11 @@ GLOBAL_LIST_INIT(specific_fish_icons, zebra_typecacheof(list(
|
||||
var/explosive_malus = FALSE
|
||||
/// If explosive_malus is true, this will be used to keep track of the turfs where an explosion happened for when we'll spawn the loot.
|
||||
var/list/exploded_turfs
|
||||
/// Mindless mobs that can fish will never pull up items on this list
|
||||
var/static/list/profound_fisher_blacklist = typecacheof(list(
|
||||
/mob/living/basic/mining/lobstrosity,
|
||||
/obj/structure/closet/crate/necropolis/tendril,
|
||||
))
|
||||
|
||||
/datum/fish_source/New()
|
||||
if(!PERFORM_ALL_TESTS(focus_only/fish_sources_tables))
|
||||
@@ -276,6 +281,9 @@ GLOBAL_LIST(fishing_property_cache)
|
||||
|
||||
var/list/fish_list_properties = collect_fish_properties()
|
||||
|
||||
|
||||
if(HAS_TRAIT(fisherman, TRAIT_PROFOUND_FISHER) && !fisherman.client)
|
||||
final_table -= profound_fisher_blacklist
|
||||
for(var/result in final_table)
|
||||
final_table[result] *= rod.hook?.get_hook_bonus_multiplicative(result)
|
||||
final_table[result] += rod.hook?.get_hook_bonus_additive(result)//Decide on order here so it can be multiplicative
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
|
||||
// aloe
|
||||
/obj/item/seeds/aloe
|
||||
name = "pack of aloe seeds"
|
||||
name = "aloe seed pack"
|
||||
desc = "These seeds grow into aloe."
|
||||
icon_state = "seed-aloe"
|
||||
species = "aloe"
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
|
||||
// Ambrosia Vulgaris
|
||||
/obj/item/seeds/ambrosia
|
||||
name = "pack of ambrosia vulgaris seeds"
|
||||
name = "ambrosia vulgaris seed pack"
|
||||
desc = "These seeds grow into common ambrosia, a plant grown by and from medicine."
|
||||
icon_state = "seed-ambrosiavulgaris"
|
||||
plant_icon_offset = 0
|
||||
@@ -36,7 +36,7 @@
|
||||
|
||||
// Ambrosia Deus
|
||||
/obj/item/seeds/ambrosia/deus
|
||||
name = "pack of ambrosia deus seeds"
|
||||
name = "ambrosia deus seed pack"
|
||||
desc = "These seeds grow into ambrosia deus. Could it be the food of the gods..?"
|
||||
icon_state = "seed-ambrosiadeus"
|
||||
species = "ambrosiadeus"
|
||||
@@ -55,7 +55,7 @@
|
||||
|
||||
//Ambrosia Gaia
|
||||
/obj/item/seeds/ambrosia/gaia
|
||||
name = "pack of ambrosia gaia seeds"
|
||||
name = "ambrosia gaia seed pack"
|
||||
desc = "These seeds grow into ambrosia gaia, filled with infinite potential."
|
||||
icon_state = "seed-ambrosia_gaia"
|
||||
species = "ambrosia_gaia"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
// Apple
|
||||
/obj/item/seeds/apple
|
||||
name = "pack of apple seeds"
|
||||
name = "apple seed pack"
|
||||
desc = "These seeds grow into apple trees."
|
||||
icon_state = "seed-apple"
|
||||
species = "apple"
|
||||
@@ -31,7 +31,7 @@
|
||||
|
||||
// Gold Apple
|
||||
/obj/item/seeds/apple/gold
|
||||
name = "pack of golden apple seeds"
|
||||
name = "golden apple seed pack"
|
||||
desc = "These seeds grow into golden apple trees. Good thing there are no firebirds in space."
|
||||
icon_state = "seed-goldapple"
|
||||
species = "goldapple"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
// Banana
|
||||
/obj/item/seeds/banana
|
||||
name = "pack of banana seeds"
|
||||
name = "banana seed pack"
|
||||
desc = "They're seeds that grow into banana trees. When grown, keep away from clown."
|
||||
icon_state = "seed-banana"
|
||||
species = "banana"
|
||||
@@ -91,7 +91,7 @@
|
||||
|
||||
// Mimana - invisible sprites are totally a feature!
|
||||
/obj/item/seeds/banana/mime
|
||||
name = "pack of mimana seeds"
|
||||
name = "mimana seed pack"
|
||||
desc = "They're seeds that grow into mimana trees. When grown, keep away from mime."
|
||||
icon_state = "seed-mimana"
|
||||
species = "mimana"
|
||||
@@ -119,7 +119,7 @@
|
||||
|
||||
// Bluespace Banana
|
||||
/obj/item/seeds/banana/bluespace
|
||||
name = "pack of bluespace banana seeds"
|
||||
name = "bluespace banana seed pack"
|
||||
desc = "They're seeds that grow into bluespace banana trees. When grown, keep away from bluespace clown."
|
||||
icon_state = "seed-banana-blue"
|
||||
species = "bluespacebanana"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
// Soybeans
|
||||
/obj/item/seeds/soya
|
||||
name = "pack of soybean seeds"
|
||||
name = "soybean seed pack"
|
||||
desc = "These seeds grow into soybean plants."
|
||||
icon_state = "seed-soybean"
|
||||
species = "soybean"
|
||||
@@ -30,7 +30,7 @@
|
||||
|
||||
// Koibean
|
||||
/obj/item/seeds/soya/koi
|
||||
name = "pack of koibean seeds"
|
||||
name = "koibean seed pack"
|
||||
desc = "These seeds grow into koibean plants."
|
||||
icon_state = "seed-koibean"
|
||||
species = "koibean"
|
||||
@@ -63,7 +63,7 @@
|
||||
//Butterbeans, the beans wid da butta!
|
||||
// Butterbeans! - Squeeze for a single butter slice!
|
||||
/obj/item/seeds/soya/butter
|
||||
name = "pack of butterbean seeds"
|
||||
name = "butterbean seed pack"
|
||||
desc = "These seeds grow into butterbean plants."
|
||||
icon_state = "seed-butterbean"
|
||||
species = "butterbean"
|
||||
@@ -94,7 +94,7 @@
|
||||
|
||||
// Green Beans
|
||||
/obj/item/seeds/greenbean
|
||||
name = "pack of green bean seeds"
|
||||
name = "green bean seed pack"
|
||||
desc = "These seeds grow into green bean plants."
|
||||
icon_state = "seed-greenbean"
|
||||
species = "greenbean"
|
||||
@@ -123,7 +123,7 @@
|
||||
|
||||
// Jumping Bean
|
||||
/obj/item/seeds/greenbean/jump
|
||||
name = "pack of jumping bean seeds"
|
||||
name = "jumping bean seed pack"
|
||||
desc = "These seeds grow into jumping bean plants."
|
||||
icon_state = "seed-jumpingbean"
|
||||
species = "jumpingbean"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
// Berries
|
||||
/obj/item/seeds/berry
|
||||
name = "pack of berry seeds"
|
||||
name = "berry seed pack"
|
||||
desc = "These seeds grow into berry bushes."
|
||||
icon_state = "seed-berry"
|
||||
species = "berry"
|
||||
@@ -31,7 +31,7 @@
|
||||
|
||||
// Poison Berries
|
||||
/obj/item/seeds/berry/poison
|
||||
name = "pack of poison-berry seeds"
|
||||
name = "poison-berry seed pack"
|
||||
desc = "These seeds grow into poison-berry bushes."
|
||||
icon_state = "seed-poisonberry"
|
||||
species = "poisonberry"
|
||||
@@ -55,7 +55,7 @@
|
||||
|
||||
// Death Berries
|
||||
/obj/item/seeds/berry/death
|
||||
name = "pack of death-berry seeds"
|
||||
name = "death-berry seed pack"
|
||||
desc = "These seeds grow into death berries."
|
||||
icon_state = "seed-deathberry"
|
||||
species = "deathberry"
|
||||
@@ -81,7 +81,7 @@
|
||||
|
||||
// Glow Berries
|
||||
/obj/item/seeds/berry/glow
|
||||
name = "pack of glow-berry seeds"
|
||||
name = "glow-berry seed pack"
|
||||
desc = "These seeds grow into glow-berry bushes."
|
||||
icon_state = "seed-glowberry"
|
||||
species = "glowberry"
|
||||
@@ -108,7 +108,7 @@
|
||||
|
||||
// Grapes
|
||||
/obj/item/seeds/grape
|
||||
name = "pack of grape seeds"
|
||||
name = "grape seed pack"
|
||||
desc = "These seeds grow into grape vines."
|
||||
icon_state = "seed-grapes"
|
||||
species = "grape"
|
||||
@@ -143,7 +143,7 @@
|
||||
|
||||
// Green Grapes
|
||||
/obj/item/seeds/grape/green
|
||||
name = "pack of green grape seeds"
|
||||
name = "green grape seed pack"
|
||||
desc = "These seeds grow into green-grape vines."
|
||||
icon_state = "seed-greengrapes"
|
||||
species = "greengrape"
|
||||
@@ -162,7 +162,7 @@
|
||||
|
||||
// Toechtauese Berries
|
||||
/obj/item/seeds/toechtauese
|
||||
name = "pack of töchtaüse berry seeds"
|
||||
name = "töchtaüse berry seed pack"
|
||||
desc = "These seeds grow into töchtaüse bushes."
|
||||
icon_state = "seed-toechtauese"
|
||||
species = "toechtauese"
|
||||
@@ -190,7 +190,7 @@
|
||||
distill_reagent = /datum/reagent/toxin/itching_powder
|
||||
|
||||
/obj/item/seeds/lanternfruit
|
||||
name = "pack of lanternfruit seeds"
|
||||
name = "lanternfruit seed pack"
|
||||
desc = "These seeds grow into lanternfruit pods."
|
||||
icon_state = "seed-lanternfruit"
|
||||
species = "lanternfruit"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
// Cannabis
|
||||
/obj/item/seeds/cannabis
|
||||
name = "pack of cannabis seeds"
|
||||
name = "cannabis seed pack"
|
||||
desc = "Taxable."
|
||||
icon_state = "seed-cannabis"
|
||||
plant_icon_offset = 6
|
||||
@@ -24,7 +24,7 @@
|
||||
|
||||
|
||||
/obj/item/seeds/cannabis/rainbow
|
||||
name = "pack of rainbow weed seeds"
|
||||
name = "rainbow weed seed pack"
|
||||
desc = "These seeds grow into rainbow weed. Groovy... and also highly addictive."
|
||||
icon_state = "seed-megacannabis"
|
||||
icon_grow = "megacannabis-grow"
|
||||
@@ -36,7 +36,7 @@
|
||||
rarity = 40
|
||||
|
||||
/obj/item/seeds/cannabis/death
|
||||
name = "pack of deathweed seeds"
|
||||
name = "deathweed seed pack"
|
||||
desc = "These seeds grow into deathweed. Not groovy."
|
||||
icon_state = "seed-blackcannabis"
|
||||
icon_grow = "blackcannabis-grow"
|
||||
@@ -48,7 +48,7 @@
|
||||
rarity = 40
|
||||
|
||||
/obj/item/seeds/cannabis/white
|
||||
name = "pack of lifeweed seeds"
|
||||
name = "lifeweed seed pack"
|
||||
desc = "I will give unto him that is munchies of the fountain of the cravings of life, freely."
|
||||
icon_state = "seed-whitecannabis"
|
||||
icon_grow = "whitecannabis-grow"
|
||||
@@ -62,7 +62,7 @@
|
||||
|
||||
|
||||
/obj/item/seeds/cannabis/ultimate
|
||||
name = "pack of omega weed seeds"
|
||||
name = "omega weed seed pack"
|
||||
desc = "These seeds grow into omega weed."
|
||||
icon_state = "seed-ocannabis"
|
||||
plant_icon_offset = 0
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
// Wheat
|
||||
/obj/item/seeds/wheat
|
||||
name = "pack of wheat seeds"
|
||||
name = "wheat seed pack"
|
||||
desc = "These may, or may not, grow into wheat."
|
||||
icon_state = "seed-wheat"
|
||||
species = "wheat"
|
||||
@@ -30,7 +30,7 @@
|
||||
|
||||
// Oat
|
||||
/obj/item/seeds/wheat/oat
|
||||
name = "pack of oat seeds"
|
||||
name = "oat seed pack"
|
||||
desc = "These may, or may not, grow into oat."
|
||||
icon_state = "seed-oat"
|
||||
species = "oat"
|
||||
@@ -52,7 +52,7 @@
|
||||
|
||||
// Rice
|
||||
/obj/item/seeds/wheat/rice
|
||||
name = "pack of rice seeds"
|
||||
name = "rice seed pack"
|
||||
desc = "These may, or may not, grow into rice."
|
||||
icon_state = "seed-rice"
|
||||
species = "rice"
|
||||
@@ -76,7 +76,7 @@
|
||||
|
||||
//Meatwheat - grows into synthetic meat
|
||||
/obj/item/seeds/wheat/meat
|
||||
name = "pack of meatwheat seeds"
|
||||
name = "meatwheat seed pack"
|
||||
desc = "If you ever wanted to drive a vegetarian to insanity, here's how."
|
||||
icon_state = "seed-meatwheat"
|
||||
species = "meatwheat"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
// Cherries
|
||||
/obj/item/seeds/cherry
|
||||
name = "pack of cherry pits"
|
||||
name = "cherry pit pack"
|
||||
desc = "Careful not to crack a tooth on one... That'd be the pits."
|
||||
icon_state = "seed-cherry"
|
||||
species = "cherry"
|
||||
@@ -34,7 +34,7 @@
|
||||
|
||||
// Blue Cherries
|
||||
/obj/item/seeds/cherry/blue
|
||||
name = "pack of blue cherry pits"
|
||||
name = "blue cherry pit pack"
|
||||
desc = "The blue kind of cherries."
|
||||
icon_state = "seed-bluecherry"
|
||||
species = "bluecherry"
|
||||
@@ -57,7 +57,7 @@
|
||||
|
||||
//Cherry Bulbs
|
||||
/obj/item/seeds/cherry/bulb
|
||||
name = "pack of cherry bulb pits"
|
||||
name = "cherry bulb pit pack"
|
||||
desc = "The glowy kind of cherries."
|
||||
icon_state = "seed-cherrybulb"
|
||||
species = "cherrybulb"
|
||||
@@ -82,7 +82,7 @@
|
||||
|
||||
//Cherry Bombs
|
||||
/obj/item/seeds/cherry/bomb
|
||||
name = "pack of cherry bomb pits"
|
||||
name = "cherry bomb pit pack"
|
||||
desc = "They give you vibes of dread and frustration."
|
||||
icon_state = "seed-cherry_bomb"
|
||||
species = "cherry_bomb"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
// Chili
|
||||
/obj/item/seeds/chili
|
||||
name = "pack of chili seeds"
|
||||
name = "chili seed pack"
|
||||
desc = "These seeds grow into chili plants. HOT! HOT! HOT!"
|
||||
icon_state = "seed-chili"
|
||||
species = "chili"
|
||||
@@ -30,7 +30,7 @@
|
||||
|
||||
// Ice Chili
|
||||
/obj/item/seeds/chili/ice
|
||||
name = "pack of chilly pepper seeds"
|
||||
name = "chilly pepper seed pack"
|
||||
desc = "These seeds grow into chilly pepper plants."
|
||||
icon_state = "seed-icepepper"
|
||||
species = "chiliice"
|
||||
@@ -56,7 +56,7 @@
|
||||
|
||||
// Ghost Chili
|
||||
/obj/item/seeds/chili/ghost
|
||||
name = "pack of ghost chili seeds"
|
||||
name = "ghost chili seed pack"
|
||||
desc = "These seeds grow into a chili said to be the hottest in the galaxy."
|
||||
icon_state = "seed-chilighost"
|
||||
species = "chilighost"
|
||||
@@ -83,7 +83,7 @@
|
||||
|
||||
// Bell Pepper
|
||||
/obj/item/seeds/chili/bell_pepper
|
||||
name = "pack of bell pepper seeds"
|
||||
name = "bell pepper seed pack"
|
||||
desc = "These seeds grow into bell pepper plants. MILD! MILD! MILD!"
|
||||
icon_state = "seed-bell-pepper"
|
||||
species = "bellpepper"
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
|
||||
// Lime
|
||||
/obj/item/seeds/lime
|
||||
name = "pack of lime seeds"
|
||||
name = "lime seed pack"
|
||||
desc = "These are very sour seeds."
|
||||
icon_state = "seed-lime"
|
||||
species = "lime"
|
||||
@@ -33,7 +33,7 @@
|
||||
|
||||
// Orange
|
||||
/obj/item/seeds/orange
|
||||
name = "pack of orange seeds"
|
||||
name = "orange seed pack"
|
||||
desc = "Sour seeds."
|
||||
icon_state = "seed-orange"
|
||||
species = "orange"
|
||||
@@ -61,7 +61,7 @@
|
||||
|
||||
// Lemon
|
||||
/obj/item/seeds/lemon
|
||||
name = "pack of lemon seeds"
|
||||
name = "lemon seed pack"
|
||||
desc = "These are sour seeds."
|
||||
icon_state = "seed-lemon"
|
||||
species = "lemon"
|
||||
@@ -86,7 +86,7 @@
|
||||
|
||||
// Combustible lemon
|
||||
/obj/item/seeds/firelemon //combustible lemon is too long so firelemon
|
||||
name = "pack of combustible lemon seeds"
|
||||
name = "combustible lemon seed pack"
|
||||
desc = "When life gives you lemons, don't make lemonade. Make life take the lemons back! Get mad! I don't want your damn lemons!"
|
||||
icon_state = "seed-firelemon"
|
||||
species = "firelemon"
|
||||
@@ -112,7 +112,7 @@
|
||||
|
||||
//3D Orange
|
||||
/obj/item/seeds/orange_3d
|
||||
name = "pack of extradimensional orange seeds"
|
||||
name = "extradimensional orange seed pack"
|
||||
desc = "Polygonal seeds."
|
||||
icon_state = "seed-orange"
|
||||
species = "orange"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
// Cocoa Pod
|
||||
/obj/item/seeds/cocoapod
|
||||
name = "pack of cocoa pod seeds"
|
||||
name = "cocoa pod seed pack"
|
||||
desc = "These seeds grow into cacao trees. They look fattening." //SIC: cocoa is the seeds. The trees are spelled cacao.
|
||||
icon_state = "seed-cocoapod"
|
||||
species = "cocoapod"
|
||||
@@ -31,7 +31,7 @@
|
||||
|
||||
// Vanilla Pod
|
||||
/obj/item/seeds/cocoapod/vanillapod
|
||||
name = "pack of vanilla pod seeds"
|
||||
name = "vanilla pod seed pack"
|
||||
desc = "These seeds grow into vanilla trees. They look fattening."
|
||||
icon_state = "seed-vanillapod"
|
||||
species = "vanillapod"
|
||||
@@ -52,7 +52,7 @@
|
||||
distill_reagent = /datum/reagent/consumable/vanilla //Takes longer, but you can get even more vanilla from it.
|
||||
|
||||
/obj/item/seeds/cocoapod/bungotree
|
||||
name = "pack of bungo tree seeds"
|
||||
name = "bungo tree seed pack"
|
||||
desc = "These seeds grow into bungo trees. They appear to be heavy and almost perfectly spherical."
|
||||
icon_state = "seed-bungotree"
|
||||
plant_icon_offset = 4
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
// Corn
|
||||
/obj/item/seeds/corn
|
||||
name = "pack of corn seeds"
|
||||
name = "corn seed pack"
|
||||
desc = "I don't mean to sound corny..."
|
||||
icon_state = "seed-corn"
|
||||
species = "corn"
|
||||
@@ -57,7 +57,7 @@
|
||||
|
||||
// Snapcorn
|
||||
/obj/item/seeds/corn/snapcorn
|
||||
name = "pack of snapcorn seeds"
|
||||
name = "snapcorn seed pack"
|
||||
desc = "Oh snap!"
|
||||
icon_state = "seed-snapcorn"
|
||||
species = "snapcorn"
|
||||
@@ -100,7 +100,7 @@
|
||||
|
||||
//Pepper-corn - Heh funny.
|
||||
/obj/item/seeds/corn/pepper
|
||||
name = "pack of pepper-corn seeds"
|
||||
name = "pepper-corn seed pack"
|
||||
desc = "If Peter picked a pack of pepper-corn..."
|
||||
icon_state = "seed-peppercorn"
|
||||
species = "peppercorn"
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/obj/item/seeds/cotton
|
||||
name = "pack of cotton seeds"
|
||||
name = "cotton seed pack"
|
||||
desc = "A pack of seeds that'll grow into a cotton plant. Assistants make good free labor if neccesary."
|
||||
icon_state = "seed-cotton"
|
||||
species = "cotton"
|
||||
@@ -45,7 +45,7 @@
|
||||
|
||||
//reinforced mutated variant
|
||||
/obj/item/seeds/cotton/durathread
|
||||
name = "pack of durathread seeds"
|
||||
name = "durathread seed pack"
|
||||
desc = "A pack of seeds that'll grow into an extremely durable thread that could easily rival plasteel if woven properly."
|
||||
icon_state = "seed-durathread"
|
||||
species = "durathread"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
// CUCUMBERS YEAH
|
||||
/obj/item/seeds/cucumber
|
||||
name = "pack of cucumber seeds"
|
||||
name = "cucumber seed pack"
|
||||
desc = "These seeds grow into cucumber plants."
|
||||
icon_state = "seed-cucumber"
|
||||
species = "cucumber"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
// Eggplant
|
||||
/obj/item/seeds/eggplant
|
||||
name = "pack of eggplant seeds"
|
||||
name = "eggplant seed pack"
|
||||
desc = "These seeds grow to produce berries that look nothing like eggs."
|
||||
icon_state = "seed-eggplant"
|
||||
species = "eggplant"
|
||||
@@ -25,7 +25,7 @@
|
||||
|
||||
// Egg-Plant
|
||||
/obj/item/seeds/eggplant/eggy
|
||||
name = "pack of egg-plant seeds"
|
||||
name = "egg-plant seed pack"
|
||||
desc = "These seeds grow to produce berries that look a lot like eggs."
|
||||
icon_state = "seed-eggy"
|
||||
species = "eggy"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
// Poppy
|
||||
/obj/item/seeds/poppy
|
||||
name = "pack of poppy seeds"
|
||||
name = "poppy seed pack"
|
||||
desc = "These seeds grow into poppies."
|
||||
icon_state = "seed-poppy"
|
||||
species = "poppy"
|
||||
@@ -32,7 +32,7 @@
|
||||
|
||||
// Lily
|
||||
/obj/item/seeds/poppy/lily
|
||||
name = "pack of lily seeds"
|
||||
name = "lily seed pack"
|
||||
desc = "These seeds grow into lilies."
|
||||
icon_state = "seed-lily"
|
||||
species = "lily"
|
||||
@@ -52,7 +52,7 @@
|
||||
|
||||
//Spacemans's Trumpet
|
||||
/obj/item/seeds/poppy/lily/trumpet
|
||||
name = "pack of spaceman's trumpet seeds"
|
||||
name = "spaceman's trumpet seed pack"
|
||||
desc = "A plant sculped by extensive genetic engineering. The spaceman's trumpet is said to bear no resemblance to its wild ancestors. Inside NT AgriSci circles it is better known as NTPW-0372."
|
||||
icon_state = "seed-trumpet"
|
||||
species = "spacemanstrumpet"
|
||||
@@ -86,7 +86,7 @@
|
||||
|
||||
// Geranium
|
||||
/obj/item/seeds/poppy/geranium
|
||||
name = "pack of geranium seeds"
|
||||
name = "geranium seed pack"
|
||||
desc = "These seeds grow into geranium."
|
||||
icon_state = "seed-geranium"
|
||||
species = "geranium"
|
||||
@@ -106,7 +106,7 @@
|
||||
|
||||
///Fraxinella seeds.
|
||||
/obj/item/seeds/poppy/geranium/fraxinella
|
||||
name = "pack of fraxinella seeds"
|
||||
name = "fraxinella seed pack"
|
||||
desc = "These seeds grow into fraxinella."
|
||||
icon_state = "seed-fraxinella"
|
||||
species = "fraxinella"
|
||||
@@ -130,7 +130,7 @@
|
||||
|
||||
// Harebell
|
||||
/obj/item/seeds/harebell
|
||||
name = "pack of harebell seeds"
|
||||
name = "harebell seed pack"
|
||||
desc = "These seeds grow into pretty little flowers."
|
||||
icon_state = "seed-harebell"
|
||||
plant_icon_offset = 1
|
||||
@@ -162,7 +162,7 @@
|
||||
|
||||
// Sunflower
|
||||
/obj/item/seeds/sunflower
|
||||
name = "pack of sunflower seeds"
|
||||
name = "sunflower seed pack"
|
||||
desc = "These seeds grow into sunflowers."
|
||||
icon_state = "seed-sunflower"
|
||||
species = "sunflower"
|
||||
@@ -203,7 +203,7 @@
|
||||
|
||||
// Moonflower
|
||||
/obj/item/seeds/sunflower/moonflower
|
||||
name = "pack of moonflower seeds"
|
||||
name = "moonflower seed pack"
|
||||
desc = "These seeds grow into moonflowers."
|
||||
icon_state = "seed-moonflower"
|
||||
lefthand_file = 'icons/mob/inhands/items/food_lefthand.dmi'
|
||||
@@ -231,7 +231,7 @@
|
||||
|
||||
// Novaflower
|
||||
/obj/item/seeds/sunflower/novaflower
|
||||
name = "pack of novaflower seeds"
|
||||
name = "novaflower seed pack"
|
||||
desc = "These seeds grow into novaflowers."
|
||||
icon_state = "seed-novaflower"
|
||||
species = "novaflower"
|
||||
@@ -266,7 +266,7 @@
|
||||
|
||||
// Rose
|
||||
/obj/item/seeds/rose
|
||||
name = "pack of rose seeds"
|
||||
name = "rose seed pack"
|
||||
desc = "These seeds grow into roses."
|
||||
icon_state = "seed-rose"
|
||||
species = "rose"
|
||||
@@ -311,7 +311,7 @@
|
||||
|
||||
// Carbon Rose
|
||||
/obj/item/seeds/carbon_rose
|
||||
name = "pack of carbon rose seeds"
|
||||
name = "carbon rose seed pack"
|
||||
desc = "These seeds grow into carbon roses."
|
||||
icon_state = "seed-carbonrose"
|
||||
species = "carbonrose"
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/obj/item/seeds/garlic
|
||||
name = "pack of garlic seeds"
|
||||
name = "garlic seed pack"
|
||||
desc = "A packet of extremely pungent seeds."
|
||||
icon_state = "seed-garlic"
|
||||
species = "garlic"
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
|
||||
// Gatfruit
|
||||
/obj/item/seeds/gatfruit
|
||||
name = "pack of gatfruit seeds"
|
||||
name = "gatfruit seed pack"
|
||||
desc = "These seeds grow into .357 revolvers."
|
||||
icon_state = "seed-gatfruit"
|
||||
species = "gatfruit"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
// Grass
|
||||
/obj/item/seeds/grass
|
||||
name = "pack of grass seeds"
|
||||
name = "grass seed pack"
|
||||
desc = "These seeds grow into grass. Yummy!"
|
||||
icon_state = "seed-grass"
|
||||
species = "grass"
|
||||
@@ -42,7 +42,7 @@
|
||||
|
||||
//Fairygrass
|
||||
/obj/item/seeds/grass/fairy
|
||||
name = "pack of fairygrass seeds"
|
||||
name = "fairygrass seed pack"
|
||||
desc = "These seeds grow into a more mystical grass."
|
||||
icon_state = "seed-fairygrass"
|
||||
species = "fairygrass"
|
||||
@@ -65,7 +65,7 @@
|
||||
|
||||
// Carpet
|
||||
/obj/item/seeds/grass/carpet
|
||||
name = "pack of carpet seeds"
|
||||
name = "carpet seed pack"
|
||||
desc = "These seeds grow into stylish carpet samples."
|
||||
icon_state = "seed-carpet"
|
||||
species = "carpet"
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/obj/item/seeds/shrub
|
||||
name = "pack of shrub seeds"
|
||||
name = "shrub seed pack"
|
||||
desc = "These seeds grow into hedge shrubs."
|
||||
icon_state = "seed-shrub"
|
||||
species = "shrub"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
// Herbs
|
||||
/obj/item/seeds/herbs
|
||||
name = "pack of herb seeds"
|
||||
name = "herb seed pack"
|
||||
desc = "These seeds grow to produce an assortment of herbs and seasonings."
|
||||
icon_state = "seed-herbs"
|
||||
species = "herbs"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
//Korta Nut
|
||||
/obj/item/seeds/korta_nut
|
||||
name = "pack of korta nut seeds"
|
||||
name = "korta nut seed pack"
|
||||
desc = "These seeds grow into korta nut bushes, native to Tizira."
|
||||
icon_state = "seed-korta"
|
||||
species = "kortanut"
|
||||
@@ -29,7 +29,7 @@
|
||||
|
||||
//Sweet Korta Nut
|
||||
/obj/item/seeds/korta_nut/sweet
|
||||
name = "pack of sweet korta nut seeds"
|
||||
name = "sweet korta nut seed pack"
|
||||
desc = "These seeds grow into sweet korta nuts, a mutation of the original species that produces a thick syrup that Tizirans use for desserts."
|
||||
icon_state = "seed-sweetkorta"
|
||||
species = "kortanut"
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/obj/item/seeds/kronkus
|
||||
name = "pack of kronkus seeds"
|
||||
name = "kronkus seed pack"
|
||||
desc = "A pack of highly illegal kronkus seeds.\nPossession of these seeds carries the death penalty in 7 sectors."
|
||||
icon_state = "seed-kronkus"
|
||||
plant_icon_offset = 6
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
// Watermelon
|
||||
/obj/item/seeds/watermelon
|
||||
name = "pack of watermelon seeds"
|
||||
name = "watermelon seed pack"
|
||||
desc = "These seeds grow into watermelon plants."
|
||||
icon_state = "seed-watermelon"
|
||||
species = "watermelon"
|
||||
@@ -27,6 +27,7 @@
|
||||
name = "watermelon"
|
||||
desc = "It's full of watery goodness."
|
||||
icon_state = "watermelon"
|
||||
inhand_icon_state = "watermelon"
|
||||
bite_consumption_mod = 2
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
foodtypes = FRUIT
|
||||
@@ -39,9 +40,41 @@
|
||||
/obj/item/food/grown/watermelon/make_dryable()
|
||||
return //No drying
|
||||
|
||||
/obj/item/food/grown/watermelon/attackby(obj/item/I, mob/user, params)
|
||||
if(!istype(I, /obj/item/kitchen/spoon))
|
||||
return ..()
|
||||
|
||||
var/melon_pulp_count = 1
|
||||
if(seed)
|
||||
melon_pulp_count += round(seed.potency / 25)
|
||||
|
||||
user.balloon_alert(user, "scooped out [melon_pulp_count] pulp(s)")
|
||||
for(var/i in 1 to melon_pulp_count)
|
||||
new /obj/item/food/watermelonmush(user.loc)
|
||||
|
||||
/// The piece of armour melon turns into; either chetsplate or helmet
|
||||
var/obj/item/clothing/melon_armour
|
||||
/// Chance for the armour to be a chestplate instead of the helmet
|
||||
var/melon_chestplate_chance = (max(0, seed.potency - 50) / 50)
|
||||
if (prob(melon_chestplate_chance))
|
||||
if(seed.resistance_flags & FIRE_PROOF)
|
||||
melon_armour = new /obj/item/clothing/suit/armor/durability/watermelon/fire_resist
|
||||
else
|
||||
melon_armour = new /obj/item/clothing/suit/armor/durability/watermelon
|
||||
to_chat(user, span_notice("You hollow the melon into a helmet with [I]."))
|
||||
else
|
||||
if(seed.resistance_flags & FIRE_PROOF)
|
||||
melon_armour = new /obj/item/clothing/head/helmet/durability/watermelon/fire_resist
|
||||
else
|
||||
melon_armour = new /obj/item/clothing/head/helmet/durability/watermelon
|
||||
to_chat(user, span_notice("You hollow the melon into a chestplate with [I]."))
|
||||
remove_item_from_storage(user)
|
||||
qdel(src)
|
||||
user.put_in_hands(melon_armour)
|
||||
|
||||
// Holymelon
|
||||
/obj/item/seeds/watermelon/holy
|
||||
name = "pack of holymelon seeds"
|
||||
name = "holymelon seed pack"
|
||||
desc = "These seeds grow into holymelon plants."
|
||||
icon_state = "seed-holymelon"
|
||||
species = "holymelon"
|
||||
@@ -66,6 +99,9 @@
|
||||
wine_power = 70 //Water to wine, baby.
|
||||
wine_flavor = "divinity"
|
||||
|
||||
/obj/item/food/grown/holymelon/make_processable()
|
||||
AddElement(/datum/element/processable, TOOL_KNIFE, /obj/item/food/holymelonslice, 5, 20, screentip_verb = "Slice")
|
||||
|
||||
/obj/item/food/grown/holymelon/make_dryable()
|
||||
return //No drying
|
||||
|
||||
@@ -73,6 +109,39 @@
|
||||
. = ..()
|
||||
AddComponent(/datum/component/edible, check_liked = CALLBACK(src, PROC_REF(check_holyness)))
|
||||
|
||||
|
||||
/obj/item/food/grown/holymelon/attackby(obj/item/I, mob/user, params)
|
||||
if(!istype(I, /obj/item/kitchen/spoon))
|
||||
return ..()
|
||||
|
||||
var/holymelon_pulp_count = 1
|
||||
if(seed)
|
||||
holymelon_pulp_count += round(seed.potency / 25)
|
||||
|
||||
user.balloon_alert(user, "scooped out [holymelon_pulp_count] pulp(s)")
|
||||
for(var/i in 1 to holymelon_pulp_count)
|
||||
new /obj/item/food/holymelonmush(user.loc)
|
||||
|
||||
/// The piece of armour holymelon turns into; either chetsplate or helmet
|
||||
var/obj/item/clothing/holymelon_armour
|
||||
/// Chance for the armour to be a chestplate instead of the helmet
|
||||
var/holymelon_chestplate_chance = (max(0, seed.potency - 50) / 50)
|
||||
if (prob(holymelon_chestplate_chance))
|
||||
if(seed.resistance_flags & FIRE_PROOF)
|
||||
holymelon_armour = new /obj/item/clothing/suit/armor/durability/holymelon/fire_resist
|
||||
else
|
||||
holymelon_armour = new /obj/item/clothing/suit/armor/durability/holymelon
|
||||
to_chat(user, span_notice("You hollow the holymelon into a helmet with [I]."))
|
||||
else
|
||||
if(seed.resistance_flags & FIRE_PROOF)
|
||||
holymelon_armour = new /obj/item/clothing/head/helmet/durability/holymelon/fire_resist
|
||||
else
|
||||
holymelon_armour = new /obj/item/clothing/head/helmet/durability/holymelon
|
||||
to_chat(user, span_notice("You hollow the holymelon into a chestplate with [I]."))
|
||||
remove_item_from_storage(user)
|
||||
qdel(src)
|
||||
user.put_in_hands(holymelon_armour)
|
||||
|
||||
/*
|
||||
* Callback to be used with the edible component.
|
||||
* Checks whether or not the person eating the holymelon
|
||||
@@ -90,7 +159,7 @@
|
||||
|
||||
/// Barrel melon Seeds
|
||||
/obj/item/seeds/watermelon/barrel
|
||||
name = "pack of barrelmelon seeds"
|
||||
name = "barrelmelon seed pack"
|
||||
desc = "These seeds grow into barrelmelon plants."
|
||||
icon_state = "seed-barrelmelon"
|
||||
species = "barrelmelon"
|
||||
@@ -108,4 +177,41 @@
|
||||
name = "barrelmelon"
|
||||
desc = "The nutriments within this melon have been compressed and fermented into rich alcohol."
|
||||
icon_state = "barrelmelon"
|
||||
inhand_icon_state = "barrelmelon"
|
||||
distill_reagent = /datum/reagent/medicine/antihol //You can call it a integer overflow.
|
||||
|
||||
/obj/item/food/grown/barrelmelon/make_processable()
|
||||
AddElement(/datum/element/processable, TOOL_KNIFE, /obj/item/food/barrelmelonslice, 5, 20, screentip_verb = "Chop")
|
||||
|
||||
/obj/item/food/grown/barrelmelon/attackby(obj/item/I, mob/user, params)
|
||||
if(!istype(I, /obj/item/kitchen/spoon))
|
||||
return ..()
|
||||
|
||||
var/barrelmelon_pulp_count = 1
|
||||
if(seed)
|
||||
barrelmelon_pulp_count += round(seed.potency / 25)
|
||||
|
||||
user.balloon_alert(user, "scooped out [barrelmelon_pulp_count] pulp(s)")
|
||||
for(var/i in 1 to barrelmelon_pulp_count)
|
||||
new /obj/item/food/barrelmelonmush(user.loc)
|
||||
|
||||
/// The piece of armour barrelmelon turns into; either chetsplate or helmet
|
||||
var/obj/item/clothing/barrelmelon_armour
|
||||
/// Chance for the armour to be a chestplate instead of the helmet
|
||||
var/barrelmelon_chestplate_chance = (max(0, seed.potency - 50) / 50)
|
||||
if (prob(barrelmelon_chestplate_chance))
|
||||
if(seed.resistance_flags & FIRE_PROOF)
|
||||
barrelmelon_armour = new /obj/item/clothing/suit/armor/durability/barrelmelon/fire_resist
|
||||
else
|
||||
barrelmelon_armour = new /obj/item/clothing/suit/armor/durability/barrelmelon
|
||||
to_chat(user, span_notice("You hollow the barrelmelon into a helmet with [I]."))
|
||||
else
|
||||
if(seed.resistance_flags & FIRE_PROOF)
|
||||
barrelmelon_armour = new /obj/item/clothing/head/helmet/durability/barrelmelon/fire_resist
|
||||
else
|
||||
barrelmelon_armour = new /obj/item/clothing/head/helmet/durability/barrelmelon
|
||||
to_chat(user, span_notice("You hollow the barrelmelon into a chestplate with [I]."))
|
||||
|
||||
remove_item_from_storage(user)
|
||||
qdel(src)
|
||||
user.put_in_hands(barrelmelon_armour)
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
|
||||
// Reishi
|
||||
/obj/item/seeds/reishi
|
||||
name = "pack of reishi mycelium"
|
||||
name = "reishi mycelium pack"
|
||||
desc = "This mycelium grows into something medicinal and relaxing."
|
||||
icon_state = "mycelium-reishi"
|
||||
species = "reishi"
|
||||
@@ -38,7 +38,7 @@
|
||||
|
||||
// Fly Amanita
|
||||
/obj/item/seeds/amanita
|
||||
name = "pack of fly amanita mycelium"
|
||||
name = "fly amanita mycelium pack"
|
||||
desc = "This mycelium grows into something horrible."
|
||||
icon_state = "mycelium-amanita"
|
||||
species = "amanita"
|
||||
@@ -65,7 +65,7 @@
|
||||
|
||||
// Destroying Angel
|
||||
/obj/item/seeds/angel
|
||||
name = "pack of destroying angel mycelium"
|
||||
name = "destroying angel mycelium pack"
|
||||
desc = "This mycelium grows into something devastating."
|
||||
icon_state = "mycelium-angel"
|
||||
species = "angel"
|
||||
@@ -93,7 +93,7 @@
|
||||
|
||||
// Liberty Cap
|
||||
/obj/item/seeds/liberty
|
||||
name = "pack of liberty-cap mycelium"
|
||||
name = "liberty-cap mycelium pack"
|
||||
desc = "This mycelium grows into liberty-cap mushrooms."
|
||||
icon_state = "mycelium-liberty"
|
||||
species = "liberty"
|
||||
@@ -119,7 +119,7 @@
|
||||
|
||||
// Plump Helmet
|
||||
/obj/item/seeds/plump
|
||||
name = "pack of plump-helmet mycelium"
|
||||
name = "plump-helmet mycelium pack"
|
||||
desc = "This mycelium grows into helmets... maybe."
|
||||
icon_state = "mycelium-plump"
|
||||
species = "plump"
|
||||
@@ -145,7 +145,7 @@
|
||||
|
||||
// Walking Mushroom
|
||||
/obj/item/seeds/plump/walkingmushroom
|
||||
name = "pack of walking mushroom mycelium"
|
||||
name = "walking mushroom mycelium pack"
|
||||
desc = "This mycelium will grow into huge stuff!"
|
||||
icon_state = "mycelium-walkingmushroom"
|
||||
species = "walkingmushroom"
|
||||
@@ -171,7 +171,7 @@
|
||||
|
||||
// Chanterelle
|
||||
/obj/item/seeds/chanter
|
||||
name = "pack of chanterelle mycelium"
|
||||
name = "chanterelle mycelium pack"
|
||||
desc = "This mycelium grows into chanterelle mushrooms."
|
||||
icon_state = "mycelium-chanter"
|
||||
species = "chanter"
|
||||
@@ -197,9 +197,23 @@
|
||||
desc = "<I>Cantharellus Cibarius</I>: These jolly yellow little shrooms sure look tasty!"
|
||||
icon_state = "chanterelle"
|
||||
|
||||
/obj/item/food/grown/mushroom/chanterelle/attackby(obj/item/I, mob/user, params)
|
||||
if(!istype(I, /obj/item/kitchen/spoon))
|
||||
return ..()
|
||||
if(seed.potency < 95)
|
||||
return ..()
|
||||
|
||||
to_chat(user, span_notice("You hollow up the chanterelle with [I]."))
|
||||
remove_item_from_storage(user)
|
||||
qdel(src)
|
||||
if(seed.resistance_flags & FIRE_PROOF)
|
||||
user.put_in_hands(new /obj/item/clothing/head/wizard/chanterelle/fr())
|
||||
else
|
||||
user.put_in_hands(new /obj/item/clothing/head/wizard/chanterelle())
|
||||
|
||||
//Jupiter Cup
|
||||
/obj/item/seeds/chanter/jupitercup
|
||||
name = "pack of jupiter cup mycelium"
|
||||
name = "jupiter cup mycelium pack"
|
||||
desc = "This mycelium grows into jupiter cups. Zeus would be envious at the power at your fingertips."
|
||||
icon_state = "mycelium-jupitercup"
|
||||
species = "jupitercup"
|
||||
@@ -224,7 +238,7 @@
|
||||
|
||||
// Glowshroom
|
||||
/obj/item/seeds/glowshroom
|
||||
name = "pack of glowshroom mycelium"
|
||||
name = "glowshroom mycelium pack"
|
||||
desc = "This mycelium -glows- into mushrooms!"
|
||||
icon_state = "mycelium-glowshroom"
|
||||
species = "glowshroom"
|
||||
@@ -279,7 +293,7 @@
|
||||
|
||||
// Glowcap
|
||||
/obj/item/seeds/glowshroom/glowcap
|
||||
name = "pack of glowcap mycelium"
|
||||
name = "glowcap mycelium pack"
|
||||
desc = "This mycelium -powers- into mushrooms!"
|
||||
icon_state = "mycelium-glowcap"
|
||||
species = "glowcap"
|
||||
@@ -303,7 +317,7 @@
|
||||
|
||||
//Shadowshroom
|
||||
/obj/item/seeds/glowshroom/shadowshroom
|
||||
name = "pack of shadowshroom mycelium"
|
||||
name = "shadowshroom mycelium pack"
|
||||
desc = "This mycelium will grow into something shadowy."
|
||||
icon_state = "mycelium-shadowshroom"
|
||||
species = "shadowshroom"
|
||||
@@ -332,7 +346,7 @@
|
||||
investigate_log("was planted by [key_name(user)] at [AREACOORD(user)]", INVESTIGATE_BOTANY)
|
||||
|
||||
/obj/item/seeds/odious_puffball
|
||||
name = "pack of odious pullball spores"
|
||||
name = "odious pullball spore pack"
|
||||
desc = "These spores reek! Disgusting."
|
||||
icon_state = "seed-odiouspuffball"
|
||||
species = "odiouspuffball"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
// Olive
|
||||
/obj/item/seeds/olive
|
||||
name = "pack of olive seeds"
|
||||
name = "olive seed pack"
|
||||
desc = "These seeds grow into olive trees."
|
||||
icon_state = "seed-olive"
|
||||
species = "olive"
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user