Files
Bloop 655b66bdd0 Adds automatic GAGS icon generation for mapping and the loadout menu (#90940)
Revival of https://github.com/tgstation/tgstation/pull/86482, which is
even more doable now that we have rustg iconforge generation.

What this PR does:

- Sets up every single GAGS icon in the game to have their own preview
icon autogenerated during compile. This is configurable to not run
during live. The icons are created in `icons/map_icons/..`
- This also has the side effect of providing accurate GAGS icons for
things like the loadout menu. No more having to create your own
previews.

![FOuGL6ofxC](https://github.com/user-attachments/assets/e5414971-7f13-4883-9f7f-a8a212b46fe8)

<details><summary>Mappers rejoice!</summary>

![StrongDMM_1oeMSoRHXT](https://github.com/user-attachments/assets/83dcfe4c-31be-4953-98f3-dff90268bbc4)

![StrongDMM_uyqu3CggPn](https://github.com/user-attachments/assets/7896f99e-2656-40e1-a9da-3a513882365a)

</details>

<details><summary>Uses iconforge so it does not take up much time during
init</summary>

![dreamdaemon_u4Md3Dqwge](https://github.com/user-attachments/assets/17baaff8-5d5e-4a4d-ba8f-9dd548024155)

</details>

---

this still applies:

Note for Spriters:

After you've assigned the correct values to vars, you must run the game
through init on your local machine and commit the changes to the map
icon dmi files. Unit tests should catch all cases of forgetting to
assign the correct vars, or not running through init.

Note for Server Operators:

In order to not generate these icons on live I've added a new config
entry which should be disabled on live called GENERATE_ASSETS_IN_INIT in
the config.txt

No more error icons in SDMM and loadout.

🆑
refactor: preview icons for greyscale items are now automatically
generated, meaning you can see GAGS as they actually appear ingame while
mapping or viewing the loadout menu.
/🆑

---------

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
2025-05-29 16:14:43 -04:00

89 lines
3.1 KiB
Plaintext

/obj/item/seeds/rainbow_bunch
name = "rainbow bunch seed pack"
desc = "A pack of seeds that'll grow into a beautiful bush of various colored flowers."
icon_state = "seed-rainbowbunch"
species = "rainbowbunch"
plantname = "Rainbow Flowers"
icon_harvest = "rainbowbunch-harvest"
product = /obj/item/food/grown/rainbow_flower
lifespan = 25
endurance = 10
maturation = 6
production = 3
yield = 5
potency = 20
instability = 25
growthstages = 4
growing_icon = 'icons/obj/service/hydroponics/growing_flowers.dmi'
icon_dead = "rainbowbunch-dead"
genes = list(/datum/plant_gene/trait/repeated_harvest, /datum/plant_gene/trait/preserved)
reagents_add = list(/datum/reagent/consumable/nutriment = 0.05)
/obj/item/food/grown/rainbow_flower
seed = /obj/item/seeds/rainbow_bunch
name = "rainbow flower"
desc = "A beautiful flower capable of being used for most dyeing processes."
slot_flags = ITEM_SLOT_HEAD
alternate_worn_layer = ABOVE_BODY_FRONT_HEAD_LAYER
force = 0
throwforce = 0
w_class = WEIGHT_CLASS_TINY
throw_speed = 2
throw_range = 3
attack_verb_continuous = list("pompfs")
attack_verb_simple = list("pompf")
greyscale_colors = COLOR_BLACK //only here for unit testing. overriden in initialize()
icon = 'icons/map_icons/items/_item.dmi'
icon_state = "/obj/item/food/grown/rainbow_flower"
post_init_icon_state = "map_flower"
greyscale_config = /datum/greyscale_config/flower_simple
greyscale_config_worn = /datum/greyscale_config/flower_simple_worn
/obj/item/food/grown/rainbow_flower/Initialize(mapload)
. = ..()
if(greyscale_colors != initial(greyscale_colors))
return
var/flower_color = rand(1,8)
switch(flower_color)
if(1)
set_greyscale("#c50b0b")
reagents.add_reagent(/datum/reagent/colorful_reagent/powder/red, 3)
dye_color = DYE_RED
desc += " This one is in a bright red color."
if(2)
set_greyscale("#f76f07")
reagents.add_reagent(/datum/reagent/colorful_reagent/powder/orange, 3)
dye_color = DYE_ORANGE
desc += " This one is in a citrus orange color."
if(3)
set_greyscale("#d8ce13")
reagents.add_reagent(/datum/reagent/colorful_reagent/powder/yellow, 3)
dye_color = DYE_YELLOW
desc += " This one is in a bright yellow color."
if(4)
set_greyscale("#a0da23")
reagents.add_reagent(/datum/reagent/colorful_reagent/powder/green, 3)
dye_color = DYE_GREEN
desc += " This one is in a grassy green color."
if(5)
set_greyscale("#0862c1")
reagents.add_reagent(/datum/reagent/colorful_reagent/powder/blue, 3)
dye_color = DYE_BLUE
desc += " This one is in a soothing blue color."
if(6)
set_greyscale("#ad00cc")
reagents.add_reagent(/datum/reagent/colorful_reagent/powder/purple, 3)
dye_color = DYE_PURPLE
desc += " This one is in a vibrant purple color."
if(7)
set_greyscale("#161616")
reagents.add_reagent(/datum/reagent/colorful_reagent/powder/black, 3)
dye_color = DYE_BLACK
desc += " This one is in a midnight black color."
if(8)
set_greyscale(COLOR_WHITE)
reagents.add_reagent(/datum/reagent/colorful_reagent/powder/white, 3)
dye_color = DYE_WHITE
desc += " This one is in a pure white color."