Skip to content

Commit

Permalink
More wooden floors (#1074)
Browse files Browse the repository at this point in the history
## Что этот PR делает
Порт того что я делал для пары - куча деревянных полов.
Я люблю дерево

Все полы можно скрафтить из дерева (как неожиданно)
Но некоторые стоят дороже - 5 досок вместо 1

## Почему это хорошо для игры
Разнообразие

## Изображения изменений

![image](https://github.com/user-attachments/assets/ea396e98-66e0-4a7b-9613-79c8ee30270e)

![image](https://github.com/user-attachments/assets/3d36bb96-48f9-4e70-a82b-69cdebed6c8c)

## Тестирование
Yeppers

## Changelog

:cl:
add: Добавлена куча деревянных полов и возможность их скрафтить.
/:cl:

## Summary by Sourcery

Add several new wooden floor types, including oak, birch, cherry,
amaranth, ebonite, pink ivory, and guaiacum. These floors are craftable
using wood, with some rarer variants requiring more resources.

New Features:
- Added new craftable wooden floor types.

Tests:
- Updated grayscale for wooden floors.
  • Loading branch information
AyIong authored Feb 1, 2025
1 parent 25a368c commit 62bf82c
Show file tree
Hide file tree
Showing 7 changed files with 240 additions and 2 deletions.
5 changes: 5 additions & 0 deletions code/datums/elements/decals/_decal.dm
Original file line number Diff line number Diff line change
Expand Up @@ -132,6 +132,11 @@
/datum/element/decal/proc/apply_overlay(atom/source, list/overlay_list)
SIGNAL_HANDLER

// BANDASTATION ADDITION - GRAYSCALE WOODEN FLOORS - START
var/atom/atom_source = source
if(istype(atom_source, /turf/open/floor/wood))
pic.appearance_flags = RESET_COLOR | KEEP_APART
// BANDASTATION ADDITION - GRAYSCALE WOODEN FLOORS - END
overlay_list += pic

/datum/element/decal/proc/clean_react(datum/source, clean_types)
Expand Down
2 changes: 1 addition & 1 deletion modular_bandastation/aesthetics/_aesthetics.dm
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/datum/modpack/aesthetics
name = "Эстетика"
desc = "Обновление визуального ряда"
author = "larentoun, Aylong220"
author = "larentoun, Aylong"
55 changes: 54 additions & 1 deletion modular_bandastation/objects/_objects.dm
Original file line number Diff line number Diff line change
@@ -1,10 +1,16 @@
/datum/modpack/objects
name = "Объекты"
desc = "В основном включает в себя портированные объекты и всякие мелочи, которым не нужен отдельный модпак."
author = "dj-34, Chorden"
author = "dj-34, Chorden, Aylong"

/datum/modpack/objects/initialize()
. = ..()
for(var/datum/stack_recipe/recipe in GLOB.wood_recipes)
if(recipe.result_type == /obj/item/stack/tile/wood)
GLOB.wood_recipes -= recipe
qdel(recipe)
break

GLOB.autodrobe_fancy_items += list(
/obj/item/clothing/under/carnival/formal = 2,
/obj/item/clothing/under/carnival/jacket = 2,
Expand All @@ -15,16 +21,63 @@
/obj/item/clothing/mask/carnival/triangles = 2,
/obj/item/clothing/mask/carnival/colored = 2,
)

GLOB.autodrobe_other_items += list(
/obj/item/clothing/suit/ny_sweater = 5,
/obj/item/clothing/suit/garland = 5,
/obj/item/clothing/neck/cloak/ny_cloak = 5,
/obj/item/clothing/neck/garland = 5,
)

GLOB.all_autodrobe_items |= (
GLOB.autodrobe_fancy_items \
+ GLOB.autodrobe_other_items
)

GLOB.wood_recipes += list(
null,
new /datum/stack_recipe_list("Деревянный пол", list(
new /datum/stack_recipe("Обычный", /obj/item/stack/tile/wood, 1, 4, 20),
new /datum/stack_recipe("Дубовый", /obj/item/stack/tile/wood/oak, 1, 4, 20),
new /datum/stack_recipe("Берёзовый", /obj/item/stack/tile/wood/birch, 1, 4, 20),
new /datum/stack_recipe("Вишнёвый", /obj/item/stack/tile/wood/cherry, 1, 4, 20),
new /datum/stack_recipe("Амарантовый", /obj/item/stack/tile/wood/amaranth, 1, 4, 20),
new /datum/stack_recipe("Эбонитовый", /obj/item/stack/tile/wood/ebonite, 5, 4, 20),
new /datum/stack_recipe("Умниниевый", /obj/item/stack/tile/wood/pink_ivory, 5, 4, 20),
new /datum/stack_recipe("Бакаутовый", /obj/item/stack/tile/wood/guaiacum, 5, 4, 20),
)),
new /datum/stack_recipe_list("Деревянный пол (Цельный)", list(
new /datum/stack_recipe("Обычный", /obj/item/stack/tile/wood/large, 1, 4, 20),
new /datum/stack_recipe("Дубовый", /obj/item/stack/tile/wood/large/oak, 1, 4, 20),
new /datum/stack_recipe("Берёзовый", /obj/item/stack/tile/wood/large/birch, 1, 4, 20),
new /datum/stack_recipe("Вишнёвый", /obj/item/stack/tile/wood/large/cherry, 1, 4, 20),
new /datum/stack_recipe("Амарантовый ", /obj/item/stack/tile/wood/large/amaranth, 1, 4, 20),
new /datum/stack_recipe("Эбонитовый ", /obj/item/stack/tile/wood/large/ebonite, 5, 4, 20),
new /datum/stack_recipe("Умниниевый ", /obj/item/stack/tile/wood/large/pink_ivory, 5, 4, 20),
new /datum/stack_recipe("Бакаутовый ", /obj/item/stack/tile/wood/large/guaiacum, 5, 4, 20),
)),
new /datum/stack_recipe_list("Паркет", list(
new /datum/stack_recipe("Обычный", /obj/item/stack/tile/wood/parquet, 1, 4, 20),
new /datum/stack_recipe("Дубовый", /obj/item/stack/tile/wood/parquet/oak, 1, 4, 20),
new /datum/stack_recipe("Берёзовый", /obj/item/stack/tile/wood/parquet/birch, 1, 4, 20),
new /datum/stack_recipe("Вишнёвый", /obj/item/stack/tile/wood/parquet/cherry, 1, 4, 20),
new /datum/stack_recipe("Амарантовый", /obj/item/stack/tile/wood/parquet/amaranth, 1, 4, 20),
new /datum/stack_recipe("Эбонитовый", /obj/item/stack/tile/wood/parquet/ebonite, 5, 4, 20),
new /datum/stack_recipe("Умниниевый", /obj/item/stack/tile/wood/parquet/pink_ivory, 5, 4, 20),
new /datum/stack_recipe("Бакаутовый", /obj/item/stack/tile/wood/parquet/guaiacum, 5, 4, 20),
)),
new /datum/stack_recipe_list("Паркет (Классический)", list(
new /datum/stack_recipe("Обычный", /obj/item/stack/tile/wood/tile, 1, 4, 20),
new /datum/stack_recipe("Дубовый", /obj/item/stack/tile/wood/tile/oak, 1, 4, 20),
new /datum/stack_recipe("Берёзовый", /obj/item/stack/tile/wood/tile/birch, 1, 4, 20),
new /datum/stack_recipe("Вишнёвый", /obj/item/stack/tile/wood/tile/cherry, 1, 4, 20),
new /datum/stack_recipe("Амарантовый", /obj/item/stack/tile/wood/tile/amaranth, 1, 4, 20),
new /datum/stack_recipe("Эбонитовый", /obj/item/stack/tile/wood/tile/ebonite, 5, 4, 20),
new /datum/stack_recipe("Умниниевый", /obj/item/stack/tile/wood/tile/pink_ivory, 5, 4, 20),
new /datum/stack_recipe("Бакаутовый", /obj/item/stack/tile/wood/tile/guaiacum, 5, 4, 20),
)),
null)

GLOB.arcade_prize_pool += list(
/obj/item/storage/box/id_stickers = 2
)
2 changes: 2 additions & 0 deletions modular_bandastation/objects/_objects.dme
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@
#include "code/effects/spawners.dm"
#include "code/effects/turf_decal.dm"

#include "code/floors/wooden.dm"

#include "code/greyscale/config_types/greyscale_clothes.dm"

#include "code/items/banners.dm"
Expand Down
178 changes: 178 additions & 0 deletions modular_bandastation/objects/code/floors/wooden.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,178 @@
#define COLOR_WOOD "#864A2D"
#define COLOR_OAK "#644526"
#define COLOR_BIRCH "#FFECB3"
#define COLOR_CHERRY "#643412"
#define COLOR_AMARANTH "#6B2E3E"
#define COLOR_EBONITE "#363649"
#define COLOR_PINK_IVORY "#D78575"
#define COLOR_GUAIACUM "#5C6250"

/// Automatically generates all subtypes for a wooden floor with tiles.
#define WOODEN_FLOOR_HELPER(path, tile)\
##path/oak {\
color = COLOR_OAK;\
floor_tile = ##tile/oak;\
}\
##tile/oak {\
name = "oak floor tiles";\
singular_name = "oak floor tile";\
color = COLOR_OAK;\
turf_type = ##path/oak;\
merge_type = ##tile/oak;\
}\
##path/birch {\
color = COLOR_BIRCH;\
floor_tile = ##tile/birch;\
}\
##tile/birch {\
name = "birch floor tiles";\
singular_name = "birch floor tile";\
color = COLOR_BIRCH;\
turf_type = ##path/birch;\
merge_type = ##tile/birch;\
}\
##path/cherry {\
color = COLOR_CHERRY;\
floor_tile = ##tile/cherry;\
}\
##tile/cherry {\
name = "cherry floor tiles";\
singular_name = "cherry floor tile";\
color = COLOR_CHERRY;\
turf_type = ##path/cherry;\
merge_type = ##tile/cherry;\
}\
##path/amaranth {\
color = COLOR_AMARANTH;\
floor_tile = ##tile/amaranth;\
}\
##tile/amaranth {\
name = "amaranth floor tiles";\
singular_name = "amaranth floor tile";\
color = COLOR_AMARANTH;\
turf_type = ##path/amaranth;\
merge_type = ##tile/amaranth;\
}\
##path/ebonite {\
color = COLOR_EBONITE;\
floor_tile = ##tile/ebonite;\
}\
##tile/ebonite {\
name = "ebonite floor tiles";\
singular_name = "ebonite floor tile";\
color = COLOR_EBONITE;\
turf_type = ##path/ebonite;\
merge_type = ##tile/ebonite;\
}\
##path/pink_ivory {\
color = COLOR_PINK_IVORY;\
floor_tile = ##tile/pink_ivory;\
}\
##tile/pink_ivory {\
name = "pink ivory floor tiles";\
singular_name = "pink ivory floor tile";\
color = COLOR_PINK_IVORY;\
turf_type = ##path/pink_ivory;\
merge_type = ##tile/pink_ivory;\
}\
##path/guaiacum {\
color = COLOR_GUAIACUM;\
floor_tile = ##tile/guaiacum;\
}\
##tile/guaiacum {\
name = "guaiacum floor tiles";\
singular_name = "guaiacum floor tile";\
color = COLOR_GUAIACUM;\
turf_type = ##path/guaiacum;\
merge_type = ##tile/guaiacum;\
}\

