diff --git a/code/__DEFINES/icon_smoothing_defines.dm b/code/__DEFINES/icon_smoothing_defines.dm index 961c11e3fcb..a9a51b83f93 100644 --- a/code/__DEFINES/icon_smoothing_defines.dm +++ b/code/__DEFINES/icon_smoothing_defines.dm @@ -120,6 +120,7 @@ DEFINE_BITFIELD(smoothing_flags, list( #define SMOOTH_GROUP_ABDUCTOR_TABLES S_OBJ(54) ///obj/structure/table/abductor #define SMOOTH_GROUP_GLASS_TABLES S_OBJ(55) ///obj/structure/table/glass #define SMOOTH_GROUP_REINFORCED_TABLES S_OBJ(56) ///obj/structure/table/reinforced, /obj/structure/table/glass/reinforced +#define SMOOTH_GROUP_CULT_TABLES S_OBJ(57) ///obj/structire/table/reinforced/cult #define SMOOTH_GROUP_ALIEN_RESIN S_OBJ(60) ///obj/structure/alien/resin #define SMOOTH_GROUP_ALIEN_WALLS S_OBJ(61) ///obj/structure/alien/resin/wall, diff --git a/code/game/gamemodes/cult/cult_structures.dm b/code/game/gamemodes/cult/cult_structures.dm index 73bbdc7b49f..6dbf2fbed2a 100644 --- a/code/game/gamemodes/cult/cult_structures.dm +++ b/code/game/gamemodes/cult/cult_structures.dm @@ -280,7 +280,11 @@ GLOBAL_LIST_INIT(blacklisted_pylon_turfs, typecacheof(list( if(!is_station_level(z) && last_corrupt <= world.time) //Pylons only convert tiles on offstation bases to help hide onstation cults from meson users var/list/validturfs = list() var/list/cultturfs = list() + var/list/tableturfs = list() for(var/T in circleviewturfs(src, 5)) + for(var/obj/structure/table/table in T) + if(!istype(table, /obj/structure/table/reinforced/cult)) + tableturfs |= T if(istype(T, /turf/simulated/floor/engine/cult)) cultturfs |= T continue @@ -291,6 +295,11 @@ GLOBAL_LIST_INIT(blacklisted_pylon_turfs, typecacheof(list( last_corrupt = world.time + corrupt_delay + var/turf/tableturf = safepick(tableturfs) + if(tableturf) + for(var/obj/structure/table/table in tableturf) + qdel(table) + new /obj/structure/table/reinforced/cult/no_metal(tableturf) var/turf/T = safepick(validturfs) if(T) if(isfloorturf(T)) diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm index edf3391edb1..b90eb1d1df2 100644 --- a/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -566,6 +566,7 @@ GLOBAL_LIST_INIT(cult_recipes, list ( new /datum/stack_recipe/cult("forge (crafts shielded robes, flagellant's robes, and mirror shields)", /obj/structure/cult/functional/forge, 3, time = 4 SECONDS, one_per_turf = TRUE, on_floor = TRUE, cult_structure = TRUE), new /datum/stack_recipe/cult("archives (crafts zealot's blindfolds, shuttle curse orbs, veil shifters, reality sunderers, and blank tarot cards)", /obj/structure/cult/functional/archives, 3, time = 4 SECONDS, one_per_turf = TRUE, on_floor = TRUE, cult_structure = TRUE), new /datum/stack_recipe/cult("altar (crafts eldritch whetstones, construct shells, and flasks of unholy water)", /obj/structure/cult/functional/altar, 3, time = 4 SECONDS, one_per_turf = TRUE, on_floor = TRUE, cult_structure = TRUE), + new /datum/stack_recipe/cult("runed table frame", /obj/structure/table_frame/cult, 1, time = 0.5 SECONDS, one_per_turf = TRUE, cult_structure = TRUE), )) /obj/item/stack/sheet/runed_metal @@ -574,6 +575,7 @@ GLOBAL_LIST_INIT(cult_recipes, list ( icon_state = "sheet-runed" singular_name = "runed metal sheet" sheettype = "runed" + table_type = /obj/structure/table/reinforced/cult merge_type = /obj/item/stack/sheet/runed_metal /obj/item/stack/sheet/runed_metal/examine_more(mob/user) diff --git a/code/game/objects/structures/table_frames.dm b/code/game/objects/structures/table_frames.dm index e4f1036a225..013444b743d 100644 --- a/code/game/objects/structures/table_frames.dm +++ b/code/game/objects/structures/table_frames.dm @@ -129,3 +129,15 @@ var/previouscolor = color color = "#960000" animate(src, color = previouscolor, time = 8) + +/obj/structure/table_frame/cult + name = "runed metal table frame" + desc = "Four pieces of runed metal arranged in a square. It's cold to the touch." + icon_state = "cult_frame" + resistance_flags = FIRE_PROOF | ACID_PROOF + density = TRUE + anchored = TRUE + framestack = /obj/item/stack/sheet/runed_metal + framestackamount = 1 + construction_time = 2 SECONDS + restrict_table_types = list(/obj/item/stack/sheet/runed_metal = /obj/item/stack/sheet/runed_metal::table_type) diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm index 22efeb134a2..a8526182dbb 100644 --- a/code/game/objects/structures/tables_racks.dm +++ b/code/game/objects/structures/tables_racks.dm @@ -8,10 +8,7 @@ * Rack Parts */ -/* - * Tables - */ - +// MARK: Table /obj/structure/table name = "table" desc = "A square piece of metal standing on four metal legs. It can not move." @@ -105,7 +102,7 @@ flipped = TRUE /obj/structure/table/narsie_act() - new /obj/structure/table/wood(loc) + new /obj/structure/table/reinforced/cult(loc) qdel(src) /obj/structure/table/start_climb(mob/living/user) @@ -441,10 +438,7 @@ remove_atom_colour(FIXED_COLOUR_PRIORITY) REMOVE_TRAIT(src, TRAIT_OIL_SLICKED, "potion") -/* - * Glass Tables - */ - +// MARK: Glass tables /obj/structure/table/glass name = "glass table" desc = "Looks fragile. You should totally flip it. It is begging for it." @@ -543,11 +537,6 @@ debris -= AM qdel(src) -/obj/structure/table/glass/narsie_act() - color = NARSIE_WINDOW_COLOUR - for(var/obj/item/shard/S in debris) - S.color = NARSIE_WINDOW_COLOUR - /obj/structure/table/glass/plasma name = "plasma glass table" desc = "A table made from the blood, sweat, and tears of miners." @@ -640,9 +629,7 @@ buildstack = /obj/item/stack/sheet/plastitaniumglass max_integrity = 200 -/* - * Wooden tables - */ +// MARK: Wooden tables /obj/structure/table/wood name = "wooden table" desc = "Do not apply fire to this. Rumour says it burns easily." @@ -658,10 +645,6 @@ canSmoothWith = list(SMOOTH_GROUP_WOOD_TABLES) resistance_flags = FLAMMABLE -/obj/structure/table/wood/narsie_act(total_override = TRUE) - if(!total_override) - ..() - /// No specialties, Just a mapping object. /obj/structure/table/wood/poker name = "gambling table" @@ -672,13 +655,7 @@ flipped_table_icon_base = "poker" buildstack = /obj/item/stack/tile/carpet -/obj/structure/table/wood/poker/narsie_act() - ..(FALSE) - -/* - * Fancy Tables - */ - +// MARK: Fancy tables /obj/structure/table/wood/fancy name = "fancy table" desc = "A standard metal table frame covered with an amazingly fancy, patterned cloth." @@ -756,9 +733,7 @@ buildstack = /obj/item/stack/tile/carpet/royalblue icon = 'icons/obj/smooth_structures/tables/fancy/fancy_table_royalblue.dmi' -/* - * Reinforced tables - */ +// MARK: Reinforced tables /obj/structure/table/reinforced name = "reinforced table" desc = "A reinforced version of the four legged table." @@ -809,13 +784,33 @@ smoothing_groups = list(SMOOTH_GROUP_BRASS_TABLES) //Don't smooth with SMOOTH_GROUP_TABLES canSmoothWith = list(SMOOTH_GROUP_BRASS_TABLES) -/obj/structure/table/reinforced/brass/narsie_act() - take_damage(rand(15, 45), BRUTE) - if(src) //do we still exist? - var/previouscolor = color - color = "#960000" - animate(src, color = previouscolor, time = 8) +/obj/structure/table/reinforced/cult + name = "runed metal table" + desc = "A cold slab of metal engraved with indecipherable symbols. Studying them causes your head to pound." + icon = 'icons/obj/smooth_structures/tables/cult_table.dmi' + icon_state = "cult_table-0" + base_icon_state = "cult_table" + resistance_flags = FIRE_PROOF | ACID_PROOF + frame = /obj/structure/table_frame/cult + framestack = /obj/item/stack/sheet/runed_metal + buildstack = /obj/item/stack/sheet/runed_metal + framestackamount = 1 + smoothing_groups = list(SMOOTH_GROUP_BRASS_TABLES) + canSmoothWith = list(SMOOTH_GROUP_BRASS_TABLES) +/obj/structure/table/reinforced/cult/narsie_act() + return + +// Special variant created by pylons when converting stuff. Drops no materials so they can't be used as a runed metal farm. +/obj/structure/table/reinforced/cult/no_metal + name = "runed stone table" + desc = "A cold slab of stone engraved with indecipherable symbols. Studying them causes your head to pound." + +/obj/structure/table/reinforced/cult/no_metal/deconstruct(disassembled = TRUE, wrench_disassembly = 0) + visible_message("[src] suddenly crumbles to dust!") + qdel(src) + +// MARK: Wheeled table /obj/structure/table/tray name = "surgical instrument table" desc = "A small metal tray with wheels." @@ -889,14 +884,12 @@ to_chat(user, "It is held together by some screws and bolts.") /obj/structure/table/tray/flip() - return 0 + return FALSE /obj/structure/table/tray/narsie_act() - return 0 + return FALSE -/* - * Racks - */ +// MARK: Racks /obj/structure/rack name = "rack" desc = "Different from the Middle Ages version." diff --git a/icons/obj/smooth_structures/tables/cult_table.dmi b/icons/obj/smooth_structures/tables/cult_table.dmi new file mode 100644 index 00000000000..be217a82d58 Binary files /dev/null and b/icons/obj/smooth_structures/tables/cult_table.dmi differ diff --git a/icons/obj/structures.dmi b/icons/obj/structures.dmi index 547f1aaab8f..17b0d1dacb4 100644 Binary files a/icons/obj/structures.dmi and b/icons/obj/structures.dmi differ