mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-28 15:47:15 +01:00
glassblowing and ceramics (#8244)
* okay * ceramics and glassblowing * forgot this
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user