mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-26 14:39:58 +01:00
glassblowing/ceramic skills and changes (#8841)
This commit is contained in:
@@ -43,3 +43,9 @@
|
||||
|
||||
//to determine if someone is a fishing master, or not
|
||||
#define TRAIT_FISHING_MASTER "fishing_master"
|
||||
|
||||
//to determine if someone is a ceramics master, or not
|
||||
#define TRAIT_CERAMIC_MASTER "ceramic_master"
|
||||
|
||||
//to determine if someone is a glassblowing master, or not
|
||||
#define TRAIT_GLASSBLOWING_MASTER "glassblowing_master"
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
desc = "Vends things that the Captain and Head of Personnel are probably not going to appreciate you fiddling with instead of your job..."
|
||||
product_ads = "Escape to a fantasy world!;Fuel your gambling addiction!;Ruin your friendships!;Roll for initiative!;Elves and dwarves!;Paranoid computers!;Totally not satanic!;Fun times forever!"
|
||||
icon_state = "games"
|
||||
//SKYRAT EDIT: Adds Ceramic, Glassblowing, and Fishing Skillchips
|
||||
products = list(
|
||||
/obj/item/toy/cards/deck = 5,
|
||||
/obj/item/storage/dice = 10,
|
||||
@@ -21,10 +22,14 @@
|
||||
/obj/item/skillchip/bonsai=2,
|
||||
/obj/item/skillchip/wine_taster=2,
|
||||
/obj/item/skillchip/light_remover=2,
|
||||
/obj/item/skillchip/glassblowing_master = 2,
|
||||
/obj/item/skillchip/ceramic_master = 2,
|
||||
/obj/item/skillchip/fishing_master = 2,
|
||||
/obj/item/skillchip/useless_adapter=5,
|
||||
/obj/item/dyespray=3,
|
||||
/obj/item/razor=3,
|
||||
)
|
||||
//SKYRAT EDIT: Adds Ceramic, Glassblowing, and Fishing Skillchips
|
||||
contraband = list(
|
||||
/obj/item/dice/fudge = 9,
|
||||
/obj/item/clothing/shoes/wheelys/skishoes=4,
|
||||
|
||||
@@ -7,6 +7,9 @@ GLOBAL_LIST_INIT(uncommon_loot, list(//uncommon: useful items
|
||||
/obj/item/skillchip/job/engineer = 10,
|
||||
/obj/item/skillchip/job/roboticist = 10,
|
||||
/obj/item/skillchip/light_remover = 10,
|
||||
/obj/item/skillchip/glassblowing_master = 10,
|
||||
/obj/item/skillchip/ceramic_master = 10,
|
||||
/obj/item/skillchip/fishing_master = 10,
|
||||
/obj/item/skillchip/useless_adapter = 25,
|
||||
/obj/item/skillchip/wine_taster = 50
|
||||
) = 50,
|
||||
|
||||
@@ -1,3 +1,16 @@
|
||||
#define DEFAULT_SPIN 4 SECONDS
|
||||
#define MASTER_SPIN 2 SECONDS
|
||||
|
||||
/obj/item/skillchip/ceramic_master
|
||||
name = "Ceramic Master skillchip"
|
||||
desc = "A master of clay, perhaps even capable of creating life from clay and fire."
|
||||
auto_traits = list(TRAIT_CERAMIC_MASTER)
|
||||
skill_name = "Ceramic Master"
|
||||
skill_description = "Master the ability to use clay within ceramics."
|
||||
skill_icon = "certificate"
|
||||
activate_message = "<span class='notice'>The faults within the clay are now to be seen.</span>"
|
||||
deactivate_message = "<span class='notice'>Clay becomes more obscured.</span>"
|
||||
|
||||
/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
|
||||
@@ -55,6 +68,19 @@
|
||||
/obj/item/reagent_containers/glass/bowl/ceramic,
|
||||
/obj/item/reagent_containers/glass/beaker/large/ceramic)
|
||||
|
||||
/datum/export/ceramics/sell_object(obj/O, datum/export_report/report, dry_run, apply_elastic = FALSE) //I really dont want them to feel gimped
|
||||
. = ..()
|
||||
|
||||
/datum/export/ceramics_unfinished
|
||||
cost = 300
|
||||
unit_name = "unfinished ceramic product"
|
||||
export_types = list(/obj/item/ceramic/plate,
|
||||
/obj/item/ceramic/bowl,
|
||||
/obj/item/ceramic/cup)
|
||||
|
||||
/datum/export/ceramics_unfinished/sell_object(obj/O, datum/export_report/report, dry_run, apply_elastic = FALSE) //I really dont want them to feel gimped
|
||||
. = ..()
|
||||
|
||||
/obj/item/ceramic/plate
|
||||
name = "ceramic plate"
|
||||
desc = "A piece of clay that is flat, in the shape of a plate."
|
||||
@@ -98,10 +124,10 @@
|
||||
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)
|
||||
var/spinning_speed = HAS_TRAIT(user, TRAIT_CERAMIC_MASTER) ? MASTER_SPIN : DEFAULT_SPIN
|
||||
if(istype(I, /obj/item/ceramic/clay))
|
||||
if(length(contents) >= 1)
|
||||
return
|
||||
@@ -120,6 +146,7 @@
|
||||
return ..()
|
||||
|
||||
/obj/structure/throwing_wheel/proc/use_clay(spawn_type, mob/user)
|
||||
var/spinning_speed = HAS_TRAIT(user, TRAIT_CERAMIC_MASTER) ? MASTER_SPIN : DEFAULT_SPIN
|
||||
var/given_message = list(
|
||||
"You slowly start spinning the throwing wheel...",
|
||||
"You place your hands on the clay, slowly shaping it...",
|
||||
@@ -141,6 +168,7 @@
|
||||
|
||||
/obj/structure/throwing_wheel/attack_hand(mob/living/user, list/modifiers)
|
||||
. = ..()
|
||||
var/spinning_speed = HAS_TRAIT(user, TRAIT_CERAMIC_MASTER) ? MASTER_SPIN : DEFAULT_SPIN
|
||||
if(in_use)
|
||||
return
|
||||
in_use = TRUE
|
||||
@@ -175,3 +203,6 @@
|
||||
return
|
||||
in_use = FALSE
|
||||
return
|
||||
|
||||
#undef DEFAULT_SPIN
|
||||
#undef MASTER_SPIN
|
||||
|
||||
@@ -1,3 +1,16 @@
|
||||
#define DEFAULT_TIMED 5 SECONDS
|
||||
#define MASTER_TIMED 2 SECONDS
|
||||
|
||||
/obj/item/skillchip/glassblowing_master
|
||||
name = "Glassblowing Master skillchip"
|
||||
desc = "A master of glass, perhaps even capable of creating life from glass and fire."
|
||||
auto_traits = list(TRAIT_GLASSBLOWING_MASTER)
|
||||
skill_name = "Glass-Blowing Master"
|
||||
skill_description = "Master the ability to use glass within glassblowing."
|
||||
skill_icon = "certificate"
|
||||
activate_message = "<span class='notice'>The faults within the glass are now to be seen.</span>"
|
||||
deactivate_message = "<span class='notice'>Glass becomes more obscured.</span>"
|
||||
|
||||
/obj/item/glassblowing
|
||||
icon = 'modular_skyrat/modules/primitive_fun/icons/prim_fun.dmi'
|
||||
|
||||
@@ -7,7 +20,7 @@
|
||||
icon_state = "glass_bowl"
|
||||
|
||||
/datum/export/glassblowing
|
||||
cost = 1000
|
||||
cost = 3000
|
||||
unit_name = "glassblowing product"
|
||||
export_types = list(/obj/item/glassblowing/glass_lens,
|
||||
/obj/item/glassblowing/glass_globe,
|
||||
@@ -141,6 +154,7 @@
|
||||
return ..()
|
||||
|
||||
/obj/item/glassblowing/blowing_rod/attackby(obj/item/I, mob/living/user, params)
|
||||
var/actioning_speed = HAS_TRAIT(user, TRAIT_GLASSBLOWING_MASTER) ? MASTER_TIMED : DEFAULT_TIMED
|
||||
var/obj/item/glassblowing/molten_glass/find_glass = locate() in contents
|
||||
|
||||
if(istype(I, /obj/item/glassblowing/molten_glass))
|
||||
@@ -161,7 +175,7 @@
|
||||
in_use = FALSE
|
||||
return
|
||||
to_chat(user, span_notice("You begin using [I] on [src]."))
|
||||
if(!do_after(user, 5 SECONDS, target = src))
|
||||
if(!do_after(user, actioning_speed, target = src))
|
||||
to_chat(user, span_warning("You interrupt an action!"))
|
||||
in_use = FALSE
|
||||
return
|
||||
@@ -183,7 +197,7 @@
|
||||
in_use = FALSE
|
||||
return
|
||||
to_chat(user, span_notice("You begin using [I] on [src]."))
|
||||
if(!do_after(user, 5 SECONDS, target = src))
|
||||
if(!do_after(user, actioning_speed, target = src))
|
||||
to_chat(user, span_warning("You interrupt an action!"))
|
||||
in_use = FALSE
|
||||
return
|
||||
@@ -205,7 +219,7 @@
|
||||
in_use = FALSE
|
||||
return
|
||||
to_chat(user, span_notice("You begin using [I] on [src]."))
|
||||
if(!do_after(user, 5 SECONDS, target = src))
|
||||
if(!do_after(user, actioning_speed, target = src))
|
||||
to_chat(user, span_warning("You interrupt an action!"))
|
||||
in_use = FALSE
|
||||
return
|
||||
@@ -221,7 +235,9 @@
|
||||
return ..()
|
||||
|
||||
/obj/item/glassblowing/blowing_rod/attack_self(mob/user, modifiers)
|
||||
var/actioning_speed = HAS_TRAIT(user, TRAIT_GLASSBLOWING_MASTER) ? MASTER_TIMED : DEFAULT_TIMED
|
||||
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..."))
|
||||
@@ -265,7 +281,7 @@
|
||||
in_use = FALSE
|
||||
return
|
||||
to_chat(user, span_notice("You begin blowing [src]."))
|
||||
if(!do_after(user, 5 SECONDS, target = src))
|
||||
if(!do_after(user, actioning_speed, target = src))
|
||||
to_chat(user, span_warning("You interrupt an action!"))
|
||||
in_use = FALSE
|
||||
return
|
||||
@@ -281,7 +297,7 @@
|
||||
in_use = FALSE
|
||||
return
|
||||
to_chat(user, span_notice("You begin spinning [src]."))
|
||||
if(!do_after(user, 5 SECONDS, target = src))
|
||||
if(!do_after(user, actioning_speed, target = src))
|
||||
to_chat(user, span_warning("You interrupt an action!"))
|
||||
in_use = FALSE
|
||||
return
|
||||
@@ -374,3 +390,6 @@
|
||||
has_sand = TRUE
|
||||
icon_state = "metal_cup_full"
|
||||
return ..()
|
||||
|
||||
#undef DEFAULT_TIMED
|
||||
#undef MASTER_TIMED
|
||||
|
||||
@@ -1,3 +1,9 @@
|
||||
#define DEFAULT_TIMED 5 SECONDS
|
||||
#define MASTER_TIMED 2 SECONDS
|
||||
|
||||
#define DEFAULT_HEATED 25 SECONDS
|
||||
#define MASTER_HEATED 50 SECONDS
|
||||
|
||||
/obj/structure/reagent_forge
|
||||
name = "forge"
|
||||
desc = "A structure built out of bricks, with the intended purpose of heating up metal."
|
||||
@@ -512,6 +518,8 @@
|
||||
|
||||
if(istype(I, /obj/item/glassblowing/blowing_rod))
|
||||
var/obj/item/glassblowing/blowing_rod/blowing_item = I
|
||||
var/actioning_speed = HAS_TRAIT(user, TRAIT_GLASSBLOWING_MASTER) ? MASTER_TIMED : DEFAULT_TIMED
|
||||
var/actioning_amount = HAS_TRAIT(user, TRAIT_GLASSBLOWING_MASTER) ? MASTER_HEATED : DEFAULT_HEATED
|
||||
if(in_use) //only insert one at a time
|
||||
to_chat(user, span_warning("You cannot do multiple things at the same time!"))
|
||||
return
|
||||
@@ -526,18 +534,19 @@
|
||||
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
|
||||
if(!do_after(user, actioning_speed, 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 + actioning_amount
|
||||
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
|
||||
var/actioning_speed = HAS_TRAIT(user, TRAIT_GLASSBLOWING_MASTER) ? MASTER_TIMED : DEFAULT_TIMED
|
||||
var/actioning_amount = HAS_TRAIT(user, TRAIT_GLASSBLOWING_MASTER) ? MASTER_HEATED : DEFAULT_HEATED
|
||||
if(in_use) //only insert one at a time
|
||||
to_chat(user, span_warning("You cannot do multiple things at the same time!"))
|
||||
return
|
||||
@@ -550,17 +559,19 @@
|
||||
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))
|
||||
if(!do_after(user, actioning_speed, 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
|
||||
spawned_glass.world_molten = world.time + actioning_amount
|
||||
return
|
||||
|
||||
if(istype(I, /obj/item/glassblowing/metal_cup))
|
||||
var/obj/item/glassblowing/metal_cup/metal_item = I
|
||||
var/actioning_speed = HAS_TRAIT(user, TRAIT_GLASSBLOWING_MASTER) ? MASTER_TIMED : DEFAULT_TIMED
|
||||
var/actioning_amount = HAS_TRAIT(user, TRAIT_GLASSBLOWING_MASTER) ? MASTER_HEATED : DEFAULT_HEATED
|
||||
if(in_use) //only insert one at a time
|
||||
to_chat(user, span_warning("You cannot do multiple things at the same time!"))
|
||||
return
|
||||
@@ -573,7 +584,7 @@
|
||||
to_chat(user, span_warning("There is no sand within [metal_item]!"))
|
||||
in_use = FALSE
|
||||
return
|
||||
if(!do_after(user, 5 SECONDS, target = src))
|
||||
if(!do_after(user, actioning_speed, target = src))
|
||||
to_chat(user, span_warning("You stop heating up [metal_item]!"))
|
||||
in_use = FALSE
|
||||
return
|
||||
@@ -581,7 +592,7 @@
|
||||
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
|
||||
spawned_glass.world_molten = world.time + actioning_amount
|
||||
return
|
||||
|
||||
return ..()
|
||||
@@ -591,3 +602,9 @@
|
||||
reagent_forging = TRUE
|
||||
sinew_lower_chance = 100
|
||||
forge_temperature = 1000
|
||||
|
||||
#undef DEFAULT_TIMED
|
||||
#undef MASTER_TIMED
|
||||
|
||||
#undef DEFAULT_HEATED
|
||||
#undef MASTER_HEATED
|
||||
|
||||
Reference in New Issue
Block a user