diff --git a/code/modules/spellbook/_spellbook.dm b/code/modules/spellbook/_spellbook.dm
index 6f25daa7d35..c70142fef9d 100644
--- a/code/modules/spellbook/_spellbook.dm
+++ b/code/modules/spellbook/_spellbook.dm
@@ -66,7 +66,8 @@ GLOBAL_LIST_EMPTY(spells_by_categories)
/obj/item/spellbook/interact(mob/living/user)
var/dat = null
- dat += "Your spell points: [user.mind.mana.spell_points].
"
+ dat += "Your spell power: [user.mind.mana.spell_points].
"
+ dat += "Your mana level: [user.mind.mana.mana_level] / [user.mind.mana.mana_level_max].
"
dat += "Applied categories: [english_list(spell_categories, "None")].
"
dat += "
"
for(var/spell_type in allowed_spells)
diff --git a/code/modules/spells/aimed/water_slash.dm b/code/modules/spells/aimed/water_slash.dm
index bd235563bb6..dce594ffc6f 100644
--- a/code/modules/spells/aimed/water_slash.dm
+++ b/code/modules/spells/aimed/water_slash.dm
@@ -41,7 +41,7 @@
break
var/dense_obj = FALSE
for(var/obj/O in T)
- if(O.density)
+ if(O.density && !istype(O, /obj/structure/table) && !istype(O, /obj/structure/railing))
dense_obj = TRUE
break
if(dense_obj)
@@ -76,7 +76,7 @@
blood_col = H.species.blood_color
// BLOOD BLOOD BLOOD
for(var/i = 1 to min(round(slash_damage * 0.05), 15))
- new /obj/effect/temp_visual/bloodsplatter(LT, get_dir(LT, start_turf), blood_col)
+ new /obj/effect/temp_visual/bloodsplatter(LT, prob(25) ? pick(GLOB.alldirs) : get_dir(LT, start_turf), blood_col)
if(!istype(LT))
continue
LT.add_blood(L)
diff --git a/code/modules/spells/general/end_of_everything.dm b/code/modules/spells/general/end_of_everything.dm
new file mode 100644
index 00000000000..9bcc74b20f2
--- /dev/null
+++ b/code/modules/spells/general/end_of_everything.dm
@@ -0,0 +1,83 @@
+/datum/spell/end_of_everything
+ name = "End of Everything"
+ desc = "Forbidden art of summoning darkest energies from within the veil of magic itself. You are a part of \"everything\", so it might be a bad idea to do it..."
+ invocation_type = INVOKE_SHOUT
+ invocation = "Arcesso!"
+ spell_flags = NEEDSCLOTHES
+ charge_max = 2 MINUTES
+ categories = list(SPELL_CATEGORY_FORBIDDEN)
+ level_max = list(UPGRADE_TOTAL = 0, UPGRADE_SPEED = 0, UPGRADE_POWER = 0)
+ cast_sound = 'sound/magic/churchbell.ogg'
+ hud_state = "wiz_endall"
+
+ spell_cost = 100
+ mana_cost = 200
+
+ var/list/active_effects = list()
+
+/datum/spell/end_of_everything/Destroy()
+ ClearEffects()
+ return ..()
+
+/datum/spell/end_of_everything/cast(list/targets, mob/user)
+ if(!do_after(user, 10 SECONDS))
+ to_chat(user, SPAN_NOTICE("You cancel the ritual!"))
+ ClearEffects()
+ return
+ if(!CastCheck(user))
+ to_chat(user, SPAN_NOTICE("You cancel the ritual!"))
+ ClearEffects()
+ return
+
+ user.say("Interitus!")
+
+ if(!do_after(user, 10 SECONDS))
+ to_chat(user, SPAN_NOTICE("You cancel the ritual!"))
+ ClearEffects()
+ return
+ if(!CastCheck(user))
+ to_chat(user, SPAN_NOTICE("You cancel the ritual!"))
+ ClearEffects()
+ return
+
+ user.say("Annihilatio!")
+
+ if(!do_after(user, 10 SECONDS))
+ to_chat(user, SPAN_NOTICE("You cancel the ritual!"))
+ ClearEffects()
+ return
+ if(!CastCheck(user))
+ to_chat(user, SPAN_NOTICE("You cancel the ritual!"))
+ ClearEffects()
+ return
+
+ user.say("Mors et aegritudo!")
+
+ if(!do_after(user, 10 SECONDS))
+ to_chat(user, SPAN_NOTICE("You cancel the ritual!"))
+ ClearEffects()
+ return
+ if(!CastCheck(user))
+ to_chat(user, SPAN_NOTICE("You cancel the ritual!"))
+ ClearEffects()
+ return
+
+ user.say("Cruel gods, end it all!!")
+ to_chat(user, SPAN_WARNING("You feel like you should run..."))
+ log_and_message_admins("finished casting [src] spell!", user)
+
+ new /obj/effect/end_of_everything(get_turf(user))
+
+/datum/spell/end_of_everything/proc/CastCheck(mob/user)
+ if(!user || QDELETED(user))
+ return FALSE
+ if(user.stat)
+ return FALSE
+ return TRUE
+
+/datum/spell/end_of_everything/proc/ClearEffects()
+ for(var/datum/D in active_effects)
+ qdel(D)
+ active_effects = null
+
+/obj/effect/end_of_everything
diff --git a/icons/mob/screen_spells.dmi b/icons/mob/screen_spells.dmi
index 0c164f627fd..d46ff79ff9c 100644
Binary files a/icons/mob/screen_spells.dmi and b/icons/mob/screen_spells.dmi differ
diff --git a/maps/away/wizard_den/wizard_den.dm b/maps/away/wizard_den/wizard_den.dm
index c9f0f10e47d..8096acfd14b 100644
--- a/maps/away/wizard_den/wizard_den.dm
+++ b/maps/away/wizard_den/wizard_den.dm
@@ -24,7 +24,7 @@
/datum/map_template/ruin/away_site/wizard_den
name = "Wizard Den"
- description = "Three z-level map with a shrouded planet with big wizard den."
+ description = "Three z-level map on a shrouded planet with big wizard den."
id = "wizard_den"
spawn_cost = 4
suffixes = list("wizard_den/wizard_den-1.dmm")
diff --git a/sound/magic/churchbell.ogg b/sound/magic/churchbell.ogg
new file mode 100644
index 00000000000..ad9c4ee3c1b
Binary files /dev/null and b/sound/magic/churchbell.ogg differ