// Wood
/obj/item/stack/tile/wood
icon = 'modular_bandastation/objects/icons/turf/wooden/tiles.dmi'
icon_state = "tile-wood"
color = COLOR_WOOD

/turf/open/floor/wood
icon = 'modular_bandastation/objects/icons/turf/wooden/wooden.dmi'
icon_state = "wood"
damaged_dmi = 'modular_bandastation/objects/icons/turf/wooden/wooden.dmi'
color = COLOR_WOOD
appearance_flags = RESET_COLOR

/turf/open/floor/wood/broken_states()
return list("wood-broken", "wood-broken2", "wood-broken3", "wood-broken4", "wood-broken5", "wood-broken6", "wood-broken7")

/turf/open/floor/wood/Initialize(mapload)
. = ..()
add_atom_colour(color, FIXED_COLOUR_PRIORITY)

WOODEN_FLOOR_HELPER(/turf/open/floor/wood, /obj/item/stack/tile/wood)

// Fancy Wood
/obj/item/stack/tile/wood/large
name = "fancy wood floor tiles"
singular_name = "fancy wood floor tile"
icon_state = "tile-wood-fancy"
color = COLOR_WOOD
turf_type = /turf/open/floor/wood/large
merge_type = /obj/item/stack/tile/wood/large

/turf/open/floor/wood/large
icon_state = "wood_fancy"
color = COLOR_WOOD
floor_tile = /obj/item/stack/tile/wood/large

