glassblowing/ceramic skills and changes (#8841)

This commit is contained in:
jjpark-kb
2021-10-17 12:47:08 +01:00
committed by GitHub
parent bfabf1b5e9
commit 93fb2a3cb9
6 changed files with 98 additions and 17 deletions
+6
View File
@@ -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"
+5
View File
@@ -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