diff --git a/code/game/objects/items/his_grace.dm b/code/game/objects/items/his_grace.dm index ed5e7638748..1ca335eb547 100644 --- a/code/game/objects/items/his_grace.dm +++ b/code/game/objects/items/his_grace.dm @@ -25,6 +25,7 @@ . = ..() START_PROCESSING(SSprocessing, src) GLOB.poi_list += src + AddComponent(/datum/component/redirect, list(COMSIG_MOVABLE_POST_THROW = CALLBACK(src, .proc/move_gracefully))) /obj/item/his_grace/Destroy() STOP_PROCESSING(SSprocessing, src) @@ -129,6 +130,27 @@ force_bonus = HIS_GRACE_FORCE_BONUS * LAZYLEN(contents) playsound(user, 'sound/effects/pope_entry.ogg', 100) icon_state = "his_grace_awakened" + move_gracefully() + +/obj/item/his_grace/proc/move_gracefully() + if(!awakened) + return + var/static/list/transforms + if(!transforms) + var/matrix/M1 = matrix() + var/matrix/M2 = matrix() + var/matrix/M3 = matrix() + var/matrix/M4 = matrix() + M1.Translate(-1, 0) + M2.Translate(0, 1) + M3.Translate(1, 0) + M4.Translate(0, -1) + transforms = list(M1, M2, M3, M4) + + animate(src, transform=transforms[1], time=0.2, loop=-1) + animate(transform=transforms[2], time=0.1) + animate(transform=transforms[3], time=0.2) + animate(transform=transforms[4], time=0.3) /obj/item/his_grace/proc/drowse() //Good night, Mr. Grace. if(!awakened) @@ -139,6 +161,7 @@ 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) diff --git a/icons/obj/items_and_weapons.dmi b/icons/obj/items_and_weapons.dmi index bae64f4c554..77b931c4169 100644 Binary files a/icons/obj/items_and_weapons.dmi and b/icons/obj/items_and_weapons.dmi differ