Merge branch 'master' into upstream-merge-85543

This commit is contained in:
projectkepler-RU
2024-08-07 01:10:49 +07:00
committed by GitHub
319 changed files with 4225 additions and 2192 deletions
File diff suppressed because it is too large Load Diff
+87 -75
View File
@@ -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
+2 -2
View File
@@ -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,
+2 -2
View File
@@ -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{
+2 -2
View File
@@ -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,
+2 -2
View File
@@ -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,
+1 -1
View File
@@ -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{
+2 -2
View File
@@ -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{
+2 -2
View File
@@ -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,
+2 -2
View File
@@ -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{
+2 -2
View File
@@ -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,
+1 -1
View File
@@ -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,
+1 -1
View File
@@ -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
View File
@@ -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.
+1 -1
View File
@@ -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
+9 -3
View File
@@ -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"
+3 -3
View File
@@ -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 &lt;)
@@ -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.
-1
View File
@@ -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,
+62 -1
View File
@@ -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,
+12 -5
View File
@@ -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)
+1 -1
View File
@@ -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
+1 -1
View File
@@ -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]!"),
+3 -3
View File
@@ -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
+15
View File
@@ -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"
+102 -102
View File
@@ -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",
+1 -1
View File
@@ -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."
+1
View File
@@ -186,6 +186,7 @@
/obj/machinery/LateInitialize()
SHOULD_NOT_OVERRIDE(TRUE)
post_machine_initialize()
CheckParts()
/obj/machinery/Destroy(force)
SSmachines.unregister_machine(src)
-1
View File
@@ -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
+14 -12
View File
@@ -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
-6
View File
@@ -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."
+81
View File
@@ -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?
+5
View File
@@ -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]."),
+30 -1
View File
@@ -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
+4
View File
@@ -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
+42 -1
View File
@@ -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."
+11
View File
@@ -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)
. = ..()
+1
View File
@@ -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
+47
View File
@@ -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"
+1 -1
View File
@@ -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
+30
View File
@@ -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]!"))
+18 -7
View File
@@ -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 -1
View File
@@ -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
+6 -5
View File
@@ -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
+14
View File
@@ -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
+14 -10
View File
@@ -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
+8
View File
@@ -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"
+103
View File
@@ -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
+37 -25
View File
@@ -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)
+110
View File
@@ -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
+53
View File
@@ -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 -1
View File
@@ -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"
+3 -3
View File
@@ -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"
+2 -2
View File
@@ -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"
+3 -3
View File
@@ -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"
+5 -5
View File
@@ -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"
+8 -8
View File
@@ -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"
+5 -5
View File
@@ -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
+4 -4
View File
@@ -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"
+4 -4
View File
@@ -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"
+4 -4
View File
@@ -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"
+5 -5
View File
@@ -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
+3 -3
View File
@@ -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"
+2 -2
View File
@@ -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 -1
View File
@@ -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"
+2 -2
View File
@@ -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"
+11 -11
View File
@@ -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 -1
View File
@@ -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 -1
View File
@@ -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 -1
View File
@@ -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 -1
View File
@@ -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"
+2 -2
View File
@@ -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 -1
View File
@@ -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
+109 -3
View File
@@ -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)
+26 -12
View File
@@ -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 -1
View File
@@ -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