mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-22 19:47:22 +01:00
@@ -4,6 +4,8 @@
|
||||
icon = 'icons/obj/machines/large_smithing_machines.dmi'
|
||||
icon_state = "furnace_off"
|
||||
operation_sound = 'sound/surgery/cautery1.ogg'
|
||||
/// How much the device heats the component
|
||||
var/heat_amount = 5
|
||||
|
||||
/obj/machinery/smithing/lava_furnace/Initialize(mapload)
|
||||
. = ..()
|
||||
@@ -19,10 +21,13 @@
|
||||
|
||||
/obj/machinery/smithing/lava_furnace/RefreshParts()
|
||||
var/operation_mult = 0
|
||||
var/heat_mult = 0
|
||||
for(var/obj/item/stock_parts/component in component_parts)
|
||||
operation_mult += OPERATION_SPEED_MULT_PER_RATING * component.rating
|
||||
heat_mult += 0.25 * component.rating
|
||||
// Update our values
|
||||
operation_time = max(ROUND_UP(initial(operation_time) * (1.3 - operation_mult)), 2)
|
||||
heat_amount = round(5 * heat_mult)
|
||||
|
||||
/obj/machinery/smithing/lava_furnace/update_overlays()
|
||||
. = ..()
|
||||
@@ -42,14 +47,14 @@
|
||||
update_icon(UPDATE_OVERLAYS)
|
||||
|
||||
/obj/machinery/smithing/lava_furnace/operate(loops, mob/living/user)
|
||||
if(working_component.hot)
|
||||
if(working_component.heat > 10)
|
||||
to_chat(user, "<span class='notice'>[working_component] is already well heated.</span>")
|
||||
return
|
||||
if(working_component.hammer_time <= 0)
|
||||
to_chat(user, "<span class='notice'>[working_component] is already fully shaped.</span>")
|
||||
return
|
||||
..()
|
||||
working_component.heat_up()
|
||||
working_component.heat_up(heat_amount)
|
||||
|
||||
/obj/machinery/smithing/lava_furnace/attack_hand(mob/user)
|
||||
. = ..()
|
||||
|
||||
@@ -47,7 +47,7 @@
|
||||
operation_time = max(ROUND_UP(initial(operation_time) * (1.3 - operation_mult)), 2)
|
||||
|
||||
/obj/machinery/smithing/power_hammer/operate(loops, mob/living/user)
|
||||
if(!working_component.hot)
|
||||
if(!working_component.heat)
|
||||
to_chat(user, "<span class='notice'>[working_component] is too cold to properly shape.</span>")
|
||||
return
|
||||
if(working_component.hammer_time <= 0)
|
||||
@@ -57,7 +57,7 @@
|
||||
working_component.powerhammer()
|
||||
do_sparks(5, TRUE, src)
|
||||
// If the hammer is set to repeat mode, let it repeat operations automatically.
|
||||
if(repeating && working_component.hot && working_component.hammer_time)
|
||||
if(repeating && working_component.heat && working_component.hammer_time)
|
||||
operate(loops, user)
|
||||
// When an item is done, beep.
|
||||
if(!working_component.hammer_time)
|
||||
|
||||
@@ -7,39 +7,54 @@
|
||||
var/part_type
|
||||
/// What is this a part of
|
||||
var/finished_product
|
||||
/// Is this component currently hot
|
||||
var/hot = TRUE
|
||||
/// Heat stacks on the component
|
||||
var/heat = 5
|
||||
/// How often does a component lose heat stacks
|
||||
var/cool_time = 10 SECONDS
|
||||
/// How many times the component needs to be shaped to be considered ready
|
||||
var/hammer_time = 3
|
||||
|
||||
/obj/item/smithed_item/component/Initialize(mapload)
|
||||
. = ..()
|
||||
addtimer(CALLBACK(src, PROC_REF(cool_off)), cool_time)
|
||||
|
||||
/obj/item/smithed_item/component/update_icon_state()
|
||||
. = ..()
|
||||
if(hot)
|
||||
if(heat)
|
||||
icon_state = "[initial(icon_state)]_hot"
|
||||
else
|
||||
icon_state = "[initial(icon_state)]"
|
||||
|
||||
/obj/item/smithed_item/component/proc/powerhammer()
|
||||
hammer_time--
|
||||
if(prob(50) || hammer_time <= 0)
|
||||
hot = FALSE
|
||||
update_icon(UPDATE_ICON_STATE)
|
||||
|
||||
/obj/item/smithed_item/component/proc/heat_up()
|
||||
hot = TRUE
|
||||
if(!hammer_time)
|
||||
heat = 0
|
||||
update_icon(UPDATE_ICON_STATE)
|
||||
|
||||
/obj/item/smithed_item/component/proc/heat_up(heat_to_add)
|
||||
heat += heat_to_add
|
||||
if(heat)
|
||||
addtimer(CALLBACK(src, PROC_REF(cool_off)), cool_time)
|
||||
update_icon(UPDATE_ICON_STATE)
|
||||
|
||||
/obj/item/smithed_item/component/proc/cool_off()
|
||||
heat--
|
||||
if(heat)
|
||||
addtimer(CALLBACK(src, PROC_REF(cool_off)), cool_time)
|
||||
else
|
||||
update_icon(UPDATE_ICON_STATE)
|
||||
|
||||
/obj/item/smithed_item/component/examine(mob/user)
|
||||
. = ..()
|
||||
if(hammer_time)
|
||||
. += "It is incomplete. It looks like it needs [hammer_time] more cycles in the power hammer."
|
||||
else
|
||||
. += "It is complete."
|
||||
if(hot)
|
||||
if(heat)
|
||||
. +="<span class='warning'>It is glowing hot!</span>"
|
||||
|
||||
/obj/item/smithed_item/component/attack_hand(mob/user)
|
||||
if(!hot)
|
||||
if(!heat)
|
||||
return ..()
|
||||
if(burn_check(user))
|
||||
burn_user(user)
|
||||
@@ -52,7 +67,7 @@
|
||||
hammer_time = ROUND_UP(initial(hammer_time) * quality.work_mult)
|
||||
|
||||
/obj/item/smithed_item/component/proc/burn_check(mob/user)
|
||||
if(!hot)
|
||||
if(!heat)
|
||||
return FALSE
|
||||
var/burn_me = TRUE
|
||||
var/mob/living/carbon/human/H = user
|
||||
|
||||
Reference in New Issue
Block a user