/turf/open/floor/wood/large/broken_states()
return list("wood_fancy-broken", "wood_fancy-broken2", "wood_fancy-broken3")

WOODEN_FLOOR_HELPER(/turf/open/floor/wood/large, /obj/item/stack/tile/wood/large)

// Parquet
/obj/item/stack/tile/wood/parquet
name = "parquet floor tiles"
singular_name = "parquet floor tile"
icon_state = "tile-wood-parquet"
color = COLOR_WOOD
turf_type = /turf/open/floor/wood/parquet
merge_type = /obj/item/stack/tile/wood/parquet

/turf/open/floor/wood/parquet
icon_state = "wood_parquet"
color = COLOR_WOOD
floor_tile = /obj/item/stack/tile/wood/parquet

/turf/open/floor/wood/parquet/broken_states()
return list("wood_parquet-broken", "wood_parquet-broken2", "wood_parquet-broken3", "wood_parquet-broken4", "wood_parquet-broken5", "wood_parquet-broken6", "wood_parquet-broken7")

WOODEN_FLOOR_HELPER(/turf/open/floor/wood/parquet, /obj/item/stack/tile/wood/parquet)

// Tiled Parquet
/obj/item/stack/tile/wood/tile
name = "tiled parquet floor tiles"
singular_name = "tiled parquet floor tile"
icon_state = "tile-wood-tile"
color = COLOR_WOOD
turf_type = /turf/open/floor/wood/tile
merge_type = /obj/item/stack/tile/wood/tile

/turf/open/floor/wood/tile
icon_state = "wood_tile"
color = COLOR_WOOD
floor_tile = /obj/item/stack/tile/wood/tile

/turf/open/floor/wood/tile/broken_states()
return list("wood_tile-broken", "wood_tile-broken2", "wood_tile-broken3")

WOODEN_FLOOR_HELPER(/turf/open/floor/wood/tile, /obj/item/stack/tile/wood/tile)

#undef COLOR_WOOD
#undef COLOR_OAK
#undef COLOR_BIRCH
#undef COLOR_CHERRY
#undef COLOR_AMARANTH
#undef COLOR_EBONITE
#undef COLOR_PINK_IVORY
#undef COLOR_GUAIACUM

#undef WOODEN_FLOOR_HELPER
Binary file not shown.
Binary file not shown.

0 comments on commit 62bf82c

Please sign in to comment.