From c31c364e3a9e40237547d917352d7c89f2cccbbe Mon Sep 17 00:00:00 2001 From: Da Cool Boss <142358580+DaCoolBoss@users.noreply.github.com> Date: Sat, 25 May 2024 23:02:01 +0100 Subject: [PATCH 01/17] Fully deletes improvised shotgun shells from the game. (#83436) ## About The Pull Request For whatever reason, these were partially deleted but the projectile was left in. Since the thing that spawns these projectiles is 100% gone from the game and can't even be spawned by admins there's no reason to keep this vestigial code. ## Why It's Good For The Game Why waste lines of code and storage space on something that is now gone? It's just clutter. ## Changelog :cl: no player facing change /:cl: --- .../projectiles/projectile/bullets/shotgun.dm | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/code/modules/projectiles/projectile/bullets/shotgun.dm b/code/modules/projectiles/projectile/bullets/shotgun.dm index 914019b979209..b3ddaf9bc9013 100644 --- a/code/modules/projectiles/projectile/bullets/shotgun.dm +++ b/code/modules/projectiles/projectile/bullets/shotgun.dm @@ -108,19 +108,6 @@ stamina = 6 embedding = null -/obj/projectile/bullet/pellet/shotgun_improvised - damage = 5 - wound_bonus = -5 - demolition_mod = 3 //Very good at acts of vandalism - -/obj/projectile/bullet/pellet/shotgun_improvised/Initialize(mapload) - . = ..() - range = rand(3, 8) - -/obj/projectile/bullet/pellet/shotgun_improvised/on_range() - do_sparks(1, TRUE, src) - ..() - // Mech Scattershot /obj/projectile/bullet/scattershot From 027997202e8511d0b947e76fba4cf091cedac46f Mon Sep 17 00:00:00 2001 From: Jacquerel Date: Sat, 25 May 2024 23:47:20 +0100 Subject: [PATCH 02/17] Mindless ghosts can become harvesters (#83405) ## About The Pull Request Fixes #83374 Fixes #82445 #81665 changed Narsie to transfer minds rather than assigning keys to constructs. This only works some amount of the time because observers don't have minds. Dying in certain ways (such as: when playing as a construct) also seems to destroy the mind. Now we transfer the mind if one exists, otherwise we assign the key (which creates a mind). ## Changelog :cl: fix: Ghosts can more reliably become a harvester. /:cl: --- code/modules/antagonists/wizard/equipment/soulstone.dm | 6 +++++- code/modules/power/singularity/narsie.dm | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/code/modules/antagonists/wizard/equipment/soulstone.dm b/code/modules/antagonists/wizard/equipment/soulstone.dm index b5ed82a7f2b50..be8407c83a468 100644 --- a/code/modules/antagonists/wizard/equipment/soulstone.dm +++ b/code/modules/antagonists/wizard/equipment/soulstone.dm @@ -502,7 +502,11 @@ newstruct.master = stoner var/datum/action/innate/seek_master/seek_master = new seek_master.Grant(newstruct) - target.mind?.transfer_to(newstruct, force_key_move = TRUE) + + if (isnull(target.mind)) + newstruct.key = target.key + else + target.mind.transfer_to(newstruct, force_key_move = TRUE) var/atom/movable/screen/alert/bloodsense/sense_alert if(newstruct.mind && !IS_CULTIST(newstruct) && ((stoner && IS_CULTIST(stoner)) || cultoverride) && SSticker.HasRoundStarted()) newstruct.mind.add_antag_datum(/datum/antagonist/cult/construct) diff --git a/code/modules/power/singularity/narsie.dm b/code/modules/power/singularity/narsie.dm index caba755eb81a7..7608d0dd74ffc 100644 --- a/code/modules/power/singularity/narsie.dm +++ b/code/modules/power/singularity/narsie.dm @@ -234,7 +234,7 @@ addtimer(CALLBACK(src, PROC_REF(narsie_spawn_animation_end)), 3.5 SECONDS) /obj/narsie/proc/narsie_spawn_animation_end() - var/datum/component/singularity/singularity_component = singularity.resolve() + var/datum/component/singularity/singularity_component = singularity?.resolve() singularity_component?.roaming = TRUE /** From 550ffadd93bc4bbe2bda22c72061f45ed5cc9b43 Mon Sep 17 00:00:00 2001 From: orange man <61334995+comfyorange@users.noreply.github.com> Date: Sun, 26 May 2024 10:47:39 +1200 Subject: [PATCH 03/17] Automatic changelog for PR #83405 [ci skip] --- html/changelogs/AutoChangeLog-pr-83405.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-83405.yml diff --git a/html/changelogs/AutoChangeLog-pr-83405.yml b/html/changelogs/AutoChangeLog-pr-83405.yml new file mode 100644 index 0000000000000..ea9616256c7fd --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-83405.yml @@ -0,0 +1,4 @@ +author: "Jacquerel" +delete-after: True +changes: + - bugfix: "Ghosts can more reliably become a harvester." \ No newline at end of file From 9c75b314dc9fee36c7c626d7309fee5d7f5f1de7 Mon Sep 17 00:00:00 2001 From: Bloop <13398309+vinylspiders@users.noreply.github.com> Date: Sat, 25 May 2024 18:47:56 -0400 Subject: [PATCH 04/17] Fixes race condition with alien weeds (#83394) ## About The Pull Request Tin. Another annoying spurious runtime that is caused by create_and_destroy spawning weed nodes (which delete the weed at their loc). It was doing this before the weed finished initializing sometimes. Fixes https://github.com/NovaSector/NovaSector/issues/2494 Tested with 10 back to back CI runs, runtime did not occur. --- code/game/objects/structures/aliens.dm | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/code/game/objects/structures/aliens.dm b/code/game/objects/structures/aliens.dm index 6d8e8ca701e3a..f0c855e7c74d9 100644 --- a/code/game/objects/structures/aliens.dm +++ b/code/game/objects/structures/aliens.dm @@ -276,6 +276,10 @@ //we are the parent node parent_node = src + return INITIALIZE_HINT_LATELOAD + +// we do this in LateInitialize() because weeds on the same loc may not be done initializing yet (as in create_and_destroy) +/obj/structure/alien/weeds/node/LateInitialize() //destroy any non-node weeds on turf var/obj/structure/alien/weeds/check_weed = locate(/obj/structure/alien/weeds) in loc if(check_weed && check_weed != src) From f0842914d72ab495ca704abe89ea74da9f7d45b7 Mon Sep 17 00:00:00 2001 From: chuga-git <98280110+chuga-git@users.noreply.github.com> Date: Sat, 25 May 2024 17:49:44 -0500 Subject: [PATCH 05/17] Fixes autodocs for three signals (#83414) ## About The Pull Request Corrects signal autodocs for COMSIG_GRENADE_DETONATE, COMSIG_MOB_GRENADE_ARMED, COMSIG_GRENADE_ARMED. ## Why It's Good For The Game The comments were incorrect and caused me a bit of confusion when looking through their associated procs. --- code/__DEFINES/dcs/signals/signals_object.dm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/__DEFINES/dcs/signals/signals_object.dm b/code/__DEFINES/dcs/signals/signals_object.dm index bcfc32ba09240..d7e895221d0e0 100644 --- a/code/__DEFINES/dcs/signals/signals_object.dm +++ b/code/__DEFINES/dcs/signals/signals_object.dm @@ -366,11 +366,11 @@ // /obj/item/grenade signals -///called in /obj/item/gun/process_fire (user, target, params, zone_override) +///called in /obj/item/grenade/proc/detonate(): (lanced_by) #define COMSIG_GRENADE_DETONATE "grenade_prime" -//called from many places in grenade code (armed_by, nade, det_time, delayoverride) +///called in /obj/item/grenade/gas_crystal/arm_grenade(): (armed_by, nade, det_time, delayoverride) #define COMSIG_MOB_GRENADE_ARMED "grenade_mob_armed" -///called in /obj/item/gun/process_fire (user, target, params, zone_override) +///called in /obj/item/grenade/proc/arm_grenade() and /obj/item/grenade/gas_crystal/arm_grenade(): (det_time, delayoverride) #define COMSIG_GRENADE_ARMED "grenade_armed" // /obj/projectile signals (sent to the firer) From 8dd84a3fd5e3187c3d1c9b40a791726a4769f7c9 Mon Sep 17 00:00:00 2001 From: paganiy <126676387+paganiy@users.noreply.github.com> Date: Sun, 26 May 2024 01:50:15 +0300 Subject: [PATCH 06/17] [no gbp] fix shooting at objects on the floor (#83419) ## About The Pull Request I made a mistake ## Why It's Good For The Game You can shoot at items on the floor again ## Changelog :cl: fix: You can shoot at items on the floor again /:cl: Co-authored-by: paganiy --- code/modules/projectiles/projectile.dm | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index 877326fd98546..872bf0cdd5e48 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -632,7 +632,10 @@ return TRUE if(buckled_to.density) // Will just be us if we're not buckled to another mob return TRUE - return FALSE + return FALSE + else if(living_target.body_position == LYING_DOWN) + return FALSE + return TRUE /** * Scan if we should hit something and hit it if we need to From 0c832f9aff35f8d5089632cf48b54d9db17fffb8 Mon Sep 17 00:00:00 2001 From: orange man <61334995+comfyorange@users.noreply.github.com> Date: Sun, 26 May 2024 10:50:36 +1200 Subject: [PATCH 07/17] Automatic changelog for PR #83419 [ci skip] --- html/changelogs/AutoChangeLog-pr-83419.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-83419.yml diff --git a/html/changelogs/AutoChangeLog-pr-83419.yml b/html/changelogs/AutoChangeLog-pr-83419.yml new file mode 100644 index 0000000000000..2cc568fec0508 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-83419.yml @@ -0,0 +1,4 @@ +author: "paganiy" +delete-after: True +changes: + - bugfix: "You can shoot at items on the floor again" \ No newline at end of file From d7722c2e47297725c6a3b7c7e4ab19c656f86d76 Mon Sep 17 00:00:00 2001 From: BeansKidney <39193093+OverwatchVoice@users.noreply.github.com> Date: Sun, 26 May 2024 00:53:04 +0200 Subject: [PATCH 08/17] Adds missing info to the description of Proto-Nitrate BZ response (#83418) ## About The Pull Request Adds a line to the "Proto-Nitrate BZ response" reaction description, specifying the temperature it requires. _This PR does NOT change the reaction itself._ ![obrazek](https://github.com/tgstation/tgstation/assets/39193093/eea274ce-9822-40b2-b6ba-a212186db8d8) ## Why It's Good For The Game The Gas analyzer interface describes every reaction in great detail, including the required reaction's temperature. For whatever reason, the "Proto-Nitrate BZ response" ommits this, leading to a lot of unnecessary guesswork on player's part. ## Changelog :cl: qol: The "Proto-Nitrate BZ response" atmsopheric reaction now lists it's required temperature. /:cl: --- code/modules/atmospherics/gasmixtures/reaction_factors.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/atmospherics/gasmixtures/reaction_factors.dm b/code/modules/atmospherics/gasmixtures/reaction_factors.dm index 1b96a89768377..5148793179500 100644 --- a/code/modules/atmospherics/gasmixtures/reaction_factors.dm +++ b/code/modules/atmospherics/gasmixtures/reaction_factors.dm @@ -205,4 +205,5 @@ "Radiation" = "Radiation gets released during this decomposition process.", "Hallucinations" = "This reaction can cause various carbon based lifeforms in the vicinity to hallucinate.", "Nuclear Particles" = "This reaction emits extremely high energy nuclear particles, up to [2 * PN_BZASE_NUCLEAR_PARTICLE_MAXIMUM] per second per unique gas mixture.", + "Temperature" = "Can only occur between [PN_BZASE_MIN_TEMP] - [PN_BZASE_MAX_TEMP] kelvin.", ) From 6b1c389a998189a1011d1731d0893107bfeb0a54 Mon Sep 17 00:00:00 2001 From: orange man <61334995+comfyorange@users.noreply.github.com> Date: Sun, 26 May 2024 10:53:28 +1200 Subject: [PATCH 09/17] Automatic changelog for PR #83418 [ci skip] --- html/changelogs/AutoChangeLog-pr-83418.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-83418.yml diff --git a/html/changelogs/AutoChangeLog-pr-83418.yml b/html/changelogs/AutoChangeLog-pr-83418.yml new file mode 100644 index 0000000000000..f3fdcd55ff963 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-83418.yml @@ -0,0 +1,4 @@ +author: "OverwatchVoice" +delete-after: True +changes: + - qol: "The \"Proto-Nitrate BZ response\" atmsopheric reaction now lists it's required temperature." \ No newline at end of file From 39b84e7e2c5e64b19ce55f27c6edb4b3504b3477 Mon Sep 17 00:00:00 2001 From: Rhials <28870487+Rhials@users.noreply.github.com> Date: Sat, 25 May 2024 18:55:03 -0400 Subject: [PATCH 10/17] Admins can reroll random events into something else (#83424) ## About The Pull Request Random events can now be rerolled by admins, much like how they can reroll dynamic rulesets. During the ten-second warning window, you can choose "Something Else" to have a (randomly selected) different event run in its stead. You still get the 10-second delay when this new one is picked, meaning you can keep rerolling until you get something interesting. The option to just cancel a random event remains. ## Why It's Good For The Game Cancelling a random event sets back the random event clock, meaning you have to wait a few minutes for another one to roll. Now you can just reroll dangerous events into something calmer (or y'know, calm events into something more dangerous). ## Changelog :cl: Rhials admin: Admins can now reroll random events into something else. /:cl: --- code/controllers/subsystem/events.dm | 11 +++++++++-- code/modules/events/_event.dm | 14 ++++++++++++-- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/code/controllers/subsystem/events.dm b/code/controllers/subsystem/events.dm index 50e437195a74a..b117a35718196 100644 --- a/code/controllers/subsystem/events.dm +++ b/code/controllers/subsystem/events.dm @@ -65,8 +65,13 @@ SUBSYSTEM_DEF(events) /datum/controller/subsystem/events/proc/reschedule() scheduled = world.time + rand(frequency_lower, max(frequency_lower,frequency_upper)) -//selects a random event based on whether it can occur and it's 'weight'(probability) -/datum/controller/subsystem/events/proc/spawnEvent() +/** + * Selects a random event based on whether it can occur and it's 'weight'(probability) + * + * Arguments: + * * excluded_event - The event path we will be foregoing, if present. + */ +/datum/controller/subsystem/events/proc/spawnEvent(datum/round_event_control/excluded_event) set waitfor = FALSE //for the admin prompt if(!CONFIG_GET(flag/allow_random_events)) return @@ -77,6 +82,8 @@ SUBSYSTEM_DEF(events) var/list/event_roster = list() for(var/datum/round_event_control/event_to_check in control) + if(excluded_event && event_to_check.typepath == excluded_event.typepath) //If an event has been rerolled we won't just roll the same one again. + continue if(!event_to_check.can_spawn_event(players_amt)) continue if(event_to_check.weight < 0) //for round-start events etc. diff --git a/code/modules/events/_event.dm b/code/modules/events/_event.dm index a90cd6a4d7bf6..358057e1de0d9 100644 --- a/code/modules/events/_event.dm +++ b/code/modules/events/_event.dm @@ -103,11 +103,12 @@ // We sleep HERE, in pre-event setup (because there's no sense doing it in run_event() since the event is already running!) for the given amount of time to make an admin has enough time to cancel an event un-fitting of the present round. if(alert_observers) - message_admins("Random Event triggering in [DisplayTimeText(RANDOM_EVENT_ADMIN_INTERVENTION_TIME)]: [name]. (CANCEL)") + message_admins("Random Event triggering in [DisplayTimeText(RANDOM_EVENT_ADMIN_INTERVENTION_TIME)]: [name]. (CANCEL) (SOMETHING ELSE)") sleep(RANDOM_EVENT_ADMIN_INTERVENTION_TIME) var/players_amt = get_active_player_count(alive_check = TRUE, afk_check = TRUE, human_check = TRUE) if(!can_spawn_event(players_amt)) - message_admins("Second pre-condition check for [name] failed, skipping...") + message_admins("Second pre-condition check for [name] failed, rerolling...") + SSevents.spawnEvent(excluded_event = src) return EVENT_INTERRUPTED if(!triggering) @@ -125,6 +126,15 @@ message_admins("[key_name_admin(usr)] cancelled event [name].") log_admin_private("[key_name(usr)] cancelled event [name].") SSblackbox.record_feedback("tally", "event_admin_cancelled", 1, typepath) + if(href_list["different_event"]) + if(!triggering) + to_chat(usr, span_admin("Too late to change events now!")) + return + triggering = FALSE + message_admins("[key_name_admin(usr)] chose to have event [name] rolled into a different event.") + log_admin_private("[key_name(usr)] rerolled event [name].") + SSblackbox.record_feedback("tally", "event_admin_rerolled", 1, typepath) + SSevents.spawnEvent(excluded_event = src) /* Runs the event From f83058192c1eeabdf50f7b17ddc4ad734c1684d4 Mon Sep 17 00:00:00 2001 From: orange man <61334995+comfyorange@users.noreply.github.com> Date: Sun, 26 May 2024 10:55:23 +1200 Subject: [PATCH 11/17] Automatic changelog for PR #83424 [ci skip] --- html/changelogs/AutoChangeLog-pr-83424.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-83424.yml diff --git a/html/changelogs/AutoChangeLog-pr-83424.yml b/html/changelogs/AutoChangeLog-pr-83424.yml new file mode 100644 index 0000000000000..760210aea94e3 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-83424.yml @@ -0,0 +1,4 @@ +author: "Rhials" +delete-after: True +changes: + - admin: "Admins can now reroll random events into something else." \ No newline at end of file From 50de5108e219341d3d2ab50934a20604fba47b8f Mon Sep 17 00:00:00 2001 From: san7890 Date: Sat, 25 May 2024 16:57:29 -0600 Subject: [PATCH 12/17] Cleans up some admin-related stuff in client `Destroy()` and `adminGreet()` (#83427) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## About The Pull Request It made me really mad to see a huge list in the middle of client/Destroy for something that doesn't even run for 95% of users so I split it out into another proc so the fingerprint of the very important `Destroy()` stuff could be as minimal as possible without a big `pick()` so the server can send the "I need a man 🥺" message could be punted off to where no-one would care for it. It was already doing the async TGS operation so it doesn't matter anyways as far as proc overhead in my books. I also fixed up the code for `adminGreet()` as well because that was being really weird with not having proper booleans and running `pick()` on things with literally one value (as well as excess stringification)... it wasn't good so I just cleaned all that up too. Ideally this all means we take up a little less CPU time but the aim of this PR is to just clean it all up for modern coding standards. alphabetized lists and early returns galore. ## Why It's Good For The Game Code is better to read and less idented, and better yet it's no longer necessary to read all the softie messages in the middle of `Destroy()` ## Changelog Irrelevant --- code/modules/admin/admin.dm | 25 ++++++++------- code/modules/client/client_procs.dm | 48 +++++++++++++++++++---------- 2 files changed, 45 insertions(+), 28 deletions(-) diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index 10b9a58b87007..5f40de037f4ae 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -286,14 +286,17 @@ ADMIN_VERB(create_or_modify_area, R_DEBUG, "Create Or Modify Area", "Create of m return TRUE -/client/proc/adminGreet(logout) - if(SSticker.HasRoundStarted()) - var/string - if(logout && CONFIG_GET(flag/announce_admin_logout)) - string = pick( - "Admin logout: [key_name(src)]") - else if(!logout && CONFIG_GET(flag/announce_admin_login) && (prefs.toggles & ANNOUNCE_LOGIN)) - string = pick( - "Admin login: [key_name(src)]") - if(string) - message_admins("[string]") +/// Sends a message to adminchat when anyone with a holder logs in or logs out. +/// Is dependent on admin preferences and configuration settings, which means that this proc can fire without sending a message. +/client/proc/adminGreet(logout = FALSE) + if(!SSticker.HasRoundStarted()) + return + + if(logout && CONFIG_GET(flag/announce_admin_logout)) + message_admins("Admin logout: [key_name(src)]") + return + + if(!logout && CONFIG_GET(flag/announce_admin_login) && (prefs.toggles & ANNOUNCE_LOGIN)) + message_admins("Admin login: [key_name(src)]") + return + diff --git a/code/modules/client/client_procs.dm b/code/modules/client/client_procs.dm index ab1c5ffdcb7ab..c3163b3e0b169 100644 --- a/code/modules/client/client_procs.dm +++ b/code/modules/client/client_procs.dm @@ -588,26 +588,10 @@ GLOBAL_LIST_INIT(blacklisted_builds, list( if(credits) QDEL_LIST(credits) if(holder) - adminGreet(1) holder.owner = null GLOB.admins -= src - if (!GLOB.admins.len && SSticker.IsRoundInProgress()) //Only report this stuff if we are currently playing. - var/cheesy_message = pick( - "I have no admins online!",\ - "I'm all alone :(",\ - "I'm feeling lonely :(",\ - "I'm so lonely :(",\ - "Why does nobody love me? :(",\ - "I want a man :(",\ - "Where has everyone gone?",\ - "I need a hug :(",\ - "Someone come hold me :(",\ - "I need someone on me :(",\ - "What happened? Where has everyone gone?",\ - "Forever alone :("\ - ) + handle_admin_logout() - send2adminchat("Server", "[cheesy_message] (No admins online)") QDEL_LIST_ASSOC_VAL(char_render_holders) SSambience.remove_ambience_client(src) @@ -1240,6 +1224,36 @@ GLOBAL_LIST_INIT(blacklisted_builds, list( screen -= object +/// Handles any "fluff" or supplementary procedures related to an admin logout event. Should not have anything critically related cleaning up an admin's logout. +/client/proc/handle_admin_logout() + adminGreet(logout = TRUE) + if(length(GLOB.admins) > 0 || !SSticker.IsRoundInProgress()) // We only want to report this stuff if we are currently playing. + return + + var/list/message_to_send = list() + var/static/list/cheesy_messages = null + + if (isnull(cheesy_messages)) + cheesy_messages = list( + "Forever alone :(", + "I have no admins online!", + "I need a hug :(", + "I need someone on me :(", + "I want a man :(", + "I'm all alone :(", + "I'm feeling lonely :(", + "I'm so lonely :(", + "Someone come hold me :(", + "What happened? Where has everyone gone?", + "Where has everyone gone?", + "Why does nobody love me? :(", + ) + + message_to_send += pick(cheesy_messages) + message_to_send += "(No admins online)" + + send2adminchat("Server", jointext(message_to_send, " ")) + #undef ADMINSWARNED_AT #undef CURRENT_MINUTE #undef CURRENT_SECOND From 6914f8bbf5b9668afd60a91ec2b3161420363bdb Mon Sep 17 00:00:00 2001 From: Sadboysuss <96586172+Sadboysuss@users.noreply.github.com> Date: Sun, 26 May 2024 02:58:35 +0300 Subject: [PATCH 13/17] Upholding map standards for Tramstation (#83400) ## About The Pull Request the SM waste output pipe is now under a window instead of an R-wall, added an emergency cooling area for SM like all other maps have, added another motion sensors camera to upload since it didn't really trigger when mobs went into upload. ## Why It's Good For The Game Every other setup has this but not tram, it's important to have every part of the SM setup. The point of a motion sensor camera is for being alerted before something happens, not after. ## Changelog :cl: grungussuss qol: tramstation upload now has an extra motion camera qol: tramstation SM setup now has an emergency cooling setup /:cl: --- _maps/map_files/tramstation/tramstation.dmm | 141 ++++++++++++++++---- 1 file changed, 113 insertions(+), 28 deletions(-) diff --git a/_maps/map_files/tramstation/tramstation.dmm b/_maps/map_files/tramstation/tramstation.dmm index 917b6101b931b..1cd6326dc2d4e 100644 --- a/_maps/map_files/tramstation/tramstation.dmm +++ b/_maps/map_files/tramstation/tramstation.dmm @@ -15862,6 +15862,18 @@ }, /turf/open/floor/iron/white, /area/station/science/xenobiology) +"exQ" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/atmospherics/components/binary/pump{ + name = "Mix to Gas"; + dir = 8 + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) "exT" = ( /obj/structure/table, /obj/item/radio{ @@ -16240,6 +16252,15 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/engineering/atmos/pumproom) +"eEp" = ( +/obj/machinery/atmospherics/components/unary/thermomachine/freezer{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) "eEx" = ( /obj/structure/cable, /obj/structure/extinguisher_cabinet/directional/north, @@ -19752,7 +19773,8 @@ /area/station/command/teleporter) "fWn" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible, -/turf/closed/wall/r_wall, +/obj/effect/spawner/structure/window/reinforced/plasma, +/turf/open/floor/plating, /area/station/engineering/supermatter/room) "fWA" = ( /turf/open/floor/plating, @@ -20224,6 +20246,7 @@ "gfV" = ( /obj/structure/table/wood/fancy/green, /obj/effect/spawner/round_default_module, +/obj/machinery/camera/motion/directional/east, /turf/open/floor/circuit/green, /area/station/ai_monitored/turret_protected/ai_upload) "gfX" = ( @@ -23853,6 +23876,13 @@ "hzN" = ( /turf/closed/wall/r_wall, /area/station/ai_monitored/command/storage/eva) +"hzQ" = ( +/obj/structure/closet/firecloset, +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) "hzR" = ( /obj/effect/turf_decal/trimline/neutral/line{ dir = 4 @@ -28295,6 +28325,10 @@ /obj/structure/cable, /turf/closed/wall/r_wall, /area/station/ai_monitored/turret_protected/aisat/hallway) +"jfD" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/yellow/visible, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) "jfH" = ( /obj/effect/turf_decal/trimline/red/filled/corner{ dir = 1 @@ -29173,7 +29207,6 @@ /turf/open/floor/iron, /area/station/hallway/secondary/command) "jux" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, /obj/structure/cable/layer1, /obj/effect/turf_decal/trimline/yellow/arrow_ccw{ dir = 6 @@ -29181,6 +29214,7 @@ /obj/effect/turf_decal/trimline/yellow/corner{ dir = 1 }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, /turf/open/floor/engine, /area/station/engineering/supermatter/room) "juT" = ( @@ -31410,6 +31444,15 @@ }, /turf/open/floor/wood/large, /area/station/service/library) +"kgg" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) "kgr" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -32561,6 +32604,11 @@ /obj/effect/turf_decal/tile/blue/opposingcorners, /turf/open/floor/iron/freezer, /area/station/medical/coldroom) +"kAF" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) "kAO" = ( /obj/effect/turf_decal/trimline/neutral/filled/line{ dir = 8 @@ -40535,6 +40583,13 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/engineering/atmos) +"nmN" = ( +/obj/structure/closet/radiation, +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) "nmP" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -44120,6 +44175,11 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/tram/left) +"oDq" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/yellow/visible, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) "oDs" = ( /obj/structure/cable, /obj/item/radio/intercom/directional/west, @@ -46980,6 +47040,13 @@ /obj/structure/transit_tube_pod, /turf/open/floor/plating, /area/station/science/lower) +"pFO" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/yellow/visible, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) "pFU" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, @@ -67758,7 +67825,10 @@ /turf/open/floor/iron, /area/station/security/checkpoint/escape) "wPj" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, +/obj/machinery/atmospherics/components/binary/pump{ + dir = 1; + name = "Mix Bypass" + }, /turf/open/floor/engine, /area/station/engineering/supermatter/room) "wPD" = ( @@ -68155,6 +68225,16 @@ }, /turf/open/floor/iron, /area/station/engineering/break_room) +"wYS" = ( +/obj/effect/turf_decal/stripes/corner, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/atmospherics/components/binary/pump{ + name = "Gas to Mix"; + dir = 4 + }, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) "wYX" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, @@ -69207,6 +69287,11 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/circuit/green, /area/station/ai_monitored/command/nuke_storage) +"xuk" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/yellow/visible, +/obj/machinery/meter, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) "xum" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 @@ -103540,11 +103625,11 @@ sHh yeg sHh sHh -sHh -sHh -sHh -sHh -sHh +exQ +kAF +kAF +kAF +wYS sHh sHh poT @@ -103797,11 +103882,11 @@ qHs sHj qHs qHs -qHs -qHs -qHs -qHs -qHs +pFO +jfD +xuk +jfD +oDq qHs qHs fWn @@ -104053,14 +104138,14 @@ bpl mRs jaW mAx -hZr -aaa -aaa -aaa -aaa -aaa -aaa -aaa +qHs +nmN +eEp +kgg +eEp +hzQ +qHs +pHM aeV aeV prq @@ -104310,13 +104395,13 @@ bpl mRs woR mAx -hZr -hZr -hZr -hZr -aaa -aaa -aaa +qHs +qHs +qHs +qHs +qHs +qHs +qHs aaa aac aaa From 8617902873c7274e1b338baf03620028fe2f00ff Mon Sep 17 00:00:00 2001 From: orange man <61334995+comfyorange@users.noreply.github.com> Date: Sun, 26 May 2024 11:58:54 +1200 Subject: [PATCH 14/17] Automatic changelog for PR #83400 [ci skip] --- html/changelogs/AutoChangeLog-pr-83400.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-83400.yml diff --git a/html/changelogs/AutoChangeLog-pr-83400.yml b/html/changelogs/AutoChangeLog-pr-83400.yml new file mode 100644 index 0000000000000..16cc0beea43bc --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-83400.yml @@ -0,0 +1,5 @@ +author: "grungussuss" +delete-after: True +changes: + - qol: "tramstation upload now has an extra motion camera" + - qol: "tramstation SM setup now has an emergency cooling setup" \ No newline at end of file From e810629cec5e111b75f7654daf79d8e28cfadc50 Mon Sep 17 00:00:00 2001 From: Changelogs Date: Sun, 26 May 2024 00:28:39 +0000 Subject: [PATCH 15/17] Automatic changelog compile [ci skip] --- html/changelogs/AutoChangeLog-pr-83396.yml | 4 ---- html/changelogs/AutoChangeLog-pr-83400.yml | 5 ----- html/changelogs/AutoChangeLog-pr-83405.yml | 4 ---- html/changelogs/AutoChangeLog-pr-83415.yml | 4 ---- html/changelogs/AutoChangeLog-pr-83418.yml | 4 ---- html/changelogs/AutoChangeLog-pr-83419.yml | 4 ---- html/changelogs/AutoChangeLog-pr-83424.yml | 4 ---- html/changelogs/AutoChangeLog-pr-83429.yml | 4 ---- html/changelogs/archive/2024-05.yml | 19 +++++++++++++++++++ 9 files changed, 19 insertions(+), 33 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-83396.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-83400.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-83405.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-83415.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-83418.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-83419.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-83424.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-83429.yml diff --git a/html/changelogs/AutoChangeLog-pr-83396.yml b/html/changelogs/AutoChangeLog-pr-83396.yml deleted file mode 100644 index 860e4264c1a42..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-83396.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "grungussuss" -delete-after: True -changes: - - bugfix: "changed layout of Northstar dining hall so customer bots can reach the kitchen counter" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-83400.yml b/html/changelogs/AutoChangeLog-pr-83400.yml deleted file mode 100644 index 16cc0beea43bc..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-83400.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "grungussuss" -delete-after: True -changes: - - qol: "tramstation upload now has an extra motion camera" - - qol: "tramstation SM setup now has an emergency cooling setup" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-83405.yml b/html/changelogs/AutoChangeLog-pr-83405.yml deleted file mode 100644 index ea9616256c7fd..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-83405.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Jacquerel" -delete-after: True -changes: - - bugfix: "Ghosts can more reliably become a harvester." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-83415.yml b/html/changelogs/AutoChangeLog-pr-83415.yml deleted file mode 100644 index f69a1b06a4c16..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-83415.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "tmyqlfpir" -delete-after: True -changes: - - bugfix: "[Ice Box Station] Dorm 1's door no longer shares ID with dorm 2's door" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-83418.yml b/html/changelogs/AutoChangeLog-pr-83418.yml deleted file mode 100644 index f3fdcd55ff963..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-83418.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "OverwatchVoice" -delete-after: True -changes: - - qol: "The \"Proto-Nitrate BZ response\" atmsopheric reaction now lists it's required temperature." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-83419.yml b/html/changelogs/AutoChangeLog-pr-83419.yml deleted file mode 100644 index 2cc568fec0508..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-83419.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "paganiy" -delete-after: True -changes: - - bugfix: "You can shoot at items on the floor again" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-83424.yml b/html/changelogs/AutoChangeLog-pr-83424.yml deleted file mode 100644 index 760210aea94e3..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-83424.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Rhials" -delete-after: True -changes: - - admin: "Admins can now reroll random events into something else." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-83429.yml b/html/changelogs/AutoChangeLog-pr-83429.yml deleted file mode 100644 index 501e039234d90..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-83429.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "thegrb93" -delete-after: True -changes: - - qol: "Made borg inventory not shift around depending on equipped items" \ No newline at end of file diff --git a/html/changelogs/archive/2024-05.yml b/html/changelogs/archive/2024-05.yml index 7d14864a58dd3..0bc768070518f 100644 --- a/html/changelogs/archive/2024-05.yml +++ b/html/changelogs/archive/2024-05.yml @@ -681,3 +681,22 @@ item names nikothedude: - code_imp: New signals for atom storage remove and insert +2024-05-26: + Jacquerel: + - bugfix: Ghosts can more reliably become a harvester. + OverwatchVoice: + - qol: The "Proto-Nitrate BZ response" atmsopheric reaction now lists it's required + temperature. + Rhials: + - admin: Admins can now reroll random events into something else. + grungussuss: + - qol: tramstation upload now has an extra motion camera + - qol: tramstation SM setup now has an emergency cooling setup + - bugfix: changed layout of Northstar dining hall so customer bots can reach the + kitchen counter + paganiy: + - bugfix: You can shoot at items on the floor again + thegrb93: + - qol: Made borg inventory not shift around depending on equipped items + tmyqlfpir: + - bugfix: '[Ice Box Station] Dorm 1''s door no longer shares ID with dorm 2''s door' From 8eb3b51ad99427d5bb7e3ac0ed6c41bf2e500aff Mon Sep 17 00:00:00 2001 From: YesterdaysPromise <122572637+YesterdaysPromise@users.noreply.github.com> Date: Sun, 26 May 2024 06:08:08 +0200 Subject: [PATCH 16/17] /icons/ folder cleansing crusade part 3 (#83420) ## About The Pull Request In my effort to make the /icons/ folder cleaner and more intuitive instead of having to rely on recalling names of stuff and looking them up in code to find them for poor sods such as myself, plus in spurt of complusion to organize stuff, here goes. I've tracked all changes in commit descriptions. A lot still to be done, but I know these waves go over dozens of files making things slow, so went lighter on it. Destroyed useless impostor files taking up space and cleaned a stray pixel on my way. ## Why It's Good For The Game Cleaner /icons/ file means saner spriters, less time spent. Stray pixels and impostor files (ones which are copies of actually used ones elsewhere) are not good. ## Changelog :cl: image: Cleaned a single stray pixel in a single frame of a bite telegraphing accidentaly found while re-organizing the files. /:cl: --- .../LavaRuins/lavaland_biodome_beach.dmm | 4 +- _maps/RandomZLevels/SnowCabin.dmm | 2 +- code/__DEFINES/achievements.dm | 2 +- code/__DEFINES/fonts.dm | 2 +- code/_onclick/hud/picture_in_picture.dm | 10 +-- code/datums/chatmessage.dm | 4 +- code/datums/components/clickbox.dm | 2 +- code/datums/components/creamed.dm | 4 +- code/datums/elements/cult_halo.dm | 2 +- code/datums/greyscale/README.md | 4 +- .../greyscale_configs/greyscale_items.dm | 2 +- code/datums/screentips/screentips.dm | 2 +- code/game/machinery/mining_weather_monitor.dm | 2 +- .../effects/decals/turfdecal/weather.dm | 2 +- code/game/objects/effects/forcefields.dm | 2 +- .../objects/effects/temporary_visuals/cult.dm | 6 +- .../temporary_visuals/miscellaneous.dm | 2 +- code/game/objects/effects/wanted_poster.dm | 2 +- code/game/objects/items/handcuffs.dm | 2 +- code/game/objects/items/surgery_tray.dm | 2 +- code/game/objects/items/toys.dm | 4 +- code/game/objects/items/virgin_mary.dm | 2 +- code/game/objects/items/weaponry.dm | 2 +- code/game/objects/structures/flora.dm | 4 +- code/game/objects/structures/showcase.dm | 4 +- code/game/objects/structures/traps.dm | 4 +- .../view_variables/color_matrix_editor.dm | 2 +- code/modules/antagonists/cult/blood_magic.dm | 2 +- code/modules/antagonists/cult/cult_items.dm | 2 +- code/modules/antagonists/cult/runes.dm | 2 +- .../nukeop/datums/operative_team.dm | 2 +- code/modules/antagonists/obsessed/obsessed.dm | 2 +- .../antagonists/traitor/datum_traitor.dm | 2 +- code/modules/asset_cache/assets/adventure.dm | 8 +-- code/modules/asset_cache/assets/arcade.dm | 16 ++--- code/modules/asset_cache/assets/chat.dm | 4 +- code/modules/asset_cache/assets/circuits.dm | 2 +- code/modules/asset_cache/assets/common.dm | 2 +- code/modules/asset_cache/assets/condiments.dm | 40 ++++++------ code/modules/asset_cache/assets/contracts.dm | 8 +-- code/modules/asset_cache/assets/genetics.dm | 6 +- code/modules/asset_cache/assets/headers.dm | 56 ++++++++-------- code/modules/asset_cache/assets/inventory.dm | 34 +++++----- code/modules/asset_cache/assets/mecha.dm | 2 +- code/modules/asset_cache/assets/notes.dm | 8 +-- code/modules/asset_cache/assets/orbit.dm | 2 +- .../asset_cache/assets/particle_editor.dm | 24 +++---- code/modules/asset_cache/assets/pda.dm | 60 +++++++++--------- .../modules/asset_cache/assets/plane_debug.dm | 2 +- code/modules/asset_cache/assets/radar.dm | 6 +- code/modules/asset_cache/assets/safe.dm | 2 +- code/modules/buildmode/buttons.dm | 2 +- code/modules/cargo/markets/market_uplink.dm | 4 +- code/modules/client/verbs/ooc.dm | 2 +- code/modules/language/_language.dm | 2 +- code/modules/mining/equipment/miningradio.dm | 2 +- .../mega_arachnid/mega_arachnid_abilities.dm | 2 +- .../modules/mob/living/silicon/ai/multicam.dm | 4 +- .../computers/item/laptop.dm | 2 +- .../modular_computers/computers/item/pda.dm | 2 +- .../file_system/programs/virtual_pet.dm | 12 ++-- code/modules/power/cable.dm | 2 +- code/modules/power/singularity/narsie.dm | 2 +- .../projectiles/guns/ballistic/launchers.dm | 2 +- .../reagents/reagent_containers/misc.dm | 2 +- code/modules/vehicles/_vehicle.dm | 2 +- code/modules/vehicles/lavaboat.dm | 2 +- code/modules/vehicles/mecha/_mecha.dm | 2 +- .../vehicles/mecha/combat/savannah_ivanov.dm | 2 +- .../mecha/equipment/mecha_equipment.dm | 2 +- .../mecha/equipment/tools/other_tools.dm | 2 +- .../mecha/equipment/weapons/mecha_ammo.dm | 2 +- .../mecha/mecha_construction_paths.dm | 4 +- code/modules/vehicles/mecha/mecha_parts.dm | 2 +- code/modules/vehicles/mecha/mecha_wreckage.dm | 4 +- code/modules/vehicles/scooter.dm | 2 +- code/modules/vehicles/vehicle_key.dm | 2 +- code/modules/vehicles/wheelchair.dm | 6 +- icons/effects/{cult/effects.dmi => cult.dmi} | Bin icons/effects/{effects_rcd.dmi => rcd.dmi} | Bin icons/{misc => hud}/buildmode.dmi | Bin icons/{misc => hud}/pic_in_pic.dmi | Bin icons/mob/animal_item_head.dmi | Bin 1059 -> 0 bytes icons/{ => mob}/effects/creampie.dmi | Bin icons/{effects/cult => mob/effects}/halo.dmi | Bin icons/mob/pets.dmi | Bin 79103 -> 0 bytes icons/mob/pets_held_lh.dmi | Bin 11585 -> 0 bytes icons/mob/pets_held_rh.dmi | Bin 11660 -> 0 bytes icons/mob/{ => rideables}/coop_mech.dmi | Bin icons/mob/{ => rideables}/mech_construct.dmi | Bin .../mob/{ => rideables}/mech_construction.dmi | Bin icons/mob/{ => rideables}/mecha.dmi | Bin icons/{obj => mob/rideables}/vehicles.dmi | Bin icons/mob/telegraphing/telegraph.dmi | Bin 1973 -> 1964 bytes icons/obj/{ => devices}/blackmarket.dmi | Bin icons/obj/{ => devices}/mauna_mug.dmi | Bin .../{mob => obj/devices}/mecha_equipment.dmi | Bin icons/obj/{ => devices}/miningradio.dmi | Bin icons/obj/{ => devices}/modular_laptop.dmi | Bin icons/obj/{ => devices}/modular_pda.dmi | Bin icons/obj/{ => devices}/pda.dmi | Bin icons/{misc => obj/fluff}/beach.dmi | Bin icons/{misc => obj/fluff}/beach2.dmi | Bin icons/obj/{ => medical}/medicart.dmi | Bin .../{mob => obj/weapons/guns}/mecha_ammo.dmi | Bin icons/obj/{ => weapons}/restraints.dmi | Bin icons/{misc => testing}/Font_Minimal.dmi | Bin icons/{misc => testing}/colortest.dmi | Bin icons/{misc => testing}/hidden.dmi | Bin .../achievements/achievements.dmi | Bin icons/{ui_icons => ui}/adventure/default.png | Bin icons/{ui_icons => ui}/adventure/grue.png | Bin .../adventure/signal_lost.png | Bin icons/{ui_icons => ui}/adventure/trade.png | Bin icons/{ui_icons => ui}/antags/badass.dmi | Bin icons/{ui_icons => ui}/antags/obsessed.dmi | Bin icons/{ui_icons => ui}/arcade/boss1.gif | Bin icons/{ui_icons => ui}/arcade/boss2.gif | Bin icons/{ui_icons => ui}/arcade/boss3.gif | Bin icons/{ui_icons => ui}/arcade/boss4.gif | Bin icons/{ui_icons => ui}/arcade/boss5.gif | Bin icons/{ui_icons => ui}/arcade/boss6.gif | Bin icons/{ui_icons => ui}/arcade/fireplace.png | Bin icons/{ui_icons => ui}/arcade/shopkeeper.png | Bin icons/{ui_icons => ui}/chat/chat_icons.dmi | Bin icons/{ui_icons/emoji => ui/chat}/emoji.dmi | Bin icons/{misc => ui/chat}/language.dmi | Bin .../{ui_icons => ui}/chat/member_content.dmi | Bin icons/{misc => ui/chat}/pepe.dmi | Bin icons/{misc => ui}/clickbox.dmi | Bin icons/{ui_icons => ui}/common/padlock.png | Bin icons/{ui_icons => ui}/common/tg_16.png | Bin icons/{ui_icons => ui}/common/tg_32.png | Bin .../{ui_icons => ui}/condiments/bbqsauce.png | Bin icons/{ui_icons => ui}/condiments/bottle.png | Bin .../condiments/cherryjelly.png | Bin .../{ui_icons => ui}/condiments/coldsauce.png | Bin .../condiments/condi_empty.png | Bin .../condiments/cookingoil.png | Bin icons/{ui_icons => ui}/condiments/enzyme.png | Bin icons/{ui_icons => ui}/condiments/flour.png | Bin icons/{ui_icons => ui}/condiments/honey.png | Bin .../{ui_icons => ui}/condiments/hotsauce.png | Bin icons/{ui_icons => ui}/condiments/ketchup.png | Bin .../condiments/mayonnaise.png | Bin icons/{ui_icons => ui}/condiments/milk.png | Bin .../{ui_icons => ui}/condiments/oliveoil.png | Bin .../condiments/peanutbutter.png | Bin .../condiments/peppermillsmall.png | Bin icons/{ui_icons => ui}/condiments/rice.png | Bin .../condiments/saltshakersmall.png | Bin icons/{ui_icons => ui}/condiments/soymilk.png | Bin .../{ui_icons => ui}/condiments/soysauce.png | Bin icons/{ui_icons => ui}/condiments/sugar.png | Bin .../{ui_icons => ui}/contracts/bluespace.png | Bin .../contracts/destruction.png | Bin icons/{ui_icons => ui}/contracts/healing.png | Bin icons/{ui_icons => ui}/contracts/robeless.png | Bin icons/{ui_icons => ui}/dna/dna_discovered.gif | Bin icons/{ui_icons => ui}/dna/dna_extra.gif | Bin .../{ui_icons => ui}/dna/dna_undiscovered.gif | Bin icons/{ui_icons => ui}/inventory/back.png | Bin icons/{ui_icons => ui}/inventory/belt.png | Bin icons/{ui_icons => ui}/inventory/collar.png | Bin icons/{ui_icons => ui}/inventory/ears.png | Bin icons/{ui_icons => ui}/inventory/glasses.png | Bin icons/{ui_icons => ui}/inventory/gloves.png | Bin icons/{ui_icons => ui}/inventory/hand_l.png | Bin icons/{ui_icons => ui}/inventory/hand_r.png | Bin icons/{ui_icons => ui}/inventory/head.png | Bin icons/{ui_icons => ui}/inventory/id.png | Bin icons/{ui_icons => ui}/inventory/mask.png | Bin icons/{ui_icons => ui}/inventory/neck.png | Bin icons/{ui_icons => ui}/inventory/pocket.png | Bin icons/{ui_icons => ui}/inventory/shoes.png | Bin icons/{ui_icons => ui}/inventory/suit.png | Bin .../inventory/suit_storage.png | Bin icons/{ui_icons => ui}/inventory/uniform.png | Bin icons/{ui_icons => ui}/mecha/armor.dmi | Bin icons/{ui_icons => ui}/notes/high_button.png | Bin .../{ui_icons => ui}/notes/medium_button.png | Bin icons/{ui_icons => ui}/notes/minor_button.png | Bin icons/{ui_icons => ui}/notes/none_button.png | Bin icons/{ui_icons => ui}/orbit/ghost.png | Bin .../particle_editor/box_gen.png | Bin .../particle_editor/circle_gen.png | Bin .../particle_editor/cube_gen.png | Bin .../particle_editor/linear_rand.png | Bin .../particle_editor/motion.png | Bin .../particle_editor/normal_rand.png | Bin .../particle_editor/num_gen.png | Bin .../particle_editor/sphere_gen.png | Bin .../particle_editor/square_gen.png | Bin .../particle_editor/square_rand.png | Bin .../particle_editor/uniform_rand.png | Bin .../particle_editor/vector_gen.png | Bin icons/{pda_icons => ui/pda}/pda_atmos.png | Bin icons/{pda_icons => ui/pda}/pda_back.png | Bin icons/{pda_icons => ui/pda}/pda_bell.png | Bin icons/{pda_icons => ui/pda}/pda_blank.png | Bin icons/{pda_icons => ui/pda}/pda_boom.png | Bin icons/{pda_icons => ui/pda}/pda_bucket.png | Bin icons/{pda_icons => ui/pda}/pda_chatroom.png | Bin icons/{pda_icons => ui/pda}/pda_cleanbot.png | Bin icons/{pda_icons => ui/pda}/pda_color.png | Bin icons/{pda_icons => ui/pda}/pda_crate.png | Bin icons/{pda_icons => ui/pda}/pda_cuffs.png | Bin .../pda}/pda_droneblacklist.png | Bin .../{pda_icons => ui/pda}/pda_dronephone.png | Bin icons/{pda_icons => ui/pda}/pda_eject.png | Bin icons/{pda_icons => ui/pda}/pda_emoji.png | Bin icons/{pda_icons => ui/pda}/pda_exit.png | Bin .../{pda_icons => ui/pda}/pda_flashlight.png | Bin icons/{pda_icons => ui/pda}/pda_floorbot.png | Bin icons/{pda_icons => ui/pda}/pda_font.png | Bin icons/{pda_icons => ui/pda}/pda_honk.png | Bin icons/{pda_icons => ui/pda}/pda_locked.PNG | Bin icons/{pda_icons => ui/pda}/pda_mail.png | Bin icons/{pda_icons => ui/pda}/pda_medbot.png | Bin icons/{pda_icons => ui/pda}/pda_medical.png | Bin icons/{pda_icons => ui/pda}/pda_menu.png | Bin icons/{pda_icons => ui/pda}/pda_mule.png | Bin icons/{pda_icons => ui/pda}/pda_notes.png | Bin icons/{pda_icons => ui/pda}/pda_power.png | Bin icons/{pda_icons => ui/pda}/pda_rdoor.png | Bin icons/{pda_icons => ui/pda}/pda_reagent.png | Bin icons/{pda_icons => ui/pda}/pda_refresh.png | Bin icons/{pda_icons => ui/pda}/pda_scanner.png | Bin icons/{pda_icons => ui/pda}/pda_signaler.png | Bin icons/{pda_icons => ui/pda}/pda_skills.png | Bin icons/{pda_icons => ui/pda}/pda_status.png | Bin .../programs}/alarm_green.gif | Bin .../programs}/alarm_red.gif | Bin .../programs}/batt_100.gif | Bin .../programs}/batt_20.gif | Bin .../programs}/batt_40.gif | Bin .../{program_icons => ui/programs}/batt_5.gif | Bin .../programs}/batt_60.gif | Bin .../programs}/batt_80.gif | Bin .../programs}/borg_mon.gif | Bin .../programs}/charging.gif | Bin .../programs}/downloader_finished.gif | Bin .../programs}/downloader_running.gif | Bin .../{program_icons => ui/programs}/mafia.gif | Bin .../programs}/ntnrc_idle.gif | Bin .../programs}/ntnrc_new.gif | Bin .../programs}/power_norm.gif | Bin .../programs}/power_warn.gif | Bin .../programs}/robotact.gif | Bin .../programs}/sig_high.gif | Bin .../programs}/sig_lan.gif | Bin .../programs}/sig_low.gif | Bin .../programs}/sig_none.gif | Bin .../programs}/smmon_0.gif | Bin .../programs}/smmon_1.gif | Bin .../programs}/smmon_2.gif | Bin .../programs}/smmon_3.gif | Bin .../programs}/smmon_4.gif | Bin .../programs}/smmon_5.gif | Bin .../programs}/smmon_6.gif | Bin icons/{ui_icons => ui}/safe/safe_dial.png | Bin .../screentips/cursor_hints.dmi | Bin .../{ui_icons => ui}/tgui/grid_background.png | Bin .../tgui/ntosradar_background.png | Bin .../tgui/ntosradar_pointer.png | Bin .../tgui/ntosradar_pointer_S.png | Bin .../{ui_icons => ui}/virtualpet/pet_state.dmi | Bin strings/tcg/set_one.json | 4 +- 268 files changed, 228 insertions(+), 228 deletions(-) rename icons/effects/{cult/effects.dmi => cult.dmi} (100%) rename icons/effects/{effects_rcd.dmi => rcd.dmi} (100%) rename icons/{misc => hud}/buildmode.dmi (100%) rename icons/{misc => hud}/pic_in_pic.dmi (100%) delete mode 100644 icons/mob/animal_item_head.dmi rename icons/{ => mob}/effects/creampie.dmi (100%) rename icons/{effects/cult => mob/effects}/halo.dmi (100%) delete mode 100644 icons/mob/pets.dmi delete mode 100644 icons/mob/pets_held_lh.dmi delete mode 100644 icons/mob/pets_held_rh.dmi rename icons/mob/{ => rideables}/coop_mech.dmi (100%) rename icons/mob/{ => rideables}/mech_construct.dmi (100%) rename icons/mob/{ => rideables}/mech_construction.dmi (100%) rename icons/mob/{ => rideables}/mecha.dmi (100%) rename icons/{obj => mob/rideables}/vehicles.dmi (100%) rename icons/obj/{ => devices}/blackmarket.dmi (100%) rename icons/obj/{ => devices}/mauna_mug.dmi (100%) rename icons/{mob => obj/devices}/mecha_equipment.dmi (100%) rename icons/obj/{ => devices}/miningradio.dmi (100%) rename icons/obj/{ => devices}/modular_laptop.dmi (100%) rename icons/obj/{ => devices}/modular_pda.dmi (100%) rename icons/obj/{ => devices}/pda.dmi (100%) rename icons/{misc => obj/fluff}/beach.dmi (100%) rename icons/{misc => obj/fluff}/beach2.dmi (100%) rename icons/obj/{ => medical}/medicart.dmi (100%) rename icons/{mob => obj/weapons/guns}/mecha_ammo.dmi (100%) rename icons/obj/{ => weapons}/restraints.dmi (100%) rename icons/{misc => testing}/Font_Minimal.dmi (100%) rename icons/{misc => testing}/colortest.dmi (100%) rename icons/{misc => testing}/hidden.dmi (100%) rename icons/{ui_icons => ui}/achievements/achievements.dmi (100%) rename icons/{ui_icons => ui}/adventure/default.png (100%) rename icons/{ui_icons => ui}/adventure/grue.png (100%) rename icons/{ui_icons => ui}/adventure/signal_lost.png (100%) rename icons/{ui_icons => ui}/adventure/trade.png (100%) rename icons/{ui_icons => ui}/antags/badass.dmi (100%) rename icons/{ui_icons => ui}/antags/obsessed.dmi (100%) rename icons/{ui_icons => ui}/arcade/boss1.gif (100%) rename icons/{ui_icons => ui}/arcade/boss2.gif (100%) rename icons/{ui_icons => ui}/arcade/boss3.gif (100%) rename icons/{ui_icons => ui}/arcade/boss4.gif (100%) rename icons/{ui_icons => ui}/arcade/boss5.gif (100%) rename icons/{ui_icons => ui}/arcade/boss6.gif (100%) rename icons/{ui_icons => ui}/arcade/fireplace.png (100%) rename icons/{ui_icons => ui}/arcade/shopkeeper.png (100%) rename icons/{ui_icons => ui}/chat/chat_icons.dmi (100%) rename icons/{ui_icons/emoji => ui/chat}/emoji.dmi (100%) rename icons/{misc => ui/chat}/language.dmi (100%) rename icons/{ui_icons => ui}/chat/member_content.dmi (100%) rename icons/{misc => ui/chat}/pepe.dmi (100%) rename icons/{misc => ui}/clickbox.dmi (100%) rename icons/{ui_icons => ui}/common/padlock.png (100%) rename icons/{ui_icons => ui}/common/tg_16.png (100%) rename icons/{ui_icons => ui}/common/tg_32.png (100%) rename icons/{ui_icons => ui}/condiments/bbqsauce.png (100%) rename icons/{ui_icons => ui}/condiments/bottle.png (100%) rename icons/{ui_icons => ui}/condiments/cherryjelly.png (100%) rename icons/{ui_icons => ui}/condiments/coldsauce.png (100%) rename icons/{ui_icons => ui}/condiments/condi_empty.png (100%) rename icons/{ui_icons => ui}/condiments/cookingoil.png (100%) rename icons/{ui_icons => ui}/condiments/enzyme.png (100%) rename icons/{ui_icons => ui}/condiments/flour.png (100%) rename icons/{ui_icons => ui}/condiments/honey.png (100%) rename icons/{ui_icons => ui}/condiments/hotsauce.png (100%) rename icons/{ui_icons => ui}/condiments/ketchup.png (100%) rename icons/{ui_icons => ui}/condiments/mayonnaise.png (100%) rename icons/{ui_icons => ui}/condiments/milk.png (100%) rename icons/{ui_icons => ui}/condiments/oliveoil.png (100%) rename icons/{ui_icons => ui}/condiments/peanutbutter.png (100%) rename icons/{ui_icons => ui}/condiments/peppermillsmall.png (100%) rename icons/{ui_icons => ui}/condiments/rice.png (100%) rename icons/{ui_icons => ui}/condiments/saltshakersmall.png (100%) rename icons/{ui_icons => ui}/condiments/soymilk.png (100%) rename icons/{ui_icons => ui}/condiments/soysauce.png (100%) rename icons/{ui_icons => ui}/condiments/sugar.png (100%) rename icons/{ui_icons => ui}/contracts/bluespace.png (100%) rename icons/{ui_icons => ui}/contracts/destruction.png (100%) rename icons/{ui_icons => ui}/contracts/healing.png (100%) rename icons/{ui_icons => ui}/contracts/robeless.png (100%) rename icons/{ui_icons => ui}/dna/dna_discovered.gif (100%) rename icons/{ui_icons => ui}/dna/dna_extra.gif (100%) rename icons/{ui_icons => ui}/dna/dna_undiscovered.gif (100%) rename icons/{ui_icons => ui}/inventory/back.png (100%) rename icons/{ui_icons => ui}/inventory/belt.png (100%) rename icons/{ui_icons => ui}/inventory/collar.png (100%) rename icons/{ui_icons => ui}/inventory/ears.png (100%) rename icons/{ui_icons => ui}/inventory/glasses.png (100%) rename icons/{ui_icons => ui}/inventory/gloves.png (100%) rename icons/{ui_icons => ui}/inventory/hand_l.png (100%) rename icons/{ui_icons => ui}/inventory/hand_r.png (100%) rename icons/{ui_icons => ui}/inventory/head.png (100%) rename icons/{ui_icons => ui}/inventory/id.png (100%) rename icons/{ui_icons => ui}/inventory/mask.png (100%) rename icons/{ui_icons => ui}/inventory/neck.png (100%) rename icons/{ui_icons => ui}/inventory/pocket.png (100%) rename icons/{ui_icons => ui}/inventory/shoes.png (100%) rename icons/{ui_icons => ui}/inventory/suit.png (100%) rename icons/{ui_icons => ui}/inventory/suit_storage.png (100%) rename icons/{ui_icons => ui}/inventory/uniform.png (100%) rename icons/{ui_icons => ui}/mecha/armor.dmi (100%) rename icons/{ui_icons => ui}/notes/high_button.png (100%) rename icons/{ui_icons => ui}/notes/medium_button.png (100%) rename icons/{ui_icons => ui}/notes/minor_button.png (100%) rename icons/{ui_icons => ui}/notes/none_button.png (100%) rename icons/{ui_icons => ui}/orbit/ghost.png (100%) rename icons/{ui_icons => ui}/particle_editor/box_gen.png (100%) rename icons/{ui_icons => ui}/particle_editor/circle_gen.png (100%) rename icons/{ui_icons => ui}/particle_editor/cube_gen.png (100%) rename icons/{ui_icons => ui}/particle_editor/linear_rand.png (100%) rename icons/{ui_icons => ui}/particle_editor/motion.png (100%) rename icons/{ui_icons => ui}/particle_editor/normal_rand.png (100%) rename icons/{ui_icons => ui}/particle_editor/num_gen.png (100%) rename icons/{ui_icons => ui}/particle_editor/sphere_gen.png (100%) rename icons/{ui_icons => ui}/particle_editor/square_gen.png (100%) rename icons/{ui_icons => ui}/particle_editor/square_rand.png (100%) rename icons/{ui_icons => ui}/particle_editor/uniform_rand.png (100%) rename icons/{ui_icons => ui}/particle_editor/vector_gen.png (100%) rename icons/{pda_icons => ui/pda}/pda_atmos.png (100%) rename icons/{pda_icons => ui/pda}/pda_back.png (100%) rename icons/{pda_icons => ui/pda}/pda_bell.png (100%) rename icons/{pda_icons => ui/pda}/pda_blank.png (100%) rename icons/{pda_icons => ui/pda}/pda_boom.png (100%) rename icons/{pda_icons => ui/pda}/pda_bucket.png (100%) rename icons/{pda_icons => ui/pda}/pda_chatroom.png (100%) rename icons/{pda_icons => ui/pda}/pda_cleanbot.png (100%) rename icons/{pda_icons => ui/pda}/pda_color.png (100%) rename icons/{pda_icons => ui/pda}/pda_crate.png (100%) rename icons/{pda_icons => ui/pda}/pda_cuffs.png (100%) rename icons/{pda_icons => ui/pda}/pda_droneblacklist.png (100%) rename icons/{pda_icons => ui/pda}/pda_dronephone.png (100%) rename icons/{pda_icons => ui/pda}/pda_eject.png (100%) rename icons/{pda_icons => ui/pda}/pda_emoji.png (100%) rename icons/{pda_icons => ui/pda}/pda_exit.png (100%) rename icons/{pda_icons => ui/pda}/pda_flashlight.png (100%) rename icons/{pda_icons => ui/pda}/pda_floorbot.png (100%) rename icons/{pda_icons => ui/pda}/pda_font.png (100%) rename icons/{pda_icons => ui/pda}/pda_honk.png (100%) rename icons/{pda_icons => ui/pda}/pda_locked.PNG (100%) rename icons/{pda_icons => ui/pda}/pda_mail.png (100%) rename icons/{pda_icons => ui/pda}/pda_medbot.png (100%) rename icons/{pda_icons => ui/pda}/pda_medical.png (100%) rename icons/{pda_icons => ui/pda}/pda_menu.png (100%) rename icons/{pda_icons => ui/pda}/pda_mule.png (100%) rename icons/{pda_icons => ui/pda}/pda_notes.png (100%) rename icons/{pda_icons => ui/pda}/pda_power.png (100%) rename icons/{pda_icons => ui/pda}/pda_rdoor.png (100%) rename icons/{pda_icons => ui/pda}/pda_reagent.png (100%) rename icons/{pda_icons => ui/pda}/pda_refresh.png (100%) rename icons/{pda_icons => ui/pda}/pda_scanner.png (100%) rename icons/{pda_icons => ui/pda}/pda_signaler.png (100%) rename icons/{pda_icons => ui/pda}/pda_skills.png (100%) rename icons/{pda_icons => ui/pda}/pda_status.png (100%) rename icons/{program_icons => ui/programs}/alarm_green.gif (100%) rename icons/{program_icons => ui/programs}/alarm_red.gif (100%) rename icons/{program_icons => ui/programs}/batt_100.gif (100%) rename icons/{program_icons => ui/programs}/batt_20.gif (100%) rename icons/{program_icons => ui/programs}/batt_40.gif (100%) rename icons/{program_icons => ui/programs}/batt_5.gif (100%) rename icons/{program_icons => ui/programs}/batt_60.gif (100%) rename icons/{program_icons => ui/programs}/batt_80.gif (100%) rename icons/{program_icons => ui/programs}/borg_mon.gif (100%) rename icons/{program_icons => ui/programs}/charging.gif (100%) rename icons/{program_icons => ui/programs}/downloader_finished.gif (100%) rename icons/{program_icons => ui/programs}/downloader_running.gif (100%) rename icons/{program_icons => ui/programs}/mafia.gif (100%) rename icons/{program_icons => ui/programs}/ntnrc_idle.gif (100%) rename icons/{program_icons => ui/programs}/ntnrc_new.gif (100%) rename icons/{program_icons => ui/programs}/power_norm.gif (100%) rename icons/{program_icons => ui/programs}/power_warn.gif (100%) rename icons/{program_icons => ui/programs}/robotact.gif (100%) rename icons/{program_icons => ui/programs}/sig_high.gif (100%) rename icons/{program_icons => ui/programs}/sig_lan.gif (100%) rename icons/{program_icons => ui/programs}/sig_low.gif (100%) rename icons/{program_icons => ui/programs}/sig_none.gif (100%) rename icons/{program_icons => ui/programs}/smmon_0.gif (100%) rename icons/{program_icons => ui/programs}/smmon_1.gif (100%) rename icons/{program_icons => ui/programs}/smmon_2.gif (100%) rename icons/{program_icons => ui/programs}/smmon_3.gif (100%) rename icons/{program_icons => ui/programs}/smmon_4.gif (100%) rename icons/{program_icons => ui/programs}/smmon_5.gif (100%) rename icons/{program_icons => ui/programs}/smmon_6.gif (100%) rename icons/{ui_icons => ui}/safe/safe_dial.png (100%) rename icons/{ui_icons => ui}/screentips/cursor_hints.dmi (100%) rename icons/{ui_icons => ui}/tgui/grid_background.png (100%) rename icons/{ui_icons => ui}/tgui/ntosradar_background.png (100%) rename icons/{ui_icons => ui}/tgui/ntosradar_pointer.png (100%) rename icons/{ui_icons => ui}/tgui/ntosradar_pointer_S.png (100%) rename icons/{ui_icons => ui}/virtualpet/pet_state.dmi (100%) diff --git a/_maps/RandomRuins/LavaRuins/lavaland_biodome_beach.dmm b/_maps/RandomRuins/LavaRuins/lavaland_biodome_beach.dmm index 7de6e7d990082..6ceb38619a4c5 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_biodome_beach.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_biodome_beach.dmm @@ -278,7 +278,7 @@ dir = 4 }, /turf/open/floor/iron{ - icon = 'icons/misc/beach.dmi'; + icon = 'icons/obj/fluff/beach.dmi'; icon_state = "sand" }, /area/ruin/powered/beach) @@ -479,7 +479,7 @@ }, /obj/effect/turf_decal/sand, /turf/open/floor/iron{ - icon = 'icons/misc/beach.dmi'; + icon = 'icons/obj/fluff/beach.dmi'; icon_state = "sand" }, /area/ruin/powered/beach) diff --git a/_maps/RandomZLevels/SnowCabin.dmm b/_maps/RandomZLevels/SnowCabin.dmm index 7ed902651a526..a7096750a1975 100644 --- a/_maps/RandomZLevels/SnowCabin.dmm +++ b/_maps/RandomZLevels/SnowCabin.dmm @@ -1147,7 +1147,7 @@ /turf/open/indestructible/binary{ density = 1; desc = "No, I am not going through this."; - icon = 'icons/misc/beach.dmi'; + icon = 'icons/obj/fluff/beach.dmi'; icon_state = "water"; name = "dirty water" }, diff --git a/code/__DEFINES/achievements.dm b/code/__DEFINES/achievements.dm index e46fef9123e18..0253df0b57a4d 100644 --- a/code/__DEFINES/achievements.dm +++ b/code/__DEFINES/achievements.dm @@ -1,7 +1,7 @@ // Keep the identifiers here below 32 characters, you can put the full display name in the actual achievement datum /// Achievements icon set -#define ACHIEVEMENTS_SET 'icons/ui_icons/achievements/achievements.dmi' +#define ACHIEVEMENTS_SET 'icons/ui/achievements/achievements.dmi' #define ACHIEVEMENT_DEFAULT "default" #define ACHIEVEMENT_SCORE "score" diff --git a/code/__DEFINES/fonts.dm b/code/__DEFINES/fonts.dm index 0f1dbd501d092..b643ec997ca10 100644 --- a/code/__DEFINES/fonts.dm +++ b/code/__DEFINES/fonts.dm @@ -13,7 +13,7 @@ #define SIGNATURE_FONT "Segoe Script" /// Emoji icon set -#define EMOJI_SET 'icons/ui_icons/emoji/emoji.dmi' +#define EMOJI_SET 'icons/ui/chat/emoji.dmi' // Font metrics bitfield /// Include leading A width and trailing C width in GetWidth() or in DrawText() diff --git a/code/_onclick/hud/picture_in_picture.dm b/code/_onclick/hud/picture_in_picture.dm index dbf4e0af5310d..f3bb3713225c9 100644 --- a/code/_onclick/hud/picture_in_picture.dm +++ b/code/_onclick/hud/picture_in_picture.dm @@ -41,7 +41,7 @@ /atom/movable/screen/movable/pic_in_pic/proc/make_backgrounds() standard_background = new /mutable_appearance() - standard_background.icon = 'icons/misc/pic_in_pic.dmi' + standard_background.icon = 'icons/hud/pic_in_pic.dmi' standard_background.icon_state = "background" standard_background.layer = SPACE_LAYER @@ -51,7 +51,7 @@ move_tab = new /mutable_appearance() //all these properties are always the same, and since adding something to the overlay //list makes a copy, there is no reason to make a new one each call - move_tab.icon = 'icons/misc/pic_in_pic.dmi' + move_tab.icon = 'icons/hud/pic_in_pic.dmi' move_tab.icon_state = "move" move_tab.plane = HUD_PLANE var/matrix/M = matrix() @@ -63,7 +63,7 @@ button_x = new /atom/movable/screen/component_button(null, src) var/mutable_appearance/MA = new /mutable_appearance() MA.name = "close" - MA.icon = 'icons/misc/pic_in_pic.dmi' + MA.icon = 'icons/hud/pic_in_pic.dmi' MA.icon_state = "x" MA.plane = HUD_PLANE button_x.appearance = MA @@ -76,7 +76,7 @@ button_expand = new /atom/movable/screen/component_button(null, src) var/mutable_appearance/MA = new /mutable_appearance() MA.name = "expand" - MA.icon = 'icons/misc/pic_in_pic.dmi' + MA.icon = 'icons/hud/pic_in_pic.dmi' MA.icon_state = "expand" MA.plane = HUD_PLANE button_expand.appearance = MA @@ -89,7 +89,7 @@ button_shrink = new /atom/movable/screen/component_button(null, src) var/mutable_appearance/MA = new /mutable_appearance() MA.name = "shrink" - MA.icon = 'icons/misc/pic_in_pic.dmi' + MA.icon = 'icons/hud/pic_in_pic.dmi' MA.icon_state = "shrink" MA.plane = HUD_PLANE button_shrink.appearance = MA diff --git a/code/datums/chatmessage.dm b/code/datums/chatmessage.dm index 4884ed8f4332a..d300fcc371349 100644 --- a/code/datums/chatmessage.dm +++ b/code/datums/chatmessage.dm @@ -144,10 +144,10 @@ // Append radio icon if from a virtual speaker if (extra_classes.Find("virtual-speaker")) - var/image/r_icon = image('icons/ui_icons/chat/chat_icons.dmi', icon_state = "radio") + var/image/r_icon = image('icons/ui/chat/chat_icons.dmi', icon_state = "radio") LAZYADD(prefixes, "\icon[r_icon]") else if (extra_classes.Find("emote")) - var/image/r_icon = image('icons/ui_icons/chat/chat_icons.dmi', icon_state = "emote") + var/image/r_icon = image('icons/ui/chat/chat_icons.dmi', icon_state = "emote") LAZYADD(prefixes, "\icon[r_icon]") chat_color_name_to_use = target.get_visible_name(add_id_name = FALSE) // use face name for nonverbal messages diff --git a/code/datums/components/clickbox.dm b/code/datums/components/clickbox.dm index 5d840b16a8ed2..b38a5f1c09b45 100644 --- a/code/datums/components/clickbox.dm +++ b/code/datums/components/clickbox.dm @@ -74,7 +74,7 @@ else if(abs_height && abs_height < min_scale) clickbox_height = min_scale/height - clickbox_underlay = mutable_appearance('icons/misc/clickbox.dmi', clickbox_icon_state, CLICKBOX_LAYER, alpha = 1, appearance_flags = RESET_COLOR|RESET_ALPHA) + clickbox_underlay = mutable_appearance('icons/ui/clickbox.dmi', clickbox_icon_state, CLICKBOX_LAYER, alpha = 1, appearance_flags = RESET_COLOR|RESET_ALPHA) clickbox_underlay.transform = clickbox_underlay.transform.Scale(clickbox_width, clickbox_height) //Keeps the underlay more or less centered. clickbox_underlay.pixel_x = x_offset * 1/clickbox_width diff --git a/code/datums/components/creamed.dm b/code/datums/components/creamed.dm index be536bb792d97..d1ff1b792e17a 100644 --- a/code/datums/components/creamed.dm +++ b/code/datums/components/creamed.dm @@ -50,9 +50,9 @@ GLOBAL_LIST_INIT(creamable, typecacheof(list( carbon_parent.add_mood_event("creampie", /datum/mood_event/creampie) carbon_parent.update_body_parts() else if(iscorgi(parent)) - normal_overlay = mutable_appearance('icons/effects/creampie.dmi', "creampie_corgi") + normal_overlay = mutable_appearance('icons/mob/effects/creampie.dmi', "creampie_corgi") else if(isAI(parent)) - normal_overlay = mutable_appearance('icons/effects/creampie.dmi', "creampie_ai") + normal_overlay = mutable_appearance('icons/mob/effects/creampie.dmi', "creampie_ai") RegisterSignals(parent, list( COMSIG_COMPONENT_CLEAN_ACT, diff --git a/code/datums/elements/cult_halo.dm b/code/datums/elements/cult_halo.dm index d6da6d8145ad9..684144ca0ab03 100644 --- a/code/datums/elements/cult_halo.dm +++ b/code/datums/elements/cult_halo.dm @@ -27,7 +27,7 @@ return ADD_TRAIT(target, TRAIT_CULT_HALO, CULT_TRAIT) - var/mutable_appearance/new_halo_overlay = mutable_appearance('icons/effects/cult/halo.dmi', "halo[rand(1, 6)]", -HALO_LAYER) + var/mutable_appearance/new_halo_overlay = mutable_appearance('icons/mob/effects/halo.dmi', "halo[rand(1, 6)]", -HALO_LAYER) if (ishuman(target)) var/mob/living/carbon/human/human_parent = target new /obj/effect/temp_visual/cult/sparks(get_turf(human_parent), human_parent.dir) diff --git a/code/datums/greyscale/README.md b/code/datums/greyscale/README.md index 65f5c488790bf..9ff6bbca1d189 100644 --- a/code/datums/greyscale/README.md +++ b/code/datums/greyscale/README.md @@ -63,7 +63,7 @@ In this example, we start off by creating a sprite specified by a different conf The first of the two in the inner group is an "icon_state", this means that the icon will be retrieved from the associated dmi file using the "icon_state" key. -Note that you don't need to give colors to every layer if the layer does not need any colors applied to it, such as if it's a pre-colored component. +Note that you don't need to give colors to every layer if the layer does not need any colors applied to it, such as if it's a pre-colored component. In this example, the last layer is one such example, referencing a separately colored config. "blend_mode" and "color_ids" are special, all layer types have them. The blend mode is what controls how that layer's finished product gets merged together with the rest of the sprite. The color ids control what colors are passed in to the layer. @@ -128,7 +128,7 @@ While creating a greyscale config, be sure to take subtypes into account! Rather ```c /datum/greyscale_config/tablet name = "PDA" - icon_file = 'icons/obj/modular_pda.dmi' + icon_file = 'icons/obj/devices/modular_pda.dmi' json_config = 'code/datums/greyscale/json_configs/pda.json' /datum/greyscale_config/tablet/chaplain diff --git a/code/datums/greyscale/config_types/greyscale_configs/greyscale_items.dm b/code/datums/greyscale/config_types/greyscale_configs/greyscale_items.dm index 6b9465bf46af0..69e78ec74b31e 100644 --- a/code/datums/greyscale/config_types/greyscale_configs/greyscale_items.dm +++ b/code/datums/greyscale/config_types/greyscale_configs/greyscale_items.dm @@ -122,7 +122,7 @@ /datum/greyscale_config/tablet name = "PDA" - icon_file = 'icons/obj/modular_pda.dmi' + icon_file = 'icons/obj/devices/modular_pda.dmi' json_config = 'code/datums/greyscale/json_configs/pda.json' /datum/greyscale_config/tablet/chaplain diff --git a/code/datums/screentips/screentips.dm b/code/datums/screentips/screentips.dm index d72e41960e505..20a7f33497400 100644 --- a/code/datums/screentips/screentips.dm +++ b/code/datums/screentips/screentips.dm @@ -1,4 +1,4 @@ -#define HINT_ICON_FILE 'icons/ui_icons/screentips/cursor_hints.dmi' +#define HINT_ICON_FILE 'icons/ui/screentips/cursor_hints.dmi' /// Stores the cursor hint icons for screentip context. GLOBAL_LIST_INIT_TYPED(screentip_context_icons, /image, prepare_screentip_context_icons()) diff --git a/code/game/machinery/mining_weather_monitor.dm b/code/game/machinery/mining_weather_monitor.dm index 65cc4b9347c1a..32c41871b60df 100644 --- a/code/game/machinery/mining_weather_monitor.dm +++ b/code/game/machinery/mining_weather_monitor.dm @@ -2,7 +2,7 @@ /obj/machinery/mining_weather_monitor name = "barometric monitor" desc = "A machine monitoring atmospheric data from mining environments. Provides warnings about incoming weather fronts." - icon = 'icons/obj/miningradio.dmi' + icon = 'icons/obj/devices/miningradio.dmi' icon_state = "wallmount" light_power = 1 light_range = 1.6 diff --git a/code/game/objects/effects/decals/turfdecal/weather.dm b/code/game/objects/effects/decals/turfdecal/weather.dm index 37b4f335e4574..af05e99719727 100644 --- a/code/game/objects/effects/decals/turfdecal/weather.dm +++ b/code/game/objects/effects/decals/turfdecal/weather.dm @@ -19,7 +19,7 @@ /obj/effect/turf_decal/weather/sand name = "sand siding" - icon = 'icons/misc/beach.dmi' + icon = 'icons/obj/fluff/beach.dmi' icon_state = "sand_side" /obj/effect/turf_decal/weather/sand/light diff --git a/code/game/objects/effects/forcefields.dm b/code/game/objects/effects/forcefields.dm index cf1257308d944..4445815a422be 100644 --- a/code/game/objects/effects/forcefields.dm +++ b/code/game/objects/effects/forcefields.dm @@ -44,7 +44,7 @@ /obj/effect/forcefield/cult name = "glowing wall" desc = "An unholy shield that blocks all attacks." - icon = 'icons/effects/cult/effects.dmi' + icon = 'icons/effects/cult.dmi' icon_state = "cultshield" can_atmos_pass = ATMOS_PASS_NO initial_duration = 20 SECONDS diff --git a/code/game/objects/effects/temporary_visuals/cult.dm b/code/game/objects/effects/temporary_visuals/cult.dm index f000aa4c0395f..a53d4df9b925a 100644 --- a/code/game/objects/effects/temporary_visuals/cult.dm +++ b/code/game/objects/effects/temporary_visuals/cult.dm @@ -1,6 +1,6 @@ //temporary visual effects(/obj/effect/temp_visual) used by cult stuff /obj/effect/temp_visual/cult - icon = 'icons/effects/cult/effects.dmi' + icon = 'icons/effects/cult.dmi' randomdir = FALSE duration = 10 @@ -18,13 +18,13 @@ icon_state = "bloodout" /obj/effect/temp_visual/dir_setting/cult/phase // The veil shifter teleport - icon = 'icons/effects/cult/effects.dmi' + icon = 'icons/effects/cult.dmi' name = "phase glow" duration = 7 icon_state = "cultin" /obj/effect/temp_visual/dir_setting/cult/phase/out - icon = 'icons/effects/cult/effects.dmi' + icon = 'icons/effects/cult.dmi' icon_state = "cultout" /obj/effect/temp_visual/cult/sac diff --git a/code/game/objects/effects/temporary_visuals/miscellaneous.dm b/code/game/objects/effects/temporary_visuals/miscellaneous.dm index 4c8ce41debfee..d132dd53da8c4 100644 --- a/code/game/objects/effects/temporary_visuals/miscellaneous.dm +++ b/code/game/objects/effects/temporary_visuals/miscellaneous.dm @@ -492,7 +492,7 @@ duration = 2 SECONDS /obj/effect/constructing_effect - icon = 'icons/effects/effects_rcd.dmi' + icon = 'icons/effects/rcd.dmi' icon_state = "" layer = ABOVE_ALL_MOB_LAYER plane = ABOVE_GAME_PLANE diff --git a/code/game/objects/effects/wanted_poster.dm b/code/game/objects/effects/wanted_poster.dm index 001f0119b9d62..ab3661139fbd8 100644 --- a/code/game/objects/effects/wanted_poster.dm +++ b/code/game/objects/effects/wanted_poster.dm @@ -86,7 +86,7 @@ var/i for(i=1; i <= textLen, i++) var/letter = uppertext(text[i]) - var/icon/letter_icon = icon("icon" = 'icons/misc/Font_Minimal.dmi', "icon_state" = letter) + var/icon/letter_icon = icon("icon" = 'icons/testing/Font_Minimal.dmi', "icon_state" = letter) letter_icon.Shift(EAST, startX) //16 - (2*n) letter_icon.Shift(SOUTH, 2) letter_icon.SwapColor(rgb(255,255,255), color) diff --git a/code/game/objects/items/handcuffs.dm b/code/game/objects/items/handcuffs.dm index 192842e6447b9..4ab568fdd4f96 100644 --- a/code/game/objects/items/handcuffs.dm +++ b/code/game/objects/items/handcuffs.dm @@ -11,7 +11,7 @@ /obj/item/restraints breakouttime = 1 MINUTES dye_color = DYE_PRISONER - icon = 'icons/obj/restraints.dmi' + icon = 'icons/obj/weapons/restraints.dmi' /obj/item/restraints/suicide_act(mob/living/carbon/user) user.visible_message(span_suicide("[user] is strangling [user.p_them()]self with [src]! It looks like [user.p_theyre()] trying to commit suicide!")) diff --git a/code/game/objects/items/surgery_tray.dm b/code/game/objects/items/surgery_tray.dm index 028366481d45a..e156bf8a0a862 100644 --- a/code/game/objects/items/surgery_tray.dm +++ b/code/game/objects/items/surgery_tray.dm @@ -6,7 +6,7 @@ /obj/item/surgery_tray name = "surgery tray" desc = "A Deforest brand medical cart. It is a folding model, meaning the wheels on the bottom can be retracted and the body used as a tray." - icon = 'icons/obj/medicart.dmi' + icon = 'icons/obj/medical/medicart.dmi' icon_state = "tray" w_class = WEIGHT_CLASS_BULKY slowdown = 1 diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm index 7f0e28c95e670..faf8862e1169d 100644 --- a/code/game/objects/items/toys.dm +++ b/code/game/objects/items/toys.dm @@ -1071,7 +1071,7 @@ */ /obj/item/toy/beach_ball name = "beach ball" - icon = 'icons/misc/beach.dmi' + icon = 'icons/obj/fluff/beach.dmi' icon_state = "ball" inhand_icon_state = "beachball" w_class = WEIGHT_CLASS_BULKY //Stops people from hiding it in their bags/pockets @@ -1426,7 +1426,7 @@ /obj/item/toy/seashell name = "seashell" desc = "May you always have a shell in your pocket and sand in your shoes. Whatever that's supposed to mean." - icon = 'icons/misc/beach.dmi' + icon = 'icons/obj/fluff/beach.dmi' icon_state = "shell1" var/static/list/possible_colors = list("" = 2, COLOR_PURPLE_GRAY = 1, COLOR_OLIVE = 1, COLOR_PALE_BLUE_GRAY = 1, COLOR_RED_GRAY = 1) diff --git a/code/game/objects/items/virgin_mary.dm b/code/game/objects/items/virgin_mary.dm index b0446abadbdfd..46264dc281458 100644 --- a/code/game/objects/items/virgin_mary.dm +++ b/code/game/objects/items/virgin_mary.dm @@ -1,7 +1,7 @@ /obj/item/virgin_mary name = "\proper a picture of the virgin mary" desc = "A small, cheap icon depicting the virgin mother." - icon = 'icons/obj/blackmarket.dmi' + icon = 'icons/obj/devices/blackmarket.dmi' icon_state = "madonna" resistance_flags = FLAMMABLE ///Has this item been used already. diff --git a/code/game/objects/items/weaponry.dm b/code/game/objects/items/weaponry.dm index f7717da19e795..54f77ff1b70fa 100644 --- a/code/game/objects/items/weaponry.dm +++ b/code/game/objects/items/weaponry.dm @@ -636,7 +636,7 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301 /obj/item/melee/skateboard name = "skateboard" desc = "A skateboard. It can be placed on its wheels and ridden, or used as a radical weapon." - icon = 'icons/obj/vehicles.dmi' + icon = 'icons/mob/rideables/vehicles.dmi' icon_state = "skateboard_held" inhand_icon_state = "skateboard" force = 12 diff --git a/code/game/objects/structures/flora.dm b/code/game/objects/structures/flora.dm index 2cfd490203c06..49a230d6bdc48 100644 --- a/code/game/objects/structures/flora.dm +++ b/code/game/objects/structures/flora.dm @@ -499,13 +499,13 @@ /obj/structure/flora/coconuts gender = PLURAL name = "coconuts" - icon = 'icons/misc/beach.dmi' + icon = 'icons/obj/fluff/beach.dmi' icon_state = "coconuts" /obj/structure/flora/tree/palm name = "palm tree" desc = "A tree straight from the tropics." - icon = 'icons/misc/beach2.dmi' + icon = 'icons/obj/fluff/beach2.dmi' icon_state = "palm1" pixel_x = 0 diff --git a/code/game/objects/structures/showcase.dm b/code/game/objects/structures/showcase.dm index baeb8209447fb..2158a88a6b656 100644 --- a/code/game/objects/structures/showcase.dm +++ b/code/game/objects/structures/showcase.dm @@ -64,13 +64,13 @@ /obj/structure/showcase/mecha/marauder name = "combat mech exhibit" desc = "A stand with an empty old Nanotrasen Corporation combat mech bolted to it. It is described as the premier unit used to defend corporate interests and employees." - icon = 'icons/mob/mecha.dmi' + icon = 'icons/mob/rideables/mecha.dmi' icon_state = "marauder" /obj/structure/showcase/mecha/ripley name = "construction mech exhibit" desc = "A stand with a retired construction mech bolted to it. The clamps are rated at 9300PSI. It seems to be falling apart." - icon = 'icons/mob/mecha.dmi' + icon = 'icons/mob/rideables/mecha.dmi' icon_state = "firefighter" /obj/structure/showcase/machinery/implanter diff --git a/code/game/objects/structures/traps.dm b/code/game/objects/structures/traps.dm index d4bab223d4570..0cf5ddf7c9130 100644 --- a/code/game/objects/structures/traps.dm +++ b/code/game/objects/structures/traps.dm @@ -102,7 +102,7 @@ /obj/structure/trap/stun/hunter name = "bounty trap" desc = "A trap that only goes off when a fugitive steps on it, announcing the location and stunning the target. You'd better avoid it." - icon = 'icons/obj/restraints.dmi' + icon = 'icons/obj/weapons/restraints.dmi' icon_state = "bounty_trap_on" stun_time = 20 SECONDS sparks = FALSE //the item version gives them off to prevent runtimes (see Destroy()) @@ -143,7 +143,7 @@ /obj/item/bountytrap name = "bounty trap" desc = "A trap that only goes off when a fugitive steps on it, announcing the location and stunning the target. It's currently inactive." - icon = 'icons/obj/restraints.dmi' + icon = 'icons/obj/weapons/restraints.dmi' icon_state = "bounty_trap_off" var/obj/structure/trap/stun/hunter/stored_trap var/obj/item/radio/radio diff --git a/code/modules/admin/view_variables/color_matrix_editor.dm b/code/modules/admin/view_variables/color_matrix_editor.dm index ea1278901f3fe..6c61382ceec78 100644 --- a/code/modules/admin/view_variables/color_matrix_editor.dm +++ b/code/modules/admin/view_variables/color_matrix_editor.dm @@ -14,7 +14,7 @@ else current_color = COLOR_MATRIX_IDENTITY - var/mutable_appearance/view = image('icons/misc/colortest.dmi', "colors") + var/mutable_appearance/view = image('icons/testing/colortest.dmi', "colors") if(_target) target = WEAKREF(_target) if(!(_target.appearance_flags & PLANE_MASTER)) diff --git a/code/modules/antagonists/cult/blood_magic.dm b/code/modules/antagonists/cult/blood_magic.dm index 5a25d68c507a0..e94e68cab0aed 100644 --- a/code/modules/antagonists/cult/blood_magic.dm +++ b/code/modules/antagonists/cult/blood_magic.dm @@ -255,7 +255,7 @@ clicked_on.set_hallucinations_if_lower(240 SECONDS) SEND_SOUND(caller, sound('sound/effects/ghost.ogg', FALSE, TRUE, 50)) - var/image/sparkle_image = image('icons/effects/cult/effects.dmi', clicked_on, "bloodsparkles", ABOVE_MOB_LAYER) + var/image/sparkle_image = image('icons/effects/cult.dmi', clicked_on, "bloodsparkles", ABOVE_MOB_LAYER) clicked_on.add_alt_appearance(/datum/atom_hud/alternate_appearance/basic/cult, "cult_apoc", sparkle_image, NONE) addtimer(CALLBACK(clicked_on, TYPE_PROC_REF(/atom/, remove_alt_appearance), "cult_apoc", TRUE), 4 MINUTES, TIMER_OVERRIDE|TIMER_UNIQUE) diff --git a/code/modules/antagonists/cult/cult_items.dm b/code/modules/antagonists/cult/cult_items.dm index a9537d26d3802..cd77799419c6d 100644 --- a/code/modules/antagonists/cult/cult_items.dm +++ b/code/modules/antagonists/cult/cult_items.dm @@ -382,7 +382,7 @@ Striking a noncultist, however, will tear their flesh."} AddComponent( \ /datum/component/shielded, \ recharge_start_delay = 0 SECONDS, \ - shield_icon_file = 'icons/effects/cult/effects.dmi', \ + shield_icon_file = 'icons/effects/cult.dmi', \ shield_icon = "shield-cult", \ run_hit_callback = CALLBACK(src, PROC_REF(shield_damaged)), \ ) diff --git a/code/modules/antagonists/cult/runes.dm b/code/modules/antagonists/cult/runes.dm index b75d74ee16002..185770a474b73 100644 --- a/code/modules/antagonists/cult/runes.dm +++ b/code/modules/antagonists/cult/runes.dm @@ -1141,7 +1141,7 @@ GLOBAL_VAR_INIT(narsie_summon_count, 0) images += B if(!IS_CULTIST(M)) if(M.client) - var/image/C = image('icons/effects/cult/effects.dmi',M,"bloodsparkles", ABOVE_MOB_LAYER) + var/image/C = image('icons/effects/cult.dmi',M,"bloodsparkles", ABOVE_MOB_LAYER) add_alt_appearance(/datum/atom_hud/alternate_appearance/basic/cult, "cult_apoc", C, NONE) addtimer(CALLBACK(M, TYPE_PROC_REF(/atom/, remove_alt_appearance),"cult_apoc",TRUE), duration) images += C diff --git a/code/modules/antagonists/nukeop/datums/operative_team.dm b/code/modules/antagonists/nukeop/datums/operative_team.dm index 3345f3cf4d25f..1e06f32594d84 100644 --- a/code/modules/antagonists/nukeop/datums/operative_team.dm +++ b/code/modules/antagonists/nukeop/datums/operative_team.dm @@ -69,7 +69,7 @@ text += "
" text += "(Syndicates used [TC_uses] TC) [purchases]" if(TC_uses == 0 && GLOB.station_was_nuked && !are_all_operatives_dead()) - text += "[icon2html('icons/ui_icons/antags/badass.dmi', world, "badass")]" + text += "[icon2html('icons/ui/antags/badass.dmi', world, "badass")]" parts += text diff --git a/code/modules/antagonists/obsessed/obsessed.dm b/code/modules/antagonists/obsessed/obsessed.dm index a866ef4c2fc6e..3d0a0063bf709 100644 --- a/code/modules/antagonists/obsessed/obsessed.dm +++ b/code/modules/antagonists/obsessed/obsessed.dm @@ -47,7 +47,7 @@ var/icon/final_icon = finish_preview_icon(obsessed_icon) final_icon.Blend( - icon('icons/ui_icons/antags/obsessed.dmi', "obsession"), + icon('icons/ui/antags/obsessed.dmi', "obsession"), ICON_OVERLAY, ANTAGONIST_PREVIEW_ICON_SIZE - 30, 20, diff --git a/code/modules/antagonists/traitor/datum_traitor.dm b/code/modules/antagonists/traitor/datum_traitor.dm index 5ad5aeecf26c7..d784175d62b6e 100644 --- a/code/modules/antagonists/traitor/datum_traitor.dm +++ b/code/modules/antagonists/traitor/datum_traitor.dm @@ -349,7 +349,7 @@ if(uplink_owned) var/uplink_text = "(used [used_telecrystals] TC) [purchases]" if((used_telecrystals == 0) && traitor_won) - var/static/icon/badass = icon('icons/ui_icons/antags/badass.dmi', "badass") + var/static/icon/badass = icon('icons/ui/antags/badass.dmi', "badass") uplink_text += "[icon2html(badass, world)]" result += uplink_text diff --git a/code/modules/asset_cache/assets/adventure.dm b/code/modules/asset_cache/assets/adventure.dm index 65f6c3fe9cc10..e1a7bae235818 100644 --- a/code/modules/asset_cache/assets/adventure.dm +++ b/code/modules/asset_cache/assets/adventure.dm @@ -1,7 +1,7 @@ /datum/asset/simple/adventure assets = list( - "default" = 'icons/ui_icons/adventure/default.png', - "grue" = 'icons/ui_icons/adventure/grue.png', - "signal_lost" ='icons/ui_icons/adventure/signal_lost.png', - "trade" = 'icons/ui_icons/adventure/trade.png', + "default" = 'icons/ui/adventure/default.png', + "grue" = 'icons/ui/adventure/grue.png', + "signal_lost" ='icons/ui/adventure/signal_lost.png', + "trade" = 'icons/ui/adventure/trade.png', ) diff --git a/code/modules/asset_cache/assets/arcade.dm b/code/modules/asset_cache/assets/arcade.dm index 338b891190cd4..3a68644d1526b 100644 --- a/code/modules/asset_cache/assets/arcade.dm +++ b/code/modules/asset_cache/assets/arcade.dm @@ -1,11 +1,11 @@ /datum/asset/simple/arcade assets = list( - "shopkeeper.png" = 'icons/ui_icons/arcade/shopkeeper.png', - "fireplace.png" = 'icons/ui_icons/arcade/fireplace.png', - "boss1.gif" = 'icons/ui_icons/arcade/boss1.gif', - "boss2.gif" = 'icons/ui_icons/arcade/boss2.gif', - "boss3.gif" = 'icons/ui_icons/arcade/boss3.gif', - "boss4.gif" = 'icons/ui_icons/arcade/boss4.gif', - "boss5.gif" = 'icons/ui_icons/arcade/boss5.gif', - "boss6.gif" = 'icons/ui_icons/arcade/boss6.gif', + "shopkeeper.png" = 'icons/ui/arcade/shopkeeper.png', + "fireplace.png" = 'icons/ui/arcade/fireplace.png', + "boss1.gif" = 'icons/ui/arcade/boss1.gif', + "boss2.gif" = 'icons/ui/arcade/boss2.gif', + "boss3.gif" = 'icons/ui/arcade/boss3.gif', + "boss4.gif" = 'icons/ui/arcade/boss4.gif', + "boss5.gif" = 'icons/ui/arcade/boss5.gif', + "boss6.gif" = 'icons/ui/arcade/boss6.gif', ) diff --git a/code/modules/asset_cache/assets/chat.dm b/code/modules/asset_cache/assets/chat.dm index 3765f113dda10..1da0869a85a96 100644 --- a/code/modules/asset_cache/assets/chat.dm +++ b/code/modules/asset_cache/assets/chat.dm @@ -4,11 +4,11 @@ /datum/asset/spritesheet/chat/create_spritesheets() InsertAll("emoji", EMOJI_SET) // pre-loading all lanugage icons also helps to avoid meta - InsertAll("language", 'icons/misc/language.dmi') + InsertAll("language", 'icons/ui/chat/language.dmi') // catch languages which are pulling icons from another file for(var/path in typesof(/datum/language)) var/datum/language/L = path var/icon = initial(L.icon) - if (icon != 'icons/misc/language.dmi') + if (icon != 'icons/ui/chat/language.dmi') var/icon_state = initial(L.icon_state) Insert("language-[icon_state]", icon, icon_state=icon_state) diff --git a/code/modules/asset_cache/assets/circuits.dm b/code/modules/asset_cache/assets/circuits.dm index df9aa1fa6d890..ea97a907d9301 100644 --- a/code/modules/asset_cache/assets/circuits.dm +++ b/code/modules/asset_cache/assets/circuits.dm @@ -1,4 +1,4 @@ /datum/asset/simple/circuit_assets assets = list( - "grid_background.png" = 'icons/ui_icons/tgui/grid_background.png' + "grid_background.png" = 'icons/ui/tgui/grid_background.png' ) diff --git a/code/modules/asset_cache/assets/common.dm b/code/modules/asset_cache/assets/common.dm index 1b0fb301a1921..931b4999b430d 100644 --- a/code/modules/asset_cache/assets/common.dm +++ b/code/modules/asset_cache/assets/common.dm @@ -1,3 +1,3 @@ /datum/asset/simple/namespaced/common - assets = list("padlock.png" = 'icons/ui_icons/common/padlock.png') + assets = list("padlock.png" = 'icons/ui/common/padlock.png') parents = list("common.css" = 'html/browser/common.css') diff --git a/code/modules/asset_cache/assets/condiments.dm b/code/modules/asset_cache/assets/condiments.dm index d5a7490904d33..8b47148732489 100644 --- a/code/modules/asset_cache/assets/condiments.dm +++ b/code/modules/asset_cache/assets/condiments.dm @@ -1,24 +1,24 @@ /datum/asset/spritesheet/simple/condiments name = "condiments" assets = list( - CONDIMASTER_STYLE_FALLBACK = 'icons/ui_icons/condiments/bottle.png', - "flour" = 'icons/ui_icons/condiments/flour.png', - "rice" = 'icons/ui_icons/condiments/rice.png', - "sugar" = 'icons/ui_icons/condiments/sugar.png', - "milk" = 'icons/ui_icons/condiments/milk.png', - "enzyme" = 'icons/ui_icons/condiments/enzyme.png', - "capsaicin" = 'icons/ui_icons/condiments/hotsauce.png', - "frostoil" = 'icons/ui_icons/condiments/coldsauce.png', - "bbqsauce" = 'icons/ui_icons/condiments/bbqsauce.png', - "soymilk" = 'icons/ui_icons/condiments/soymilk.png', - "soysauce" = 'icons/ui_icons/condiments/soysauce.png', - "ketchup" = 'icons/ui_icons/condiments/ketchup.png', - "mayonnaise" = 'icons/ui_icons/condiments/mayonnaise.png', - "oliveoil" = 'icons/ui_icons/condiments/oliveoil.png', - "cooking_oil" = 'icons/ui_icons/condiments/cookingoil.png', - "peanut_butter" = 'icons/ui_icons/condiments/peanutbutter.png', - "cherryjelly" = 'icons/ui_icons/condiments/cherryjelly.png', - "honey" = 'icons/ui_icons/condiments/honey.png', - "blackpepper" = 'icons/ui_icons/condiments/peppermillsmall.png', - "sodiumchloride" = 'icons/ui_icons/condiments/saltshakersmall.png', + CONDIMASTER_STYLE_FALLBACK = 'icons/ui/condiments/bottle.png', + "flour" = 'icons/ui/condiments/flour.png', + "rice" = 'icons/ui/condiments/rice.png', + "sugar" = 'icons/ui/condiments/sugar.png', + "milk" = 'icons/ui/condiments/milk.png', + "enzyme" = 'icons/ui/condiments/enzyme.png', + "capsaicin" = 'icons/ui/condiments/hotsauce.png', + "frostoil" = 'icons/ui/condiments/coldsauce.png', + "bbqsauce" = 'icons/ui/condiments/bbqsauce.png', + "soymilk" = 'icons/ui/condiments/soymilk.png', + "soysauce" = 'icons/ui/condiments/soysauce.png', + "ketchup" = 'icons/ui/condiments/ketchup.png', + "mayonnaise" = 'icons/ui/condiments/mayonnaise.png', + "oliveoil" = 'icons/ui/condiments/oliveoil.png', + "cooking_oil" = 'icons/ui/condiments/cookingoil.png', + "peanut_butter" = 'icons/ui/condiments/peanutbutter.png', + "cherryjelly" = 'icons/ui/condiments/cherryjelly.png', + "honey" = 'icons/ui/condiments/honey.png', + "blackpepper" = 'icons/ui/condiments/peppermillsmall.png', + "sodiumchloride" = 'icons/ui/condiments/saltshakersmall.png', ) diff --git a/code/modules/asset_cache/assets/contracts.dm b/code/modules/asset_cache/assets/contracts.dm index 6ac1a9cb678e2..72bd81572b5fd 100644 --- a/code/modules/asset_cache/assets/contracts.dm +++ b/code/modules/asset_cache/assets/contracts.dm @@ -1,7 +1,7 @@ /datum/asset/simple/contracts assets = list( - "bluespace.png" = 'icons/ui_icons/contracts/bluespace.png', - "destruction.png" = 'icons/ui_icons/contracts/destruction.png', - "healing.png" = 'icons/ui_icons/contracts/healing.png', - "robeless.png" = 'icons/ui_icons/contracts/robeless.png', + "bluespace.png" = 'icons/ui/contracts/bluespace.png', + "destruction.png" = 'icons/ui/contracts/destruction.png', + "healing.png" = 'icons/ui/contracts/healing.png', + "robeless.png" = 'icons/ui/contracts/robeless.png', ) diff --git a/code/modules/asset_cache/assets/genetics.dm b/code/modules/asset_cache/assets/genetics.dm index d74f10f631bb4..51ac0b47b40f3 100644 --- a/code/modules/asset_cache/assets/genetics.dm +++ b/code/modules/asset_cache/assets/genetics.dm @@ -1,6 +1,6 @@ /datum/asset/simple/genetics assets = list( - "dna_discovered.gif" = 'icons/ui_icons/dna/dna_discovered.gif', - "dna_undiscovered.gif" = 'icons/ui_icons/dna/dna_undiscovered.gif', - "dna_extra.gif" = 'icons/ui_icons/dna/dna_extra.gif' + "dna_discovered.gif" = 'icons/ui/dna/dna_discovered.gif', + "dna_undiscovered.gif" = 'icons/ui/dna/dna_undiscovered.gif', + "dna_extra.gif" = 'icons/ui/dna/dna_extra.gif' ) diff --git a/code/modules/asset_cache/assets/headers.dm b/code/modules/asset_cache/assets/headers.dm index 62c7fc532e613..1c070bd0322dc 100644 --- a/code/modules/asset_cache/assets/headers.dm +++ b/code/modules/asset_cache/assets/headers.dm @@ -1,31 +1,31 @@ /datum/asset/simple/headers assets = list( - "alarm_green.gif" = 'icons/program_icons/alarm_green.gif', - "alarm_red.gif" = 'icons/program_icons/alarm_red.gif', - "batt_5.gif" = 'icons/program_icons/batt_5.gif', - "batt_20.gif" = 'icons/program_icons/batt_20.gif', - "batt_40.gif" = 'icons/program_icons/batt_40.gif', - "batt_60.gif" = 'icons/program_icons/batt_60.gif', - "batt_80.gif" = 'icons/program_icons/batt_80.gif', - "batt_100.gif" = 'icons/program_icons/batt_100.gif', - "downloader_finished.gif" = 'icons/program_icons/downloader_finished.gif', - "downloader_running.gif" = 'icons/program_icons/downloader_running.gif', - "ntnrc_idle.gif" = 'icons/program_icons/ntnrc_idle.gif', - "ntnrc_new.gif" = 'icons/program_icons/ntnrc_new.gif', - "power_norm.gif" = 'icons/program_icons/power_norm.gif', - "power_warn.gif" = 'icons/program_icons/power_warn.gif', - "sig_high.gif" = 'icons/program_icons/sig_high.gif', - "sig_low.gif" = 'icons/program_icons/sig_low.gif', - "sig_lan.gif" = 'icons/program_icons/sig_lan.gif', - "sig_none.gif" = 'icons/program_icons/sig_none.gif', - "smmon_0.gif" = 'icons/program_icons/smmon_0.gif', - "smmon_1.gif" = 'icons/program_icons/smmon_1.gif', - "smmon_2.gif" = 'icons/program_icons/smmon_2.gif', - "smmon_3.gif" = 'icons/program_icons/smmon_3.gif', - "smmon_4.gif" = 'icons/program_icons/smmon_4.gif', - "smmon_5.gif" = 'icons/program_icons/smmon_5.gif', - "smmon_6.gif" = 'icons/program_icons/smmon_6.gif', - "borg_mon.gif" = 'icons/program_icons/borg_mon.gif', - "robotact.gif" = 'icons/program_icons/robotact.gif', - "mafia.gif" = 'icons/program_icons/mafia.gif', + "alarm_green.gif" = 'icons/ui/programs/alarm_green.gif', + "alarm_red.gif" = 'icons/ui/programs/alarm_red.gif', + "batt_5.gif" = 'icons/ui/programs/batt_5.gif', + "batt_20.gif" = 'icons/ui/programs/batt_20.gif', + "batt_40.gif" = 'icons/ui/programs/batt_40.gif', + "batt_60.gif" = 'icons/ui/programs/batt_60.gif', + "batt_80.gif" = 'icons/ui/programs/batt_80.gif', + "batt_100.gif" = 'icons/ui/programs/batt_100.gif', + "downloader_finished.gif" = 'icons/ui/programs/downloader_finished.gif', + "downloader_running.gif" = 'icons/ui/programs/downloader_running.gif', + "ntnrc_idle.gif" = 'icons/ui/programs/ntnrc_idle.gif', + "ntnrc_new.gif" = 'icons/ui/programs/ntnrc_new.gif', + "power_norm.gif" = 'icons/ui/programs/power_norm.gif', + "power_warn.gif" = 'icons/ui/programs/power_warn.gif', + "sig_high.gif" = 'icons/ui/programs/sig_high.gif', + "sig_low.gif" = 'icons/ui/programs/sig_low.gif', + "sig_lan.gif" = 'icons/ui/programs/sig_lan.gif', + "sig_none.gif" = 'icons/ui/programs/sig_none.gif', + "smmon_0.gif" = 'icons/ui/programs/smmon_0.gif', + "smmon_1.gif" = 'icons/ui/programs/smmon_1.gif', + "smmon_2.gif" = 'icons/ui/programs/smmon_2.gif', + "smmon_3.gif" = 'icons/ui/programs/smmon_3.gif', + "smmon_4.gif" = 'icons/ui/programs/smmon_4.gif', + "smmon_5.gif" = 'icons/ui/programs/smmon_5.gif', + "smmon_6.gif" = 'icons/ui/programs/smmon_6.gif', + "borg_mon.gif" = 'icons/ui/programs/borg_mon.gif', + "robotact.gif" = 'icons/ui/programs/robotact.gif', + "mafia.gif" = 'icons/ui/programs/mafia.gif', ) diff --git a/code/modules/asset_cache/assets/inventory.dm b/code/modules/asset_cache/assets/inventory.dm index a63fc45620f0a..0883dbd7515e5 100644 --- a/code/modules/asset_cache/assets/inventory.dm +++ b/code/modules/asset_cache/assets/inventory.dm @@ -1,20 +1,20 @@ /datum/asset/simple/inventory assets = list( - "inventory-glasses.png" = 'icons/ui_icons/inventory/glasses.png', - "inventory-head.png" = 'icons/ui_icons/inventory/head.png', - "inventory-neck.png" = 'icons/ui_icons/inventory/neck.png', - "inventory-mask.png" = 'icons/ui_icons/inventory/mask.png', - "inventory-ears.png" = 'icons/ui_icons/inventory/ears.png', - "inventory-uniform.png" = 'icons/ui_icons/inventory/uniform.png', - "inventory-suit.png" = 'icons/ui_icons/inventory/suit.png', - "inventory-gloves.png" = 'icons/ui_icons/inventory/gloves.png', - "inventory-hand_l.png" = 'icons/ui_icons/inventory/hand_l.png', - "inventory-hand_r.png" = 'icons/ui_icons/inventory/hand_r.png', - "inventory-shoes.png" = 'icons/ui_icons/inventory/shoes.png', - "inventory-suit_storage.png" = 'icons/ui_icons/inventory/suit_storage.png', - "inventory-id.png" = 'icons/ui_icons/inventory/id.png', - "inventory-belt.png" = 'icons/ui_icons/inventory/belt.png', - "inventory-back.png" = 'icons/ui_icons/inventory/back.png', - "inventory-pocket.png" = 'icons/ui_icons/inventory/pocket.png', - "inventory-collar.png" = 'icons/ui_icons/inventory/collar.png', + "inventory-glasses.png" = 'icons/ui/inventory/glasses.png', + "inventory-head.png" = 'icons/ui/inventory/head.png', + "inventory-neck.png" = 'icons/ui/inventory/neck.png', + "inventory-mask.png" = 'icons/ui/inventory/mask.png', + "inventory-ears.png" = 'icons/ui/inventory/ears.png', + "inventory-uniform.png" = 'icons/ui/inventory/uniform.png', + "inventory-suit.png" = 'icons/ui/inventory/suit.png', + "inventory-gloves.png" = 'icons/ui/inventory/gloves.png', + "inventory-hand_l.png" = 'icons/ui/inventory/hand_l.png', + "inventory-hand_r.png" = 'icons/ui/inventory/hand_r.png', + "inventory-shoes.png" = 'icons/ui/inventory/shoes.png', + "inventory-suit_storage.png" = 'icons/ui/inventory/suit_storage.png', + "inventory-id.png" = 'icons/ui/inventory/id.png', + "inventory-belt.png" = 'icons/ui/inventory/belt.png', + "inventory-back.png" = 'icons/ui/inventory/back.png', + "inventory-pocket.png" = 'icons/ui/inventory/pocket.png', + "inventory-collar.png" = 'icons/ui/inventory/collar.png', ) diff --git a/code/modules/asset_cache/assets/mecha.dm b/code/modules/asset_cache/assets/mecha.dm index fd4b911e20ca3..3c2403cf1c375 100644 --- a/code/modules/asset_cache/assets/mecha.dm +++ b/code/modules/asset_cache/assets/mecha.dm @@ -2,5 +2,5 @@ name = "mecha_equipment" /datum/asset/spritesheet/mecha_equipment/create_spritesheets() - InsertAll("", 'icons/mob/mecha_equipment.dmi') + InsertAll("", 'icons/obj/devices/mecha_equipment.dmi') InsertAll("", 'icons/obj/ore.dmi') diff --git a/code/modules/asset_cache/assets/notes.dm b/code/modules/asset_cache/assets/notes.dm index aec6838f96792..4f5e42cb15899 100644 --- a/code/modules/asset_cache/assets/notes.dm +++ b/code/modules/asset_cache/assets/notes.dm @@ -1,7 +1,7 @@ /datum/asset/simple/notes assets = list( - "high_button.png" = 'icons/ui_icons/notes/high_button.png', - "medium_button.png" = 'icons/ui_icons/notes/medium_button.png', - "minor_button.png" = 'icons/ui_icons/notes/minor_button.png', - "none_button.png" = 'icons/ui_icons/notes/none_button.png', + "high_button.png" = 'icons/ui/notes/high_button.png', + "medium_button.png" = 'icons/ui/notes/medium_button.png', + "minor_button.png" = 'icons/ui/notes/minor_button.png', + "none_button.png" = 'icons/ui/notes/none_button.png', ) diff --git a/code/modules/asset_cache/assets/orbit.dm b/code/modules/asset_cache/assets/orbit.dm index 7d0e0d98a0e64..8ac22877ecd08 100644 --- a/code/modules/asset_cache/assets/orbit.dm +++ b/code/modules/asset_cache/assets/orbit.dm @@ -1,4 +1,4 @@ /datum/asset/simple/orbit assets = list( - "ghost.png" = 'icons/ui_icons/orbit/ghost.png' + "ghost.png" = 'icons/ui/orbit/ghost.png' ) diff --git a/code/modules/asset_cache/assets/particle_editor.dm b/code/modules/asset_cache/assets/particle_editor.dm index f5f7bb0098711..27f7825175940 100644 --- a/code/modules/asset_cache/assets/particle_editor.dm +++ b/code/modules/asset_cache/assets/particle_editor.dm @@ -1,17 +1,17 @@ /datum/asset/simple/particle_editor assets = list( - "motion" = 'icons/ui_icons/particle_editor/motion.png', + "motion" = 'icons/ui/particle_editor/motion.png', - "uniform" = 'icons/ui_icons/particle_editor/uniform_rand.png', - "normal" ='icons/ui_icons/particle_editor/normal_rand.png', - "linear" = 'icons/ui_icons/particle_editor/linear_rand.png', - "square_rand" = 'icons/ui_icons/particle_editor/square_rand.png', + "uniform" = 'icons/ui/particle_editor/uniform_rand.png', + "normal" ='icons/ui/particle_editor/normal_rand.png', + "linear" = 'icons/ui/particle_editor/linear_rand.png', + "square_rand" = 'icons/ui/particle_editor/square_rand.png', - "num" = 'icons/ui_icons/particle_editor/num_gen.png', - "vector" = 'icons/ui_icons/particle_editor/vector_gen.png', - "box" = 'icons/ui_icons/particle_editor/box_gen.png', - "circle" = 'icons/ui_icons/particle_editor/circle_gen.png', - "sphere" = 'icons/ui_icons/particle_editor/sphere_gen.png', - "square" = 'icons/ui_icons/particle_editor/square_gen.png', - "cube" = 'icons/ui_icons/particle_editor/cube_gen.png', + "num" = 'icons/ui/particle_editor/num_gen.png', + "vector" = 'icons/ui/particle_editor/vector_gen.png', + "box" = 'icons/ui/particle_editor/box_gen.png', + "circle" = 'icons/ui/particle_editor/circle_gen.png', + "sphere" = 'icons/ui/particle_editor/sphere_gen.png', + "square" = 'icons/ui/particle_editor/square_gen.png', + "cube" = 'icons/ui/particle_editor/cube_gen.png', ) diff --git a/code/modules/asset_cache/assets/pda.dm b/code/modules/asset_cache/assets/pda.dm index 392efa35b9163..7fd3f2f40e48f 100644 --- a/code/modules/asset_cache/assets/pda.dm +++ b/code/modules/asset_cache/assets/pda.dm @@ -1,34 +1,34 @@ /datum/asset/spritesheet/simple/pda name = "pda" assets = list( - "atmos" = 'icons/pda_icons/pda_atmos.png', - "back" = 'icons/pda_icons/pda_back.png', - "bell" = 'icons/pda_icons/pda_bell.png', - "blank" = 'icons/pda_icons/pda_blank.png', - "boom" = 'icons/pda_icons/pda_boom.png', - "bucket" = 'icons/pda_icons/pda_bucket.png', - "medbot" = 'icons/pda_icons/pda_medbot.png', - "floorbot" = 'icons/pda_icons/pda_floorbot.png', - "cleanbot" = 'icons/pda_icons/pda_cleanbot.png', - "crate" = 'icons/pda_icons/pda_crate.png', - "cuffs" = 'icons/pda_icons/pda_cuffs.png', - "eject" = 'icons/pda_icons/pda_eject.png', - "flashlight" = 'icons/pda_icons/pda_flashlight.png', - "honk" = 'icons/pda_icons/pda_honk.png', - "mail" = 'icons/pda_icons/pda_mail.png', - "medical" = 'icons/pda_icons/pda_medical.png', - "menu" = 'icons/pda_icons/pda_menu.png', - "mule" = 'icons/pda_icons/pda_mule.png', - "notes" = 'icons/pda_icons/pda_notes.png', - "power" = 'icons/pda_icons/pda_power.png', - "rdoor" = 'icons/pda_icons/pda_rdoor.png', - "reagent" = 'icons/pda_icons/pda_reagent.png', - "refresh" = 'icons/pda_icons/pda_refresh.png', - "scanner" = 'icons/pda_icons/pda_scanner.png', - "signaler" = 'icons/pda_icons/pda_signaler.png', - "skills" = 'icons/pda_icons/pda_skills.png', - "status" = 'icons/pda_icons/pda_status.png', - "dronephone" = 'icons/pda_icons/pda_dronephone.png', - "emoji" = 'icons/pda_icons/pda_emoji.png', - "droneblacklist" = 'icons/pda_icons/pda_droneblacklist.png', + "atmos" = 'icons/ui/pda/pda_atmos.png', + "back" = 'icons/ui/pda/pda_back.png', + "bell" = 'icons/ui/pda/pda_bell.png', + "blank" = 'icons/ui/pda/pda_blank.png', + "boom" = 'icons/ui/pda/pda_boom.png', + "bucket" = 'icons/ui/pda/pda_bucket.png', + "medbot" = 'icons/ui/pda/pda_medbot.png', + "floorbot" = 'icons/ui/pda/pda_floorbot.png', + "cleanbot" = 'icons/ui/pda/pda_cleanbot.png', + "crate" = 'icons/ui/pda/pda_crate.png', + "cuffs" = 'icons/ui/pda/pda_cuffs.png', + "eject" = 'icons/ui/pda/pda_eject.png', + "flashlight" = 'icons/ui/pda/pda_flashlight.png', + "honk" = 'icons/ui/pda/pda_honk.png', + "mail" = 'icons/ui/pda/pda_mail.png', + "medical" = 'icons/ui/pda/pda_medical.png', + "menu" = 'icons/ui/pda/pda_menu.png', + "mule" = 'icons/ui/pda/pda_mule.png', + "notes" = 'icons/ui/pda/pda_notes.png', + "power" = 'icons/ui/pda/pda_power.png', + "rdoor" = 'icons/ui/pda/pda_rdoor.png', + "reagent" = 'icons/ui/pda/pda_reagent.png', + "refresh" = 'icons/ui/pda/pda_refresh.png', + "scanner" = 'icons/ui/pda/pda_scanner.png', + "signaler" = 'icons/ui/pda/pda_signaler.png', + "skills" = 'icons/ui/pda/pda_skills.png', + "status" = 'icons/ui/pda/pda_status.png', + "dronephone" = 'icons/ui/pda/pda_dronephone.png', + "emoji" = 'icons/ui/pda/pda_emoji.png', + "droneblacklist" = 'icons/ui/pda/pda_droneblacklist.png', ) diff --git a/code/modules/asset_cache/assets/plane_debug.dm b/code/modules/asset_cache/assets/plane_debug.dm index 0d8ddac162c12..eda7244fa9e0e 100644 --- a/code/modules/asset_cache/assets/plane_debug.dm +++ b/code/modules/asset_cache/assets/plane_debug.dm @@ -1,4 +1,4 @@ /datum/asset/simple/plane_background assets = list( - "grid_background.png" = 'icons/ui_icons/tgui/grid_background.png' + "grid_background.png" = 'icons/ui/tgui/grid_background.png' ) diff --git a/code/modules/asset_cache/assets/radar.dm b/code/modules/asset_cache/assets/radar.dm index cef2679a92dcc..c7642f71fd957 100644 --- a/code/modules/asset_cache/assets/radar.dm +++ b/code/modules/asset_cache/assets/radar.dm @@ -1,6 +1,6 @@ /datum/asset/simple/radar_assets assets = list( - "ntosradarbackground.png" = 'icons/ui_icons/tgui/ntosradar_background.png', - "ntosradarpointer.png" = 'icons/ui_icons/tgui/ntosradar_pointer.png', - "ntosradarpointerS.png" = 'icons/ui_icons/tgui/ntosradar_pointer_S.png' + "ntosradarbackground.png" = 'icons/ui/tgui/ntosradar_background.png', + "ntosradarpointer.png" = 'icons/ui/tgui/ntosradar_pointer.png', + "ntosradarpointerS.png" = 'icons/ui/tgui/ntosradar_pointer_S.png' ) diff --git a/code/modules/asset_cache/assets/safe.dm b/code/modules/asset_cache/assets/safe.dm index b1d6ba9a8aacc..0bca5b6659c60 100644 --- a/code/modules/asset_cache/assets/safe.dm +++ b/code/modules/asset_cache/assets/safe.dm @@ -1,4 +1,4 @@ /datum/asset/simple/safe assets = list( - "safe_dial.png" = 'icons/ui_icons/safe/safe_dial.png' + "safe_dial.png" = 'icons/ui/safe/safe_dial.png' ) diff --git a/code/modules/buildmode/buttons.dm b/code/modules/buildmode/buttons.dm index ca48ec2767e17..d9a0a0faf63d8 100644 --- a/code/modules/buildmode/buttons.dm +++ b/code/modules/buildmode/buttons.dm @@ -1,5 +1,5 @@ /atom/movable/screen/buildmode - icon = 'icons/misc/buildmode.dmi' + icon = 'icons/hud/buildmode.dmi' var/datum/buildmode/bd // If we don't do this, we get occluded by item action buttons plane = ABOVE_HUD_PLANE diff --git a/code/modules/cargo/markets/market_uplink.dm b/code/modules/cargo/markets/market_uplink.dm index da86161e46ab2..df8c8eb36a507 100644 --- a/code/modules/cargo/markets/market_uplink.dm +++ b/code/modules/cargo/markets/market_uplink.dm @@ -1,7 +1,7 @@ /obj/item/market_uplink name = "\improper Market Uplink" desc = "An market uplink. Usable with markets. You probably shouldn't have this!" - icon = 'icons/obj/blackmarket.dmi' + icon = 'icons/obj/devices/blackmarket.dmi' icon_state = "uplink" // UI variables. @@ -151,7 +151,7 @@ /obj/item/market_uplink/blackmarket name = "\improper Black Market Uplink" desc = "An illegal black market uplink. If command wanted you to have these, they wouldn't have made it so hard to get one." - icon = 'icons/obj/blackmarket.dmi' + icon = 'icons/obj/devices/blackmarket.dmi' icon_state = "uplink" //The original black market uplink accessible_markets = list(/datum/market/blackmarket) diff --git a/code/modules/client/verbs/ooc.dm b/code/modules/client/verbs/ooc.dm index 49583ce70152a..baabaa610c523 100644 --- a/code/modules/client/verbs/ooc.dm +++ b/code/modules/client/verbs/ooc.dm @@ -80,7 +80,7 @@ GLOBAL_VAR_INIT(normal_ooc_colour, "#002eb8") var/keyname = key if(prefs.unlock_content) if(prefs.toggles & MEMBER_PUBLIC) - keyname = "[icon2html('icons/ui_icons/chat/member_content.dmi', world, "blag")][keyname]" + keyname = "[icon2html('icons/ui/chat/member_content.dmi', world, "blag")][keyname]" if(prefs.hearted) var/datum/asset/spritesheet/sheet = get_asset_datum(/datum/asset/spritesheet/chat) keyname = "[sheet.icon_tag("emoji-heart")][keyname]" diff --git a/code/modules/language/_language.dm b/code/modules/language/_language.dm index 94ea4a6aa4027..6a00610c0adf2 100644 --- a/code/modules/language/_language.dm +++ b/code/modules/language/_language.dm @@ -32,7 +32,7 @@ var/always_use_default_namelist = FALSE /// Icon displayed in the chat window when speaking this language. /// if you are seeing someone speak popcorn language, then something is wrong. - var/icon = 'icons/misc/language.dmi' + var/icon = 'icons/ui/chat/language.dmi' /// Icon state displayed in the chat window when speaking this language. var/icon_state = "popcorn" diff --git a/code/modules/mining/equipment/miningradio.dm b/code/modules/mining/equipment/miningradio.dm index c6fa3a34fc36a..61d80bfce6faf 100644 --- a/code/modules/mining/equipment/miningradio.dm +++ b/code/modules/mining/equipment/miningradio.dm @@ -1,6 +1,6 @@ /// Portable mining radio purchasable by miners /obj/item/radio/weather_monitor - icon = 'icons/obj/miningradio.dmi' + icon = 'icons/obj/devices/miningradio.dmi' name = "mining weather radio" icon_state = "miningradio" desc = "A weather radio designed for use in inhospitable environments. Gives audible warnings when storms approach. Has access to cargo channel." diff --git a/code/modules/mob/living/basic/jungle/mega_arachnid/mega_arachnid_abilities.dm b/code/modules/mob/living/basic/jungle/mega_arachnid/mega_arachnid_abilities.dm index d82812b62a392..2d2b69d119abf 100644 --- a/code/modules/mob/living/basic/jungle/mega_arachnid/mega_arachnid_abilities.dm +++ b/code/modules/mob/living/basic/jungle/mega_arachnid/mega_arachnid_abilities.dm @@ -2,7 +2,7 @@ /datum/action/cooldown/spell/pointed/projectile/flesh_restraints name = "fleshy restraints" desc = "Launch at your prey to immobilize them." - button_icon = 'icons/obj/restraints.dmi' + button_icon = 'icons/obj/weapons/restraints.dmi' button_icon_state = "flesh_snare" cooldown_time = 6 SECONDS diff --git a/code/modules/mob/living/silicon/ai/multicam.dm b/code/modules/mob/living/silicon/ai/multicam.dm index 8980a1017f206..97ea9ebedc9e4 100644 --- a/code/modules/mob/living/silicon/ai/multicam.dm +++ b/code/modules/mob/living/silicon/ai/multicam.dm @@ -24,7 +24,7 @@ /atom/movable/screen/movable/pic_in_pic/ai/make_backgrounds() ..() highlighted_background = new /mutable_appearance() - highlighted_background.icon = 'icons/misc/pic_in_pic.dmi' + highlighted_background.icon = 'icons/hud/pic_in_pic.dmi' highlighted_background.icon_state = "background_highlight" highlighted_background.layer = SPACE_LAYER @@ -84,7 +84,7 @@ /turf/open/ai_visible name = "" - icon = 'icons/misc/pic_in_pic.dmi' + icon = 'icons/hud/pic_in_pic.dmi' icon_state = "room_background" turf_flags = NOJAUNT diff --git a/code/modules/modular_computers/computers/item/laptop.dm b/code/modules/modular_computers/computers/item/laptop.dm index b55fb6d2ee68a..523c241724ed5 100644 --- a/code/modules/modular_computers/computers/item/laptop.dm +++ b/code/modules/modular_computers/computers/item/laptop.dm @@ -2,7 +2,7 @@ name = "laptop" desc = "A portable laptop computer." - icon = 'icons/obj/modular_laptop.dmi' + icon = 'icons/obj/devices/modular_laptop.dmi' icon_state = "laptop-closed" icon_state_powered = "laptop" icon_state_unpowered = "laptop-off" diff --git a/code/modules/modular_computers/computers/item/pda.dm b/code/modules/modular_computers/computers/item/pda.dm index e5c8c8da89c19..8935161089b33 100644 --- a/code/modules/modular_computers/computers/item/pda.dm +++ b/code/modules/modular_computers/computers/item/pda.dm @@ -1,6 +1,6 @@ /obj/item/modular_computer/pda name = "pda" - icon = 'icons/obj/modular_pda.dmi' + icon = 'icons/obj/devices/modular_pda.dmi' icon_state = "pda" worn_icon_state = "nothing" base_icon_state = "tablet" diff --git a/code/modules/modular_computers/file_system/programs/virtual_pet.dm b/code/modules/modular_computers/file_system/programs/virtual_pet.dm index 1a1c69b97486e..7a0adba3cce6d 100644 --- a/code/modules/modular_computers/file_system/programs/virtual_pet.dm +++ b/code/modules/modular_computers/file_system/programs/virtual_pet.dm @@ -45,10 +45,10 @@ GLOBAL_LIST_EMPTY(virtual_pets_list) var/max_hunger = 500 ///pet icon for each state var/static/list/pet_state_icons = list( - PET_STATE_HUNGRY = list("icon" = 'icons/ui_icons/virtualpet/pet_state.dmi', "icon_state" = "pet_hungry"), - PET_STATE_HAPPY = list("icon" = 'icons/ui_icons/virtualpet/pet_state.dmi', "icon_state" = "pet_happy"), - PET_STATE_ASLEEP = list("icon" = 'icons/ui_icons/virtualpet/pet_state.dmi', "icon_state" = "pet_asleep"), - PET_STATE_NEUTRAL = list("icon" = 'icons/ui_icons/virtualpet/pet_state.dmi', "icon_state" = "pet_neutral"), + PET_STATE_HUNGRY = list("icon" = 'icons/ui/virtualpet/pet_state.dmi', "icon_state" = "pet_hungry"), + PET_STATE_HAPPY = list("icon" = 'icons/ui/virtualpet/pet_state.dmi', "icon_state" = "pet_happy"), + PET_STATE_ASLEEP = list("icon" = 'icons/ui/virtualpet/pet_state.dmi', "icon_state" = "pet_asleep"), + PET_STATE_NEUTRAL = list("icon" = 'icons/ui/virtualpet/pet_state.dmi', "icon_state" = "pet_neutral"), ) ///hat options and what level they will be unlocked at var/static/list/hat_selections = list( @@ -97,7 +97,7 @@ GLOBAL_LIST_EMPTY(virtual_pets_list) /datum/computer_file/program/virtual_pet/on_install() . = ..() - profile_picture = getFlatIcon(image(icon = 'icons/ui_icons/virtualpet/pet_state.dmi', icon_state = "pet_preview")) + profile_picture = getFlatIcon(image(icon = 'icons/ui/virtualpet/pet_state.dmi', icon_state = "pet_preview")) GLOB.virtual_pets_list += src pet = new pet_type(computer) pet.forceMove(computer) @@ -188,7 +188,7 @@ GLOBAL_LIST_EMPTY(virtual_pets_list) overlays += selected_hat["appearance"] /datum/computer_file/program/virtual_pet/proc/alter_profile_picture() - var/image/pet_preview = image(icon = 'icons/ui_icons/virtualpet/pet_state.dmi', icon_state = "pet_preview") + var/image/pet_preview = image(icon = 'icons/ui/virtualpet/pet_state.dmi', icon_state = "pet_preview") if(LAZYACCESS(pet.atom_colours, FIXED_COLOUR_PRIORITY)) pet_preview.color = pet.atom_colours[FIXED_COLOUR_PRIORITY] diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm index 2e95b12914650..ee2a20eb788f1 100644 --- a/code/modules/power/cable.dm +++ b/code/modules/power/cable.dm @@ -505,7 +505,7 @@ GLOBAL_LIST_INIT(wire_node_generating_types, typecacheof(list(/obj/structure/gri if(!user) return - var/image/restraints_icon = image(icon = 'icons/obj/restraints.dmi', icon_state = "cuff") + var/image/restraints_icon = image(icon = 'icons/obj/weapons/restraints.dmi', icon_state = "cuff") restraints_icon.maptext = MAPTEXT("= CABLE_RESTRAINTS_COST ? "" : "style='color: red'"]>[CABLE_RESTRAINTS_COST]") restraints_icon.color = color diff --git a/code/modules/power/singularity/narsie.dm b/code/modules/power/singularity/narsie.dm index 7608d0dd74ffc..812dc2267fb21 100644 --- a/code/modules/power/singularity/narsie.dm +++ b/code/modules/power/singularity/narsie.dm @@ -72,7 +72,7 @@ var/area/area = get_area(src) if(area) - var/mutable_appearance/alert_overlay = mutable_appearance('icons/effects/cult/effects.dmi', "ghostalertsie") + var/mutable_appearance/alert_overlay = mutable_appearance('icons/effects/cult.dmi', "ghostalertsie") notify_ghosts( "Nar'Sie has risen in [area]. Reach out to the Geometer to be given a new shell for your soul.", source = src, diff --git a/code/modules/projectiles/guns/ballistic/launchers.dm b/code/modules/projectiles/guns/ballistic/launchers.dm index b6d8108bb5438..d70a91d36eb13 100644 --- a/code/modules/projectiles/guns/ballistic/launchers.dm +++ b/code/modules/projectiles/guns/ballistic/launchers.dm @@ -23,7 +23,7 @@ /obj/item/gun/ballistic/revolver/grenadelauncher/cyborg desc = "A 6-shot grenade launcher." name = "multi grenade launcher" - icon = 'icons/mob/mecha_equipment.dmi' + icon = 'icons/obj/devices/mecha_equipment.dmi' icon_state = "mecha_grenadelnchr" accepted_magazine_type = /obj/item/ammo_box/magazine/internal/cylinder/grenademulti pin = /obj/item/firing_pin diff --git a/code/modules/reagents/reagent_containers/misc.dm b/code/modules/reagents/reagent_containers/misc.dm index f631e8e28a0e0..db9935d3ea262 100644 --- a/code/modules/reagents/reagent_containers/misc.dm +++ b/code/modules/reagents/reagent_containers/misc.dm @@ -1,7 +1,7 @@ /obj/item/reagent_containers/cup/maunamug name = "mauna mug" desc = "A drink served in a classy mug. Now with built-in heating!" - icon = 'icons/obj/mauna_mug.dmi' + icon = 'icons/obj/devices/mauna_mug.dmi' icon_state = "maunamug" base_icon_state = "maunamug" spillable = TRUE diff --git a/code/modules/vehicles/_vehicle.dm b/code/modules/vehicles/_vehicle.dm index 4eca7cd4ebae1..faf95e8cd73c7 100644 --- a/code/modules/vehicles/_vehicle.dm +++ b/code/modules/vehicles/_vehicle.dm @@ -1,7 +1,7 @@ /obj/vehicle name = "generic vehicle" desc = "Yell at coderbus." - icon = 'icons/obj/vehicles.dmi' + icon = 'icons/mob/rideables/vehicles.dmi' icon_state = "error" max_integrity = 300 armor_type = /datum/armor/obj_vehicle diff --git a/code/modules/vehicles/lavaboat.dm b/code/modules/vehicles/lavaboat.dm index e45f062d1a24a..0336ff486dd47 100644 --- a/code/modules/vehicles/lavaboat.dm +++ b/code/modules/vehicles/lavaboat.dm @@ -20,7 +20,7 @@ /obj/item/oar name = "oar" desc = "Not to be confused with the kind Research hassles you for." - icon = 'icons/obj/vehicles.dmi' + icon = 'icons/mob/rideables/vehicles.dmi' icon_state = "oar" inhand_icon_state = "oar" lefthand_file = 'icons/mob/inhands/items/lavaland_lefthand.dmi' diff --git a/code/modules/vehicles/mecha/_mecha.dm b/code/modules/vehicles/mecha/_mecha.dm index ca1728f3fc043..1155e6293d252 100644 --- a/code/modules/vehicles/mecha/_mecha.dm +++ b/code/modules/vehicles/mecha/_mecha.dm @@ -20,7 +20,7 @@ /obj/vehicle/sealed/mecha name = "exosuit" desc = "Exosuit" - icon = 'icons/mob/mecha.dmi' + icon = 'icons/mob/rideables/mecha.dmi' resistance_flags = FIRE_PROOF | ACID_PROOF max_integrity = 300 armor_type = /datum/armor/sealed_mecha diff --git a/code/modules/vehicles/mecha/combat/savannah_ivanov.dm b/code/modules/vehicles/mecha/combat/savannah_ivanov.dm index 237a0d971b0cb..a0f50622e06d1 100644 --- a/code/modules/vehicles/mecha/combat/savannah_ivanov.dm +++ b/code/modules/vehicles/mecha/combat/savannah_ivanov.dm @@ -15,7 +15,7 @@ /obj/vehicle/sealed/mecha/savannah_ivanov name = "\improper Savannah-Ivanov" desc = "An insanely overbulked mecha that handily crushes single-pilot opponents. The price is that you need two pilots to use it." - icon = 'icons/mob/coop_mech.dmi' + icon = 'icons/mob/rideables/coop_mech.dmi' base_icon_state = "savannah_ivanov" icon_state = "savannah_ivanov_0_0" //does not include mmi compatibility diff --git a/code/modules/vehicles/mecha/equipment/mecha_equipment.dm b/code/modules/vehicles/mecha/equipment/mecha_equipment.dm index b80ac6ef02580..755f45d52b4be 100644 --- a/code/modules/vehicles/mecha/equipment/mecha_equipment.dm +++ b/code/modules/vehicles/mecha/equipment/mecha_equipment.dm @@ -4,7 +4,7 @@ */ /obj/item/mecha_parts/mecha_equipment name = "mecha equipment" - icon = 'icons/mob/mecha_equipment.dmi' + icon = 'icons/obj/devices/mecha_equipment.dmi' icon_state = "mecha_equip" force = 5 max_integrity = 300 diff --git a/code/modules/vehicles/mecha/equipment/tools/other_tools.dm b/code/modules/vehicles/mecha/equipment/tools/other_tools.dm index 6a70d4db9f043..4d3b682b4277b 100644 --- a/code/modules/vehicles/mecha/equipment/tools/other_tools.dm +++ b/code/modules/vehicles/mecha/equipment/tools/other_tools.dm @@ -508,7 +508,7 @@ /obj/item/mecha_parts/camera_kit name = "exosuit-mounted camera" desc = "A security camera meant for exosuit-mounted surveillance-on-the-go." - icon = 'icons/mob/mecha_equipment.dmi' + icon = 'icons/obj/devices/mecha_equipment.dmi' icon_state = "mecha_camera" w_class = WEIGHT_CLASS_SMALL diff --git a/code/modules/vehicles/mecha/equipment/weapons/mecha_ammo.dm b/code/modules/vehicles/mecha/equipment/weapons/mecha_ammo.dm index 0ad7bdf84a08c..828bb6f152cea 100644 --- a/code/modules/vehicles/mecha/equipment/weapons/mecha_ammo.dm +++ b/code/modules/vehicles/mecha/equipment/weapons/mecha_ammo.dm @@ -2,7 +2,7 @@ name = "generic ammo box" desc = "A box of ammo for an unknown weapon." w_class = WEIGHT_CLASS_BULKY - icon = 'icons/mob/mecha_ammo.dmi' + icon = 'icons/obj/weapons/guns/mecha_ammo.dmi' icon_state = "empty" lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi' diff --git a/code/modules/vehicles/mecha/mecha_construction_paths.dm b/code/modules/vehicles/mecha/mecha_construction_paths.dm index 9a05e3df696d6..28f5a7e9fb3fb 100644 --- a/code/modules/vehicles/mecha/mecha_construction_paths.dm +++ b/code/modules/vehicles/mecha/mecha_construction_paths.dm @@ -62,7 +62,7 @@ /datum/component/construction/unordered/mecha_chassis/spawn_result() var/atom/parent_atom = parent - parent_atom.icon = 'icons/mob/mech_construction.dmi' + parent_atom.icon = 'icons/mob/rideables/mech_construction.dmi' parent_atom.set_density(TRUE) parent_atom.cut_overlays() ..() @@ -580,7 +580,7 @@ /datum/component/construction/mecha/honker/update_parent(step_index) if(step_index == 1) var/atom/parent_atom = parent - parent_atom.icon = 'icons/mob/mech_construct.dmi' + parent_atom.icon = 'icons/mob/rideables/mech_construct.dmi' parent_atom.icon_state = "honker_chassis" ..() diff --git a/code/modules/vehicles/mecha/mecha_parts.dm b/code/modules/vehicles/mecha/mecha_parts.dm index bec0fefcc6d85..2a08f62bfac38 100644 --- a/code/modules/vehicles/mecha/mecha_parts.dm +++ b/code/modules/vehicles/mecha/mecha_parts.dm @@ -4,7 +4,7 @@ /obj/item/mecha_parts name = "mecha part" - icon = 'icons/mob/mech_construct.dmi' + icon = 'icons/mob/rideables/mech_construct.dmi' icon_state = "blank" w_class = WEIGHT_CLASS_GIGANTIC obj_flags = CONDUCTS_ELECTRICITY diff --git a/code/modules/vehicles/mecha/mecha_wreckage.dm b/code/modules/vehicles/mecha/mecha_wreckage.dm index 8896b7268fe15..dc0414e86063a 100644 --- a/code/modules/vehicles/mecha/mecha_wreckage.dm +++ b/code/modules/vehicles/mecha/mecha_wreckage.dm @@ -6,7 +6,7 @@ /obj/structure/mecha_wreckage name = "exosuit wreckage" desc = "Remains of some unfortunate mecha. Completely irreparable, but perhaps something can be salvaged." - icon = 'icons/mob/mecha.dmi' + icon = 'icons/mob/rideables/mecha.dmi' density = TRUE anchored = FALSE opacity = FALSE @@ -224,7 +224,7 @@ /obj/structure/mecha_wreckage/savannah_ivanov name = "\improper Savannah-Ivanov wreckage" - icon = 'icons/mob/coop_mech.dmi' + icon = 'icons/mob/rideables/coop_mech.dmi' icon_state = "savannah_ivanov-broken" welder_salvage = list(/obj/item/stack/sheet/mineral/silver, /obj/item/stack/sheet/iron, /obj/item/stack/rods) parts = list( diff --git a/code/modules/vehicles/scooter.dm b/code/modules/vehicles/scooter.dm index a4f3652448342..0cfde3de8adf9 100644 --- a/code/modules/vehicles/scooter.dm +++ b/code/modules/vehicles/scooter.dm @@ -224,7 +224,7 @@ /obj/item/scooter_frame name = "scooter frame" desc = "A metal frame for building a scooter. Looks like you'll need to add some iron to make wheels." - icon = 'icons/obj/vehicles.dmi' + icon = 'icons/mob/rideables/vehicles.dmi' icon_state = "scooter_frame" w_class = WEIGHT_CLASS_NORMAL diff --git a/code/modules/vehicles/vehicle_key.dm b/code/modules/vehicles/vehicle_key.dm index 08cb75df2d440..f8db861449f7a 100644 --- a/code/modules/vehicles/vehicle_key.dm +++ b/code/modules/vehicles/vehicle_key.dm @@ -1,7 +1,7 @@ /obj/item/key name = "key" desc = "A small grey key." - icon = 'icons/obj/vehicles.dmi' + icon = 'icons/mob/rideables/vehicles.dmi' icon_state = "key" w_class = WEIGHT_CLASS_TINY diff --git a/code/modules/vehicles/wheelchair.dm b/code/modules/vehicles/wheelchair.dm index d40b57276c0e4..92386b0fbc3c8 100644 --- a/code/modules/vehicles/wheelchair.dm +++ b/code/modules/vehicles/wheelchair.dm @@ -1,7 +1,7 @@ /obj/vehicle/ridden/wheelchair //ported from Hippiestation (by Jujumatic) name = "wheelchair" desc = "A chair with big wheels. It looks like you can move in this on your own." - icon = 'icons/obj/vehicles.dmi' + icon = 'icons/mob/rideables/vehicles.dmi' icon_state = "wheelchair" layer = OBJ_LAYER max_integrity = 100 @@ -90,7 +90,7 @@ /obj/item/wheelchair name = "wheelchair" desc = "A collapsed wheelchair that can be carried around." - icon = 'icons/obj/vehicles.dmi' + icon = 'icons/mob/rideables/vehicles.dmi' icon_state = "wheelchair_folded" inhand_icon_state = "wheelchair_folded" lefthand_file = 'icons/mob/inhands/items_lefthand.dmi' @@ -105,7 +105,7 @@ /obj/item/wheelchair/gold name = "gold wheelchair" desc = "A collapsed, shiny wheelchair that can be carried around." - icon = 'icons/obj/vehicles.dmi' + icon = 'icons/mob/rideables/vehicles.dmi' icon_state = "wheelchair_folded_gold" inhand_icon_state = "wheelchair_folded_gold" lefthand_file = 'icons/mob/inhands/items_lefthand.dmi' diff --git a/icons/effects/cult/effects.dmi b/icons/effects/cult.dmi similarity index 100% rename from icons/effects/cult/effects.dmi rename to icons/effects/cult.dmi diff --git a/icons/effects/effects_rcd.dmi b/icons/effects/rcd.dmi similarity index 100% rename from icons/effects/effects_rcd.dmi rename to icons/effects/rcd.dmi diff --git a/icons/misc/buildmode.dmi b/icons/hud/buildmode.dmi similarity index 100% rename from icons/misc/buildmode.dmi rename to icons/hud/buildmode.dmi diff --git a/icons/misc/pic_in_pic.dmi b/icons/hud/pic_in_pic.dmi similarity index 100% rename from icons/misc/pic_in_pic.dmi rename to icons/hud/pic_in_pic.dmi diff --git a/icons/mob/animal_item_head.dmi b/icons/mob/animal_item_head.dmi deleted file mode 100644 index 6afabf22f76deb98907328525b2d6e1305f52f76..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1059 zcmV+;1l;?HP)005u}0{{R3yb+fl00012P)t-sz`(#2 zD;3V)06cgnaF$6dS|v(q0GhP`D-|md0N-OLcyCFTQzcp;0BRcmwdl)?-@kjIay<9g zmgUWv$E9T=AR*hqiqx-bA|M=rS1K+lCeEyEz`(#V=-0C=2JR&a84_w-Y6@%7{?OD!tS%+FJ>RWQ*r;NmRLOex6# za*U0*I5Sc+(=$pSoZ^zil2jm5DXl0!U5Se`C9|j)q=$<$ttc@!6~s0~RTQ6+nwUaR zWl>^LYCKV9!c`JyaBhA{Mp1rZat84#@fxhG;OgfB4lw|Y{98^pzzn7U00QGlL_t(| zob8xxbE+^9g^l2C1X~EAHTM7i&$|KZjBR!|hEka6d4yqx-Rz#c;D@u>JYbC3NKB1u z32Oaqv6V7RS(ZZFm~val0*Y-ZXi)nXCH;i)1qtNiB)=#$fkna3QR`0$yWLI{NaNYK z3G!rpqr!qysP)$|!UTub+7S%LAYmH0n180En+>M*r8KU_RLsjuxcFdtnV%E&P?

4p72`}P(tq4L81pQTUSil6z? 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 diff --git a/icons/mob/pets_held_lh.dmi b/icons/mob/pets_held_lh.dmi deleted file mode 100644 index 1a864db13410ab81807ccc1c538b6cb29593ca6e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11585 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�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 diff --git a/icons/mob/pets_held_rh.dmi b/icons/mob/pets_held_rh.dmi deleted file mode 100644 index 39332a7e18e41bc9f38b74cd7dfb096f8b859bf0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11660 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 diff --git a/icons/mob/coop_mech.dmi b/icons/mob/rideables/coop_mech.dmi similarity index 100% rename from icons/mob/coop_mech.dmi rename to icons/mob/rideables/coop_mech.dmi diff --git a/icons/mob/mech_construct.dmi b/icons/mob/rideables/mech_construct.dmi similarity index 100% rename from icons/mob/mech_construct.dmi rename to icons/mob/rideables/mech_construct.dmi diff --git a/icons/mob/mech_construction.dmi b/icons/mob/rideables/mech_construction.dmi similarity index 100% rename from icons/mob/mech_construction.dmi rename to icons/mob/rideables/mech_construction.dmi diff --git a/icons/mob/mecha.dmi b/icons/mob/rideables/mecha.dmi similarity index 100% rename from icons/mob/mecha.dmi rename to icons/mob/rideables/mecha.dmi diff --git a/icons/obj/vehicles.dmi b/icons/mob/rideables/vehicles.dmi similarity index 100% rename from icons/obj/vehicles.dmi rename to icons/mob/rideables/vehicles.dmi diff --git a/icons/mob/telegraphing/telegraph.dmi b/icons/mob/telegraphing/telegraph.dmi index de525ead4ee9a7d49e279477b7d29a9226b3bfbe..b1ff26a4a1097c38c8c3d8ddd7fa31528e441c4b 100644 GIT binary patch delta 1759 zcmV<51|a#h53CQ6;eWPCL_t(|ob8=WlH4E+g*&MnYIc2@loxZLS-5hT>0OSMMdB*L zAoL`}pQUf(1lv5?$bc|nzI}dvJ_5gdpIv}pE@1%92?KCW7=Uxa0GtyB;G8f3=lqb~ z@I24owezpzc+(dr^hfJ|LneYaQLDm){&@YW0hEN(Ot15$G=FJ9B>E-YQTkkdBYwZ+ zdhQ<50Mg8;3~CjD=0Q=r7tPmNUy@&587=x!JxO_sgTR&tm%_CS6r4Uljddl(gkqMx)wCwR{hpd za*ICFZE5veTYqILU(yZK3@B>%&7#yF_SV`dZ}B|9XrzOo-hTMqAPqqKAQ6uMVYQaT zYGB+GO&N=Bp!GOFnqR96Wu>3aIn>I7y2BcM$$8DZN!1JB-olz|g66@2j5%r=E&3J{ zG1mH0FM!i88i3Y+u8B+DVvRocu(bMV8kGlCUhChFSwab=eGpccoEr0Zp{HS`Nu2=03po!VnR3x$=P|rPs zIQO>qhFMbM)6BxErh?Hv5G_RMe(TXRns2Xu`=X~l(rxAG)j?pX@1g!(yI+HLvxU{% z){*YC=6OS2fTS(fgpQhEehAU|z`b%~J z7qLxU|844)Hh_!SYZC9Qzl8y$%yvWXroWv51hyYRj(BYgadnFn~?y)dGb9FkJKd`7u9V zy0%q&L<4z5}fLfwGLNhnv)wjvv-L+}(E@SL3o-!9z)B6X_3up80DoE+ zCH9E3lPt>IeV%^AJOXI|(%^_%JiF$Hpl@=moGtn-_fchA5q6unG!2=Wq+FHW%{UiI zEv<~%tp*kSlOMUXrkOxA{JVC&RajL`v!=0HMM~kKv8iqs)&61tx#e&V7`a9gB3)~J zTGz*0L>WonKnti!rt~D*@I1g($$ul~z-Pa`k4OJEutv-M=)KE-4sIDdqW5$CrS%(_ z>(%tBaSW1<=$jhAiavNtQ{3`hzsK)Kfm}c66ufAYb5@7Ykytqsx%LZ%8yHz zmwXQ5ZQ`U}fW^RzIyZV+SZWMAAlfDlY2q#3KF)tfjcUa%X*H^wMVAIU*MB+cKI!za zRG<4MZl&*qE&gUuZ~b0f37YRr{VleMo2`FmVpXtnVnvX1emow&`#|sd(E>QM+ ziIY+~WtpKrUO!p@=Y#<`Ck((j%dZDmmFIbWV_8Nu^B zf97egg0SfXVcHTZiS$A5cT(RrnhXc0;S zJ?Y@@V!JUwZcLg$ke$ij_`Kq~x`Cx5mv&dKH$6Y@25A7L#R}5cxHKPYW{o-iX%#Df zq!Cr9krltH#F7to&>ApC1R8p{ep8 zk4--YUCa#qTH$kWT3GQ-V*p9?t_70#_?7ijBal@7O22>G^#CidtLvAt-9%7eOBjH2 z!T_8T2H>3k27%VAdZhk&=#STr7Qi`MPXq<+`~fP@+P8!b09OD2002ovPDHLkV1lX{ BX!igB delta 1768 zcmVuu$4T_v~h zbEYjVf9t3W)qe|`ftm#cR&Ew*^I>nUo$40*0Y*c*80u|@-wmJuv=5SF5pb~DNMf}x z?g>pBt7f3}IzU=qs|jVrpZgrJ_HfN%4Zq~R#&3dJ0n}TFnI_yiC~(#s7)J}gg(JqA zUup$V{8a&H?PrW!@)m3OsfVTI&(okfp!Qn-eolQ*JAa}4Te^aweB2@1njgz=&97;L z$`#CM2!$O!hIr>^2|&`A-9CqU=NAhga4*D;Am<1HI7bM;IYI!=5dv_I5P)-p0GuNP z;2a?U=Li8fM+m?3jex z-wx3<-hW|sJ^-~BeYH@pz<-cd0B6xh#qnzz78nEYd;kcoK@K5^wLnG(uQqhgHbd{m zPx=9RA8w?nlbd%&WX^8<-4BT98J$bTCiXaPh6=at%}>=QjZve#%K5J)|mY@51 zoquZ%*X}R9C5(CtIi_fjmAIr0Jsn}3{1pF^0#00#53dp1~g@fOEtMzy#z~+kLxx2!8+pw(W|WcXeTe05(Cd5hw&eAo=&pYk9wx zx0QRu2o#<`1gSG?|1a-x%4_(wWfLg=umS{twrG#wEU#FbBy9@;Yyha!^D8A32<`>& zd_MnH(~b57TJA0EF#@?4z;#_O;JwC&JbV7<)Z<=akKeH!eRuXo)=31mVbej z8qDUuGf)AvZc6MCXD8W|xx1f!gdYJEfHXJ)i)YvT5bm3dwX=o4r5x0@6+s>om#1-D zlaQ&>dl;uesimDUd(?oUf66PB*5nD~hJR!Et-`7>PK;xe1?TKC6WL>WonKnp;f41e)SxY>Sy)X5`#;IrS}$D{unh@quCx9swtgIgAl z-15|XY5fM4d>B8pj^U(p_)P_{q7B|M6t{fW@A3ON!J$%on*uoVC1*a)^GNLR*7+Kn zsx%J@s*g&Sw|ox7$HYmk0E>kebZ@jr(T1)fsC9nEEfN8H4FGM-Y}u@-0e8FA zU4eBz=Y9!sWDt}-%C-&IBCG%fuH$$shxuCC4j=`P#|Pxs@;;Ww8Y}I^o6+glar`dl z`dS(XtPud}^jh%9C=ozy8-eF}zL$%^TG|L`Iz0zFIP{ZDd_+lWfPW>oZKD={*Kxe% z9bI<%h!LT-(339y61H0dlw#5Zg6xd)jW0XCs~K3kQfYTZdeh76ZU6;P+pHjsjmzt? z#;i5RCs(!eM~Wc5>E%@l@m~*@;O@im9Uwj*fQtbxS#V17fHe1)S1DM2fK_ATW_EsB z{g>ClZD{KJ$79ovL176qL%&w|9GrK2(;7e$y=wtUeEiD%xd2 diff --git a/icons/obj/blackmarket.dmi b/icons/obj/devices/blackmarket.dmi similarity index 100% rename from icons/obj/blackmarket.dmi rename to icons/obj/devices/blackmarket.dmi diff --git a/icons/obj/mauna_mug.dmi b/icons/obj/devices/mauna_mug.dmi similarity index 100% rename from icons/obj/mauna_mug.dmi rename to icons/obj/devices/mauna_mug.dmi diff --git a/icons/mob/mecha_equipment.dmi b/icons/obj/devices/mecha_equipment.dmi similarity index 100% rename from icons/mob/mecha_equipment.dmi rename to icons/obj/devices/mecha_equipment.dmi diff --git a/icons/obj/miningradio.dmi b/icons/obj/devices/miningradio.dmi similarity index 100% rename from icons/obj/miningradio.dmi rename to icons/obj/devices/miningradio.dmi diff --git a/icons/obj/modular_laptop.dmi b/icons/obj/devices/modular_laptop.dmi similarity index 100% rename from icons/obj/modular_laptop.dmi rename to icons/obj/devices/modular_laptop.dmi diff --git a/icons/obj/modular_pda.dmi b/icons/obj/devices/modular_pda.dmi similarity index 100% rename from icons/obj/modular_pda.dmi rename to icons/obj/devices/modular_pda.dmi diff --git a/icons/obj/pda.dmi b/icons/obj/devices/pda.dmi similarity index 100% rename from icons/obj/pda.dmi rename to icons/obj/devices/pda.dmi diff --git a/icons/misc/beach.dmi b/icons/obj/fluff/beach.dmi similarity index 100% rename from icons/misc/beach.dmi rename to icons/obj/fluff/beach.dmi diff --git a/icons/misc/beach2.dmi b/icons/obj/fluff/beach2.dmi similarity index 100% rename from icons/misc/beach2.dmi rename to icons/obj/fluff/beach2.dmi diff --git a/icons/obj/medicart.dmi b/icons/obj/medical/medicart.dmi similarity index 100% rename from icons/obj/medicart.dmi rename to icons/obj/medical/medicart.dmi diff --git a/icons/mob/mecha_ammo.dmi b/icons/obj/weapons/guns/mecha_ammo.dmi similarity index 100% rename from icons/mob/mecha_ammo.dmi rename to icons/obj/weapons/guns/mecha_ammo.dmi diff --git a/icons/obj/restraints.dmi b/icons/obj/weapons/restraints.dmi similarity index 100% rename from icons/obj/restraints.dmi rename to icons/obj/weapons/restraints.dmi diff --git a/icons/misc/Font_Minimal.dmi b/icons/testing/Font_Minimal.dmi similarity index 100% rename from icons/misc/Font_Minimal.dmi rename to icons/testing/Font_Minimal.dmi diff --git a/icons/misc/colortest.dmi b/icons/testing/colortest.dmi similarity index 100% rename from icons/misc/colortest.dmi rename to icons/testing/colortest.dmi diff --git a/icons/misc/hidden.dmi b/icons/testing/hidden.dmi similarity index 100% rename from icons/misc/hidden.dmi rename to icons/testing/hidden.dmi diff --git a/icons/ui_icons/achievements/achievements.dmi b/icons/ui/achievements/achievements.dmi similarity index 100% rename from icons/ui_icons/achievements/achievements.dmi rename to icons/ui/achievements/achievements.dmi diff --git a/icons/ui_icons/adventure/default.png b/icons/ui/adventure/default.png similarity index 100% rename from icons/ui_icons/adventure/default.png rename to icons/ui/adventure/default.png diff --git a/icons/ui_icons/adventure/grue.png b/icons/ui/adventure/grue.png similarity index 100% rename from icons/ui_icons/adventure/grue.png rename to icons/ui/adventure/grue.png diff --git a/icons/ui_icons/adventure/signal_lost.png b/icons/ui/adventure/signal_lost.png similarity index 100% rename from icons/ui_icons/adventure/signal_lost.png rename to icons/ui/adventure/signal_lost.png diff --git a/icons/ui_icons/adventure/trade.png b/icons/ui/adventure/trade.png similarity index 100% rename from icons/ui_icons/adventure/trade.png rename to icons/ui/adventure/trade.png diff --git a/icons/ui_icons/antags/badass.dmi b/icons/ui/antags/badass.dmi similarity index 100% rename from icons/ui_icons/antags/badass.dmi rename to icons/ui/antags/badass.dmi diff --git a/icons/ui_icons/antags/obsessed.dmi b/icons/ui/antags/obsessed.dmi similarity index 100% rename from icons/ui_icons/antags/obsessed.dmi rename to icons/ui/antags/obsessed.dmi diff --git a/icons/ui_icons/arcade/boss1.gif b/icons/ui/arcade/boss1.gif similarity index 100% rename from icons/ui_icons/arcade/boss1.gif rename to icons/ui/arcade/boss1.gif diff --git a/icons/ui_icons/arcade/boss2.gif b/icons/ui/arcade/boss2.gif similarity index 100% rename from icons/ui_icons/arcade/boss2.gif rename to icons/ui/arcade/boss2.gif diff --git a/icons/ui_icons/arcade/boss3.gif b/icons/ui/arcade/boss3.gif similarity index 100% rename from icons/ui_icons/arcade/boss3.gif rename to icons/ui/arcade/boss3.gif diff --git a/icons/ui_icons/arcade/boss4.gif b/icons/ui/arcade/boss4.gif similarity index 100% rename from icons/ui_icons/arcade/boss4.gif rename to icons/ui/arcade/boss4.gif diff --git a/icons/ui_icons/arcade/boss5.gif b/icons/ui/arcade/boss5.gif similarity index 100% rename from icons/ui_icons/arcade/boss5.gif rename to icons/ui/arcade/boss5.gif diff --git a/icons/ui_icons/arcade/boss6.gif b/icons/ui/arcade/boss6.gif similarity index 100% rename from icons/ui_icons/arcade/boss6.gif rename to icons/ui/arcade/boss6.gif diff --git a/icons/ui_icons/arcade/fireplace.png b/icons/ui/arcade/fireplace.png similarity index 100% rename from icons/ui_icons/arcade/fireplace.png rename to icons/ui/arcade/fireplace.png diff --git a/icons/ui_icons/arcade/shopkeeper.png b/icons/ui/arcade/shopkeeper.png similarity index 100% rename from icons/ui_icons/arcade/shopkeeper.png rename to icons/ui/arcade/shopkeeper.png diff --git a/icons/ui_icons/chat/chat_icons.dmi b/icons/ui/chat/chat_icons.dmi similarity index 100% rename from icons/ui_icons/chat/chat_icons.dmi rename to icons/ui/chat/chat_icons.dmi diff --git a/icons/ui_icons/emoji/emoji.dmi b/icons/ui/chat/emoji.dmi similarity index 100% rename from icons/ui_icons/emoji/emoji.dmi rename to icons/ui/chat/emoji.dmi diff --git a/icons/misc/language.dmi b/icons/ui/chat/language.dmi similarity index 100% rename from icons/misc/language.dmi rename to icons/ui/chat/language.dmi diff --git a/icons/ui_icons/chat/member_content.dmi b/icons/ui/chat/member_content.dmi similarity index 100% rename from icons/ui_icons/chat/member_content.dmi rename to icons/ui/chat/member_content.dmi diff --git a/icons/misc/pepe.dmi b/icons/ui/chat/pepe.dmi similarity index 100% rename from icons/misc/pepe.dmi rename to icons/ui/chat/pepe.dmi diff --git a/icons/misc/clickbox.dmi b/icons/ui/clickbox.dmi similarity index 100% rename from icons/misc/clickbox.dmi rename to icons/ui/clickbox.dmi diff --git a/icons/ui_icons/common/padlock.png b/icons/ui/common/padlock.png similarity index 100% rename from icons/ui_icons/common/padlock.png rename to icons/ui/common/padlock.png diff --git a/icons/ui_icons/common/tg_16.png b/icons/ui/common/tg_16.png similarity index 100% rename from icons/ui_icons/common/tg_16.png rename to icons/ui/common/tg_16.png diff --git a/icons/ui_icons/common/tg_32.png b/icons/ui/common/tg_32.png similarity index 100% rename from icons/ui_icons/common/tg_32.png rename to icons/ui/common/tg_32.png diff --git a/icons/ui_icons/condiments/bbqsauce.png b/icons/ui/condiments/bbqsauce.png similarity index 100% rename from icons/ui_icons/condiments/bbqsauce.png rename to icons/ui/condiments/bbqsauce.png diff --git a/icons/ui_icons/condiments/bottle.png b/icons/ui/condiments/bottle.png similarity index 100% rename from icons/ui_icons/condiments/bottle.png rename to icons/ui/condiments/bottle.png diff --git a/icons/ui_icons/condiments/cherryjelly.png b/icons/ui/condiments/cherryjelly.png similarity index 100% rename from icons/ui_icons/condiments/cherryjelly.png rename to icons/ui/condiments/cherryjelly.png diff --git a/icons/ui_icons/condiments/coldsauce.png b/icons/ui/condiments/coldsauce.png similarity index 100% rename from icons/ui_icons/condiments/coldsauce.png rename to icons/ui/condiments/coldsauce.png diff --git a/icons/ui_icons/condiments/condi_empty.png b/icons/ui/condiments/condi_empty.png similarity index 100% rename from icons/ui_icons/condiments/condi_empty.png rename to icons/ui/condiments/condi_empty.png diff --git a/icons/ui_icons/condiments/cookingoil.png b/icons/ui/condiments/cookingoil.png similarity index 100% rename from icons/ui_icons/condiments/cookingoil.png rename to icons/ui/condiments/cookingoil.png diff --git a/icons/ui_icons/condiments/enzyme.png b/icons/ui/condiments/enzyme.png similarity index 100% rename from icons/ui_icons/condiments/enzyme.png rename to icons/ui/condiments/enzyme.png diff --git a/icons/ui_icons/condiments/flour.png b/icons/ui/condiments/flour.png similarity index 100% rename from icons/ui_icons/condiments/flour.png rename to icons/ui/condiments/flour.png diff --git a/icons/ui_icons/condiments/honey.png b/icons/ui/condiments/honey.png similarity index 100% rename from icons/ui_icons/condiments/honey.png rename to icons/ui/condiments/honey.png diff --git a/icons/ui_icons/condiments/hotsauce.png b/icons/ui/condiments/hotsauce.png similarity index 100% rename from icons/ui_icons/condiments/hotsauce.png rename to icons/ui/condiments/hotsauce.png diff --git a/icons/ui_icons/condiments/ketchup.png b/icons/ui/condiments/ketchup.png similarity index 100% rename from icons/ui_icons/condiments/ketchup.png rename to icons/ui/condiments/ketchup.png diff --git a/icons/ui_icons/condiments/mayonnaise.png b/icons/ui/condiments/mayonnaise.png similarity index 100% rename from icons/ui_icons/condiments/mayonnaise.png rename to icons/ui/condiments/mayonnaise.png diff --git a/icons/ui_icons/condiments/milk.png b/icons/ui/condiments/milk.png similarity index 100% rename from icons/ui_icons/condiments/milk.png rename to icons/ui/condiments/milk.png diff --git a/icons/ui_icons/condiments/oliveoil.png b/icons/ui/condiments/oliveoil.png similarity index 100% rename from icons/ui_icons/condiments/oliveoil.png rename to icons/ui/condiments/oliveoil.png diff --git a/icons/ui_icons/condiments/peanutbutter.png b/icons/ui/condiments/peanutbutter.png similarity index 100% rename from icons/ui_icons/condiments/peanutbutter.png rename to icons/ui/condiments/peanutbutter.png diff --git a/icons/ui_icons/condiments/peppermillsmall.png b/icons/ui/condiments/peppermillsmall.png similarity index 100% rename from icons/ui_icons/condiments/peppermillsmall.png rename to icons/ui/condiments/peppermillsmall.png diff --git a/icons/ui_icons/condiments/rice.png b/icons/ui/condiments/rice.png similarity index 100% rename from icons/ui_icons/condiments/rice.png rename to icons/ui/condiments/rice.png diff --git a/icons/ui_icons/condiments/saltshakersmall.png b/icons/ui/condiments/saltshakersmall.png similarity index 100% rename from icons/ui_icons/condiments/saltshakersmall.png rename to icons/ui/condiments/saltshakersmall.png diff --git a/icons/ui_icons/condiments/soymilk.png b/icons/ui/condiments/soymilk.png similarity index 100% rename from icons/ui_icons/condiments/soymilk.png rename to icons/ui/condiments/soymilk.png diff --git a/icons/ui_icons/condiments/soysauce.png b/icons/ui/condiments/soysauce.png similarity index 100% rename from icons/ui_icons/condiments/soysauce.png rename to icons/ui/condiments/soysauce.png diff --git a/icons/ui_icons/condiments/sugar.png b/icons/ui/condiments/sugar.png similarity index 100% rename from icons/ui_icons/condiments/sugar.png rename to icons/ui/condiments/sugar.png diff --git a/icons/ui_icons/contracts/bluespace.png b/icons/ui/contracts/bluespace.png similarity index 100% rename from icons/ui_icons/contracts/bluespace.png rename to icons/ui/contracts/bluespace.png diff --git a/icons/ui_icons/contracts/destruction.png b/icons/ui/contracts/destruction.png similarity index 100% rename from icons/ui_icons/contracts/destruction.png rename to icons/ui/contracts/destruction.png diff --git a/icons/ui_icons/contracts/healing.png b/icons/ui/contracts/healing.png similarity index 100% rename from icons/ui_icons/contracts/healing.png rename to icons/ui/contracts/healing.png diff --git a/icons/ui_icons/contracts/robeless.png b/icons/ui/contracts/robeless.png similarity index 100% rename from icons/ui_icons/contracts/robeless.png rename to icons/ui/contracts/robeless.png diff --git a/icons/ui_icons/dna/dna_discovered.gif b/icons/ui/dna/dna_discovered.gif similarity index 100% rename from icons/ui_icons/dna/dna_discovered.gif rename to icons/ui/dna/dna_discovered.gif diff --git a/icons/ui_icons/dna/dna_extra.gif b/icons/ui/dna/dna_extra.gif similarity index 100% rename from icons/ui_icons/dna/dna_extra.gif rename to icons/ui/dna/dna_extra.gif diff --git a/icons/ui_icons/dna/dna_undiscovered.gif b/icons/ui/dna/dna_undiscovered.gif similarity index 100% rename from icons/ui_icons/dna/dna_undiscovered.gif rename to icons/ui/dna/dna_undiscovered.gif diff --git a/icons/ui_icons/inventory/back.png b/icons/ui/inventory/back.png similarity index 100% rename from icons/ui_icons/inventory/back.png rename to icons/ui/inventory/back.png diff --git a/icons/ui_icons/inventory/belt.png b/icons/ui/inventory/belt.png similarity index 100% rename from icons/ui_icons/inventory/belt.png rename to icons/ui/inventory/belt.png diff --git a/icons/ui_icons/inventory/collar.png b/icons/ui/inventory/collar.png similarity index 100% rename from icons/ui_icons/inventory/collar.png rename to icons/ui/inventory/collar.png diff --git a/icons/ui_icons/inventory/ears.png b/icons/ui/inventory/ears.png similarity index 100% rename from icons/ui_icons/inventory/ears.png rename to icons/ui/inventory/ears.png diff --git a/icons/ui_icons/inventory/glasses.png b/icons/ui/inventory/glasses.png similarity index 100% rename from icons/ui_icons/inventory/glasses.png rename to icons/ui/inventory/glasses.png diff --git a/icons/ui_icons/inventory/gloves.png b/icons/ui/inventory/gloves.png similarity index 100% rename from icons/ui_icons/inventory/gloves.png rename to icons/ui/inventory/gloves.png diff --git a/icons/ui_icons/inventory/hand_l.png b/icons/ui/inventory/hand_l.png similarity index 100% rename from icons/ui_icons/inventory/hand_l.png rename to icons/ui/inventory/hand_l.png diff --git a/icons/ui_icons/inventory/hand_r.png b/icons/ui/inventory/hand_r.png similarity index 100% rename from icons/ui_icons/inventory/hand_r.png rename to icons/ui/inventory/hand_r.png diff --git a/icons/ui_icons/inventory/head.png b/icons/ui/inventory/head.png similarity index 100% rename from icons/ui_icons/inventory/head.png rename to icons/ui/inventory/head.png diff --git a/icons/ui_icons/inventory/id.png b/icons/ui/inventory/id.png similarity index 100% rename from icons/ui_icons/inventory/id.png rename to icons/ui/inventory/id.png diff --git a/icons/ui_icons/inventory/mask.png b/icons/ui/inventory/mask.png similarity index 100% rename from icons/ui_icons/inventory/mask.png rename to icons/ui/inventory/mask.png diff --git a/icons/ui_icons/inventory/neck.png b/icons/ui/inventory/neck.png similarity index 100% rename from icons/ui_icons/inventory/neck.png rename to icons/ui/inventory/neck.png diff --git a/icons/ui_icons/inventory/pocket.png b/icons/ui/inventory/pocket.png similarity index 100% rename from icons/ui_icons/inventory/pocket.png rename to icons/ui/inventory/pocket.png diff --git a/icons/ui_icons/inventory/shoes.png b/icons/ui/inventory/shoes.png similarity index 100% rename from icons/ui_icons/inventory/shoes.png rename to icons/ui/inventory/shoes.png diff --git a/icons/ui_icons/inventory/suit.png b/icons/ui/inventory/suit.png similarity index 100% rename from icons/ui_icons/inventory/suit.png rename to icons/ui/inventory/suit.png diff --git a/icons/ui_icons/inventory/suit_storage.png b/icons/ui/inventory/suit_storage.png similarity index 100% rename from icons/ui_icons/inventory/suit_storage.png rename to icons/ui/inventory/suit_storage.png diff --git a/icons/ui_icons/inventory/uniform.png b/icons/ui/inventory/uniform.png similarity index 100% rename from icons/ui_icons/inventory/uniform.png rename to icons/ui/inventory/uniform.png diff --git a/icons/ui_icons/mecha/armor.dmi b/icons/ui/mecha/armor.dmi similarity index 100% rename from icons/ui_icons/mecha/armor.dmi rename to icons/ui/mecha/armor.dmi diff --git a/icons/ui_icons/notes/high_button.png b/icons/ui/notes/high_button.png similarity index 100% rename from icons/ui_icons/notes/high_button.png rename to icons/ui/notes/high_button.png diff --git a/icons/ui_icons/notes/medium_button.png b/icons/ui/notes/medium_button.png similarity index 100% rename from icons/ui_icons/notes/medium_button.png rename to icons/ui/notes/medium_button.png diff --git a/icons/ui_icons/notes/minor_button.png b/icons/ui/notes/minor_button.png similarity index 100% rename from icons/ui_icons/notes/minor_button.png rename to icons/ui/notes/minor_button.png diff --git a/icons/ui_icons/notes/none_button.png b/icons/ui/notes/none_button.png similarity index 100% rename from icons/ui_icons/notes/none_button.png rename to icons/ui/notes/none_button.png diff --git a/icons/ui_icons/orbit/ghost.png b/icons/ui/orbit/ghost.png similarity index 100% rename from icons/ui_icons/orbit/ghost.png rename to icons/ui/orbit/ghost.png diff --git a/icons/ui_icons/particle_editor/box_gen.png b/icons/ui/particle_editor/box_gen.png similarity index 100% rename from icons/ui_icons/particle_editor/box_gen.png rename to icons/ui/particle_editor/box_gen.png diff --git a/icons/ui_icons/particle_editor/circle_gen.png b/icons/ui/particle_editor/circle_gen.png similarity index 100% rename from icons/ui_icons/particle_editor/circle_gen.png rename to icons/ui/particle_editor/circle_gen.png diff --git a/icons/ui_icons/particle_editor/cube_gen.png b/icons/ui/particle_editor/cube_gen.png similarity index 100% rename from icons/ui_icons/particle_editor/cube_gen.png rename to icons/ui/particle_editor/cube_gen.png diff --git a/icons/ui_icons/particle_editor/linear_rand.png b/icons/ui/particle_editor/linear_rand.png similarity index 100% rename from icons/ui_icons/particle_editor/linear_rand.png rename to icons/ui/particle_editor/linear_rand.png diff --git a/icons/ui_icons/particle_editor/motion.png b/icons/ui/particle_editor/motion.png similarity index 100% rename from icons/ui_icons/particle_editor/motion.png rename to icons/ui/particle_editor/motion.png diff --git a/icons/ui_icons/particle_editor/normal_rand.png b/icons/ui/particle_editor/normal_rand.png similarity index 100% rename from icons/ui_icons/particle_editor/normal_rand.png rename to icons/ui/particle_editor/normal_rand.png diff --git a/icons/ui_icons/particle_editor/num_gen.png b/icons/ui/particle_editor/num_gen.png similarity index 100% rename from icons/ui_icons/particle_editor/num_gen.png rename to icons/ui/particle_editor/num_gen.png diff --git a/icons/ui_icons/particle_editor/sphere_gen.png b/icons/ui/particle_editor/sphere_gen.png similarity index 100% rename from icons/ui_icons/particle_editor/sphere_gen.png rename to icons/ui/particle_editor/sphere_gen.png diff --git a/icons/ui_icons/particle_editor/square_gen.png b/icons/ui/particle_editor/square_gen.png similarity index 100% rename from icons/ui_icons/particle_editor/square_gen.png rename to icons/ui/particle_editor/square_gen.png diff --git a/icons/ui_icons/particle_editor/square_rand.png b/icons/ui/particle_editor/square_rand.png similarity index 100% rename from icons/ui_icons/particle_editor/square_rand.png rename to icons/ui/particle_editor/square_rand.png diff --git a/icons/ui_icons/particle_editor/uniform_rand.png b/icons/ui/particle_editor/uniform_rand.png similarity index 100% rename from icons/ui_icons/particle_editor/uniform_rand.png rename to icons/ui/particle_editor/uniform_rand.png diff --git a/icons/ui_icons/particle_editor/vector_gen.png b/icons/ui/particle_editor/vector_gen.png similarity index 100% rename from icons/ui_icons/particle_editor/vector_gen.png rename to icons/ui/particle_editor/vector_gen.png diff --git a/icons/pda_icons/pda_atmos.png b/icons/ui/pda/pda_atmos.png similarity index 100% rename from icons/pda_icons/pda_atmos.png rename to icons/ui/pda/pda_atmos.png diff --git a/icons/pda_icons/pda_back.png b/icons/ui/pda/pda_back.png similarity index 100% rename from icons/pda_icons/pda_back.png rename to icons/ui/pda/pda_back.png diff --git a/icons/pda_icons/pda_bell.png b/icons/ui/pda/pda_bell.png similarity index 100% rename from icons/pda_icons/pda_bell.png rename to icons/ui/pda/pda_bell.png diff --git a/icons/pda_icons/pda_blank.png b/icons/ui/pda/pda_blank.png similarity index 100% rename from icons/pda_icons/pda_blank.png rename to icons/ui/pda/pda_blank.png diff --git a/icons/pda_icons/pda_boom.png b/icons/ui/pda/pda_boom.png similarity index 100% rename from icons/pda_icons/pda_boom.png rename to icons/ui/pda/pda_boom.png diff --git a/icons/pda_icons/pda_bucket.png b/icons/ui/pda/pda_bucket.png similarity index 100% rename from icons/pda_icons/pda_bucket.png rename to icons/ui/pda/pda_bucket.png diff --git a/icons/pda_icons/pda_chatroom.png b/icons/ui/pda/pda_chatroom.png similarity index 100% rename from icons/pda_icons/pda_chatroom.png rename to icons/ui/pda/pda_chatroom.png diff --git a/icons/pda_icons/pda_cleanbot.png b/icons/ui/pda/pda_cleanbot.png similarity index 100% rename from icons/pda_icons/pda_cleanbot.png rename to icons/ui/pda/pda_cleanbot.png diff --git a/icons/pda_icons/pda_color.png b/icons/ui/pda/pda_color.png similarity index 100% rename from icons/pda_icons/pda_color.png rename to icons/ui/pda/pda_color.png diff --git a/icons/pda_icons/pda_crate.png b/icons/ui/pda/pda_crate.png similarity index 100% rename from icons/pda_icons/pda_crate.png rename to icons/ui/pda/pda_crate.png diff --git a/icons/pda_icons/pda_cuffs.png b/icons/ui/pda/pda_cuffs.png similarity index 100% rename from icons/pda_icons/pda_cuffs.png rename to icons/ui/pda/pda_cuffs.png diff --git a/icons/pda_icons/pda_droneblacklist.png b/icons/ui/pda/pda_droneblacklist.png similarity index 100% rename from icons/pda_icons/pda_droneblacklist.png rename to icons/ui/pda/pda_droneblacklist.png diff --git a/icons/pda_icons/pda_dronephone.png b/icons/ui/pda/pda_dronephone.png similarity index 100% rename from icons/pda_icons/pda_dronephone.png rename to icons/ui/pda/pda_dronephone.png diff --git a/icons/pda_icons/pda_eject.png b/icons/ui/pda/pda_eject.png similarity index 100% rename from icons/pda_icons/pda_eject.png rename to icons/ui/pda/pda_eject.png diff --git a/icons/pda_icons/pda_emoji.png b/icons/ui/pda/pda_emoji.png similarity index 100% rename from icons/pda_icons/pda_emoji.png rename to icons/ui/pda/pda_emoji.png diff --git a/icons/pda_icons/pda_exit.png b/icons/ui/pda/pda_exit.png similarity index 100% rename from icons/pda_icons/pda_exit.png rename to icons/ui/pda/pda_exit.png diff --git a/icons/pda_icons/pda_flashlight.png b/icons/ui/pda/pda_flashlight.png similarity index 100% rename from icons/pda_icons/pda_flashlight.png rename to icons/ui/pda/pda_flashlight.png diff --git a/icons/pda_icons/pda_floorbot.png b/icons/ui/pda/pda_floorbot.png similarity index 100% rename from icons/pda_icons/pda_floorbot.png rename to icons/ui/pda/pda_floorbot.png diff --git a/icons/pda_icons/pda_font.png b/icons/ui/pda/pda_font.png similarity index 100% rename from icons/pda_icons/pda_font.png rename to icons/ui/pda/pda_font.png diff --git a/icons/pda_icons/pda_honk.png b/icons/ui/pda/pda_honk.png similarity index 100% rename from icons/pda_icons/pda_honk.png rename to icons/ui/pda/pda_honk.png diff --git a/icons/pda_icons/pda_locked.PNG b/icons/ui/pda/pda_locked.PNG similarity index 100% rename from icons/pda_icons/pda_locked.PNG rename to icons/ui/pda/pda_locked.PNG diff --git a/icons/pda_icons/pda_mail.png b/icons/ui/pda/pda_mail.png similarity index 100% rename from icons/pda_icons/pda_mail.png rename to icons/ui/pda/pda_mail.png diff --git a/icons/pda_icons/pda_medbot.png b/icons/ui/pda/pda_medbot.png similarity index 100% rename from icons/pda_icons/pda_medbot.png rename to icons/ui/pda/pda_medbot.png diff --git a/icons/pda_icons/pda_medical.png b/icons/ui/pda/pda_medical.png similarity index 100% rename from icons/pda_icons/pda_medical.png rename to icons/ui/pda/pda_medical.png diff --git a/icons/pda_icons/pda_menu.png b/icons/ui/pda/pda_menu.png similarity index 100% rename from icons/pda_icons/pda_menu.png rename to icons/ui/pda/pda_menu.png diff --git a/icons/pda_icons/pda_mule.png b/icons/ui/pda/pda_mule.png similarity index 100% rename from icons/pda_icons/pda_mule.png rename to icons/ui/pda/pda_mule.png diff --git a/icons/pda_icons/pda_notes.png b/icons/ui/pda/pda_notes.png similarity index 100% rename from icons/pda_icons/pda_notes.png rename to icons/ui/pda/pda_notes.png diff --git a/icons/pda_icons/pda_power.png b/icons/ui/pda/pda_power.png similarity index 100% rename from icons/pda_icons/pda_power.png rename to icons/ui/pda/pda_power.png diff --git a/icons/pda_icons/pda_rdoor.png b/icons/ui/pda/pda_rdoor.png similarity index 100% rename from icons/pda_icons/pda_rdoor.png rename to icons/ui/pda/pda_rdoor.png diff --git a/icons/pda_icons/pda_reagent.png b/icons/ui/pda/pda_reagent.png similarity index 100% rename from icons/pda_icons/pda_reagent.png rename to icons/ui/pda/pda_reagent.png diff --git a/icons/pda_icons/pda_refresh.png b/icons/ui/pda/pda_refresh.png similarity index 100% rename from icons/pda_icons/pda_refresh.png rename to icons/ui/pda/pda_refresh.png diff --git a/icons/pda_icons/pda_scanner.png b/icons/ui/pda/pda_scanner.png similarity index 100% rename from icons/pda_icons/pda_scanner.png rename to icons/ui/pda/pda_scanner.png diff --git a/icons/pda_icons/pda_signaler.png b/icons/ui/pda/pda_signaler.png similarity index 100% rename from icons/pda_icons/pda_signaler.png rename to icons/ui/pda/pda_signaler.png diff --git a/icons/pda_icons/pda_skills.png b/icons/ui/pda/pda_skills.png similarity index 100% rename from icons/pda_icons/pda_skills.png rename to icons/ui/pda/pda_skills.png diff --git a/icons/pda_icons/pda_status.png b/icons/ui/pda/pda_status.png similarity index 100% rename from icons/pda_icons/pda_status.png rename to icons/ui/pda/pda_status.png diff --git a/icons/program_icons/alarm_green.gif b/icons/ui/programs/alarm_green.gif similarity index 100% rename from icons/program_icons/alarm_green.gif rename to icons/ui/programs/alarm_green.gif diff --git a/icons/program_icons/alarm_red.gif b/icons/ui/programs/alarm_red.gif similarity index 100% rename from icons/program_icons/alarm_red.gif rename to icons/ui/programs/alarm_red.gif diff --git a/icons/program_icons/batt_100.gif b/icons/ui/programs/batt_100.gif similarity index 100% rename from icons/program_icons/batt_100.gif rename to icons/ui/programs/batt_100.gif diff --git a/icons/program_icons/batt_20.gif b/icons/ui/programs/batt_20.gif similarity index 100% rename from icons/program_icons/batt_20.gif rename to icons/ui/programs/batt_20.gif diff --git a/icons/program_icons/batt_40.gif b/icons/ui/programs/batt_40.gif similarity index 100% rename from icons/program_icons/batt_40.gif rename to icons/ui/programs/batt_40.gif diff --git a/icons/program_icons/batt_5.gif b/icons/ui/programs/batt_5.gif similarity index 100% rename from icons/program_icons/batt_5.gif rename to icons/ui/programs/batt_5.gif diff --git a/icons/program_icons/batt_60.gif b/icons/ui/programs/batt_60.gif similarity index 100% rename from icons/program_icons/batt_60.gif rename to icons/ui/programs/batt_60.gif diff --git a/icons/program_icons/batt_80.gif b/icons/ui/programs/batt_80.gif similarity index 100% rename from icons/program_icons/batt_80.gif rename to icons/ui/programs/batt_80.gif diff --git a/icons/program_icons/borg_mon.gif b/icons/ui/programs/borg_mon.gif similarity index 100% rename from icons/program_icons/borg_mon.gif rename to icons/ui/programs/borg_mon.gif diff --git a/icons/program_icons/charging.gif b/icons/ui/programs/charging.gif similarity index 100% rename from icons/program_icons/charging.gif rename to icons/ui/programs/charging.gif diff --git a/icons/program_icons/downloader_finished.gif b/icons/ui/programs/downloader_finished.gif similarity index 100% rename from icons/program_icons/downloader_finished.gif rename to icons/ui/programs/downloader_finished.gif diff --git a/icons/program_icons/downloader_running.gif b/icons/ui/programs/downloader_running.gif similarity index 100% rename from icons/program_icons/downloader_running.gif rename to icons/ui/programs/downloader_running.gif diff --git a/icons/program_icons/mafia.gif b/icons/ui/programs/mafia.gif similarity index 100% rename from icons/program_icons/mafia.gif rename to icons/ui/programs/mafia.gif diff --git a/icons/program_icons/ntnrc_idle.gif b/icons/ui/programs/ntnrc_idle.gif similarity index 100% rename from icons/program_icons/ntnrc_idle.gif rename to icons/ui/programs/ntnrc_idle.gif diff --git a/icons/program_icons/ntnrc_new.gif b/icons/ui/programs/ntnrc_new.gif similarity index 100% rename from icons/program_icons/ntnrc_new.gif rename to icons/ui/programs/ntnrc_new.gif diff --git a/icons/program_icons/power_norm.gif b/icons/ui/programs/power_norm.gif similarity index 100% rename from icons/program_icons/power_norm.gif rename to icons/ui/programs/power_norm.gif diff --git a/icons/program_icons/power_warn.gif b/icons/ui/programs/power_warn.gif similarity index 100% rename from icons/program_icons/power_warn.gif rename to icons/ui/programs/power_warn.gif diff --git a/icons/program_icons/robotact.gif b/icons/ui/programs/robotact.gif similarity index 100% rename from icons/program_icons/robotact.gif rename to icons/ui/programs/robotact.gif diff --git a/icons/program_icons/sig_high.gif b/icons/ui/programs/sig_high.gif similarity index 100% rename from icons/program_icons/sig_high.gif rename to icons/ui/programs/sig_high.gif diff --git a/icons/program_icons/sig_lan.gif b/icons/ui/programs/sig_lan.gif similarity index 100% rename from icons/program_icons/sig_lan.gif rename to icons/ui/programs/sig_lan.gif diff --git a/icons/program_icons/sig_low.gif b/icons/ui/programs/sig_low.gif similarity index 100% rename from icons/program_icons/sig_low.gif rename to icons/ui/programs/sig_low.gif diff --git a/icons/program_icons/sig_none.gif b/icons/ui/programs/sig_none.gif similarity index 100% rename from icons/program_icons/sig_none.gif rename to icons/ui/programs/sig_none.gif diff --git a/icons/program_icons/smmon_0.gif b/icons/ui/programs/smmon_0.gif similarity index 100% rename from icons/program_icons/smmon_0.gif rename to icons/ui/programs/smmon_0.gif diff --git a/icons/program_icons/smmon_1.gif b/icons/ui/programs/smmon_1.gif similarity index 100% rename from icons/program_icons/smmon_1.gif rename to icons/ui/programs/smmon_1.gif diff --git a/icons/program_icons/smmon_2.gif b/icons/ui/programs/smmon_2.gif similarity index 100% rename from icons/program_icons/smmon_2.gif rename to icons/ui/programs/smmon_2.gif diff --git a/icons/program_icons/smmon_3.gif b/icons/ui/programs/smmon_3.gif similarity index 100% rename from icons/program_icons/smmon_3.gif rename to icons/ui/programs/smmon_3.gif diff --git a/icons/program_icons/smmon_4.gif b/icons/ui/programs/smmon_4.gif similarity index 100% rename from icons/program_icons/smmon_4.gif rename to icons/ui/programs/smmon_4.gif diff --git a/icons/program_icons/smmon_5.gif b/icons/ui/programs/smmon_5.gif similarity index 100% rename from icons/program_icons/smmon_5.gif rename to icons/ui/programs/smmon_5.gif diff --git a/icons/program_icons/smmon_6.gif b/icons/ui/programs/smmon_6.gif similarity index 100% rename from icons/program_icons/smmon_6.gif rename to icons/ui/programs/smmon_6.gif diff --git a/icons/ui_icons/safe/safe_dial.png b/icons/ui/safe/safe_dial.png similarity index 100% rename from icons/ui_icons/safe/safe_dial.png rename to icons/ui/safe/safe_dial.png diff --git a/icons/ui_icons/screentips/cursor_hints.dmi b/icons/ui/screentips/cursor_hints.dmi similarity index 100% rename from icons/ui_icons/screentips/cursor_hints.dmi rename to icons/ui/screentips/cursor_hints.dmi diff --git a/icons/ui_icons/tgui/grid_background.png b/icons/ui/tgui/grid_background.png similarity index 100% rename from icons/ui_icons/tgui/grid_background.png rename to icons/ui/tgui/grid_background.png diff --git a/icons/ui_icons/tgui/ntosradar_background.png b/icons/ui/tgui/ntosradar_background.png similarity index 100% rename from icons/ui_icons/tgui/ntosradar_background.png rename to icons/ui/tgui/ntosradar_background.png diff --git a/icons/ui_icons/tgui/ntosradar_pointer.png b/icons/ui/tgui/ntosradar_pointer.png similarity index 100% rename from icons/ui_icons/tgui/ntosradar_pointer.png rename to icons/ui/tgui/ntosradar_pointer.png diff --git a/icons/ui_icons/tgui/ntosradar_pointer_S.png b/icons/ui/tgui/ntosradar_pointer_S.png similarity index 100% rename from icons/ui_icons/tgui/ntosradar_pointer_S.png rename to icons/ui/tgui/ntosradar_pointer_S.png diff --git a/icons/ui_icons/virtualpet/pet_state.dmi b/icons/ui/virtualpet/pet_state.dmi similarity index 100% rename from icons/ui_icons/virtualpet/pet_state.dmi rename to icons/ui/virtualpet/pet_state.dmi diff --git a/strings/tcg/set_one.json b/strings/tcg/set_one.json index c1c061cad4684..233f984835ddc 100644 --- a/strings/tcg/set_one.json +++ b/strings/tcg/set_one.json @@ -277,7 +277,7 @@ "cardtype": "Creature", "cardsubtype": "Sloth", "rarity": "common", - "summon_icon_file": "icons/mob/pets.dmi", + "summon_icon_file": "icons/mob/simple/pets.dmi", "summon_icon_state": "cool_sloth" }, { @@ -1006,7 +1006,7 @@ "cardtype": "Creature", "cardsubtype": "Cat", "rarity": "uncommon", - "summon_icon_file": "icons/mob/pets.dmi", + "summon_icon_file": "icons/mob/simple/pets.dmi", "summon_icon_state": "cat" }, { From 1e00ba4084616c4a3f530d71605cf728d016657d Mon Sep 17 00:00:00 2001 From: orange man <61334995+comfyorange@users.noreply.github.com> Date: Sun, 26 May 2024 16:08:29 +1200 Subject: [PATCH 17/17] Automatic changelog for PR #83420 [ci skip] --- html/changelogs/AutoChangeLog-pr-83420.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-83420.yml diff --git a/html/changelogs/AutoChangeLog-pr-83420.yml b/html/changelogs/AutoChangeLog-pr-83420.yml new file mode 100644 index 0000000000000..1d1cb39750c2a --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-83420.yml @@ -0,0 +1,4 @@ +author: "YesterdaysPromise" +delete-after: True +changes: + - image: "Cleaned a single stray pixel in a single frame of a bite telegraphing accidentaly found while re-organizing the files." \ No newline at end of file