glassblowing and ceramics (#8244)

* okay

* ceramics and glassblowing

* forgot this
This commit is contained in:
jjpark-kb
2021-09-26 00:30:00 +01:00
committed by GitHub
parent b152963569
commit bed7b774a1
9 changed files with 688 additions and 2 deletions
@@ -134,6 +134,7 @@ GLOBAL_LIST_INIT(metal_recipes, list ( \
//SKYRAT EDIT START: REAGENT FORGING & PRIMITIVE CENTRIFUGE
new/datum/stack_recipe("anvil", /obj/structure/reagent_anvil, 10, time = 20, one_per_turf = TRUE, on_floor = TRUE), \
new/datum/stack_recipe("forge", /obj/structure/reagent_forge, 10, time = 20, one_per_turf = TRUE, on_floor = TRUE), \
new/datum/stack_recipe("throwing wheel", /obj/structure/throwing_wheel, 10, time = 20, one_per_turf = TRUE, on_floor = TRUE), \
new/datum/stack_recipe("primitive centrifuge", /obj/item/reagent_containers/glass/primitive_centrifuge, 10)
//SKYRAT EDIT STOP: REAGENT FORGING & PRIMITIVE CENTRIFUGE
))
@@ -0,0 +1,177 @@
/obj/structure/water_source/puddle/attackby(obj/item/O, mob/user, params)
if(istype(O, /obj/item/stack/ore/glass))
var/obj/item/stack/ore/glass/glass_item = O
if(!glass_item.use(1))
return
new /obj/item/ceramic/clay(get_turf(src))
return
return ..()
/turf/open/water/attackby(obj/item/C, mob/user, params)
if(istype(C, /obj/item/stack/ore/glass))
var/obj/item/stack/ore/glass/glass_item = C
if(!glass_item.use(1))
return
new /obj/item/ceramic/clay(src)
return
return ..()
/obj/structure/sink/attackby(obj/item/O, mob/living/user, params)
if(istype(O, /obj/item/stack/ore/glass))
if(dispensedreagent != /datum/reagent/water)
return
if(reagents.total_volume <= 0)
return
var/obj/item/stack/ore/glass/glass_item = O
if(!glass_item.use(1))
return
new /obj/item/ceramic/clay(src)
return
return ..()
/obj/item/ceramic
icon = 'modular_skyrat/modules/primitive_fun/icons/prim_fun.dmi'
var/forge_item
/obj/item/ceramic/attackby(obj/item/I, mob/living/user, params)
if(istype(I, /obj/item/toy/crayon))
var/obj/item/toy/crayon/crayon_item = I
if(!forge_item || !crayon_item.paint_color)
return
color = crayon_item.paint_color
to_chat(user, span_notice("You color [src] with [crayon_item]..."))
return
return ..()
/obj/item/ceramic/clay
name = "clay"
desc = "A pile of clay that can be used to create ceramic artwork."
icon_state = "clay"
/datum/export/ceramics
cost = 1000
unit_name = "ceramic product"
export_types = list(/obj/item/plate/ceramic,
/obj/item/reagent_containers/glass/bowl/ceramic,
/obj/item/reagent_containers/glass/beaker/large/ceramic)
/obj/item/ceramic/plate
name = "ceramic plate"
desc = "A piece of clay that is flat, in the shape of a plate."
icon_state = "clay_plate"
forge_item = /obj/item/plate/ceramic
/obj/item/plate/ceramic
name = "ceramic plate"
icon = 'modular_skyrat/modules/primitive_fun/icons/prim_fun.dmi'
icon_state = "clay_plate"
/obj/item/ceramic/bowl
name = "ceramic bowl"
desc = "A piece of clay with a raised lip, in the shape of a bowl."
icon_state = "clay_bowl"
forge_item = /obj/item/reagent_containers/glass/bowl/ceramic
/obj/item/reagent_containers/glass/bowl/ceramic
name = "ceramic bowl"
icon = 'modular_skyrat/modules/primitive_fun/icons/prim_fun.dmi'
icon_state = "clay_bowl"
custom_materials = null
/obj/item/ceramic/cup
name = "ceramic cup"
desc = "A piece of clay with high walls, in the shape of a cup. It can hold 120 units."
icon_state = "clay_cup"
forge_item = /obj/item/reagent_containers/glass/beaker/large/ceramic
/obj/item/reagent_containers/glass/beaker/large/ceramic
name = "ceramic cup"
desc = "A cup that is made from ceramic."
icon = 'modular_skyrat/modules/primitive_fun/icons/prim_fun.dmi'
icon_state = "clay_cup"
custom_materials = null
/obj/structure/throwing_wheel
name = "throwing wheel"
desc = "A machine that allows you to throw clay."
icon = 'modular_skyrat/modules/primitive_fun/icons/prim_fun.dmi'
icon_state = "throw_wheel_empty"
density = TRUE
anchored = TRUE
var/spinning_speed = 4 SECONDS
var/in_use = FALSE
/obj/structure/throwing_wheel/attackby(obj/item/I, mob/living/user, params)
if(istype(I, /obj/item/ceramic/clay))
if(length(contents) >= 1)
return
if(!do_after(user, spinning_speed, target = src))
return
I.forceMove(src)
icon_state = "throw_wheel_full"
return
if(I.tool_behaviour == TOOL_CROWBAR)
new /obj/item/stack/sheet/iron/ten(get_turf(src))
qdel(src)
return
if(I.tool_behaviour == TOOL_WRENCH)
anchored = !anchored
return
return ..()
/obj/structure/throwing_wheel/proc/use_clay(spawn_type, mob/user)
var/given_message = list(
"You slowly start spinning the throwing wheel...",
"You place your hands on the clay, slowly shaping it...",
"You start becoming satisfied with what you have made...",
"You slowly stop the throwing wheel from spinning...",
"You stop the throwing wheel, admiring your new creation...",
)
for(var/loop_try in 1 to 5)
if(!do_after(user, spinning_speed, target = src))
in_use = FALSE
return
to_chat(user, span_notice(given_message[loop_try]))
var/obj/change_obj = new spawn_type(get_turf(src))
var/atom/movable/get_atom = contents[1]
change_obj.color = get_atom.color
qdel(get_atom)
icon_state = "throw_wheel_empty"
in_use = FALSE
/obj/structure/throwing_wheel/attack_hand(mob/living/user, list/modifiers)
. = ..()
if(in_use)
return
in_use = TRUE
if(length(contents) >= 1)
var/user_input = tgui_alert(user, "What would you like to do?", "Choice Selection", list("Create", "Remove"))
if(!user_input)
in_use = FALSE
return
switch(user_input)
if("Create")
var/creation_choice = tgui_alert(user, "What you like to create?", "Creation Choice", list("Cup", "Plate", "Bowl"))
if(!creation_choice)
in_use = FALSE
return
switch(creation_choice)
if("Cup")
use_clay(/obj/item/ceramic/cup, user)
if("Plate")
use_clay(/obj/item/ceramic/plate, user)
if("Bowl")
use_clay(/obj/item/ceramic/bowl, user)
return
if("Remove")
if(!do_after(user, spinning_speed, target = src))
in_use = FALSE
return
var/atom/movable/get_atom = contents[1]
get_atom.forceMove(get_turf(src))
user.put_in_active_hand(get_atom)
in_use = FALSE
icon_state = "throw_wheel_empty"
return
in_use = FALSE
return
@@ -0,0 +1,376 @@
/obj/item/glassblowing
icon = 'modular_skyrat/modules/primitive_fun/icons/prim_fun.dmi'
/obj/item/glassblowing/glass_globe
name = "glass globe"
desc = "A glass bowl that is capable of carrying things."
icon_state = "glass_bowl"
/datum/export/glassblowing
cost = 1000
unit_name = "glassblowing product"
export_types = list(/obj/item/glassblowing/glass_lens,
/obj/item/glassblowing/glass_globe,
/obj/item/reagent_containers/glass/bowl/blowing_glass,
/obj/item/reagent_containers/glass/beaker/large/blowing_glass,
/obj/item/plate/blowing_glass)
/datum/export/glassblowing/sell_object(obj/O, datum/export_report/report, dry_run, apply_elastic = FALSE) //I really dont want them to feel gimped
. = ..()
/obj/item/glassblowing/glass_lens
name = "glass lens"
desc = "A glass bowl that is capable of carrying things."
icon_state = "glass_bowl"
/obj/item/reagent_containers/glass/bowl/blowing_glass
name = "glass bowl"
desc = "A glass bowl that is capable of carrying things."
icon = 'modular_skyrat/modules/primitive_fun/icons/prim_fun.dmi'
icon_state = "glass_bowl"
/obj/item/reagent_containers/glass/beaker/large/blowing_glass
name = "glass cup"
desc = "A glass cup that is capable of carrying liquids."
icon = 'modular_skyrat/modules/primitive_fun/icons/prim_fun.dmi'
icon_state = "glass_cup"
custom_materials = null
/obj/item/plate/blowing_glass
name = "glass plate"
desc = "A glass plate that is capable of carrying things."
icon = 'modular_skyrat/modules/primitive_fun/icons/prim_fun.dmi'
icon_state = "glass_plate"
/obj/item/glassblowing/molten_glass
name = "molten glass"
desc = "A glob of molten glass, ready to be shaped into art."
icon_state = "molten_glass"
///the time check against world.time if its still molten / requires heating up
var/world_molten = 0
var/list/required_actions = list(0,0,0,0,0) //blowing, spinning, paddles, shears, jacks
var/list/current_actions = list(0,0,0,0,0)
var/chosen_item
/obj/item/glassblowing/molten_glass/Initialize()
. = ..()
world_molten = world.time + 15 SECONDS
/obj/item/glassblowing/molten_glass/examine(mob/user)
. = ..()
if(world_molten < world.time)
. += span_notice("[src] has cooled down and will require reheating to modify!")
if(required_actions[1])
. += "You require [required_actions[1]] blowing actions!"
. += "You currently have [current_actions[1]] blowing actions!"
if(required_actions[2])
. += "You require [required_actions[2]] spinning actions!"
. += "You currently have [current_actions[2]] spinning actions!"
if(required_actions[3])
. += "You require [required_actions[3]] paddling actions!"
. += "You currently have [current_actions[3]] paddling actions!"
if(required_actions[4])
. += "You require [required_actions[4]] shearing actions!"
. += "You currently have [current_actions[4]] shearing actions!"
if(required_actions[5])
. += "You require [required_actions[5]] jacking actions!"
. += "You currently have [current_actions[5]] jacking actions!"
/obj/item/glassblowing/molten_glass/pickup(mob/user)
if(!isliving(user))
return ..()
var/mob/living/living_user = user
if(world_molten >= world.time)
to_chat(living_user, span_warning("You burn your hands trying to pick up [src]!"))
living_user.adjustFireLoss(15)
user.dropItemToGround(src)
return
return ..()
/obj/item/glassblowing/blowing_rod
name = "blowing rod"
desc = "A tool that is used to hold the molten glass as well as help shape it."
icon_state = "blow_pipe_empty"
var/in_use = FALSE
/datum/crafting_recipe/glass_blowing_rod
name = "Glass-blowing Blowing Rod"
result = /obj/item/glassblowing/blowing_rod
reqs = list(/obj/item/stack/sheet/iron = 5)
category = CAT_PRIMAL
/obj/item/glassblowing/blowing_rod/examine(mob/user)
. = ..()
var/obj/item/glassblowing/molten_glass/find_glass = locate() in contents
if(find_glass)
if(find_glass.required_actions[1])
. += "You require [find_glass.required_actions[1]] blowing actions!"
. += "You currently have [find_glass.current_actions[1]] blowing actions!"
if(find_glass.required_actions[2])
. += "You require [find_glass.required_actions[2]] spinning actions!"
. += "You currently have [find_glass.current_actions[2]] spinning actions!"
if(find_glass.required_actions[3])
. += "You require [find_glass.required_actions[3]] paddling actions!"
. += "You currently have [find_glass.current_actions[3]] paddling actions!"
if(find_glass.required_actions[4])
. += "You require [find_glass.required_actions[4]] shearing actions!"
. += "You currently have [find_glass.current_actions[4]] shearing actions!"
if(find_glass.required_actions[5])
. += "You require [find_glass.required_actions[5]] jacking actions!"
. += "You currently have [find_glass.current_actions[5]] jacking actions!"
/obj/item/glassblowing/blowing_rod/proc/check_valid_table()
for(var/obj/structure/table/check_table in range(1, get_turf(src)))
if(!(check_table.resistance_flags & FLAMMABLE))
return TRUE //if you can find a table that is not flammable, good
return FALSE
/obj/item/glassblowing/blowing_rod/afterattack(atom/target, mob/user, proximity_flag, click_parameters)
if(!proximity_flag)
return ..()
if(istype(target, /obj/item/glassblowing/molten_glass))
var/obj/item/glassblowing/molten_glass/attacking_glass = target
var/obj/item/glassblowing/molten_glass/find_glass = locate() in contents
if(find_glass)
to_chat(user, span_warning("[src] already has some glass on it still!"))
return
attacking_glass.forceMove(src)
to_chat(user, span_notice("[src] picks up [target]."))
icon_state = "blow_pipe_full"
return
return ..()
/obj/item/glassblowing/blowing_rod/attackby(obj/item/I, mob/living/user, params)
var/obj/item/glassblowing/molten_glass/find_glass = locate() in contents
if(istype(I, /obj/item/glassblowing/molten_glass))
if(find_glass)
to_chat(user, span_warning("[src] already has some glass on it still!"))
return
I.forceMove(src)
to_chat(user, span_notice("[src] picks up [I]."))
icon_state = "blow_pipe_full"
return
if(istype(I, /obj/item/glassblowing/paddle))
if(in_use)
return
in_use = TRUE
if(!check_valid_table())
to_chat(user, span_warning("You must be near a non-flammable table!"))
in_use = FALSE
return
to_chat(user, span_notice("You begin using [I] on [src]."))
if(!do_after(user, 5 SECONDS, target = src))
to_chat(user, span_warning("You interrupt an action!"))
in_use = FALSE
return
if(!check_valid_table())
to_chat(user, span_warning("You must be near a non-flammable table!"))
in_use = FALSE
return
find_glass.current_actions[3]++
to_chat(user, span_notice("You finish using [I] on [src]."))
in_use = FALSE
return
if(istype(I, /obj/item/glassblowing/shears))
if(in_use)
return
in_use = TRUE
if(!check_valid_table())
to_chat(user, span_warning("You must be near a non-flammable table!"))
in_use = FALSE
return
to_chat(user, span_notice("You begin using [I] on [src]."))
if(!do_after(user, 5 SECONDS, target = src))
to_chat(user, span_warning("You interrupt an action!"))
in_use = FALSE
return
if(!check_valid_table())
to_chat(user, span_warning("You must be near a non-flammable table!"))
in_use = FALSE
return
find_glass.current_actions[4]++
to_chat(user, span_notice("You finish using [I] on [src]."))
in_use = FALSE
return
if(istype(I, /obj/item/glassblowing/jacks))
if(in_use)
return
in_use = TRUE
if(!check_valid_table())
to_chat(user, span_warning("You must be near a non-flammable table!"))
in_use = FALSE
return
to_chat(user, span_notice("You begin using [I] on [src]."))
if(!do_after(user, 5 SECONDS, target = src))
to_chat(user, span_warning("You interrupt an action!"))
in_use = FALSE
return
if(!check_valid_table())
to_chat(user, span_warning("You must be near a non-flammable table!"))
in_use = FALSE
return
find_glass.current_actions[5]++
to_chat(user, span_notice("You finish using [I] on [src]."))
in_use = FALSE
return
return ..()
/obj/item/glassblowing/blowing_rod/attack_self(mob/user, modifiers)
var/obj/item/glassblowing/molten_glass/find_glass = locate() in contents
if(find_glass)
if(find_glass.world_molten < world.time)
to_chat(user, span_warning("The glass has cooled down far too much to be handled..."))
return
if(in_use)
to_chat(user, span_warning("[src] is busy being used!"))
return
in_use = TRUE
if(!find_glass.chosen_item)
var/choice = tgui_input_list(user, "What would you like to make?", "Choice Selection", list("Plate", "Bowl", "Globe", "Cup", "Lens"))
if(!choice)
in_use = FALSE
return
switch(choice)
if("Plate")
find_glass.chosen_item = /obj/item/plate/blowing_glass
find_glass.required_actions = list(3,3,3,0,0) //blowing, spinning, paddling
if("Bowl")
find_glass.chosen_item = /obj/item/reagent_containers/glass/bowl/blowing_glass
find_glass.required_actions = list(2,2,2,0,3) //blowing, spinning, paddling
if("Globe")
find_glass.chosen_item = /obj/item/glassblowing/glass_globe
find_glass.required_actions = list(6,3,0,0,0) //blowing, spinning
if("Cup")
find_glass.chosen_item = /obj/item/reagent_containers/glass/beaker/large/blowing_glass
find_glass.required_actions = list(3,3,3,0,0) //blowing, spinning, paddling
if("Lens")
find_glass.chosen_item = /obj/item/glassblowing/glass_lens
find_glass.required_actions = list(0,0,3,3,3) //paddling, shearing, jacking
in_use = FALSE
return
else
var/action_choice = tgui_alert(user, "What would you like to do?", "Action Selection", list("Blow", "Spin", "Remove"))
if(!action_choice)
in_use = FALSE
return
switch(action_choice)
if("Blow")
if(!check_valid_table())
to_chat(user, span_warning("You must be near a non-flammable table!"))
in_use = FALSE
return
to_chat(user, span_notice("You begin blowing [src]."))
if(!do_after(user, 5 SECONDS, target = src))
to_chat(user, span_warning("You interrupt an action!"))
in_use = FALSE
return
if(!check_valid_table())
to_chat(user, span_warning("You must be near a non-flammable table!"))
in_use = FALSE
return
find_glass.current_actions[1]++
to_chat(user, span_notice("You finish blowing [src]."))
if("Spin")
if(!check_valid_table())
to_chat(user, span_warning("You must be near a non-flammable table!"))
in_use = FALSE
return
to_chat(user, span_notice("You begin spinning [src]."))
if(!do_after(user, 5 SECONDS, target = src))
to_chat(user, span_warning("You interrupt an action!"))
in_use = FALSE
return
if(!check_valid_table())
to_chat(user, span_warning("You must be near a non-flammable table!"))
in_use = FALSE
return
find_glass.current_actions[2]++
to_chat(user, span_notice("You finish spinning [src]."))
if("Remove")
if(find_glass.current_actions[1] < find_glass.required_actions[1])
in_use = FALSE
find_glass.forceMove(get_turf(src))
return
if(find_glass.current_actions[2] < find_glass.required_actions[2])
in_use = FALSE
find_glass.forceMove(get_turf(src))
return
if(find_glass.current_actions[3] < find_glass.required_actions[3])
in_use = FALSE
find_glass.forceMove(get_turf(src))
return
if(find_glass.current_actions[4] < find_glass.required_actions[4])
in_use = FALSE
find_glass.forceMove(get_turf(src))
return
if(find_glass.current_actions[5] < find_glass.required_actions[5])
in_use = FALSE
find_glass.forceMove(get_turf(src))
return
new find_glass.chosen_item(get_turf(src))
in_use = FALSE
qdel(find_glass)
return
in_use = FALSE
return
return ..()
/obj/item/glassblowing/jacks
name = "jacks"
desc = "A tool that helps shape glass during the art process."
icon_state = "jacks"
/datum/crafting_recipe/glass_jack
name = "Glass-blowing Jacks"
result = /obj/item/glassblowing/jacks
reqs = list(/obj/item/stack/sheet/iron = 5)
category = CAT_PRIMAL
/obj/item/glassblowing/paddle
name = "paddle"
desc = "A tool that helps shape glass during the art process."
icon_state = "paddle"
/datum/crafting_recipe/glass_paddle
name = "Glass-blowing Paddle"
result = /obj/item/glassblowing/paddle
reqs = list(/obj/item/stack/sheet/iron = 5)
category = CAT_PRIMAL
/obj/item/glassblowing/shears
name = "shears"
desc = "A tool that helps shape glass during the art process."
icon_state = "shears"
/datum/crafting_recipe/glass_shears
name = "Glass-blowing Shears"
result = /obj/item/glassblowing/shears
reqs = list(/obj/item/stack/sheet/iron = 5)
category = CAT_PRIMAL
/obj/item/glassblowing/metal_cup
name = "metal cup"
desc = "A tool that helps shape glass during the art process."
icon_state = "metal_cup_empty"
var/has_sand = FALSE
/datum/crafting_recipe/glass_metal_cup
name = "Glass-blowing Metal Cup"
result = /obj/item/glassblowing/metal_cup
reqs = list(/obj/item/stack/sheet/iron = 5)
category = CAT_PRIMAL
/obj/item/glassblowing/metal_cup/attackby(obj/item/I, mob/living/user, params)
if(istype(I, /obj/item/stack/ore/glass))
var/obj/item/stack/ore/glass/glass_obj = I
if(!glass_obj.use(1))
return
has_sand = TRUE
icon_state = "metal_cup_full"
return ..()
Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

@@ -0,0 +1,28 @@
## Title: POSITRONIC ALERT CONSOLE
MODULE ID: PRIM_FUN
### Description:
Adds glassblowing and ceramics!
Both can be sold to cargo for some cash
### TG Proc/File Changes:
- N/A
### Defines:
- N/A
### Master file additions
- N/A
### Included files that are not contained in this module:
- N/A
### Credits:
Jake Park
@@ -492,6 +492,98 @@
in_use = FALSE
return
if(istype(I, /obj/item/ceramic))
var/obj/item/ceramic/ceramic_item = I
if(forge_temperature <= 50)
to_chat(user, span_warning("The temperature is not hot enough to start heating [ceramic_item]."))
return
if(!ceramic_item.forge_item)
to_chat(user, span_warning("You feel that setting [ceramic_item] would not yield anything useful!"))
return
to_chat(user, span_notice("You start setting [ceramic_item]..."))
if(!do_after(user, 5 SECONDS, target = src))
to_chat(user, span_warning("You stop setting [ceramic_item]!"))
return
to_chat(user, span_notice("You finish setting [ceramic_item]..."))
var/obj/item/ceramic/spawned_ceramic = new ceramic_item.forge_item(get_turf(src))
spawned_ceramic.color = ceramic_item.color
qdel(ceramic_item)
return
if(istype(I, /obj/item/glassblowing/blowing_rod))
var/obj/item/glassblowing/blowing_rod/blowing_item = I
if(in_use) //only insert one at a time
to_chat(user, span_warning("You cannot do multiple things at the same time!"))
return
in_use = TRUE
if(forge_temperature <= 50)
to_chat(user, span_warning("The temperature is not hot enough to start heating [blowing_item]."))
in_use = FALSE
return
var/obj/item/glassblowing/molten_glass/find_glass = locate() in blowing_item.contents
if(!find_glass)
to_chat(user, span_warning("[blowing_item] does not have any glass to heat up."))
in_use = FALSE
return
to_chat(user, span_notice("You begin heating up [blowing_item]."))
for(var/do_loop in 1 to 5) //I really want 10 seconds, but not all at "once," this makes it feel like less time
if(!do_after(user, 2 SECONDS, target = src))
to_chat(user, span_warning("[blowing_item] is interrupted in its heating process."))
in_use = FALSE
return
find_glass.world_molten = world.time + 25 SECONDS
to_chat(user, span_notice("You finish heating up [blowing_item]."))
in_use = FALSE
return
if(istype(I, /obj/item/stack/sheet/glass))
var/obj/item/stack/sheet/glass/glass_item = I
if(in_use) //only insert one at a time
to_chat(user, span_warning("You cannot do multiple things at the same time!"))
return
in_use = TRUE
if(forge_temperature <= 50)
to_chat(user, span_warning("The temperature is not hot enough to start heating [glass_item]."))
in_use = FALSE
return
if(!glass_item.use(1))
to_chat(user, span_warning("You need to be able to use [glass_item]!"))
in_use = FALSE
return
if(!do_after(user, 5 SECONDS, target = src))
to_chat(user, span_warning("You stop heating up [glass_item]!"))
in_use = FALSE
return
in_use = FALSE
var/obj/item/glassblowing/molten_glass/spawned_glass = new /obj/item/glassblowing/molten_glass(get_turf(src))
spawned_glass.world_molten = world.time + 25 SECONDS
return
if(istype(I, /obj/item/glassblowing/metal_cup))
var/obj/item/glassblowing/metal_cup/metal_item = I
if(in_use) //only insert one at a time
to_chat(user, span_warning("You cannot do multiple things at the same time!"))
return
in_use = TRUE
if(forge_temperature <= 50)
to_chat(user, span_warning("The temperature is not hot enough to start heating [metal_item]!"))
in_use = FALSE
return
if(!metal_item.has_sand)
to_chat(user, span_warning("There is no sand within [metal_item]!"))
in_use = FALSE
return
if(!do_after(user, 5 SECONDS, target = src))
to_chat(user, span_warning("You stop heating up [metal_item]!"))
in_use = FALSE
return
in_use = FALSE
metal_item.has_sand = FALSE
metal_item.icon_state = "metal_cup_empty"
var/obj/item/glassblowing/molten_glass/spawned_glass = new /obj/item/glassblowing/molten_glass(get_turf(src))
spawned_glass.world_molten = world.time + 25 SECONDS
return
return ..()
/obj/structure/reagent_forge/ready
@@ -32,4 +32,10 @@
new /obj/item/stack/sheet/mineral/wood(get_turf(src))
qdel(src)
return
if(istype(I, /obj/item/stack/ore/glass))
var/obj/item/stack/ore/glass/glass_obj = I
if(!glass_obj.use(1))
return
new /obj/item/ceramic/clay(get_turf(src))
return
return ..()
@@ -9,8 +9,12 @@
/datum/export/xenoarch/useless_relic
cost = 400
unit_name = "useless relic"
export_types = list(/obj/item/xenoarch/useless_relic)
unit_name = "xenoarch item"
export_types = list(/obj/item/xenoarch/useless_relic,
/obj/item/xenoarch/broken_item)
/datum/export/xenoarch/useless_relic/sell_object(obj/O, datum/export_report/report, dry_run, apply_elastic = FALSE) //I really dont want them to feel gimped
. = ..()
//broken items
/obj/item/xenoarch/broken_item
+2
View File
@@ -4796,6 +4796,8 @@
#include "modular_skyrat\modules\pollution\code\temporary_pollution_emission_component.dm"
#include "modular_skyrat\modules\pollution\code\turf_open.dm"
#include "modular_skyrat\modules\posi_alert\code\game\machinery\posialert.dm"
#include "modular_skyrat\modules\primitive_fun\code\ceramics.dm"
#include "modular_skyrat\modules\primitive_fun\code\glassblowing.dm"
#include "modular_skyrat\modules\prison_transport\code\outfits.dm"
#include "modular_skyrat\modules\prison_transport\code\shuttle.dm"
#include "modular_skyrat\modules\QOL\code\_under.dm"