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