diff --git a/code/game/gamemodes/cult/ritual.dm b/code/game/gamemodes/cult/ritual.dm
index cba7a96ef4..932719c856 100644
--- a/code/game/gamemodes/cult/ritual.dm
+++ b/code/game/gamemodes/cult/ritual.dm
@@ -527,7 +527,11 @@ var/global/list/rnwords = list("ire","ego","nahlizet","certum","veri","jatkaa","
user << "You do not have enough space to write a proper rune."
var/list/runes = list("teleport", "itemport", "tome", "armor", "convert", "tear in reality", "emp", "drain", "seer", "raise", "obscure", "reveal", "astral journey", "manifest", "imbue talisman", "sacrifice", "wall", "freedom", "cultsummon", "deafen", "blind", "bloodboil", "communicate", "stun")
r = input("Choose a rune to scribe", "Rune Scribing") in runes //not cancellable.
- var/obj/effect/rune/R = new /obj/effect/rune
+ if(locate(/obj/effect/rune) in user.loc)
+ user << "There is already a rune in this location."
+ return
+
+ var/obj/effect/rune/R = new /obj/effect/rune(user.loc)
if(istype(user, /mob/living/carbon/human))
var/mob/living/carbon/human/H = user
R.blood_DNA = list()
diff --git a/code/game/gamemodes/malfunction/newmalf_ability_trees/tree_networking.dm b/code/game/gamemodes/malfunction/newmalf_ability_trees/tree_networking.dm
index 4a163884c4..9b4871bbae 100644
--- a/code/game/gamemodes/malfunction/newmalf_ability_trees/tree_networking.dm
+++ b/code/game/gamemodes/malfunction/newmalf_ability_trees/tree_networking.dm
@@ -85,7 +85,7 @@
/datum/game_mode/malfunction/verb/advanced_encryption_hack()
set category = "Software"
- set name = "Advanced Encrypthion Hack"
+ set name = "Advanced Encryption Hack"
set desc = "75 CPU - Attempts to bypass encryption on Central Command Quantum Relay, giving you ability to fake centcom messages. Has chance of failing."
var/price = 75
var/mob/living/silicon/ai/user = usr
@@ -106,15 +106,12 @@
announce_hack_failure(user, "quantum message relay")
return
- var/datum/announcement/priority/command/AN = new/datum/announcement/priority/command()
- AN.title = title
- AN.Announce(text)
-
+ command_announcement.Announce(text, title)
/datum/game_mode/malfunction/verb/elite_encryption_hack()
set category = "Software"
set name = "Elite Encryption Hack"
- set desc = "200 CPU - Allows you to hack station's ALERTCON system, changing alert level. Has high chance of failijng."
+ set desc = "200 CPU - Allows you to hack station's ALERTCON system, changing alert level. Has high chance of failing."
var/price = 200
var/mob/living/silicon/ai/user = usr
if(!ability_prechecks(user, price))
diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm
index 287b86b145..4e6b0dc9f7 100644
--- a/code/game/machinery/doors/airlock.dm
+++ b/code/game/machinery/doors/airlock.dm
@@ -1067,8 +1067,8 @@ About the new airlock wires panel:
/obj/machinery/door/airlock/emp_act(var/severity)
if(prob(40/severity))
- var/duration = world.time + SecondsToTicks(30 / severity)
- if(duration > electrified_until)
+ var/duration = SecondsToTicks(30 / severity)
+ if(electrified_until > -1 && (duration + world.time) > electrified_until)
electrify(duration)
..()
diff --git a/code/modules/mob/living/carbon/human/unarmed_attack.dm b/code/modules/mob/living/carbon/human/unarmed_attack.dm
index 289b4a2273..1d148b96ea 100644
--- a/code/modules/mob/living/carbon/human/unarmed_attack.dm
+++ b/code/modules/mob/living/carbon/human/unarmed_attack.dm
@@ -32,6 +32,9 @@
/datum/unarmed_attack/proc/apply_effects(var/mob/living/carbon/human/user,var/mob/living/carbon/human/target,var/armour,var/attack_damage,var/zone)
+ if(target.stat == DEAD)
+ return
+
var/stun_chance = rand(0, 100)
if(attack_damage >= 5 && armour < 2 && !(target == user) && stun_chance <= attack_damage * 5) // 25% standard chance
@@ -233,4 +236,4 @@
switch(attack_damage)
if(1 to 4) user.visible_message("[pick("[user] stomped on", "[user] slammed \his [shoes ? copytext(shoes.name, 1, -1) : "foot"] down onto")] [target]'s [organ]!")
- if(5) user.visible_message("[pick("[user] landed a powerful stomp on", "[user] stomped down hard on", "[user] slammed \his [shoes ? copytext(shoes.name, 1, -1) : "foot"] down hard onto")] [target]'s [organ]!") //Devastated lol. No. We want to say that the stomp was powerful or forceful, not that it /wrought devastation/
\ No newline at end of file
+ if(5) user.visible_message("[pick("[user] landed a powerful stomp on", "[user] stomped down hard on", "[user] slammed \his [shoes ? copytext(shoes.name, 1, -1) : "foot"] down hard onto")] [target]'s [organ]!") //Devastated lol. No. We want to say that the stomp was powerful or forceful, not that it /wrought devastation/
diff --git a/code/modules/reagents/reagent_containers/food/condiment.dm b/code/modules/reagents/reagent_containers/food/condiment.dm
index a8184ac815..b5fd5e5344 100644
--- a/code/modules/reagents/reagent_containers/food/condiment.dm
+++ b/code/modules/reagents/reagent_containers/food/condiment.dm
@@ -25,7 +25,10 @@
if(standard_feed_mob(user, M))
return
- afterattack(var/obj/target, var/mob/user, var/flag)
+ afterattack(var/obj/target, var/mob/user, var/proximity)
+ if(!proximity)
+ return
+
if(standard_dispenser_refill(user, target))
return
if(standard_pour_into(user, target))
diff --git a/code/modules/spells/general/rune_write.dm b/code/modules/spells/general/rune_write.dm
index c110a76ac1..c28289d60f 100644
--- a/code/modules/spells/general/rune_write.dm
+++ b/code/modules/spells/general/rune_write.dm
@@ -21,6 +21,10 @@
runerandom()
var/list/runes = list("Teleport", "Teleport Other", "Spawn a Tome", "Change Construct Type", "Convert", "EMP", "Drain Blood", "See Invisible", "Resurrect", "Hide Runes", "Reveal Runes", "Astral Journey", "Manifest a Ghost", "Imbue Talisman", "Sacrifice", "Wall", "Free Cultist", "Summon Cultist", "Deafen", "Blind", "BloodBoil", "Communicate", "Stun")
var/r = input(user, "Choose a rune to scribe", "Rune Scribing") in runes //not cancellable.
+ if(locate(/obj/effect/rune) in user.loc)
+ user << "There is already a rune in this location."
+ return
+
var/obj/effect/rune/R = new /obj/effect/rune(user.loc)
if(istype(user.loc,/turf))
var/area/A = get_area(user)