diff --git a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_ash_walker_new.dmm b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_ash_walker_new.dmm index 1171cdbd9e0..ea1e9d3a722 100644 --- a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_ash_walker_new.dmm +++ b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_ash_walker_new.dmm @@ -279,6 +279,10 @@ }, /turf/simulated/floor/lava, /area/ruin/unpowered/ash_walkers) +"pL" = ( +/obj/effect/decal/ash_rune_centre, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) "pX" = ( /obj/structure/stone_tile/block{ dir = 4 @@ -355,6 +359,13 @@ "sJ" = ( /turf/simulated/wall/indestructible/boss, /area/ruin/unpowered/ash_walkers) +"sW" = ( +/obj/structure/stone_tile/surrounding_tile/cracked{ + dir = 1 + }, +/obj/effect/rune_animation_landmark, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/ash_walkers) "to" = ( /obj/structure/stone_tile/surrounding_tile/burnt{ dir = 8 @@ -1742,7 +1753,7 @@ ie Cd uH PD -qb +sW rd PD rl @@ -1776,7 +1787,7 @@ yv WX BR PD -PD +pL PD Lr kS diff --git a/code/modules/mining/ash_walkers/ash_rune.dm b/code/modules/mining/ash_walkers/ash_rune.dm new file mode 100644 index 00000000000..647c0e5a912 --- /dev/null +++ b/code/modules/mining/ash_walkers/ash_rune.dm @@ -0,0 +1,62 @@ +/obj/effect/decal/ash_rune_centre + name = "ash sigil" + desc = "Незаконченная руна, нарисованная на пепле." + icon = 'icons/effects/ash_runes.dmi' + icon_state = "runaash_1" + + ///Is our rune being transformed right now? Sanity check + var/transforming = FALSE + ///Is our rune activated? Another sanity check, love it + var/activated = FALSE + +// Our little cheat in order to make first rune activation unforgetable +/obj/effect/rune_animation_landmark + name = "ash rune" + icon = 'icons/effects/ashwalker_rune.dmi' + icon_state = "AshRun" + resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF + anchored = TRUE + plane = FLOOR_PLANE + +/obj/effect/rune_animation_landmark/Initialize(mapload) + . = ..() + icon_state = "" + invisibility = INVISIBILITY_MAXIMUM + +/obj/effect/rune_animation_landmark/proc/activate() + invisibility = 0 + flick("3", src) + icon_state = "AshRun" + visible_message(span_notice("руна полностью готова к использованию!")) + +/obj/effect/decal/ash_rune_centre/Initialize(mapload) + . = ..() + var/number = rand(1, 36) + icon_state = "runaash_[number]" + +/obj/effect/decal/ash_rune_centre/attackby(obj/item/I, mob/user, params) + if(!istype(I, /obj/item/melee/touch_attack/healtouch)) + return ..() + if(transforming) + return ..() + visible_message(span_notice("[user] прикасается рукой к руне.")) + transforming = TRUE + var/obj/effect/rune_animation_landmark/our_landmark = locate() in orange(3, src) + if(!our_landmark) + visible_message(span_warning("но ничего не происходит.")) + if(!activated) + our_landmark.activate() + activate_rune() + qdel(I) + return ATTACK_CHAIN_PROCEED + +/obj/effect/decal/ash_rune_centre/proc/activate_rune() + if(activated) + return + activated = TRUE + name = "ash rune" + desc = "полностью функционирующая руна, готовая для ритуальных действий." + AddComponent( \ + /datum/component/ritual_object, \ + /datum/ritual/ashwalker, \ + ) diff --git a/icons/effects/ash_runes.dmi b/icons/effects/ash_runes.dmi new file mode 100644 index 00000000000..711db361d61 Binary files /dev/null and b/icons/effects/ash_runes.dmi differ