diff --git a/code/game/objects/items/his_grace.dm b/code/game/objects/items/his_grace.dm
index a0523552373..043a5578870 100644
--- a/code/game/objects/items/his_grace.dm
+++ b/code/game/objects/items/his_grace.dm
@@ -7,16 +7,18 @@
/obj/item/his_grace
name = "artistic toolbox"
desc = "A toolbox painted bright green. Looking at it makes you feel uneasy."
- icon_state = "his_grace"
+ icon = 'icons/obj/storage.dmi'
+ icon_state = "green"
inhand_icon_state = "artistic_toolbox"
lefthand_file = 'icons/mob/inhands/equipment/toolbox_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/toolbox_righthand.dmi'
- icon = 'icons/obj/items_and_weapons.dmi'
w_class = WEIGHT_CLASS_GIGANTIC
force = 12
attack_verb_continuous = list("robusts")
attack_verb_simple = list("robust")
hitsound = 'sound/weapons/smash.ogg'
+ drop_sound = 'sound/items/handling/toolbox_drop.ogg'
+ pickup_sound = 'sound/items/handling/toolbox_pickup.ogg'
var/awakened = FALSE
var/bloodthirst = HIS_GRACE_SATIATED
var/prev_bloodthirst = HIS_GRACE_SATIATED
@@ -30,6 +32,7 @@
START_PROCESSING(SSprocessing, src)
AddElement(/datum/element/point_of_interest)
RegisterSignal(src, COMSIG_MOVABLE_POST_THROW, .proc/move_gracefully)
+ update_appearance()
/obj/item/his_grace/Destroy()
STOP_PROCESSING(SSprocessing, src)
@@ -37,6 +40,20 @@
L.forceMove(get_turf(src))
return ..()
+/obj/item/his_grace/update_icon_state()
+ icon_state = ascended ? "gold" : "green"
+ inhand_icon_state = ascended ? "toolbox_gold" : "artistic_toolbox"
+ return ..()
+
+/obj/item/his_grace/update_overlays()
+ . = ..()
+ if(ascended)
+ . += "triple_latch"
+ else if(awakened)
+ . += "single_latch_open"
+ else
+ . += "single_latch"
+
/obj/item/his_grace/attack_self(mob/living/user)
if(!awakened)
INVOKE_ASYNC(src, .proc/awaken, user)
@@ -132,7 +149,7 @@
adjust_bloodthirst(1)
force_bonus = HIS_GRACE_FORCE_BONUS * LAZYLEN(contents)
playsound(user, 'sound/effects/pope_entry.ogg', 100)
- icon_state = "his_grace_awakened"
+ update_appearance()
move_gracefully()
/obj/item/his_grace/proc/move_gracefully()
@@ -165,13 +182,13 @@
playsound(loc, 'sound/weapons/batonextend.ogg', 100, TRUE)
name = initial(name)
desc = initial(desc)
- icon_state = initial(icon_state)
animate(src, transform=matrix())
gender = initial(gender)
force = initial(force)
force_bonus = initial(force_bonus)
awakened = FALSE
bloodthirst = 0
+ update_appearance()
/obj/item/his_grace/proc/consume(mob/living/meal) //Here's your dinner, Mr. Grace.
if(!meal)
@@ -247,11 +264,11 @@
var/mob/living/carbon/human/master = loc
force_bonus += ascend_bonus
desc = "A legendary toolbox and a distant artifact from The Age of Three Powers. On its three latches engraved are the words \"The Sun\", \"The Moon\", and \"The Stars\". The entire toolbox has the words \"The World\" engraved into its sides."
- icon_state = "his_grace_ascended"
- inhand_icon_state = "toolbox_gold"
ascended = TRUE
+ update_appearance()
playsound(src, 'sound/effects/his_grace_ascend.ogg', 100)
if(istype(master))
+ master.update_inv_hands()
master.visible_message("Gods will be watching.")
name = "[master]'s mythical toolbox of three powers"
master.client?.give_award(/datum/award/achievement/misc/ascension, master)
diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm
index 367d0ca2742..e5f9adb58fc 100644
--- a/code/game/objects/items/toys.dm
+++ b/code/game/objects/items/toys.dm
@@ -401,21 +401,34 @@
/obj/item/toy/windup_toolbox
name = "windup toolbox"
desc = "A replica toolbox that rumbles when you turn the key."
- icon_state = "his_grace"
+ icon = 'icons/obj/storage.dmi'
+ icon_state = "green"
inhand_icon_state = "artistic_toolbox"
lefthand_file = 'icons/mob/inhands/equipment/toolbox_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/toolbox_righthand.dmi'
- var/active = FALSE
- icon = 'icons/obj/items_and_weapons.dmi'
hitsound = 'sound/weapons/smash.ogg'
+ drop_sound = 'sound/items/handling/toolbox_drop.ogg'
+ pickup_sound = 'sound/items/handling/toolbox_pickup.ogg'
attack_verb_continuous = list("robusts")
attack_verb_simple = list("robust")
+ var/active = FALSE
+
+/obj/item/toy/windup_toolbox/Initialize(mapload)
+ . = ..()
+ update_appearance()
+
+/obj/item/toy/windup_toolbox/update_overlays()
+ . = ..()
+ if(active)
+ . += "single_latch_open"
+ else
+ . += "single_latch"
/obj/item/toy/windup_toolbox/attack_self(mob/user)
if(!active)
- icon_state = "his_grace_awakened"
to_chat(user, "You wind up [src], it begins to rumble.")
active = TRUE
+ update_appearance()
playsound(src, 'sound/effects/pope_entry.ogg', 100)
Rumble()
addtimer(CALLBACK(src, .proc/stopRumble), 600)
@@ -440,9 +453,11 @@
animate(transform=transforms[4], time=0.3)
/obj/item/toy/windup_toolbox/proc/stopRumble()
- icon_state = initial(icon_state)
active = FALSE
- animate(src, transform=matrix())
+ update_appearance()
+ visible_message("[src] slowly stops rattling and falls still, its latch snapping shut.") //subtle difference
+ playsound(loc, 'sound/weapons/batonextend.ogg', 100, TRUE)
+ animate(src, transform = matrix())
/*
* Subtype of Double-Bladed Energy Swords
diff --git a/icons/obj/items_and_weapons.dmi b/icons/obj/items_and_weapons.dmi
index 4fd32b6999a..396a30c4425 100644
Binary files a/icons/obj/items_and_weapons.dmi and b/icons/obj/items_and_weapons.dmi differ
diff --git a/icons/obj/storage.dmi b/icons/obj/storage.dmi
index ac5a5bc3aa7..05da72ae589 100644
Binary files a/icons/obj/storage.dmi and b/icons/obj/storage.dmi differ