diff --git a/_maps/RandomRuins/IceRuins/bubberstation/icemoon_persistence.dmm b/_maps/RandomRuins/IceRuins/bubberstation/icemoon_persistence.dmm index 89716ee92e4..7687e1d6b1e 100644 --- a/_maps/RandomRuins/IceRuins/bubberstation/icemoon_persistence.dmm +++ b/_maps/RandomRuins/IceRuins/bubberstation/icemoon_persistence.dmm @@ -12852,7 +12852,6 @@ /obj/item/paper/crumpled/retired_designs, /obj/item/paper/crumpled/rbmk2, /obj/item/paper/requisition, -/obj/item/paper/dark_matteor_summoning, /obj/item/paper/default_lawset_list, /turf/open/floor/iron/smooth, /area/ruin/space/has_grav/bubbers/persistance/sci/rnd) @@ -15106,7 +15105,6 @@ }, /obj/structure/noticeboard/directional/north, /obj/structure/table/reinforced/plastitaniumglass, -/obj/item/paper/dark_matteor_summoning, /obj/item/paper/crumpled/muddy/fluff/cannon_instructions, /obj/item/paper/crumpled/retired_designs, /obj/item/paper/crumpled/plap, diff --git a/_maps/RandomRuins/IceRuins/icemoon_underground_syndielab.dmm b/_maps/RandomRuins/IceRuins/icemoon_underground_syndielab.dmm index 8a3b8d7a004..195c9677f6d 100644 --- a/_maps/RandomRuins/IceRuins/icemoon_underground_syndielab.dmm +++ b/_maps/RandomRuins/IceRuins/icemoon_underground_syndielab.dmm @@ -245,9 +245,6 @@ /obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, /turf/open/floor/mineral/plastitanium/red, /area/ruin/syndielab) -"oA" = ( -/turf/open/floor/iron/dark/textured, -/area/ruin/syndielab) "oY" = ( /obj/effect/mapping_helpers/apc/syndicate_access, /obj/effect/mapping_helpers/apc/full_charge, @@ -1082,7 +1079,7 @@ Xt Xt AR Jc -oA +ey FJ AR qC diff --git a/_maps/RandomRuins/LavaRuins/bubberstation/lavaland_persistence.dmm b/_maps/RandomRuins/LavaRuins/bubberstation/lavaland_persistence.dmm index c1100d3271a..d9266152d90 100644 --- a/_maps/RandomRuins/LavaRuins/bubberstation/lavaland_persistence.dmm +++ b/_maps/RandomRuins/LavaRuins/bubberstation/lavaland_persistence.dmm @@ -7676,7 +7676,6 @@ /obj/item/paper/crumpled/retired_designs, /obj/item/paper/crumpled/rbmk2, /obj/item/paper/requisition, -/obj/item/paper/dark_matteor_summoning, /obj/item/paper/default_lawset_list, /turf/open/floor/iron/smooth, /area/ruin/space/has_grav/bubbers/persistance/sci/rnd) @@ -11524,7 +11523,6 @@ }, /obj/structure/noticeboard/directional/north, /obj/structure/table/reinforced/plastitaniumglass, -/obj/item/paper/dark_matteor_summoning, /obj/item/paper/crumpled/muddy/fluff/cannon_instructions, /obj/item/paper/crumpled/retired_designs, /obj/item/paper/crumpled/plap, diff --git a/_maps/RandomRuins/SpaceRuins/skyrat/prisonshuttle.dmm b/_maps/RandomRuins/SpaceRuins/skyrat/prisonshuttle.dmm index 0742ae85d7b..ae368666c28 100644 --- a/_maps/RandomRuins/SpaceRuins/skyrat/prisonshuttle.dmm +++ b/_maps/RandomRuins/SpaceRuins/skyrat/prisonshuttle.dmm @@ -89,23 +89,23 @@ /area/ruin/space/has_grav/powered/prison_shuttle) "is" = ( /obj/structure/rack, -/obj/item/gun/ballistic/automatic/surplus, -/obj/item/gun/ballistic/automatic/surplus{ +/obj/item/gun/ballistic/rifle/sks, +/obj/item/gun/ballistic/rifle/sks{ pixel_y = -7 }, -/obj/item/ammo_box/magazine/sr10mm{ +/obj/item/ammo_box/strilka310{ pixel_x = 6; pixel_y = 9 }, -/obj/item/ammo_box/magazine/sr10mm{ +/obj/item/ammo_box/strilka310{ pixel_x = 1; pixel_y = 9 }, -/obj/item/ammo_box/magazine/sr10mm{ +/obj/item/ammo_box/strilka310{ pixel_x = -4; pixel_y = 9 }, -/obj/item/ammo_box/magazine/sr10mm{ +/obj/item/ammo_box/strilka310{ pixel_x = -9; pixel_y = 9 }, diff --git a/_maps/RandomRuins/SpaceRuins/skyrat/salvagepost.dmm b/_maps/RandomRuins/SpaceRuins/skyrat/salvagepost.dmm index 8333af89361..d6c152af69d 100644 --- a/_maps/RandomRuins/SpaceRuins/skyrat/salvagepost.dmm +++ b/_maps/RandomRuins/SpaceRuins/skyrat/salvagepost.dmm @@ -371,10 +371,6 @@ /obj/item/card/id/away/old/salvagepod, /turf/template_noop, /area/template_noop) -"rM" = ( -/obj/effect/decal/cleanable/glass, -/turf/template_noop, -/area/template_noop) "rP" = ( /obj/machinery/power/shuttle_engine/large{ dir = 4 @@ -395,10 +391,6 @@ /obj/item/stack/sheet/iron/five, /turf/open/floor/plating/airless, /area/template_noop) -"se" = ( -/obj/effect/decal/cleanable/generic, -/turf/template_noop, -/area/template_noop) "ss" = ( /obj/structure/lattice/catwalk, /turf/template_noop, @@ -974,10 +966,6 @@ "Uz" = ( /turf/closed/wall, /area/ruin/powered) -"Vf" = ( -/obj/effect/decal/cleanable/generic, -/turf/open/floor/plating/airless, -/area/template_noop) "VF" = ( /obj/item/stack/sheet/mineral/titanium{ amount = 5 @@ -2258,7 +2246,7 @@ Eu PD LR yQ -se +Eu Eu QC PD @@ -2358,7 +2346,7 @@ Eu Eu Eu Eu -se +Eu Eu Eu Eu @@ -2512,7 +2500,7 @@ oW Eu Eu Eu -rM +Eu Eu uc Eu @@ -2569,12 +2557,12 @@ Eu Eu mV mm -se -Vf +Eu +vn vn vn sc -Vf +vn PD Eu Eu @@ -2615,7 +2603,7 @@ oW oW Eu Eu -rM +Eu PD Eu Eu @@ -2723,7 +2711,7 @@ rR PD PD Eu -se +Eu Eu ZF PB diff --git a/_maps/map_files/BoxStation/BoxStation.dmm b/_maps/map_files/BoxStation/BoxStation.dmm index 1420c399bee..0a04910dc77 100644 --- a/_maps/map_files/BoxStation/BoxStation.dmm +++ b/_maps/map_files/BoxStation/BoxStation.dmm @@ -46339,12 +46339,6 @@ /obj/structure/chair/sofa/bench/left, /turf/open/floor/iron/smooth_large, /area/station/hallway/secondary/service) -"kPj" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 4 - }, -/turf/open/floor/engine, -/area/station/engineering/supermatter) "kPm" = ( /obj/machinery/airalarm/directional/north, /obj/effect/mapping_helpers/airalarm/tlv_no_checks, @@ -96833,7 +96827,7 @@ cqj cSG crb cru -kPj +cEx cEx cEx cAP diff --git a/_maps/map_files/biodome/biodome.dmm b/_maps/map_files/biodome/biodome.dmm index c2f9cd5f82b..36ea4ad4802 100644 --- a/_maps/map_files/biodome/biodome.dmm +++ b/_maps/map_files/biodome/biodome.dmm @@ -44714,16 +44714,6 @@ /obj/machinery/firealarm/directional/west, /turf/open/floor/iron/smooth_half, /area/station/security/brig) -"plF" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/yellow/line, -/turf/open/floor/iron, -/area/station/hallway/primary/central/aft) "plG" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 8 @@ -48734,16 +48724,6 @@ /obj/structure/sign/poster/contraband/random/directional/north, /turf/open/misc/asteroid, /area/station/cargo/miningdock) -"qIG" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/yellow/arrow_cw, -/turf/open/floor/iron, -/area/station/hallway/primary/central/aft) "qIL" = ( /obj/machinery/firealarm/directional/south, /obj/effect/turf_decal/siding/dark/end{ @@ -53728,7 +53708,6 @@ /turf/open/floor/stone, /area/station/biodome) "sps" = ( -/obj/item/paper/calling_card, /turf/open/misc/asteroid/airless, /area/station/asteroid) "sqa" = ( @@ -63183,12 +63162,6 @@ "vJH" = ( /turf/closed/wall, /area/station/command/heads_quarters/qm) -"vJN" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 1 - }, -/turf/open/floor/engine, -/area/station/engineering/supermatter) "vJS" = ( /obj/structure/closet/secure_closet/personal{ anchored = 1 @@ -108422,7 +108395,7 @@ ppF tIT hiO aiH -vJN +qvF piZ esB pSY @@ -171868,7 +171841,7 @@ fQs ctJ sXp lnK -plF +fWN xPs jAa yhy @@ -172125,7 +172098,7 @@ fQs ctJ sXp lnK -plF +fWN uCA jAa qEN @@ -172382,7 +172355,7 @@ fQs ctJ sXp lnK -plF +fWN pPI jAa tfv @@ -172896,7 +172869,7 @@ fQs ctJ sXp lnK -plF +fWN igV jAa nPx @@ -173410,7 +173383,7 @@ fQs pEf jpN lnK -plF +fWN lBt jAa eZE @@ -174952,7 +174925,7 @@ lQM fKP hMD jnx -qIG +nrz dCe jAa vFw diff --git a/_maps/map_files/moonstation/moonstation.dmm b/_maps/map_files/moonstation/moonstation.dmm index 27d21c110e4..0def9ca31dd 100644 --- a/_maps/map_files/moonstation/moonstation.dmm +++ b/_maps/map_files/moonstation/moonstation.dmm @@ -56244,15 +56244,6 @@ /obj/machinery/firealarm/directional/north, /turf/open/floor/carpet, /area/station/security/detectives_office) -"pwc" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/terminal/lobby) "pwe" = ( /obj/machinery/pipedispenser/disposal/transit_tube, /obj/effect/turf_decal/tile/yellow/fourcorners, @@ -221691,7 +221682,7 @@ dzW twx vPx rAt -pwc +goy iNo iNo fHZ diff --git a/code/__HELPERS/roundend.dm b/code/__HELPERS/roundend.dm index 97fbbb6dffb..1a4c6ab100c 100644 --- a/code/__HELPERS/roundend.dm +++ b/code/__HELPERS/roundend.dm @@ -258,8 +258,9 @@ GLOBAL_LIST_INIT(achievements_unlocked, list()) if(length(CONFIG_GET(keyed_list/cross_server))) send_news_report() */ - send2chat("The current round has ended. Please standby for your shift interlude Nanotrasen News Network's report!", CONFIG_GET(string/channel_announce_end_game)) - send2chat(send_news_report(), CONFIG_GET(string/channel_announce_end_game)) + for(var/channel_tag in CONFIG_GET(str_list/channel_announce_end_game)) + send2chat("The current round has ended. Please standby for your shift interlude Nanotrasen News Network's report!", channel_tag) + send2chat(send_news_report(), channel_tag) //SKYRAT EDIT - END CHECK_TICK diff --git a/code/controllers/subsystem/processing/quirks.dm b/code/controllers/subsystem/processing/quirks.dm index 13b41ad9586..3df4e086265 100644 --- a/code/controllers/subsystem/processing/quirks.dm +++ b/code/controllers/subsystem/processing/quirks.dm @@ -103,8 +103,10 @@ PROCESSING_SUBSYSTEM_DEF(quirks) if(initial(quirk_type.erp_quirk) && CONFIG_GET(flag/disable_erp_preferences)) continue // Hidden quirks aren't visible to TGUI or the player + #if !defined(UNIT_TESTS) if (initial(quirk_type.hidden_quirk)) continue + #endif // SKYRAT EDIT ADDITION END quirks[initial(quirk_type.name)] = quirk_type diff --git a/code/controllers/subsystem/sprite_accessories.dm b/code/controllers/subsystem/sprite_accessories.dm index 57a7aa1d041..20cc2e7aaac 100644 --- a/code/controllers/subsystem/sprite_accessories.dm +++ b/code/controllers/subsystem/sprite_accessories.dm @@ -67,6 +67,7 @@ SUBSYSTEM_DEF(accessories) // just 'accessories' for brevity // SKYRAT EDIT ADDITION START - Customization var/list/lizard_markings_list var/list/tails_list_monkey + var/list/tails_list_xeno var/list/tails_list_fish var/list/caps_list var/list/moth_wings_list diff --git a/code/datums/components/riding/riding_mob.dm b/code/datums/components/riding/riding_mob.dm index 23e70cf7a6d..fb88b97606d 100644 --- a/code/datums/components/riding/riding_mob.dm +++ b/code/datums/components/riding/riding_mob.dm @@ -271,6 +271,7 @@ /datum/component/riding/creature/human/get_rider_offsets_and_layers(pass_index, mob/offsetter) var/mob/living/carbon/human/seat = parent +/* BUBBER EDIT CHANGE BEGIN - Oversized Overhaul, Taur riding // fireman carry if(seat.buckle_lying) return list( @@ -286,6 +287,36 @@ TEXT_EAST = list(-6, 8, MOB_BELOW_PIGGYBACK_LAYER), TEXT_WEST = list( 6, 8, MOB_BELOW_PIGGYBACK_LAYER), ) +*/ + // fireman carry + if(seat.buckle_lying) + return HAS_TRAIT(seat, TRAIT_OVERSIZED) ? list( + TEXT_NORTH = list(0, OVERSIZED_OFFSET), + TEXT_SOUTH = list(0, OVERSIZED_OFFSET), + TEXT_EAST = list(0, OVERSIZED_OFFSET), + TEXT_WEST = list(0, OVERSIZED_OFFSET), + ) : list( + TEXT_NORTH = list(0, REGULAR_OFFSET), + TEXT_SOUTH = list(0, REGULAR_OFFSET), + TEXT_EAST = list(0, REGULAR_OFFSET), + TEXT_WEST = list(0, REGULAR_OFFSET), + ) + else if(!(ride_check_flags & RIDING_TAUR)) // piggyback + return HAS_TRAIT(seat, TRAIT_OVERSIZED) ? list( + TEXT_NORTH = list(0, OVERSIZED_OFFSET), + TEXT_SOUTH = list(0, OVERSIZED_OFFSET), + TEXT_EAST = list(-OVERSIZED_SIDE_OFFSET, OVERSIZED_OFFSET), + TEXT_WEST = list(OVERSIZED_SIDE_OFFSET, OVERSIZED_OFFSET), + ) : list( + TEXT_NORTH = list(0, REGULAR_OFFSET), + TEXT_SOUTH = list(0, REGULAR_OFFSET), + TEXT_EAST = list(-REGULAR_OFFSET, REGULAR_SIDE_OFFSET), + TEXT_WEST = list(REGULAR_OFFSET, REGULAR_SIDE_OFFSET) + ) + if(ride_check_flags & RIDING_TAUR) // riding a taur + var/obj/item/organ/taur_body/taur_body = seat.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAUR) + return taur_body.get_riding_offset(oversized = HAS_TRAIT(seat, TRAIT_OVERSIZED)) +// BUBBER EDIT CHANGE END - Oversized Overhaul, Taur riding /datum/component/riding/creature/human/get_parent_offsets_and_layers() return list( diff --git a/code/datums/quirks/_quirk.dm b/code/datums/quirks/_quirk.dm index c18a027aacd..85fd0fb806d 100644 --- a/code/datums/quirks/_quirk.dm +++ b/code/datums/quirks/_quirk.dm @@ -125,7 +125,7 @@ if(!quirk_transfer && lose_text) to_chat(quirk_holder, lose_text) - if(mob_trait) + if(mob_trait && !QDELETED(quirk_holder)) // BUBBER EDIT CHANGE - Original: if(mob_trait) - Temp fix until https://github.com/tgstation/tgstation/pull/90044 REMOVE_TRAIT(quirk_holder, mob_trait, QUIRK_TRAIT) if(quirk_flags & QUIRK_PROCESSES) diff --git a/code/modules/client/preferences/glasses.dm b/code/modules/client/preferences/glasses.dm index 5902ae9f9fe..f77b882f605 100644 --- a/code/modules/client/preferences/glasses.dm +++ b/code/modules/client/preferences/glasses.dm @@ -14,7 +14,10 @@ if (value == "Random") return uni_icon('icons/effects/random_spawners.dmi', "questionmark") else - return uni_icon('icons/obj/clothing/glasses.dmi', "glasses_[LOWER_TEXT(value)]") + // BUBBER EDIT CHANGE BEGIN - Handle glasses not in the base tg file + var/obj/item/clothing/glasses/glasses_type = GLOB.nearsighted_glasses[value] + return uni_icon(initial(glasses_type.icon), initial(glasses_type.icon_state)) + // BUBBER EDIT CHANGE END - Handle glasses not in the base tg file /datum/preference/choiced/glasses/is_accessible(datum/preferences/preferences) if (!..(preferences)) diff --git a/code/modules/jobs/job_types/_job.dm b/code/modules/jobs/job_types/_job.dm index f5893108fa6..14c1b828760 100644 --- a/code/modules/jobs/job_types/_job.dm +++ b/code/modules/jobs/job_types/_job.dm @@ -253,7 +253,7 @@ dna.species.pre_equip_species_outfit(equipping, src, visual_only) equip_outfit_and_loadout(equipping.get_outfit(consistent), player_client?.prefs, visual_only, equipping) // SKYRAT EDIT CHANGE - Add equipping param -/datum/job/proc/announce_head(mob/living/carbon/human/human, channels) //tells the given channel that the given mob is the new department head. See communications.dm for valid channels. // BUBBER EDIT CHANGE - ALTERNATIVE_JOB_TITLES +/datum/job/proc/announce_head(mob/living/carbon/human/human, channels, job_title) //tells the given channel that the given mob is the new department head. See communications.dm for valid channels. // BUBBER EDIT CHANGE - ALTERNATIVE_JOB_TITLES if(human) //timer because these should come after the captain announcement SSticker.OnRoundstart(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(_addtimer), CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(aas_config_announce), /datum/aas_config_entry/newhead, list("PERSON" = human.real_name, "RANK" = job_title), null, channels, null, TRUE), 1)) // BUBBER EDIT CHANGE - ALTERNATIVE_JOB_TITLES diff --git a/code/modules/loadout/categories/neck.dm b/code/modules/loadout/categories/neck.dm index 9a98870975c..ab28537f20c 100644 --- a/code/modules/loadout/categories/neck.dm +++ b/code/modules/loadout/categories/neck.dm @@ -39,6 +39,8 @@ name = "Necktie (Loose)" item_path = /obj/item/clothing/neck/tie/detective +/* BUBBER EDIT REMOVAL - duplicate of /datum/loadout_item/neck/bowtie_black /datum/loadout_item/neck/bowtie name = "Bowtie" item_path = /obj/item/clothing/neck/bowtie +BUBBER EDIT END */ diff --git a/code/modules/loadout/categories/pocket.dm b/code/modules/loadout/categories/pocket.dm index f94cc740d53..8f4348f5921 100644 --- a/code/modules/loadout/categories/pocket.dm +++ b/code/modules/loadout/categories/pocket.dm @@ -197,9 +197,11 @@ item_path = /obj/item/dice/d00 */ +/* BUBBER EDIT REMOVAL BEGIN - duplicate of /datum/loadout_item/pocket_items/zippolighter /datum/loadout_item/pocket_items/lighter name = "Zippo Lighter" item_path = /obj/item/lighter +BUBBER EDIT REMOVAL END */ /datum/loadout_item/pocket_items/flask name = "Pocket Flask" @@ -221,6 +223,8 @@ name = "Poster (Pinup)" item_path = /obj/item/poster/random_contraband/pinup +/* BUBBER EDIT REMOVAL BEGIN - duplicate of /datum/loadout_item/accessory/wallet /datum/loadout_item/pocket_items/wallet name = "Wallet" item_path = /obj/item/storage/wallet +BUBBER EDIT REMOVAL END */ diff --git a/code/modules/loadout/categories/shoes.dm b/code/modules/loadout/categories/shoes.dm index 8e58dac0aa6..e4601ce3e00 100644 --- a/code/modules/loadout/categories/shoes.dm +++ b/code/modules/loadout/categories/shoes.dm @@ -11,9 +11,11 @@ /datum/loadout_item/shoes/insert_path_into_outfit(datum/outfit/outfit, mob/living/carbon/human/equipper, visuals_only = FALSE) outfit.shoes = item_path +/* BUBBER EDIT REMOVAL BEGIN - duplicate of /datum/loadout_item/shoes/greyscale_sneakers /datum/loadout_item/shoes/sneakers name = "Sneakers (Colourable)" item_path = /obj/item/clothing/shoes/sneakers +BUBBER EDIT REMOVAL END */ /datum/loadout_item/shoes/sandals_laced name = "Sandals (Velcro)" @@ -39,6 +41,8 @@ name = "Boots (Cowboy, Black)" item_path = /obj/item/clothing/shoes/cowboy/black/laced +/* BUBBER EDIT REMOVAL BEGIN - duplicate of /datum/loadout_item/shoes/glow /datum/loadout_item/shoes/glow_shoes name = "Shoes (Glowing, Colourable)" item_path = /obj/item/clothing/shoes/glow +BUBBER EDIT REMOVAL END */ diff --git a/code/modules/projectiles/guns/ballistic/pistol.dm b/code/modules/projectiles/guns/ballistic/pistol.dm index 00069117544..db1aa1ec754 100644 --- a/code/modules/projectiles/guns/ballistic/pistol.dm +++ b/code/modules/projectiles/guns/ballistic/pistol.dm @@ -224,6 +224,7 @@ name = "\improper Liberator" desc = "A poorly made 3D printed \"gun\", only capable of firing a single shot. Well-known throughout the Spinward Sector \ after an incident where 3 assistants were killed by shrapnel from such a device exploding while attempting to shoot a mouse." + icon = 'icons/obj/weapons/guns/ballistic.dmi' // BUBBER EDIT ADDITION - We don't have an override sprite for this one icon_state = "doorhickey" custom_materials = list(/datum/material/plastic = SHEET_MATERIAL_AMOUNT * 2) bolt_type = BOLT_TYPE_NO_BOLT diff --git a/code/modules/unit_tests/quirks.dm b/code/modules/unit_tests/quirks.dm index 69630f66291..8816d6aec53 100644 --- a/code/modules/unit_tests/quirks.dm +++ b/code/modules/unit_tests/quirks.dm @@ -95,6 +95,11 @@ var/mob/living/carbon/human/new_character = allocate(/mob/living/carbon/human/consistent) new_character.mind_initialize() abstract_player.new_character = new_character + // BUBBER EDIT ADDITION BEGIN - Code to support testing our species-locked quirks + var/datum/quirk/quirk_instance = allocate(quirk_type) + if(length(quirk_instance.species_whitelist)) + new_character.set_species(GLOB.species_list[quirk_instance.species_whitelist[1]]) + // BUBBER EDIT ADDITION END - Code to support testing our species-locked quirks if (!new_character.add_quirk(quirk_type, roundstart_mock_client)) TEST_FAIL("Failed to initialize quirk [quirk_type] on a roundstart character!") @@ -103,6 +108,10 @@ latejoin_mock_client.prefs = new(latejoin_mock_client) latejoin_character.mock_client = latejoin_mock_client latejoin_character.mind_initialize() + // BUBBER EDIT ADDITION BEGIN - Code to support testing our species-locked quirks + if(length(quirk_instance.species_whitelist)) + latejoin_character.set_species(GLOB.species_list[quirk_instance.species_whitelist[1]]) + // BUBBER EDIT ADDITION END - Code to support testing our species-locked quirks if (!latejoin_character.add_quirk(quirk_type, latejoin_mock_client)) TEST_FAIL("Failed to initialize quirk [quirk_type] on a latejoin character!") diff --git a/modular_skyrat/master_files/code/datums/bodypart_overlays/mutant_bodypart_overlay.dm b/modular_skyrat/master_files/code/datums/bodypart_overlays/mutant_bodypart_overlay.dm index 54d06537b3c..e3dc784f853 100644 --- a/modular_skyrat/master_files/code/datums/bodypart_overlays/mutant_bodypart_overlay.dm +++ b/modular_skyrat/master_files/code/datums/bodypart_overlays/mutant_bodypart_overlay.dm @@ -85,7 +85,10 @@ return feature_key -/datum/bodypart_overlay/mutant/can_draw_on_bodypart(mob/living/carbon/human/human) +/datum/bodypart_overlay/mutant/can_draw_on_bodypart(obj/item/bodypart/bodypart_owner) + var/mob/living/carbon/human/human = bodypart_owner.owner + if(!human) + return TRUE return !sprite_datum.is_hidden(human) diff --git a/modular_skyrat/master_files/code/game/objects/items/RCD.dm b/modular_skyrat/master_files/code/game/objects/items/RCD.dm index 3450c7a0fd2..468eb483bdc 100644 --- a/modular_skyrat/master_files/code/game/objects/items/RCD.dm +++ b/modular_skyrat/master_files/code/game/objects/items/RCD.dm @@ -9,7 +9,7 @@ max_matter = 500 matter = 500 canRturf = TRUE - upgrade = RCD_UPGRADE_FRAMES | RCD_UPGRADE_SIMPLE_CIRCUITS | RCD_UPGRADE_FURNISHING + construction_upgrades = RCD_UPGRADE_FRAMES | RCD_UPGRADE_SIMPLE_CIRCUITS | RCD_UPGRADE_FURNISHING // Check for drains - we only want one per tile /obj/item/construction/plumbing/canPlace(turf/destination) diff --git a/modular_skyrat/master_files/code/modules/antagonists/traitor/objectives/kill_pet.dm b/modular_skyrat/master_files/code/modules/antagonists/traitor/objectives/kill_pet.dm deleted file mode 100644 index ad886fccd6d..00000000000 --- a/modular_skyrat/master_files/code/modules/antagonists/traitor/objectives/kill_pet.dm +++ /dev/null @@ -1,106 +0,0 @@ -// This is a modular hook on the kill_pet.dm, the `possible_heads` variable needs to be upkept according to the upstream file, or they will not occur. -/datum/traitor_objective/kill_pet - possible_heads = list( - JOB_HEAD_OF_PERSONNEL = list( - /mob/living/basic/pet/dog/corgi/ian, - /mob/living/basic/pet/dog/corgi/puppy/ian - ), - JOB_CAPTAIN = /mob/living/basic/pet/fox/renault, - JOB_CHIEF_MEDICAL_OFFICER = /mob/living/basic/pet/cat/runtime, - JOB_CHIEF_ENGINEER = /mob/living/basic/parrot/poly, - JOB_QUARTERMASTER = list( - /mob/living/basic/sloth/citrus, - /mob/living/basic/sloth/paperwork, - /mob/living/basic/gorilla/cargorilla, - ), - // Non-heads like the warden, these are automatically medium-risk at minimum - // They are also the only two modular additions so far - JOB_ROBOTICIST = /mob/living/basic/pet/dog/corgi/borgi, - JOB_STATION_ENGINEER = /mob/living/basic/pet/poppy, - ) - - // This variable is for the emag E-N objective. The obj details are below the next block - var/obj/item/card/emag/one_shot/one_shot_emag - -// Objective overwrites -/datum/traitor_objective/kill_pet/generate_objective(datum/mind/generating_for, list/possible_duplicates) - . = ..() - if(!.) - return FALSE - - // Dust Poppy the safety inspector - if(istype(target_pet, /mob/living/basic/pet/poppy)) - name = "Dust the engineering department's esteemed safety inspector and beloved pet, Poppy" - description = "A couple of troublemakers in the engineering department have spilled the milk, make them and their colleagues pay for the consequences by throwing Poppy the Safety Inspector into the supermatter engine " - telecrystal_reward = 4 - - // Cleaning up the original success_signals which are `list(COMSIG_QDELETING, COMSIG_LIVING_DEATH)` - for(var/datum/component/traitor_objective_register/old_objective as anything in GetComponents(/datum/component/traitor_objective_register)) - if(old_objective.target == target_pet) - qdel(old_objective) - // Adding our own signal component, targeting `target_pet` - AddComponent(/datum/component/traitor_objective_register, target_pet, \ - succeed_signals = list(COMSIG_QDELETING)) // Until dusting gets its own component, this has to make do - - // Emag E-N so it overloads - if(istype(target_pet, /mob/living/basic/pet/dog/corgi/borgi)) - name = "Emag the roboticist's most-prized borgi, E-N" - description = "We received an untracable contract from someone addressed 'ianfan2489@terragov.nt', they want the robotic clone of Ian dead- and it has to be dramatic. We will supply you with a cryptographic sequencer from our basic loadout options to shortcircuit E-N's safety, it will give you a single attempt to use it. Oh, and remember to run like hell when you do... " - telecrystal_reward = 3 // Because these are more complicated than 'kill the pet', the reward is bigger - telecrystal_penalty = 3 // Same cost as an emag on sale - - for(var/datum/component/traitor_objective_register/old_objective as anything in GetComponents(/datum/component/traitor_objective_register)) - if(old_objective.target == target_pet) - qdel(old_objective) - - AddComponent(/datum/component/traitor_objective_register, target_pet, \ - succeed_signals = list(COMSIG_ATOM_EMAG_ACT)) - -// Objective item (for emagging E-N) -/obj/item/card/emag/one_shot - name = "cryptographic sequencer" - special_desc_requirement = EXAMINE_CHECK_JOB - special_desc_jobs = list(JOB_DETECTIVE, JOB_HEAD_OF_SECURITY) - special_desc = "Upon inspection you can instantly tell this is a real cryptographic sequencer commonly traded in bulk for cheap at countless blackmarkets. They are known for their unreliability and breaking after just one use from their shoddy construction." - /// How many uses does it have left? - var/charges = 1 - /// Who summoned this? - var/caller - -/obj/item/card/emag/one_shot/examine(mob/user) - . = ..() - if(user == caller) - . += span_notice("It looks cheapo, they did say it gives just one shot...") - else - . += span_notice("It looks flimsy and identical to the \"Donk Co.\" toy.") - -/obj/item/card/emag/one_shot/can_emag(atom/target, mob/user) - if(charges <= 0) - balloon_alert(user, "unresponsive!") - return FALSE - use_charge(user) - return TRUE - -/obj/item/card/emag/one_shot/proc/use_charge(mob/user) - balloon_alert(user, "out of charges!") - charges -- - -// Handle the UI button, this is currently just generated by a modular objective -/datum/traitor_objective/kill_pet/generate_ui_buttons(mob/user) - var/list/buttons = list() - if(istype(target_pet, /mob/living/basic/pet/dog/corgi/borgi)) // Target has to be E-N - if(!one_shot_emag) - buttons += add_ui_button("", "Pressing this will materialize a single-use cryptographic sequencer in your hand, which you can use to shortcircuit E-N.", "bolt", "summon_emag") - return buttons - -/datum/traitor_objective/kill_pet/ui_perform_action(mob/living/user, action) - . = ..() - switch(action) - if("summon_emag") - if(one_shot_emag) - return - one_shot_emag = new(user.drop_location()) - one_shot_emag.caller = user - user.put_in_hands(one_shot_emag) - one_shot_emag.balloon_alert(user, "the card materializes in your hand") - // No penalty for losing this objective item, it is up to the traitor if this is the emag they use or another diff --git a/modular_skyrat/master_files/code/modules/antagonists/traitor/objectives/smuggling.dm b/modular_skyrat/master_files/code/modules/antagonists/traitor/objectives/smuggling.dm deleted file mode 100644 index be50435480c..00000000000 --- a/modular_skyrat/master_files/code/modules/antagonists/traitor/objectives/smuggling.dm +++ /dev/null @@ -1,108 +0,0 @@ -/datum/traitor_objective_category/smuggle - name = "Smuggling" - objectives = list( - /datum/traitor_objective/smuggle = 1, - ) - -/// smuggle! bring a traitor item from its arrival area to the cargo shuttle, where the objective completes on selling the item -/datum/traitor_objective/smuggle - name = "Smuggle %CONTRABAND% from %AREA% off the station via cargo shuttle" - description = "Go to a designated area, pick up syndicate contraband, and get it off the station via the cargo shuttle. \ - You will instantly fail this objective if anyone else picks up your contraband. If you fail, you are liable for the costs \ - of the smuggling item." - - progression_minimum = 0 - - progression_reward = list(5 MINUTES, 9 MINUTES) - telecrystal_reward = list(0, 1) - - /// area type the objective owner must be in to receive the contraband - var/area/smuggle_spawn_type - /// the contraband that must be exported on the shuttle - var/obj/item/contraband - /// type of contraband to spawn - var/obj/item/contraband_type - /// possible objective items. Mapped by item type = penalty cost for failing - var/list/possible_contrabands = list( - /obj/item/pen/edagger/prototype = 2, - /obj/item/gun/syringe/syndicate/prototype = 4, - /obj/item/reagent_containers/cup/bottle/ritual_wine = 6, // poison kit price - ) - -/datum/traitor_objective/smuggle/can_generate_objective(datum/mind/generating_for, list/possible_duplicates) - for(var/datum/traitor_objective/smuggle/objective_to_compare as anything in possible_duplicates) - if(objective_to_compare.contraband_type == contraband_type) - return FALSE - // it's too similar if its from the same area - if(objective_to_compare.smuggle_spawn_type == smuggle_spawn_type) - return FALSE - return TRUE - -/datum/traitor_objective/smuggle/generate_ui_buttons(mob/user) - var/list/buttons = list() - if(!contraband) - buttons += add_ui_button("", "Pressing this will materialize the contraband you need to deliver. You must be in [initial(smuggle_spawn_type.name)] to receive it!", "box", "summon_contraband") - return buttons - -/datum/traitor_objective/smuggle/ui_perform_action(mob/living/user, action) - . = ..() - switch(action) - if("summon_contraband") - if(contraband) - return - var/area/player_area = get_area(user) - if(!istype(player_area, smuggle_spawn_type)) - user.balloon_alert(user, "you can't materialize this here!") - return - contraband = new contraband_type(user.drop_location()) - user.put_in_hands(contraband) - user.balloon_alert(user, "[contraband] materializes in your hand") - RegisterSignal(contraband, COMSIG_ITEM_PICKUP, PROC_REF(on_contraband_pickup)) - AddComponent(/datum/component/traitor_objective_register, contraband, \ - succeed_signals = list(COMSIG_ITEM_EXPORTED), \ - fail_signals = list(COMSIG_QDELETING), \ - penalty = telecrystal_penalty \ - ) - if(contraband.reagents) - AddComponent(/datum/component/traitor_objective_register, contraband.reagents, \ - fail_signals = COMSIG_REAGENTS_HOLDER_UPDATED, \ - penalty = telecrystal_penalty) - -/datum/traitor_objective/smuggle/generate_objective(datum/mind/generating_for, list/possible_duplicates) - // anyone working cargo should not get almost free objectives by having direct access to the cargo shuttle - if(generating_for.assigned_role.departments_bitflags & DEPARTMENT_BITFLAG_CARGO) - return FALSE - - // choose starting area to receive contraband - var/list/possible_areas = GLOB.the_station_areas.Copy() - for(var/area/possible_area as anything in possible_areas) - // remove areas too close to the destination, too obvious for our poor shmuck, or just unfair - if(istype(possible_area, /area/station/cargo) || istype(possible_area, /area/station/hallway) || istype(possible_area, /area/station/security)) - possible_areas -= possible_area - for(var/datum/traitor_objective/smuggle/smuggle_objective as anything in possible_duplicates) - possible_areas -= smuggle_objective.smuggle_spawn_type - possible_contrabands -= smuggle_objective.contraband_type - if(smuggle_objective.objective_state == OBJECTIVE_STATE_INACTIVE || smuggle_objective.objective_state == OBJECTIVE_STATE_ACTIVE) - return FALSE // You can only have 1 objective of this type active and inactive at a time. - if(!length(possible_contrabands)) - return FALSE - if(!length(possible_areas)) - return FALSE - smuggle_spawn_type = pick(possible_areas) - // choose contraband type to spawn when reaching starting area - contraband_type = pick(possible_contrabands) - telecrystal_penalty = possible_contrabands[contraband_type] - replace_in_name("%CONTRABAND%", initial(contraband_type.name)) - replace_in_name("%AREA%", initial(smuggle_spawn_type.name)) - return TRUE - -/datum/traitor_objective/smuggle/ungenerate_objective() - . = ..() - if(contraband) - UnregisterSignal(contraband, COMSIG_ITEM_PICKUP) - contraband = null - -/datum/traitor_objective/smuggle/proc/on_contraband_pickup(datum/source, mob/taker) - SIGNAL_HANDLER - if(taker != handler.owner?.current) - fail_objective(penalty_cost = telecrystal_penalty) diff --git a/modular_skyrat/master_files/code/modules/asset_cache/assets/plumbing.dm b/modular_skyrat/master_files/code/modules/asset_cache/assets/plumbing.dm index 5e04d6c1401..538731616bd 100644 --- a/modular_skyrat/master_files/code/modules/asset_cache/assets/plumbing.dm +++ b/modular_skyrat/master_files/code/modules/asset_cache/assets/plumbing.dm @@ -1,7 +1,7 @@ /// add modular plumbing sprites to spritesheet so that they will show up in the plumbing RCD menu etc -/datum/asset/spritesheet/plumbing/create_spritesheets() +/datum/asset/spritesheet_batched/plumbing/create_spritesheets() . = ..() - + //load only what we need from the icon files,format is icon_file_name = list of icon_states we need from this file var/list/essentials = list( 'modular_skyrat/modules/liquids/icons/obj/structures/drains.dmi' = list( @@ -13,5 +13,5 @@ for(var/icon_file as anything in essentials) for(var/icon_state as anything in essentials[icon_file]) - Insert(sprite_name = icon_state, I = icon_file, icon_state = icon_state) + insert_icon(icon_state, uni_icon(icon_file, icon_state)) diff --git a/modular_skyrat/master_files/code/modules/client/preferences/_preference.dm b/modular_skyrat/master_files/code/modules/client/preferences/_preference.dm index db947e2190e..8e97cc24aa4 100644 --- a/modular_skyrat/master_files/code/modules/client/preferences/_preference.dm +++ b/modular_skyrat/master_files/code/modules/client/preferences/_preference.dm @@ -135,8 +135,7 @@ // because of the way the unit tests are set up, we need this to crash here CRASH("`icon_for()` was not implemented for [type], even though should_generate_icons = TRUE!") - var/list/cached_icons = get_choices() - return cached_icons[value] + return generate_icon(SSaccessories.sprite_accessories[relevant_mutant_bodypart][value]) /// Allows for dynamic assigning of icon states. /datum/preference/choiced/mutant_choice/proc/generate_icon_state(datum/sprite_accessory/sprite_accessory, original_icon_state) @@ -145,34 +144,26 @@ /// Generates and allows for post-processing on icons, such as greyscaling and cropping. This is cached. /datum/preference/choiced/mutant_choice/proc/generate_icon(datum/sprite_accessory/sprite_accessory) if(!sprite_accessory.icon_state) - return icon('icons/mob/landmarks.dmi', "x") + return uni_icon('icons/mob/landmarks.dmi', "x") - var/icon/icon_to_process = icon(sprite_accessory.icon, generate_icon_state(sprite_accessory, sprite_accessory.icon_state), SOUTH, 1) + var/datum/universal_icon/icon_to_process = uni_icon(sprite_accessory.icon, generate_icon_state(sprite_accessory, sprite_accessory.icon_state), SOUTH, 1) if(islist(crop_area) && crop_area.len == REQUIRED_CROP_LIST_SIZE) - icon_to_process.Crop(crop_area[1], crop_area[2], crop_area[3], crop_area[4]) - icon_to_process.Scale(32, 32) + icon_to_process.crop(crop_area[1], crop_area[2], crop_area[3], crop_area[4]) + icon_to_process.scale(32, 32) else if(crop_area) stack_trace("Invalid crop paramater! The provided crop area list is not four entries long, or is not a list!") var/color = sanitize_hexcolor(greyscale_color) if(color && sprite_accessory.color_src) // This isn't perfect, but I don't want to add the significant overhead to make it be. - icon_to_process.ColorTone(color) + icon_to_process.blend_color(color, ICON_MULTIPLY) return icon_to_process /datum/preference/choiced/mutant_choice/init_possible_values() - if(!initial(generate_icons)) return assoc_to_keys_features(SSaccessories.sprite_accessories[relevant_mutant_bodypart]) - var/list/list_of_accessories = list() - for(var/sprite_accessory_name as anything in SSaccessories.sprite_accessories[relevant_mutant_bodypart]) - var/datum/sprite_accessory/sprite_accessory = SSaccessories.sprite_accessories[relevant_mutant_bodypart][sprite_accessory_name] - list_of_accessories += list("[sprite_accessory.name]" = generate_icon(sprite_accessory)) - - return list_of_accessories - /datum/preference/choiced/mutant_choice/create_default_value() return initial(default_accessory_type.name) diff --git a/modular_skyrat/master_files/code/modules/client/preferences/clothing.dm b/modular_skyrat/master_files/code/modules/client/preferences/clothing.dm index 0f525313f00..cdbfd187969 100644 --- a/modular_skyrat/master_files/code/modules/client/preferences/clothing.dm +++ b/modular_skyrat/master_files/code/modules/client/preferences/clothing.dm @@ -47,22 +47,22 @@ return assoc_to_keys_features(SSaccessories.bra_list) /datum/preference/choiced/bra/icon_for(value) - var/static/icon/body + var/static/datum/universal_icon/body if (isnull(body)) - body = icon('icons/mob/human/bodyparts_greyscale.dmi', "human_r_arm") - body.Blend(icon('icons/mob/human/bodyparts_greyscale.dmi', "human_l_arm"), ICON_OVERLAY) - body.Blend(icon('icons/mob/human/bodyparts_greyscale.dmi', "human_r_hand"), ICON_OVERLAY) - body.Blend(icon('icons/mob/human/bodyparts_greyscale.dmi', "human_l_hand"), ICON_OVERLAY) - body.Blend(icon('icons/mob/human/bodyparts_greyscale.dmi', "human_chest_m"), ICON_OVERLAY) + body = uni_icon('icons/mob/human/bodyparts_greyscale.dmi', "human_r_arm") + body.blend_icon(uni_icon('icons/mob/human/bodyparts_greyscale.dmi', "human_l_arm"), ICON_OVERLAY) + body.blend_icon(uni_icon('icons/mob/human/bodyparts_greyscale.dmi', "human_r_hand"), ICON_OVERLAY) + body.blend_icon(uni_icon('icons/mob/human/bodyparts_greyscale.dmi', "human_l_hand"), ICON_OVERLAY) + body.blend_icon(uni_icon('icons/mob/human/bodyparts_greyscale.dmi', "human_chest_m"), ICON_OVERLAY) - var/icon/icon_with_bra = icon(body) + var/datum/universal_icon/icon_with_bra = body.copy() if (value != "Nude") var/datum/sprite_accessory/accessory = SSaccessories.bra_list[value] - icon_with_bra.Blend(icon(accessory.icon, accessory.icon_state), ICON_OVERLAY) + icon_with_bra.blend_icon(uni_icon(accessory.icon, accessory.icon_state), ICON_OVERLAY) - icon_with_bra.Crop(10, 11, 22, 23) // SKYRAT EDIT CHANGE : ORIGINAL - icon_with_undershirt.Crop(9, 9, 23, 23) - icon_with_bra.Scale(32, 32) + icon_with_bra.crop(10, 11, 22, 23) // SKYRAT EDIT CHANGE : ORIGINAL - icon_with_undershirt.Crop(9, 9, 23, 23) + icon_with_bra.scale(32, 32) return icon_with_bra /datum/preference/choiced/bra/apply_to_human(mob/living/carbon/human/target, value) diff --git a/modular_skyrat/master_files/code/modules/client/preferences/mutant_parts.dm b/modular_skyrat/master_files/code/modules/client/preferences/mutant_parts.dm index 177dfc0351f..979978a7873 100644 --- a/modular_skyrat/master_files/code/modules/client/preferences/mutant_parts.dm +++ b/modular_skyrat/master_files/code/modules/client/preferences/mutant_parts.dm @@ -478,6 +478,15 @@ /datum/preference/choiced/mutant_choice/ipc_screen/is_part_enabled(datum/preferences/preferences) return TRUE +/datum/preference/choiced/mutant_choice/ipc_screen/is_accessible(datum/preferences/preferences) + var/datum/species/species = preferences.read_preference(/datum/preference/choiced/species) + species = new species + + if(savefile_key in species.get_features()) + return ..() + else + return FALSE + /datum/preference/choiced/mutant_choice/ipc_screen/generate_icon_state(datum/sprite_accessory/sprite_accessory, original_icon_state) return "m_ipc_screen_[original_icon_state]_FRONT_UNDER" @@ -557,6 +566,15 @@ /datum/preference/choiced/mutant_choice/synth_chassis/is_part_enabled(datum/preferences/preferences) return TRUE +/datum/preference/choiced/mutant_choice/synth_chassis/is_accessible(datum/preferences/preferences) + var/datum/species/species = preferences.read_preference(/datum/preference/choiced/species) + species = new species + + if(savefile_key in species.get_features()) + return ..() + else + return FALSE + /datum/preference/choiced/mutant_choice/synth_chassis/compile_constant_data() var/list/data = ..() @@ -591,6 +609,15 @@ /datum/preference/choiced/mutant_choice/synth_head/is_part_enabled(datum/preferences/preferences) return TRUE +/datum/preference/choiced/mutant_choice/synth_head/is_accessible(datum/preferences/preferences) + var/datum/species/species = preferences.read_preference(/datum/preference/choiced/species) + species = new species + + if(savefile_key in species.get_features()) + return ..() + else + return FALSE + /datum/preference/choiced/mutant_choice/synth_head/compile_constant_data() var/list/data = ..() @@ -828,34 +855,36 @@ should_generate_icons = TRUE generate_icons = TRUE -/datum/preference/choiced/mutant_choice/pod_hair/init_possible_values() - var/list/values = list() +/datum/preference/choiced/mutant_choice/pod_hair/icon_for(value) + var/datum/sprite_accessory/pod_hair/pod_hair = SSaccessories.sprite_accessories[relevant_mutant_bodypart][value] + if(!pod_hair.icon_state || LOWER_TEXT(pod_hair.icon_state) == "none") + return uni_icon('icons/mob/landmarks.dmi', "x") - var/icon/pod_head = icon('icons/mob/human/bodyparts_greyscale.dmi', "pod_head_m") - pod_head.Blend(COLOR_GREEN, ICON_MULTIPLY) + var/datum/universal_icon/pod_head = uni_icon('icons/mob/human/bodyparts_greyscale.dmi', "pod_head_m") + pod_head.blend_color(COLOR_GREEN, ICON_MULTIPLY) - for (var/pod_name in SSaccessories.pod_hair_list) - var/datum/sprite_accessory/pod_hair/pod_hair = SSaccessories.pod_hair_list[pod_name] - if(pod_hair.locked) - continue - - var/icon/icon_with_hair = new(pod_head) - var/icon/icon_adj = icon(pod_hair.icon, "m_pod_hair_[pod_hair.icon_state]_ADJ") - var/icon/icon_front = icon(pod_hair.icon, "m_pod_hair_[pod_hair.icon_state]_FRONT_OVER") - icon_front.Blend(COLOR_MAGENTA, ICON_MULTIPLY) - icon_adj.Blend(COLOR_VIBRANT_LIME, ICON_MULTIPLY) - icon_adj.Blend(icon_front, ICON_OVERLAY) - icon_with_hair.Blend(icon_adj, ICON_OVERLAY) - icon_with_hair.Scale(64, 64) - icon_with_hair.Crop(15, 64, 15 + 31, 64 - 31) - - values[pod_hair.name] = icon_with_hair - - return values + var/datum/universal_icon/icon_adj = uni_icon(pod_hair.icon, "m_pod_hair_[pod_hair.icon_state]_FRONT_OVER_HAIR") + var/datum/universal_icon/icon_front = uni_icon(pod_hair.icon, "m_pod_hair_[pod_hair.icon_state]_FRONT_OVER") + icon_front.blend_color(COLOR_MAGENTA, ICON_MULTIPLY) + icon_adj.blend_color(COLOR_VIBRANT_LIME, ICON_MULTIPLY) + icon_adj.blend_icon(icon_front, ICON_OVERLAY) + pod_head.blend_icon(icon_adj, ICON_OVERLAY) + pod_head.scale(64, 64) + pod_head.crop(15, 64 - 31, 15 + 31, 64) + return pod_head /datum/preference/choiced/mutant_choice/pod_hair/is_part_enabled(datum/preferences/preferences) return TRUE +/datum/preference/choiced/mutant_choice/pod_hair/is_accessible(datum/preferences/preferences) + var/datum/species/species = preferences.read_preference(/datum/preference/choiced/species) + species = new species + + if(savefile_key in species.get_features()) + return ..() + else + return FALSE + /datum/preference/choiced/mutant_choice/pod_hair/apply_to_human(mob/living/carbon/human/target, value, datum/preferences/preferences) var/species_path = preferences?.read_preference(/datum/preference/choiced/species) if(!ispath(species_path, /datum/species/pod)) // This is what we do so it doesn't show up on non-podpeople. diff --git a/modular_skyrat/master_files/code/modules/mob/living/living.dm b/modular_skyrat/master_files/code/modules/mob/living/living.dm index 04aea1e3642..7a4045ed25d 100644 --- a/modular_skyrat/master_files/code/modules/mob/living/living.dm +++ b/modular_skyrat/master_files/code/modules/mob/living/living.dm @@ -1,4 +1,4 @@ -/mob/living/set_pull_offsets(mob/living/pull_target, grab_state) +/mob/living/set_pull_offsets(mob/living/pull_target, grab_state, animate = TRUE) . = ..() SEND_SIGNAL(pull_target, COMSIG_LIVING_SET_PULL_OFFSET) diff --git a/modular_skyrat/master_files/code/modules/mod/mod_theme.dm b/modular_skyrat/master_files/code/modules/mod/mod_theme.dm index c037d99f0d5..e5548d068a8 100644 --- a/modular_skyrat/master_files/code/modules/mod/mod_theme.dm +++ b/modular_skyrat/master_files/code/modules/mod/mod_theme.dm @@ -340,8 +340,7 @@ atom_flags = PREVENT_CONTENTS_EXPLOSION_1 max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT siemens_coefficient = 0 - slowdown_inactive = 0.5 - slowdown_active = 0 + slowdown_deployed = 0 allowed_suit_storage = list( /obj/item/ammo_box, /obj/item/ammo_casing, diff --git a/modular_skyrat/master_files/code/modules/shuttle/shuttle.dm b/modular_skyrat/master_files/code/modules/shuttle/shuttle.dm index d8ac947cf64..b8d34b955d8 100644 --- a/modular_skyrat/master_files/code/modules/shuttle/shuttle.dm +++ b/modular_skyrat/master_files/code/modules/shuttle/shuttle.dm @@ -31,7 +31,7 @@ if(hearing_mob?.client) var/dist = get_dist(hearing_mob.loc, distant_source.loc) var/vol = clamp(50 - ((dist - 7) * 5), 10, 50) // Every tile decreases sound volume by 5 - var/volume_multiplier = hearing_mob.client?.prefs.read_preference(/datum/preference/numeric/sound_ambience_volume) + var/volume_multiplier = hearing_mob.client?.prefs.read_preference(/datum/preference/numeric/volume/sound_ambience_volume) if(!volume_multiplier) return if(takeoff) diff --git a/modular_skyrat/master_files/icons/mob/sprite_accessory/hair.dmi b/modular_skyrat/master_files/icons/mob/sprite_accessory/hair.dmi index 84296272b10..f9da1b563de 100644 Binary files a/modular_skyrat/master_files/icons/mob/sprite_accessory/hair.dmi and b/modular_skyrat/master_files/icons/mob/sprite_accessory/hair.dmi differ diff --git a/modular_skyrat/modules/admin/code/localsound.dm b/modular_skyrat/modules/admin/code/localsound.dm index 81aca95c6ef..2dec55f4d84 100644 --- a/modular_skyrat/modules/admin/code/localsound.dm +++ b/modular_skyrat/modules/admin/code/localsound.dm @@ -97,7 +97,7 @@ if (listening_mob.client) players += listening_mob for(var/mob/player_mob as anything in players) - if(player_mob.client.prefs.read_preference(/datum/preference/toggle/sound_midi)) + if(player_mob.client.prefs.read_preference(/datum/preference/numeric/volume/sound_midi) > 0) if(!stop_localweb_sounds) player_mob.client.tgui_panel?.play_music(localweb_sound_url, music_extra_data) else diff --git a/modular_skyrat/modules/aesthetics/floors/icons/floors.dmi b/modular_skyrat/modules/aesthetics/floors/icons/floors.dmi index b7ac018b8b3..aa6f2bb57db 100644 Binary files a/modular_skyrat/modules/aesthetics/floors/icons/floors.dmi and b/modular_skyrat/modules/aesthetics/floors/icons/floors.dmi differ diff --git a/modular_skyrat/modules/aesthetics/guns/code/guns.dm b/modular_skyrat/modules/aesthetics/guns/code/guns.dm index 0cc6e4dd7a0..9c201aa0228 100644 --- a/modular_skyrat/modules/aesthetics/guns/code/guns.dm +++ b/modular_skyrat/modules/aesthetics/guns/code/guns.dm @@ -243,11 +243,6 @@ inhand_icon_state = "arg" can_suppress = FALSE -/obj/item/gun/ballistic/automatic/surplus - name = "\improper Type-69 surplus rifle" - desc = "One of countless obsolete ballistic rifles that still sees use as a cheap deterrent. Uses 10mm ammo and its bulky frame prevents one-hand firing." - icon = 'modular_skyrat/modules/aesthetics/guns/icons/guns.dmi' - // GUBMAN3 - FULL BULLET RENAME // i loathe the above diff --git a/modular_skyrat/modules/ashwalkers/code/buildings/railroad.dm b/modular_skyrat/modules/ashwalkers/code/buildings/railroad.dm index 50dec900cf1..196a9ab4aea 100644 --- a/modular_skyrat/modules/ashwalkers/code/buildings/railroad.dm +++ b/modular_skyrat/modules/ashwalkers/code/buildings/railroad.dm @@ -148,10 +148,10 @@ vehicle_move_delay = 0.5 ride_check_flags = RIDER_NEEDS_LEGS | RIDER_NEEDS_ARMS | UNBUCKLE_DISABLED_RIDER -/datum/component/riding/vehicle/rail_cart/handle_specials() - . = ..() - set_riding_offsets(RIDING_OFFSET_ALL, list(TEXT_NORTH = list(0, 13), TEXT_SOUTH = list(0, 13), TEXT_EAST = list(0, 13), TEXT_WEST = list(0, 13))) - set_vehicle_dir_layer(SOUTH, OBJ_LAYER) - set_vehicle_dir_layer(NORTH, OBJ_LAYER) - set_vehicle_dir_layer(EAST, OBJ_LAYER) - set_vehicle_dir_layer(WEST, OBJ_LAYER) +/datum/component/riding/vehicle/rail_cart/get_rider_offsets_and_layers(pass_index, mob/offsetter) + return list( + TEXT_NORTH = list(0, 13, OBJ_LAYER), + TEXT_SOUTH = list(0, 13, OBJ_LAYER), + TEXT_EAST = list(0, 13, OBJ_LAYER), + TEXT_WEST = list(0, 13, OBJ_LAYER), + ) diff --git a/modular_skyrat/modules/assault_operatives/code/equipment_items/stealth_mod.dm b/modular_skyrat/modules/assault_operatives/code/equipment_items/stealth_mod.dm index bc29586cd54..83529551c5a 100644 --- a/modular_skyrat/modules/assault_operatives/code/equipment_items/stealth_mod.dm +++ b/modular_skyrat/modules/assault_operatives/code/equipment_items/stealth_mod.dm @@ -15,8 +15,7 @@ max_heat_protection_temperature = FIRE_SUIT_MAX_TEMP_PROTECT siemens_coefficient = 0 complexity_max = DEFAULT_MAX_COMPLEXITY + 5 - slowdown_inactive = 0 - slowdown_active = 0 + slowdown_deployed = 0 ui_theme = "hackerman" slot_flags = ITEM_SLOT_BELT inbuilt_modules = list( diff --git a/modular_skyrat/modules/blueshield/code/modsuit/mod_theme.dm b/modular_skyrat/modules/blueshield/code/modsuit/mod_theme.dm index 8bce3a4028b..662f0be0b3d 100644 --- a/modular_skyrat/modules/blueshield/code/modsuit/mod_theme.dm +++ b/modular_skyrat/modules/blueshield/code/modsuit/mod_theme.dm @@ -16,8 +16,7 @@ max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT siemens_coefficient = 0 complexity_max = DEFAULT_MAX_COMPLEXITY - slowdown_inactive = 0.75 - slowdown_active = 0.25 + slowdown_deployed = 0.25 allowed_suit_storage = list( /obj/item/ammo_box, /obj/item/ammo_casing, diff --git a/modular_skyrat/modules/cargo/code/items/improvedRCD.dm b/modular_skyrat/modules/cargo/code/items/improvedRCD.dm index ff21156ad76..86958e90c9d 100644 --- a/modular_skyrat/modules/cargo/code/items/improvedRCD.dm +++ b/modular_skyrat/modules/cargo/code/items/improvedRCD.dm @@ -7,4 +7,4 @@ max_matter = 220 matter = 220 delay_mod = 1.3 - upgrade = RCD_UPGRADE_FRAMES | RCD_UPGRADE_SIMPLE_CIRCUITS + construction_upgrades = RCD_UPGRADE_FRAMES | RCD_UPGRADE_SIMPLE_CIRCUITS diff --git a/modular_skyrat/modules/carriers/code/carrier_component.dm b/modular_skyrat/modules/carriers/code/carrier_component.dm index ecd2ed7e439..95383aaf31c 100644 --- a/modular_skyrat/modules/carriers/code/carrier_component.dm +++ b/modular_skyrat/modules/carriers/code/carrier_component.dm @@ -325,7 +325,7 @@ GLOBAL_LIST_EMPTY(soulcatchers) if(!message_to_send) //Why say nothing? return FALSE - var/datum/asset/spritesheet/sheet = get_asset_datum(/datum/asset/spritesheet/chat) + var/datum/asset/spritesheet_batched/sheet = get_asset_datum(/datum/asset/spritesheet_batched/chat) var/master_resolved = master_carrier.resolve() if(!master_resolved) master_carrier = null diff --git a/modular_skyrat/modules/clock_cult/code/research/asset_cache.dm b/modular_skyrat/modules/clock_cult/code/research/asset_cache.dm index 3ae305036ba..09b45cd8ca0 100644 --- a/modular_skyrat/modules/clock_cult/code/research/asset_cache.dm +++ b/modular_skyrat/modules/clock_cult/code/research/asset_cache.dm @@ -2,7 +2,7 @@ // Well, for some *absurd* reason, any time i tried to add sprites to a new spritesheet, they would always have a *gray* background covering the full 32x32, apart from what my sprite did. After multiple hours of debugging, // I settled on this, since it's not-really-harmful to have other things in an unrelated spritesheet. // To see my suffering, look at the convo starting at https://discord.com/channels/326822144233439242/326831214667235328/1098753337698029590 -/datum/asset/spritesheet/research_designs/create_spritesheets() +/datum/asset/spritesheet_batched/research_designs/create_spritesheets() . = ..() var/list/id_list = list() @@ -30,7 +30,7 @@ id_list += id - Insert(id, icon_file, icon_state) + insert_icon(id, uni_icon(icon_file, icon_state)) // And now scripture icons for(var/datum/scripture/unlocked_scripture as anything in new_research.unlocked_scriptures) @@ -43,6 +43,6 @@ id_list += id - Insert(id, icon_file, icon_state) + insert_icon(id, uni_icon(icon_file, icon_state)) qdel(new_research) diff --git a/modular_skyrat/modules/clock_cult/code/structures/technologists_lectern.dm b/modular_skyrat/modules/clock_cult/code/structures/technologists_lectern.dm index e04d5564d9d..725064cfa88 100644 --- a/modular_skyrat/modules/clock_cult/code/structures/technologists_lectern.dm +++ b/modular_skyrat/modules/clock_cult/code/structures/technologists_lectern.dm @@ -124,7 +124,7 @@ /obj/structure/destructible/clockwork/gear_base/technologists_lectern/ui_assets(mob/user) return list( - get_asset_datum(/datum/asset/spritesheet/research_designs), + get_asset_datum(/datum/asset/spritesheet_batched/research_designs), ) /obj/structure/destructible/clockwork/gear_base/technologists_lectern/ui_data(mob/user) diff --git a/modular_skyrat/modules/company_imports/code/objects/cargo_console_and_case.dm b/modular_skyrat/modules/company_imports/code/objects/cargo_console_and_case.dm index b7584a65652..5e226715d95 100644 --- a/modular_skyrat/modules/company_imports/code/objects/cargo_console_and_case.dm +++ b/modular_skyrat/modules/company_imports/code/objects/cargo_console_and_case.dm @@ -2,10 +2,6 @@ . = ..() AddComponent(/datum/component/armament/company_imports, subtypesof(/datum/armament_entry/company_import), 0) -/// Proc for speaking over radio without needing to reuse a bunch of code -/obj/machinery/computer/cargo/proc/radio_wrapper(atom/movable/speaker, message, channel) - radio.talk_into(speaker, message, channel) - /obj/item/storage/lockbox/order /// Bool if this was departmentally ordered or not var/department_purchase diff --git a/modular_skyrat/modules/contractor/code/items/modsuit/theme.dm b/modular_skyrat/modules/contractor/code/items/modsuit/theme.dm index 6e90636603d..a59b2301861 100644 --- a/modular_skyrat/modules/contractor/code/items/modsuit/theme.dm +++ b/modular_skyrat/modules/contractor/code/items/modsuit/theme.dm @@ -15,8 +15,7 @@ atom_flags = PREVENT_CONTENTS_EXPLOSION_1 max_heat_protection_temperature = FIRE_SUIT_MAX_TEMP_PROTECT siemens_coefficient = 0 - slowdown_inactive = 0.5 - slowdown_active = 0 + slowdown_deployed = 0 ui_theme = "syndicate" inbuilt_modules = list(/obj/item/mod/module/armor_booster/contractor, /obj/item/mod/module/chameleon/contractor) allowed_suit_storage = list( diff --git a/modular_skyrat/modules/customization/modules/clothing/shoes/shoes.dm b/modular_skyrat/modules/customization/modules/clothing/shoes/shoes.dm index a1e34cd6fdf..e2d5c42ce69 100644 --- a/modular_skyrat/modules/customization/modules/clothing/shoes/shoes.dm +++ b/modular_skyrat/modules/customization/modules/clothing/shoes/shoes.dm @@ -161,7 +161,7 @@ //Modular overide to give jackboots laces /obj/item/clothing/shoes/jackboots - can_be_tied = TRUE + fastening_type = SHOES_LACED /obj/item/clothing/shoes/colorable_laceups name = "laceup shoes" diff --git a/modular_skyrat/modules/customization/modules/mob/dead/new_player/sprite_accessories/snout.dm b/modular_skyrat/modules/customization/modules/mob/dead/new_player/sprite_accessories/snout.dm index a3ce4d055c8..a5730cb6273 100644 --- a/modular_skyrat/modules/customization/modules/mob/dead/new_player/sprite_accessories/snout.dm +++ b/modular_skyrat/modules/customization/modules/mob/dead/new_player/sprite_accessories/snout.dm @@ -26,7 +26,10 @@ /datum/bodypart_overlay/mutant/snout/override_color(rgb_value) return draw_color -/datum/bodypart_overlay/mutant/snout/can_draw_on_bodypart(mob/living/carbon/human/human) +/datum/bodypart_overlay/mutant/snout/can_draw_on_bodypart(obj/item/bodypart/bodypart_owner) + var/mob/living/carbon/human/human = bodypart_owner.owner + if(!human) + return TRUE return !sprite_datum.is_hidden(human) diff --git a/modular_skyrat/modules/customization/modules/mob/dead/new_player/sprite_accessories/wings.dm b/modular_skyrat/modules/customization/modules/mob/dead/new_player/sprite_accessories/wings.dm index 9cbfd06213d..18a72f85d24 100644 --- a/modular_skyrat/modules/customization/modules/mob/dead/new_player/sprite_accessories/wings.dm +++ b/modular_skyrat/modules/customization/modules/mob/dead/new_player/sprite_accessories/wings.dm @@ -34,7 +34,10 @@ return FALSE -/datum/bodypart_overlay/mutant/wings/can_draw_on_bodypart(mob/living/carbon/human/wearer, ignore_suit = FALSE) +/datum/bodypart_overlay/mutant/wings/can_draw_on_bodypart(obj/item/bodypart/bodypart_owner, ignore_suit = FALSE) + var/mob/living/carbon/human/wearer = bodypart_owner.owner + if(!wearer) + return TRUE if(!wearer.w_uniform && !wearer.wear_suit) return ..() diff --git a/modular_skyrat/modules/customization/modules/reagents/chemistry/reagents/alcohol_reagents.dm b/modular_skyrat/modules/customization/modules/reagents/chemistry/reagents/alcohol_reagents.dm index 97bdd205ff1..16498b0bf2a 100644 --- a/modular_skyrat/modules/customization/modules/reagents/chemistry/reagents/alcohol_reagents.dm +++ b/modular_skyrat/modules/customization/modules/reagents/chemistry/reagents/alcohol_reagents.dm @@ -711,7 +711,7 @@ cube.color = COLOR_CYAN cube.set_anchored(TRUE) drinker.forceMove(cube) - cryostylane_alert = drinker.throw_alert("cryostylane_alert", /atom/movable/screen/alert/status_effect/freon/cryostylane) + cryostylane_alert = drinker.throw_alert("cryostylane_alert", /atom/movable/screen/alert/status_effect/freon/stasis) cryostylane_alert.attached_effect = src //so the alert can reference us, if it needs to /datum/reagent/consumable/ethanol/blizzard_brew/on_mob_delete(mob/living/carbon/drinker, amount) diff --git a/modular_skyrat/modules/customization/modules/surgery/organs/cap.dm b/modular_skyrat/modules/customization/modules/surgery/organs/cap.dm index af2dcd698b7..ebe5710204d 100644 --- a/modular_skyrat/modules/customization/modules/surgery/organs/cap.dm +++ b/modular_skyrat/modules/customization/modules/surgery/organs/cap.dm @@ -29,5 +29,8 @@ /datum/bodypart_overlay/mutant/mushroom_cap/get_global_feature_list() return SSaccessories.sprite_accessories["caps"] -/datum/bodypart_overlay/mutant/mushroom_cap/can_draw_on_bodypart(mob/living/carbon/human/human) +/datum/bodypart_overlay/mutant/mushroom_cap/can_draw_on_bodypart(obj/item/bodypart/bodypart_owner) + var/mob/living/carbon/human/human = bodypart_owner.owner + if(!human) + return TRUE return !sprite_datum.is_hidden(human) diff --git a/modular_skyrat/modules/customization/modules/surgery/organs/frills.dm b/modular_skyrat/modules/customization/modules/surgery/organs/frills.dm index 185e688e779..e2d381a9b82 100644 --- a/modular_skyrat/modules/customization/modules/surgery/organs/frills.dm +++ b/modular_skyrat/modules/customization/modules/surgery/organs/frills.dm @@ -9,7 +9,10 @@ /datum/bodypart_overlay/mutant/frills/override_color(rgb_value) return draw_color -/datum/bodypart_overlay/mutant/frills/can_draw_on_bodypart(mob/living/carbon/human/human) +/datum/bodypart_overlay/mutant/frills/can_draw_on_bodypart(obj/item/bodypart/bodypart_owner) + var/mob/living/carbon/human/human = bodypart_owner.owner + if(!human) + return TRUE return !sprite_datum.is_hidden(human) /datum/bodypart_overlay/mutant/frills/get_global_feature_list() diff --git a/modular_skyrat/modules/customization/modules/surgery/organs/horns.dm b/modular_skyrat/modules/customization/modules/surgery/organs/horns.dm index efb22c9f971..b218546ed1f 100644 --- a/modular_skyrat/modules/customization/modules/surgery/organs/horns.dm +++ b/modular_skyrat/modules/customization/modules/surgery/organs/horns.dm @@ -12,5 +12,8 @@ /datum/bodypart_overlay/mutant/horns/override_color(rgb_value) return draw_color -/datum/bodypart_overlay/mutant/horns/can_draw_on_bodypart(mob/living/carbon/human/human) +/datum/bodypart_overlay/mutant/horns/can_draw_on_bodypart(obj/item/bodypart/bodypart_owner) + var/mob/living/carbon/human/human = bodypart_owner.owner + if(!human) + return TRUE return !sprite_datum.is_hidden(human) diff --git a/modular_skyrat/modules/customization/modules/surgery/organs/spines.dm b/modular_skyrat/modules/customization/modules/surgery/organs/spines.dm index 4eb3bc15caf..93f74180042 100644 --- a/modular_skyrat/modules/customization/modules/surgery/organs/spines.dm +++ b/modular_skyrat/modules/customization/modules/surgery/organs/spines.dm @@ -9,7 +9,10 @@ /datum/bodypart_overlay/mutant/spines/override_color(rgb_value) return draw_color -/datum/bodypart_overlay/mutant/spines/can_draw_on_bodypart(mob/living/carbon/human/human) +/datum/bodypart_overlay/mutant/spines/can_draw_on_bodypart(obj/item/bodypart/bodypart_owner) + var/mob/living/carbon/human/human = bodypart_owner.owner + if(!human) + return TRUE return !sprite_datum.is_hidden(human) /// We overwrite this just because we need to change the layer to be ever so slightly above the tails. @@ -29,7 +32,10 @@ /datum/bodypart_overlay/mutant/tail_spines/override_color(rgb_value) return draw_color -/datum/bodypart_overlay/mutant/tail_spines/can_draw_on_bodypart(mob/living/carbon/human/human) +/datum/bodypart_overlay/mutant/tail_spines/can_draw_on_bodypart(obj/item/bodypart/bodypart_owner) + var/mob/living/carbon/human/human = bodypart_owner.owner + if(!human) + return TRUE return !sprite_datum.is_hidden(human) /datum/bodypart_overlay/mutant/tail_spines/get_images(image_layer, obj/item/bodypart/limb) diff --git a/modular_skyrat/modules/customization/modules/surgery/organs/tails.dm b/modular_skyrat/modules/customization/modules/surgery/organs/tails.dm index cd3f7396a47..8dd55cc9754 100644 --- a/modular_skyrat/modules/customization/modules/surgery/organs/tails.dm +++ b/modular_skyrat/modules/customization/modules/surgery/organs/tails.dm @@ -16,7 +16,10 @@ /datum/bodypart_overlay/mutant/tail/get_base_icon_state() return sprite_datum.icon_state -/datum/bodypart_overlay/mutant/tail/can_draw_on_bodypart(mob/living/carbon/human/wearer) +/datum/bodypart_overlay/mutant/tail/can_draw_on_bodypart(obj/item/bodypart/bodypart_owner) + var/mob/living/carbon/human/wearer = bodypart_owner.owner + if(!wearer) + return TRUE var/list/used_in_turf = list("tail") // Emote exception if(wearer.owned_turf?.name in used_in_turf) diff --git a/modular_skyrat/modules/deforest_medical_items/code/healing_stack_items.dm b/modular_skyrat/modules/deforest_medical_items/code/healing_stack_items.dm index f03c01210d9..cf9545bca78 100644 --- a/modular_skyrat/modules/deforest_medical_items/code/healing_stack_items.dm +++ b/modular_skyrat/modules/deforest_medical_items/code/healing_stack_items.dm @@ -33,7 +33,7 @@ var/treatment_sound = 'sound/items/duct_tape/duct_tape_rip.ogg' // This is only relevant for the types of wounds defined, we can't work if there are none -/obj/item/stack/medical/wound_recovery/try_heal(mob/living/patient, mob/user, silent = FALSE, looping = FALSE, auto_change_zone = TRUE) +/obj/item/stack/medical/wound_recovery/try_heal(mob/living/patient, mob/user, silent = FALSE, looping = FALSE, auto_change_zone = TRUE, continuous = FALSE) if(patient.has_status_effect(/datum/status_effect/vulnerable_to_damage)) patient.balloon_alert(user, "still recovering from last use!") diff --git a/modular_skyrat/modules/deforest_medical_items/code/storage_items.dm b/modular_skyrat/modules/deforest_medical_items/code/storage_items.dm index cc94bfbf761..aab2154bce3 100644 --- a/modular_skyrat/modules/deforest_medical_items/code/storage_items.dm +++ b/modular_skyrat/modules/deforest_medical_items/code/storage_items.dm @@ -110,8 +110,8 @@ inhand_icon_state = "frontier" worn_icon = 'modular_skyrat/modules/deforest_medical_items/icons/worn/worn.dmi' worn_icon_teshari = 'modular_skyrat/modules/deforest_medical_items/icons/worn/worn_teshari.dmi' - pickup_sound = 'sound/items/handling/cloth_pickup.ogg' - drop_sound = 'sound/items/handling/cloth_drop.ogg' + pickup_sound = SFX_CLOTH_PICKUP + drop_sound = SFX_CLOTH_DROP slot_flags = ITEM_SLOT_BELT /obj/item/storage/medkit/frontier/stocked @@ -140,8 +140,8 @@ worn_icon = 'modular_skyrat/modules/deforest_medical_items/icons/worn/worn.dmi' worn_icon_teshari = 'modular_skyrat/modules/deforest_medical_items/icons/worn/worn_teshari.dmi' worn_icon_state = "frontier" - pickup_sound = 'sound/items/handling/cloth_pickup.ogg' - drop_sound = 'sound/items/handling/cloth_drop.ogg' + pickup_sound = SFX_CLOTH_PICKUP + drop_sound = SFX_CLOTH_DROP /obj/item/storage/medkit/combat_surgeon/Initialize(mapload) . = ..() @@ -173,8 +173,8 @@ worn_icon = 'modular_skyrat/modules/deforest_medical_items/icons/worn/worn.dmi' worn_icon_teshari = 'modular_skyrat/modules/deforest_medical_items/icons/worn/worn_teshari.dmi' equip_sound = 'sound/items/equip/jumpsuit_equip.ogg' - pickup_sound = 'sound/items/handling/cloth_pickup.ogg' - drop_sound = 'sound/items/handling/cloth_drop.ogg' + pickup_sound = SFX_CLOTH_PICKUP + drop_sound = SFX_CLOTH_DROP slot_flags = ITEM_SLOT_BACK | ITEM_SLOT_BELT storage_type = /datum/storage/duffel/deforest_medkit zip_slowdown = 0.25 // Most won't notice normally but it'll hurt you if you're a paramedic or in combat @@ -270,8 +270,8 @@ worn_icon = 'modular_skyrat/modules/deforest_medical_items/icons/worn/worn.dmi' worn_icon_teshari = 'modular_skyrat/modules/deforest_medical_items/icons/worn/worn_teshari.dmi' equip_sound = 'sound/items/equip/jumpsuit_equip.ogg' - pickup_sound = 'sound/items/handling/cloth_pickup.ogg' - drop_sound = 'sound/items/handling/cloth_drop.ogg' + pickup_sound = SFX_CLOTH_PICKUP + drop_sound = SFX_CLOTH_DROP slot_flags = ITEM_SLOT_BACK | ITEM_SLOT_BELT storage_type = /datum/storage/duffel/deforest_big_surgery zip_slowdown = 0.5 // Its a bulkier bag and thus slows you down a little more when unzipped @@ -379,8 +379,8 @@ worn_icon = 'modular_skyrat/modules/deforest_medical_items/icons/worn/worn.dmi' worn_icon_teshari = 'modular_skyrat/modules/deforest_medical_items/icons/worn/worn_teshari.dmi' equip_sound = 'sound/items/equip/jumpsuit_equip.ogg' - pickup_sound = 'sound/items/handling/cloth_pickup.ogg' - drop_sound = 'sound/items/handling/cloth_drop.ogg' + pickup_sound = SFX_CLOTH_PICKUP + drop_sound = SFX_CLOTH_DROP slot_flags = ITEM_SLOT_BACK | ITEM_SLOT_BELT storage_type = /datum/storage/duffel/deforest_paramedic zip_slowdown = 0.3 // Midrange between the other two bags diff --git a/modular_skyrat/modules/digitigrade_cybernetics/code/robot_bodyparts.dm b/modular_skyrat/modules/digitigrade_cybernetics/code/robot_bodyparts.dm index c9930581517..f0715de1702 100644 --- a/modular_skyrat/modules/digitigrade_cybernetics/code/robot_bodyparts.dm +++ b/modular_skyrat/modules/digitigrade_cybernetics/code/robot_bodyparts.dm @@ -42,9 +42,11 @@ icon_static = 'modular_skyrat/modules/digitigrade_cybernetics/icons/advanced_digitigrade_parts.dmi' icon = 'modular_skyrat/modules/digitigrade_cybernetics/icons/advanced_digitigrade_parts.dmi' bodyshape = parent_type::bodyshape | BODYSHAPE_DIGITIGRADE + is_emissive = FALSE /obj/item/bodypart/leg/left/robot/advanced/digi name = "advanced digitigrade right leg" icon_static = 'modular_skyrat/modules/digitigrade_cybernetics/icons/advanced_digitigrade_parts.dmi' icon = 'modular_skyrat/modules/digitigrade_cybernetics/icons/advanced_digitigrade_parts.dmi' bodyshape = parent_type::bodyshape | BODYSHAPE_DIGITIGRADE + is_emissive = FALSE diff --git a/modular_skyrat/modules/implants/code/augments_eyes.dm b/modular_skyrat/modules/implants/code/augments_eyes.dm index 761fa72ec9e..8146d7f4387 100644 --- a/modular_skyrat/modules/implants/code/augments_eyes.dm +++ b/modular_skyrat/modules/implants/code/augments_eyes.dm @@ -1,22 +1,3 @@ -/obj/item/organ/eyes/robotic - icon = 'modular_skyrat/modules/implants/icons/internal_HA.dmi' //So I had to fucking include the eye sprites - icon_state = "cybernetic_eyeballs" - -/obj/item/organ/eyes/robotic/xray - eye_color_left = "#00ffe5" - eye_color_right = "#00ffe5" - icon_state = "xray_eyes" - -/obj/item/organ/eyes/robotic/thermals - eye_color_left = "#FC0" - eye_color_right = "#FC0" - icon_state = "thermal_eyes" - -/obj/item/organ/eyes/robotic/shield - eye_color_left = "#ff2700" - eye_color_right = "#ff2700" - icon_state = "shielded_eyes" - /obj/item/organ/eyes/night_vision/cyber name = "nightvision eyes" icon = 'modular_skyrat/modules/implants/icons/internal_HA.dmi' //All in the chest implants .dmi diff --git a/modular_skyrat/modules/kahraman_equipment/code/clothing/mod.dm b/modular_skyrat/modules/kahraman_equipment/code/clothing/mod.dm index 1ea20cffe8d..56601610b8c 100644 --- a/modular_skyrat/modules/kahraman_equipment/code/clothing/mod.dm +++ b/modular_skyrat/modules/kahraman_equipment/code/clothing/mod.dm @@ -18,8 +18,7 @@ siemens_coefficient = 0 complexity_max = DEFAULT_MAX_COMPLEXITY - 7 charge_drain = DEFAULT_CHARGE_DRAIN * 2 - slowdown_inactive = 1.5 - slowdown_active = 1 + slowdown_deployed = 1 inbuilt_modules = list( /obj/item/mod/module/plate_compression/permanent, /obj/item/mod/module/joint_torsion/permanent diff --git a/modular_skyrat/modules/lorecaster/code/story_manager.dm b/modular_skyrat/modules/lorecaster/code/story_manager.dm index faf24ba726d..4b6560e13b6 100644 --- a/modular_skyrat/modules/lorecaster/code/story_manager.dm +++ b/modular_skyrat/modules/lorecaster/code/story_manager.dm @@ -68,7 +68,7 @@ ADMIN_VERB(lorecaster_story_manager, R_ADMIN, "Lorecaster Stories", "Open the Lo /datum/story_manager_interface/ui_state(mob/user) - return GLOB.admin_state + return ADMIN_STATE(R_ADMIN) /datum/story_manager_interface/ui_static_data(mob/user) diff --git a/modular_skyrat/modules/marines/code/mod.dm b/modular_skyrat/modules/marines/code/mod.dm index 310955ea168..4f65004686b 100644 --- a/modular_skyrat/modules/marines/code/mod.dm +++ b/modular_skyrat/modules/marines/code/mod.dm @@ -14,8 +14,7 @@ resistance_flags = FIRE_PROOF|ACID_PROOF max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT siemens_coefficient = 0 - slowdown_inactive = 0.5 - slowdown_active = 0 + slowdown_deployed = 0 complexity_max = DEFAULT_MAX_COMPLEXITY + 10 //drr drr drr allowed_suit_storage = list( /obj/item/flashlight, diff --git a/modular_skyrat/modules/modular_implants/code/nifs.dm b/modular_skyrat/modules/modular_implants/code/nifs.dm index 77167e25158..6ef68155321 100644 --- a/modular_skyrat/modules/modular_implants/code/nifs.dm +++ b/modular_skyrat/modules/modular_implants/code/nifs.dm @@ -373,7 +373,7 @@ ///Sends a message to the owner of the NIF. Typically used for messages from the NIF itself or from NIFSofts. /obj/item/organ/cyberimp/brain/nif/proc/send_message(message_to_send, alert = FALSE) - var/datum/asset/spritesheet/sheet = get_asset_datum(/datum/asset/spritesheet/chat) + var/datum/asset/spritesheet_batched/sheet = get_asset_datum(/datum/asset/spritesheet_batched/chat) var/tag = sheet.icon_tag("nif-[chat_icon]") var/nif_icon = "" @@ -484,10 +484,9 @@ return FALSE -/datum/asset/spritesheet/chat/create_spritesheets() +/datum/asset/spritesheet_batched/chat/create_spritesheets() . = ..() - - InsertAll("nif", 'modular_skyrat/modules/modular_implants/icons/chat.dmi') + insert_all_icons("nif", 'modular_skyrat/modules/modular_implants/icons/chat.dmi') /obj/item/autosurgeon/organ/nif starting_organ = /obj/item/organ/cyberimp/brain/nif/standard diff --git a/modular_skyrat/modules/modular_implants/code/nifsofts/hivemind.dm b/modular_skyrat/modules/modular_implants/code/nifsofts/hivemind.dm index 1397db05d44..93d794d3202 100644 --- a/modular_skyrat/modules/modular_implants/code/nifsofts/hivemind.dm +++ b/modular_skyrat/modules/modular_implants/code/nifsofts/hivemind.dm @@ -285,7 +285,7 @@ GLOBAL_LIST_EMPTY(hivemind_users) to_chat(user, span_warning("The link seems to have been severed.")) return - var/datum/asset/spritesheet/sheet = get_asset_datum(/datum/asset/spritesheet/chat) + var/datum/asset/spritesheet_batched/sheet = get_asset_datum(/datum/asset/spritesheet_batched/chat) var/tag = sheet.icon_tag("nif-phone") var/hivemind_icon = "" diff --git a/modular_skyrat/modules/modular_items/lewd_items/code/lewd_clothing/corset.dm b/modular_skyrat/modules/modular_items/lewd_items/code/lewd_clothing/corset.dm index d7963c9b48a..8a2bb564eb1 100644 --- a/modular_skyrat/modules/modular_items/lewd_items/code/lewd_clothing/corset.dm +++ b/modular_skyrat/modules/modular_items/lewd_items/code/lewd_clothing/corset.dm @@ -20,7 +20,7 @@ /obj/item/clothing/suit/corset/click_alt(mob/user) laced_tight = !laced_tight to_chat(user, span_notice("You [laced_tight ? "tighten" : "loosen"] the corset, making it far [laced_tight ? "harder" : "easier"] to breathe.")) - conditional_pref_sound(user, laced_tight ? 'sound/items/handling/cloth_pickup.ogg' : 'sound/items/handling/cloth_drop.ogg', 40, TRUE) + conditional_pref_sound(user, laced_tight ? get_sfx(SFX_CLOTH_PICKUP) : get_sfx(SFX_CLOTH_DROP), 40, TRUE) . = CLICK_ACTION_SUCCESS if(laced_tight) slowdown = TIGHT_SLOWDOWN diff --git a/modular_skyrat/modules/modular_items/lewd_items/code/lewd_items/_sex_toy.dm b/modular_skyrat/modules/modular_items/lewd_items/code/lewd_items/_sex_toy.dm index 8bdbf5fb5a0..6b0c8bc41ca 100644 --- a/modular_skyrat/modules/modular_items/lewd_items/code/lewd_items/_sex_toy.dm +++ b/modular_skyrat/modules/modular_items/lewd_items/code/lewd_items/_sex_toy.dm @@ -4,7 +4,7 @@ worn_icon = 'modular_skyrat/modules/modular_items/lewd_items/icons/mob/lewd_items/lewd_items.dmi' equip_sound = 'modular_skyrat/modules/modular_items/lewd_items/sounds/bang1.ogg' drop_sound = 'modular_skyrat/modules/modular_items/lewd_items/sounds/bang2.ogg' - pickup_sound = 'sound/items/handling/cloth_pickup.ogg' + pickup_sound = SFX_CLOTH_PICKUP /// This is used to decide what lewd slot a toy should be able to be inserted into. /// The currently accepted defines are all prefixes with LEWD_SLOT_, and there is one for each lewd organ. /// See code/__DEFINES/~skyrat_defines/inventory.dm for the full list. diff --git a/modular_skyrat/modules/modular_items/lewd_items/code/lewd_items/feather.dm b/modular_skyrat/modules/modular_items/lewd_items/code/lewd_items/feather.dm index c4fa1b7a322..82bad408306 100644 --- a/modular_skyrat/modules/modular_items/lewd_items/code/lewd_items/feather.dm +++ b/modular_skyrat/modules/modular_items/lewd_items/code/lewd_items/feather.dm @@ -83,9 +83,9 @@ user.visible_message(span_purple("[user] [message]!")) conditional_pref_sound(loc, \ pick( - 'sound/items/handling/cloth_drop.ogg', // I duplicate this part of code because im useless shitcoder that can't make it work properly without tons of repeating code blocks - 'sound/items/handling/cloth_pickup.ogg', // If you can make it better - go ahead, modify it, please. - 'sound/items/handling/cloth_pickup.ogg', + get_sfx(SFX_CLOTH_DROP), // I duplicate this part of code because im useless shitcoder that can't make it work properly without tons of repeating code blocks + get_sfx(SFX_CLOTH_PICKUP), // If you can make it better - go ahead, modify it, please. + get_sfx(SFX_CLOTH_PICKUP), ), 70, 1, -1) //Mood boost diff --git a/modular_skyrat/modules/modular_items/lewd_items/code/lewd_structures/bdsm_furniture.dm b/modular_skyrat/modules/modular_items/lewd_items/code/lewd_structures/bdsm_furniture.dm index 626b636b894..a1167ef07ea 100644 --- a/modular_skyrat/modules/modular_items/lewd_items/code/lewd_structures/bdsm_furniture.dm +++ b/modular_skyrat/modules/modular_items/lewd_items/code/lewd_structures/bdsm_furniture.dm @@ -47,12 +47,13 @@ /obj/structure/bed/bdsm_bed/post_buckle_mob(mob/living/affected_mob) density = TRUE //Push them up from the normal lying position - affected_mob.pixel_y = affected_mob.base_pixel_y + var/y_offset = -1 * PIXEL_Y_OFFSET_LYING + affected_mob.add_offsets(type, y_add = y_offset) /obj/structure/bed/bdsm_bed/post_unbuckle_mob(mob/living/affected_mob) density = FALSE //Set them back down to the normal lying position - affected_mob.pixel_y = affected_mob.base_pixel_y + affected_mob.body_position_pixel_y_offset + affected_mob.remove_offsets(type) /obj/structure/bed/bdsm_bed/click_ctrl_shift(mob/user) add_fingerprint(user) @@ -240,8 +241,6 @@ //Place the mob in the desired position after buckling /obj/structure/chair/x_stand/post_buckle_mob(mob/living/affected_mob) - affected_mob.pixel_y = affected_mob.base_pixel_y - affected_mob.pixel_x = affected_mob.base_pixel_x affected_mob.layer = BELOW_MOB_LAYER if(LAZYLEN(buckled_mobs)) @@ -264,8 +263,6 @@ //Restore the position of the mob after unbuckling. /obj/structure/chair/x_stand/post_unbuckle_mob(mob/living/affected_mob) - affected_mob.pixel_x = affected_mob.base_pixel_x + affected_mob.body_position_pixel_x_offset - affected_mob.pixel_y = affected_mob.base_pixel_y + affected_mob.body_position_pixel_y_offset affected_mob.layer = initial(affected_mob.layer) if(!current_mob) diff --git a/modular_skyrat/modules/modular_items/lewd_items/code/lewd_structures/shibari_stand.dm b/modular_skyrat/modules/modular_items/lewd_items/code/lewd_structures/shibari_stand.dm index e9c0a2ad3aa..401d3aeba55 100644 --- a/modular_skyrat/modules/modular_items/lewd_items/code/lewd_structures/shibari_stand.dm +++ b/modular_skyrat/modules/modular_items/lewd_items/code/lewd_structures/shibari_stand.dm @@ -139,8 +139,7 @@ add_overlay(shibari_rope_overlay_behind) /obj/structure/chair/shibari_stand/post_buckle_mob(mob/living/buckled) - buckled.pixel_y = buckled.base_pixel_y + 4 - buckled.pixel_x = buckled.base_pixel_x + buckled.add_offsets(type, y_add = 4) buckled.layer = BELOW_MOB_LAYER if(LAZYLEN(buckled_mobs)) @@ -163,8 +162,7 @@ //Restore the position of the mob after unbuckling. /obj/structure/chair/shibari_stand/post_unbuckle_mob(mob/living/buckled) - buckled.pixel_x = buckled.base_pixel_x + buckled.body_position_pixel_x_offset - buckled.pixel_y = buckled.base_pixel_y + buckled.body_position_pixel_y_offset - 4 + buckled.remove_offsets(type) buckled.layer = initial(buckled.layer) cut_overlay(shibari_shadow_overlay) diff --git a/modular_skyrat/modules/modular_weapons/code/company_and_or_faction_based/xhihao_light_arms/rifle.dm b/modular_skyrat/modules/modular_weapons/code/company_and_or_faction_based/xhihao_light_arms/rifle.dm index cf0b9433f5f..97a2ac05d61 100644 --- a/modular_skyrat/modules/modular_weapons/code/company_and_or_faction_based/xhihao_light_arms/rifle.dm +++ b/modular_skyrat/modules/modular_weapons/code/company_and_or_faction_based/xhihao_light_arms/rifle.dm @@ -9,7 +9,7 @@ icon = 'modular_skyrat/modules/modular_weapons/icons/obj/company_and_or_faction_based/xhihao_light_arms/guns40x.dmi' icon_state = "rengo" worn_icon_state = "enchanted_rifle" // Not actually magical looking, just looks closest to this one - inhand_icon_state = "enchanted_rifle" + inhand_icon_state = "sakhno" accepted_magazine_type = /obj/item/ammo_box/magazine/internal/boltaction/bubba can_be_sawn_off = FALSE diff --git a/modular_skyrat/modules/morefermentplants/code/misc.dm b/modular_skyrat/modules/morefermentplants/code/misc.dm index c71a1fad834..520bdc7ded5 100644 --- a/modular_skyrat/modules/morefermentplants/code/misc.dm +++ b/modular_skyrat/modules/morefermentplants/code/misc.dm @@ -4,7 +4,7 @@ /obj/item/food/grown/cabbage distill_reagent = /datum/reagent/consumable/ethanol/coldscales -/obj/item/food/grown/shell/gatfruit +/obj/item/food/grown/gatfruit distill_reagent = /datum/reagent/consumable/ethanol/hellfire /obj/item/food/grown/cherry_bomb diff --git a/modular_skyrat/modules/novaya_ert/code/mod_suit.dm b/modular_skyrat/modules/novaya_ert/code/mod_suit.dm index e85125c1728..471175317e7 100644 --- a/modular_skyrat/modules/novaya_ert/code/mod_suit.dm +++ b/modular_skyrat/modules/novaya_ert/code/mod_suit.dm @@ -107,8 +107,7 @@ armor_type = /datum/armor/mod_theme_policing complexity_max = DEFAULT_MAX_COMPLEXITY - 1 charge_drain = DEFAULT_CHARGE_DRAIN * 1.25 - slowdown_inactive = 1.5 - slowdown_active = 0.5 + slowdown_deployed = 0.5 allowed_suit_storage = list( /obj/item/flashlight, /obj/item/tank/internals, diff --git a/modular_skyrat/modules/pixel_shift/code/pixel_shift_component.dm b/modular_skyrat/modules/pixel_shift/code/pixel_shift_component.dm index a66e188a336..b5ec1f09761 100644 --- a/modular_skyrat/modules/pixel_shift/code/pixel_shift_component.dm +++ b/modular_skyrat/modules/pixel_shift/code/pixel_shift_component.dm @@ -14,6 +14,10 @@ var/maximum_pixel_shift = 16 //If we are shifted var/is_shifted = FALSE + //Amount of shift in the X axis + var/shift_x = 0 + //Amount of shift in the Y axis + var/shift_y = 0 //Allows atoms entering Parent's turf to pass through freely from given directions var/passthroughable = NONE //Amount of shifting necessary to make the parent passthroughable @@ -103,8 +107,7 @@ passthroughable = NONE if(is_shifted) var/mob/living/owner = parent - owner.pixel_x = owner.body_position_pixel_x_offset + owner.base_pixel_x - owner.pixel_y = owner.body_position_pixel_y_offset + owner.base_pixel_y + owner.remove_offsets(type) owner.transform = turn(owner.transform, -how_tilted) qdel(src) @@ -134,20 +137,24 @@ if(SHIFTING_PARENT) switch(direct) if(NORTH) - if(owner.pixel_y <= maximum_pixel_shift + owner.base_pixel_y) - owner.pixel_y++ + if(shift_y <= maximum_pixel_shift + owner.base_pixel_y) + shift_y++ + owner.add_offsets(type, y_add = shift_y) is_shifted = TRUE if(EAST) - if(owner.pixel_x <= maximum_pixel_shift + owner.base_pixel_x) - owner.pixel_x++ + if(shift_x <= maximum_pixel_shift + owner.base_pixel_x) + shift_x++ + owner.add_offsets(type, x_add = shift_x) is_shifted = TRUE if(SOUTH) - if(owner.pixel_y >= -maximum_pixel_shift + owner.base_pixel_y) - owner.pixel_y-- + if(shift_y >= -maximum_pixel_shift + owner.base_pixel_y) + shift_y-- + owner.add_offsets(type, y_add = shift_y) is_shifted = TRUE if(WEST) - if(owner.pixel_x >= -maximum_pixel_shift + owner.base_pixel_x) - owner.pixel_x-- + if(shift_x >= -maximum_pixel_shift + owner.base_pixel_x) + shift_x-- + owner.add_offsets(type, x_add = shift_x) is_shifted = TRUE if(TILTING_PARENT) switch(direct) @@ -164,13 +171,13 @@ // Yes, I know this sets it to true for everything if more than one is matched. // Movement doesn't check diagonals, and instead just checks EAST or WEST, depending on where you are for those. - if(owner.pixel_y > passthrough_threshold) + if(shift_y > passthrough_threshold) passthroughable |= EAST | SOUTH | WEST - else if(owner.pixel_y < -passthrough_threshold) + else if(shift_y < -passthrough_threshold) passthroughable |= NORTH | EAST | WEST - if(owner.pixel_x > passthrough_threshold) + if(shift_x > passthrough_threshold) passthroughable |= NORTH | SOUTH | WEST - else if(owner.pixel_x < -passthrough_threshold) + else if(shift_x < -passthrough_threshold) passthroughable |= NORTH | EAST | SOUTH #undef SHIFTING_ITEMS diff --git a/modular_skyrat/modules/quirks/negative.dm b/modular_skyrat/modules/quirks/negative.dm index 5387f215df5..0c52088c2ba 100644 --- a/modular_skyrat/modules/quirks/negative.dm +++ b/modular_skyrat/modules/quirks/negative.dm @@ -58,6 +58,8 @@ /datum/quirk/fragile/remove() . = ..() + if(QDELETED(quirk_holder)) + return var/mob/living/carbon/human/user = quirk_holder var/datum/preferences/prefs = user.client.prefs var/brutemod = prefs.read_preference(/datum/preference/numeric/fragile_customization/brute) diff --git a/modular_skyrat/modules/reagent_forging/code/anvil.dm b/modular_skyrat/modules/reagent_forging/code/anvil.dm index 8b2b00dcc43..d6cca513a39 100644 --- a/modular_skyrat/modules/reagent_forging/code/anvil.dm +++ b/modular_skyrat/modules/reagent_forging/code/anvil.dm @@ -79,7 +79,7 @@ return ITEM_INTERACT_SUCCESS /obj/structure/reagent_anvil/hammer_act(mob/living/user, obj/item/tool) - conditional_pref_sound(src, 'modular_skyrat/modules/reagent_forging/sound/forge.ogg', 50, TRUE, pref_to_check = /datum/preference/numeric/sound_ambience_volume) + conditional_pref_sound(src, 'modular_skyrat/modules/reagent_forging/sound/forge.ogg', 50, TRUE, pref_to_check = /datum/preference/numeric/volume/sound_ambience_volume) //do we have an incomplete item to hammer out? if so, here is our block of code var/obj/item/forging/incomplete/locate_incomplete = locate() in contents diff --git a/modular_skyrat/modules/reagent_forging/code/forge_clothing.dm b/modular_skyrat/modules/reagent_forging/code/forge_clothing.dm index 3533c197125..781ca88788a 100644 --- a/modular_skyrat/modules/reagent_forging/code/forge_clothing.dm +++ b/modular_skyrat/modules/reagent_forging/code/forge_clothing.dm @@ -101,7 +101,7 @@ material_flags = MATERIAL_EFFECTS | MATERIAL_ADD_PREFIX | MATERIAL_COLOR resistance_flags = FIRE_PROOF skyrat_obj_flags = ANVIL_REPAIR - can_be_tied = FALSE + fastening_type = SHOES_SLIPON /datum/armor/shoes_forging_plate_boots melee = 20 diff --git a/modular_skyrat/modules/simple_research/cloaks.dmi b/modular_skyrat/modules/simple_research/icons/cloaks.dmi similarity index 100% rename from modular_skyrat/modules/simple_research/cloaks.dmi rename to modular_skyrat/modules/simple_research/icons/cloaks.dmi diff --git a/modular_skyrat/modules/simple_research/neck.dmi b/modular_skyrat/modules/simple_research/icons/neck.dmi similarity index 100% rename from modular_skyrat/modules/simple_research/neck.dmi rename to modular_skyrat/modules/simple_research/icons/neck.dmi diff --git a/modular_skyrat/modules/simple_research/researching.dmi b/modular_skyrat/modules/simple_research/icons/researching.dmi similarity index 100% rename from modular_skyrat/modules/simple_research/researching.dmi rename to modular_skyrat/modules/simple_research/icons/researching.dmi diff --git a/modular_skyrat/modules/simple_research/research_document.dm b/modular_skyrat/modules/simple_research/research_document.dm index bf3b14e2a74..59c5ce563bc 100644 --- a/modular_skyrat/modules/simple_research/research_document.dm +++ b/modular_skyrat/modules/simple_research/research_document.dm @@ -11,7 +11,7 @@ /obj/item/research_paper name = "research paper" desc = "Some people want to return to simpler technology, and some want to only begin researching those simple technologies." - icon = 'modular_skyrat/modules/simple_research/researching.dmi' + icon = 'modular_skyrat/modules/simple_research/icons/researching.dmi' icon_state = "scroll" ///the list of discovered items var/list/discovered_items = list() @@ -39,9 +39,9 @@ GLOB.simple_research += list("[shape_pattern]" = datum_path) radial_icons_cache = list( - "pyramid" = image(icon = 'modular_skyrat/modules/simple_research/researching.dmi', icon_state = "pyramid"), - "cube" = image(icon = 'modular_skyrat/modules/simple_research/researching.dmi', icon_state = "cube"), - "sphere" = image(icon = 'modular_skyrat/modules/simple_research/researching.dmi', icon_state = "sphere"), + "pyramid" = image(icon = 'modular_skyrat/modules/simple_research/icons/researching.dmi', icon_state = "pyramid"), + "cube" = image(icon = 'modular_skyrat/modules/simple_research/icons/researching.dmi', icon_state = "cube"), + "sphere" = image(icon = 'modular_skyrat/modules/simple_research/icons/researching.dmi', icon_state = "sphere"), ) /obj/item/research_paper/attack_self(mob/user, modifiers) @@ -105,7 +105,7 @@ /obj/item/research_scrap name = "research scrap" desc = "Small sketches of an item are drawn on the scrap-- if you use the materials, you might be able to craft the item on the scrap!" - icon = 'modular_skyrat/modules/simple_research/researching.dmi' + icon = 'modular_skyrat/modules/simple_research/icons/researching.dmi' icon_state = "scrap" ///what will be spawned var/obj/spawning_item diff --git a/modular_skyrat/modules/simple_research/research_skill.dm b/modular_skyrat/modules/simple_research/research_skill.dm index 3bfaa4689dd..fa7211f40d4 100644 --- a/modular_skyrat/modules/simple_research/research_skill.dm +++ b/modular_skyrat/modules/simple_research/research_skill.dm @@ -12,7 +12,7 @@ name = "legendary researcher's cloak" desc = "This legendary cloak is awarded only to those who have created a large stir within the scientific community with their contributions. \ Those who wear this cloak create the scientific foundations, and have the ability to discern the truth of the universe even from the most mundane things." - icon = 'modular_skyrat/modules/simple_research/cloaks.dmi' - worn_icon = 'modular_skyrat/modules/simple_research/neck.dmi' + icon = 'modular_skyrat/modules/simple_research/icons/cloaks.dmi' + worn_icon = 'modular_skyrat/modules/simple_research/icons/neck.dmi' icon_state = "researchcloak" associated_skill_path = /datum/skill/research diff --git a/modular_skyrat/modules/space_vines/back.dmi b/modular_skyrat/modules/space_vines/icons/back.dmi similarity index 100% rename from modular_skyrat/modules/space_vines/back.dmi rename to modular_skyrat/modules/space_vines/icons/back.dmi diff --git a/modular_skyrat/modules/space_vines/items_and_weapons.dmi b/modular_skyrat/modules/space_vines/icons/items_and_weapons.dmi similarity index 100% rename from modular_skyrat/modules/space_vines/items_and_weapons.dmi rename to modular_skyrat/modules/space_vines/icons/items_and_weapons.dmi diff --git a/modular_skyrat/modules/space_vines/polearms_lefthand.dmi b/modular_skyrat/modules/space_vines/icons/polearms_lefthand.dmi similarity index 100% rename from modular_skyrat/modules/space_vines/polearms_lefthand.dmi rename to modular_skyrat/modules/space_vines/icons/polearms_lefthand.dmi diff --git a/modular_skyrat/modules/space_vines/polearms_righthand.dmi b/modular_skyrat/modules/space_vines/icons/polearms_righthand.dmi similarity index 100% rename from modular_skyrat/modules/space_vines/polearms_righthand.dmi rename to modular_skyrat/modules/space_vines/icons/polearms_righthand.dmi diff --git a/modular_skyrat/modules/space_vines/scythes.dm b/modular_skyrat/modules/space_vines/scythes.dm index 272f3cdede8..4f346613001 100644 --- a/modular_skyrat/modules/space_vines/scythes.dm +++ b/modular_skyrat/modules/space_vines/scythes.dm @@ -1,11 +1,11 @@ /obj/item/scythe name = "scythe" desc = "A sharp and curved blade on a long fibremetal handle, this tool makes it easy to reap what you sow." - icon = 'modular_skyrat/modules/space_vines/items_and_weapons.dmi' + icon = 'modular_skyrat/modules/space_vines/icons/items_and_weapons.dmi' icon_state = "scythe_t1" - worn_icon = 'modular_skyrat/modules/space_vines/back.dmi' - lefthand_file = 'modular_skyrat/modules/space_vines/polearms_lefthand.dmi' - righthand_file = 'modular_skyrat/modules/space_vines/polearms_righthand.dmi' + worn_icon = 'modular_skyrat/modules/space_vines/icons/back.dmi' + lefthand_file = 'modular_skyrat/modules/space_vines/icons/polearms_lefthand.dmi' + righthand_file = 'modular_skyrat/modules/space_vines/icons/polearms_righthand.dmi' force = 13 throwforce = 5 throw_speed = 2 diff --git a/modular_skyrat/modules/stormtrooper/code/stormtrooper_clothes.dm b/modular_skyrat/modules/stormtrooper/code/stormtrooper_clothes.dm index 938dc421bb3..3b32af4c214 100644 --- a/modular_skyrat/modules/stormtrooper/code/stormtrooper_clothes.dm +++ b/modular_skyrat/modules/stormtrooper/code/stormtrooper_clothes.dm @@ -24,7 +24,7 @@ strip_delay = 30 equip_delay_other = 50 resistance_flags = NONE - can_be_tied = FALSE + fastening_type = SHOES_SLIPON supports_variations_flags = NONE /obj/item/clothing/gloves/combat/peacekeeper/stormtrooper diff --git a/modular_skyrat/modules/synths/code/bodyparts/eyes.dm b/modular_skyrat/modules/synths/code/bodyparts/eyes.dm index eebc19d8697..190e5023926 100644 --- a/modular_skyrat/modules/synths/code/bodyparts/eyes.dm +++ b/modular_skyrat/modules/synths/code/bodyparts/eyes.dm @@ -1,6 +1,6 @@ /obj/item/organ/eyes/synth name = "optical sensors" - icon_state = "cybernetic_eyeballs" + icon_state = "eyes_cyber" desc = "A very basic set of optical sensors with no extra vision modes or functions." maxHealth = 1 * STANDARD_ORGAN_THRESHOLD organ_flags = ORGAN_ROBOTIC diff --git a/modular_skyrat/modules/tarkon/code/clothing/mod.dm b/modular_skyrat/modules/tarkon/code/clothing/mod.dm index 4de47e732a6..dbbef180318 100644 --- a/modular_skyrat/modules/tarkon/code/clothing/mod.dm +++ b/modular_skyrat/modules/tarkon/code/clothing/mod.dm @@ -101,7 +101,7 @@ inbuilt_modules = list() charge_drain = DEFAULT_CHARGE_DRAIN * 3 siemens_coefficient = 0 - slowdown_active = 1 + slowdown_deployed = 1 /obj/item/mod/control/pre_equipped/prototype/hauler theme = /datum/mod_theme/prototype/hauler diff --git a/modular_skyrat/modules/tarkon/code/misc-fluff/tools.dm b/modular_skyrat/modules/tarkon/code/misc-fluff/tools.dm index 970d026536b..86a53f13656 100644 --- a/modular_skyrat/modules/tarkon/code/misc-fluff/tools.dm +++ b/modular_skyrat/modules/tarkon/code/misc-fluff/tools.dm @@ -7,4 +7,4 @@ canRturf = FALSE max_matter = 300 matter = 300 - upgrade = RCD_UPGRADE_FRAMES | RCD_UPGRADE_SIMPLE_CIRCUITS + construction_upgrades = RCD_UPGRADE_FRAMES | RCD_UPGRADE_SIMPLE_CIRCUITS diff --git a/modular_skyrat/modules/taur_mechanics/code/constrict.dm b/modular_skyrat/modules/taur_mechanics/code/constrict.dm index 00ac67851ad..17a2bb4a7f1 100644 --- a/modular_skyrat/modules/taur_mechanics/code/constrict.dm +++ b/modular_skyrat/modules/taur_mechanics/code/constrict.dm @@ -8,7 +8,7 @@ desc = "Left click to coil/uncoil your powerful tail around something, right click to begin crushing." check_flags = AB_CHECK_LYING|AB_CHECK_CONSCIOUS|AB_CHECK_INCAPACITATED|AB_CHECK_PHASED - button_icon = 'modular_skyrat/modules/taur_mechanics/sprites/ability.dmi' + button_icon = 'modular_skyrat/modules/taur_mechanics/icons/ability.dmi' button_icon_state = "constrict" ranged_mousepointer = 'icons/effects/mouse_pointers/supplypod_pickturf.dmi' @@ -125,7 +125,7 @@ name = "serpentine tail" desc = "A scaley tail, currently coiled." - icon = 'modular_skyrat/modules/taur_mechanics/sprites/tail.dmi' + icon = 'modular_skyrat/modules/taur_mechanics/icons/tail.dmi' icon_state = "naga" pixel_x = -16 @@ -190,7 +190,7 @@ if (tail_overlay) return tail_overlay // we already have it - tail_overlay = mutable_appearance('modular_skyrat/modules/taur_mechanics/sprites/tail.dmi', "naga_top", ABOVE_MOB_LAYER + 0.01, src) + tail_overlay = mutable_appearance('modular_skyrat/modules/taur_mechanics/icons/tail.dmi', "naga_top", ABOVE_MOB_LAYER + 0.01, src) tail_overlay.appearance_flags = TILE_BOUND|PIXEL_SCALE|KEEP_TOGETHER tail_overlay.setDir(owner.dir) add_overlay(tail_overlay) @@ -642,7 +642,7 @@ name = "Constricted" desc = "You're being constricted by a giant tail! You can resist, attack the tail, or attack the constrictor to escape!" - icon = 'modular_skyrat/modules/taur_mechanics/sprites/ability.dmi' + icon = 'modular_skyrat/modules/taur_mechanics/icons/ability.dmi' icon_state = "constrict" #undef CONSTRICT_BASE_PIXEL_SHIFT diff --git a/modular_skyrat/modules/taur_mechanics/code/saddles.dm b/modular_skyrat/modules/taur_mechanics/code/saddles.dm index 963053cddb3..759e0d0c151 100644 --- a/modular_skyrat/modules/taur_mechanics/code/saddles.dm +++ b/modular_skyrat/modules/taur_mechanics/code/saddles.dm @@ -3,9 +3,9 @@ desc = "someone spawned a basetype!" slot_flags = ITEM_SLOT_BACK // no storage - icon = 'modular_skyrat/modules/taur_mechanics/sprites/saddles.dmi' - worn_icon = 'modular_skyrat/modules/taur_mechanics/sprites/saddles.dmi' - worn_icon_taur_snake = 'modular_skyrat/modules/taur_mechanics/sprites/saddles.dmi' + icon = 'modular_skyrat/modules/taur_mechanics/icons/saddles.dmi' + worn_icon = 'modular_skyrat/modules/taur_mechanics/icons/saddles.dmi' + worn_icon_taur_snake = 'modular_skyrat/modules/taur_mechanics/icons/saddles.dmi' supports_variations_flags = STYLE_TAUR_HOOF|STYLE_TAUR_PAW /obj/item/riding_saddle/Initialize(mapload) @@ -51,9 +51,9 @@ slot_flags = ITEM_SLOT_BACK - icon = 'modular_skyrat/modules/taur_mechanics/sprites/saddles.dmi' - worn_icon = 'modular_skyrat/modules/taur_mechanics/sprites/saddles.dmi' - worn_icon_taur_snake = 'modular_skyrat/modules/taur_mechanics/sprites/saddles.dmi' + icon = 'modular_skyrat/modules/taur_mechanics/icons/saddles.dmi' + worn_icon = 'modular_skyrat/modules/taur_mechanics/icons/saddles.dmi' + worn_icon_taur_snake = 'modular_skyrat/modules/taur_mechanics/icons/saddles.dmi' supports_variations_flags = STYLE_TAUR_HOOF|STYLE_TAUR_PAW storage_type = /datum/storage/saddlebags diff --git a/modular_skyrat/modules/taur_mechanics/sprites/ability.dmi b/modular_skyrat/modules/taur_mechanics/icons/ability.dmi similarity index 100% rename from modular_skyrat/modules/taur_mechanics/sprites/ability.dmi rename to modular_skyrat/modules/taur_mechanics/icons/ability.dmi diff --git a/modular_skyrat/modules/taur_mechanics/sprites/saddles.dmi b/modular_skyrat/modules/taur_mechanics/icons/saddles.dmi similarity index 100% rename from modular_skyrat/modules/taur_mechanics/sprites/saddles.dmi rename to modular_skyrat/modules/taur_mechanics/icons/saddles.dmi diff --git a/modular_skyrat/modules/taur_mechanics/sprites/tail.dmi b/modular_skyrat/modules/taur_mechanics/icons/tail.dmi similarity index 100% rename from modular_skyrat/modules/taur_mechanics/sprites/tail.dmi rename to modular_skyrat/modules/taur_mechanics/icons/tail.dmi diff --git a/modular_zubbers/code/_globalvars/lists/maintenance_loot_common.dm b/modular_zubbers/code/_globalvars/lists/maintenance_loot_common.dm index 3e732c6236d..11287f9d5e6 100644 --- a/modular_zubbers/code/_globalvars/lists/maintenance_loot_common.dm +++ b/modular_zubbers/code/_globalvars/lists/maintenance_loot_common.dm @@ -852,7 +852,7 @@ GLOBAL_LIST_INIT(common_loot, list( //common: basic items /obj/item/food/grown/rainbow_flower = 25, /obj/item/food/grown/random = 100, /obj/item/food/grown/rose = 25, - /obj/item/food/grown/shell/eggy = 25, + /obj/item/food/grown/eggy = 25, /obj/item/food/grown/tea/catnip = 25, /obj/item/food/grown/tomato = 75 ) = 75, diff --git a/modular_zubbers/code/datums/quirks/neutral_quirks/entombed.dm b/modular_zubbers/code/datums/quirks/neutral_quirks/entombed.dm index f0fadbabef7..5f6f2f26454 100644 --- a/modular_zubbers/code/datums/quirks/neutral_quirks/entombed.dm +++ b/modular_zubbers/code/datums/quirks/neutral_quirks/entombed.dm @@ -113,7 +113,7 @@ if (force_dropped_items) var/obj/item/old_bag = locate() in force_dropped_items if (old_bag.atom_storage) - old_bag.atom_storage.dump_content_at(modsuit, human_holder) + old_bag.atom_storage.dump_content_at(modsuit, modsuit.get_dumping_location(), human_holder) /datum/quirk/equipping/entombed/post_add() . = ..() diff --git a/modular_zubbers/code/datums/quirks/neutral_quirks/lungs.dm b/modular_zubbers/code/datums/quirks/neutral_quirks/lungs.dm index f599482e668..f1c9aaf7421 100644 --- a/modular_zubbers/code/datums/quirks/neutral_quirks/lungs.dm +++ b/modular_zubbers/code/datums/quirks/neutral_quirks/lungs.dm @@ -41,6 +41,8 @@ return var/obj/item/clothing/accessory/breathing/acc = equipped acc.breath_type = breath_type + if(!human_holder?.w_uniform) + return if (acc.can_attach_accessory(human_holder?.w_uniform, human_holder)) acc.attach(human_holder.w_uniform, human_holder) diff --git a/modular_zubbers/code/datums/quirks/positive_quirks/life_savings.dm b/modular_zubbers/code/datums/quirks/positive_quirks/life_savings.dm index 6e8893286c9..d513956eb85 100644 --- a/modular_zubbers/code/datums/quirks/positive_quirks/life_savings.dm +++ b/modular_zubbers/code/datums/quirks/positive_quirks/life_savings.dm @@ -34,4 +34,6 @@ /datum/quirk/life_savings/remove() . = ..() + if(QDELETED(quirk_holder)) + return UnregisterSignal(owner_account, COMSIG_ON_BANK_ACCOUNT_PAYOUT) diff --git a/modular_zubbers/code/datums/quirks/positive_quirks/venemous_bite/venomous_bite_quirk.dm b/modular_zubbers/code/datums/quirks/positive_quirks/venemous_bite/venomous_bite_quirk.dm index 86d169e8ec4..cc5202f8583 100644 --- a/modular_zubbers/code/datums/quirks/positive_quirks/venemous_bite/venomous_bite_quirk.dm +++ b/modular_zubbers/code/datums/quirks/positive_quirks/venemous_bite/venomous_bite_quirk.dm @@ -15,6 +15,8 @@ action.Grant(human_holder) /datum/quirk/venomous_bite/remove() + if(QDELETED(quirk_holder)) + return ..() var/datum/action/cooldown/mob_cooldown/venomous_bite/action = locate(/datum/action/cooldown/mob_cooldown/venomous_bite) in quirk_holder.actions action.Remove() diff --git a/modular_zubbers/code/modules/GAGS/greyscale_configs.dm b/modular_zubbers/code/modules/GAGS/greyscale_configs.dm index 222972419db..698fa296951 100644 --- a/modular_zubbers/code/modules/GAGS/greyscale_configs.dm +++ b/modular_zubbers/code/modules/GAGS/greyscale_configs.dm @@ -4,7 +4,7 @@ /datum/greyscale_config/collar/ringbell name = "Ring Bell Collar" - icon_file = 'modular_zubbers/code/modules/GAGS/icons/collar.dmi' + icon_file = 'modular_zubbers/icons/obj/clothing/GAGS/collar.dmi' json_config = 'modular_skyrat/modules/GAGS/json_configs/collar/ringbell.json' /datum/greyscale_config/collar/ringbell/worn @@ -13,7 +13,7 @@ /datum/greyscale_config/collar/gps name = "GPS Collar" - icon_file = 'modular_zubbers/code/modules/GAGS/icons/collar.dmi' + icon_file = 'modular_zubbers/icons/obj/clothing/GAGS/collar.dmi' json_config = 'modular_skyrat/modules/GAGS/json_configs/collar/gps.json' /datum/greyscale_config/collar/gps/worn @@ -95,12 +95,12 @@ /datum/greyscale_config/henchmen name = "Henchmen" - icon_file = 'modular_zubbers/code/modules/GAGS/icons/monkehenchmenobj.dmi' + icon_file = 'modular_zubbers/icons/obj/clothing/GAGS/monkehenchmenobj.dmi' json_config = 'modular_skyrat/modules/GAGS/json_configs/henchmen/henchmen.json' /datum/greyscale_config/henchmen/worn name = "Henchmen Worn" - icon_file = 'modular_zubbers/code/modules/GAGS/icons/monkehenchmenmob.dmi' + icon_file = 'modular_zubbers/icons/obj/clothing/GAGS/monkehenchmenmob.dmi' json_config = 'modular_skyrat/modules/GAGS/json_configs/henchmen/henchmen.json' /datum/greyscale_config/miniskirt diff --git a/modular_zubbers/code/modules/antagonists/traitor/goal_overrides.dm b/modular_zubbers/code/modules/antagonists/traitor/goal_overrides.dm deleted file mode 100644 index 8430c123f51..00000000000 --- a/modular_zubbers/code/modules/antagonists/traitor/goal_overrides.dm +++ /dev/null @@ -1,11 +0,0 @@ -/datum/traitor_objective/target_player/eyesnatching/generate_objective(datum/mind/generating_for, list/possible_duplicates) - return FALSE - -/* /datum/traitor_objective/hack_comm_console/can_generate_objective(datum/mind/generating_for, list/possible_duplicates) - return FALSE */ - -/datum/traitor_objective/ultimate/can_generate_objective(generating_for, list/possible_duplicates) - return FALSE - -/datum/traitor_objective/target_player/infect/can_generate_objective(datum/mind/generating_for, list/possible_duplicates) - return FALSE diff --git a/modular_zubbers/code/modules/antagonists/traitor/one_shot_emag.dm b/modular_zubbers/code/modules/antagonists/traitor/one_shot_emag.dm new file mode 100644 index 00000000000..6bdad032df0 --- /dev/null +++ b/modular_zubbers/code/modules/antagonists/traitor/one_shot_emag.dm @@ -0,0 +1,27 @@ +/obj/item/card/emag/one_shot + name = "cryptographic sequencer" + special_desc_requirement = EXAMINE_CHECK_JOB + special_desc_jobs = list(JOB_DETECTIVE, JOB_HEAD_OF_SECURITY) + special_desc = "Upon inspection you can instantly tell this is a real cryptographic sequencer commonly traded in bulk for cheap at countless blackmarkets. They are known for their unreliability and breaking after just one use from their shoddy construction." + /// How many uses does it have left? + var/charges = 1 + /// Who summoned this? + var/caller + +/obj/item/card/emag/one_shot/examine(mob/user) + . = ..() + if(user == caller) + . += span_notice("It looks cheapo, they did say it gives just one shot...") + else + . += span_notice("It looks flimsy and identical to the \"Donk Co.\" toy.") + +/obj/item/card/emag/one_shot/can_emag(atom/target, mob/user) + if(charges <= 0) + balloon_alert(user, "unresponsive!") + return FALSE + use_charge(user) + return TRUE + +/obj/item/card/emag/one_shot/proc/use_charge(mob/user) + balloon_alert(user, "out of charges!") + charges -- diff --git a/modular_zubbers/code/modules/clothing/neck/collars.dm b/modular_zubbers/code/modules/clothing/neck/collars.dm index bba571915b5..1d0ffe7ad55 100644 --- a/modular_zubbers/code/modules/clothing/neck/collars.dm +++ b/modular_zubbers/code/modules/clothing/neck/collars.dm @@ -69,11 +69,11 @@ /obj/item/clothing/neck/kink_collar/locked/gps/update_overlays() . = ..() if(gps.tracking) - . += mutable_appearance('modular_zubbers/code/modules/GAGS/icons/collar.dmi', "light") - . += emissive_appearance('modular_zubbers/code/modules/GAGS/icons/collar.dmi', "light", src, alpha = src.alpha) + . += mutable_appearance('modular_zubbers/icons/obj/clothing/GAGS/collar.dmi', "light") + . += emissive_appearance('modular_zubbers/icons/obj/clothing/GAGS/collar.dmi', "light", src, alpha = src.alpha) /obj/item/clothing/neck/kink_collar/locked/gps/worn_overlays(mutable_appearance/standing, isinhands = FALSE) . = ..() if(gps.tracking && !isinhands) - . += mutable_appearance('modular_zubbers/code/modules/GAGS/icons/collar.dmi', "collar_mob_tracker_light") - . += emissive_appearance('modular_zubbers/code/modules/GAGS/icons/collar.dmi', "collar_mob_tracker_light", src, alpha = src.alpha) + . += mutable_appearance('modular_zubbers/icons/obj/clothing/GAGS/collar.dmi', "collar_mob_tracker_light") + . += emissive_appearance('modular_zubbers/icons/obj/clothing/GAGS/collar.dmi', "collar_mob_tracker_light", src, alpha = src.alpha) diff --git a/modular_zubbers/code/modules/clothing/shoes/boots.dm b/modular_zubbers/code/modules/clothing/shoes/boots.dm index 2f4d4ebf8ad..2486f8c55c9 100644 --- a/modular_zubbers/code/modules/clothing/shoes/boots.dm +++ b/modular_zubbers/code/modules/clothing/shoes/boots.dm @@ -205,7 +205,7 @@ desc = "Stylish banana shaped shoes that make it impossible to walk without slipping. Due to the slippery nature of them, removal will require the help of a friend!" icon_state = "banana_slippers" worn_icon_state = "banana_slippers" - can_be_tied = FALSE + fastening_type = SHOES_SLIPON strip_delay = 10 SECONDS // Special throw_impact for hats to frisbee hats at people to place them on their heads/attempt to de-hat them. @@ -282,4 +282,4 @@ body_parts_covered = parent_type::body_parts_covered | LEGS resistance_flags = FIRE_PROOF - can_be_tied = FALSE + fastening_type = SHOES_SLIPON diff --git a/modular_zubbers/code/modules/hydroponics/code/grown/rocks.dm b/modular_zubbers/code/modules/hydroponics/grown/rocks.dm similarity index 77% rename from modular_zubbers/code/modules/hydroponics/code/grown/rocks.dm rename to modular_zubbers/code/modules/hydroponics/grown/rocks.dm index 0e0236a2525..b8f5437f8ac 100644 --- a/modular_zubbers/code/modules/hydroponics/code/grown/rocks.dm +++ b/modular_zubbers/code/modules/hydroponics/grown/rocks.dm @@ -3,7 +3,7 @@ desc = "Small seedlings of the golem rockfruit plant. There's a warning label on its packaging: \n\ \"Remember: Legally speaking, rocking is more legal than stoning. \n \ We are not liable for any injury, death, or complete body evaporation caused by using or growing these plants\"" - icon = 'modular_zubbers/code/modules/hydroponics/icons/seeds.dmi' + icon = 'modular_zubbers/icons/obj/seeds.dmi' icon_state = "seed-rockfruit" species = "rock" plantname = "Rockfruits" @@ -21,7 +21,7 @@ growthstages = 2 - growing_icon = 'modular_zubbers/code/modules/hydroponics/icons/growing_fruits.dmi' + growing_icon = 'modular_zubbers/icons/obj/growing_fruits.dmi' genes = list(/datum/plant_gene/trait/plant_type/weed_hardy, /datum/plant_gene/trait/fire_resistance, @@ -41,7 +41,7 @@ force = 5 // Comparatively shit considering a nettle is 15 throwforce = 10 // Less shit but hey, it is a rock - icon = 'modular_zubbers/code/modules/hydroponics/icons/harvest.dmi' + icon = 'modular_zubbers/icons/obj/harvest.dmi' icon_state = "rockfruit" var/product = /obj/item/food/grown/rockfruit @@ -72,7 +72,7 @@ foodtypes = FRUIT - icon = 'modular_zubbers/code/modules/hydroponics/icons/harvest.dmi' + icon = 'modular_zubbers/icons/obj/harvest.dmi' icon_state = "rockfruit-peeled" tastes = list("mountains" = 1) @@ -82,7 +82,7 @@ desc = "The peeled shell of a rockfruit, or as you may call it, \"Literal pile of rocks\". \ Probably not edible, but a golem will try to prove you otherwise" - icon = 'modular_zubbers/code/modules/hydroponics/icons/harvest.dmi' + icon = 'modular_zubbers/icons/obj/harvest.dmi' icon_state = "rockfruit-trash" foodtypes = STONE @@ -99,11 +99,11 @@ /obj/item/seeds/sandfruit name = "sandfruit seed pack" desc = "These seeds grow to produce sandfruits." - icon = 'modular_zubbers/code/modules/hydroponics/icons/seeds.dmi' + icon = 'modular_zubbers/icons/obj/seeds.dmi' icon_state = "seed-sandfruit" species = "ore" plantname = "Sandfruits" - product = /obj/item/food/grown/shell/sand + product = /obj/item/food/grown/material_sand mutatelist = list(/obj/item/seeds/uraniberry, /obj/item/seeds/agbergine, /obj/item/seeds/ferrotuber, @@ -112,14 +112,14 @@ /datum/reagent/silicon = 0.1) growthstages = 2 rarity = 20 - growing_icon = 'modular_zubbers/code/modules/hydroponics/icons/growing_fruits.dmi' + growing_icon = 'modular_zubbers/icons/obj/growing_fruits.dmi' genes = list(/datum/plant_gene/trait/chem_cooling) -/obj/item/food/grown/shell/sand +/obj/item/food/grown/material_sand seed = /obj/item/seeds/sandfruit name = "sandfruit" desc = "A mutated variant of rockfruits; rough, course and now available everywhere. Just peel it for a core." - icon = 'modular_zubbers/code/modules/hydroponics/icons/harvest.dmi' + icon = 'modular_zubbers/icons/obj/harvest.dmi' icon_state = "orefruit" trash_type = /obj/item/stack/sheet/mineral/sandfruitcore foodtypes = FRUIT @@ -128,7 +128,7 @@ /obj/item/stack/sheet/mineral/sandfruitcore name = "sandfruit core" desc = "A very fragile sandfruit core, literally composed of dozens of particles of sand... don't store in pockets." - icon = 'modular_zubbers/code/modules/hydroponics/icons/harvest.dmi' + icon = 'modular_zubbers/icons/obj/harvest.dmi' singular_name = "sandfruit core" icon_state = "sandfruit" merge_type = /obj/item/stack/sheet/mineral/sandfruitcore @@ -140,24 +140,24 @@ /obj/item/seeds/uraniberry name = "uraniberry seed pack" desc = "These seeds grow to produce 'berries' that god thinks probably shouldn't exist." - icon = 'modular_zubbers/code/modules/hydroponics/icons/seeds.dmi' + icon = 'modular_zubbers/icons/obj/seeds.dmi' icon_state = "seed-uraniberry" species = "ore" plantname = "Uraniberry" - product = /obj/item/food/grown/shell/uraniberry + product = /obj/item/food/grown/material_uraniberry mutatelist = list(/obj/item/seeds/plasmaplum) reagents_add = list(/datum/reagent/consumable/nutriment = 0.1, /datum/reagent/uranium = 0.1) growthstages = 2 rarity = 20 - growing_icon = 'modular_zubbers/code/modules/hydroponics/icons/growing_fruits.dmi' + growing_icon = 'modular_zubbers/icons/obj/growing_fruits.dmi' genes = list(/datum/plant_gene/trait/chem_cooling) -/obj/item/food/grown/shell/uraniberry +/obj/item/food/grown/material_uraniberry seed = /obj/item/seeds/uraniberry name = "uraniberry" desc = "A mutated variant of rockfruits; you might not want to hold it for long... also not actually a berry! Just peel it for a core." - icon = 'modular_zubbers/code/modules/hydroponics/icons/harvest.dmi' + icon = 'modular_zubbers/icons/obj/harvest.dmi' icon_state = "orefruit" trash_type = /obj/item/stack/sheet/mineral/uraniberrycore foodtypes = FRUIT @@ -167,7 +167,7 @@ name = "uraniberry core" singular_name = "uraniberry core" desc = "A very dense uraniberry core, don't store in pockets, unless you want extra limbs." - icon = 'modular_zubbers/code/modules/hydroponics/icons/harvest.dmi' + icon = 'modular_zubbers/icons/obj/harvest.dmi' icon_state = "uraniberry" merge_type = /obj/item/stack/sheet/mineral/uraniberrycore max_amount = 10 @@ -178,24 +178,24 @@ /obj/item/seeds/plasmaplum name = "plasmaplum seed pack" desc = "These seeds grow to produce extremely volatile 'plums'." - icon = 'modular_zubbers/code/modules/hydroponics/icons/seeds.dmi' + icon = 'modular_zubbers/icons/obj/seeds.dmi' icon_state = "seed-plasmaplum" species = "ore" plantname = "Plasmaplum" - product = /obj/item/food/grown/shell/plasmaplum + product = /obj/item/food/grown/material_plasmaplum mutatelist = list(/obj/item/seeds/bluegemdrupe) reagents_add = list(/datum/reagent/consumable/nutriment = 0.1, /datum/reagent/toxin/plasma = 0.1) growthstages = 2 rarity = 40 - growing_icon = 'modular_zubbers/code/modules/hydroponics/icons/growing_fruits.dmi' + growing_icon = 'modular_zubbers/icons/obj/growing_fruits.dmi' genes = list(/datum/plant_gene/trait/chem_cooling) -/obj/item/food/grown/shell/plasmaplum +/obj/item/food/grown/material_plasmaplum seed = /obj/item/seeds/plasmaplum name = "plasmaplum" desc = "A mutated variant of rockfruits; Incredibly volatile... also not actually a plum! Just peel it for a core." - icon = 'modular_zubbers/code/modules/hydroponics/icons/harvest.dmi' + icon = 'modular_zubbers/icons/obj/harvest.dmi' icon_state = "orefruit" trash_type = /obj/item/stack/sheet/mineral/plasmaplumcore foodtypes = FRUIT @@ -205,7 +205,7 @@ name = "plasmaplum core" singular_name = "plasmaplum core" desc = "A very dense plasmaplum core, store in a cold, fire and spark free place." - icon = 'modular_zubbers/code/modules/hydroponics/icons/harvest.dmi' + icon = 'modular_zubbers/icons/obj/harvest.dmi' icon_state = "plasmaplum" merge_type = /obj/item/stack/sheet/mineral/plasmaplumcore max_amount = 10 @@ -216,24 +216,24 @@ /obj/item/seeds/bluegemdrupe name = "bluegem drupe seed pack" desc = "These seeds grow to produce extremely volatile 'drupes'." - icon = 'modular_zubbers/code/modules/hydroponics/icons/seeds.dmi' + icon = 'modular_zubbers/icons/obj/seeds.dmi' icon_state = "seed-bluegemdrupe" species = "ore" plantname = "Bluegem drupe" - product = /obj/item/food/grown/shell/bluegemdrupe + product = /obj/item/food/grown/material_bluegemdrupe mutatelist = null reagents_add = list(/datum/reagent/consumable/nutriment = 0.1, /datum/reagent/bluespace = 0.1) growthstages = 2 rarity = 60 - growing_icon = 'modular_zubbers/code/modules/hydroponics/icons/growing_fruits.dmi' + growing_icon = 'modular_zubbers/icons/obj/growing_fruits.dmi' genes = list(/datum/plant_gene/trait/chem_cooling) -/obj/item/food/grown/shell/bluegemdrupe +/obj/item/food/grown/material_bluegemdrupe seed = /obj/item/seeds/bluegemdrupe name = "bluegem drupe" desc = "A mutated variant of rockfruits; Incredibly fragile... also not actually a drupe! Just peel it for a core." - icon = 'modular_zubbers/code/modules/hydroponics/icons/harvest.dmi' + icon = 'modular_zubbers/icons/obj/harvest.dmi' icon_state = "orefruit" trash_type = /obj/item/stack/sheet/mineral/bluegemdrupecore foodtypes = FRUIT @@ -243,7 +243,7 @@ name = "bluegem drupe core" singular_name = "bluegem drupe core" desc = "A very dense bluegem drupe core, dropping may incur teleportation in rare cases." - icon = 'modular_zubbers/code/modules/hydroponics/icons/harvest.dmi' + icon = 'modular_zubbers/icons/obj/harvest.dmi' icon_state = "bluegemdrupe" merge_type = /obj/item/stack/sheet/mineral/bluegemdrupecore max_amount = 10 @@ -254,24 +254,24 @@ /obj/item/seeds/agbergine name = "ag-bergine seed pack" desc = "These seeds grow to produce fruits, with cores of solid silver." - icon = 'modular_zubbers/code/modules/hydroponics/icons/seeds.dmi' + icon = 'modular_zubbers/icons/obj/seeds.dmi' icon_state = "seed-agbergine" species = "ore" plantname = "agbergine" - product = /obj/item/food/grown/shell/agbergine + product = /obj/item/food/grown/material_agbergine mutatelist = list(/obj/item/seeds/aubergine) reagents_add = list(/datum/reagent/consumable/nutriment = 0.1, /datum/reagent/silver = 0.1) growthstages = 2 rarity = 20 - growing_icon = 'modular_zubbers/code/modules/hydroponics/icons/growing_fruits.dmi' + growing_icon = 'modular_zubbers/icons/obj/growing_fruits.dmi' genes = list(/datum/plant_gene/trait/chem_cooling) -/obj/item/food/grown/shell/agbergine +/obj/item/food/grown/material_agbergine seed = /obj/item/seeds/agbergine name = "ag-bergine" desc = "Ag-bergine, get it AG? It's hilarious and valuable! Just peel it for a core." - icon = 'modular_zubbers/code/modules/hydroponics/icons/harvest.dmi' + icon = 'modular_zubbers/icons/obj/harvest.dmi' icon_state = "orefruit" trash_type = /obj/item/stack/sheet/mineral/agberginecore foodtypes = FRUIT @@ -281,7 +281,7 @@ name = "ag-bergine core" singular_name = "ag-bergine core" desc = "A dense agbergine core of solid, sterling silver." - icon = 'modular_zubbers/code/modules/hydroponics/icons/harvest.dmi' + icon = 'modular_zubbers/icons/obj/harvest.dmi' icon_state = "agbergine" merge_type = /obj/item/stack/sheet/mineral/agberginecore max_amount = 10 @@ -292,24 +292,24 @@ /obj/item/seeds/aubergine name = "au-bergine seed pack" desc = "These seeds grow to golden cored fruits." - icon = 'modular_zubbers/code/modules/hydroponics/icons/seeds.dmi' + icon = 'modular_zubbers/icons/obj/seeds.dmi' icon_state = "seed-aubergine" species = "ore" plantname = "aubergine" - product = /obj/item/food/grown/shell/aubergine + product = /obj/item/food/grown/material_aubergine mutatelist = list(/obj/item/seeds/dimantis) reagents_add = list(/datum/reagent/consumable/nutriment = 0.1, /datum/reagent/gold = 0.1) growthstages = 2 rarity = 40 - growing_icon = 'modular_zubbers/code/modules/hydroponics/icons/growing_fruits.dmi' + growing_icon = 'modular_zubbers/icons/obj/growing_fruits.dmi' genes = list(/datum/plant_gene/trait/chem_cooling) -/obj/item/food/grown/shell/aubergine +/obj/item/food/grown/material_aubergine seed = /obj/item/seeds/aubergine name = "aubergine" desc = "An aubergine; AU? Get it?!... My talents are wasted here! Just peel it for a core." - icon = 'modular_zubbers/code/modules/hydroponics/icons/harvest.dmi' + icon = 'modular_zubbers/icons/obj/harvest.dmi' icon_state = "orefruit" trash_type = /obj/item/stack/sheet/mineral/auberginecore foodtypes = FRUIT @@ -319,7 +319,7 @@ name = "au-bergine core" singular_name = "au-bergine core" desc = "A very dense au-bergine core, solid 24 karat goodness." - icon = 'modular_zubbers/code/modules/hydroponics/icons/harvest.dmi' + icon = 'modular_zubbers/icons/obj/harvest.dmi' icon_state = "aubergine" merge_type = /obj/item/stack/sheet/mineral/auberginecore max_amount = 10 @@ -330,24 +330,24 @@ /obj/item/seeds/dimantis name = "dimantis seed pack" desc = "These seeds grow to produce extremely valuable dimatis fruits." - icon = 'modular_zubbers/code/modules/hydroponics/icons/seeds.dmi' + icon = 'modular_zubbers/icons/obj/seeds.dmi' icon_state = "seed-dimantis" species = "ore" plantname = "Dimantis" - product = /obj/item/food/grown/shell/dimantis + product = /obj/item/food/grown/material_dimantis mutatelist = null reagents_add = list(/datum/reagent/consumable/nutriment = 0.1, /datum/reagent/carbon = 0.1) growthstages = 2 rarity = 60 - growing_icon = 'modular_zubbers/code/modules/hydroponics/icons/growing_fruits.dmi' + growing_icon = 'modular_zubbers/icons/obj/growing_fruits.dmi' genes = list(/datum/plant_gene/trait/chem_cooling) -/obj/item/food/grown/shell/dimantis +/obj/item/food/grown/material_dimantis seed = /obj/item/seeds/dimantis name = "dimantis drupe" desc = "A fleshy fruid with a diamond core, Just peel it for a core." - icon = 'modular_zubbers/code/modules/hydroponics/icons/harvest.dmi' + icon = 'modular_zubbers/icons/obj/harvest.dmi' icon_state = "orefruit" trash_type = /obj/item/stack/sheet/mineral/dimantiscore foodtypes = FRUIT @@ -357,7 +357,7 @@ name = "dimantis core" singular_name = "dimantis core" desc = "A very dense dimantis core, the way to a woman's heart, it could probably get through her ribcage..." - icon = 'modular_zubbers/code/modules/hydroponics/icons/harvest.dmi' + icon = 'modular_zubbers/icons/obj/harvest.dmi' icon_state = "dimantis" merge_type = /obj/item/stack/sheet/mineral/dimantiscore max_amount = 10 @@ -368,24 +368,24 @@ /obj/item/seeds/ferrotuber name = "ferrotuber seed pack" desc = "These seeds grow to produce tubers, with cores of iron." - icon = 'modular_zubbers/code/modules/hydroponics/icons/seeds.dmi' + icon = 'modular_zubbers/icons/obj/seeds.dmi' icon_state = "seed-ferrotuber" species = "ore" plantname = "ferrotuber" - product = /obj/item/food/grown/shell/ferrotuber + product = /obj/item/food/grown/material_ferrotuber mutatelist = list(/obj/item/seeds/titanituber) reagents_add = list(/datum/reagent/consumable/nutriment = 0.1, /datum/reagent/iron = 0.1) growthstages = 2 rarity = 20 - growing_icon = 'modular_zubbers/code/modules/hydroponics/icons/growing_fruits.dmi' + growing_icon = 'modular_zubbers/icons/obj/growing_fruits.dmi' genes = list(/datum/plant_gene/trait/chem_cooling) -/obj/item/food/grown/shell/ferrotuber +/obj/item/food/grown/material_ferrotuber seed = /obj/item/seeds/ferrotuber name = "ferrotuber" desc = "Ferrotubers, fleshy shells with iron fillings! Just peel it for a core." - icon = 'modular_zubbers/code/modules/hydroponics/icons/harvest.dmi' + icon = 'modular_zubbers/icons/obj/harvest.dmi' icon_state = "orefruit" trash_type = /obj/item/stack/sheet/mineral/ferrotubercore foodtypes = FRUIT @@ -395,7 +395,7 @@ name = "ferrotuber core" singular_name = "ferrotuber core" desc = "A dense ferrotuber core of solid iron, slightly magnetic." - icon = 'modular_zubbers/code/modules/hydroponics/icons/harvest.dmi' + icon = 'modular_zubbers/icons/obj/harvest.dmi' icon_state = "ferrotuber" merge_type = /obj/item/stack/sheet/mineral/ferrotubercore max_amount = 10 @@ -406,23 +406,23 @@ /obj/item/seeds/titanituber name = "titanituber seed pack" desc = "These seeds grow to titanium tubers." - icon = 'modular_zubbers/code/modules/hydroponics/icons/seeds.dmi' + icon = 'modular_zubbers/icons/obj/seeds.dmi' icon_state = "seed-titanituber" species = "ore" plantname = "titanituber" - product = /obj/item/food/grown/shell/titanituber + product = /obj/item/food/grown/material_titanituber mutatelist = null reagents_add = list(/datum/reagent/consumable/nutriment = 0.1) growthstages = 2 rarity = 40 - growing_icon = 'modular_zubbers/code/modules/hydroponics/icons/growing_fruits.dmi' + growing_icon = 'modular_zubbers/icons/obj/growing_fruits.dmi' genes = list(/datum/plant_gene/trait/chem_cooling) -/obj/item/food/grown/shell/titanituber +/obj/item/food/grown/material_titanituber seed = /obj/item/seeds/titanituber name = "titanituber" desc = "soft fruits with incredibly sturdy cores, watch your teeth! Just peel it for a core." - icon = 'modular_zubbers/code/modules/hydroponics/icons/harvest.dmi' + icon = 'modular_zubbers/icons/obj/harvest.dmi' icon_state = "orefruit" trash_type = /obj/item/stack/sheet/mineral/titanitubercore foodtypes = FRUIT @@ -431,7 +431,7 @@ name = "titanituber core" singular_name = "titanituber core" desc = "A very dense titanituber core, let's hope you didn't bite it!" - icon = 'modular_zubbers/code/modules/hydroponics/icons/harvest.dmi' + icon = 'modular_zubbers/icons/obj/harvest.dmi' icon_state = "titanituber" merge_type = /obj/item/stack/sheet/mineral/titanitubercore max_amount = 10 @@ -442,23 +442,23 @@ /obj/item/seeds/adamapple name = "adam's apple seed pack" desc = "These seeds grow to produce fruits, with cores of adamantine." - icon = 'modular_zubbers/code/modules/hydroponics/icons/seeds.dmi' + icon = 'modular_zubbers/icons/obj/seeds.dmi' icon_state = "seed-adamapple" species = "ore" plantname = "adamapple" - product = /obj/item/food/grown/shell/adamapple + product = /obj/item/food/grown/material_adamapple mutatelist = list(/obj/item/seeds/runescooper) reagents_add = list(/datum/reagent/consumable/nutriment = 0.1) growthstages = 2 rarity = 60 - growing_icon = 'modular_zubbers/code/modules/hydroponics/icons/growing_fruits.dmi' + growing_icon = 'modular_zubbers/icons/obj/growing_fruits.dmi' genes = list(/datum/plant_gene/trait/chem_cooling) -/obj/item/food/grown/shell/adamapple +/obj/item/food/grown/material_adamapple seed = /obj/item/seeds/adamapple name = "Adam's apple" desc = "Adam's apples, The garden Eden's bounty! Just peel it for a core." - icon = 'modular_zubbers/code/modules/hydroponics/icons/harvest.dmi' + icon = 'modular_zubbers/icons/obj/harvest.dmi' icon_state = "orefruit" trash_type = /obj/item/stack/sheet/mineral/adamapplecore foodtypes = FRUIT @@ -467,7 +467,7 @@ name = "adam's apple core" singular_name = "adam's apple core" desc = "A dense adam's apple core of solid adamantine." - icon = 'modular_zubbers/code/modules/hydroponics/icons/harvest.dmi' + icon = 'modular_zubbers/icons/obj/harvest.dmi' icon_state = "adamapple" merge_type = /obj/item/stack/sheet/mineral/adamapplecore max_amount = 10 @@ -478,23 +478,23 @@ /obj/item/seeds/runescooper name = "runescooper seed pack" desc = "These seeds grow to rare, wildy fruits." - icon = 'modular_zubbers/code/modules/hydroponics/icons/seeds.dmi' + icon = 'modular_zubbers/icons/obj/seeds.dmi' icon_state = "seed-runescooper" species = "ore" plantname = "runescooper" - product = /obj/item/food/grown/shell/runescooper + product = /obj/item/food/grown/material_runescooper mutatelist = list(/obj/item/seeds/bananiumberry) reagents_add = list(/datum/reagent/consumable/nutriment = 0.1) growthstages = 2 rarity = 60 - growing_icon = 'modular_zubbers/code/modules/hydroponics/icons/growing_fruits.dmi' + growing_icon = 'modular_zubbers/icons/obj/growing_fruits.dmi' genes = list(/datum/plant_gene/trait/chem_cooling) -/obj/item/food/grown/shell/runescooper +/obj/item/food/grown/material_runescooper seed = /obj/item/seeds/runescooper name = "runescooper" desc = "A fruit, usually grown in wild places where men would kill each other for gain." - icon = 'modular_zubbers/code/modules/hydroponics/icons/harvest.dmi' + icon = 'modular_zubbers/icons/obj/harvest.dmi' icon_state = "orefruit" trash_type = /obj/item/stack/sheet/mineral/runescoopercore foodtypes = FRUIT @@ -503,7 +503,7 @@ name = "runescooper core" singular_name = "runescooper core" desc = "A very dense runite core, a few more of these and you might be able to make a scimitar to defeat your foes..." - icon = 'modular_zubbers/code/modules/hydroponics/icons/harvest.dmi' + icon = 'modular_zubbers/icons/obj/harvest.dmi' icon_state = "runescooper" merge_type = /obj/item/stack/sheet/mineral/runescoopercore max_amount = 10 @@ -514,24 +514,24 @@ /obj/item/seeds/bananiumberry name = "bananium berry seed pack" desc = "These seeds grow to produce unholy abominations." - icon = 'modular_zubbers/code/modules/hydroponics/icons/seeds.dmi' + icon = 'modular_zubbers/icons/obj/seeds.dmi' icon_state = "seed-bananiumberry" species = "ore" plantname = "bananiumberry" - product = /obj/item/food/grown/shell/bananiumberry + product = /obj/item/food/grown/material_bananiumberry mutatelist = null reagents_add = list(/datum/reagent/consumable/nutriment = 0.1, /datum/reagent/consumable/nutriment/soup/clown_tears = 0.1) growthstages = 2 rarity = 60 - growing_icon = 'modular_zubbers/code/modules/hydroponics/icons/growing_fruits.dmi' + growing_icon = 'modular_zubbers/icons/obj/growing_fruits.dmi' genes = list(/datum/plant_gene/trait/chem_cooling) -/obj/item/food/grown/shell/bananiumberry +/obj/item/food/grown/material_bananiumberry seed = /obj/item/seeds/bananiumberry name = "bananiumberry" desc = "holy honkmother... This fruit got a core of bananium, Just peel it!" - icon = 'modular_zubbers/code/modules/hydroponics/icons/harvest.dmi' + icon = 'modular_zubbers/icons/obj/harvest.dmi' icon_state = "orefruit" trash_type = /obj/item/stack/sheet/mineral/bananiumberrycore foodtypes = FRUIT @@ -541,7 +541,7 @@ name = "bananiumberry core" singular_name = "bananiumberry core" desc = "A very dense bananium core, the way to a clown's heart, it could probably get through their ribcage..." - icon = 'modular_zubbers/code/modules/hydroponics/icons/harvest.dmi' + icon = 'modular_zubbers/icons/obj/harvest.dmi' icon_state = "bananiumberry" merge_type = /obj/item/stack/sheet/mineral/bananiumberrycore max_amount = 10 diff --git a/modular_zubbers/code/modules/hydroponics/code/plantgenes/hydroponics.dm b/modular_zubbers/code/modules/hydroponics/plantgenes/hydroponics.dm similarity index 100% rename from modular_zubbers/code/modules/hydroponics/code/plantgenes/hydroponics.dm rename to modular_zubbers/code/modules/hydroponics/plantgenes/hydroponics.dm diff --git a/modular_zubbers/code/modules/mob/living/basic/moonstation/cazador.dm b/modular_zubbers/code/modules/mob/living/basic/moonstation/cazador.dm index 645c6d5964c..90c65b71d4e 100644 --- a/modular_zubbers/code/modules/mob/living/basic/moonstation/cazador.dm +++ b/modular_zubbers/code/modules/mob/living/basic/moonstation/cazador.dm @@ -49,7 +49,7 @@ move_resist = MOVE_FORCE_WEAK pull_force = MOVE_FORCE_WEAK - ai_controller = /datum/ai_controller/basic_controller/simple_hostile + ai_controller = /datum/ai_controller/basic_controller/simple/simple_hostile butcher_results = list(/obj/item/reagent_containers/cup/tube/cazador_venom = 1) guaranteed_butcher_results = list(/obj/item/food/meat/slab/bugmeat = 2) diff --git a/modular_zubbers/code/modules/mob/living/basic/moonstation/scorpion.dm b/modular_zubbers/code/modules/mob/living/basic/moonstation/scorpion.dm index 372d49cccbb..48c31dd8e50 100644 --- a/modular_zubbers/code/modules/mob/living/basic/moonstation/scorpion.dm +++ b/modular_zubbers/code/modules/mob/living/basic/moonstation/scorpion.dm @@ -49,7 +49,7 @@ move_resist = MOVE_FORCE_STRONG pull_force = MOVE_FORCE_STRONG - ai_controller = /datum/ai_controller/basic_controller/simple_hostile + ai_controller = /datum/ai_controller/basic_controller/simple/simple_hostile butcher_results = list(/obj/item/reagent_containers/cup/tube/scorpion_venom = 1) guaranteed_butcher_results = list(/obj/item/food/meat/slab/bugmeat = 4) diff --git a/modular_zubbers/code/modules/mob/living/basic/pets/cat/cat.dm b/modular_zubbers/code/modules/mob/living/basic/pets/cat/cat.dm index ab394ac159b..a0e77617ce3 100644 --- a/modular_zubbers/code/modules/mob/living/basic/pets/cat/cat.dm +++ b/modular_zubbers/code/modules/mob/living/basic/pets/cat/cat.dm @@ -20,7 +20,7 @@ melee_damage_lower = 20 melee_damage_upper = 35 mobility_flags = MOBILITY_FLAGS_DEFAULT - ai_controller = /datum/ai_controller/basic_controller/simple_hostile + ai_controller = /datum/ai_controller/basic_controller/simple/simple_hostile faction = list(FACTION_CAT, ROLE_SYNDICATE) gold_core_spawnable = NO_SPAWN // it's clad in blood-red armor diff --git a/modular_zubbers/code/modules/mob/living/basic/pets/cat/super_cat.dm b/modular_zubbers/code/modules/mob/living/basic/pets/cat/super_cat.dm index 50e20419ec7..b7d5a88afdc 100644 --- a/modular_zubbers/code/modules/mob/living/basic/pets/cat/super_cat.dm +++ b/modular_zubbers/code/modules/mob/living/basic/pets/cat/super_cat.dm @@ -15,7 +15,7 @@ gold_core_spawnable = HOSTILE_SPAWN melee_damage_lower = 7 melee_damage_upper = 15 - ai_controller = /datum/ai_controller/basic_controller/simple_hostile + ai_controller = /datum/ai_controller/basic_controller/simple/simple_hostile faction = list(FACTION_HOSTILE) diff --git a/modular_zubbers/code/modules/mod/mod_theme.dm b/modular_zubbers/code/modules/mod/mod_theme.dm index c6b52087577..3bba9eafa8f 100644 --- a/modular_zubbers/code/modules/mod/mod_theme.dm +++ b/modular_zubbers/code/modules/mod/mod_theme.dm @@ -8,8 +8,7 @@ atom_flags = PREVENT_CONTENTS_EXPLOSION_1 max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT siemens_coefficient = 0 - slowdown_inactive = 0.5 - slowdown_active = 0 + slowdown_deployed = 0 allowed_suit_storage = list( /obj/item/ammo_box, /obj/item/ammo_casing, diff --git a/modular_zubbers/code/modules/quote_of_the_round/ticker.dm b/modular_zubbers/code/modules/quote_of_the_round/ticker.dm index 1ca377cc8a4..8c15be5a7e7 100644 --- a/modular_zubbers/code/modules/quote_of_the_round/ticker.dm +++ b/modular_zubbers/code/modules/quote_of_the_round/ticker.dm @@ -15,10 +15,11 @@ /datum/controller/subsystem/ticker/declare_completion(force_ending) if(quote_of_the_round_text) - send2chat( - new /datum/tgs_message_content(generate_quote_of_the_round()), - CONFIG_GET(string/channel_announce_new_game) - ) + for(var/channel_tag in CONFIG_GET(str_list/channel_announce_end_game)) + send2chat( + new /datum/tgs_message_content(generate_quote_of_the_round()), + channel_tag + ) to_chat(world, span_notice("A quote of the round was found, and should have been sent to discord.")) log_runtime("A quote of the round was found, and should have been sent to discord.") diff --git a/modular_zubbers/code/modules/storyteller/gamemode_ui.dm b/modular_zubbers/code/modules/storyteller/gamemode_ui.dm index f2046658aeb..e8027f4ac3d 100644 --- a/modular_zubbers/code/modules/storyteller/gamemode_ui.dm +++ b/modular_zubbers/code/modules/storyteller/gamemode_ui.dm @@ -77,7 +77,7 @@ return static_data /datum/controller/subsystem/gamemode/ui_state(mob/user) - return GLOB.admin_state + return ADMIN_STATE(R_ADMIN) /datum/controller/subsystem/gamemode/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state) . = ..() diff --git a/modular_zubbers/code/modules/surgery/organs/internal/eyes/_eyes.dm b/modular_zubbers/code/modules/surgery/organs/internal/eyes/_eyes.dm index 76714cb39e9..9d516882e96 100644 --- a/modular_zubbers/code/modules/surgery/organs/internal/eyes/_eyes.dm +++ b/modular_zubbers/code/modules/surgery/organs/internal/eyes/_eyes.dm @@ -2,7 +2,7 @@ name = "shadekin eyes" desc = "These eyes are massive, and feel warm to the touch. The shadekin that's missing these is probably feeling very queasy." eye_icon_state = "shadekin_eyes" - icon_state = "eyeballs-moth" //i'm too lazy to give them their own sprite + icon_state = "eyes_moth" //i'm too lazy to give them their own sprite flash_protect = FLASH_PROTECTION_SENSITIVE blink_animation = FALSE - iris_overlays = FALSE + iris_overlay = null diff --git a/modular_zubbers/maps/biodome/pride_flags.dmi b/modular_zubbers/icons/maps/biodome/pride_flags.dmi similarity index 100% rename from modular_zubbers/maps/biodome/pride_flags.dmi rename to modular_zubbers/icons/maps/biodome/pride_flags.dmi diff --git a/modular_zubbers/code/modules/GAGS/icons/collar.dmi b/modular_zubbers/icons/obj/clothing/GAGS/collar.dmi similarity index 100% rename from modular_zubbers/code/modules/GAGS/icons/collar.dmi rename to modular_zubbers/icons/obj/clothing/GAGS/collar.dmi diff --git a/modular_zubbers/code/modules/GAGS/icons/monkehenchmenmob.dmi b/modular_zubbers/icons/obj/clothing/GAGS/monkehenchmenmob.dmi similarity index 100% rename from modular_zubbers/code/modules/GAGS/icons/monkehenchmenmob.dmi rename to modular_zubbers/icons/obj/clothing/GAGS/monkehenchmenmob.dmi diff --git a/modular_zubbers/code/modules/GAGS/icons/monkehenchmenobj.dmi b/modular_zubbers/icons/obj/clothing/GAGS/monkehenchmenobj.dmi similarity index 100% rename from modular_zubbers/code/modules/GAGS/icons/monkehenchmenobj.dmi rename to modular_zubbers/icons/obj/clothing/GAGS/monkehenchmenobj.dmi diff --git a/modular_zubbers/code/modules/hydroponics/icons/growing_fruits.dmi b/modular_zubbers/icons/obj/growing_fruits.dmi similarity index 100% rename from modular_zubbers/code/modules/hydroponics/icons/growing_fruits.dmi rename to modular_zubbers/icons/obj/growing_fruits.dmi diff --git a/modular_zubbers/code/modules/hydroponics/icons/harvest.dmi b/modular_zubbers/icons/obj/harvest.dmi similarity index 100% rename from modular_zubbers/code/modules/hydroponics/icons/harvest.dmi rename to modular_zubbers/icons/obj/harvest.dmi diff --git a/modular_zubbers/code/modules/hydroponics/icons/seeds.dmi b/modular_zubbers/icons/obj/seeds.dmi similarity index 100% rename from modular_zubbers/code/modules/hydroponics/icons/seeds.dmi rename to modular_zubbers/icons/obj/seeds.dmi diff --git a/modular_zubbers/maps/biodome/pride_flags.dm b/modular_zubbers/maps/biodome/pride_flags.dm index d4b118235c2..4740a49f20b 100644 --- a/modular_zubbers/maps/biodome/pride_flags.dm +++ b/modular_zubbers/maps/biodome/pride_flags.dm @@ -9,7 +9,7 @@ /obj/structure/sign/flag/pride name = "coder pride flag" desc = "You probably shouldn't be seeing this. Yell at the coders about it." - icon = 'modular_zubbers/maps/biodome/pride_flags.dmi' + icon = 'modular_zubbers/icons/maps/biodome/pride_flags.dmi' /obj/structure/sign/flag/pride/gay name = "gay pride flag" @@ -76,7 +76,7 @@ /obj/item/sign/flag/pride name = "folded coder pride flag" desc = "You probably shouldn't be seeing this. Yell at the coders about it." - icon = 'modular_zubbers/maps/biodome/pride_flags.dmi' + icon = 'modular_zubbers/icons/maps/biodome/pride_flags.dmi' /obj/item/sign/flag/pride/gay name = "folded gay pride flag" diff --git a/modular_zubbers/master_files/code/modules/entombed_quirk/code/entombed_mod.dm b/modular_zubbers/master_files/code/modules/entombed_quirk/code/entombed_mod.dm index de3c6ca05f3..75f21179ac9 100644 --- a/modular_zubbers/master_files/code/modules/entombed_quirk/code/entombed_mod.dm +++ b/modular_zubbers/master_files/code/modules/entombed_quirk/code/entombed_mod.dm @@ -9,8 +9,7 @@ max_heat_protection_temperature = FIRE_SUIT_MAX_TEMP_PROTECT complexity_max = DEFAULT_MAX_COMPLEXITY - 2 // Sets the modsuit complexity to a total of 13 (functionally 10 as the default storage module consumes 3. ) to keep it in line with the civilian modsuit. charge_drain = DEFAULT_CHARGE_DRAIN - slowdown_inactive = 2.5 // very slow because the quirk infers you rely on this to move/exist - slowdown_active = 0.95 + slowdown_deployed = 0.95 inbuilt_modules = list( /obj/item/mod/module/joint_torsion/entombed ) diff --git a/modular_zubbers/tools/deploy_bubber.sh b/modular_zubbers/tools/deploy_bubber.sh new file mode 100644 index 00000000000..ebaab9bcd83 --- /dev/null +++ b/modular_zubbers/tools/deploy_bubber.sh @@ -0,0 +1,26 @@ +#!/bin/bash + +# This script will deploy our modular icon assets so iconforge can use them in spritesheet generation +# This includes modular_zubbers/icons, modular_zubbers/master_files/icons, modular_skyrat/master_files/icons +# and a dynamically generated list of every module in modular_skyrat/modules that contains an icons folder +# If there ever comes a day where the modular_skyrat folder is organized so all the sprites are together +# instead of spread across modules, shed a tear of relief and remove the relevant code from here +directories=( $(find modular_skyrat/modules/ -type d -name "icons") ) + +mkdir -p \ + $1/modular_zubbers/icons \ + $1/modular_zubbers/master_files/icons \ + $1/modular_skyrat/master_files/icons \ + $1/modular_skyrat/modules/aesthetics # the aesthetics module doesnt use an icon folder but it does contain DMIs. God has abandoned us + +cp -r modular_zubbers/icons/* $1/modular_zubbers/icons/ +cp -r modular_zubbers/master_files/icons/* $1/modular_zubbers/master_files/icons/ +cp -r modular_skyrat/master_files/icons/* $1/modular_skyrat/master_files/icons/ +cp -r modular_skyrat/modules/aesthetics/* $1/modular_skyrat/modules/aesthetics/ + + +for icondir in ${directories[@]} +do + mkdir -p $1/$icondir + cp -r $icondir/* $1/$icondir/ +done diff --git a/tgstation.dme b/tgstation.dme index e82a5382c9f..fb3ef863353 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -6801,8 +6801,6 @@ #include "modular_skyrat\master_files\code\modules\antagonists\ert\ert.dm" #include "modular_skyrat\master_files\code\modules\antagonists\pirate\pirate_outfits.dm" #include "modular_skyrat\master_files\code\modules\antagonists\pirate\pirate_shuttle_equipment.dm" -#include "modular_skyrat\master_files\code\modules\antagonists\traitor\objectives\kill_pet.dm" -#include "modular_skyrat\master_files\code\modules\antagonists\traitor\objectives\smuggling.dm" #include "modular_skyrat\master_files\code\modules\assembly\flash.dm" #include "modular_skyrat\master_files\code\modules\asset_cache\assets\plumbing.dm" #include "modular_skyrat\master_files\code\modules\atmospherics\machinery\pipes\pipes.dm" @@ -8795,7 +8793,6 @@ #include "modular_zubbers\code\datums\components\crafting\utility.dm" #include "modular_zubbers\code\datums\components\crafting\crafting\furniture.dm" #include "modular_zubbers\code\datums\components\crafting\crafting\melee_weapon.dm" -#include "modular_zubbers\code\datums\components\datums\riding_mob.dm" #include "modular_zubbers\code\datums\components\vore\_defines.dm" #include "modular_zubbers\code\datums\components\vore\absorb_control.dm" #include "modular_zubbers\code\datums\components\vore\belly.dm" @@ -8873,7 +8870,6 @@ #include "modular_zubbers\code\game\gamemodes\dynamic\dynamic_rulesets_midround.dm" #include "modular_zubbers\code\game\gamemodes\dynamic\dynamic_rulesets_roundstart.dm" #include "modular_zubbers\code\game\gamemodes\objectives\gimmick.dm" -#include "modular_zubbers\code\game\gamemodes\objectives\overrides.dm" #include "modular_zubbers\code\game\Items\big_bertha_shield.dm" #include "modular_zubbers\code\game\Items\coins.dm" #include "modular_zubbers\code\game\Items\lipstick.dm" @@ -9027,7 +9023,7 @@ #include "modular_zubbers\code\modules\antagonists\malf\remove_malf.dm" #include "modular_zubbers\code\modules\antagonists\nightmare\nightmare_species.dm" #include "modular_zubbers\code\modules\antagonists\pirate\pirate_event.dm" -#include "modular_zubbers\code\modules\antagonists\traitor\goal_overrides.dm" +#include "modular_zubbers\code\modules\antagonists\traitor\one_shot_emag.dm" #include "modular_zubbers\code\modules\antagonists\traitor\uplink\uplinkdatums.dm" #include "modular_zubbers\code\modules\antagonists\traitor\uplink\uplink_items\bundle.dm" #include "modular_zubbers\code\modules\antagonists\traitor\uplink\uplink_items\dangerous.dm" @@ -9192,8 +9188,8 @@ #include "modular_zubbers\code\modules\goofsec\code\department_guards.dm" #include "modular_zubbers\code\modules\hydroponics\gene_modder.dm" #include "modular_zubbers\code\modules\hydroponics\plant_genes.dm" -#include "modular_zubbers\code\modules\hydroponics\code\grown\rocks.dm" -#include "modular_zubbers\code\modules\hydroponics\code\plantgenes\hydroponics.dm" +#include "modular_zubbers\code\modules\hydroponics\grown\rocks.dm" +#include "modular_zubbers\code\modules\hydroponics\plantgenes\hydroponics.dm" #include "modular_zubbers\code\modules\item_reskins\plastic.dm" #include "modular_zubbers\code\modules\job_estimation\code\dead.dm" #include "modular_zubbers\code\modules\job_exempt\job_exempt.dm" diff --git a/tools/deploy.sh b/tools/deploy.sh index 8b2dba139f5..d29738df26c 100755 --- a/tools/deploy.sh +++ b/tools/deploy.sh @@ -40,3 +40,7 @@ cp -r tgui/packages/tgfont/dist/* $1/tgui/packages/tgfont/dist/ if [ "$(uname -o)" = "Msys" ]; then cp ./*.dll $1/ fi + +# BUBBER EDIT ADDITION BEGIN - Call our deploy too +source modular_zubbers/tools/deploy_bubber.sh +# BUBBER EDIT ADDITION END - Call our deploy too