mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-07-20 20:45:28 +01:00
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.  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:
@@ -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 |
Reference in New Issue
Block a user