From ee71c8b2bf319dbecb6f5bbec6802c6898b240b0 Mon Sep 17 00:00:00 2001 From: MistakeNot4892 Date: Fri, 27 Dec 2024 10:46:24 +1100 Subject: [PATCH 01/14] Enforcing UID on skill decls. --- code/modules/mob/skills/skill.dm | 30 ++++++++++++++++++++---------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/code/modules/mob/skills/skill.dm b/code/modules/mob/skills/skill.dm index 8a464067a3a..cd0d2ec8927 100644 --- a/code/modules/mob/skills/skill.dm +++ b/code/modules/mob/skills/skill.dm @@ -1,14 +1,24 @@ /decl/skill - - abstract_type = /decl/skill // Don't mess with this without changing how Initialize works. - var/name = "None" // Name of the skill. This is what the player sees. - var/decl/skill_category/category // Category this skill belongs to. - var/desc = "Placeholder skill" // Generic description of this skill. - var/difficulty = SKILL_AVERAGE //Used to compute how expensive the skill is - var/default_max = SKILL_ADEPT //Makes the skill capped at this value in selection unless overriden at job level. - var/default_value // The specific default value used for this skill. If null, uses the skillset's default. - var/prerequisites // A list of skill prerequisites, if needed. - var/fallback_key // If the skill UID is not found in the savefile, this is the fallback key to use for migrating old savefiles. + // UID is required for saving in prefs. + decl_flags = DECL_FLAG_MANDATORY_UID + /// Don't mess with this without changing how Initialize works. + abstract_type = /decl/skill + /// Name of the skill. This is what the player sees. + var/name = "None" + /// Generic description of this skill. + var/desc = "Placeholder skill" + /// Used to compute how expensive the skill is + var/difficulty = SKILL_AVERAGE + /// Makes the skill capped at this value in selection unless overriden at job level. + var/default_max = SKILL_ADEPT + /// The specific default value used for this skill. If null, uses the skillset's default. + var/default_value + /// A list of skill prerequisites, if needed. + var/prerequisites + /// If the skill UID is not found in the savefile, this is the fallback key to use for migrating old savefiles. + var/fallback_key + /// Category this skill belongs to. + var/decl/skill_category/category // Names for different skill values, in order from 1 up. var/list/levels = list( From a81848708d06027d9b20643ccd4cf637acf781de Mon Sep 17 00:00:00 2001 From: MistakeNot4892 Date: Fri, 27 Dec 2024 10:48:44 +1100 Subject: [PATCH 02/14] Adding UID to skills missing it. --- mods/content/fantasy/datum/skills.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/mods/content/fantasy/datum/skills.dm b/mods/content/fantasy/datum/skills.dm index 2fb92c6f9e1..badad3428e7 100644 --- a/mods/content/fantasy/datum/skills.dm +++ b/mods/content/fantasy/datum/skills.dm @@ -220,6 +220,7 @@ /decl/skill/service/husbandry name = "Animal Husbandry" + uid = "skill_husbandry" desc = "Your ability to raise and care for animals." levels = list( "Unskilled" = "You know next to nothing about animals. You can feed and clean up after them, but you know nothing about their biology, their behavior, or raising their young.", From 27e82d507e634634fd103059a81267287aa7afea Mon Sep 17 00:00:00 2001 From: MistakeNot4892 Date: Fri, 27 Dec 2024 11:15:33 +1100 Subject: [PATCH 03/14] Fish and chips use the right icon. --- code/modules/reagents/reagent_containers/food/meat/fish.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/reagents/reagent_containers/food/meat/fish.dm b/code/modules/reagents/reagent_containers/food/meat/fish.dm index 80b15eae9fb..4036cb4efe7 100644 --- a/code/modules/reagents/reagent_containers/food/meat/fish.dm +++ b/code/modules/reagents/reagent_containers/food/meat/fish.dm @@ -29,7 +29,7 @@ /obj/item/food/fishandchips name = "fish and chips" desc = "Best enjoyed wrapped in a newspaper on a cold wet day." - icon = 'icons/obj/food/fried/fishfingers.dmi' + icon = 'icons/obj/food/fried/fishandchips.dmi' filling_color = "#e3d796" center_of_mass = @'{"x":16,"y":16}' nutriment_desc = list("salt" = 1, "chips" = 2, "fish" = 2) From 3863d0886a65a602734e1cbadf56684b0634edb3 Mon Sep 17 00:00:00 2001 From: Penelope Haze Date: Thu, 26 Dec 2024 22:10:50 -0500 Subject: [PATCH 04/14] Move oldpod ruin into corporate modpack --- mods/content/corporate/_corporate.dme | 1 + .../corporate}/random_ruins/exoplanet_ruins/oldpod/oldpod.dm | 3 +-- .../corporate}/random_ruins/exoplanet_ruins/oldpod/oldpod.dmm | 0 nebula.dme | 1 - 4 files changed, 2 insertions(+), 3 deletions(-) rename {maps => mods/content/corporate}/random_ruins/exoplanet_ruins/oldpod/oldpod.dm (87%) rename {maps => mods/content/corporate}/random_ruins/exoplanet_ruins/oldpod/oldpod.dmm (100%) diff --git a/mods/content/corporate/_corporate.dme b/mods/content/corporate/_corporate.dme index 3a62ba3a912..5a30646d264 100644 --- a/mods/content/corporate/_corporate.dme +++ b/mods/content/corporate/_corporate.dme @@ -43,6 +43,7 @@ #include "items\stamps.dm" #include "items\wristcomp.dm" #include "machines\machines.dm" +#include "random_ruins\exoplanet_ruins\oldpod\oldpod.dm" #include "structures\lockers.dm" // END_INCLUDE #endif diff --git a/maps/random_ruins/exoplanet_ruins/oldpod/oldpod.dm b/mods/content/corporate/random_ruins/exoplanet_ruins/oldpod/oldpod.dm similarity index 87% rename from maps/random_ruins/exoplanet_ruins/oldpod/oldpod.dm rename to mods/content/corporate/random_ruins/exoplanet_ruins/oldpod/oldpod.dm index 0ea139fdbc7..4175cd8f17c 100644 --- a/maps/random_ruins/exoplanet_ruins/oldpod/oldpod.dm +++ b/mods/content/corporate/random_ruins/exoplanet_ruins/oldpod/oldpod.dm @@ -1,8 +1,7 @@ -#include "../../../../mods/content/corporate/_corporate.dme" - /datum/map_template/ruin/exoplanet/oldpod name = "old pod" description = "A now unused, crashed escape pod." + prefix = "mods/content/corporate/random_ruins/exoplanet_ruins/" suffixes = list("oldpod/oldpod.dmm") cost = 0.5 template_flags = TEMPLATE_FLAG_CLEAR_CONTENTS | TEMPLATE_FLAG_NO_RUINS diff --git a/maps/random_ruins/exoplanet_ruins/oldpod/oldpod.dmm b/mods/content/corporate/random_ruins/exoplanet_ruins/oldpod/oldpod.dmm similarity index 100% rename from maps/random_ruins/exoplanet_ruins/oldpod/oldpod.dmm rename to mods/content/corporate/random_ruins/exoplanet_ruins/oldpod/oldpod.dmm diff --git a/nebula.dme b/nebula.dme index 3547855884a..85539f1a37f 100644 --- a/nebula.dme +++ b/nebula.dme @@ -4129,7 +4129,6 @@ #include "maps\random_ruins\exoplanet_ruins\marooned\marooned.dm" #include "maps\random_ruins\exoplanet_ruins\monoliths\monoliths.dm" #include "maps\random_ruins\exoplanet_ruins\oasis\oasis.dm" -#include "maps\random_ruins\exoplanet_ruins\oldpod\oldpod.dm" #include "maps\random_ruins\exoplanet_ruins\radshrine\radshrine.dm" #include "maps\random_ruins\exoplanet_ruins\spider_nest\spider_nest.dm" #include "maps\random_ruins\exoplanet_ruins\tar_anomaly\tar_anomaly.dm" From d5bee9b4dea38890490664fbf6b020bca9b3cf42 Mon Sep 17 00:00:00 2001 From: Penelope Haze Date: Thu, 26 Dec 2024 22:33:03 -0500 Subject: [PATCH 05/14] Make the game compile without the corporate modpack included --- .../objects/items/devices/radio/headsets_shared.dm | 12 ++++++++++++ code/game/objects/random/subtypes/maintenance.dm | 5 ----- .../crates_lockers/closets/secure/scientist.dm | 4 +++- maps/example/example_unit_testing.dm | 8 ++++++++ maps/ministation/ministation_define.dm | 2 -- maps/ministation/ministation_overrides.dm | 4 ++++ mods/content/corporate/_corporate.dme | 1 + mods/content/corporate/datum/antagonists/commando.dm | 12 ------------ mods/content/corporate/items/random.dm | 10 ++++++++++ mods/content/corporate/structures/lockers.dm | 3 +++ 10 files changed, 41 insertions(+), 20 deletions(-) create mode 100644 mods/content/corporate/items/random.dm diff --git a/code/game/objects/items/devices/radio/headsets_shared.dm b/code/game/objects/items/devices/radio/headsets_shared.dm index c591cb4a83a..6c5551ea983 100644 --- a/code/game/objects/items/devices/radio/headsets_shared.dm +++ b/code/game/objects/items/devices/radio/headsets_shared.dm @@ -221,6 +221,18 @@ encryption_keys = list(/obj/item/encryptionkey/raider) analog_secured = list((access_raider) = TRUE) +/obj/item/encryptionkey/hacked + can_decrypt = list(access_hacked) + origin_tech = @'{"esoteric":3}' + +/obj/item/encryptionkey/hacked/Initialize(ml, material_key) + . = ..() + can_decrypt |= get_all_station_access() + +/obj/item/radio/headset/hacked + origin_tech = @'{"esoteric":3}' + encryption_keys = list(/obj/item/encryptionkey/hacked) + // Bowman alts /obj/item/radio/headset/headset_mining/bowman name = "mining bowman radio headset" diff --git a/code/game/objects/random/subtypes/maintenance.dm b/code/game/objects/random/subtypes/maintenance.dm index 0df746fd50a..b141867e7e1 100644 --- a/code/game/objects/random/subtypes/maintenance.dm +++ b/code/game/objects/random/subtypes/maintenance.dm @@ -209,14 +209,10 @@ something, make sure it's not in one of the other lists.*/ var/static/list/spawnable_choices = list( /obj/random/maintenance/clean = 320, /obj/item/clothing/head/soft/sec = 4, - /obj/item/clothing/head/soft/sec/corp = 4, /obj/item/backpack/security = 3, /obj/item/backpack/satchel/sec = 3, /obj/item/clothing/shoes/jackboots = 3, /obj/item/clothing/suit/armor/vest = 3, - /obj/item/clothing/head/beret/corp/sec = 3, - /obj/item/clothing/head/beret/corp/sec/corporate/hos = 3, - /obj/item/clothing/head/beret/corp/sec/navy/officer = 3, /obj/item/flashlight/maglight = 2, /obj/item/flash = 2, /obj/item/clothing/mask/balaclava = 2, @@ -226,7 +222,6 @@ something, make sure it's not in one of the other lists.*/ /obj/item/belt/security = 2, /obj/item/clothing/glasses/hud/security = 2, /obj/item/clothing/head/helmet = 2, - /obj/item/clothing/suit/armor/vest/security = 2, /obj/item/clothing/webbing/drop_pouches/black = 2, /obj/item/clothing/head/earmuffs = 2, /obj/item/handcuffs = 2, diff --git a/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm b/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm index 710f7d92d05..806048ba7a1 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm @@ -64,12 +64,14 @@ /obj/structure/closet/secure_closet/pilot name = "pilot locker" req_access = list(access_xenobiology) + /// The jumpsuit type spawned for this locker. Exists to be overridden by the corporate modpack, which adds pilot jumpsuits. + var/jumpsuit_type = /obj/item/clothing/jumpsuit/white /obj/structure/closet/secure_closet/pilot/WillContain() return list( /obj/item/backpack/parachute, /obj/item/knife/utility, - /obj/item/clothing/jumpsuit/pilot, + jumpsuit_type, /obj/item/clothing/suit/jacket/bomber, /obj/item/clothing/mask/gas/half, /obj/item/clothing/shoes/color/black, diff --git a/maps/example/example_unit_testing.dm b/maps/example/example_unit_testing.dm index 6c4c9380ab3..df857c78a41 100644 --- a/maps/example/example_unit_testing.dm +++ b/maps/example/example_unit_testing.dm @@ -9,3 +9,11 @@ /obj/abstract/map_data/example height = 3 + +// Enforce that this map must not have any modpacks, to ensure core code compiles on its own. +// I'd do this in setup_map on the example map datum but that happens before modpack init. +// This catches any modpacks accidentally included by core code, default away sites, space/planet ruin maps, etc. +/datum/controller/subsystem/modpacks/Initialize() + . = ..() + if(length(loaded_modpacks)) + CRASH("Example map had the following modpacks loaded: [json_encode(loaded_modpacks)]") \ No newline at end of file diff --git a/maps/ministation/ministation_define.dm b/maps/ministation/ministation_define.dm index d415969ed0b..b47a6b47024 100644 --- a/maps/ministation/ministation_define.dm +++ b/maps/ministation/ministation_define.dm @@ -13,8 +13,6 @@ company_name = "Tradehouse Administration" company_short = "Admin" - default_law_type = /datum/ai_laws/nanotrasen - lobby_screens = list('maps/ministation/ministation_lobby.png') overmap_ids = list(OVERMAP_ID_SPACE) diff --git a/maps/ministation/ministation_overrides.dm b/maps/ministation/ministation_overrides.dm index 508fbdaab31..709065f74aa 100644 --- a/maps/ministation/ministation_overrides.dm +++ b/maps/ministation/ministation_overrides.dm @@ -8,3 +8,7 @@ /datum/computer_file/program/wordprocessor, /datum/computer_file/program/supply ) + +// This has to be here rather than ministation_define.dm because it's from a modpack. +/datum/map/ministation + default_law_type = /datum/ai_laws/nanotrasen \ No newline at end of file diff --git a/mods/content/corporate/_corporate.dme b/mods/content/corporate/_corporate.dme index 5a30646d264..75a782ae63c 100644 --- a/mods/content/corporate/_corporate.dme +++ b/mods/content/corporate/_corporate.dme @@ -40,6 +40,7 @@ #include "items\cups.dm" #include "items\documents.dm" #include "items\medals.dm" +#include "items\random.dm" #include "items\stamps.dm" #include "items\wristcomp.dm" #include "machines\machines.dm" diff --git a/mods/content/corporate/datum/antagonists/commando.dm b/mods/content/corporate/datum/antagonists/commando.dm index f36ce069786..3aac5874e4b 100644 --- a/mods/content/corporate/datum/antagonists/commando.dm +++ b/mods/content/corporate/datum/antagonists/commando.dm @@ -26,15 +26,3 @@ /obj/item/gun/energy/laser, /obj/item/energy_blade/sword ) - -/obj/item/encryptionkey/hacked - can_decrypt = list(access_hacked) - origin_tech = @'{"esoteric":3}' - -/obj/item/encryptionkey/hacked/Initialize(ml, material_key) - . = ..() - can_decrypt |= get_all_station_access() - -/obj/item/radio/headset/hacked - origin_tech = @'{"esoteric":3}' - encryption_keys = list(/obj/item/encryptionkey/hacked) diff --git a/mods/content/corporate/items/random.dm b/mods/content/corporate/items/random.dm new file mode 100644 index 00000000000..54dde92f9ce --- /dev/null +++ b/mods/content/corporate/items/random.dm @@ -0,0 +1,10 @@ +/obj/random/maintenance/security/spawn_choices() + var/static/injected = FALSE + . = ..() + if(!injected) + .[/obj/item/clothing/head/soft/sec/corp] = 4 + .[/obj/item/clothing/head/beret/corp/sec] = 3 + .[/obj/item/clothing/head/beret/corp/sec/corporate/hos] = 3 + .[/obj/item/clothing/head/beret/corp/sec/navy/officer] = 3 + .[/obj/item/clothing/suit/armor/vest/security] = 2 + injected = TRUE \ No newline at end of file diff --git a/mods/content/corporate/structures/lockers.dm b/mods/content/corporate/structures/lockers.dm index 33c3cbf1eab..5116f72e02c 100644 --- a/mods/content/corporate/structures/lockers.dm +++ b/mods/content/corporate/structures/lockers.dm @@ -51,3 +51,6 @@ /obj/structure/closet/secure_closet/hop/WillContain() . = ..() + /obj/item/clothing/suit/armor/vest/nt + +/obj/structure/closet/secure_closet/pilot + jumpsuit_type = /obj/item/clothing/jumpsuit/pilot \ No newline at end of file From c97f7bcd82bd82fc4e5d94bf115bba5681ed13c3 Mon Sep 17 00:00:00 2001 From: Penelope Haze Date: Thu, 26 Dec 2024 22:39:54 -0500 Subject: [PATCH 06/14] Fix mispathed proc overrides --- .../admin/secrets/fun_secrets/waddle.dm | 2 +- code/modules/augment/passive/boost/shooting.dm | 6 +++--- .../butchery/butchery_products_meat_fish.dm | 2 +- code/modules/clothing/suits/jackets/hoodies.dm | 7 ------- code/modules/detectivework/tools/storage.dm | 6 +++--- .../planet_themes/ruined_city.dm | 2 +- .../solids/materials_solid_mineral.dm | 2 +- .../mob/living/simple_animal/hostile/leech.dm | 2 +- code/modules/overmap/ships/landable.dm | 2 +- code/modules/paperwork/filingcabinet.dm | 4 ++-- code/modules/random_map/drop/drop_types.dm | 18 +++--------------- .../reagents/chems/random/random_effects.dm | 4 ++-- .../reagents/reagent_containers/spray.dm | 2 +- code/modules/vehicles/engine.dm | 2 +- code/modules/weather/weather_fsm_states.dm | 2 +- .../finds/find_types/weapons.dm | 4 ++-- 16 files changed, 24 insertions(+), 43 deletions(-) diff --git a/code/modules/admin/secrets/fun_secrets/waddle.dm b/code/modules/admin/secrets/fun_secrets/waddle.dm index ea7bbd58889..90c663b5a82 100644 --- a/code/modules/admin/secrets/fun_secrets/waddle.dm +++ b/code/modules/admin/secrets/fun_secrets/waddle.dm @@ -35,7 +35,7 @@ events_repository.register(/decl/observ/moved, holder, src, PROC_REF(waddle)) events_repository.register(/decl/observ/destroyed, holder, src, PROC_REF(qdel_self)) -/datum/extension/event_registration/Destroy() +/datum/extension/waddle/Destroy() events_repository.unregister(/decl/observ/destroyed, holder, src) events_repository.unregister(/decl/observ/moved, holder, src) return ..() diff --git a/code/modules/augment/passive/boost/shooting.dm b/code/modules/augment/passive/boost/shooting.dm index 59ca29796cb..33306ef9f56 100644 --- a/code/modules/augment/passive/boost/shooting.dm +++ b/code/modules/augment/passive/boost/shooting.dm @@ -6,16 +6,16 @@ material = /decl/material/solid/metal/steel origin_tech = @'{"materials":4,"magnets":3,"biotech":3}' -/obj/item/organ/internal/augment/boost/reflex/reset_matter() +/obj/item/organ/internal/augment/boost/shooting/reset_matter() matter = list( /decl/material/solid/fiberglass = MATTER_AMOUNT_REINFORCEMENT, /decl/material/solid/metal/silver = MATTER_AMOUNT_TRACE ) -/obj/item/organ/internal/augment/boost/reflex/buff() +/obj/item/organ/internal/augment/boost/shooting/buff() if((. = ..())) to_chat(owner, SPAN_NOTICE("Notice: AIM-4 finished reboot.")) -/obj/item/organ/internal/augment/boost/reflex/debuff() +/obj/item/organ/internal/augment/boost/shooting/debuff() if((. = ..())) to_chat(owner, SPAN_WARNING("Catastrophic damage detected: AIM-4 shutting down.")) \ No newline at end of file diff --git a/code/modules/butchery/butchery_products_meat_fish.dm b/code/modules/butchery/butchery_products_meat_fish.dm index f1e06223d09..a802907bdc6 100644 --- a/code/modules/butchery/butchery_products_meat_fish.dm +++ b/code/modules/butchery/butchery_products_meat_fish.dm @@ -52,7 +52,7 @@ . = ..() SetName("grilled [name]") -/obj/item/food/butchery/meat/fish/get_meat_icons() +/obj/item/food/butchery/meat/fish/grilled/get_meat_icons() var/static/list/meat_icons = list( 'icons/obj/food/butchery/fish_grilled.dmi' ) diff --git a/code/modules/clothing/suits/jackets/hoodies.dm b/code/modules/clothing/suits/jackets/hoodies.dm index fcbd38712c8..adfd915c60a 100644 --- a/code/modules/clothing/suits/jackets/hoodies.dm +++ b/code/modules/clothing/suits/jackets/hoodies.dm @@ -18,13 +18,6 @@ desc = "A warm, black sweatshirt." color = COLOR_DARK_GRAY -/obj/item/clothing/suit/jacket/hoodie/get_assumed_clothing_state_modifiers() - var/static/list/expected_state_modifiers = list( - GET_DECL(/decl/clothing_state_modifier/buttons), - GET_DECL(/decl/clothing_state_modifier/hood) - ) - return expected_state_modifiers - /obj/item/clothing/head/hoodiehood name = "hoodie hood" desc = "A hood attached to a warm sweatshirt." diff --git a/code/modules/detectivework/tools/storage.dm b/code/modules/detectivework/tools/storage.dm index de56ab7d3de..30e553fef61 100644 --- a/code/modules/detectivework/tools/storage.dm +++ b/code/modules/detectivework/tools/storage.dm @@ -3,7 +3,7 @@ desc = "Sterilized equipment within. Do not contaminate." icon = 'icons/obj/forensics.dmi' icon_state = "dnakit" - + /obj/item/box/swabs/WillContain() return list(/obj/item/forensics/sample/swab = DEFAULT_BOX_STORAGE) @@ -11,7 +11,7 @@ name = "evidence bag box" desc = "A box claiming to contain evidence bags." -/obj/item/box/swabs/WillContain() +/obj/item/box/evidence/WillContain() return list(/obj/item/evidencebag = 7) /obj/item/box/fingerprints @@ -20,5 +20,5 @@ icon = 'icons/obj/forensics.dmi' icon_state = "dnakit" -/obj/item/box/swabs/WillContain() +/obj/item/box/fingerprints/WillContain() return list(/obj/item/forensics/sample/print = DEFAULT_BOX_STORAGE) diff --git a/code/modules/maps/template_types/random_exoplanet/planet_themes/ruined_city.dm b/code/modules/maps/template_types/random_exoplanet/planet_themes/ruined_city.dm index b8e70d839d6..221ee935055 100644 --- a/code/modules/maps/template_types/random_exoplanet/planet_themes/ruined_city.dm +++ b/code/modules/maps/template_types/random_exoplanet/planet_themes/ruined_city.dm @@ -15,7 +15,7 @@ 'sound/ambience/ominous3.ogg' ) -/datum/exoplanet_theme/robotic_guardians/modify_template_whitelist(whitelist_flags) +/datum/exoplanet_theme/ruined_city/modify_template_whitelist(whitelist_flags) return whitelist_flags | TEMPLATE_TAG_ALIEN /datum/exoplanet_theme/ruined_city/get_map_generators(/datum/planetoid_data/E) diff --git a/code/modules/materials/definitions/solids/materials_solid_mineral.dm b/code/modules/materials/definitions/solids/materials_solid_mineral.dm index 2be84c6c5df..8302ac13a99 100644 --- a/code/modules/materials/definitions/solids/materials_solid_mineral.dm +++ b/code/modules/materials/definitions/solids/materials_solid_mineral.dm @@ -181,7 +181,7 @@ /decl/material/solid/potassium = 1 ) -/decl/material/solid/potassium/affect_blood(var/mob/living/M, var/removed, var/datum/reagents/holder) +/decl/material/solid/potash/affect_blood(var/mob/living/M, var/removed, var/datum/reagents/holder) . = ..() var/volume = REAGENT_VOLUME(holder, type) if(volume > 3) diff --git a/code/modules/mob/living/simple_animal/hostile/leech.dm b/code/modules/mob/living/simple_animal/hostile/leech.dm index ea81aa10124..c8f7259babc 100644 --- a/code/modules/mob/living/simple_animal/hostile/leech.dm +++ b/code/modules/mob/living/simple_animal/hostile/leech.dm @@ -17,7 +17,7 @@ /datum/mob_controller/aggressive/leech break_stuff_probability = 5 -/mob/living/simple_animal/hostile/can_pry_door() +/mob/living/simple_animal/hostile/leech/can_pry_door() return FALSE /mob/living/simple_animal/hostile/leech/exoplanet/Initialize() diff --git a/code/modules/overmap/ships/landable.dm b/code/modules/overmap/ships/landable.dm index e2d698ecdb7..375e4253ec2 100644 --- a/code/modules/overmap/ships/landable.dm +++ b/code/modules/overmap/ships/landable.dm @@ -324,7 +324,7 @@ port_tag = new_port_tag . = ..() -/obj/abstract/local_dock/automatic/modify_mapped_vars(map_hash) +/obj/abstract/local_dock/modify_mapped_vars(map_hash) . = ..() ADJUST_TAG_VAR(port_tag, map_hash) ADJUST_TAG_VAR(dock_target, map_hash) diff --git a/code/modules/paperwork/filingcabinet.dm b/code/modules/paperwork/filingcabinet.dm index e6014e8f4f7..07771782936 100644 --- a/code/modules/paperwork/filingcabinet.dm +++ b/code/modules/paperwork/filingcabinet.dm @@ -120,11 +120,11 @@ . += "Details: [record.get_medical_record()]" return jointext(., "
") -/obj/structure/filing_cabinet/records/medical +/obj/structure/filing_cabinet/records/employment name = "employment record archive" archive_name = "employment record" -/obj/structure/filing_cabinet/records/medical/collate_data(var/datum/computer_file/report/crew_record/record) +/obj/structure/filing_cabinet/records/employment/collate_data(var/datum/computer_file/report/crew_record/record) . = list() . += "Name: [record.get_name()]" . += "Gender: [record.get_gender()]" diff --git a/code/modules/random_map/drop/drop_types.dm b/code/modules/random_map/drop/drop_types.dm index d517a217017..a9f290a0aa6 100644 --- a/code/modules/random_map/drop/drop_types.dm +++ b/code/modules/random_map/drop/drop_types.dm @@ -51,18 +51,6 @@ var/global/list/datum/supply_drop_loot/supply_drop /obj/item/gun/projectile/automatic/smg, /obj/item/gun/projectile/automatic/assault_rifle) -/datum/supply_drop_loot/ballistics - name = "Ballistics" - container = /obj/structure/largecrate -/datum/supply_drop_loot/ballistics/New() - ..() - contents = list( - /obj/item/gun/projectile/pistol, - /obj/item/gun/projectile/shotgun/doublebarrel, - /obj/item/gun/projectile/shotgun/pump, - /obj/item/gun/projectile/automatic/smg, - /obj/item/gun/projectile/automatic/assault_rifle) - /datum/supply_drop_loot/seeds name = "Seeds" container = /obj/structure/closet/crate @@ -158,10 +146,10 @@ var/global/list/datum/supply_drop_loot/supply_drop /obj/item/box/syringes, /obj/item/box/autoinjectors) -/datum/supply_drop_loot/power - name = "Power" +/datum/supply_drop_loot/materials + name = "Materials" container = /obj/structure/largecrate -/datum/supply_drop_loot/power/New() +/datum/supply_drop_loot/materials/New() ..() contents = list( /obj/item/stack/material/sheet/mapped/steel, diff --git a/code/modules/reagents/chems/random/random_effects.dm b/code/modules/reagents/chems/random/random_effects.dm index af118872c97..0ef001eb16a 100644 --- a/code/modules/reagents/chems/random/random_effects.dm +++ b/code/modules/reagents/chems/random/random_effects.dm @@ -227,7 +227,7 @@ mode = RANDOM_CHEM_EFFECT_INT desc = "acute toxicity" -/decl/random_chem_effect/random_properties/heal_brute/affect_blood(var/mob/living/M, var/removed, var/value) +/decl/random_chem_effect/random_properties/tox_damage/affect_blood(var/mob/living/M, var/removed, var/value) M.take_damage(value * removed, TOX) /decl/random_chem_effect/random_properties/heal_brute @@ -243,7 +243,7 @@ maximum = 10 desc = "burn repair" -/decl/random_chem_effect/random_properties/heal_brute/affect_blood(var/mob/living/M, var/removed, var/value) +/decl/random_chem_effect/random_properties/heal_burns/affect_blood(var/mob/living/M, var/removed, var/value) M.heal_organ_damage(0, removed * value) #undef RANDOM_CHEM_EFFECT_TRUE diff --git a/code/modules/reagents/reagent_containers/spray.dm b/code/modules/reagents/reagent_containers/spray.dm index 2df686595f8..f2079ac4214 100644 --- a/code/modules/reagents/reagent_containers/spray.dm +++ b/code/modules/reagents/reagent_containers/spray.dm @@ -109,7 +109,7 @@ if(has_safety() && distance <= 1) to_chat(user, "The safety is [safety ? "on" : "off"].") -/obj/item/chems/get_alt_interactions(mob/user) +/obj/item/chems/spray/get_alt_interactions(mob/user) . = ..() LAZYADD(., /decl/interaction_handler/empty/chems) LAZYADD(., /decl/interaction_handler/next_spray_amount) diff --git a/code/modules/vehicles/engine.dm b/code/modules/vehicles/engine.dm index b9dbc2f8f5a..56477903019 100644 --- a/code/modules/vehicles/engine.dm +++ b/code/modules/vehicles/engine.dm @@ -137,5 +137,5 @@ /obj/item/engine/thermal/rev_engine(var/atom/movable/M) M.audible_message("\The [M] rumbles to life.") -/obj/item/engine/electric/putter(var/atom/movable/M) +/obj/item/engine/thermal/putter(var/atom/movable/M) M.audible_message("\The [M] putters before turning off.") \ No newline at end of file diff --git a/code/modules/weather/weather_fsm_states.dm b/code/modules/weather/weather_fsm_states.dm index 6c80309d357..ca38c75279a 100644 --- a/code/modules/weather/weather_fsm_states.dm +++ b/code/modules/weather/weather_fsm_states.dm @@ -129,7 +129,7 @@ /decl/state_transition/weather/snow_heavy ) -/decl/state/weather/snow/heavy/adjust_temperature(initial_temperature) +/decl/state/weather/snow/medium/adjust_temperature(initial_temperature) return min(initial_temperature - 25, T0C) /decl/state/weather/snow/heavy diff --git a/code/modules/xenoarcheaology/finds/find_types/weapons.dm b/code/modules/xenoarcheaology/finds/find_types/weapons.dm index 73db85aeca5..b593cece25d 100644 --- a/code/modules/xenoarcheaology/finds/find_types/weapons.dm +++ b/code/modules/xenoarcheaology/finds/find_types/weapons.dm @@ -18,7 +18,7 @@ "It doesn't look safe.", "It looks wickedly jagged.", "There appear to be [pick("dark red","dark purple","dark green","dark blue")] stains along the edges.") - + /decl/archaeological_find/knife/new_icon() return pick(knife_icons) @@ -46,7 +46,7 @@ modification_flags = XENOFIND_APPLY_DECOR possible_types = list(/obj/item/beartrap) -/decl/archaeological_find/knife/generate_name() +/decl/archaeological_find/trap/generate_name() return "[pick("wicked","evil","byzantine","dangerous")] looking [pick("device","contraption","thing","trap")]" /decl/archaeological_find/trap/get_additional_description() From dea3f36ba359f47e4edabb7acc3caa5229a4c699 Mon Sep 17 00:00:00 2001 From: Penelope Haze Date: Thu, 26 Dec 2024 22:41:18 -0500 Subject: [PATCH 07/14] Remove accidental duplicate proc overrides --- .../reagents/reactions/reaction_synthesis.dm | 3 --- code/modules/recycling/disposalpipe.dm | 23 ------------------- .../real_instruments/Violin/violin.dm | 3 --- 3 files changed, 29 deletions(-) diff --git a/code/modules/reagents/reactions/reaction_synthesis.dm b/code/modules/reagents/reactions/reaction_synthesis.dm index 90f7a0e1957..1c8182d7a49 100644 --- a/code/modules/reagents/reactions/reaction_synthesis.dm +++ b/code/modules/reagents/reactions/reaction_synthesis.dm @@ -28,9 +28,6 @@ var/decl/material/mat = GET_DECL(/decl/material/solid/fiberglass) mat.create_object(location, created_volume) -/decl/chemical_reaction/synthesis/crystalization/can_happen(datum/reagents/holder) - . = ..() && length(holder.reagent_volumes) > 1 - /decl/chemical_reaction/synthesis/crystalization name = "Crystalization" required_reagents = list(/decl/material/liquid/crystal_agent = 1) diff --git a/code/modules/recycling/disposalpipe.dm b/code/modules/recycling/disposalpipe.dm index 60401186373..e035da8b825 100644 --- a/code/modules/recycling/disposalpipe.dm +++ b/code/modules/recycling/disposalpipe.dm @@ -232,29 +232,6 @@ qdel(src) -// pipe is deleted -// ensure if holder is present, it is expelled -/obj/structure/disposalpipe/Destroy() - var/obj/structure/disposalholder/H = locate() in src - if(H) - // holder was present - H.active = 0 - var/turf/T = src.loc - if(T.density) - // deleting pipe is inside a dense turf (wall) - // this is unlikely, but just dump out everything into the turf in case - - for(var/atom/movable/AM in H) - AM.forceMove(T) - AM.pipe_eject(0) - qdel(H) - return ..() - - // otherwise, do normal expel from turf - if(H) - expel(H, T, 0) - . = ..() - /obj/structure/disposalpipe/hides_under_flooring() return 1 diff --git a/code/modules/synthesized_instruments/real_instruments/Violin/violin.dm b/code/modules/synthesized_instruments/real_instruments/Violin/violin.dm index d73ee46400a..fe47cd2d560 100644 --- a/code/modules/synthesized_instruments/real_instruments/Violin/violin.dm +++ b/code/modules/synthesized_instruments/real_instruments/Violin/violin.dm @@ -10,6 +10,3 @@ path = /datum/instrument/obsolete/violin material = /decl/material/solid/organic/wood matter = list(/decl/material/solid/metal/steel = MATTER_AMOUNT_TRACE) - -/obj/structure/synthesized_instrument/synthesizer/shouldStopPlaying(mob/user) - return !(src && in_range(src, user)) \ No newline at end of file From dc8f1400ef6830eaa63395d337b9041058f0062c Mon Sep 17 00:00:00 2001 From: Penelope Haze Date: Fri, 27 Dec 2024 02:17:43 -0500 Subject: [PATCH 08/14] Move ERT RIGs out of corporate modpack --- .../rigs/ert}/asset_protection/boots.dmi | Bin .../rigs/ert}/asset_protection/chest.dmi | Bin .../rigs/ert}/asset_protection/gloves.dmi | Bin .../rigs/ert}/asset_protection/helmet.dmi | Bin .../rigs/ert}/asset_protection/rig.dmi | Bin .../clothing/rigs/ert}/commander/boots.dmi | Bin .../clothing/rigs/ert}/commander/chest.dmi | Bin .../clothing/rigs/ert}/commander/gloves.dmi | Bin .../clothing/rigs/ert}/commander/helmet.dmi | Bin .../clothing/rigs/ert}/commander/rig.dmi | Bin .../clothing/rigs/ert}/engineer/boots.dmi | Bin .../clothing/rigs/ert}/engineer/chest.dmi | Bin .../clothing/rigs/ert}/engineer/gloves.dmi | Bin .../clothing/rigs/ert}/engineer/helmet.dmi | Bin .../clothing/rigs/ert}/engineer/rig.dmi | Bin .../clothing/rigs/ert}/janitor/boots.dmi | Bin .../clothing/rigs/ert}/janitor/chest.dmi | Bin .../clothing/rigs/ert}/janitor/gloves.dmi | Bin .../clothing/rigs/ert}/janitor/helmet.dmi | Bin .../clothing/rigs/ert}/janitor/rig.dmi | Bin .../clothing/rigs/ert}/medic/boots.dmi | Bin .../clothing/rigs/ert}/medic/chest.dmi | Bin .../clothing/rigs/ert}/medic/gloves.dmi | Bin .../clothing/rigs/ert}/medic/helmet.dmi | Bin .../clothing/rigs/ert}/medic/rig.dmi | Bin .../clothing/rigs/ert}/security/boots.dmi | Bin .../clothing/rigs/ert}/security/chest.dmi | Bin .../clothing/rigs/ert}/security/gloves.dmi | Bin .../clothing/rigs/ert}/security/helmet.dmi | Bin .../clothing/rigs/ert}/security/rig.dmi | Bin maps/antag_spawn/ert/ert.dm | 5 +- maps/antag_spawn/ert/ert_base.dmm | 54 ++++++---------- .../ert.dm => maps/antag_spawn/ert/rig.dm | 60 +++++++++--------- mods/content/corporate/_corporate.dme | 1 - 34 files changed, 53 insertions(+), 67 deletions(-) rename {mods/content/corporate/icons/rigs => icons/clothing/rigs/ert}/asset_protection/boots.dmi (100%) rename {mods/content/corporate/icons/rigs => icons/clothing/rigs/ert}/asset_protection/chest.dmi (100%) rename {mods/content/corporate/icons/rigs => icons/clothing/rigs/ert}/asset_protection/gloves.dmi (100%) rename {mods/content/corporate/icons/rigs => icons/clothing/rigs/ert}/asset_protection/helmet.dmi (100%) rename {mods/content/corporate/icons/rigs => icons/clothing/rigs/ert}/asset_protection/rig.dmi (100%) rename {mods/content/corporate/icons/rigs => icons/clothing/rigs/ert}/commander/boots.dmi (100%) rename {mods/content/corporate/icons/rigs => icons/clothing/rigs/ert}/commander/chest.dmi (100%) rename {mods/content/corporate/icons/rigs => icons/clothing/rigs/ert}/commander/gloves.dmi (100%) rename {mods/content/corporate/icons/rigs => icons/clothing/rigs/ert}/commander/helmet.dmi (100%) rename {mods/content/corporate/icons/rigs => icons/clothing/rigs/ert}/commander/rig.dmi (100%) rename {mods/content/corporate/icons/rigs => icons/clothing/rigs/ert}/engineer/boots.dmi (100%) rename {mods/content/corporate/icons/rigs => icons/clothing/rigs/ert}/engineer/chest.dmi (100%) rename {mods/content/corporate/icons/rigs => icons/clothing/rigs/ert}/engineer/gloves.dmi (100%) rename {mods/content/corporate/icons/rigs => icons/clothing/rigs/ert}/engineer/helmet.dmi (100%) rename {mods/content/corporate/icons/rigs => icons/clothing/rigs/ert}/engineer/rig.dmi (100%) rename {mods/content/corporate/icons/rigs => icons/clothing/rigs/ert}/janitor/boots.dmi (100%) rename {mods/content/corporate/icons/rigs => icons/clothing/rigs/ert}/janitor/chest.dmi (100%) rename {mods/content/corporate/icons/rigs => icons/clothing/rigs/ert}/janitor/gloves.dmi (100%) rename {mods/content/corporate/icons/rigs => icons/clothing/rigs/ert}/janitor/helmet.dmi (100%) rename {mods/content/corporate/icons/rigs => icons/clothing/rigs/ert}/janitor/rig.dmi (100%) rename {mods/content/corporate/icons/rigs => icons/clothing/rigs/ert}/medic/boots.dmi (100%) rename {mods/content/corporate/icons/rigs => icons/clothing/rigs/ert}/medic/chest.dmi (100%) rename {mods/content/corporate/icons/rigs => icons/clothing/rigs/ert}/medic/gloves.dmi (100%) rename {mods/content/corporate/icons/rigs => icons/clothing/rigs/ert}/medic/helmet.dmi (100%) rename {mods/content/corporate/icons/rigs => icons/clothing/rigs/ert}/medic/rig.dmi (100%) rename {mods/content/corporate/icons/rigs => icons/clothing/rigs/ert}/security/boots.dmi (100%) rename {mods/content/corporate/icons/rigs => icons/clothing/rigs/ert}/security/chest.dmi (100%) rename {mods/content/corporate/icons/rigs => icons/clothing/rigs/ert}/security/gloves.dmi (100%) rename {mods/content/corporate/icons/rigs => icons/clothing/rigs/ert}/security/helmet.dmi (100%) rename {mods/content/corporate/icons/rigs => icons/clothing/rigs/ert}/security/rig.dmi (100%) rename mods/content/corporate/clothing/rigs/ert.dm => maps/antag_spawn/ert/rig.dm (78%) diff --git a/mods/content/corporate/icons/rigs/asset_protection/boots.dmi b/icons/clothing/rigs/ert/asset_protection/boots.dmi similarity index 100% rename from mods/content/corporate/icons/rigs/asset_protection/boots.dmi rename to icons/clothing/rigs/ert/asset_protection/boots.dmi diff --git a/mods/content/corporate/icons/rigs/asset_protection/chest.dmi b/icons/clothing/rigs/ert/asset_protection/chest.dmi similarity index 100% rename from mods/content/corporate/icons/rigs/asset_protection/chest.dmi rename to icons/clothing/rigs/ert/asset_protection/chest.dmi diff --git a/mods/content/corporate/icons/rigs/asset_protection/gloves.dmi b/icons/clothing/rigs/ert/asset_protection/gloves.dmi similarity index 100% rename from mods/content/corporate/icons/rigs/asset_protection/gloves.dmi rename to icons/clothing/rigs/ert/asset_protection/gloves.dmi diff --git a/mods/content/corporate/icons/rigs/asset_protection/helmet.dmi b/icons/clothing/rigs/ert/asset_protection/helmet.dmi similarity index 100% rename from mods/content/corporate/icons/rigs/asset_protection/helmet.dmi rename to icons/clothing/rigs/ert/asset_protection/helmet.dmi diff --git a/mods/content/corporate/icons/rigs/asset_protection/rig.dmi b/icons/clothing/rigs/ert/asset_protection/rig.dmi similarity index 100% rename from mods/content/corporate/icons/rigs/asset_protection/rig.dmi rename to icons/clothing/rigs/ert/asset_protection/rig.dmi diff --git a/mods/content/corporate/icons/rigs/commander/boots.dmi b/icons/clothing/rigs/ert/commander/boots.dmi similarity index 100% rename from mods/content/corporate/icons/rigs/commander/boots.dmi rename to icons/clothing/rigs/ert/commander/boots.dmi diff --git a/mods/content/corporate/icons/rigs/commander/chest.dmi b/icons/clothing/rigs/ert/commander/chest.dmi similarity index 100% rename from mods/content/corporate/icons/rigs/commander/chest.dmi rename to icons/clothing/rigs/ert/commander/chest.dmi diff --git a/mods/content/corporate/icons/rigs/commander/gloves.dmi b/icons/clothing/rigs/ert/commander/gloves.dmi similarity index 100% rename from mods/content/corporate/icons/rigs/commander/gloves.dmi rename to icons/clothing/rigs/ert/commander/gloves.dmi diff --git a/mods/content/corporate/icons/rigs/commander/helmet.dmi b/icons/clothing/rigs/ert/commander/helmet.dmi similarity index 100% rename from mods/content/corporate/icons/rigs/commander/helmet.dmi rename to icons/clothing/rigs/ert/commander/helmet.dmi diff --git a/mods/content/corporate/icons/rigs/commander/rig.dmi b/icons/clothing/rigs/ert/commander/rig.dmi similarity index 100% rename from mods/content/corporate/icons/rigs/commander/rig.dmi rename to icons/clothing/rigs/ert/commander/rig.dmi diff --git a/mods/content/corporate/icons/rigs/engineer/boots.dmi b/icons/clothing/rigs/ert/engineer/boots.dmi similarity index 100% rename from mods/content/corporate/icons/rigs/engineer/boots.dmi rename to icons/clothing/rigs/ert/engineer/boots.dmi diff --git a/mods/content/corporate/icons/rigs/engineer/chest.dmi b/icons/clothing/rigs/ert/engineer/chest.dmi similarity index 100% rename from mods/content/corporate/icons/rigs/engineer/chest.dmi rename to icons/clothing/rigs/ert/engineer/chest.dmi diff --git a/mods/content/corporate/icons/rigs/engineer/gloves.dmi b/icons/clothing/rigs/ert/engineer/gloves.dmi similarity index 100% rename from mods/content/corporate/icons/rigs/engineer/gloves.dmi rename to icons/clothing/rigs/ert/engineer/gloves.dmi diff --git a/mods/content/corporate/icons/rigs/engineer/helmet.dmi b/icons/clothing/rigs/ert/engineer/helmet.dmi similarity index 100% rename from mods/content/corporate/icons/rigs/engineer/helmet.dmi rename to icons/clothing/rigs/ert/engineer/helmet.dmi diff --git a/mods/content/corporate/icons/rigs/engineer/rig.dmi b/icons/clothing/rigs/ert/engineer/rig.dmi similarity index 100% rename from mods/content/corporate/icons/rigs/engineer/rig.dmi rename to icons/clothing/rigs/ert/engineer/rig.dmi diff --git a/mods/content/corporate/icons/rigs/janitor/boots.dmi b/icons/clothing/rigs/ert/janitor/boots.dmi similarity index 100% rename from mods/content/corporate/icons/rigs/janitor/boots.dmi rename to icons/clothing/rigs/ert/janitor/boots.dmi diff --git a/mods/content/corporate/icons/rigs/janitor/chest.dmi b/icons/clothing/rigs/ert/janitor/chest.dmi similarity index 100% rename from mods/content/corporate/icons/rigs/janitor/chest.dmi rename to icons/clothing/rigs/ert/janitor/chest.dmi diff --git a/mods/content/corporate/icons/rigs/janitor/gloves.dmi b/icons/clothing/rigs/ert/janitor/gloves.dmi similarity index 100% rename from mods/content/corporate/icons/rigs/janitor/gloves.dmi rename to icons/clothing/rigs/ert/janitor/gloves.dmi diff --git a/mods/content/corporate/icons/rigs/janitor/helmet.dmi b/icons/clothing/rigs/ert/janitor/helmet.dmi similarity index 100% rename from mods/content/corporate/icons/rigs/janitor/helmet.dmi rename to icons/clothing/rigs/ert/janitor/helmet.dmi diff --git a/mods/content/corporate/icons/rigs/janitor/rig.dmi b/icons/clothing/rigs/ert/janitor/rig.dmi similarity index 100% rename from mods/content/corporate/icons/rigs/janitor/rig.dmi rename to icons/clothing/rigs/ert/janitor/rig.dmi diff --git a/mods/content/corporate/icons/rigs/medic/boots.dmi b/icons/clothing/rigs/ert/medic/boots.dmi similarity index 100% rename from mods/content/corporate/icons/rigs/medic/boots.dmi rename to icons/clothing/rigs/ert/medic/boots.dmi diff --git a/mods/content/corporate/icons/rigs/medic/chest.dmi b/icons/clothing/rigs/ert/medic/chest.dmi similarity index 100% rename from mods/content/corporate/icons/rigs/medic/chest.dmi rename to icons/clothing/rigs/ert/medic/chest.dmi diff --git a/mods/content/corporate/icons/rigs/medic/gloves.dmi b/icons/clothing/rigs/ert/medic/gloves.dmi similarity index 100% rename from mods/content/corporate/icons/rigs/medic/gloves.dmi rename to icons/clothing/rigs/ert/medic/gloves.dmi diff --git a/mods/content/corporate/icons/rigs/medic/helmet.dmi b/icons/clothing/rigs/ert/medic/helmet.dmi similarity index 100% rename from mods/content/corporate/icons/rigs/medic/helmet.dmi rename to icons/clothing/rigs/ert/medic/helmet.dmi diff --git a/mods/content/corporate/icons/rigs/medic/rig.dmi b/icons/clothing/rigs/ert/medic/rig.dmi similarity index 100% rename from mods/content/corporate/icons/rigs/medic/rig.dmi rename to icons/clothing/rigs/ert/medic/rig.dmi diff --git a/mods/content/corporate/icons/rigs/security/boots.dmi b/icons/clothing/rigs/ert/security/boots.dmi similarity index 100% rename from mods/content/corporate/icons/rigs/security/boots.dmi rename to icons/clothing/rigs/ert/security/boots.dmi diff --git a/mods/content/corporate/icons/rigs/security/chest.dmi b/icons/clothing/rigs/ert/security/chest.dmi similarity index 100% rename from mods/content/corporate/icons/rigs/security/chest.dmi rename to icons/clothing/rigs/ert/security/chest.dmi diff --git a/mods/content/corporate/icons/rigs/security/gloves.dmi b/icons/clothing/rigs/ert/security/gloves.dmi similarity index 100% rename from mods/content/corporate/icons/rigs/security/gloves.dmi rename to icons/clothing/rigs/ert/security/gloves.dmi diff --git a/mods/content/corporate/icons/rigs/security/helmet.dmi b/icons/clothing/rigs/ert/security/helmet.dmi similarity index 100% rename from mods/content/corporate/icons/rigs/security/helmet.dmi rename to icons/clothing/rigs/ert/security/helmet.dmi diff --git a/mods/content/corporate/icons/rigs/security/rig.dmi b/icons/clothing/rigs/ert/security/rig.dmi similarity index 100% rename from mods/content/corporate/icons/rigs/security/rig.dmi rename to icons/clothing/rigs/ert/security/rig.dmi diff --git a/maps/antag_spawn/ert/ert.dm b/maps/antag_spawn/ert/ert.dm index 0d16a0f2a8d..0422dfdada6 100644 --- a/maps/antag_spawn/ert/ert.dm +++ b/maps/antag_spawn/ert/ert.dm @@ -59,4 +59,7 @@ /area/map_template/rescue_base/start name = "\improper Response Team Base" icon_state = "shuttlered" - base_turf = /turf/unsimulated/floor/rescue_base \ No newline at end of file + base_turf = /turf/unsimulated/floor/rescue_base + +// Separated in preparation for making ERTs into a modpack. +#include "rig.dm" \ No newline at end of file diff --git a/maps/antag_spawn/ert/ert_base.dmm b/maps/antag_spawn/ert/ert_base.dmm index 30c9701f6a8..6cc0037f9d8 100644 --- a/maps/antag_spawn/ert/ert_base.dmm +++ b/maps/antag_spawn/ert/ert_base.dmm @@ -415,9 +415,6 @@ /obj/item/flash, /turf/unsimulated/floor/dark, /area/map_template/rescue_base/base) -"bs" = ( -/turf/unsimulated/floor/vault, -/area/map_template/rescue_base/base) "bt" = ( /obj/machinery/door/airlock/centcom{ name = "Cell 2" @@ -1396,9 +1393,6 @@ /obj/structure/bed/chair/office/dark, /turf/unsimulated/floor/vault, /area/map_template/rescue_base/base) -"dP" = ( -/turf/unsimulated/floor/vault, -/area/map_template/rescue_base/base) "dQ" = ( /obj/effect/floor_decal/industrial/outline/yellow, /obj/machinery/door/airlock/external/shuttle{ @@ -1466,10 +1460,6 @@ }, /turf/unsimulated/floor/vault, /area/map_template/rescue_base/base) -"ec" = ( -/obj/structure/table/reinforced, -/turf/unsimulated/floor/vault, -/area/map_template/rescue_base/base) "ed" = ( /obj/structure/table/reinforced, /obj/item/radio/intercom{ @@ -1547,7 +1537,7 @@ "et" = ( /obj/structure/rack, /obj/item/secure_storage/briefcase, -/obj/item/clothing/head/beret/corp/centcom/captain, +/obj/item/clothing/head/beret, /turf/unsimulated/floor/vault, /area/map_template/rescue_base/base) "eu" = ( @@ -1833,8 +1823,7 @@ "eV" = ( /obj/machinery/door/blast/regular/open{ id_tag = "rescuebridge"; - name = "Cockpit Blast Shutters"; - + name = "Cockpit Blast Shutters" }, /obj/effect/wallframe_spawn/reinforced/titanium, /obj/effect/paint/blue, @@ -1843,8 +1832,7 @@ "eW" = ( /obj/machinery/door/blast/regular/open{ id_tag = "rescuedock"; - name = "Blast Shutters"; - + name = "Blast Shutters" }, /obj/effect/wallframe_spawn/reinforced/titanium, /obj/effect/paint/blue, @@ -2075,8 +2063,7 @@ /obj/machinery/door/blast/regular/open{ dir = 4; id_tag = "rescuebridge"; - name = "Cockpit Blast Shutters"; - + name = "Cockpit Blast Shutters" }, /obj/effect/wallframe_spawn/reinforced/titanium, /obj/effect/paint/blue, @@ -2135,8 +2122,7 @@ /obj/machinery/door/blast/regular/open{ dir = 4; id_tag = "rescueeva"; - name = "Blast Shutters"; - + name = "Blast Shutters" }, /obj/effect/wallframe_spawn/reinforced/titanium, /obj/effect/paint/blue, @@ -2539,8 +2525,7 @@ /obj/machinery/door/blast/regular/open{ dir = 4; id_tag = "rescuebridge"; - name = "Blast Shutters"; - + name = "Blast Shutters" }, /obj/effect/paint/blue, /turf/floor/plating, @@ -2590,8 +2575,7 @@ /obj/machinery/door/blast/regular/open{ dir = 4; id_tag = "rescueinfirm"; - name = "Blast Shutters"; - + name = "Blast Shutters" }, /obj/effect/paint/blue, /turf/floor/plating, @@ -3513,7 +3497,7 @@ ao ao dU ao -dP +ao ad ac ac @@ -4680,7 +4664,7 @@ ao ao ad cR -dP +ao dY dY eu @@ -4988,11 +4972,11 @@ ar ar ad ar -bs +ao ar ar ar -bs +ao ar ad cq @@ -5011,7 +4995,7 @@ ao ao ao ao -ec +de ad bB eN @@ -5076,7 +5060,7 @@ ao ao ao ao -ec +de ad bC eN @@ -5136,12 +5120,12 @@ ao ad ad ad -ec +de ao ao ao ao -ec +de ad bA eO @@ -5206,7 +5190,7 @@ ao ao ao ao -ec +de ad bA bB @@ -5271,7 +5255,7 @@ eq eq eq ao -ec +de ad bB bC @@ -5464,9 +5448,9 @@ ac ac ac ad -ec +de eq -ec +de ad ac ac diff --git a/mods/content/corporate/clothing/rigs/ert.dm b/maps/antag_spawn/ert/rig.dm similarity index 78% rename from mods/content/corporate/clothing/rigs/ert.dm rename to maps/antag_spawn/ert/rig.dm index 650d93c4881..353590e005f 100644 --- a/mods/content/corporate/clothing/rigs/ert.dm +++ b/maps/antag_spawn/ert/rig.dm @@ -2,7 +2,7 @@ name = "emergency response command hardsuit control module" desc = "A hardsuit used by many corporate and governmental emergency response forces. Has blue highlights. Armoured and space ready." suit_type = "emergency response command" - icon = 'mods/content/corporate/icons/rigs/commander/rig.dmi' + icon = 'icons/clothing/rigs/ert/commander/rig.dmi' chest = /obj/item/clothing/suit/space/rig/ert helmet = /obj/item/clothing/head/helmet/space/rig/ert @@ -53,20 +53,20 @@ /obj/item/clothing/head/helmet/space/rig/ert camera = /obj/machinery/camera/network/ert - icon = 'mods/content/corporate/icons/rigs/commander/helmet.dmi' + icon = 'icons/clothing/rigs/ert/commander/helmet.dmi' /obj/item/clothing/suit/space/rig/ert - icon = 'mods/content/corporate/icons/rigs/commander/chest.dmi' + icon = 'icons/clothing/rigs/ert/commander/chest.dmi' /obj/item/clothing/shoes/magboots/rig/ert - icon = 'mods/content/corporate/icons/rigs/commander/boots.dmi' + icon = 'icons/clothing/rigs/ert/commander/boots.dmi' /obj/item/clothing/gloves/rig/ert item_flags = ITEM_FLAG_THICKMATERIAL | ITEM_FLAG_NOCUFFS - icon = 'mods/content/corporate/icons/rigs/commander/gloves.dmi' + icon = 'icons/clothing/rigs/ert/commander/gloves.dmi' /obj/item/rig/ert/engineer name = "emergency response engineering hardsuit control module" desc = "A hardsuit used by many corporate and governmental emergency response forces. Has orange highlights. Armoured and space ready." suit_type = "emergency response engineer" - icon = 'mods/content/corporate/icons/rigs/engineer/rig.dmi' + icon = 'icons/clothing/rigs/ert/engineer/rig.dmi' chest = /obj/item/clothing/suit/space/rig/ert/engineer helmet = /obj/item/clothing/head/helmet/space/rig/ert/engineer @@ -82,20 +82,20 @@ ) /obj/item/clothing/head/helmet/space/rig/ert/engineer - icon = 'mods/content/corporate/icons/rigs/engineer/helmet.dmi' + icon = 'icons/clothing/rigs/ert/engineer/helmet.dmi' /obj/item/clothing/suit/space/rig/ert/engineer - icon = 'mods/content/corporate/icons/rigs/engineer/chest.dmi' + icon = 'icons/clothing/rigs/ert/engineer/chest.dmi' /obj/item/clothing/shoes/magboots/rig/ert/engineer - icon = 'mods/content/corporate/icons/rigs/engineer/boots.dmi' + icon = 'icons/clothing/rigs/ert/engineer/boots.dmi' /obj/item/clothing/gloves/rig/ert/engineer - icon = 'mods/content/corporate/icons/rigs/engineer/gloves.dmi' + icon = 'icons/clothing/rigs/ert/engineer/gloves.dmi' siemens_coefficient = 0 /obj/item/rig/ert/janitor name = "emergency response sanitation hardsuit control module" desc = "A hardsuit used by many corporate and governmental emergency response forces. Has purple highlights. Armoured and space ready." suit_type = "emergency response sanitation" - icon = 'mods/content/corporate/icons/rigs/janitor/rig.dmi' + icon = 'icons/clothing/rigs/ert/janitor/rig.dmi' chest = /obj/item/clothing/suit/space/rig/ert/janitor helmet = /obj/item/clothing/head/helmet/space/rig/ert/janitor @@ -112,19 +112,19 @@ ) /obj/item/clothing/head/helmet/space/rig/ert/janitor - icon = 'mods/content/corporate/icons/rigs/janitor/helmet.dmi' + icon = 'icons/clothing/rigs/ert/janitor/helmet.dmi' /obj/item/clothing/suit/space/rig/ert/janitor - icon = 'mods/content/corporate/icons/rigs/janitor/chest.dmi' + icon = 'icons/clothing/rigs/ert/janitor/chest.dmi' /obj/item/clothing/shoes/magboots/rig/ert/janitor - icon = 'mods/content/corporate/icons/rigs/janitor/boots.dmi' + icon = 'icons/clothing/rigs/ert/janitor/boots.dmi' /obj/item/clothing/gloves/rig/ert/janitor - icon = 'mods/content/corporate/icons/rigs/janitor/gloves.dmi' + icon = 'icons/clothing/rigs/ert/janitor/gloves.dmi' /obj/item/rig/ert/medical name = "emergency response medical hardsuit control module" desc = "A hardsuit used by many corporate and governmental emergency response forces. Has white highlights. Armoured and space ready." suit_type = "emergency response medic" - icon = 'mods/content/corporate/icons/rigs/medic/rig.dmi' + icon = 'icons/clothing/rigs/ert/medic/rig.dmi' chest = /obj/item/clothing/suit/space/rig/ert/medical helmet = /obj/item/clothing/head/helmet/space/rig/ert/medical @@ -140,19 +140,19 @@ ) /obj/item/clothing/head/helmet/space/rig/ert/medical - icon = 'mods/content/corporate/icons/rigs/medic/helmet.dmi' + icon = 'icons/clothing/rigs/ert/medic/helmet.dmi' /obj/item/clothing/suit/space/rig/ert/medical - icon = 'mods/content/corporate/icons/rigs/medic/chest.dmi' + icon = 'icons/clothing/rigs/ert/medic/chest.dmi' /obj/item/clothing/shoes/magboots/rig/ert/medical - icon = 'mods/content/corporate/icons/rigs/medic/boots.dmi' + icon = 'icons/clothing/rigs/ert/medic/boots.dmi' /obj/item/clothing/gloves/rig/ert/medical - icon = 'mods/content/corporate/icons/rigs/medic/gloves.dmi' + icon = 'icons/clothing/rigs/ert/medic/gloves.dmi' /obj/item/rig/ert/security name = "emergency response security hardsuit control module" desc = "A hardsuit used by many corporate and governmental emergency response forces. Has red highlights. Armoured and space ready." suit_type = "emergency response security" - icon = 'mods/content/corporate/icons/rigs/security/rig.dmi' + icon = 'icons/clothing/rigs/ert/security/rig.dmi' initial_modules = list( /obj/item/rig_module/ai_container, /obj/item/rig_module/maneuvering_jets, @@ -167,19 +167,19 @@ gloves = /obj/item/clothing/gloves/rig/ert/security /obj/item/clothing/head/helmet/space/rig/ert/security - icon = 'mods/content/corporate/icons/rigs/security/helmet.dmi' + icon = 'icons/clothing/rigs/ert/security/helmet.dmi' /obj/item/clothing/suit/space/rig/ert/security - icon = 'mods/content/corporate/icons/rigs/security/chest.dmi' + icon = 'icons/clothing/rigs/ert/security/chest.dmi' /obj/item/clothing/shoes/magboots/rig/ert/security - icon = 'mods/content/corporate/icons/rigs/security/boots.dmi' + icon = 'icons/clothing/rigs/ert/security/boots.dmi' /obj/item/clothing/gloves/rig/ert/security - icon = 'mods/content/corporate/icons/rigs/security/gloves.dmi' + icon = 'icons/clothing/rigs/ert/security/gloves.dmi' /obj/item/rig/ert/assetprotection name = "heavy emergency response suit control module" desc = "A heavy, modified version of a common emergency response hardsuit. Has blood red highlights. Armoured and space ready." suit_type = "heavy emergency response" - icon = 'mods/content/corporate/icons/rigs/asset_protection/rig.dmi' + icon = 'icons/clothing/rigs/ert/asset_protection/rig.dmi' armor = list( ARMOR_MELEE = ARMOR_MELEE_VERY_HIGH, ARMOR_BULLET = ARMOR_BALLISTIC_RESISTANT, @@ -209,11 +209,11 @@ ) /obj/item/clothing/head/helmet/space/rig/ert/assetprotection - icon = 'mods/content/corporate/icons/rigs/asset_protection/helmet.dmi' + icon = 'icons/clothing/rigs/ert/asset_protection/helmet.dmi' /obj/item/clothing/suit/space/rig/ert/assetprotection - icon = 'mods/content/corporate/icons/rigs/asset_protection/chest.dmi' + icon = 'icons/clothing/rigs/ert/asset_protection/chest.dmi' /obj/item/clothing/shoes/magboots/rig/ert/assetprotection - icon = 'mods/content/corporate/icons/rigs/asset_protection/boots.dmi' + icon = 'icons/clothing/rigs/ert/asset_protection/boots.dmi' /obj/item/clothing/gloves/rig/ert/assetprotection - icon = 'mods/content/corporate/icons/rigs/asset_protection/gloves.dmi' + icon = 'icons/clothing/rigs/ert/asset_protection/gloves.dmi' siemens_coefficient = 0 diff --git a/mods/content/corporate/_corporate.dme b/mods/content/corporate/_corporate.dme index 75a782ae63c..390348d3603 100644 --- a/mods/content/corporate/_corporate.dme +++ b/mods/content/corporate/_corporate.dme @@ -15,7 +15,6 @@ #include "clothing\head\ert.dm" #include "clothing\head\helmets.dm" #include "clothing\masks\rubber.dm" -#include "clothing\rigs\ert.dm" #include "clothing\suit\armour.dm" #include "clothing\suit\captain.dm" #include "clothing\suit\hoodies.dm" From 253a241f9bf5e7046b177c94cf1a414680d477dd Mon Sep 17 00:00:00 2001 From: MistakeNot4892 Date: Sat, 28 Dec 2024 13:13:09 +1100 Subject: [PATCH 09/14] Fixed copypaste error with liddables. --- code/modules/reagents/reagent_containers/_glass.dm | 3 --- code/modules/reagents/reagent_containers/beaker.dm | 3 +++ code/modules/reagents/reagent_containers/bowl.dm | 3 +++ 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/code/modules/reagents/reagent_containers/_glass.dm b/code/modules/reagents/reagent_containers/_glass.dm index 3df7ca1144f..ddaa812b4df 100644 --- a/code/modules/reagents/reagent_containers/_glass.dm +++ b/code/modules/reagents/reagent_containers/_glass.dm @@ -107,9 +107,6 @@ return TRUE return ..() -/obj/item/chems/glass/can_lid() - return FALSE - /obj/item/chems/glass/get_food_default_transfer_amount(mob/eater) return eater?.get_eaten_transfer_amount(amount_per_transfer_from_this) diff --git a/code/modules/reagents/reagent_containers/beaker.dm b/code/modules/reagents/reagent_containers/beaker.dm index 258146c77c4..d89ac9acff1 100644 --- a/code/modules/reagents/reagent_containers/beaker.dm +++ b/code/modules/reagents/reagent_containers/beaker.dm @@ -89,6 +89,9 @@ atom_flags = ATOM_FLAG_OPEN_CONTAINER material = /decl/material/solid/metal/steel +/obj/item/chems/glass/beaker/bowl/can_lid() + return FALSE + /obj/item/chems/glass/beaker/bowl/pottery material = /decl/material/solid/stone/pottery diff --git a/code/modules/reagents/reagent_containers/bowl.dm b/code/modules/reagents/reagent_containers/bowl.dm index 7c69241f516..bc54aadbaa4 100644 --- a/code/modules/reagents/reagent_containers/bowl.dm +++ b/code/modules/reagents/reagent_containers/bowl.dm @@ -9,6 +9,9 @@ volume = 30 amount_per_transfer_from_this = 5 +/obj/item/chems/glass/bowl/can_lid() + return FALSE + // Predefined soup types for mapping. /obj/item/chems/glass/bowl/mapped abstract_type = /obj/item/chems/glass/bowl/mapped From 8ef8f6857f5231d0dd7c5b162175edea1f57e3b2 Mon Sep 17 00:00:00 2001 From: MistakeNot4892 Date: Sun, 29 Dec 2024 12:42:28 +1100 Subject: [PATCH 10/14] Cleaning up attack_hand interactions. --- code/_onclick/click.dm | 19 +----- code/_onclick/other_mobs.dm | 6 ++ code/datums/ai/aggressive.dm | 60 +++++++++++-------- code/game/objects/items/__item.dm | 3 +- .../mob/living/human/human_attackhand.dm | 4 -- 5 files changed, 46 insertions(+), 46 deletions(-) diff --git a/code/_onclick/click.dm b/code/_onclick/click.dm index 7e4d29c799a..c2d4cfb5862 100644 --- a/code/_onclick/click.dm +++ b/code/_onclick/click.dm @@ -118,7 +118,7 @@ if(holding) // AI driven mobs have a melee telegraph that needs to be handled here. - if(a_intent == I_HURT && istype(A) && (!do_attack_windup_checking(A) || holding != get_active_held_item())) + if(a_intent == I_HURT && istype(A) && (!(A) || holding != get_active_held_item())) return TRUE var/resolved = holding.resolve_attackby(A, src, params) @@ -143,10 +143,6 @@ if(A.Adjacent(src)) // see adjacent.dm if(holding) - // AI driven mobs have a melee telegraph that needs to be handled here. - if(a_intent == I_HURT && istype(A) && (!do_attack_windup_checking(A) || holding != get_active_held_item())) - return TRUE - // Return 1 in attackby() to prevent afterattack() effects (when safely moving items for example) var/resolved = holding.resolve_attackby(A, src, params) if(!resolved && A && holding) @@ -217,18 +213,7 @@ if(istype(G) && G.Touch(A,1)) return TRUE - // Pick up items. - if(check_dexterity(DEXTERITY_HOLD_ITEM, silent = TRUE)) - return A.attack_hand(src) - - // TODO: some way to check if we SHOULD be doing an attack windup here; - // corgis attacking a tree, for example, will do the windup animation despite - // having no interaction or message shown at the end of it. - // AI driven mobs have a melee telegraph that needs to be handled here. - if(a_intent == I_HURT && istype(A) && !do_attack_windup_checking(A)) - return TRUE - - return FALSE + return A.attack_hand(src) /* Ranged unarmed attack: diff --git a/code/_onclick/other_mobs.dm b/code/_onclick/other_mobs.dm index 77c594dd375..49bf7f7047f 100644 --- a/code/_onclick/other_mobs.dm +++ b/code/_onclick/other_mobs.dm @@ -8,9 +8,15 @@ /atom/proc/can_interact_with_storage(user, strict = FALSE) return isliving(user) +/atom/proc/get_required_interaction_dexterity() + return DEXTERITY_NONE + /atom/proc/attack_hand(mob/user) SHOULD_CALL_PARENT(TRUE) + if(!user.check_dexterity(get_required_interaction_dexterity(), silent = TRUE)) + return FALSE + if(can_interact_with_storage(user, strict = TRUE) && storage && user.check_dexterity((DEXTERITY_HOLD_ITEM|DEXTERITY_EQUIP_ITEM), TRUE)) add_fingerprint(user) storage.open(user) diff --git a/code/datums/ai/aggressive.dm b/code/datums/ai/aggressive.dm index 9335610bcde..84296f856bf 100644 --- a/code/datums/ai/aggressive.dm +++ b/code/datums/ai/aggressive.dm @@ -92,10 +92,14 @@ return TRUE /datum/mob_controller/aggressive/proc/attack_target() + + set waitfor = FALSE + var/atom/target = get_target() if(!istype(target)) lose_target() return + if(isliving(target) && body.buckled_mob == target && (!body.faction || body.buckled_mob.faction != body.faction)) body.visible_message(SPAN_DANGER("\The [body] attempts to unseat \the [body.buckled_mob]!")) body.set_dir(pick(global.cardinal)) @@ -107,11 +111,21 @@ var/mob/living/victim = target SET_STATUS_MAX(victim, STAT_WEAK, 3) return target - if(body.Adjacent(target)) - body.a_intent = I_HURT - body.ClickOn(target) + + if(!body.Adjacent(target)) + return target + + // AI-driven mobs have a melee telegraph that needs to be handled here. + if(!body.do_attack_windup_checking(target)) + return target + + if(QDELETED(body) || body.incapacitated() || QDELETED(target)) return target + body.a_intent = I_HURT + body.ClickOn(target) + return target + /datum/mob_controller/aggressive/destroy_surroundings() if(!body.can_act()) @@ -174,27 +188,25 @@ if(!(. = ..())) return - if(!only_attack_enemies) - if(source) - set_target(source) - move_to_target(move_only = TRUE) - return - - var/list/allies - var/list/around = view(body, 7) - for(var/atom/movable/A in around) - if(A == body || !isliving(A)) - continue - var/mob/living/M = A - if(attack_same_faction || M.faction != body.faction) - add_enemy(M) - else if(istype(M.ai)) - LAZYADD(allies, M.ai) - - var/list/enemies = get_enemies() - if(LAZYLEN(enemies) && LAZYLEN(allies)) - for(var/datum/mob_controller/ally as anything in allies) - ally.add_enemies(enemies) + if(only_attack_enemies) + var/list/allies + var/list/around = view(body, 7) + for(var/atom/movable/A in around) + if(A == body || !isliving(A)) + continue + var/mob/living/M = A + if(attack_same_faction || M.faction != body.faction) + add_enemy(M) + else if(istype(M.ai)) + LAZYADD(allies, M.ai) + var/list/enemies = get_enemies() + if(LAZYLEN(enemies) && LAZYLEN(allies)) + for(var/datum/mob_controller/ally as anything in allies) + ally.add_enemies(enemies) + + if(source) + set_target(source) + move_to_target(move_only = TRUE) /datum/mob_controller/aggressive/move_to_target(var/move_only = FALSE) if(!body.can_act()) diff --git a/code/game/objects/items/__item.dm b/code/game/objects/items/__item.dm index f5b5cc7eff2..e86feb7173b 100644 --- a/code/game/objects/items/__item.dm +++ b/code/game/objects/items/__item.dm @@ -96,7 +96,8 @@ var/paint_verb /// What dexterity is required to attack with this item? - var/needs_attack_dexterity = DEXTERITY_WIELD_ITEM + var/needs_attack_dexterity = DEXTERITY_WIELD_ITEM + var/needs_interaction_dexterity = DEXTERITY_HOLD_ITEM /// Vars relating to wielding the item with two or more hands. var/can_be_twohanded = FALSE diff --git a/code/modules/mob/living/human/human_attackhand.dm b/code/modules/mob/living/human/human_attackhand.dm index 3ad1462e59a..68fd260a161 100644 --- a/code/modules/mob/living/human/human_attackhand.dm +++ b/code/modules/mob/living/human/human_attackhand.dm @@ -125,10 +125,6 @@ to_chat(user, SPAN_WARNING("You can't attack while incapacitated.")) return TRUE - // AI driven mobs have a melee telegraph that needs to be handled here. - if(user.a_intent == I_HURT && !user.do_attack_windup_checking(src)) - return TRUE - if(!ishuman(user)) attack_generic(user, rand(1,3), "punched") return TRUE From b88309ea111b2f1a7c96d9e40b4b46d26132d0a8 Mon Sep 17 00:00:00 2001 From: MistakeNot4892 Date: Sun, 29 Dec 2024 13:33:39 +1100 Subject: [PATCH 11/14] Buffs hook hand dexterity. --- .../organs/prosthetics/prosthetics_manufacturer_models.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/organs/prosthetics/prosthetics_manufacturer_models.dm b/code/modules/organs/prosthetics/prosthetics_manufacturer_models.dm index ad3b2c5e9ea..14f0e7bdac2 100644 --- a/code/modules/organs/prosthetics/prosthetics_manufacturer_models.dm +++ b/code/modules/organs/prosthetics/prosthetics_manufacturer_models.dm @@ -10,7 +10,7 @@ icon_base = 'icons/mob/human_races/cyberlimbs/morgan/morgan_main.dmi' modifier_string = "wooden" hardiness = 0.75 - manual_dexterity = DEXTERITY_SIMPLE_MACHINES + manual_dexterity = DEXTERITY_SIMPLE_MACHINES | DEXTERITY_HOLD_ITEM | DEXTERITY_EQUIP_ITEM | DEXTERITY_KEYBOARDS | DEXTERITY_GRAPPLE movement_slowdown = 1 is_robotic = FALSE modular_limb_tier = MODULAR_BODYPART_ANYWHERE From d8924ed40dbbd361365a5deea0986a0e64934a7c Mon Sep 17 00:00:00 2001 From: MistakeNot4892 Date: Sun, 29 Dec 2024 13:38:39 +1100 Subject: [PATCH 12/14] Attempts to fix cleanbots becoming fixated on 1 bit of dirt they can't reach. --- code/modules/mob/living/bot/bot.dm | 8 ++-- code/modules/mob/living/bot/cleanbot.dm | 41 +++++++++--------- code/modules/mob/living/bot/farmbot.dm | 10 ++--- code/modules/mob/living/bot/floorbot.dm | 12 +++--- code/modules/mob/living/bot/medibot.dm | 57 +++++++++++++------------ code/modules/mob/living/bot/mulebot.dm | 2 +- code/modules/mob/living/bot/secbot.dm | 4 +- 7 files changed, 69 insertions(+), 65 deletions(-) diff --git a/code/modules/mob/living/bot/bot.dm b/code/modules/mob/living/bot/bot.dm index fab8219c169..933e58b3afb 100644 --- a/code/modules/mob/living/bot/bot.dm +++ b/code/modules/mob/living/bot/bot.dm @@ -283,12 +283,12 @@ /mob/living/bot/proc/lookForTargets() return -/mob/living/bot/proc/confirmTarget(var/atom/A) - if(A.invisibility >= INVISIBILITY_LEVEL_ONE) +/mob/living/bot/proc/confirmTarget(atom/target) + if(target.invisibility >= INVISIBILITY_LEVEL_ONE) return 0 - if(A in ignore_list) + if(target in ignore_list) return 0 - if(!A.loc) + if(!target.loc) return 0 return 1 diff --git a/code/modules/mob/living/bot/cleanbot.dm b/code/modules/mob/living/bot/cleanbot.dm index e989ba53b32..95fac4ce948 100644 --- a/code/modules/mob/living/bot/cleanbot.dm +++ b/code/modules/mob/living/bot/cleanbot.dm @@ -1,5 +1,5 @@ /mob/living/bot/cleanbot - name = "Cleanbot" + name = "cleanbot" desc = "A little cleaning robot, he looks so excited!" icon = 'icons/mob/bot/cleanbot.dmi' icon_state = "cleanbot0" @@ -35,44 +35,47 @@ ignore_list -= g /mob/living/bot/cleanbot/lookForTargets() - for(var/obj/effect/decal/cleanable/D in view(world.view + 1, src)) - if(confirmTarget(D)) - target = D + for(var/obj/effect/decal/cleanable/decal in view(world.view + 1, src)) + if(confirmTarget(decal)) + target = decal playsound(src, 'sound/machines/boop1.ogg', 30) return -/mob/living/bot/cleanbot/confirmTarget(var/obj/effect/decal/cleanable/D) - if(!..()) - return 0 - for(var/T in target_types) - if(istype(D, T)) - return 1 - return 0 +/mob/living/bot/cleanbot/confirmTarget(atom/target) + . = ..() + if(.) + var/turf/decal_turf = get_turf(target) + if(!istype(decal_turf) || decal_turf.contains_dense_objects()) + return FALSE // Stop trying to clean under full-tile windows. + if(istype(target, /obj/effect/decal/cleanable/dirt)) + var/obj/effect/decal/cleanable/dirt/dirt = target + return dirt.dirt_amount >= 50 // Stop trying to clean invisible dirt. + return is_type_in_list(target, target_types) /mob/living/bot/cleanbot/handleAdjacentTarget() if(get_turf(target) == src.loc) UnarmedAttack(target, TRUE) -/mob/living/bot/cleanbot/UnarmedAttack(var/obj/effect/decal/cleanable/D, var/proximity) +/mob/living/bot/cleanbot/UnarmedAttack(var/obj/effect/decal/cleanable/decal, var/proximity) . = ..() if(.) return - if(!istype(D)) + if(!istype(decal)) return TRUE - if(D.loc != loc) + if(decal.loc != loc) return FALSE busy = 1 - visible_message("\The [src] begins to clean up \the [D].") + visible_message("\The [src] begins to clean up \the [decal].") update_icon() - var/cleantime = istype(D, /obj/effect/decal/cleanable/dirt) ? 10 : 50 - if(do_after(src, cleantime, progress = 0) && !QDELETED(D)) - if(D == target) + var/cleantime = istype(decal, /obj/effect/decal/cleanable/dirt) ? 10 : 50 + if(do_after(src, cleantime, progress = 0) && !QDELETED(decal)) + if(decal == target) target = null - qdel(D) + qdel(decal) playsound(src, 'sound/machines/boop2.ogg', 30) busy = 0 update_icon() diff --git a/code/modules/mob/living/bot/farmbot.dm b/code/modules/mob/living/bot/farmbot.dm index 86a8a941189..5244a343d74 100644 --- a/code/modules/mob/living/bot/farmbot.dm +++ b/code/modules/mob/living/bot/farmbot.dm @@ -240,21 +240,21 @@ if(prob(50)) new /obj/item/robot_parts/l_arm(my_turf) -/mob/living/bot/farmbot/confirmTarget(var/atom/targ) +/mob/living/bot/farmbot/confirmTarget(atom/target) if(!..()) return 0 - if(emagged && ishuman(targ)) - if(targ in view(world.view, src)) + if(emagged && ishuman(target)) + if(target in view(world.view, src)) return 1 return 0 - if(istype(targ, /obj/structure/hygiene/sink)) + if(istype(target, /obj/structure/hygiene/sink)) if(!tank || tank.reagents.total_volume >= tank.reagents.maximum_volume) return 0 return 1 - var/obj/machinery/portable_atmospherics/hydroponics/tray = targ + var/obj/machinery/portable_atmospherics/hydroponics/tray = target if(!istype(tray)) return 0 diff --git a/code/modules/mob/living/bot/floorbot.dm b/code/modules/mob/living/bot/floorbot.dm index b772273fd66..23125250d07 100644 --- a/code/modules/mob/living/bot/floorbot.dm +++ b/code/modules/mob/living/bot/floorbot.dm @@ -109,23 +109,23 @@ target = S return -/mob/living/bot/floorbot/confirmTarget(var/atom/A) // The fact that we do some checks twice may seem confusing but remember that the bot's settings may be toggled while it's moving and we want them to stop in that case +/mob/living/bot/floorbot/confirmTarget(atom/target) // The fact that we do some checks twice may seem confusing but remember that the bot's settings may be toggled while it's moving and we want them to stop in that case anchored = FALSE if(!..()) return 0 - if(istype(A, /obj/item/stack/tile/floor)) + if(istype(target, /obj/item/stack/tile/floor)) return (amount < maxAmount && eattiles) - if(istype(A, /obj/item/stack/material)) - var/obj/item/stack/material/S = A + if(istype(target, /obj/item/stack/material)) + var/obj/item/stack/material/S = target if(S.material?.type == /decl/material/solid/metal/steel) return (amount < maxAmount && maketiles) - if(A.loc.name == "Space") + if(target.loc.name == "Space") return 0 - var/turf/floor/T = A + var/turf/floor/T = target if(istype(T)) if(emagged) return 1 diff --git a/code/modules/mob/living/bot/medibot.dm b/code/modules/mob/living/bot/medibot.dm index 8084e5eaaeb..8ba09af58d3 100644 --- a/code/modules/mob/living/bot/medibot.dm +++ b/code/modules/mob/living/bot/medibot.dm @@ -78,35 +78,35 @@ /mob/living/bot/medbot/lookForTargets() if(is_tipped) // Don't look for targets if we're incapacitated! return - for(var/mob/living/human/H in view(7, src)) // Time to find a patient! - if(confirmTarget(H)) - target = H + for(var/mob/living/human/patient in view(7, src)) // Time to find a patient! + if(confirmTarget(patient)) + target = patient if(last_newpatient_speak + 300 < world.time && vocal) if(vocal) var/message_options = list( - "Hey, [H.name]! Hold on, I'm coming." = 'sound/voice/medbot/mcoming.ogg', - "Wait [H.name]! I want to help!" = 'sound/voice/medbot/mhelp.ogg', - "[H.name], you appear to be injured!" = 'sound/voice/medbot/minjured.ogg' + "Hey, [patient.name]! Hold on, I'm coming." = 'sound/voice/medbot/mcoming.ogg', + "Wait [patient.name]! I want to help!" = 'sound/voice/medbot/mhelp.ogg', + "[patient.name], you appear to be injured!" = 'sound/voice/medbot/minjured.ogg' ) var/message = pick(message_options) say(message) playsound(src, message_options[message], 50, 0) - custom_emote(1, "points at [H.name].") + custom_emote(1, "points at [patient.name].") last_newpatient_speak = world.time break -/mob/living/bot/medbot/UnarmedAttack(var/mob/living/human/H, var/proximity) +/mob/living/bot/medbot/UnarmedAttack(var/mob/living/human/target, var/proximity) . = ..() if(.) return - if(!on || !istype(H)) + if(!on || !istype(target)) return FALSE if(busy) return TRUE - if(H.stat == DEAD) + if(target.stat == DEAD) if(vocal) var/static/death_messages = list( "No! Stay with me!" = 'sound/voice/medbot/mno.ogg', @@ -117,7 +117,7 @@ say(message) playsound(src, death_messages[message], 50, 0) - var/t = confirmTarget(H) + var/t = confirmTarget(target) if(!t) if(vocal) var/static/possible_messages = list( @@ -130,18 +130,18 @@ playsound(src, possible_messages[message], 50, 0) icon_state = "medibots" - visible_message("[src] is trying to inject [H]!") + visible_message("[src] is trying to inject [target]!") if(declare_treatment) var/area/location = get_area(src) - broadcast_medical_hud_message("[src] is treating [H] in [location.proper_name]", src) + broadcast_medical_hud_message("[src] is treating [target] in [location.proper_name]", src) busy = 1 update_icon() - if(do_mob(src, H, 30)) + if(do_mob(src, target, 30)) if(t == 1) - reagent_glass.reagents.trans_to_mob(H, injection_amount, CHEM_INJECT) + reagent_glass.reagents.trans_to_mob(target, injection_amount, CHEM_INJECT) else - H.add_to_reagents(t, injection_amount) - visible_message("[src] injects [H] with the syringe!") + target.add_to_reagents(t, injection_amount) + visible_message("[src] injects [target] with the syringe!") busy = 0 update_icon() return TRUE @@ -297,33 +297,34 @@ reagent_glass.forceMove(my_turf) reagent_glass = null -/mob/living/bot/medbot/confirmTarget(var/mob/living/human/H) - if(!..()) - return 0 +/mob/living/bot/medbot/confirmTarget(atom/target) + if(!(. = ..())) + return - if(H.stat == DEAD) // He's dead, Jim - return 0 + var/mob/living/human/patient = target + if(!istype(patient) || patient.stat == DEAD) // He's dead, Jim + return FALSE if(emagged) return treatment_emag // If they're injured, we're using a beaker, and they don't have on of the chems in the beaker - if(reagent_glass && use_beaker && ((H.get_damage(BRUTE) >= heal_threshold) || (H.get_damage(TOX) >= heal_threshold) || (H.get_damage(TOX) >= heal_threshold) || (H.get_damage(OXY) >= (heal_threshold + 15)))) + if(reagent_glass && use_beaker && ((patient.get_damage(BRUTE) >= heal_threshold) || (patient.get_damage(TOX) >= heal_threshold) || (patient.get_damage(TOX) >= heal_threshold) || (patient.get_damage(OXY) >= (heal_threshold + 15)))) for(var/R in reagent_glass.reagents.reagent_volumes) - if(!H.reagents.has_reagent(R)) + if(!patient.reagents.has_reagent(R)) return 1 continue - if((H.get_damage(BRUTE) >= heal_threshold) && (!H.reagents.has_reagent(treatment_brute))) + if((patient.get_damage(BRUTE) >= heal_threshold) && (!patient.reagents.has_reagent(treatment_brute))) return treatment_brute //If they're already medicated don't bother! - if((H.get_damage(OXY) >= (15 + heal_threshold)) && (!H.reagents.has_reagent(treatment_oxy))) + if((patient.get_damage(OXY) >= (15 + heal_threshold)) && (!patient.reagents.has_reagent(treatment_oxy))) return treatment_oxy - if((H.get_damage(BURN) >= heal_threshold) && (!H.reagents.has_reagent(treatment_fire))) + if((patient.get_damage(BURN) >= heal_threshold) && (!patient.reagents.has_reagent(treatment_fire))) return treatment_fire - if((H.get_damage(TOX) >= heal_threshold) && (!H.reagents.has_reagent(treatment_tox))) + if((patient.get_damage(TOX) >= heal_threshold) && (!patient.reagents.has_reagent(treatment_tox))) return treatment_tox /mob/living/bot/medbot/proc/tip_over(mob/user) diff --git a/code/modules/mob/living/bot/mulebot.dm b/code/modules/mob/living/bot/mulebot.dm index bb9cf31e58e..c70a617e2c1 100644 --- a/code/modules/mob/living/bot/mulebot.dm +++ b/code/modules/mob/living/bot/mulebot.dm @@ -178,7 +178,7 @@ target = home targetName = "Home" -/mob/living/bot/mulebot/confirmTarget() +/mob/living/bot/mulebot/confirmTarget(atom/target) return 1 /mob/living/bot/mulebot/calcTargetPath() diff --git a/code/modules/mob/living/bot/secbot.dm b/code/modules/mob/living/bot/secbot.dm index 2e47d627b53..8d6737b9347 100644 --- a/code/modules/mob/living/bot/secbot.dm +++ b/code/modules/mob/living/bot/secbot.dm @@ -157,10 +157,10 @@ return ..() -/mob/living/bot/secbot/confirmTarget(var/atom/A) +/mob/living/bot/secbot/confirmTarget(atom/target) if(!..()) return 0 - return (check_threat(A) >= SECBOT_THREAT_ARREST) + return (check_threat(target) >= SECBOT_THREAT_ARREST) /mob/living/bot/secbot/lookForTargets() for(var/mob/living/M in view(src)) From bda2770399c4ffc61f5c05a2af3262f95be27016 Mon Sep 17 00:00:00 2001 From: MistakeNot4892 Date: Sun, 29 Dec 2024 13:50:10 +1100 Subject: [PATCH 13/14] Enables melting of items inside stomachs. --- code/_onclick/click.dm | 5 ----- code/game/objects/items/_item_melting.dm | 26 +++++++++++++++--------- 2 files changed, 16 insertions(+), 15 deletions(-) diff --git a/code/_onclick/click.dm b/code/_onclick/click.dm index c2d4cfb5862..4c2f9a9c03b 100644 --- a/code/_onclick/click.dm +++ b/code/_onclick/click.dm @@ -116,11 +116,6 @@ var/sdepth = A.storage_depth(src) if((!isturf(A) && A == loc) || (sdepth != -1 && sdepth <= 1)) if(holding) - - // AI driven mobs have a melee telegraph that needs to be handled here. - if(a_intent == I_HURT && istype(A) && (!(A) || holding != get_active_held_item())) - return TRUE - var/resolved = holding.resolve_attackby(A, src, params) if(!resolved && A && holding) holding.afterattack(A, src, 1, params) // 1 indicates adjacency diff --git a/code/game/objects/items/_item_melting.dm b/code/game/objects/items/_item_melting.dm index d835d7d1c7d..318d8f28823 100644 --- a/code/game/objects/items/_item_melting.dm +++ b/code/game/objects/items/_item_melting.dm @@ -16,16 +16,22 @@ try_burn_wearer(holder, holder.get_equipped_slot_for_item(src)) // Temp gate until generalized temperature-based melting works properly. - if(istype(loc, /obj/item/chems/crucible)) - // Check if this is meltable at all. - var/list/meltable_materials - for(var/mat in matter) - var/decl/material/melt_material = GET_DECL(mat) - if(!isnull(melt_material.melting_point) && temperature >= melt_material.melting_point) - LAZYDISTINCTADD(meltable_materials, melt_material) - if(length(meltable_materials)) - . = null // Don't return PROCESS_KILL here. - handle_melting(meltable_materials) + var/static/list/_melting_containers = list( + /obj/item/chems/crucible, + /obj/item/organ/internal/stomach + ) + if(!is_type_in_list(loc, _melting_containers)) + return + + // Check if this is meltable at all. + var/list/meltable_materials + for(var/mat in matter) + var/decl/material/melt_material = GET_DECL(mat) + if(!isnull(melt_material.melting_point) && temperature >= melt_material.melting_point) + LAZYDISTINCTADD(meltable_materials, melt_material) + if(length(meltable_materials)) + . = null // Don't return PROCESS_KILL here. + handle_melting(meltable_materials) /obj/item/place_melted_product(list/meltable_materials) From e6bc4446f4c1a187edfba2e31fbca319f9d0b672 Mon Sep 17 00:00:00 2001 From: MistakeNot4892 Date: Mon, 30 Dec 2024 14:46:44 +1100 Subject: [PATCH 14/14] Cleaning up floorbot logic. --- code/modules/mob/living/bot/floorbot.dm | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/code/modules/mob/living/bot/floorbot.dm b/code/modules/mob/living/bot/floorbot.dm index 23125250d07..7f0e4f67541 100644 --- a/code/modules/mob/living/bot/floorbot.dm +++ b/code/modules/mob/living/bot/floorbot.dm @@ -122,15 +122,11 @@ if(S.material?.type == /decl/material/solid/metal/steel) return (amount < maxAmount && maketiles) - if(target.loc.name == "Space") - return 0 + var/turf/floor/my_turf = target + if(!istype(my_turf) || (isturf(my_turf) && my_turf.is_open())) + return FALSE - var/turf/floor/T = target - if(istype(T)) - if(emagged) - return 1 - else - return (amount && (T.is_floor_damaged() || (improvefloors && !T.has_flooring()))) + return emagged || (amount && (my_turf.is_floor_damaged() || (improvefloors && !my_turf.has_flooring()))) /mob/living/bot/floorbot/UnarmedAttack(var/atom/A, var/proximity)