diff --git a/code/game/objects/structures/signs.dm b/code/game/objects/structures/signs.dm
index f87887c63de..8cf1feb7879 100644
--- a/code/game/objects/structures/signs.dm
+++ b/code/game/objects/structures/signs.dm
@@ -244,3 +244,193 @@
icon = 'icons/obj/christmas.dmi'
icon_state = "doorwreath"
layer = 5
+
+/obj/structure/sign/flag/blank
+ name = "blank banner"
+ desc = "A blank blue flag"
+ icon_state = "flag"
+
+/obj/structure/sign/flag/blank/left
+ icon_state = "flag_l"
+
+/obj/structure/sign/flag/blank/right
+ icon_state = "flag_r"
+
+/obj/structure/sign/flag/sol
+ name = "Sol Alliance Flag"
+ desc = "The bright blue flag of the Alliance of Sovereign Solarian Nations."
+ icon_state = "solgov"
+
+/obj/structure/sign/flag/sol/left
+ icon_state = "solgov_l"
+
+/obj/structure/sign/flag/sol/right
+ icon_state = "solgov_r"
+
+/obj/item/weapon/flag/sol
+ name = "Sol Alliance Flag"
+ desc = "The bright blue flag of the Alliance of Sovereign Solarian Nations."
+ flag_path = "solgov"
+
+/obj/item/weapon/flag/sol/l
+ flag_size = 1
+
+/obj/structure/sign/flag/dominia
+ name = "Dominian Empire Flag"
+ desc = "The Imperial Standard of Emperor Boleslaw Keeser of Dominia"
+ icon_state = "dominia"
+
+/obj/structure/sign/flag/dominia/left
+ icon_state = "dominia_l"
+
+/obj/structure/sign/flag/dominia/right
+ icon_state = "dominia_r"
+
+/obj/item/weapon/flag/dominia
+ name = "Dominian Empire Flag"
+ desc = "The Imperial Standard of Emperor Boleslaw Keeser of Dominia"
+ flag_path = "dominia"
+
+/obj/item/weapon/flag/dominia/l
+ flag_size = 1
+
+/obj/structure/sign/flag/elyra
+ name = "Elyran Flag"
+ desc = "The hopeful colors of the Serene Republic of Elyra."
+ icon_state = "elyra"
+
+/obj/structure/sign/flag/elyra/left
+ icon_state = "elyra_l"
+
+/obj/structure/sign/flag/elyra/right
+ icon_state = "elyra_r"
+
+/obj/item/weapon/flag/elyra
+ name = "Elyran Flag"
+ desc = "The hopeful colors of the Serene Republic of Elyra."
+ flag_path = "elyra"
+
+/obj/item/weapon/flag/elyra/l
+ flag_size = 1
+
+/obj/structure/sign/flag/hegemony
+ name = "Hegemony Flag"
+ desc = "The feudal standard of the Izweski Hegemony."
+ icon_state = "izweski"
+
+/obj/structure/sign/flag/hegemony/left
+ icon_state = "izweski_l"
+
+/obj/structure/sign/flag/hegemony/right
+ icon_state = "izweski_r"
+
+/obj/item/weapon/flag/hegemony
+ name = "Hegemony Flag"
+ desc = "The feudal standard of the Izweski Hegemony."
+ flag_path = "izweski"
+
+/obj/item/weapon/flag/hegemony/l
+ flag_size = 1
+
+/obj/structure/sign/flag/jargon
+ name = "Jargon Federation Flag"
+ desc = "The insignia of the Jargon Federation"
+ icon_state = "jargon"
+
+/obj/structure/sign/flag/jargon/left
+ icon_state = "jargon_l"
+
+/obj/structure/sign/flag/jargon/right
+ icon_state = "jargon_r"
+
+/obj/item/weapon/flag/jargon
+ name = "Jargon Federation Flag"
+ desc = "The insignia of the Jargon Federation"
+ flag_path = "jargon"
+
+/obj/item/weapon/flag/jargon/l
+ flag_size = 1
+
+/obj/structure/sign/flag/nanotrasen
+ name = "NanoTrasen Corporation Flag"
+ desc = "The logo of NanoTrasen on a flag."
+ icon_state = "nanotrasen"
+
+/obj/structure/sign/flag/nanotrasen/left
+ icon_state = "nanotrasen_l"
+
+/obj/structure/sign/flag/nanotrasen/right
+ icon_state = "nanotrasen_r"
+
+/obj/item/weapon/flag/nanotrasen
+ name = "NanoTrasen Corporation Flag"
+ desc = "The logo of NanoTrasen on a flag"
+ flag_path = "nanotrasen"
+
+/obj/item/weapon/flag/nanotrasen/l
+ flag_size = 1
+
+/obj/item/weapon/flag
+ name = "boxed flag"
+ desc = "A flag neatly folded into a wooden container."
+ icon = 'icons/obj/decals.dmi'
+ icon_state = "flag_boxed"
+ var/flag_path
+ var/flag_size = 0
+
+/obj/item/weapon/flag/afterattack(var/atom/A, var/mob/user, var/adjacent, var/clickparams)
+ if (!adjacent)
+ return
+
+ var/turf/W = A
+ if (!iswall(W) || !isturf(user.loc))
+ user << "You can't place this here!"
+ return
+
+ var/placement_dir = get_dir(user, W)
+ if (!(placement_dir in cardinal))
+ user << "You must stand directly in front of the wall you wish to place that on."
+ return
+
+ var/obj/structure/sign/flag/P = new(user.loc)
+
+ switch(placement_dir)
+ if(NORTH)
+ P.pixel_y = 32
+ if(SOUTH)
+ P.pixel_y = -32
+ if(EAST)
+ P.pixel_x = 32
+ if(WEST)
+ P.pixel_x = -32
+
+ P.dir = placement_dir
+ if(flag_size)
+ P.icon_state = "[flag_path]_l"
+ var/obj/structure/sign/flag/P2 = new(user.loc)
+ P2.icon_state = "[flag_path]_r"
+ P2.dir = P.dir
+ switch(P2.dir)
+ if(NORTH)
+ P2.pixel_y = P.pixel_y
+ P2.pixel_x = 32
+ if(SOUTH)
+ P2.pixel_y = P.pixel_y
+ P2.pixel_x = 32
+ if(EAST)
+ P2.pixel_x = P.pixel_x
+ P2.pixel_y = -32
+ if(WEST)
+ P2.pixel_x = P.pixel_x
+ P2.pixel_y = 32
+ P2.name = name
+ P2.desc = desc
+ else
+ P.icon_state = "[flag_path]"
+ P.name = name
+ P.desc = desc
+ qdel(src)
+
+
+
+
diff --git a/code/modules/client/preference_setup/loadout/loadout_general.dm b/code/modules/client/preference_setup/loadout/loadout_general.dm
index 1345fb3fd5d..cc4a58d083f 100644
--- a/code/modules/client/preference_setup/loadout/loadout_general.dm
+++ b/code/modules/client/preference_setup/loadout/loadout_general.dm
@@ -62,3 +62,35 @@
sortTim(lunchboxes, /proc/cmp_text_asc)
gear_tweaks += new/datum/gear_tweak/path(lunchboxes)
gear_tweaks += new/datum/gear_tweak/contents(lunchables_lunches(), lunchables_snacks(), lunchables_drinks())
+
+/datum/gear/banner
+ display_name = "banner selection"
+ path = /obj/item/weapon/flag
+
+/datum/gear/banner/New()
+ ..()
+ var/banners = list()
+ banners["banner, SolGov"] = /obj/item/weapon/flag/sol
+ banners["banner, Dominia"] = /obj/item/weapon/flag/dominia
+ banners["banner, Elyra"] = /obj/item/weapon/flag/elyra
+ banners["banner, Hegemony"] = /obj/item/weapon/flag/hegemony
+ banners["banner, Jargon"] = /obj/item/weapon/flag/jargon
+ banners["banner, NanoTrasen"] = /obj/item/weapon/flag/nanotrasen
+ gear_tweaks += new/datum/gear_tweak/path(banners)
+
+/datum/gear/flag
+ display_name = "flag selection"
+ cost = 2
+ path = /obj/item/weapon/flag
+
+/datum/gear/flag/New()
+ ..()
+ var/flags = list()
+ flags["flag, SolGov"] = /obj/item/weapon/flag/sol/l
+ flags["flag, Dominia"] = /obj/item/weapon/flag/dominia/l
+ flags["flag, Elyra"] = /obj/item/weapon/flag/elyra/l
+ flags["flag, Hegemony"] = /obj/item/weapon/flag/hegemony/l
+ flags["flag, Jargon"] = /obj/item/weapon/flag/jargon/l
+ flags["flag, NanoTrasen"] = /obj/item/weapon/flag/nanotrasen/l
+ gear_tweaks += new/datum/gear_tweak/path(flags)
+
diff --git a/html/changelogs/me - flags.yml b/html/changelogs/me - flags.yml
new file mode 100644
index 00000000000..4c717a596ef
--- /dev/null
+++ b/html/changelogs/me - flags.yml
@@ -0,0 +1,37 @@
+################################
+# Example Changelog File
+#
+# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb.
+#
+# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.)
+# When it is, any changes listed below will disappear.
+#
+# Valid Prefixes:
+# bugfix
+# wip (For works in progress)
+# tweak
+# soundadd
+# sounddel
+# rscadd (general adding of nice things)
+# rscdel (general deleting of nice things)
+# imageadd
+# imagedel
+# maptweak
+# spellcheck (typo fixes)
+# experiment
+# balance
+#################################
+
+# Your name.
+author: LordFowl
+
+# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again.
+delete-after: True
+
+# Any changes you've made. See valid prefix list above.
+# INDENT WITH TWO SPACES. NOT TABS. SPACES.
+# SCREW THIS UP AND IT WON'T WORK.
+# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries.
+# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog.
+changes:
+ - rscadd: "Flags and banners are now available in the custom loadout sections. Banners are one tile decals, flags are 2x1 tile decals."
diff --git a/icons/obj/decals.dmi b/icons/obj/decals.dmi
index 734f4b11973..c6ed8d50099 100644
Binary files a/icons/obj/decals.dmi and b/icons/obj/decals.dmi differ