diff --git a/code/_globalvars/lists/objects.dm b/code/_globalvars/lists/objects.dm index ad295167cf..14c752613b 100644 --- a/code/_globalvars/lists/objects.dm +++ b/code/_globalvars/lists/objects.dm @@ -38,4 +38,4 @@ GLOBAL_LIST_EMPTY(wire_name_directory) GLOBAL_LIST_EMPTY(ai_status_displays) GLOBAL_LIST_EMPTY(mob_spawners) // All mob_spawn objects -GLOBAL_LIST_EMPTY(alert_consoles) // Station alert consoles, /obj/machinery/computer/station_alert \ No newline at end of file +GLOBAL_LIST_EMPTY(alert_consoles) // Station alert consoles, /obj/machinery/computer/station_alert diff --git a/code/game/alternate_appearance.dm b/code/game/alternate_appearance.dm index 712b3425e0..1a62a0fd5f 100644 --- a/code/game/alternate_appearance.dm +++ b/code/game/alternate_appearance.dm @@ -124,3 +124,20 @@ GLOBAL_LIST_EMPTY(active_alternate_appearances) /datum/atom_hud/alternate_appearance/basic/observers/mobShouldSee(mob/M) return isobserver(M) + +/datum/atom_hud/alternate_appearance/basic/blessedAware + +/datum/atom_hud/alternate_appearance/basic/blessedAware/New() + ..() + for(var/mob in GLOB.mob_list) + if(mobShouldSee(mob)) + add_hud_to(mob) + +/datum/atom_hud/alternate_appearance/basic/blessedAware/mobShouldSee(mob/M) + if(M.mind && (M.mind.assigned_role == "Chaplain")) + return TRUE + if (istype(M, /mob/living/simple_animal/hostile/construct/wraith)) + return TRUE + if(isrevenant(M) || iseminence(M) || iswizard(M)) + return TRUE + return FALSE \ No newline at end of file diff --git a/code/game/gamemodes/clock_cult/clock_mobs/_eminence.dm b/code/game/gamemodes/clock_cult/clock_mobs/_eminence.dm index b53caee281..b3ac43a6c7 100644 --- a/code/game/gamemodes/clock_cult/clock_mobs/_eminence.dm +++ b/code/game/gamemodes/clock_cult/clock_mobs/_eminence.dm @@ -26,7 +26,7 @@ var/OldLoc = loc if(NewLoc && !istype(NewLoc, /turf/open/indestructible/reebe_void)) var/turf/T = get_turf(NewLoc) - if(T.flags_1 & NOJAUNT_1) + for(var/obj/effect/blessing/B in T) if(last_failed_turf != T) T.visible_message("[T] suddenly emits a ringing sound!", ignore_mob = src) playsound(T, 'sound/machines/clockcult/ark_damage.ogg', 75, FALSE) diff --git a/code/game/gamemodes/miniantags/revenant/revenant.dm b/code/game/gamemodes/miniantags/revenant/revenant.dm index 0719072077..94775887f9 100644 --- a/code/game/gamemodes/miniantags/revenant/revenant.dm +++ b/code/game/gamemodes/miniantags/revenant/revenant.dm @@ -224,7 +224,6 @@ invisibility = INVISIBILITY_ABSTRACT revealed = FALSE ghostize(0)//Don't re-enter invisible corpse - return //reveal, stun, icon updates, cast checks, and essence changing diff --git a/code/game/gamemodes/miniantags/revenant/revenant_abilities.dm b/code/game/gamemodes/miniantags/revenant/revenant_abilities.dm index c401dfea52..5530db7881 100644 --- a/code/game/gamemodes/miniantags/revenant/revenant_abilities.dm +++ b/code/game/gamemodes/miniantags/revenant/revenant_abilities.dm @@ -238,9 +238,10 @@ INVOKE_ASYNC(src, .proc/defile, T) /obj/effect/proc_holder/spell/aoe_turf/revenant/defile/proc/defile(turf/T) - if(T.flags_1 & NOJAUNT_1) - T.flags_1 &= ~NOJAUNT_1 + for(var/obj/effect/blessing/B in T) + qdel(B) new /obj/effect/temp_visual/revenant(T) + if(!isplatingturf(T) && !istype(T, /turf/open/floor/engine/cult) && isfloorturf(T) && prob(15)) var/turf/open/floor/floor = T if(floor.intact && floor.floor_tile) diff --git a/code/game/objects/effects/blessing.dm b/code/game/objects/effects/blessing.dm new file mode 100644 index 0000000000..06ba2bb47c --- /dev/null +++ b/code/game/objects/effects/blessing.dm @@ -0,0 +1,18 @@ +/obj/effect/blessing + name = "holy blessing" + desc = "Holy energies interfere with ethereal travel at this location." + icon = 'icons/effects/effects.dmi' + icon_state = null + anchored = TRUE + density = FALSE + mouse_opacity = MOUSE_OPACITY_TRANSPARENT + +/obj/effect/blessing/Initialize(mapload) + . = ..() + for(var/obj/effect/blessing/B in loc) + if(B != src) + return INITIALIZE_HINT_QDEL + var/image/I = image(icon = 'icons/effects/effects.dmi', icon_state = "blessed", layer = ABOVE_OPEN_TURF_LAYER, loc = src) + I.alpha = 64 + I.appearance_flags = RESET_ALPHA + add_alt_appearance(/datum/atom_hud/alternate_appearance/basic/blessedAware, "blessing", I) diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm index 472df91354..c9d3e18743 100755 --- a/code/game/turfs/turf.dm +++ b/code/game/turfs/turf.dm @@ -264,7 +264,7 @@ M.take_damage(damage*2, BRUTE, "melee", 1) /turf/proc/Bless() - flags_1 |= NOJAUNT_1 + new /obj/effect/blessing(src) /turf/storage_contents_dump_act(obj/item/storage/src_object, mob/user) if(src_object.contents.len) diff --git a/code/modules/mob/mob_movement.dm b/code/modules/mob/mob_movement.dm index 4a7278289c..0b770888ec 100644 --- a/code/modules/mob/mob_movement.dm +++ b/code/modules/mob/mob_movement.dm @@ -212,9 +212,13 @@ R.stun(20) return if(stepTurf.flags_1 & NOJAUNT_1) - to_chat(L, "Holy energies block your path.") - else - L.loc = get_step(L, direct) + to_chat(L, "Some strange aura is blocking the way.") + return + if (locate(/obj/effect/blessing, stepTurf)) + to_chat(L, "Holy energies block your path!") + return + + L.loc = get_step(L, direct) L.setDir(direct) return TRUE diff --git a/code/modules/spells/spell_types/ethereal_jaunt.dm b/code/modules/spells/spell_types/ethereal_jaunt.dm index 79d53d5f49..e438966f45 100644 --- a/code/modules/spells/spell_types/ethereal_jaunt.dm +++ b/code/modules/spells/spell_types/ethereal_jaunt.dm @@ -85,12 +85,18 @@ return var/turf/newLoc = get_step(src,direction) setDir(direction) - if(!(newLoc.flags_1 & NOJAUNT_1)) - forceMove(newLoc) - else - to_chat(user, "Some strange aura is blocking the way!") + movedelay = world.time + movespeed + if(newLoc.flags_1 & NOJAUNT_1) + to_chat(user, "Some strange aura is blocking the way.") + return + if (locate(/obj/effect/blessing, newLoc)) + to_chat(user, "Holy energies block your path!") + return + + forceMove(newLoc) + /obj/effect/dummy/spell_jaunt/ex_act(blah) return /obj/effect/dummy/spell_jaunt/bullet_act(blah) diff --git a/icons/effects/effects.dmi b/icons/effects/effects.dmi index 3451915c09..c05ac6d022 100644 Binary files a/icons/effects/effects.dmi and b/icons/effects/effects.dmi differ diff --git a/tgstation.dme b/tgstation.dme index 48f6d1694a..4b7ac36d32 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -820,6 +820,7 @@ #include "code\game\objects\structures.dm" #include "code\game\objects\effects\alien_acid.dm" #include "code\game\objects\effects\anomalies.dm" +#include "code\game\objects\effects\blessing.dm" #include "code\game\objects\effects\bump_teleporter.dm" #include "code\game\objects\effects\contraband.dm" #include "code\game\objects\effects\countdown.dm"