diff --git a/code/__DEFINES/antagonists.dm b/code/__DEFINES/antagonists.dm index 71b05eadd2f..70cbcb951e2 100644 --- a/code/__DEFINES/antagonists.dm +++ b/code/__DEFINES/antagonists.dm @@ -456,3 +456,9 @@ GLOBAL_LIST_INIT(human_invader_antagonists, list( #define BATTLE_ROYALE_CAMERA_NET "battle_royale_camera_net" #define MALF_MAX_PP 400 + +//Uplink spawn loc +#define UPLINK_PDA "PDA" +#define UPLINK_RADIO "Radio" +#define UPLINK_PEN "Pen" //like a real spy! +#define UPLINK_IMPLANT "Implant" diff --git a/code/__DEFINES/clothing.dm b/code/__DEFINES/clothing.dm index a6370218fd4..805d3eccb38 100644 --- a/code/__DEFINES/clothing.dm +++ b/code/__DEFINES/clothing.dm @@ -42,3 +42,29 @@ /// How much integrity does a shirt lose every time we bite it? #define MOTH_EATING_CLOTHING_DAMAGE 15 + +//Suit/Skirt +/// Preference: Jumpsuit +#define PREF_SUIT "Jumpsuit" +/// Preference: Jumpskirt +#define PREF_SKIRT "Jumpskirt" + +// Types of backpack +/// Backpack type: Department themed backpack +#define DBACKPACK "Department Backpack" +/// Backpack type: Department themed duffelbag +#define DDUFFELBAG "Department Duffel Bag" +/// Backpack type: Department themed satchel +#define DSATCHEL "Department Satchel" +/// Backpack type: Department themed messenger bag +#define DMESSENGER "Department Messenger Bag" +/// Backpack type: Grey backpack +#define GBACKPACK "Grey Backpack" +/// Backpack type: Grey duffelbag +#define GDUFFELBAG "Grey Duffel Bag" +/// Backpack type: Grey satchel +#define GSATCHEL "Grey Satchel" +/// Backpack type: Grey messenger bag +#define GMESSENGER "Grey Messenger Bag" +/// Backpack type: Leather satchel +#define LSATCHEL "Leather Satchel" diff --git a/code/__HELPERS/names.dm b/code/__HELPERS/names.dm index 89541c1c187..55b9f23b658 100644 --- a/code/__HELPERS/names.dm +++ b/code/__HELPERS/names.dm @@ -399,3 +399,11 @@ GLOBAL_DATUM(syndicate_code_response_regex, /regex) if(breaks.Find(given_name)) return FALSE return TRUE + +/// Build a list of strings containing the numbers 1-99 as both arabic and roman numerals +/proc/generate_number_strings() + var/list/L[198] + for(var/i in 1 to 99) + L += "[i]" + L += "\Roman[i]" + return L diff --git a/code/_globalvars/lists/clothing.dm b/code/_globalvars/lists/clothing.dm new file mode 100644 index 00000000000..674a32664a7 --- /dev/null +++ b/code/_globalvars/lists/clothing.dm @@ -0,0 +1,11 @@ +GLOBAL_LIST_INIT(backpacklist, list( + DBACKPACK, + DDUFFELBAG, + DSATCHEL, + DMESSENGER, + GBACKPACK, + GDUFFELBAG, + GSATCHEL, + GMESSENGER, + LSATCHEL, +)) diff --git a/code/_globalvars/lists/color.dm b/code/_globalvars/lists/color.dm index 1a195798f46..22bb20a4cfc 100644 --- a/code/_globalvars/lists/color.dm +++ b/code/_globalvars/lists/color.dm @@ -25,3 +25,35 @@ GLOBAL_LIST_INIT(carp_colors, list( COLOR_CARP_PALE_GREEN = 7, COLOR_CARP_SILVER = 1, // The rare silver carp )) + +/// List of possible ethereal colours +GLOBAL_LIST_INIT(color_list_ethereal, list( + "Blue" = "#3399ff", + "Bright Yellow" = "#ffff99", + "Burnt Orange" = "#cc4400", + "Cyan Blue" = "#00ffff", + "Dark Blue" = "#6666ff", + "Dark Fuschia" = "#cc0066", + "Dark Green" = "#37835b", + "Dark Red" = "#9c3030", + "Dull Yellow" = "#fbdf56", + "Faint Blue" = "#b3d9ff", + "Faint Green" = "#ddff99", + "Faint Red" = "#ffb3b3", + "Green" = "#97ee63", + "Orange" = "#ffa64d", + "Pink" = "#ff99cc", + "Purple" = "#ee82ee", + "Red" = "#ff4d4d", + "Seafoam Green" = "#00fa9a", + "White" = "#f2f2f2", +)) + +/// List of possible lustrous ethereal colours +GLOBAL_LIST_INIT(color_list_lustrous, list( + "Cyan Blue" = "#00ffff", + "Sky Blue" = "#37c0ff", + "Blue" = "#3374ff", + "Dark Blue" = "#5b5beb", + "Bright Red" = "#fa2d2d", +)) diff --git a/code/_globalvars/lists/communication.dm b/code/_globalvars/lists/communication.dm new file mode 100644 index 00000000000..c13cf6c03b3 --- /dev/null +++ b/code/_globalvars/lists/communication.dm @@ -0,0 +1,13 @@ +GLOBAL_LIST_INIT(admiral_messages, list( + "Error: No comment given.", + "null", + "Do you know how expensive these stations are?", + "I was sleeping, thanks a lot.", + "It's a good day to die!", + "No.", + "Stand and fight you cowards!", + "Stop being paranoid.", + "Stop wasting my time.", + "Whatever's broken just build a new one.", + "You knew the risks coming in.", +)) diff --git a/code/_globalvars/lists/department.dm b/code/_globalvars/lists/department.dm new file mode 100644 index 00000000000..2ec4a15d418 --- /dev/null +++ b/code/_globalvars/lists/department.dm @@ -0,0 +1,7 @@ +GLOBAL_LIST_INIT(security_depts_prefs, sort_list(list( + SEC_DEPT_ENGINEERING, + SEC_DEPT_MEDICAL, + SEC_DEPT_NONE, + SEC_DEPT_SCIENCE, + SEC_DEPT_SUPPLY, +))) diff --git a/code/_globalvars/lists/disposals.dm b/code/_globalvars/lists/disposals.dm new file mode 100644 index 00000000000..f543343f3ed --- /dev/null +++ b/code/_globalvars/lists/disposals.dm @@ -0,0 +1,52 @@ +// Reference list for disposal sort junctions. Set the sortType variable on disposal sort junctions to +// the index of the sort department that you want. For example, sortType set to 2 will reroute all packages +// tagged for the Cargo Bay. + +/* List of sortType codes for mapping reference +0 Waste +1 Disposals - All unwrapped items and untagged parcels get picked up by a junction with this sortType. Usually leads to the recycler. +2 Cargo Bay +3 QM Office +4 Engineering +5 CE Office +6 Atmospherics +7 Security +8 HoS Office +9 Medbay +10 CMO Office +11 Chemistry +12 Research +13 RD Office +14 Robotics +15 HoP Office +16 Library +17 Chapel +18 Theatre +19 Bar +20 Kitchen +21 Hydroponics +22 Janitor +23 Genetics +24 Experimentor Lab +25 Ordnance +26 Dormitories +27 Virology +28 Xenobiology +29 Law Office +30 Detective's Office +*/ + +//The whole system for the sorttype var is determined based on the order of this list, +//disposals must always be 1, since anything that's untagged will automatically go to disposals, or sorttype = 1 --Superxpdude + +//If you don't want to fuck up disposals, add to this list, and don't change the order. +//If you insist on changing the order, you'll have to change every sort junction to reflect the new order. --Pete + +GLOBAL_LIST_INIT(TAGGERLOCATIONS, list("Disposals", + "Cargo Bay", "QM Office", "Engineering", "CE Office", + "Atmospherics", "Security", "HoS Office", "Medbay", + "CMO Office", "Chemistry", "Research", "RD Office", + "Robotics", "HoP Office", "Library", "Chapel", "Theatre", + "Bar", "Kitchen", "Hydroponics", "Janitor Closet","Genetics", + "Experimentor Lab", "Ordnance", "Dormitories", "Virology", + "Xenobiology", "Law Office","Detective's Office")) diff --git a/code/_globalvars/lists/flavor_misc.dm b/code/_globalvars/lists/flavor_misc.dm deleted file mode 100644 index 13fbd4a80a0..00000000000 --- a/code/_globalvars/lists/flavor_misc.dm +++ /dev/null @@ -1,284 +0,0 @@ -GLOBAL_LIST_INIT(color_list_ethereal, list( - "Blue" = "#3399ff", - "Bright Yellow" = "#ffff99", - "Burnt Orange" = "#cc4400", - "Cyan Blue" = "#00ffff", - "Dark Blue" = "#6666ff", - "Dark Fuschia" = "#cc0066", - "Dark Green" = "#37835b", - "Dark Red" = "#9c3030", - "Dull Yellow" = "#fbdf56", - "Faint Blue" = "#b3d9ff", - "Faint Green" = "#ddff99", - "Faint Red" = "#ffb3b3", - "Green" = "#97ee63", - "Orange" = "#ffa64d", - "Pink" = "#ff99cc", - "Purple" = "#ee82ee", - "Red" = "#ff4d4d", - "Seafoam Green" = "#00fa9a", - "White" = "#f2f2f2", -)) - -GLOBAL_LIST_INIT(color_list_lustrous, list( - "Cyan Blue" = "#00ffff", - "Sky Blue" = "#37c0ff", - "Blue" = "#3374ff", - "Dark Blue" = "#5b5beb", - "Bright Red" = "#fa2d2d", -)) - -GLOBAL_LIST_INIT(ghost_forms_with_directions_list, list( - "catghost", - "ghost_black", - "ghost_blazeit", - "ghost_blue", - "ghost_camo", - "ghost_cyan", - "ghost_dblue", - "ghost_dcyan", - "ghost_dgreen", - "ghost_dpink", - "ghost_dred", - "ghost_dyellow", - "ghost_fire", - "ghost_funkypurp", - "ghost_green", - "ghost_grey", - "ghost_mellow", - "ghost_pink", - "ghost_pinksherbert", - "ghost_purpleswirl", - "ghost_rainbow", - "ghost_red", - "ghost_yellow", - "ghost", - "ghostian", - "ghostian2", - "ghostking", - "skeleghost", -)) -//stores the ghost forms that support directional sprites - -GLOBAL_LIST_INIT(ghost_forms_with_accessories_list, list( - "ghost_black", - "ghost_blazeit", - "ghost_blue", - "ghost_camo", - "ghost_cyan", - "ghost_dblue", - "ghost_dcyan", - "ghost_dgreen", - "ghost_dpink", - "ghost_dred", - "ghost_dyellow", - "ghost_fire", - "ghost_funkypurp", - "ghost_green", - "ghost_grey", - "ghost_mellow", - "ghost_pink", - "ghost_pinksherbert", - "ghost_purpleswirl", - "ghost_rainbow", - "ghost_red", - "ghost_yellow", - "ghost", - "skeleghost", -)) -//stores the ghost forms that support hair and other such things - -GLOBAL_LIST_INIT(security_depts_prefs, sort_list(list( - SEC_DEPT_ENGINEERING, - SEC_DEPT_MEDICAL, - SEC_DEPT_NONE, - SEC_DEPT_SCIENCE, - SEC_DEPT_SUPPLY, -))) - - //Backpacks -#define DBACKPACK "Department Backpack" -#define DDUFFELBAG "Department Duffel Bag" -#define DSATCHEL "Department Satchel" -#define DMESSENGER "Department Messenger Bag" -#define GBACKPACK "Grey Backpack" -#define GDUFFELBAG "Grey Duffel Bag" -#define GSATCHEL "Grey Satchel" -#define GMESSENGER "Grey Messenger Bag" -#define LSATCHEL "Leather Satchel" -GLOBAL_LIST_INIT(backpacklist, list( - DBACKPACK, - DDUFFELBAG, - DSATCHEL, - DMESSENGER, - GBACKPACK, - GDUFFELBAG, - GSATCHEL, - GMESSENGER, - LSATCHEL, -)) - - //Suit/Skirt -#define PREF_SUIT "Jumpsuit" -#define PREF_SKIRT "Jumpskirt" - -//Uplink spawn loc -#define UPLINK_PDA "PDA" -#define UPLINK_RADIO "Radio" -#define UPLINK_PEN "Pen" //like a real spy! -#define UPLINK_IMPLANT "Implant" - - //Female Uniforms -GLOBAL_LIST_EMPTY(female_clothing_icons) - -GLOBAL_LIST_INIT(scarySounds, list( - 'sound/effects/footstep/clownstep1.ogg', - 'sound/effects/footstep/clownstep2.ogg', - 'sound/effects/glass/glassbr1.ogg', - 'sound/effects/glass/glassbr2.ogg', - 'sound/effects/glass/glassbr3.ogg', - 'sound/items/tools/welder.ogg', - 'sound/items/tools/welder2.ogg', - 'sound/machines/airlock/airlock.ogg', - 'sound/mobs/non-humanoids/hiss/hiss1.ogg', - 'sound/mobs/non-humanoids/hiss/hiss2.ogg', - 'sound/mobs/non-humanoids/hiss/hiss3.ogg', - 'sound/mobs/non-humanoids/hiss/hiss4.ogg', - 'sound/mobs/non-humanoids/hiss/hiss5.ogg', - 'sound/mobs/non-humanoids/hiss/hiss6.ogg', - 'sound/items/weapons/armbomb.ogg', - 'sound/items/weapons/taser.ogg', - 'sound/items/weapons/thudswoosh.ogg', - 'sound/items/weapons/shove.ogg', -)) - - -// Reference list for disposal sort junctions. Set the sortType variable on disposal sort junctions to -// the index of the sort department that you want. For example, sortType set to 2 will reroute all packages -// tagged for the Cargo Bay. - -/* List of sortType codes for mapping reference -0 Waste -1 Disposals - All unwrapped items and untagged parcels get picked up by a junction with this sortType. Usually leads to the recycler. -2 Cargo Bay -3 QM Office -4 Engineering -5 CE Office -6 Atmospherics -7 Security -8 HoS Office -9 Medbay -10 CMO Office -11 Chemistry -12 Research -13 RD Office -14 Robotics -15 HoP Office -16 Library -17 Chapel -18 Theatre -19 Bar -20 Kitchen -21 Hydroponics -22 Janitor -23 Genetics -24 Experimentor Lab -25 Ordnance -26 Dormitories -27 Virology -28 Xenobiology -29 Law Office -30 Detective's Office -*/ - -//The whole system for the sorttype var is determined based on the order of this list, -//disposals must always be 1, since anything that's untagged will automatically go to disposals, or sorttype = 1 --Superxpdude - -//If you don't want to fuck up disposals, add to this list, and don't change the order. -//If you insist on changing the order, you'll have to change every sort junction to reflect the new order. --Pete - -GLOBAL_LIST_INIT(TAGGERLOCATIONS, list("Disposals", - "Cargo Bay", "QM Office", "Engineering", "CE Office", - "Atmospherics", "Security", "HoS Office", "Medbay", - "CMO Office", "Chemistry", "Research", "RD Office", - "Robotics", "HoP Office", "Library", "Chapel", "Theatre", - "Bar", "Kitchen", "Hydroponics", "Janitor Closet","Genetics", - "Experimentor Lab", "Ordnance", "Dormitories", "Virology", - "Xenobiology", "Law Office","Detective's Office")) - -GLOBAL_LIST_INIT(station_prefixes, world.file2list("strings/station_prefixes.txt")) - -GLOBAL_LIST_INIT(station_names, world.file2list("strings/station_names.txt")) - -GLOBAL_LIST_INIT(station_suffixes, world.file2list("strings/station_suffixes.txt")) - -GLOBAL_LIST_INIT(greek_letters, world.file2list("strings/greek_letters.txt")) - -GLOBAL_LIST_INIT(phonetic_alphabet, world.file2list("strings/phonetic_alphabet.txt")) - -GLOBAL_LIST_INIT(numbers_as_words, world.file2list("strings/numbers_as_words.txt")) - -GLOBAL_LIST_INIT(wisdoms, world.file2list("strings/wisdoms.txt")) - -/proc/generate_number_strings() - var/list/L[198] - for(var/i in 1 to 99) - L += "[i]" - L += "\Roman[i]" - return L - -GLOBAL_LIST_INIT(station_numerals, greek_letters + phonetic_alphabet + numbers_as_words + generate_number_strings()) - -GLOBAL_LIST_INIT(admiral_messages, list( - "Error: No comment given.", - "null", - "Do you know how expensive these stations are?", - "I was sleeping, thanks a lot.", - "It's a good day to die!", - "No.", - "Stand and fight you cowards!", - "Stop being paranoid.", - "Stop wasting my time.", - "Whatever's broken just build a new one.", - "You knew the risks coming in.", -)) - -GLOBAL_LIST_INIT(junkmail_messages, world.file2list("strings/junkmail.txt")) - -// All valid inputs to status display post_status -GLOBAL_LIST_INIT(status_display_approved_pictures, list( - "blank", - "shuttle", - "default", - "biohazard", - "lockdown", - "greenalert", - "bluealert", - "violetalert", // SKYRAT EDIT ADD - Alert Levels - "orangealert", // SKYRAT EDIT ADD - Alert Levels - "amberalert", // SKYRAT EDIT ADD - Alert Levels - "redalert", - "deltaalert", - "gammaalert", // SKYRAT EDIT ADD - Alert Levels - "radiation", - "currentalert", //For automatic set of status display on current level -)) - -// Members of status_display_approved_pictures that are actually states and not alert values -GLOBAL_LIST_INIT(status_display_state_pictures, list( - "blank", - "shuttle", -)) - -GLOBAL_LIST_INIT(fishing_tips, world.file2list("strings/fishing_tips.txt")) - -/// 1000 element long list containing the 1000 most common words in the English language. -/// Indexed by word, value is the rank of the word in the list. So accessing it is fasta. -GLOBAL_LIST_INIT(most_common_words, init_common_words()) - -/proc/init_common_words() - . = list() - var/i = 1 - for(var/word in world.file2list("strings/1000_most_common.txt")) - .[word] = i - i += 1 diff --git a/code/_globalvars/lists/ghost.dm b/code/_globalvars/lists/ghost.dm new file mode 100644 index 00000000000..42db2c830ee --- /dev/null +++ b/code/_globalvars/lists/ghost.dm @@ -0,0 +1,59 @@ +/// Stores the ghost forms that support directional sprites +GLOBAL_LIST_INIT(ghost_forms_with_directions_list, list( + "catghost", + "ghost_black", + "ghost_blazeit", + "ghost_blue", + "ghost_camo", + "ghost_cyan", + "ghost_dblue", + "ghost_dcyan", + "ghost_dgreen", + "ghost_dpink", + "ghost_dred", + "ghost_dyellow", + "ghost_fire", + "ghost_funkypurp", + "ghost_green", + "ghost_grey", + "ghost_mellow", + "ghost_pink", + "ghost_pinksherbert", + "ghost_purpleswirl", + "ghost_rainbow", + "ghost_red", + "ghost_yellow", + "ghost", + "ghostian", + "ghostian2", + "ghostking", + "skeleghost", +)) + +/// Stores the ghost forms that support hair and other such things +GLOBAL_LIST_INIT(ghost_forms_with_accessories_list, list( + "ghost_black", + "ghost_blazeit", + "ghost_blue", + "ghost_camo", + "ghost_cyan", + "ghost_dblue", + "ghost_dcyan", + "ghost_dgreen", + "ghost_dpink", + "ghost_dred", + "ghost_dyellow", + "ghost_fire", + "ghost_funkypurp", + "ghost_green", + "ghost_grey", + "ghost_mellow", + "ghost_pink", + "ghost_pinksherbert", + "ghost_purpleswirl", + "ghost_rainbow", + "ghost_red", + "ghost_yellow", + "ghost", + "skeleghost", +)) diff --git a/code/_globalvars/lists/icons.dm b/code/_globalvars/lists/icons.dm index 4d0b6279945..fd51a76c5f4 100644 --- a/code/_globalvars/lists/icons.dm +++ b/code/_globalvars/lists/icons.dm @@ -4,3 +4,5 @@ GLOBAL_LIST_EMPTY(icon_dimensions) GLOBAL_LIST_EMPTY(icon_states_cache) /// Cache of the states of icon files, stored associatively with TRUE for lookup GLOBAL_LIST_EMPTY(icon_states_cache_lookup) +/// Female Uniforms +GLOBAL_LIST_EMPTY(female_clothing_icons) diff --git a/code/_globalvars/lists/names.dm b/code/_globalvars/lists/names.dm index f9f70a2c706..a564d55c420 100644 --- a/code/_globalvars/lists/names.dm +++ b/code/_globalvars/lists/names.dm @@ -1,47 +1,44 @@ GLOBAL_LIST_INIT(ai_names, world.file2list("strings/names/ai.txt")) -GLOBAL_LIST_INIT(wizard_first, world.file2list("strings/names/wizardfirst.txt")) -GLOBAL_LIST_INIT(wizard_second, world.file2list("strings/names/wizardsecond.txt")) -GLOBAL_LIST_INIT(ninja_titles, world.file2list("strings/names/ninjatitle.txt")) -GLOBAL_LIST_INIT(ninja_names, world.file2list("strings/names/ninjaname.txt")) -GLOBAL_LIST_INIT(commando_names, world.file2list("strings/names/death_commando.txt")) -GLOBAL_LIST_INIT(first_names, world.file2list("strings/names/first.txt")) -GLOBAL_LIST_INIT(first_names_male, world.file2list("strings/names/first_male.txt")) -GLOBAL_LIST_INIT(first_names_female, world.file2list("strings/names/first_female.txt")) -GLOBAL_LIST_INIT(last_names, world.file2list("strings/names/last.txt")) -GLOBAL_LIST_INIT(clown_names, world.file2list("strings/names/clown.txt")) -GLOBAL_LIST_INIT(mime_names, world.file2list("strings/names/mime.txt")) -GLOBAL_LIST_INIT(religion_names, world.file2list("strings/names/religion.txt")) -GLOBAL_LIST_INIT(carp_names, world.file2list("strings/names/carp.txt")) -GLOBAL_LIST_INIT(lizard_names_male, world.file2list("strings/names/lizard_male.txt")) -GLOBAL_LIST_INIT(lizard_names_female, world.file2list("strings/names/lizard_female.txt")) -GLOBAL_LIST_INIT(golem_names, world.file2list("strings/names/golem.txt")) -GLOBAL_LIST_INIT(moth_first, world.file2list("strings/names/moth_first.txt")) -GLOBAL_LIST_INIT(moth_last, world.file2list("strings/names/moth_last.txt")) -GLOBAL_LIST_INIT(plasmaman_names, world.file2list("strings/names/plasmaman.txt")) -GLOBAL_LIST_INIT(ethereal_names, world.file2list("strings/names/ethereal.txt")) -GLOBAL_LIST_INIT(posibrain_names, world.file2list("strings/names/posibrain.txt")) -GLOBAL_LIST_INIT(nightmare_names, world.file2list("strings/names/nightmare.txt")) -GLOBAL_LIST_INIT(megacarp_first_names, world.file2list("strings/names/megacarp1.txt")) -GLOBAL_LIST_INIT(megacarp_last_names, world.file2list("strings/names/megacarp2.txt")) -GLOBAL_LIST_INIT(cyberauth_names, world.file2list("strings/names/cyberauth.txt")) -GLOBAL_LIST_INIT(hacker_aliases, world.file2list("strings/names/hackers.txt")) -GLOBAL_LIST_INIT(syndicate_monkey_names, world.file2list("strings/names/syndicate_monkey.txt")) GLOBAL_LIST_INIT(cargorilla_names, world.file2list("strings/names/cargorilla.txt")) +GLOBAL_LIST_INIT(carp_names, world.file2list("strings/names/carp.txt")) +GLOBAL_LIST_INIT(clown_names, world.file2list("strings/names/clown.txt")) +GLOBAL_LIST_INIT(commando_names, world.file2list("strings/names/death_commando.txt")) +GLOBAL_LIST_INIT(cyberauth_names, world.file2list("strings/names/cyberauth.txt")) +GLOBAL_LIST_INIT(ethereal_names, world.file2list("strings/names/ethereal.txt")) +GLOBAL_LIST_INIT(first_names_female, world.file2list("strings/names/first_female.txt")) +GLOBAL_LIST_INIT(first_names_male, world.file2list("strings/names/first_male.txt")) +GLOBAL_LIST_INIT(first_names, world.file2list("strings/names/first.txt")) +GLOBAL_LIST_INIT(golem_names, world.file2list("strings/names/golem.txt")) +GLOBAL_LIST_INIT(guardian_fantasy_surnames, world.file2list("strings/names/guardian_tarot.txt")) GLOBAL_LIST_INIT(guardian_first_names, world.file2list("strings/names/guardian_descriptions.txt")) GLOBAL_LIST_INIT(guardian_tech_surnames, world.file2list("strings/names/guardian_gamepieces.txt")) -GLOBAL_LIST_INIT(guardian_fantasy_surnames, world.file2list("strings/names/guardian_tarot.txt")) -GLOBAL_LIST_INIT(operative_aliases, world.file2list("strings/names/operative_alias.txt")) -GLOBAL_LIST_INIT(voidwalker_names, world.file2list("strings/names/voidwalker.txt")) - -GLOBAL_LIST_INIT(verbs, world.file2list("strings/names/verbs.txt")) -GLOBAL_LIST_INIT(ing_verbs, world.file2list("strings/names/ing_verbs.txt")) -GLOBAL_LIST_INIT(martial_prefix, world.file2list("strings/names/martial_prefix.txt")) -GLOBAL_LIST_INIT(adverbs, world.file2list("strings/names/adverbs.txt")) -GLOBAL_LIST_INIT(adjectives, world.file2list("strings/names/adjectives.txt")) -GLOBAL_LIST_INIT(gross_adjectives, world.file2list("strings/names/gross_adjectives.txt")) -GLOBAL_LIST_INIT(dream_strings, world.file2list("strings/dreamstrings.txt")) -GLOBAL_LIST_INIT(vampire_house_names, world.file2list("strings/names/vampire_house_names.txt")) -GLOBAL_LIST_INIT(greek_alphabet, world.file2list("strings/greek_alphabet.txt")) +GLOBAL_LIST_INIT(hacker_aliases, world.file2list("strings/names/hackers.txt")) GLOBAL_LIST_INIT(hive_names, world.file2list("strings/names/hive_names.txt")) +GLOBAL_LIST_INIT(last_names, world.file2list("strings/names/last.txt")) +GLOBAL_LIST_INIT(lizard_names_female, world.file2list("strings/names/lizard_female.txt")) +GLOBAL_LIST_INIT(lizard_names_male, world.file2list("strings/names/lizard_male.txt")) +GLOBAL_LIST_INIT(martial_prefix, world.file2list("strings/names/martial_prefix.txt")) +GLOBAL_LIST_INIT(megacarp_first_names, world.file2list("strings/names/megacarp1.txt")) +GLOBAL_LIST_INIT(megacarp_last_names, world.file2list("strings/names/megacarp2.txt")) +GLOBAL_LIST_INIT(mime_names, world.file2list("strings/names/mime.txt")) +GLOBAL_LIST_INIT(moth_first, world.file2list("strings/names/moth_first.txt")) +GLOBAL_LIST_INIT(moth_last, world.file2list("strings/names/moth_last.txt")) +GLOBAL_LIST_INIT(nightmare_names, world.file2list("strings/names/nightmare.txt")) +GLOBAL_LIST_INIT(ninja_names, world.file2list("strings/names/ninjaname.txt")) +GLOBAL_LIST_INIT(ninja_titles, world.file2list("strings/names/ninjatitle.txt")) +GLOBAL_LIST_INIT(operative_aliases, world.file2list("strings/names/operative_alias.txt")) +GLOBAL_LIST_INIT(plasmaman_names, world.file2list("strings/names/plasmaman.txt")) +GLOBAL_LIST_INIT(posibrain_names, world.file2list("strings/names/posibrain.txt")) +GLOBAL_LIST_INIT(religion_names, world.file2list("strings/names/religion.txt")) +GLOBAL_LIST_INIT(station_names, world.file2list("strings/station_names.txt")) +GLOBAL_LIST_INIT(station_numerals, greek_letters + phonetic_alphabet + numbers_as_words + generate_number_strings()) +GLOBAL_LIST_INIT(station_prefixes, world.file2list("strings/station_prefixes.txt")) +GLOBAL_LIST_INIT(station_suffixes, world.file2list("strings/station_suffixes.txt")) +GLOBAL_LIST_INIT(syndicate_monkey_names, world.file2list("strings/names/syndicate_monkey.txt")) +GLOBAL_LIST_INIT(vampire_house_names, world.file2list("strings/names/vampire_house_names.txt")) +GLOBAL_LIST_INIT(voidwalker_names, world.file2list("strings/names/voidwalker.txt")) +GLOBAL_LIST_INIT(wizard_first, world.file2list("strings/names/wizardfirst.txt")) +GLOBAL_LIST_INIT(wizard_second, world.file2list("strings/names/wizardsecond.txt")) + //loaded on startup because of " //would include in rsc if ' was used diff --git a/code/_globalvars/lists/sound.dm b/code/_globalvars/lists/sound.dm new file mode 100644 index 00000000000..a8fc4ab698c --- /dev/null +++ b/code/_globalvars/lists/sound.dm @@ -0,0 +1,20 @@ +GLOBAL_LIST_INIT(scarySounds, list( + 'sound/effects/footstep/clownstep1.ogg', + 'sound/effects/footstep/clownstep2.ogg', + 'sound/effects/glass/glassbr1.ogg', + 'sound/effects/glass/glassbr2.ogg', + 'sound/effects/glass/glassbr3.ogg', + 'sound/items/tools/welder.ogg', + 'sound/items/tools/welder2.ogg', + 'sound/machines/airlock/airlock.ogg', + 'sound/mobs/non-humanoids/hiss/hiss1.ogg', + 'sound/mobs/non-humanoids/hiss/hiss2.ogg', + 'sound/mobs/non-humanoids/hiss/hiss3.ogg', + 'sound/mobs/non-humanoids/hiss/hiss4.ogg', + 'sound/mobs/non-humanoids/hiss/hiss5.ogg', + 'sound/mobs/non-humanoids/hiss/hiss6.ogg', + 'sound/items/weapons/armbomb.ogg', + 'sound/items/weapons/taser.ogg', + 'sound/items/weapons/thudswoosh.ogg', + 'sound/items/weapons/shove.ogg', +)) diff --git a/code/_globalvars/lists/status_display.dm b/code/_globalvars/lists/status_display.dm new file mode 100644 index 00000000000..66ec47d9964 --- /dev/null +++ b/code/_globalvars/lists/status_display.dm @@ -0,0 +1,20 @@ +// All valid inputs to status display post_status +GLOBAL_LIST_INIT(status_display_approved_pictures, list( + "blank", + "shuttle", + "default", + "biohazard", + "lockdown", + "greenalert", + "bluealert", + "redalert", + "deltaalert", + "radiation", + "currentalert", //For automatic set of status display on current level +)) + +// Members of status_display_approved_pictures that are actually states and not alert values +GLOBAL_LIST_INIT(status_display_state_pictures, list( + "blank", + "shuttle", +)) diff --git a/code/_globalvars/lists/strings.dm b/code/_globalvars/lists/strings.dm new file mode 100644 index 00000000000..80cc4816c1e --- /dev/null +++ b/code/_globalvars/lists/strings.dm @@ -0,0 +1,16 @@ +GLOBAL_LIST_INIT(adjectives, world.file2list("strings/names/adjectives.txt")) +GLOBAL_LIST_INIT(adverbs, world.file2list("strings/names/adverbs.txt")) +GLOBAL_LIST_INIT(dream_strings, world.file2list("strings/dreamstrings.txt")) +GLOBAL_LIST_INIT(fishing_tips, world.file2list("strings/fishing_tips.txt")) +GLOBAL_LIST_INIT(greek_letters, world.file2list("strings/greek_letters.txt")) +GLOBAL_LIST_INIT(gross_adjectives, world.file2list("strings/names/gross_adjectives.txt")) +GLOBAL_LIST_INIT(ing_verbs, world.file2list("strings/names/ing_verbs.txt")) +GLOBAL_LIST_INIT(junkmail_messages, world.file2list("strings/junkmail.txt")) +GLOBAL_LIST_INIT(most_common_words, world.file2list("strings/1000_most_common.txt")) +GLOBAL_LIST_INIT(numbers_as_words, world.file2list("strings/numbers_as_words.txt")) +GLOBAL_LIST_INIT(phonetic_alphabet, world.file2list("strings/phonetic_alphabet.txt")) +GLOBAL_LIST_INIT(verbs, world.file2list("strings/names/verbs.txt")) +GLOBAL_LIST_INIT(wisdoms, world.file2list("strings/wisdoms.txt")) + +//loaded on startup because of " +//would include in rsc if ' was used diff --git a/code/datums/status_effects/buffs.dm b/code/datums/status_effects/buffs.dm index 4c7c01d5c29..3dc3b5e0ce1 100644 --- a/code/datums/status_effects/buffs.dm +++ b/code/datums/status_effects/buffs.dm @@ -393,12 +393,12 @@ /datum/status_effect/lightningorb/on_apply() . = ..() - owner.add_movespeed_modifier(/datum/movespeed_modifier/yellow_orb) + owner.add_movespeed_modifier(/datum/movespeed_modifier/status_effect/yellow_orb) to_chat(owner, span_notice("You feel fast!")) /datum/status_effect/lightningorb/on_remove() . = ..() - owner.remove_movespeed_modifier(/datum/movespeed_modifier/yellow_orb) + owner.remove_movespeed_modifier(/datum/movespeed_modifier/status_effect/yellow_orb) to_chat(owner, span_notice("You slow down.")) /atom/movable/screen/alert/status_effect/lightningorb diff --git a/code/game/objects/effects/decals/misc.dm b/code/game/objects/effects/decals/chemspray.dm similarity index 94% rename from code/game/objects/effects/decals/misc.dm rename to code/game/objects/effects/decals/chemspray.dm index 112f3b228dc..005f7482aac 100644 --- a/code/game/objects/effects/decals/misc.dm +++ b/code/game/objects/effects/decals/chemspray.dm @@ -95,10 +95,3 @@ reagents.expose(spraying, VAPOR) log_combat(user, spraying, "sprayed", sprayer, addition = "which had [logging_string]") - -/obj/effect/decal/fakelattice - name = "lattice" - desc = "A lightweight support lattice." - icon = 'icons/obj/smooth_structures/lattice.dmi' - icon_state = "lattice-255" - density = TRUE diff --git a/code/game/objects/effects/decals/cleanable/ants.dm b/code/game/objects/effects/decals/cleanable/ants.dm new file mode 100644 index 00000000000..b6a3fa38c3f --- /dev/null +++ b/code/game/objects/effects/decals/cleanable/ants.dm @@ -0,0 +1,90 @@ +/obj/effect/decal/cleanable/ants + name = "space ants" + desc = "A small colony of space ants. They're normally used to the vacuum of space, so they can't climb too well." + icon = 'icons/obj/debris.dmi' + icon_state = "ants" + beauty = -150 + plane = GAME_PLANE + layer = LOW_OBJ_LAYER + decal_reagent = /datum/reagent/ants + reagent_amount = 5 + /// Sound the ants make when biting + var/bite_sound = 'sound/items/weapons/bite.ogg' + +/obj/effect/decal/cleanable/ants/Initialize(mapload) + if(mapload && reagent_amount > 2) + reagent_amount = rand((reagent_amount - 2), reagent_amount) + . = ..() + update_ant_damage() + +/obj/effect/decal/cleanable/ants/vv_edit_var(vname, vval) + . = ..() + if(vname == NAMEOF(src, bite_sound)) + update_ant_damage() + +/obj/effect/decal/cleanable/ants/handle_merge_decal(obj/effect/decal/cleanable/merger) + . = ..() + var/obj/effect/decal/cleanable/ants/ants = merger + ants.update_ant_damage() + +/obj/effect/decal/cleanable/ants/proc/update_ant_damage(ant_min_damage, ant_max_damage) + if(!ant_max_damage) + ant_max_damage = min(10, round((reagents ? reagents.get_reagent_amount(/datum/reagent/ants) : reagent_amount) * 0.1,0.1)) // 100u ants = 10 max_damage + if(!ant_min_damage) + ant_min_damage = 0.1 + var/ant_flags = (CALTROP_NOCRAWL | CALTROP_NOSTUN) /// Small amounts of ants won't be able to bite through shoes. + if(ant_max_damage > 1) + ant_flags = (CALTROP_NOCRAWL | CALTROP_NOSTUN | CALTROP_BYPASS_SHOES) + + var/datum/component/caltrop/caltrop_comp = GetComponent(/datum/component/caltrop) + if(caltrop_comp) + caltrop_comp.min_damage = ant_min_damage + caltrop_comp.max_damage = ant_max_damage + caltrop_comp.flags = ant_flags + caltrop_comp.soundfile = bite_sound + else + AddComponent(/datum/component/caltrop, min_damage = ant_min_damage, max_damage = ant_max_damage, flags = ant_flags, soundfile = bite_sound) + + update_appearance(UPDATE_ICON) + +/obj/effect/decal/cleanable/ants/update_icon_state() + if(istype(src, /obj/effect/decal/cleanable/ants/fire)) //i fucking hate this but you're forced to call parent in update_icon_state() + return ..() + if(!(flags_1 & INITIALIZED_1)) + return ..() + + var/datum/component/caltrop/caltrop_comp = GetComponent(/datum/component/caltrop) + if(!caltrop_comp) + return ..() + + switch(caltrop_comp.max_damage) + if(0 to 1) + icon_state = initial(icon_state) + if(1.1 to 4) + icon_state = "[initial(icon_state)]_2" + if(4.1 to 7) + icon_state = "[initial(icon_state)]_3" + if(7.1 to INFINITY) + icon_state = "[initial(icon_state)]_4" + return ..() + +/obj/effect/decal/cleanable/ants/update_overlays() + . = ..() + . += emissive_appearance(icon, "[icon_state]_light", src, alpha = src.alpha, effect_type = EMISSIVE_NO_BLOOM) + +/obj/effect/decal/cleanable/ants/fire_act(exposed_temperature, exposed_volume) + new /obj/effect/decal/cleanable/ants/fire(loc) + qdel(src) + +/obj/effect/decal/cleanable/ants/fire + name = "space fire ants" + desc = "A small colony no longer. We are the fire nation." + decal_reagent = /datum/reagent/ants/fire + icon_state = "fire_ants" + mergeable_decal = FALSE + +/obj/effect/decal/cleanable/ants/fire/update_ant_damage(ant_min_damage, ant_max_damage) + return ..(15, 25) + +/obj/effect/decal/cleanable/ants/fire/fire_act(exposed_temperature, exposed_volume) + return diff --git a/code/game/objects/effects/decals/cleanable/fuel.dm b/code/game/objects/effects/decals/cleanable/fuel.dm new file mode 100644 index 00000000000..e372e93c43d --- /dev/null +++ b/code/game/objects/effects/decals/cleanable/fuel.dm @@ -0,0 +1,113 @@ +/obj/effect/decal/cleanable/fuel_pool + name = "pool of fuel" + desc = "A pool of flammable fuel. Its probably wise to clean this off before something ignites it..." + icon_state = "fuel_pool" + beauty = -50 + clean_type = CLEAN_TYPE_BLOOD + mouse_opacity = MOUSE_OPACITY_OPAQUE + resistance_flags = UNACIDABLE | ACID_PROOF | FIRE_PROOF | FLAMMABLE //gross way of doing this but would need to disassemble fire_act call stack otherwise + /// Maximum amount of hotspots this pool can create before deleting itself + var/burn_amount = 3 + /// Is this fuel pool currently burning? + var/burning = FALSE + /// Type of hotspot fuel pool spawns upon being ignited + var/hotspot_type = /obj/effect/hotspot + +/obj/effect/decal/cleanable/fuel_pool/Initialize(mapload, burn_stacks) + . = ..() + var/static/list/loc_connections = list( + COMSIG_TURF_MOVABLE_THROW_LANDED = PROC_REF(ignition_trigger), + COMSIG_ATOM_ENTERED = PROC_REF(on_entered) + ) + AddElement(/datum/element/connect_loc, loc_connections) + for(var/obj/effect/decal/cleanable/fuel_pool/pool in get_turf(src)) //Can't use locate because we also belong to that turf + if(pool == src) + continue + pool.burn_amount = max(min(pool.burn_amount + burn_stacks, 10), 1) + return INITIALIZE_HINT_QDEL + + if(burn_stacks) + burn_amount = max(min(burn_stacks, 10), 1) + + return INITIALIZE_HINT_LATELOAD + +// Just in case of fires, do this after mapload. +/obj/effect/decal/cleanable/fuel_pool/LateInitialize() +// We don't want to burn down the create_and_destroy test area +#ifndef UNIT_TESTS + RegisterSignal(src, COMSIG_ATOM_TOUCHED_SPARKS, PROC_REF(ignition_trigger)) +#endif + +/obj/effect/decal/cleanable/fuel_pool/fire_act(exposed_temperature, exposed_volume) + . = ..() + ignite() + +/** + * Ignites the fuel pool. This should be the only way to ignite fuel pools. + */ +/obj/effect/decal/cleanable/fuel_pool/proc/ignite() + if(burning) + return + burning = TRUE + burn_process() + +/** + * Spends 1 burn_amount and spawns a hotspot. If burn_amount is equal to 0, deletes the fuel pool. + * Else, queues another call of this proc upon hotspot getting deleted and ignites other fuel pools around itself after 0.5 seconds. + * THIS SHOULD NOT BE CALLED DIRECTLY. + */ +/obj/effect/decal/cleanable/fuel_pool/proc/burn_process() + SIGNAL_HANDLER + + burn_amount -= 1 + var/obj/effect/hotspot/hotspot = new hotspot_type(get_turf(src)) + addtimer(CALLBACK(src, PROC_REF(ignite_others)), 0.5 SECONDS) + + if(!burn_amount) + qdel(src) + return + + RegisterSignal(hotspot, COMSIG_QDELETING, PROC_REF(burn_process)) + +/** + * Ignites other oil pools around itself. + */ +/obj/effect/decal/cleanable/fuel_pool/proc/ignite_others() + for(var/obj/effect/decal/cleanable/fuel_pool/oil in range(1, get_turf(src))) + oil.ignite() + +/obj/effect/decal/cleanable/fuel_pool/bullet_act(obj/projectile/hit_proj) + . = ..() + ignite() + log_combat(hit_proj.firer, src, "used [hit_proj] to ignite") + +/obj/effect/decal/cleanable/fuel_pool/attackby(obj/item/item, mob/user, list/modifiers, list/attack_modifiers) + if(item.ignition_effect(src, user)) + ignite() + log_combat(user, src, "used [item] to ignite") + return ..() + +/obj/effect/decal/cleanable/fuel_pool/proc/on_entered(datum/source, atom/movable/entered_atom) + SIGNAL_HANDLER + + if(!entered_atom.throwing) // don't light from things being thrown over us, we handle that somewhere else + ignition_trigger(source = src, enflammable_atom = entered_atom) + +/obj/effect/decal/cleanable/fuel_pool/proc/ignition_trigger(datum/source, atom/movable/enflammable_atom) + SIGNAL_HANDLER + + if(isitem(enflammable_atom)) + var/obj/item/enflamed_item = enflammable_atom + if(enflamed_item.get_temperature() > FIRE_MINIMUM_TEMPERATURE_TO_EXIST) + ignite() + return + else if(isliving(enflammable_atom)) + var/mob/living/enflamed_liver = enflammable_atom + if(enflamed_liver.on_fire) + ignite() + else if(istype(enflammable_atom, /obj/effect/particle_effect/sparks)) + ignite() + + +/obj/effect/decal/cleanable/fuel_pool/hivis + icon_state = "fuel_pool_hivis" diff --git a/code/game/objects/effects/decals/cleanable/misc.dm b/code/game/objects/effects/decals/cleanable/mess.dm similarity index 62% rename from code/game/objects/effects/decals/cleanable/misc.dm rename to code/game/objects/effects/decals/cleanable/mess.dm index db4e7e2047d..d31f44a4b01 100644 --- a/code/game/objects/effects/decals/cleanable/misc.dm +++ b/code/game/objects/effects/decals/cleanable/mess.dm @@ -365,211 +365,6 @@ GLOBAL_LIST_EMPTY(nebula_vomits) . = ..() AddElement(/datum/element/swabable, CELL_LINE_TABLE_SLUDGE, CELL_VIRUS_TABLE_GENERIC, rand(2,4), 15) -/obj/effect/decal/cleanable/ants - name = "space ants" - desc = "A small colony of space ants. They're normally used to the vacuum of space, so they can't climb too well." - icon = 'icons/obj/debris.dmi' - icon_state = "ants" - beauty = -150 - plane = GAME_PLANE - layer = LOW_OBJ_LAYER - decal_reagent = /datum/reagent/ants - reagent_amount = 5 - /// Sound the ants make when biting - var/bite_sound = 'sound/items/weapons/bite.ogg' - -/obj/effect/decal/cleanable/ants/Initialize(mapload) - if(mapload && reagent_amount > 2) - reagent_amount = rand((reagent_amount - 2), reagent_amount) - . = ..() - update_ant_damage() - -/obj/effect/decal/cleanable/ants/vv_edit_var(vname, vval) - . = ..() - if(vname == NAMEOF(src, bite_sound)) - update_ant_damage() - -/obj/effect/decal/cleanable/ants/handle_merge_decal(obj/effect/decal/cleanable/merger) - . = ..() - var/obj/effect/decal/cleanable/ants/ants = merger - ants.update_ant_damage() - -/obj/effect/decal/cleanable/ants/proc/update_ant_damage(ant_min_damage, ant_max_damage) - if(!ant_max_damage) - ant_max_damage = min(10, round((reagents ? reagents.get_reagent_amount(/datum/reagent/ants) : reagent_amount) * 0.1,0.1)) // 100u ants = 10 max_damage - if(!ant_min_damage) - ant_min_damage = 0.1 - var/ant_flags = (CALTROP_NOCRAWL | CALTROP_NOSTUN) /// Small amounts of ants won't be able to bite through shoes. - if(ant_max_damage > 1) - ant_flags = (CALTROP_NOCRAWL | CALTROP_NOSTUN | CALTROP_BYPASS_SHOES) - - var/datum/component/caltrop/caltrop_comp = GetComponent(/datum/component/caltrop) - if(caltrop_comp) - caltrop_comp.min_damage = ant_min_damage - caltrop_comp.max_damage = ant_max_damage - caltrop_comp.flags = ant_flags - caltrop_comp.soundfile = bite_sound - else - AddComponent(/datum/component/caltrop, min_damage = ant_min_damage, max_damage = ant_max_damage, flags = ant_flags, soundfile = bite_sound) - - update_appearance(UPDATE_ICON) - -/obj/effect/decal/cleanable/ants/update_icon_state() - if(istype(src, /obj/effect/decal/cleanable/ants/fire)) //i fucking hate this but you're forced to call parent in update_icon_state() - return ..() - if(!(flags_1 & INITIALIZED_1)) - return ..() - - var/datum/component/caltrop/caltrop_comp = GetComponent(/datum/component/caltrop) - if(!caltrop_comp) - return ..() - - switch(caltrop_comp.max_damage) - if(0 to 1) - icon_state = initial(icon_state) - if(1.1 to 4) - icon_state = "[initial(icon_state)]_2" - if(4.1 to 7) - icon_state = "[initial(icon_state)]_3" - if(7.1 to INFINITY) - icon_state = "[initial(icon_state)]_4" - return ..() - -/obj/effect/decal/cleanable/ants/update_overlays() - . = ..() - . += emissive_appearance(icon, "[icon_state]_light", src, alpha = src.alpha, effect_type = EMISSIVE_NO_BLOOM) - -/obj/effect/decal/cleanable/ants/fire_act(exposed_temperature, exposed_volume) - new /obj/effect/decal/cleanable/ants/fire(loc) - qdel(src) - -/obj/effect/decal/cleanable/ants/fire - name = "space fire ants" - desc = "A small colony no longer. We are the fire nation." - decal_reagent = /datum/reagent/ants/fire - icon_state = "fire_ants" - mergeable_decal = FALSE - -/obj/effect/decal/cleanable/ants/fire/update_ant_damage(ant_min_damage, ant_max_damage) - return ..(15, 25) - -/obj/effect/decal/cleanable/ants/fire/fire_act(exposed_temperature, exposed_volume) - return - -/obj/effect/decal/cleanable/fuel_pool - name = "pool of fuel" - desc = "A pool of flammable fuel. Its probably wise to clean this off before something ignites it..." - icon_state = "fuel_pool" - beauty = -50 - clean_type = CLEAN_TYPE_BLOOD - mouse_opacity = MOUSE_OPACITY_OPAQUE - resistance_flags = UNACIDABLE | ACID_PROOF | FIRE_PROOF | FLAMMABLE //gross way of doing this but would need to disassemble fire_act call stack otherwise - /// Maximum amount of hotspots this pool can create before deleting itself - var/burn_amount = 3 - /// Is this fuel pool currently burning? - var/burning = FALSE - /// Type of hotspot fuel pool spawns upon being ignited - var/hotspot_type = /obj/effect/hotspot - -/obj/effect/decal/cleanable/fuel_pool/Initialize(mapload, burn_stacks) - . = ..() - var/static/list/loc_connections = list( - COMSIG_TURF_MOVABLE_THROW_LANDED = PROC_REF(ignition_trigger), - COMSIG_ATOM_ENTERED = PROC_REF(on_entered) - ) - AddElement(/datum/element/connect_loc, loc_connections) - for(var/obj/effect/decal/cleanable/fuel_pool/pool in get_turf(src)) //Can't use locate because we also belong to that turf - if(pool == src) - continue - pool.burn_amount = max(min(pool.burn_amount + burn_stacks, 10), 1) - return INITIALIZE_HINT_QDEL - - if(burn_stacks) - burn_amount = max(min(burn_stacks, 10), 1) - - return INITIALIZE_HINT_LATELOAD - -// Just in case of fires, do this after mapload. -/obj/effect/decal/cleanable/fuel_pool/LateInitialize() -// We don't want to burn down the create_and_destroy test area -#ifndef UNIT_TESTS - RegisterSignal(src, COMSIG_ATOM_TOUCHED_SPARKS, PROC_REF(ignition_trigger)) -#endif - -/obj/effect/decal/cleanable/fuel_pool/fire_act(exposed_temperature, exposed_volume) - . = ..() - ignite() - -/** - * Ignites the fuel pool. This should be the only way to ignite fuel pools. - */ -/obj/effect/decal/cleanable/fuel_pool/proc/ignite() - if(burning) - return - burning = TRUE - burn_process() - -/** - * Spends 1 burn_amount and spawns a hotspot. If burn_amount is equal to 0, deletes the fuel pool. - * Else, queues another call of this proc upon hotspot getting deleted and ignites other fuel pools around itself after 0.5 seconds. - * THIS SHOULD NOT BE CALLED DIRECTLY. - */ -/obj/effect/decal/cleanable/fuel_pool/proc/burn_process() - SIGNAL_HANDLER - - burn_amount -= 1 - var/obj/effect/hotspot/hotspot = new hotspot_type(get_turf(src)) - addtimer(CALLBACK(src, PROC_REF(ignite_others)), 0.5 SECONDS) - - if(!burn_amount) - qdel(src) - return - - RegisterSignal(hotspot, COMSIG_QDELETING, PROC_REF(burn_process)) - -/** - * Ignites other oil pools around itself. - */ -/obj/effect/decal/cleanable/fuel_pool/proc/ignite_others() - for(var/obj/effect/decal/cleanable/fuel_pool/oil in range(1, get_turf(src))) - oil.ignite() - -/obj/effect/decal/cleanable/fuel_pool/bullet_act(obj/projectile/hit_proj) - . = ..() - ignite() - log_combat(hit_proj.firer, src, "used [hit_proj] to ignite") - -/obj/effect/decal/cleanable/fuel_pool/attackby(obj/item/item, mob/user, list/modifiers, list/attack_modifiers) - if(item.ignition_effect(src, user)) - ignite() - log_combat(user, src, "used [item] to ignite") - return ..() - -/obj/effect/decal/cleanable/fuel_pool/proc/on_entered(datum/source, atom/movable/entered_atom) - SIGNAL_HANDLER - - if(!entered_atom.throwing) // don't light from things being thrown over us, we handle that somewhere else - ignition_trigger(source = src, enflammable_atom = entered_atom) - -/obj/effect/decal/cleanable/fuel_pool/proc/ignition_trigger(datum/source, atom/movable/enflammable_atom) - SIGNAL_HANDLER - - if(isitem(enflammable_atom)) - var/obj/item/enflamed_item = enflammable_atom - if(enflamed_item.get_temperature() > FIRE_MINIMUM_TEMPERATURE_TO_EXIST) - ignite() - return - else if(isliving(enflammable_atom)) - var/mob/living/enflamed_liver = enflammable_atom - if(enflamed_liver.on_fire) - ignite() - else if(istype(enflammable_atom, /obj/effect/particle_effect/sparks)) - ignite() - - -/obj/effect/decal/cleanable/fuel_pool/hivis - icon_state = "fuel_pool_hivis" - /obj/effect/decal/cleanable/rubble name = "rubble" desc = "A pile of rubble." diff --git a/code/game/objects/effects/decals/structure.dm b/code/game/objects/effects/decals/structure.dm new file mode 100644 index 00000000000..66935498dff --- /dev/null +++ b/code/game/objects/effects/decals/structure.dm @@ -0,0 +1,6 @@ +/obj/effect/decal/fakelattice + name = "lattice" + desc = "A lightweight support lattice." + icon = 'icons/obj/smooth_structures/lattice.dmi' + icon_state = "lattice-255" + density = TRUE diff --git a/code/game/objects/effects/particles/echo.dm b/code/game/objects/effects/particles/echo.dm new file mode 100644 index 00000000000..90c3533d8ce --- /dev/null +++ b/code/game/objects/effects/particles/echo.dm @@ -0,0 +1,14 @@ +// Echolocation particles. +/particles/echo + icon = 'icons/effects/particles/echo.dmi' + icon_state = list("echo1" = 1, "echo2" = 1, "echo3" = 2) + width = 480 + height = 480 + count = 1000 + spawning = 0.5 + lifespan = 2 SECONDS + fade = 1 SECONDS + gravity = list(0, -0.1) + position = generator(GEN_BOX, list(-240, -240), list(240, 240), NORMAL_RAND) + drift = generator(GEN_VECTOR, list(-0.1, 0), list(0.1, 0)) + rotation = generator(GEN_NUM, 0, 360, NORMAL_RAND) diff --git a/code/game/objects/effects/particles/food.dm b/code/game/objects/effects/particles/food.dm new file mode 100644 index 00000000000..30f9e6ec2f4 --- /dev/null +++ b/code/game/objects/effects/particles/food.dm @@ -0,0 +1,13 @@ +// Food related particles. +/particles/stink + icon = 'icons/effects/particles/stink.dmi' + icon_state = list("stink_1" = 1, "stink_2" = 2, "stink_3" = 2) + color = "#0BDA51" + width = 100 + height = 100 + count = 25 + spawning = 0.25 + lifespan = 1 SECONDS + fade = 1 SECONDS + position = generator(GEN_CIRCLE, 0, 16, UNIFORM_RAND) + gravity = list(0, 0.25) diff --git a/code/game/objects/effects/particles/misc.dm b/code/game/objects/effects/particles/misc.dm deleted file mode 100644 index a1f188f88c9..00000000000 --- a/code/game/objects/effects/particles/misc.dm +++ /dev/null @@ -1,45 +0,0 @@ -// General or un-matched particles, make a new file if a few can be sorted together. -/particles/pollen - icon = 'icons/effects/particles/pollen.dmi' - icon_state = "pollen" - width = 100 - height = 100 - count = 1000 - spawning = 4 - lifespan = 0.7 SECONDS - fade = 1 SECONDS - grow = -0.01 - velocity = list(0, 0) - position = generator(GEN_CIRCLE, 0, 16, NORMAL_RAND) - drift = generator(GEN_VECTOR, list(0, -0.2), list(0, 0.2)) - gravity = list(0, 0.95) - scale = generator(GEN_VECTOR, list(0.3, 0.3), list(1,1), NORMAL_RAND) - rotation = 30 - spin = generator(GEN_NUM, -20, 20) - -/particles/echo - icon = 'icons/effects/particles/echo.dmi' - icon_state = list("echo1" = 1, "echo2" = 1, "echo3" = 2) - width = 480 - height = 480 - count = 1000 - spawning = 0.5 - lifespan = 2 SECONDS - fade = 1 SECONDS - gravity = list(0, -0.1) - position = generator(GEN_BOX, list(-240, -240), list(240, 240), NORMAL_RAND) - drift = generator(GEN_VECTOR, list(-0.1, 0), list(0.1, 0)) - rotation = generator(GEN_NUM, 0, 360, NORMAL_RAND) - -/particles/stink - icon = 'icons/effects/particles/stink.dmi' - icon_state = list("stink_1" = 1, "stink_2" = 2, "stink_3" = 2) - color = "#0BDA51" - width = 100 - height = 100 - count = 25 - spawning = 0.25 - lifespan = 1 SECONDS - fade = 1 SECONDS - position = generator(GEN_CIRCLE, 0, 16, UNIFORM_RAND) - gravity = list(0, 0.25) diff --git a/code/game/objects/effects/particles/plant.dm b/code/game/objects/effects/particles/plant.dm new file mode 100644 index 00000000000..eca8b6fe5d0 --- /dev/null +++ b/code/game/objects/effects/particles/plant.dm @@ -0,0 +1,18 @@ +// Plant related particles. +/particles/pollen + icon = 'icons/effects/particles/pollen.dmi' + icon_state = "pollen" + width = 100 + height = 100 + count = 1000 + spawning = 4 + lifespan = 0.7 SECONDS + fade = 1 SECONDS + grow = -0.01 + velocity = list(0, 0) + position = generator(GEN_CIRCLE, 0, 16, NORMAL_RAND) + drift = generator(GEN_VECTOR, list(0, -0.2), list(0, 0.2)) + gravity = list(0, 0.95) + scale = generator(GEN_VECTOR, list(0.3, 0.3), list(1,1), NORMAL_RAND) + rotation = 30 + spin = generator(GEN_NUM, -20, 20) diff --git a/code/modules/movespeed/modifiers/admin.dm b/code/modules/movespeed/modifiers/admin.dm new file mode 100644 index 00000000000..c2002dec2d3 --- /dev/null +++ b/code/modules/movespeed/modifiers/admin.dm @@ -0,0 +1,4 @@ +/datum/movespeed_modifier/admin_varedit + variable = TRUE + + diff --git a/code/modules/movespeed/modifiers/misc.dm b/code/modules/movespeed/modifiers/misc.dm deleted file mode 100644 index e3aba912966..00000000000 --- a/code/modules/movespeed/modifiers/misc.dm +++ /dev/null @@ -1,6 +0,0 @@ -/datum/movespeed_modifier/admin_varedit - variable = TRUE - -/datum/movespeed_modifier/yellow_orb - multiplicative_slowdown = -0.65 - blacklisted_movetypes = (FLYING|FLOATING) diff --git a/code/modules/movespeed/modifiers/status_effects.dm b/code/modules/movespeed/modifiers/status_effects.dm index 26522d0793b..951944944c5 100644 --- a/code/modules/movespeed/modifiers/status_effects.dm +++ b/code/modules/movespeed/modifiers/status_effects.dm @@ -63,6 +63,10 @@ /datum/movespeed_modifier/status_effect/guardian_shield multiplicative_slowdown = 1 +/datum/movespeed_modifier/status_effect/yellow_orb + multiplicative_slowdown = -0.65 + blacklisted_movetypes = (FLYING|FLOATING) + ///movespeed modifier that makes you go faster when wet and lying on the floor once past the fish organ set threshold. /datum/movespeed_modifier/fish_flopping blacklisted_movetypes = MOVETYPES_NOT_TOUCHING_GROUND diff --git a/code/modules/reagents/reagent_containers/cups/mauna_mug.dm b/code/modules/reagents/reagent_containers/cups/mauna_mug.dm new file mode 100644 index 00000000000..b443229358b --- /dev/null +++ b/code/modules/reagents/reagent_containers/cups/mauna_mug.dm @@ -0,0 +1,117 @@ +/obj/item/reagent_containers/cup/maunamug + name = "mauna mug" + desc = "A drink served in a classy mug. Now with built-in heating!" + icon = 'icons/obj/devices/mauna_mug.dmi' + icon_state = "maunamug" + base_icon_state = "maunamug" + spillable = TRUE + reagent_flags = OPENCONTAINER + fill_icon_state = "maunafilling" + fill_icon_thresholds = list(25) + var/obj/item/stock_parts/power_store/cell + var/open = FALSE + var/on = FALSE + +/obj/item/reagent_containers/cup/maunamug/Initialize(mapload, vol) + . = ..() + cell = new /obj/item/stock_parts/power_store/cell(src) + +/obj/item/reagent_containers/cup/maunamug/get_cell() + return cell + +/obj/item/reagent_containers/cup/maunamug/examine(mob/user) + . = ..() + . += span_notice("The status display reads: Current temperature: [reagents.chem_temp]K Current Charge:[cell ? "[cell.charge / cell.maxcharge * 100]%" : "No cell found"].") + if(open) + . += span_notice("The battery case is open.") + if(cell && cell.charge > 0) + . += span_notice("Ctrl+Click to toggle the power.") + +/obj/item/reagent_containers/cup/maunamug/process(seconds_per_tick) + ..() + if(on && (!cell || cell.charge <= 0)) //Check if we ran out of power + change_power_status(FALSE) + return FALSE + cell.use(0.005 * STANDARD_CELL_RATE * seconds_per_tick) //Basic cell goes for like 200 seconds, bluespace for 8000 + if(!reagents.total_volume) + return FALSE + var/max_temp = min(500 + (500 * (0.2 * cell.rating)), 1000) // 373 to 1000 + reagents.adjust_thermal_energy(0.4 * cell.maxcharge * reagents.total_volume * seconds_per_tick, max_temp = max_temp) // 4 kelvin every tick on a basic cell. 160k on bluespace + reagents.handle_reactions() + update_appearance() + if(reagents.chem_temp >= max_temp) + change_power_status(FALSE) + audible_message(span_notice("The Mauna Mug lets out a happy beep and turns off!")) + playsound(src, 'sound/machines/chime.ogg', 50) + +/obj/item/reagent_containers/cup/maunamug/Destroy() + if(cell) + QDEL_NULL(cell) + STOP_PROCESSING(SSobj, src) + . = ..() + +/obj/item/reagent_containers/cup/maunamug/item_ctrl_click(mob/user) + if(on) + change_power_status(FALSE) + else + if(!cell || cell.charge <= 0) + return FALSE //No power, so don't turn on + change_power_status(TRUE) + return CLICK_ACTION_SUCCESS + +/obj/item/reagent_containers/cup/maunamug/proc/change_power_status(status) + on = status + if(on) + START_PROCESSING(SSobj, src) + else + STOP_PROCESSING(SSobj, src) + update_appearance() + +/obj/item/reagent_containers/cup/maunamug/screwdriver_act(mob/living/user, obj/item/I) + . = ..() + open = !open + to_chat(user, span_notice("You screw the battery case on [src] [open ? "open" : "closed"] .")) + update_appearance() + +/obj/item/reagent_containers/cup/maunamug/attackby(obj/item/I, mob/user, list/modifiers, list/attack_modifiers) + add_fingerprint(user) + if(!istype(I, /obj/item/stock_parts/power_store/cell)) + return ..() + if(!open) + to_chat(user, span_warning("The battery case must be open to insert a power cell!")) + return FALSE + if(cell) + to_chat(user, span_warning("There is already a power cell inside!")) + return FALSE + else if(!user.transferItemToLoc(I, src)) + return + cell = I + user.visible_message(span_notice("[user] inserts a power cell into [src]."), span_notice("You insert the power cell into [src].")) + update_appearance() + +/obj/item/reagent_containers/cup/maunamug/attack_hand(mob/living/user, list/modifiers) + if(cell && open) + user.put_in_hands(cell) + cell = null + to_chat(user, span_notice("You remove the power cell from [src].")) + on = FALSE + update_appearance() + return TRUE + return ..() + +/obj/item/reagent_containers/cup/maunamug/update_icon_state() + if(open) + icon_state = "[base_icon_state][cell ? null : "_no"]_bat" + return ..() + icon_state = "[base_icon_state][on ? "_on" : null]" + return ..() + +/obj/item/reagent_containers/cup/maunamug/update_overlays() + . = ..() + if(!reagents.total_volume || reagents.chem_temp < 400) + return + + var/intensity = (reagents.chem_temp - 400) * 1 / 600 //Get the opacity of the incandescent overlay. Ranging from 400 to 1000 + var/mutable_appearance/mug_glow = mutable_appearance(icon, "maunamug_incand") + mug_glow.alpha = 255 * intensity + . += mug_glow diff --git a/code/modules/reagents/reagent_containers/misc.dm b/code/modules/reagents/reagent_containers/rag.dm similarity index 64% rename from code/modules/reagents/reagent_containers/misc.dm rename to code/modules/reagents/reagent_containers/rag.dm index 37185319b4d..bd73f20fe1f 100644 --- a/code/modules/reagents/reagent_containers/misc.dm +++ b/code/modules/reagents/reagent_containers/rag.dm @@ -1,121 +1,3 @@ -/obj/item/reagent_containers/cup/maunamug - name = "mauna mug" - desc = "A drink served in a classy mug. Now with built-in heating!" - icon = 'icons/obj/devices/mauna_mug.dmi' - icon_state = "maunamug" - base_icon_state = "maunamug" - spillable = TRUE - reagent_flags = OPENCONTAINER - fill_icon_state = "maunafilling" - fill_icon_thresholds = list(25) - var/obj/item/stock_parts/power_store/cell - var/open = FALSE - var/on = FALSE - -/obj/item/reagent_containers/cup/maunamug/Initialize(mapload, vol) - . = ..() - cell = new /obj/item/stock_parts/power_store/cell(src) - -/obj/item/reagent_containers/cup/maunamug/get_cell() - return cell - -/obj/item/reagent_containers/cup/maunamug/examine(mob/user) - . = ..() - . += span_notice("The status display reads: Current temperature: [reagents.chem_temp]K Current Charge:[cell ? "[cell.charge / cell.maxcharge * 100]%" : "No cell found"].") - if(open) - . += span_notice("The battery case is open.") - if(cell && cell.charge > 0) - . += span_notice("Ctrl+Click to toggle the power.") - -/obj/item/reagent_containers/cup/maunamug/process(seconds_per_tick) - ..() - if(on && (!cell || cell.charge <= 0)) //Check if we ran out of power - change_power_status(FALSE) - return FALSE - cell.use(0.005 * STANDARD_CELL_RATE * seconds_per_tick) //Basic cell goes for like 200 seconds, bluespace for 8000 - if(!reagents.total_volume) - return FALSE - var/max_temp = min(500 + (500 * (0.2 * cell.rating)), 1000) // 373 to 1000 - reagents.adjust_thermal_energy(0.4 * cell.maxcharge * reagents.total_volume * seconds_per_tick, max_temp = max_temp) // 4 kelvin every tick on a basic cell. 160k on bluespace - reagents.handle_reactions() - update_appearance() - if(reagents.chem_temp >= max_temp) - change_power_status(FALSE) - audible_message(span_notice("The Mauna Mug lets out a happy beep and turns off!")) - playsound(src, 'sound/machines/chime.ogg', 50) - -/obj/item/reagent_containers/cup/maunamug/Destroy() - if(cell) - QDEL_NULL(cell) - STOP_PROCESSING(SSobj, src) - . = ..() - -/obj/item/reagent_containers/cup/maunamug/item_ctrl_click(mob/user) - if(on) - change_power_status(FALSE) - else - if(!cell || cell.charge <= 0) - return FALSE //No power, so don't turn on - change_power_status(TRUE) - return CLICK_ACTION_SUCCESS - -/obj/item/reagent_containers/cup/maunamug/proc/change_power_status(status) - on = status - if(on) - START_PROCESSING(SSobj, src) - else - STOP_PROCESSING(SSobj, src) - update_appearance() - -/obj/item/reagent_containers/cup/maunamug/screwdriver_act(mob/living/user, obj/item/I) - . = ..() - open = !open - to_chat(user, span_notice("You screw the battery case on [src] [open ? "open" : "closed"] .")) - update_appearance() - -/obj/item/reagent_containers/cup/maunamug/attackby(obj/item/I, mob/user, list/modifiers, list/attack_modifiers) - add_fingerprint(user) - if(!istype(I, /obj/item/stock_parts/power_store/cell)) - return ..() - if(!open) - to_chat(user, span_warning("The battery case must be open to insert a power cell!")) - return FALSE - if(cell) - to_chat(user, span_warning("There is already a power cell inside!")) - return FALSE - else if(!user.transferItemToLoc(I, src)) - return - cell = I - user.visible_message(span_notice("[user] inserts a power cell into [src]."), span_notice("You insert the power cell into [src].")) - update_appearance() - -/obj/item/reagent_containers/cup/maunamug/attack_hand(mob/living/user, list/modifiers) - if(cell && open) - user.put_in_hands(cell) - cell = null - to_chat(user, span_notice("You remove the power cell from [src].")) - on = FALSE - update_appearance() - return TRUE - return ..() - -/obj/item/reagent_containers/cup/maunamug/update_icon_state() - if(open) - icon_state = "[base_icon_state][cell ? null : "_no"]_bat" - return ..() - icon_state = "[base_icon_state][on ? "_on" : null]" - return ..() - -/obj/item/reagent_containers/cup/maunamug/update_overlays() - . = ..() - if(!reagents.total_volume || reagents.chem_temp < 400) - return - - var/intensity = (reagents.chem_temp - 400) * 1 / 600 //Get the opacity of the incandescent overlay. Ranging from 400 to 1000 - var/mutable_appearance/mug_glow = mutable_appearance(icon, "maunamug_incand") - mug_glow.alpha = 255 * intensity - . += mug_glow - /obj/item/rag name = "damp rag" desc = "For cleaning up messes, you suppose." diff --git a/tgstation.dme b/tgstation.dme index 0a15e3317b7..e220e38cb96 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -693,10 +693,14 @@ #include "code\_globalvars\lists\canisters.dm" #include "code\_globalvars\lists\cargo.dm" #include "code\_globalvars\lists\client.dm" +#include "code\_globalvars\lists\clothing.dm" #include "code\_globalvars\lists\color.dm" +#include "code\_globalvars\lists\communication.dm" #include "code\_globalvars\lists\crafting.dm" +#include "code\_globalvars\lists\department.dm" +#include "code\_globalvars\lists\disposals.dm" #include "code\_globalvars\lists\engineering.dm" -#include "code\_globalvars\lists\flavor_misc.dm" +#include "code\_globalvars\lists\ghost.dm" #include "code\_globalvars\lists\icons.dm" #include "code\_globalvars\lists\keybindings.dm" #include "code\_globalvars\lists\maintenance_loot.dm" @@ -713,6 +717,9 @@ #include "code\_globalvars\lists\reagents.dm" #include "code\_globalvars\lists\rtd.dm" #include "code\_globalvars\lists\silo.dm" +#include "code\_globalvars\lists\sound.dm" +#include "code\_globalvars\lists\status_display.dm" +#include "code\_globalvars\lists\strings.dm" #include "code\_globalvars\lists\typecache.dm" #include "code\_globalvars\lists\wiremod.dm" #include "code\_globalvars\lists\xenobiology.dm" @@ -2504,15 +2511,18 @@ #include "code\game\objects\effects\anomalies\anomalies_hallucination.dm" #include "code\game\objects\effects\anomalies\anomalies_pyroclastic.dm" #include "code\game\objects\effects\anomalies\anomalies_vortex.dm" +#include "code\game\objects\effects\decals\chemspray.dm" #include "code\game\objects\effects\decals\cleanable.dm" #include "code\game\objects\effects\decals\crayon.dm" #include "code\game\objects\effects\decals\decal.dm" -#include "code\game\objects\effects\decals\misc.dm" #include "code\game\objects\effects\decals\remains.dm" +#include "code\game\objects\effects\decals\structure.dm" #include "code\game\objects\effects\decals\cleanable\aliens.dm" +#include "code\game\objects\effects\decals\cleanable\ants.dm" #include "code\game\objects\effects\decals\cleanable\blood.dm" #include "code\game\objects\effects\decals\cleanable\food.dm" -#include "code\game\objects\effects\decals\cleanable\misc.dm" +#include "code\game\objects\effects\decals\cleanable\fuel.dm" +#include "code\game\objects\effects\decals\cleanable\mess.dm" #include "code\game\objects\effects\decals\cleanable\robots.dm" #include "code\game\objects\effects\decals\turfdecal\dirt.dm" #include "code\game\objects\effects\decals\turfdecal\markings.dm" @@ -2529,10 +2539,12 @@ #include "code\game\objects\effects\effect_system\fluid_spread\effects_smoke.dm" #include "code\game\objects\effects\landmarks\atmospherics_sanity_landmarks.dm" #include "code\game\objects\effects\particles\acid.dm" +#include "code\game\objects\effects\particles\echo.dm" #include "code\game\objects\effects\particles\fire.dm" +#include "code\game\objects\effects\particles\food.dm" #include "code\game\objects\effects\particles\gravity.dm" -#include "code\game\objects\effects\particles\misc.dm" #include "code\game\objects\effects\particles\note_particles.dm" +#include "code\game\objects\effects\particles\plant.dm" #include "code\game\objects\effects\particles\slime.dm" #include "code\game\objects\effects\particles\smoke.dm" #include "code\game\objects\effects\particles\water.dm" @@ -5763,11 +5775,11 @@ #include "code\modules\modular_computers\file_system\programs\messenger\messenger_data.dm" #include "code\modules\modular_computers\file_system\programs\messenger\messenger_program.dm" #include "code\modules\movespeed\_movespeed_modifier.dm" +#include "code\modules\movespeed\modifiers\admin.dm" #include "code\modules\movespeed\modifiers\components.dm" #include "code\modules\movespeed\modifiers\drugs.dm" #include "code\modules\movespeed\modifiers\innate.dm" #include "code\modules\movespeed\modifiers\items.dm" -#include "code\modules\movespeed\modifiers\misc.dm" #include "code\modules\movespeed\modifiers\mobs.dm" #include "code\modules\movespeed\modifiers\reagent.dm" #include "code\modules\movespeed\modifiers\status_effects.dm" @@ -6095,9 +6107,9 @@ #include "code\modules\reagents\reagent_containers\hypospray.dm" #include "code\modules\reagents\reagent_containers\jerrycan.dm" #include "code\modules\reagents\reagent_containers\medigel.dm" -#include "code\modules\reagents\reagent_containers\misc.dm" #include "code\modules\reagents\reagent_containers\patch.dm" #include "code\modules\reagents\reagent_containers\pill.dm" +#include "code\modules\reagents\reagent_containers\rag.dm" #include "code\modules\reagents\reagent_containers\spray.dm" #include "code\modules\reagents\reagent_containers\syringes.dm" #include "code\modules\reagents\reagent_containers\watering_can.dm" @@ -6107,6 +6119,7 @@ #include "code\modules\reagents\reagent_containers\cups\drinkingglass.dm" #include "code\modules\reagents\reagent_containers\cups\drinks.dm" #include "code\modules\reagents\reagent_containers\cups\glassbottle.dm" +#include "code\modules\reagents\reagent_containers\cups\mauna_mug.dm" #include "code\modules\reagents\reagent_containers\cups\organ_jar.dm" #include "code\modules\reagents\reagent_containers\cups\soda.dm" #include "code\modules\reagents\withdrawal\_addiction.dm"