New Heretic rune sprites & animations (#72415)

## About The Pull Request

I made some magic circle animations for a downstream antagonist (coming
to tg 2023?) and people told me "Jacquerel heretic should also do
something like this" so after several hours of madness now they do.


![image](https://user-images.githubusercontent.com/7483112/210856249-f59ea631-5ea2-4aa4-bff3-cac2469fde8e.png)

This PR redraws the Heretic Transmutation Rune, and adds new effects for
drawing and unsummoning it.
The below videos are slightly outdated because the base colour is a tad
lighter now but you'll get the idea.



https://user-images.githubusercontent.com/7483112/210192981-0a34f3f9-ec78-4332-8148-896886d4d344.mp4


The animation is the same if you use the Codex Cicatrix, just the gaps
between steps are shorter.
Additionally, your rune effects are now coloured based on your heretic
path.



https://user-images.githubusercontent.com/7483112/210192985-4bda65af-5655-43a2-9685-0ca4d1519c87.mp4


Now the only caveat I can think of here is that as the 30 second long
drawing process now comes with flashy effects this _does_ make you
potentially more visible to random people who wander into your secret
den than previously, however as that would require them to overlook you
standing completely still with a _burning hand_ I don't think that
should be a massive issue.
Nobody was relying on the extremely long action bar having no animation
to draw runes in the middle of rooms full of people... right?

## Why It's Good For The Game

It looks cool.

## Changelog

🆑
imageadd: New look and animations for the Heretic's transmutation rune
/🆑
This commit is contained in:
Jacquerel
2023-01-08 21:13:54 +00:00
committed by GitHub
parent d3c059e2dd
commit 64905910cc
7 changed files with 125 additions and 3 deletions
@@ -985,3 +985,8 @@
name = "Quantum Keycard"
icon_file = 'icons/obj/device.dmi'
json_config = 'code/datums/greyscale/json_configs/quantum_keycard.json'
/datum/greyscale_config/heretic_rune
name = "Transmutation Rune"
icon_file = 'icons/effects/96x96.dmi'
json_config = 'code/datums/greyscale/json_configs/heretic_rune.json'
@@ -0,0 +1,62 @@
{
"transmutation_rune": [
{
"type": "icon_state",
"icon_state": "transmutation_rune",
"blend_mode": "overlay",
"color_ids": [ 1 ]
}
],
"transmutation_rune_active": [
{
"type": "icon_state",
"icon_state": "transmutation_rune_activate_colour",
"blend_mode": "overlay",
"color_ids": [ 1 ]
},
{
"type": "icon_state",
"icon_state": "transmutation_rune_activate_white",
"blend_mode": "overlay"
}
],
"transmutation_rune_draw": [
{
"type": "icon_state",
"icon_state": "transmutation_rune_draw_colour",
"blend_mode": "overlay",
"color_ids": [ 1 ]
},
{
"type": "icon_state",
"icon_state": "transmutation_rune_draw_white",
"blend_mode": "overlay"
}
],
"transmutation_rune_fast": [
{
"type": "icon_state",
"icon_state": "transmutation_rune_fast_colour",
"blend_mode": "overlay",
"color_ids": [ 1 ]
},
{
"type": "icon_state",
"icon_state": "transmutation_rune_fast_white",
"blend_mode": "overlay"
}
],
"transmutation_rune_fail": [
{
"type": "icon_state",
"icon_state": "transmutation_rune_fail_colour",
"blend_mode": "overlay",
"color_ids": [ 1 ]
},
{
"type": "icon_state",
"icon_state": "transmutation_rune_fail_white",
"blend_mode": "overlay"
}
]
}
@@ -59,6 +59,14 @@
PATH_VOID = "blue",
PATH_BLADE = "label", // my favorite color is label
)
var/static/list/path_to_rune_color = list(
PATH_START = COLOR_LIME,
PATH_RUST = COLOR_CARGO_BROWN,
PATH_FLESH = COLOR_SOFT_RED,
PATH_ASH = COLOR_VIVID_RED,
PATH_VOID = COLOR_CYAN,
PATH_BLADE = COLOR_SILVER
)
/datum/antagonist/heretic/Destroy()
LAZYNULL(sac_targets)
@@ -308,14 +316,24 @@
/datum/antagonist/heretic/proc/draw_rune(mob/living/user, turf/target_turf, drawing_time = 30 SECONDS, additional_checks)
drawing_rune = TRUE
var/rune_colour = path_to_rune_color[heretic_path]
target_turf.balloon_alert(user, "drawing rune...")
var/obj/effect/temp_visual/drawing_heretic_rune/drawing_effect
if (drawing_time >= (30 SECONDS))
drawing_effect = new(target_turf, rune_colour)
else
drawing_effect = new /obj/effect/temp_visual/drawing_heretic_rune/fast(target_turf, rune_colour)
if(!do_after(user, drawing_time, target_turf, extra_checks = additional_checks))
target_turf.balloon_alert(user, "interrupted!")
new /obj/effect/temp_visual/drawing_heretic_rune/fail(target_turf, rune_colour)
qdel(drawing_effect)
drawing_rune = FALSE
return
qdel(drawing_effect)
target_turf.balloon_alert(user, "rune created")
new /obj/effect/heretic_rune/big(target_turf)
new /obj/effect/heretic_rune/big(target_turf, rune_colour)
drawing_rune = FALSE
/**
@@ -13,8 +13,13 @@
AddComponent(/datum/component/effect_remover, \
success_feedback = "You remove %THEEFFECT.", \
tip_text = "Clear rune", \
on_clear_callback = CALLBACK(src, PROC_REF(after_clear_rune)), \
effects_we_clear = list(/obj/effect/heretic_rune))
/// Callback for effect_remover component after a rune is deleted
/obj/item/codex_cicatrix/proc/after_clear_rune(obj/effect/target, mob/living/user)
new /obj/effect/temp_visual/drawing_heretic_rune/fail(target.loc, target.greyscale_colors)
/obj/item/codex_cicatrix/examine(mob/user)
. = ..()
if(!IS_HERETIC(user))
@@ -75,6 +75,7 @@
* Callback for effect_remover component.
*/
/obj/item/melee/touch_attack/mansus_fist/proc/after_clear_rune(obj/effect/target, mob/living/user)
new /obj/effect/temp_visual/drawing_heretic_rune/fail(target.loc, target.greyscale_colors)
var/datum/action/cooldown/spell/touch/mansus_grasp/grasp = spell_which_made_us?.resolve()
grasp?.spell_feedback()
@@ -180,6 +180,37 @@
/// A 3x3 heretic rune. The kind heretics actually draw in game.
/obj/effect/heretic_rune/big
icon = 'icons/effects/96x96.dmi'
icon_state = "eldritch_rune1"
pixel_x = -32 //So the big ol' 96x96 sprite shows up right
icon_state = "transmutation_rune"
pixel_x = -33 //So the big ol' 96x96 sprite shows up right
pixel_y = -32
greyscale_config = /datum/greyscale_config/heretic_rune
/obj/effect/heretic_rune/big/Initialize(mapload, path_colour)
. = ..()
if (path_colour)
set_greyscale(colors = list(path_colour))
/obj/effect/temp_visual/drawing_heretic_rune
duration = 30 SECONDS
icon = 'icons/effects/96x96.dmi'
icon_state = "transmutation_rune"
pixel_x = -33
pixel_y = -32
plane = GAME_PLANE
layer = SIGIL_LAYER
greyscale_config = /datum/greyscale_config/heretic_rune
/// We only set this state after setting the colour, otherwise the animation doesn't colour correctly
var/animation_state = "transmutation_rune_draw"
/obj/effect/temp_visual/drawing_heretic_rune/Initialize(mapload, path_colour = COLOR_WHITE)
. = ..()
set_greyscale(colors = list(path_colour))
icon_state = animation_state
/obj/effect/temp_visual/drawing_heretic_rune/fast
duration = 12 SECONDS
animation_state = "transmutation_rune_fast"
/obj/effect/temp_visual/drawing_heretic_rune/fail
duration = 0.25 SECONDS
animation_state = "transmutation_rune_fail"
Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 MiB

After

Width:  |  Height:  |  Size: 1.8 MiB