diff --git a/code/__defines/color.dm b/code/__defines/color.dm index e7afdf9121..9c9e5c97b0 100644 --- a/code/__defines/color.dm +++ b/code/__defines/color.dm @@ -91,6 +91,7 @@ #define COLOR_DARK_TEAL "#2db5b5" #define COLOR_LIGHT_VIOLET "#e7bfff" #define COLOR_SAN_MARINO_BLUE "#4b75ab" +#define COLOR_FIRE_ORANGE "#ff9933" #define PIPE_COLOR_GREY "#808080" #define PIPE_COLOR_RED "#ff0000" @@ -168,4 +169,4 @@ #define COLOR_WEBHOOK_DEFAULT 0x8bbbd5 // "#8bbbd5" #define COLOR_WEBHOOK_GOOD 0x2ECC71 // "#2ECC71" #define COLOR_WEBHOOK_POOR 0xE67E22 // "#E67E22" -#define COLOR_WEBHOOK_BAD 0xE74C3C // "#E74C3C" \ No newline at end of file +#define COLOR_WEBHOOK_BAD 0xE74C3C // "#E74C3C" diff --git a/code/__defines/materials.dm b/code/__defines/materials.dm index 2f5f257001..98d888121b 100644 --- a/code/__defines/materials.dm +++ b/code/__defines/materials.dm @@ -14,7 +14,7 @@ #define MAT_WOOD "wood" #define MAT_LOG "log" #define MAT_SIFWOOD "alien wood" -#define MAT_SIFLOG "alien log" +#define MAT_SIFLOG "sifwood log" #define MAT_STEELHULL "steel hull" #define MAT_PLASTEEL "plasteel" #define MAT_PLASTEELHULL "plasteel hull" diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 53eb3d5fcf..249d0760b6 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -213,7 +213,9 @@ size = "bulky" if(ITEMSIZE_HUGE) size = "huge" - return ..(user, "", "It is a [size] item.") + . = ..(user, "", "It is a [size] item.") + if(drying_wetness > 0 && drying_wetness != initial(drying_wetness)) + . += "\The [src] is [get_dryness_text()]." /obj/item/attack_hand(mob/living/user as mob) if (!user) return diff --git a/code/game/objects/items/weapons/tools/weldingtool.dm b/code/game/objects/items/weapons/tools/weldingtool.dm index 9af46a1e5a..26d44c7e30 100644 --- a/code/game/objects/items/weapons/tools/weldingtool.dm +++ b/code/game/objects/items/weapons/tools/weldingtool.dm @@ -34,7 +34,7 @@ usesound = 'sound/items/Welder2.ogg' var/change_icons = TRUE var/flame_intensity = 2 //how powerful the emitted light is when used. - var/flame_color = "#FF9933" // What color the welder light emits when its on. Default is an orange-ish color. + var/flame_color = COLOR_FIRE_ORANGE // What color the welder light emits when its on. Default is an orange-ish color. var/eye_safety_modifier = 0 // Increasing this will make less eye protection needed to stop eye damage. IE at 1, sunglasses will fully protect. var/burned_fuel_for = 0 // Keeps track of how long the welder's been on, used to gradually empty the welder if left one, without RNG. var/always_process = FALSE // If true, keeps the welder on the process list even if it's off. Used for when it needs to regenerate fuel. diff --git a/code/game/objects/items_drying.dm b/code/game/objects/items_drying.dm index e8696ba11a..cf5552eac9 100644 --- a/code/game/objects/items_drying.dm +++ b/code/game/objects/items_drying.dm @@ -37,11 +37,12 @@ // Returns a string used in drying rack examine(). /obj/item/proc/get_dryness_text(var/obj/rack) - if(drying_wetness > 20) + var/moistness = drying_wetness / initial(drying_wetness) + if(moistness > 0.65) return "wet" - if(drying_wetness > 10) + if(moistness > 0.35) return "damp" - if(drying_wetness) + if(moistness) return "almost dry" return "dry" diff --git a/code/game/objects/structures/bonfire.dm b/code/game/objects/structures/bonfire.dm deleted file mode 100644 index 5f568ba0d1..0000000000 --- a/code/game/objects/structures/bonfire.dm +++ /dev/null @@ -1,454 +0,0 @@ -/obj/structure/bonfire - name = "bonfire" - desc = "For grilling, broiling, charring, smoking, heating, roasting, toasting, simmering, searing, melting, and occasionally burning things." - icon = 'icons/obj/structures.dmi' - icon_state = "bonfire" - density = FALSE - anchored = TRUE - buckle_lying = FALSE - layer = TURF_LAYER + 0.5 // We want it to layer underneath food and things on top of it. - - var/burning = FALSE - var/next_fuel_consumption = 0 // world.time of when next item in fuel list gets eatten to sustain the fire. - var/grill = FALSE - var/datum/material/material - var/set_temperature = T0C + 30 //K - var/heating_power = 80000 - var/datum/looping_sound/fire_crackles/fire_loop - var/datum/looping_sound/grill/grill_loop // Used when food is cooking on the fire. - -/obj/structure/bonfire/Initialize(var/ml, material_name) - . = ..() - fire_loop = new(list(src), FALSE) - grill_loop = new(list(src), FALSE) - if(!material_name) - material_name = MAT_WOOD - material = get_material_by_name("[material_name]") - if(!material) - qdel(src) - return - color = material.icon_colour - -/obj/structure/bonfire/sifwood/Destroy() - QDEL_NULL(fire_loop) - QDEL_NULL(grill_loop) - return ..() - -// Blue wood. -/obj/structure/bonfire/sifwood/Initialize(var/ml, material_name) - . = ..(ml, MAT_SIFWOOD) - -/obj/structure/bonfire/permanent/Initialize(var/ml, material_name) - . = ..() - ignite() - -/obj/structure/bonfire/permanent/sifwood/Initialize(var/ml, material_name) - . = ..(ml, MAT_SIFWOOD) - -/obj/structure/bonfire/attackby(obj/item/W, mob/user) - - // Place food on the grill. - if(istype(W, /obj/item/reagent_containers/food/snacks) && grill) - if(user.unEquip(W)) - W.dropInto(loc) - // Place it on top of the grill. - W.pixel_x = 0 - W.pixel_y = 12 - return TRUE - - if(istype(W, /obj/item/stack/rods) && !can_buckle && !grill) - var/obj/item/stack/rods/R = W - var/choice = input(user, "What would you like to construct?", "Bonfire") as null|anything in list("Stake","Grill") - if(!choice || user.incapacitated() || !Adjacent(user)) - return TRUE - switch(choice) - if("Stake") - R.use(1) - can_buckle = TRUE - buckle_require_restraints = TRUE - to_chat(user, "You add a rod to \the [src].") - var/mutable_appearance/rod_underlay = mutable_appearance('icons/obj/structures.dmi', "bonfire_rod") - rod_underlay.pixel_y = 16 - rod_underlay.appearance_flags = RESET_COLOR | PIXEL_SCALE | TILE_BOUND | KEEP_APART - underlays += rod_underlay - if("Grill") - R.use(1) - grill = TRUE - to_chat(user, "You add a grill to \the [src].") - update_icon() - return TRUE - - if(istype(W, /obj/item/stack/material/fuel/wood) || istype(W, /obj/item/stack/material/fuel/log) ) - add_fuel(W, user) - return TRUE - - if(W.is_hot()) - ignite() - return TRUE - - return ..() - -/obj/structure/bonfire/attack_hand(mob/user) - if(has_buckled_mobs()) - return ..() - - if(get_fuel_amount()) - remove_fuel(user) - else - dismantle(user) - - -/obj/structure/bonfire/proc/dismantle(mob/user) - if(!burning) - user.visible_message("[user] starts dismantling \the [src].", "You start dismantling \the [src].") - if(do_after(user, 5 SECONDS)) - for(var/i = 1 to 5) - material.place_dismantled_product(get_turf(src)) - user.visible_message("[user] dismantles down \the [src].", "You dismantle \the [src].") - qdel(src) - else - to_chat(user, "\The [src] is still burning. Extinguish it first if you want to dismantle it.") - -/obj/structure/bonfire/proc/get_fuel_amount() - var/F = 0 - for(var/A in contents) - if(istype(A, /obj/item/stack/material/fuel/wood)) - F += 0.5 - if(istype(A, /obj/item/stack/material/fuel/log)) - F += 1.0 - return F - -/obj/structure/bonfire/permanent/get_fuel_amount() - return 10 - -/obj/structure/bonfire/proc/remove_fuel(mob/user) - if(get_fuel_amount()) - var/atom/movable/AM = pop(contents) - AM.forceMove(get_turf(src)) - to_chat(user, "You take \the [AM] out of \the [src] before it has a chance to burn away.") - update_icon() - -/obj/structure/bonfire/permanent/remove_fuel(mob/user) - dismantle(user) - -/obj/structure/bonfire/proc/add_fuel(atom/movable/new_fuel, mob/user) - if(get_fuel_amount() >= 10) - to_chat(user, "\The [src] already has enough fuel!") - return FALSE - if(istype(new_fuel, /obj/item/stack/material/fuel/wood) || istype(new_fuel, /obj/item/stack/material/fuel/log) ) - var/obj/item/stack/F = new_fuel - var/obj/item/stack/S = F.split(1) - if(S) - S.forceMove(src) - to_chat(user, "You add \the [new_fuel] to \the [src].") - update_icon() - return TRUE - return FALSE - else - to_chat(user, "\The [src] needs raw wood to burn, \a [new_fuel] won't work.") - return FALSE - -/obj/structure/bonfire/permanent/add_fuel(mob/user) - to_chat(user, "\The [src] has plenty of fuel and doesn't need more fuel.") - -/obj/structure/bonfire/proc/consume_fuel(var/obj/item/stack/consumed_fuel) - if(!istype(consumed_fuel)) - qdel(consumed_fuel) // Don't know, don't care. - return FALSE - - if(istype(consumed_fuel, /obj/item/stack/material/fuel/log)) - next_fuel_consumption = world.time + 2 MINUTES - qdel(consumed_fuel) - update_icon() - return TRUE - - else if(istype(consumed_fuel, /obj/item/stack/material/fuel/wood)) // One log makes two planks of wood. - next_fuel_consumption = world.time + 1 MINUTE - qdel(consumed_fuel) - update_icon() - return TRUE - return FALSE - -/obj/structure/bonfire/permanent/consume_fuel() - return TRUE - -/obj/structure/bonfire/proc/check_oxygen() - var/datum/gas_mixture/G = loc.return_air() - if(G.gas["oxygen"] < 1) - return FALSE - return TRUE - - -/obj/structure/bonfire/proc/extinguish() - if(burning) - burning = FALSE - update_icon() - STOP_PROCESSING(SSobj, src) - visible_message("\The [src] stops burning.") - if(fire_loop?.started) - fire_loop.stop(src) - -/obj/structure/bonfire/proc/ignite() - if(!burning && get_fuel_amount()) - burning = TRUE - update_icon() - START_PROCESSING(SSobj, src) - visible_message("\The [src] starts burning!") - if(fire_loop && !fire_loop.started) - fire_loop.start(src) - -/obj/structure/bonfire/proc/burn() - var/turf/current_location = get_turf(src) - current_location.hotspot_expose(1000, 500) - for(var/A in current_location) - if(A == src) - continue - if(isobj(A)) - var/obj/O = A - O.fire_act(null, 1000, 500) - else if(isliving(A) && get_fuel_amount() > 4) - var/mob/living/L = A - L.adjust_fire_stacks(get_fuel_amount() / 4) - L.IgniteMob() - -/obj/structure/bonfire/update_icon() - cut_overlays() - if(burning) - var/state - switch(get_fuel_amount()) - if(0 to 4.5) - state = "bonfire_warm" - if(4.6 to 10) - state = "bonfire_hot" - var/image/I = image(icon, state) - I.appearance_flags = RESET_COLOR | KEEP_APART - add_overlay(I) - - if(has_buckled_mobs() && get_fuel_amount() >= 5) - I = image(icon, "bonfire_intense") - I.pixel_y = 13 - I.layer = MOB_LAYER + 0.1 - I.appearance_flags = RESET_COLOR | KEEP_APART - add_overlay(I) - - var/light_strength = max(get_fuel_amount() / 2, 2) - set_light(light_strength, light_strength, "#FF9933") - else - set_light(0) - - if(grill) - var/image/grille_image = image(icon, "bonfire_grill") - grille_image.appearance_flags = RESET_COLOR | KEEP_APART - add_overlay(grille_image) - -/obj/structure/bonfire/process() - if(!check_oxygen()) - extinguish() - return - if(world.time >= next_fuel_consumption) - if(!consume_fuel(pop(contents))) - extinguish() - return - - var/do_grill_sound = FALSE - if(grill) - for(var/obj/item/thing in view(2, src)) - if(thing.dry_out(src, 3 - get_dist(thing, src), (thing.loc == loc), silent = TRUE)) - do_grill_sound = TRUE - else - burn() - - if(grill_loop) - if(do_grill_sound) - if(!grill_loop.started) - grill_loop.start(src) - else - if(grill_loop.started) - grill_loop.stop(src) - - - if(!burning) - return - var/W = get_fuel_amount() - if(W < 5) - return - var/datum/gas_mixture/env = loc.return_air() - if(!env || abs(env.temperature - set_temperature) <= 0.1) - return - var/transfer_moles = 0.25 * env.total_moles - var/datum/gas_mixture/removed = env.remove(transfer_moles) - var/heat_transfer = removed?.get_thermal_energy_change(set_temperature) - if(heat_transfer > 0) - heat_transfer = min(heat_transfer, heating_power) - removed.add_thermal_energy(heat_transfer) - for(var/mob/living/L in view(3, src)) - L.add_modifier(/datum/modifier/endothermic, 10 SECONDS, null, TRUE) - env.merge(removed) - -/obj/structure/bonfire/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume) - ignite() - -/obj/structure/bonfire/water_act(amount) - if(prob(amount * 10)) - extinguish() - -/obj/structure/bonfire/post_buckle_mob(mob/living/M) - if(M.buckled == src) // Just buckled someone - M.pixel_y += 13 - else // Just unbuckled someone - M.pixel_y -= 13 - update_icon() - -/obj/structure/fireplace //more like a space heater than a bonfire. A cozier alternative to both. - name = "fireplace" - desc = "The sound of the crackling hearth reminds you of home." - icon = 'icons/obj/structures.dmi' - icon_state = "fireplace" - density = TRUE - anchored = TRUE - var/burning = FALSE - var/next_fuel_consumption = 0 - var/set_temperature = T0C + 20 //K - var/heating_power = 40000 - -/obj/structure/fireplace/attackby(obj/item/W, mob/user) - if(istype(W, /obj/item/stack/material/fuel/wood) || istype(W, /obj/item/stack/material/fuel/log) ) - add_fuel(W, user) - - else if(W.is_hot()) - ignite() - else - return ..() - -/obj/structure/fireplace/attack_hand(mob/user) - if(get_fuel_amount()) - remove_fuel(user) - -/obj/structure/fireplace/proc/get_fuel_amount() - var/F = 0 - for(var/A in contents) - if(istype(A, /obj/item/stack/material/fuel/wood)) - F += 0.5 - if(istype(A, /obj/item/stack/material/fuel/log)) - F += 1.0 - return F - -/obj/structure/fireplace/proc/remove_fuel(mob/user) - if(get_fuel_amount()) - var/atom/movable/AM = pop(contents) - AM.forceMove(get_turf(src)) - to_chat(user, "You take \the [AM] out of \the [src] before it has a chance to burn away.") - update_icon() - -/obj/structure/fireplace/proc/add_fuel(atom/movable/new_fuel, mob/user) - if(get_fuel_amount() >= 10) - to_chat(user, "\The [src] already has enough fuel!") - return FALSE - if(istype(new_fuel, /obj/item/stack/material/fuel/wood) || istype(new_fuel, /obj/item/stack/material/fuel/log) ) - var/obj/item/stack/F = new_fuel - var/obj/item/stack/S = F.split(1) - if(S) - S.forceMove(src) - to_chat(user, "You add \the [new_fuel] to \the [src].") - update_icon() - return TRUE - return FALSE - else - to_chat(user, "\The [src] needs raw wood to burn, \a [new_fuel] won't work.") - return FALSE - -/obj/structure/fireplace/proc/consume_fuel(var/obj/item/stack/consumed_fuel) - - if(!istype(consumed_fuel, /obj/item/stack/material/fuel)) - qdel(consumed_fuel) // Don't know, don't care. - return FALSE - - var/obj/item/stack/material/fuel/fuel_stack = consumed_fuel - next_fuel_consumption = world.time + max(1 MINUTE, fuel_stack + bonfire_fuel_time) - fuel_stack.use(1) - update_icon() - return TRUE - - -/obj/structure/fireplace/proc/check_oxygen() - var/datum/gas_mixture/G = loc.return_air() - if(G.gas["oxygen"] < 1) - return FALSE - return TRUE - -/obj/structure/fireplace/proc/extinguish() - if(burning) - burning = FALSE - update_icon() - STOP_PROCESSING(SSobj, src) - visible_message("\The [src] stops burning.") - -/obj/structure/fireplace/proc/ignite() - if(!burning && get_fuel_amount()) - burning = TRUE - update_icon() - START_PROCESSING(SSobj, src) - visible_message("\The [src] starts burning!") - -/obj/structure/fireplace/proc/burn() - var/turf/current_location = get_turf(src) - current_location.hotspot_expose(1000, 500) - for(var/A in current_location) - if(A == src) - continue - if(isobj(A)) - var/obj/O = A - O.fire_act(null, 1000, 500) - -/obj/structure/fireplace/update_icon() - cut_overlays() - if(burning) - var/state - switch(get_fuel_amount()) - if(0 to 3.5) - state = "fireplace_warm" - if(3.6 to 6.5) - state = "fireplace_hot" - if(6.6 to 10) - state = "fireplace_intense" //don't need to throw a corpse inside to make it burn hotter. - var/image/I = image(icon, state) - I.appearance_flags = RESET_COLOR | KEEP_APART - add_overlay(I) - - var/light_strength = max(get_fuel_amount() / 2, 2) - set_light(light_strength, light_strength, "#FF9933") - else - set_light(0) - -/obj/structure/fireplace/process() - if(!check_oxygen()) - extinguish() - return - if(world.time >= next_fuel_consumption) - if(!consume_fuel(pop(contents))) - extinguish() - return - - if(burning) - var/W = get_fuel_amount() - if(W >= 5) - var/datum/gas_mixture/env = loc.return_air() - if(env && abs(env.temperature - set_temperature) > 0.1) - var/transfer_moles = 0.25 * env.total_moles - var/datum/gas_mixture/removed = env.remove(transfer_moles) - - if(removed) - var/heat_transfer = removed.get_thermal_energy_change(set_temperature) - if(heat_transfer > 0) - heat_transfer = min(heat_transfer , heating_power) - - removed.add_thermal_energy(heat_transfer) - - env.merge(removed) - -/obj/structure/fireplace/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume) - ignite() - -/obj/structure/fireplace/water_act(amount) - if(prob(amount * 10)) - extinguish() diff --git a/code/game/objects/structures/stool_bed_chair_nest/chairs.dm b/code/game/objects/structures/stool_bed_chair_nest/chairs.dm index e1c4e314e9..e3106676a4 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/chairs.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/chairs.dm @@ -603,3 +603,10 @@ /obj/structure/bed/chair/sofa/orange/corner icon_state = "sofacorner" + +// Sivian wood subtype for mapping. +/obj/structure/bed/chair/sifwood/Initialize(var/ml, var/newmaterial) + . = ..(ml, MAT_SIFWOOD) + +/obj/structure/bed/chair/sifwood/wings + icon_state = "wooden_chair_wings" diff --git a/code/game/objects/structures/wood_fire.dm b/code/game/objects/structures/wood_fire.dm new file mode 100644 index 0000000000..f9b7dfb33f --- /dev/null +++ b/code/game/objects/structures/wood_fire.dm @@ -0,0 +1,389 @@ +/obj/structure/wood_fire // abstract type, do not use + + icon = 'icons/obj/wood_fire.dmi' + density = FALSE + anchored = TRUE + buckle_lying = FALSE + layer = TURF_LAYER + 0.5 // We want it to layer underneath food and things on top of it. + + var/base_icon_state = "bonfire" + var/can_dismantle = TRUE + var/burning = FALSE + var/next_fuel_consumption = 0 // world.time of when next item in fuel list gets eatten to sustain the fire. + var/grill = FALSE + var/set_temperature = T0C + 30 //K + var/heating_power = 80000 + var/datum/looping_sound/fire_crackles/fire_loop + var/datum/looping_sound/grill/grill_loop // Used when food is cooking on the fire. + +/obj/structure/wood_fire/Initialize() + . = ..() + fire_loop = new(list(src), FALSE) + grill_loop = new(list(src), FALSE) + +/obj/structure/wood_fire/Destroy() + QDEL_NULL(fire_loop) + QDEL_NULL(grill_loop) + return ..() + +/obj/structure/wood_fire/proc/get_upgrade_options() + if(!grill) + LAZYADD(., "Grill") + else if(!can_buckle) + LAZYADD(., "Stake") + +/obj/structure/wood_fire/proc/try_build_feature(var/mob/user, var/obj/item/stack/rods/rods) + if(!istype(rods)) + return FALSE + + var/list/upgrade_options = get_upgrade_options() + var/choice + if(!length(upgrade_options)) + return FALSE + + if(length(upgrade_options) == 1) + choice = upgrade_options[1] + else + choice = input(user, "What would you like to construct?", "Constructing Grill") as null|anything in upgrade_options + if(QDELETED(rods) || rods.get_amount() < 1 || user.incapacitated() || !Adjacent(user)) + return TRUE + + switch(choice) + if("Stake") + rods.use(1) + can_buckle = TRUE + buckle_require_restraints = TRUE + to_chat(user, SPAN_NOTICE("You add a rod to \the [src].")) + if("Grill") + rods.use(1) + grill = TRUE + to_chat(user, SPAN_NOTICE("You add a grill to \the [src].")) + else + return TRUE + update_icon() + return TRUE + +/obj/structure/wood_fire/attackby(obj/item/W, mob/user) + + // Place food on the grill. + if(istype(W, /obj/item/reagent_containers/food/snacks) && grill) + if(user.unEquip(W)) + W.dropInto(loc) + // Place it on top of the grill. + W.pixel_x = 0 + W.pixel_y = 12 + return TRUE + + if(try_build_feature(user, W)) + return TRUE + + if(istype(W, /obj/item/stack/material/fuel)) + add_fuel(W, user) + return TRUE + + if(W.is_hot()) + ignite() + return TRUE + + return ..() + +/obj/structure/wood_fire/attack_hand(mob/user) + if(!has_buckled_mobs()) + if(get_fuel_amount()) + remove_fuel(user) + return TRUE + if(can_dismantle) + dismantle(user) + return TRUE + return ..() + +/obj/structure/wood_fire/proc/dismantle(mob/user) + if(!burning) + user.visible_message("[user] starts dismantling \the [src].", "You start dismantling \the [src].") + if(do_after(user, 5 SECONDS)) + for(var/obj/item/thing in contents) + thing.dropInto(loc) + user.visible_message("[user] dismantles down \the [src].", "You dismantle \the [src].") + qdel(src) + else + to_chat(user, SPAN_WARNING("\The [src] is still burning. Extinguish it first if you want to dismantle it.")) + +/obj/structure/wood_fire/proc/get_fuel_amount() + . = 0 + for(var/obj/item/stack/material/fuel/fuel in contents) + . += (fuel.amount * fuel.bonfire_fuel_time) / (2 MINUTES) + +/obj/structure/wood_fire/proc/remove_fuel(mob/user) + if(!get_fuel_amount()) + return + var/atom/movable/AM = pop(contents) + if(!istype(AM)) + return + AM.forceMove(get_turf(src)) + to_chat(user, SPAN_NOTICE("You take \the [AM] out of \the [src] before it has a chance to burn away.")) + update_icon() + +/obj/structure/wood_fire/proc/add_fuel(atom/movable/new_fuel, mob/user) + if(get_fuel_amount() >= 10) + to_chat(user, SPAN_WARNING("\The [src] already has enough fuel!")) + return FALSE + if(istype(new_fuel, /obj/item/stack/material/fuel/wood) || istype(new_fuel, /obj/item/stack/material/fuel/log) ) + var/obj/item/stack/F = new_fuel + var/obj/item/stack/S = F.split(1) + if(S) + S.forceMove(src) + to_chat(user, SPAN_WARNING("You add \the [new_fuel] to \the [src].")) + update_icon() + return TRUE + return FALSE + else + to_chat(user, SPAN_WARNING("\The [src] needs raw wood to burn, \a [new_fuel] won't work.")) + return FALSE + +/obj/structure/wood_fire/proc/consume_fuel() + var/obj/item/stack/consumed_fuel + for(var/atom/movable/thing in contents) + if(!thing.simulated) + continue + consumed_fuel = thing + break + if(!istype(consumed_fuel, /obj/item/stack/material/fuel)) + if(consumed_fuel) + qdel(consumed_fuel) // Don't know, don't care. + return FALSE + var/obj/item/stack/material/fuel/fuel_stack = consumed_fuel + next_fuel_consumption = world.time + max(1 MINUTE, fuel_stack.bonfire_fuel_time) + fuel_stack.use(1) + update_icon() + return TRUE + +/obj/structure/wood_fire/proc/extinguish() + if(!burning) + return + burning = FALSE + update_icon() + STOP_PROCESSING(SSobj, src) + visible_message(SPAN_NOTICE("\The [src] stops burning.")) + if(fire_loop?.started) + fire_loop.stop(src) + +/obj/structure/wood_fire/proc/ignite() + if(burning || !get_fuel_amount()) + return + burning = TRUE + update_icon() + START_PROCESSING(SSobj, src) + visible_message(SPAN_NOTICE("\The [src] starts burning!")) + if(fire_loop && !fire_loop.started) + fire_loop.start(src) + +/obj/structure/wood_fire/proc/get_fuel_overlay(var/fuel_amount) + if(fuel_amount) + var/image/I = image(icon, "[base_icon_state]_fuelled") + I.appearance_flags = RESET_COLOR | KEEP_APART + var/obj/item/stack/material/fuel/fuel = locate() in contents + I.color = fuel?.material?.icon_colour + return I + +/obj/structure/wood_fire/update_icon() + + cut_overlays() + + // Draw our fuel overlay and colour it based on fuel material. + var/fuel_amount = get_fuel_amount() + var/fuel_overlay = get_fuel_overlay(fuel_amount) + if(fuel_overlay) + if(islist(fuel_overlay)) + for(var/overlay in fuel_overlay) + add_overlay(overlay) + else + add_overlay(fuel_overlay) + + if(burning) + + // Draw our actual fire icon. + var/fire_state + if(fuel_amount >= 10) + fire_state = "[base_icon_state]_intense" + else if(fuel_amount >= 5) + fire_state = "[base_icon_state]_hot" + else + fire_state = "[base_icon_state]_warm" + var/image/I = image(icon, fire_state) + I.appearance_flags = RESET_COLOR | KEEP_APART + add_overlay(I) + + // If we're capable of burning buckled mobs (usually via a stake), + // draw a second intense fire overlay and offset it to cover the mob. + if(fire_is_burning_mobs()) + I = image(icon, "[base_icon_state]_intense") + I.pixel_y = 13 + I.layer = MOB_LAYER + 0.1 + I.appearance_flags = RESET_COLOR | KEEP_APART + add_overlay(I) + + // Update our lights. + var/light_strength = max(fuel_amount / 2, 2) + set_light(light_strength, light_strength, COLOR_FIRE_ORANGE) + else + set_light(0) + + if(grill) + var/image/grille_image = image(icon, "[base_icon_state]_grill") + grille_image.appearance_flags = RESET_COLOR | KEEP_APART + add_overlay(grille_image) + + underlays.Cut() + if(can_buckle) + var/mutable_appearance/rod_underlay = mutable_appearance('icons/obj/structures.dmi', "[base_icon_state]_rod") + rod_underlay.pixel_y = 16 + rod_underlay.appearance_flags = RESET_COLOR | PIXEL_SCALE | TILE_BOUND | KEEP_APART + underlays += rod_underlay + + +/obj/structure/wood_fire/proc/fire_is_burning_mobs() + return has_buckled_mobs() && get_fuel_amount() >= 5 + +/obj/structure/wood_fire/process() + + // Are we even alight? + if(!burning) + return + + // Should we even be alight? + var/datum/gas_mixture/env = loc?.return_air() + if(env?.gas["oxygen"] < 1 || (world.time >= next_fuel_consumption && !consume_fuel())) + extinguish() + return + + // Ignite anything sitting on the same turf as us. + if(isturf(loc)) + var/turf/current_turf = loc + current_turf.hotspot_expose(1000, 500) + + // See if we can dry out anything around us, or cook any food. + var/grilling = FALSE + for(var/obj/item/thing in view(2, src)) + var/on_top_of_fire = thing.loc == loc + if(on_top_of_fire) + if(!grilling && istype(thing, /obj/item/reagent_containers/food/snacks)) + grilling = TRUE + if(!grill) + thing.fire_act(null, 1000, 500) + continue + thing.dry_out(src, max(1, 3 - get_dist(thing, src)), on_top_of_fire) + + // If we're cooking food, play a food cooking souond. + if(grilling) + if(grill_loop) + if(locate(/obj/item/reagent_containers/food/snacks) in contents) + if(!grill_loop.started) + grill_loop.start(src) + else + if(grill_loop.started) + grill_loop.stop(src) + + // If we're low enough, don't burn anything or put out + // any significant heat, they need to refuel the fire. + var/fuel_amount = get_fuel_amount() + if(fuel_amount < 5) + return + + // Burn anything standing on our turf. + var/adj_fuel_amount = fuel_amount / 4 + for(var/mob/living/victim in loc) + victim.adjust_fire_stacks(adj_fuel_amount / 4) + victim.IgniteMob() + + // Heat up our environment. + if(!env || abs(env.temperature - set_temperature) <= 0.1) + return + var/transfer_moles = 0.25 * env.total_moles + var/datum/gas_mixture/removed = env.remove(transfer_moles) + var/heat_transfer = removed?.get_thermal_energy_change(set_temperature) + if(heat_transfer > 0) + heat_transfer = min(heat_transfer, heating_power) + removed.add_thermal_energy(heat_transfer) + for(var/mob/living/L in view(3, src)) + L.add_modifier(/datum/modifier/endothermic, 10 SECONDS, null, TRUE) + env.merge(removed) + +/obj/structure/wood_fire/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume) + ignite() + +/obj/structure/wood_fire/water_act(amount) + if(prob(amount * 10)) + extinguish() + +/obj/structure/wood_fire/post_buckle_mob(mob/living/M) + if(M.buckled == src) // Just buckled someone + M.pixel_y += 13 + else // Just unbuckled someone + M.pixel_y -= 13 + update_icon() + +// A freestanding fire for cooking food on. +/obj/structure/wood_fire/bonfire + name = "bonfire" + desc = "For grilling, broiling, charring, smoking, heating, roasting, toasting, simmering, searing, melting, and occasionally burning things." + icon_state = "bonfire" + +// Pre-fuelled for recipes/maps. +/obj/structure/wood_fire/bonfire/fuelled/Initialize() + . = ..() + for(var/i = 1 to 5) + new /obj/item/stack/material/fuel/log(src) + update_icon() + +// Blue wood. +/obj/structure/wood_fire/bonfire/sifwood/Initialize() + . = ..() + for(var/i = 1 to 5) + new /obj/item/stack/material/fuel/log/sif(src) + update_icon() + +// A smaller bonfire. +/obj/structure/wood_fire/campfire + name = "campfire" + desc = "A small firepit for camping. Did anyone bring the marshmallows?" + icon_state = "campfire" + base_icon_state = "campfire" + can_dismantle = FALSE + can_buckle = FALSE + set_temperature = T0C + 20 //K + heating_power = 40000 + +/obj/structure/wood_fire/campfire/get_upgrade_options() + if(!grill) + return list("Grill") + +// more like a space heater than a bonfire. A cozier alternative to both. +/obj/structure/wood_fire/fireplace + name = "fireplace" + desc = "The sound of the crackling hearth reminds you of home." + icon_state = "fireplace" + base_icon_state = "fireplace" + density = TRUE + set_temperature = T0C + 20 //K + heating_power = 40000 + can_dismantle = FALSE + can_buckle = FALSE + grill = TRUE + +/obj/structure/wood_fire/fireplace/get_upgrade_options() + if(!grill) + return list("Grill") + +/obj/structure/wood_fire/fireplace/stove + name = "stove" + desc = "A rustic, soot-stained wood-fired stove. Better check your CO detector." + grill = FALSE + icon_state = "stove" + base_icon_state = "stove" + +/obj/structure/wood_fire/fireplace/stove/get_upgrade_options() + return + +/obj/structure/wood_fire/fireplace/stove/get_fuel_overlay(var/fuel_amount) + . = ..() + LAZYADD(., "[base_icon_state]_cover") diff --git a/code/modules/ai/ai_holder_debug.dm b/code/modules/ai/ai_holder_debug.dm index 88b604b67a..bad6415714 100644 --- a/code/modules/ai/ai_holder_debug.dm +++ b/code/modules/ai/ai_holder_debug.dm @@ -49,21 +49,21 @@ var/new_color = null switch(stance) if(STANCE_SLEEP) - new_color = "#FFFFFF" // White + new_color = "#ffffff" // White if(STANCE_IDLE) - new_color = "#00FF00" // Green + new_color = "#00ff00" // Green if(STANCE_ALERT) - new_color = "#FFFF00" // Yellow + new_color = "#ffff00" // Yellow if(STANCE_APPROACH) - new_color = "#FF9933" // Orange + new_color = "#ff9933" // Orange if(STANCE_FIGHT) - new_color = "#FF0000" // Red + new_color = "#ff0000" // Red if(STANCE_MOVE) - new_color = "#0000FF" // Blue + new_color = "#0000ff" // Blue if(STANCE_REPOSITION) - new_color = "#FF00FF" // Purple + new_color = "#ff00ff" // Purple if(STANCE_FOLLOW) - new_color = "#00FFFF" // Cyan + new_color = "#00ffff" // Cyan if(STANCE_FLEE) new_color = "#666666" // Grey if(STANCE_DISABLED) diff --git a/code/modules/effects/vfx/smoke.dm b/code/modules/effects/vfx/smoke.dm index 85a42a3e70..0741bfa496 100644 --- a/code/modules/effects/vfx/smoke.dm +++ b/code/modules/effects/vfx/smoke.dm @@ -90,11 +90,11 @@ /obj/effect/vfx/smoke/bad/burntfood color = "#000000" time_to_live = 600 - + /obj/effect/vfx/smoke/bad/burntfood/process() for(var/mob/living/L in get_turf(src)) affect(L) - + /obj/effect/vfx/smoke/bad/burntfood/affect(var/mob/living/L) // This stuff is extra-vile. if (!..()) return 0 @@ -132,8 +132,8 @@ /obj/effect/vfx/smoke/elemental/fire name = "burning cloud" desc = "A cloud of something that is on fire." - color = "#FF9933" - light_color = "#FF0000" + color = COLOR_FIRE_ORANGE + light_color = "#ff0000" light_range = 2 light_power = 5 @@ -215,7 +215,7 @@ /datum/effect_system/smoke_spread/bad smoke_type = /obj/effect/vfx/smoke/bad - + /datum/effect_system/smoke_spread/bad/burntfood smoke_type = /obj/effect/vfx/smoke/bad/burntfood @@ -232,4 +232,4 @@ smoke_type = /obj/effect/vfx/smoke/elemental/shock /datum/effect_system/smoke_spread/mist - smoke_type = /obj/effect/vfx/smoke/elemental/mist \ No newline at end of file + smoke_type = /obj/effect/vfx/smoke/elemental/mist diff --git a/code/modules/food/food/condiment.dm b/code/modules/food/food/condiment.dm index 801707af55..4bc39bea00 100644 --- a/code/modules/food/food/condiment.dm +++ b/code/modules/food/food/condiment.dm @@ -482,6 +482,16 @@ desc = "An artisanal sack of flour. Classy!" icon_state = "flour_bag" +/obj/item/reagent_containers/food/condiment/carton/rice + name = "rice sack" + desc = "An artisanal sack of rice. Rustic!" + icon_state = "flour_bag" + +/obj/item/reagent_containers/food/condiment/carton/rice/Initialize() + . = ..() + reagents.add_reagent("rice", 200) + randpixel_xy() + /obj/item/reagent_containers/food/condiment/carton/sugar name = "sugar carton" desc = "A big carton of sugar. Sweet!" diff --git a/code/modules/food/food/jerky.dm b/code/modules/food/food/jerky.dm index d2a0a59a3a..6d589fe3b5 100644 --- a/code/modules/food/food/jerky.dm +++ b/code/modules/food/food/jerky.dm @@ -3,6 +3,7 @@ icon = 'icons/obj/food_jerky.dmi' bitesize = 2 w_class = ITEMSIZE_TINY + dry = TRUE /obj/item/reagent_containers/food/snacks/jerky/fish name = "dried fish" @@ -44,7 +45,7 @@ /obj/item/reagent_containers/food/snacks/jerky/spider name = "dried spider meat" desc = "A piece of green, stringy dried meat, full of tubes. It smells faintly of acid." - icon_state = "spiderjerky" + icon_state = "spiderjerky_charred" /obj/item/reagent_containers/food/snacks/jerky/spider/get_drying_state() return "meat_dried" @@ -53,6 +54,9 @@ . = ..() reagents.add_reagent("protein", 5) +/obj/item/reagent_containers/food/snacks/jerky/spider/poison + icon_state = "spiderjerky" + /obj/item/reagent_containers/food/snacks/jerky/spider/poison/Initialize() . = ..() reagents.add_reagent("spidertoxin", 3) diff --git a/code/modules/food/food/snacks.dm b/code/modules/food/food/snacks.dm index 85e6c963c5..e9a1930280 100644 --- a/code/modules/food/food/snacks.dm +++ b/code/modules/food/food/snacks.dm @@ -47,6 +47,16 @@ /obj/item/reagent_containers/food/snacks/is_dryable() return !dry +/obj/item/reagent_containers/food/snacks/get_dryness_text(var/obj/rack) + var/moistness = drying_wetness / initial(drying_wetness) + if(moistness > 0.65) + return "fresh" + if(moistness > 0.35) + return "somewhat dried" + if(moistness) + return "almost dried" + return "dehydrated" + /obj/item/reagent_containers/food/snacks/dry_out(var/obj/rack, var/drying_power = 1, var/fire_exposed = FALSE, var/silent = FALSE) // If it's a direct fire, cook the food instead. diff --git a/code/modules/materials/fifty_spawner_mats.dm b/code/modules/materials/fifty_spawner_mats.dm index 09803bb1be..ca8682a0d9 100644 --- a/code/modules/materials/fifty_spawner_mats.dm +++ b/code/modules/materials/fifty_spawner_mats.dm @@ -101,7 +101,7 @@ type_to_spawn = /obj/item/stack/material/fuel/wood /obj/fiftyspawner/sifwood - name = "stack of alien wood" + name = "stack of sifwood wood" type_to_spawn = /obj/item/stack/material/fuel/wood/sif /obj/fiftyspawner/log @@ -109,7 +109,7 @@ type_to_spawn = /obj/item/stack/material/fuel/log /obj/fiftyspawner/log/sif - name = "stack of alien logs" + name = "stack of sifwood logs" type_to_spawn = /obj/item/stack/material/fuel/log/sif /obj/fiftyspawner/cloth diff --git a/code/modules/materials/materials/organic/wood.dm b/code/modules/materials/materials/organic/wood.dm index 847649a975..62c31b0d56 100644 --- a/code/modules/materials/materials/organic/wood.dm +++ b/code/modules/materials/materials/organic/wood.dm @@ -72,10 +72,11 @@ sheet_plural_name = "pile" pass_stack_colors = TRUE supply_conversion_value = 1 + var/bonfire_type = /obj/structure/wood_fire/bonfire/fuelled /datum/material/wood/log/generate_recipes() recipes = list( - new /datum/stack_recipe("bonfire", /obj/structure/bonfire, 5, time = 50, supplied_material = "[name]", pass_stack_color = TRUE, recycle_material = "[name]") + new /datum/stack_recipe("bonfire", bonfire_type, 5, time = 5 SECONDS) ) /datum/material/wood/log/sif @@ -83,3 +84,4 @@ icon_colour = "#0099cc" // Cyan-ish stack_origin_tech = list(TECH_MATERIAL = 2, TECH_BIO = 2) stack_type = /obj/item/stack/material/fuel/log/sif + bonfire_type = /obj/structure/wood_fire/bonfire/sifwood diff --git a/code/modules/materials/sheets/organic/tanning/tanning_rack.dm b/code/modules/materials/sheets/organic/tanning/tanning_rack.dm index 2997277443..5ada3e6298 100644 --- a/code/modules/materials/sheets/organic/tanning/tanning_rack.dm +++ b/code/modules/materials/sheets/organic/tanning/tanning_rack.dm @@ -36,15 +36,12 @@ if(drying_state) add_overlay(drying_state) -/obj/structure/drying_rack/attackby(var/atom/A, var/mob/user) - if(istype(A, /obj/item/stack/wetleather)) - if(!drying) // If not drying anything, start drying the thing - if(user.unEquip(A, target = src)) - drying = A - else // Drying something, add if possible - var/obj/item/stack/wetleather/W = A - W.transfer_to(drying, W.amount, TRUE) - update_icon() +/obj/structure/drying_rack/attackby(var/obj/item/I, var/mob/user) + if(istype(I) && I.is_dryable() && !istype(I, /obj/item/stack/material/fuel)) + if(user.unEquip(I)) + I.forceMove(src) + drying = I + update_icon() return TRUE return ..() diff --git a/code/modules/materials/sheets/organic/wood.dm b/code/modules/materials/sheets/organic/wood.dm index 9ba91418ea..7e8def218d 100644 --- a/code/modules/materials/sheets/organic/wood.dm +++ b/code/modules/materials/sheets/organic/wood.dm @@ -1,6 +1,16 @@ /obj/item/stack/material/fuel // abstract type, do not use var/bonfire_fuel_time = 1 MINUTE +/obj/item/stack/material/fuel/get_dryness_text(var/obj/rack) + var/moistness = drying_wetness / initial(drying_wetness) + if(moistness > 0.65) + return "fresh-cut" + if(moistness > 0.35) + return "somewhat dried" + if(moistness) + return "almost dried" + return "dried" + /obj/item/stack/material/fuel/wood name = "wooden plank" icon_state = "sheet-wood" @@ -27,6 +37,10 @@ drying_wetness = null bonfire_fuel_time = 6 MINUTES +/obj/item/stack/material/fuel/wood/dried/update_strings() + . = ..() + name = "dried [name]" + /obj/item/stack/material/fuel/wood/dried/sif name = "dried sifwood plank" color = "#0099cc" @@ -62,6 +76,10 @@ plank_type = /obj/item/stack/material/fuel/wood/dried bonfire_fuel_time = 8 MINUTES +/obj/item/stack/material/fuel/log/dried/update_strings() + . = ..() + name = "dried [name]" + /obj/item/stack/material/fuel/log/dried/sif name = "dried sifwood log" default_type = MAT_SIFLOG diff --git a/code/modules/mining/mine_items.dm b/code/modules/mining/mine_items.dm index dc604cbb69..dbf9e83967 100644 --- a/code/modules/mining/mine_items.dm +++ b/code/modules/mining/mine_items.dm @@ -5,7 +5,7 @@ icon_state = "lantern" desc = "A mining lantern." brightness_on = 6 // luminosity when on - light_color = "FF9933" // A slight yellow/orange color. + light_color = COLOR_FIRE_ORANGE /*****************************Pickaxe********************************/ diff --git a/code/modules/mob/living/life.dm b/code/modules/mob/living/life.dm index d76222128b..2f891699b7 100644 --- a/code/modules/mob/living/life.dm +++ b/code/modules/mob/living/life.dm @@ -247,7 +247,7 @@ return TRUE else if(on_fire) - set_light(min(round(fire_stacks), 3), round(fire_stacks), l_color = "#FF9933") + set_light(min(round(fire_stacks), 3), round(fire_stacks), l_color = COLOR_FIRE_ORANGE) return TRUE else if(glow_toggle) diff --git a/code/modules/planet/sif.dm b/code/modules/planet/sif.dm index 0899922b75..d099a40626 100644 --- a/code/modules/planet/sif.dm +++ b/code/modules/planet/sif.dm @@ -59,7 +59,7 @@ var/global/datum/planet/sif/planet_sif = null low_color = "#CC3300" high_brightness = 0.9 - high_color = "#FF9933" + high_color = COLOR_FIRE_ORANGE min = 0.50 if(0.70 to 1.00) // Noon diff --git a/icons/obj/food_jerky.dmi b/icons/obj/food_jerky.dmi index 88e9f60f90..17d64900cc 100644 Binary files a/icons/obj/food_jerky.dmi and b/icons/obj/food_jerky.dmi differ diff --git a/icons/obj/structures.dmi b/icons/obj/structures.dmi index c6810e9fb4..fdcd3c877f 100644 Binary files a/icons/obj/structures.dmi and b/icons/obj/structures.dmi differ diff --git a/icons/obj/wood_fire.dmi b/icons/obj/wood_fire.dmi new file mode 100644 index 0000000000..d859afc6a6 Binary files /dev/null and b/icons/obj/wood_fire.dmi differ diff --git a/maps/cynosure/cynosure-2.dmm b/maps/cynosure/cynosure-2.dmm index 7aabe5fd98..6ff2b05215 100644 --- a/maps/cynosure/cynosure-2.dmm +++ b/maps/cynosure/cynosure-2.dmm @@ -21249,6 +21249,10 @@ initial_flooring = /decl/flooring/tiling/asteroidfloor }, /area/surface/station/garage) +"jJj" = ( +/obj/structure/wood_fire/campfire, +/turf/simulated/floor/outdoors/dirt/sif, +/area/surface/outside/path/plains) "jJq" = ( /obj/machinery/computer/operating{ dir = 8 @@ -74557,7 +74561,7 @@ fyc fyc fyc fyc -fyc +jJj fyc fyc vwy diff --git a/maps/cynosure/cynosure-7.dmm b/maps/cynosure/cynosure-7.dmm index 645a327637..4cdd454d05 100644 --- a/maps/cynosure/cynosure-7.dmm +++ b/maps/cynosure/cynosure-7.dmm @@ -10,10 +10,8 @@ /turf/unsimulated/wall/planetary/sif, /area/surface/outside/wilderness/mountains) "bW" = ( -/obj/effect/landmark{ - name = "JoinLateWilderness" - }, -/obj/structure/bed, +/obj/structure/wood_fire/fireplace/stove, +/obj/fiftyspawner/log/sif, /turf/simulated/floor/wood/sif, /area/surface/wilderness/shack) "ct" = ( @@ -29,6 +27,10 @@ /obj/vehicle/boat/sifwood, /turf/simulated/floor/outdoors/mask, /area/surface/outside/wilderness/normal) +"eu" = ( +/obj/structure/simple_door/sifwood, +/turf/simulated/floor/wood/sif, +/area/surface/outside/wilderness/normal) "eZ" = ( /turf/simulated/wall/sifwood, /area/surface/wilderness/shack) @@ -42,6 +44,10 @@ /obj/item/stack/medical/splint, /turf/simulated/floor/wood/sif, /area/surface/wilderness/shack) +"fQ" = ( +/obj/structure/kitchenspike, +/turf/simulated/floor/outdoors/dirt/sif/planetuse, +/area/surface/outside/wilderness/normal) "gl" = ( /obj/structure/cliff/automatic{ dir = 9 @@ -54,6 +60,16 @@ }, /turf/simulated/floor/outdoors/mask, /area/surface/outside/wilderness/mountains) +"ic" = ( +/obj/structure/closet/cabinet, +/obj/item/clothing/suit/storage/hooded/wintercoat, +/obj/item/clothing/shoes/boots/winter, +/obj/item/clothing/under/color/grey, +/obj/item/clothing/mask/gas, +/obj/item/tank/emergency/oxygen/double, +/obj/item/melee/umbrella/random, +/turf/simulated/floor/wood/sif, +/area/surface/wilderness/shack) "id" = ( /turf/simulated/wall/sifwood, /area/surface/outside/path/wilderness) @@ -118,7 +134,8 @@ /turf/simulated/floor/outdoors/mask, /area/surface/outside/wilderness/mountains) "qr" = ( -/obj/structure/kitchenspike, +/obj/item/storage/box/matches, +/obj/structure/table/sifwoodentable, /turf/simulated/floor/wood/sif, /area/surface/wilderness/shack) "qT" = ( @@ -139,6 +156,9 @@ }, /turf/simulated/wall/concrete, /area/surface/outside/wilderness/normal) +"ti" = ( +/turf/simulated/floor/outdoors/dirt/sif/planetuse, +/area/surface/outside/wilderness/normal) "tC" = ( /obj/structure/simple_door/sifwood, /turf/simulated/floor/wood/sif, @@ -184,12 +204,22 @@ /obj/effect/zone_divider, /turf/simulated/floor/water/deep, /area/surface/outside/river/gautelfr) +"zq" = ( +/obj/structure/drying_rack, +/turf/simulated/floor/outdoors/dirt/sif/planetuse, +/area/surface/outside/wilderness/normal) "zS" = ( /obj/structure/railing{ dir = 4 }, /turf/simulated/floor/water/deep, /area/surface/outside/river/gautelfr) +"zY" = ( +/obj/structure/bed/chair/sifwood/wings{ + dir = 4 + }, +/turf/simulated/floor/wood/sif, +/area/surface/wilderness/shack) "Aq" = ( /obj/effect/zone_divider, /turf/simulated/floor/outdoors/mask, @@ -200,6 +230,14 @@ "Ay" = ( /turf/simulated/floor/water, /area/surface/outside/wilderness/mountains) +"AG" = ( +/obj/structure/bed, +/obj/effect/landmark{ + name = "JoinLateWilderness" + }, +/obj/item/bedsheet/blue, +/turf/simulated/floor/wood/sif, +/area/surface/wilderness/shack) "Be" = ( /obj/structure/cliff/automatic{ dir = 8 @@ -207,6 +245,12 @@ /obj/effect/zone_divider, /turf/simulated/floor/outdoors/mask, /area/surface/outside/wilderness/mountains) +"BH" = ( +/obj/effect/landmark/start{ + name = "Trained Drake" + }, +/turf/simulated/floor/wood/sif, +/area/surface/wilderness/shack) "BR" = ( /obj/structure/cliff/automatic{ dir = 8 @@ -220,6 +264,13 @@ /obj/effect/zone_divider, /turf/simulated/mineral/sif, /area/surface/outside/wilderness/mountains) +"Ec" = ( +/obj/structure/table/sifwoodentable, +/obj/item/material/knife, +/obj/item/stack/cable_coil/white, +/obj/item/material/fishing_rod/built, +/turf/simulated/floor/outdoors/dirt/sif/planetuse, +/area/surface/outside/wilderness/normal) "Eo" = ( /obj/structure/cliff/automatic{ dir = 4 @@ -271,12 +322,11 @@ /turf/simulated/floor/wood/sif, /area/surface/outside/path/wilderness) "LN" = ( -/obj/effect/landmark/start{ - name = "Survivalist" - }, /obj/effect/landmark/start{ name = "Trained Drake" }, +/obj/structure/dogbed, +/obj/item/reagent_containers/food/snacks/jerky/spider/poison, /turf/simulated/floor/wood/sif, /area/surface/wilderness/shack) "Mf" = ( @@ -312,9 +362,10 @@ /turf/simulated/floor/outdoors/grass/sif, /area/surface/outside/path/wilderness) "RA" = ( -/obj/structure/table/sifwoodentable, -/obj/item/material/fishing_rod/built, -/obj/item/stack/cable_coil/white, +/obj/structure/closet/cabinet, +/obj/item/reagent_containers/food/condiment/carton/flour/rustic, +/obj/item/reagent_containers/food/condiment/carton/rice, +/obj/item/reagent_containers/food/condiment/spacespice, /turf/simulated/floor/wood/sif, /area/surface/wilderness/shack) "Sa" = ( @@ -335,6 +386,15 @@ /obj/structure/bookcase, /turf/simulated/floor/wood/sif, /area/surface/wilderness/shack) +"Tf" = ( +/obj/structure/closet/grave/dirthole{ + name = "latrine pit" + }, +/turf/simulated/floor/outdoors/dirt/sif/planetuse, +/area/surface/outside/wilderness/normal) +"TH" = ( +/turf/simulated/wall/sifwood, +/area/surface/outside/wilderness/normal) "TP" = ( /obj/structure/railing{ dir = 8 @@ -360,6 +420,12 @@ /obj/effect/zone_divider, /turf/simulated/floor/outdoors/mask, /area/surface/outside/wilderness/mountains) +"Xj" = ( +/obj/effect/landmark/start{ + name = "Survivalist" + }, +/turf/simulated/floor/wood/sif, +/area/surface/wilderness/shack) "XN" = ( /obj/effect/zone_divider, /turf/simulated/floor/outdoors/mask, @@ -53767,12 +53833,12 @@ Ax Ax Ax Ax -Ax -Ax -Ax -Ax -Ax -Ax +ti +ti +ti +ti +ti +ti UA jE Ax @@ -54016,19 +54082,19 @@ Ax Ax eZ eZ +JU +JU eZ eZ eZ eZ -Ax -Ax -Ax -Ax -Ax -Ax -Ax -Ax -Ax +JU +JU +eZ +eZ +ti +ti +ti Ax Ax UA @@ -54273,18 +54339,18 @@ Ax Ax eZ Tc -bW -LN -bW -eZ -Ax -Ax -Ax -Ax -Ax -Ax -Ax -Ax +uk +uk +Sc +tC +uk +uk +uk +uk +Sc +tC +ti +ti Ax Ax Ax @@ -54527,21 +54593,21 @@ Ax Ax Ax Ax -Ax +ti eZ RA Sc uk -LN -JU -Ax -Ax -Ax -Ax -Ax -Ax -Ax -Ax +uk +eZ +tC +eZ +eZ +tC +eZ +eZ +ti +ti Ax Ax Ax @@ -54784,23 +54850,23 @@ Ax Ax Ax Ax -Ax +ti JU sn -uk +zY uk LN -JU -Ax -Ax -Ax -Ax -Ax -Ax -Ax -Ax -Ax -Ax +eZ +Xj +BH +eZ +Xj +BH +eZ +ti +TH +eu +TH Ax Ax Ax @@ -55040,24 +55106,24 @@ Ax Ax Ax Ax -Ax -Ax +ti +ti JU fP qr uk bW eZ -Ax -Ax -Ax -Ax -Ax -Ax -Ax -Ax -Ax -Ax +AG +ic +eZ +AG +ic +eZ +ti +TH +Tf +TH Ax Ax Ax @@ -55297,24 +55363,24 @@ Ax Ax Ax Ax -Ax -Ax +ti +ti eZ eZ eZ tC eZ eZ +eZ +eZ +eZ +eZ +eZ +eZ Ax -Ax -Ax -Ax -Ax -Ax -Ax -Ax -Ax -Ax +TH +TH +TH Ax Ax Ax @@ -55555,17 +55621,17 @@ Ax Ax Ax Ax +ti +Ec +fQ +zq +ti +ti +ti Ax -Ax -Ax -Ax -Ax -Ax -Ax -Ax -Ax -Ax -Ax +ti +ti +ti Ax Ax Ax @@ -55813,11 +55879,11 @@ Ax Ax Ax Ax -Ax -Ax -Ax -Ax -Ax +ti +ti +ti +ti +ti Ax Ax Ax @@ -56073,8 +56139,8 @@ Ax Ax Ax Ax -Ax -Ax +ti +ti Ax Ax Ax @@ -56329,9 +56395,9 @@ Ax Ax Ax Ax +ti Ax -Ax -Ax +ti Ax Ax Ax diff --git a/maps/submaps/surface_submaps/mountains/IceCave1A.dmm b/maps/submaps/surface_submaps/mountains/IceCave1A.dmm index 12a555c6ca..fda6ad4095 100644 --- a/maps/submaps/surface_submaps/mountains/IceCave1A.dmm +++ b/maps/submaps/surface_submaps/mountains/IceCave1A.dmm @@ -10,7 +10,7 @@ "j" = (/obj/random/outcrop,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/IceCave1A) "r" = (/obj/random/medical/anom,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/IceCave1A) "x" = (/obj/random/multiple/corp_crate,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/IceCave1A) -"B" = (/obj/structure/bonfire/sifwood,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/IceCave1A) +"B" = (/obj/structure/wood_fire/bonfire/sifwood,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/IceCave1A) "C" = (/obj/structure/loot_pile/surface/bones,/obj/item/clothing/suit/storage/hooded/wintercoat/science,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/IceCave1A) "E" = (/obj/random/material/precious,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/IceCave1A) "I" = (/obj/random/maintenance/anom,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/IceCave1A) diff --git a/maps/submaps/surface_submaps/mountains/vault6.dmm b/maps/submaps/surface_submaps/mountains/vault6.dmm index c1ae439301..e14e7ebe4d 100644 --- a/maps/submaps/surface_submaps/mountains/vault6.dmm +++ b/maps/submaps/surface_submaps/mountains/vault6.dmm @@ -10,7 +10,7 @@ "j" = (/turf/simulated/floor/cult,/area/submap/cave/vault6) "k" = (/obj/random/tool/power,/obj/random/tech_supply,/turf/simulated/floor/cult,/area/submap/cave/vault6) "l" = (/obj/structure/cliff/automatic{icon_state = "cliffbuilder"; dir = 8},/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/vault6) -"m" = (/obj/structure/bonfire/permanent/sifwood,/obj/structure/grille/rustic,/turf/simulated/floor/cult,/area/submap/cave/vault6) +"m" = (/obj/structure/wood_fire/bonfire/sifwood,/obj/structure/grille/rustic,/turf/simulated/floor/cult,/area/submap/cave/vault6) "n" = (/obj/random/multiple/minevault,/turf/simulated/floor/cult,/area/submap/cave/vault6) "o" = (/obj/structure/cliff/automatic/corner,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/vault6) "p" = (/obj/structure/cliff/automatic{icon_state = "cliffbuilder"; dir = 5},/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/vault6) diff --git a/maps/submaps/surface_submaps/plains/Peninsula.dmm b/maps/submaps/surface_submaps/plains/Peninsula.dmm index 58fa992355..77917fffde 100644 --- a/maps/submaps/surface_submaps/plains/Peninsula.dmm +++ b/maps/submaps/surface_submaps/plains/Peninsula.dmm @@ -6,7 +6,7 @@ "f" = (/turf/simulated/mineral/ignore_mapgen,/area/submap/Peninsula) "g" = (/obj/structure/table/woodentable,/obj/item/flashlight,/turf/template_noop,/area/submap/Peninsula) "h" = (/obj/structure/table/woodentable,/obj/item/cell/device,/obj/item/cell/device,/obj/random/tech_supply/anom,/turf/template_noop,/area/submap/Peninsula) -"i" = (/obj/structure/bonfire,/turf/template_noop,/area/submap/Peninsula) +"i" = (/obj/structure/wood_fire/bonfire/fuelled,/turf/template_noop,/area/submap/Peninsula) "j" = (/obj/structure/flora/tree/sif,/turf/template_noop,/area/template_noop) (1,1,1) = {" diff --git a/maps/submaps/surface_submaps/plains/bonfire.dmm b/maps/submaps/surface_submaps/plains/bonfire.dmm index 32a8c07a3c..3cfb854c9e 100644 --- a/maps/submaps/surface_submaps/plains/bonfire.dmm +++ b/maps/submaps/surface_submaps/plains/bonfire.dmm @@ -4,7 +4,7 @@ "d" = (/obj/item/flame/lighter/random,/turf/template_noop,/area/submap/bonfire) "e" = (/obj/item/reagent_containers/food/drinks/bottle/orangejuice,/turf/simulated/floor/outdoors/dirt,/area/submap/bonfire) "f" = (/obj/item/stool/padded,/turf/simulated/floor/outdoors/dirt,/area/submap/bonfire) -"g" = (/obj/structure/bonfire/sifwood,/turf/simulated/floor/outdoors/dirt,/area/submap/bonfire) +"g" = (/obj/structure/wood_fire/bonfire/sifwood,/turf/simulated/floor/outdoors/dirt,/area/submap/bonfire) "h" = (/obj/item/material/knife/machete,/turf/simulated/floor/outdoors/dirt,/area/submap/bonfire) "i" = (/obj/item/clothing/head/helmet/material/makeshift,/turf/simulated/floor/outdoors/dirt,/area/submap/bonfire) "j" = (/obj/item/stack/material/fuel/log/sif,/turf/simulated/floor/outdoors/dirt,/area/submap/bonfire) diff --git a/maps/submaps/surface_submaps/plains/camp1.dmm b/maps/submaps/surface_submaps/plains/camp1.dmm index 4f477464bd..0caa60574f 100644 --- a/maps/submaps/surface_submaps/plains/camp1.dmm +++ b/maps/submaps/surface_submaps/plains/camp1.dmm @@ -11,7 +11,7 @@ "k" = (/obj/structure/table/bench/wooden,/turf/simulated/floor/outdoors/dirt,/area/submap/camp1) "l" = (/turf/simulated/floor/outdoors/dirt,/area/submap/camp1) "m" = (/obj/item/material/knife/machete/hatchet,/turf/template_noop,/area/template_noop) -"n" = (/obj/structure/bonfire/sifwood,/turf/simulated/floor/outdoors/dirt,/area/submap/camp1) +"n" = (/obj/structure/wood_fire/bonfire/sifwood,/turf/simulated/floor/outdoors/dirt,/area/submap/camp1) "o" = (/obj/item/flame/lighter,/turf/simulated/floor/outdoors/dirt,/area/submap/camp1) (1,1,1) = {" diff --git a/maps/submaps/surface_submaps/plains/hotspring.dmm b/maps/submaps/surface_submaps/plains/hotspring.dmm index 9a79c62922..b68f9ef81b 100644 --- a/maps/submaps/surface_submaps/plains/hotspring.dmm +++ b/maps/submaps/surface_submaps/plains/hotspring.dmm @@ -1,5 +1,5 @@ "a" = (/turf/template_noop,/area/submap/hotspring) -"c" = (/obj/structure/bonfire/sifwood,/turf/simulated/floor/outdoors/dirt,/area/submap/hotspring) +"c" = (/obj/structure/wood_fire/bonfire/sifwood,/turf/simulated/floor/outdoors/dirt,/area/submap/hotspring) "d" = (/obj/effect/vfx/steam,/turf/simulated/floor/water/shoreline/corner{dir = 4},/area/submap/hotspring) "e" = (/obj/structure/window/reinforced{dir = 8; health = 1e+006},/obj/structure/loot_pile/maint/trash,/turf/simulated/floor/outdoors/grass/sif,/area/submap/hotspring) "f" = (/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/wood/sif,/area/submap/hotspring) diff --git a/maps/submaps/surface_submaps/plains/house1.dmm b/maps/submaps/surface_submaps/plains/house1.dmm index 6280f10a48..b58fc3250f 100644 --- a/maps/submaps/surface_submaps/plains/house1.dmm +++ b/maps/submaps/surface_submaps/plains/house1.dmm @@ -8,7 +8,7 @@ "ah" = (/obj/structure/table/bench/wooden,/turf/simulated/floor/outdoors/dirt,/area/submap/house1) "ai" = (/obj/structure/railing{dir = 8},/turf/simulated/floor/outdoors/grass/sif,/area/submap/house1) "aj" = (/obj/structure/target_stake,/turf/simulated/floor/outdoors/dirt,/area/submap/house1) -"ak" = (/obj/structure/bonfire/sifwood,/turf/simulated/floor/outdoors/dirt,/area/submap/house1) +"ak" = (/obj/structure/wood_fire/bonfire/sifwood,/turf/simulated/floor/outdoors/dirt,/area/submap/house1) "al" = (/obj/item/target,/turf/simulated/floor/outdoors/grass/sif,/area/submap/house1) "am" = (/obj/item/target/syndicate,/turf/simulated/floor/outdoors/grass/sif,/area/submap/house1) "an" = (/turf/simulated/wall/wood,/area/submap/house1) diff --git a/maps/submaps/surface_submaps/plains/house1_arealess.dmm b/maps/submaps/surface_submaps/plains/house1_arealess.dmm index 72fa8bce8a..683a3cdf65 100644 --- a/maps/submaps/surface_submaps/plains/house1_arealess.dmm +++ b/maps/submaps/surface_submaps/plains/house1_arealess.dmm @@ -8,7 +8,7 @@ "ah" = (/obj/structure/table/bench/wooden,/turf/simulated/floor/outdoors/dirt,/area/template_noop) "ai" = (/obj/structure/railing{dir = 8},/turf/simulated/floor/outdoors/grass/sif,/area/template_noop) "aj" = (/obj/structure/target_stake,/turf/simulated/floor/outdoors/dirt,/area/template_noop) -"ak" = (/obj/structure/bonfire/sifwood,/turf/simulated/floor/outdoors/dirt,/area/template_noop) +"ak" = (/obj/structure/wood_fire/bonfire/sifwood,/turf/simulated/floor/outdoors/dirt,/area/template_noop) "al" = (/obj/item/target,/turf/simulated/floor/outdoors/grass/sif,/area/template_noop) "am" = (/obj/item/target/syndicate,/turf/simulated/floor/outdoors/grass/sif,/area/template_noop) "an" = (/turf/simulated/wall/wood,/area/template_noop) diff --git a/maps/submaps/surface_submaps/plains/oldhotel.dmm b/maps/submaps/surface_submaps/plains/oldhotel.dmm index aba8229032..1a51af57f8 100644 --- a/maps/submaps/surface_submaps/plains/oldhotel.dmm +++ b/maps/submaps/surface_submaps/plains/oldhotel.dmm @@ -11,7 +11,7 @@ "dr" = (/obj/item/stack/material/fuel/log/sif,/turf/simulated/floor/tiled/asteroid_steel,/area/submap/oldhotel) "dz" = (/obj/structure/sink{dir = 8; pixel_x = -12; pixel_y = 2},/obj/structure/mirror{dir = 4; pixel_x = -28},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled/asteroid_steel,/area/submap/oldhotel) "dL" = (/obj/structure/window/reinforced/full,/obj/structure/grille/rustic,/turf/simulated/floor/tiled/asteroid_steel,/area/submap/oldhotel) -"eK" = (/obj/structure/bonfire/sifwood,/obj/structure/grille/rustic,/turf/simulated/floor/outdoors/dirt,/area/submap/oldhotel) +"eK" = (/obj/structure/wood_fire/bonfire/sifwood,/obj/structure/grille/rustic,/turf/simulated/floor/outdoors/dirt,/area/submap/oldhotel) "go" = (/obj/structure/simple_door/iron,/turf/simulated/floor/wood,/area/submap/oldhotel) "gA" = (/turf/template_noop,/area/template_noop) "gM" = (/obj/machinery/appliance/cooker/oven,/turf/simulated/floor/tiled/asteroid_steel,/area/submap/oldhotel) diff --git a/maps/submaps/surface_submaps/plains/priderock.dmm b/maps/submaps/surface_submaps/plains/priderock.dmm index f84dca6842..6b4dd284c2 100644 --- a/maps/submaps/surface_submaps/plains/priderock.dmm +++ b/maps/submaps/surface_submaps/plains/priderock.dmm @@ -1,6 +1,6 @@ "ae" = (/obj/structure/railing,/obj/item/bone,/turf/simulated/floor/outdoors/dirt,/area/submap/priderock) "cR" = (/obj/structure/bed/chair{dir = 1},/turf/simulated/floor/outdoors/dirt,/area/submap/priderock) -"dq" = (/obj/effect/decal/cleanable/dirt,/obj/structure/bonfire/sifwood,/turf/simulated/floor/outdoors/grass/sif,/area/submap/priderock) +"dq" = (/obj/effect/decal/cleanable/dirt,/obj/structure/wood_fire/bonfire/sifwood,/turf/simulated/floor/outdoors/grass/sif,/area/submap/priderock) "dD" = (/obj/random/junk,/turf/simulated/floor/outdoors/dirt,/area/submap/priderock) "fL" = (/obj/structure/railing{dir = 8},/obj/structure/cliff/automatic{dir = 8},/turf/simulated/floor/outdoors/dirt,/area/submap/priderock) "hI" = (/obj/structure/table/woodentable,/turf/simulated/floor/outdoors/grass/sif,/area/submap/priderock) diff --git a/maps/submaps/surface_submaps/wilderness/GovPatrol.dmm b/maps/submaps/surface_submaps/wilderness/GovPatrol.dmm index 72a75ef2ba..c9207698a7 100644 --- a/maps/submaps/surface_submaps/wilderness/GovPatrol.dmm +++ b/maps/submaps/surface_submaps/wilderness/GovPatrol.dmm @@ -9,7 +9,7 @@ "i" = (/obj/item/clothing/under/solgov/utility/sifguard,/obj/item/clothing/shoes/boots/jackboots,/obj/effect/decal/remains,/turf/template_noop,/area/submap/GovPatrol) "j" = (/obj/item/stack/material/fuel/wood/sif,/turf/template_noop,/area/submap/GovPatrol) "k" = (/obj/item/gun/projectile/shotgun/pump/rifle/lever,/turf/template_noop,/area/submap/GovPatrol) -"l" = (/obj/structure/bonfire/sifwood,/turf/template_noop,/area/submap/GovPatrol) +"l" = (/obj/structure/wood_fire/bonfire/sifwood,/turf/template_noop,/area/submap/GovPatrol) "m" = (/obj/effect/decal/remains,/turf/template_noop,/area/submap/GovPatrol) "u" = (/obj/random/projectile/scrapped_shotgun,/turf/template_noop,/area/submap/GovPatrol) "I" = (/obj/item/clothing/head/beret/solgov/sifguard/patrol,/turf/template_noop,/area/submap/GovPatrol) diff --git a/maps/submaps/surface_submaps/wilderness/Manor1.dmm b/maps/submaps/surface_submaps/wilderness/Manor1.dmm index 8b267bbcd3..b443fbf7fe 100644 --- a/maps/submaps/surface_submaps/wilderness/Manor1.dmm +++ b/maps/submaps/surface_submaps/wilderness/Manor1.dmm @@ -35,7 +35,7 @@ "aI" = (/obj/structure/flora/pottedplant/dead,/obj/effect/spider/stickyweb,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) "aJ" = (/obj/effect/spider/stickyweb,/mob/living/simple_mob/animal/giant_spider/lurker,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) "aK" = (/obj/effect/spider/stickyweb,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) -"aL" = (/obj/structure/fireplace,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"aL" = (/obj/structure/wood_fire/fireplace,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) "aM" = (/mob/living/simple_mob/animal/giant_spider/lurker,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) "aN" = (/obj/effect/decal/cleanable/cobweb2,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) "aO" = (/obj/structure/bed,/obj/item/bedsheet,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) diff --git a/maps/submaps/surface_submaps/wilderness/Shelter.dmm b/maps/submaps/surface_submaps/wilderness/Shelter.dmm index e9270254a8..947ddd11d3 100644 --- a/maps/submaps/surface_submaps/wilderness/Shelter.dmm +++ b/maps/submaps/surface_submaps/wilderness/Shelter.dmm @@ -138,7 +138,7 @@ /turf/simulated/floor/outdoors/dirt, /area/submap/Shelter1) "yD" = ( -/obj/structure/fireplace, +/obj/structure/wood_fire/fireplace, /turf/simulated/floor/wood/sif, /area/submap/Shelter1) "zh" = ( diff --git a/maps/submaps/surface_submaps/wilderness/frostoasis.dmm b/maps/submaps/surface_submaps/wilderness/frostoasis.dmm index 47017ce43a..9282708f55 100644 --- a/maps/submaps/surface_submaps/wilderness/frostoasis.dmm +++ b/maps/submaps/surface_submaps/wilderness/frostoasis.dmm @@ -6,7 +6,7 @@ "cm" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/outdoors/dirt,/area/submap/FrostOasis) "co" = (/turf/simulated/mineral/ignore_mapgen,/area/submap/FrostOasis) "ct" = (/obj/structure/table/sifwoodentable,/obj/item/a_gift,/obj/machinery/light/small{dir = 8},/turf/simulated/floor/wood,/area/submap/FrostOasis) -"cA" = (/obj/structure/fireplace,/obj/effect/decal/cleanable/dirt,/obj/structure/sign/christmas/wreath,/turf/simulated/floor/wood,/area/submap/FrostOasis) +"cA" = (/obj/structure/wood_fire/fireplace,/obj/effect/decal/cleanable/dirt,/obj/structure/sign/christmas/wreath,/turf/simulated/floor/wood,/area/submap/FrostOasis) "do" = (/obj/effect/decal/cleanable/dirt,/obj/item/trash/driedfish,/turf/simulated/floor/wood,/area/submap/FrostOasis) "dD" = (/obj/structure/loot_pile/maint/boxfort,/turf/simulated/floor/outdoors/dirt{outdoors = 0},/area/submap/FrostOasis) "dF" = (/obj/structure/simple_door/sifwood,/turf/simulated/floor/wood,/area/submap/FrostOasis) diff --git a/polaris.dme b/polaris.dme index 0cf8774497..1e7df985a6 100644 --- a/polaris.dme +++ b/polaris.dme @@ -1209,7 +1209,6 @@ #include "code\game\objects\structures\barricades.dm" #include "code\game\objects\structures\barsign.dm" #include "code\game\objects\structures\bedsheet_bin.dm" -#include "code\game\objects\structures\bonfire.dm" #include "code\game\objects\structures\catwalk.dm" #include "code\game\objects\structures\cliff.dm" #include "code\game\objects\structures\coathanger.dm" @@ -1254,6 +1253,7 @@ #include "code\game\objects\structures\windoor_assembly.dm" #include "code\game\objects\structures\window.dm" #include "code\game\objects\structures\window_spawner.dm" +#include "code\game\objects\structures\wood_fire.dm" #include "code\game\objects\structures\crates_lockers\__closets.dm" #include "code\game\objects\structures\crates_lockers\_closets_appearance_definitions.dm" #include "code\game\objects\structures\crates_lockers\crates.dm"