From f694e112275ed8b146ba1f380ed3981d61893f1e Mon Sep 17 00:00:00 2001
From: Superlagg <sprambersonson@gmail.com>
Date: Mon, 6 Jan 2025 18:38:24 -0800
Subject: [PATCH 1/5] special ass

---
 code/datums/components/spawner.dm       | 7 +++++--
 code/game/objects/hand_items.dm         | 4 ++--
 code/modules/mob/living/carbon/emote.dm | 2 +-
 3 files changed, 8 insertions(+), 5 deletions(-)

diff --git a/code/datums/components/spawner.dm b/code/datums/components/spawner.dm
index 96a9392951..e674b0775f 100644
--- a/code/datums/components/spawner.dm
+++ b/code/datums/components/spawner.dm
@@ -329,8 +329,11 @@
 	var/atom/P = parent
 	for(var/mob/living/butt in LAZYACCESS(SSmobs.clients_by_zlevel, P?.z)) // client-containing mobs, NOT clients
 		var/mrange = (get_dist(P, butt))
-		if(mrange <= range && mrange > min_range)
-			return TRUE
+		if(mrange <= range)
+			if(am_special)
+				return TRUE
+			else if(mrange > min_range)
+				return TRUE
 
 /// first checks if anyone is in range, then if so, turns itself on for another 20ish seconds
 /datum/component/spawner/proc/old_spawn()
diff --git a/code/game/objects/hand_items.dm b/code/game/objects/hand_items.dm
index 7b2a4d65dc..a9ef349e02 100644
--- a/code/game/objects/hand_items.dm
+++ b/code/game/objects/hand_items.dm
@@ -566,7 +566,7 @@ touch + help + facing their rear = pat back
 	. = ..()
 	AddComponent(/datum/component/knockback, 1, FALSE, TRUE)
 
-/obj/item/hand_item/tail/attack(mob/living/M, mob/living/user)
+/obj/item/hand_item/tail/afterattack(mob/living/M, mob/living/user)
 	. = ..()
 	user.spin(4, 1) // SPEEN
 
@@ -884,7 +884,7 @@ touch + help + facing their rear = pat back
 	flags_1 = CONDUCT_1
 	force = 0
 
-/obj/item/hand_item/butt/attack(mob/living/M, mob/living/user)
+/obj/item/hand_item/butt/afterattack(mob/living/M, mob/living/user)
 	. = ..()
 	user.spin(4, 1) // SPEEN
 
diff --git a/code/modules/mob/living/carbon/emote.dm b/code/modules/mob/living/carbon/emote.dm
index 44398da985..c93f15842e 100644
--- a/code/modules/mob/living/carbon/emote.dm
+++ b/code/modules/mob/living/carbon/emote.dm
@@ -427,7 +427,7 @@
 /datum/emote/living/carbon/tailer/run_emote(mob/living/user)
 	. = ..()
 	if(user.get_active_held_item())
-		to_chat(user, span_warning("Your brains too busy to use your tail right now, maybe empty up your hands a bit?"))
+		to_chat(user, span_warning("Your hands are too busy to use your tail right now, maybe empty up your hands a bit?"))
 		return
 	var/which_tail_to_spawn
 	if(LAZYLEN(user.mob_quirks))//Check if we need to do all these expensive checks

From 3969afb563f27378931af7f2e3d5157e92806318 Mon Sep 17 00:00:00 2001
From: Superlagg <sprambersonson@gmail.com>
Date: Mon, 6 Jan 2025 18:45:57 -0800
Subject: [PATCH 2/5] such ass

---
 code/game/objects/items/cards_ids.dm            | 2 +-
 code/modules/mob/living/carbon/human/examine.dm | 1 -
 modular_roguetown/todo/trees/treestuff.dm       | 3 +--
 3 files changed, 2 insertions(+), 4 deletions(-)

diff --git a/code/game/objects/items/cards_ids.dm b/code/game/objects/items/cards_ids.dm
index db3c5ee3c9..47953a64e5 100644
--- a/code/game/objects/items/cards_ids.dm
+++ b/code/game/objects/items/cards_ids.dm
@@ -32,11 +32,11 @@
 
 
 /obj/item/card/Initialize(mapload)
+	. = ..()
 	if(this_is_easier_than_actually_removing_them)
 		// if(prob(50))
 		// 	SSartifacts.spawn_random_artifact(loc)
 		return INITIALIZE_HINT_QDEL
-	. = ..()
 
 /obj/item/card/ComponentInitialize()
 	. = ..()
diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm
index bf53e736a1..666ca361f2 100644
--- a/code/modules/mob/living/carbon/human/examine.dm
+++ b/code/modules/mob/living/carbon/human/examine.dm
@@ -943,4 +943,3 @@ GLOBAL_LIST_INIT(personalitytrait2description, list(
  */
 
 
-		
\ No newline at end of file
diff --git a/modular_roguetown/todo/trees/treestuff.dm b/modular_roguetown/todo/trees/treestuff.dm
index ea3da51dd9..a0cc562794 100644
--- a/modular_roguetown/todo/trees/treestuff.dm
+++ b/modular_roguetown/todo/trees/treestuff.dm
@@ -19,5 +19,4 @@ SUBSYSTEM_DEF(treesetup)
 		T.build_leafs()
 
 	initialize_me = list()
-	
-	
\ No newline at end of file
+

From 5ef7a5d4b38c63b94f20a37cfbf3782b63cc9bd2 Mon Sep 17 00:00:00 2001
From: Superlagg <sprambersonson@gmail.com>
Date: Mon, 6 Jan 2025 19:11:38 -0800
Subject: [PATCH 3/5] blockado

---
 code/datums/components/spawner.dm | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/code/datums/components/spawner.dm b/code/datums/components/spawner.dm
index e674b0775f..5a029d077b 100644
--- a/code/datums/components/spawner.dm
+++ b/code/datums/components/spawner.dm
@@ -349,8 +349,24 @@
 	// 		return
 	// 	activate()
 	if(something_in_range())
+		if(!am_special && blocked())
+			return
 		try_to_spawn()
 
+/// checks if we're blocked by something
+/datum/component/spawner/proc/blocked()
+	var/atom/A = parent
+	var/turf/here = get_turf(A)
+	for(var/obj/structure/respawner_blocker/RB in SSmonster_spawner.spawn_blockers)
+		if(here.z != RB.z)
+			continue
+		var/maxdist = RB.protection_radius
+		if(maxdist <= 0)
+			continue
+		if(get_dist(RB, here) <= maxdist)
+			RB.blocked_something()
+			return TRUE
+
 /// turns itself on for another 20ish seconds
 /datum/component/spawner/proc/activate()
 	active = TRUE

From 3f630ae3e389c389138c757f0f94f1618e0f775b Mon Sep 17 00:00:00 2001
From: Superlagg <sprambersonson@gmail.com>
Date: Mon, 6 Jan 2025 19:20:24 -0800
Subject: [PATCH 4/5] bid ghosts

---
 code/controllers/subsystem/chat.dm | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/code/controllers/subsystem/chat.dm b/code/controllers/subsystem/chat.dm
index 289857ed53..fd559b3ff7 100644
--- a/code/controllers/subsystem/chat.dm
+++ b/code/controllers/subsystem/chat.dm
@@ -60,7 +60,7 @@ SUBSYSTEM_DEF(chat)
 	priority = FIRE_PRIORITY_CHAT
 	init_order = INIT_ORDER_CHAT
 
-	var/forbid_ghosting = TRUE
+	var/forbid_ghosting = FALSE
 	var/chat_display_plane = RUNECHAT_PLANE
 	/* 
 	** Base 

From 54f924691f5f095268ac582aab23f163ead7026c Mon Sep 17 00:00:00 2001
From: Superlagg <sprambersonson@gmail.com>
Date: Mon, 6 Jan 2025 19:30:56 -0800
Subject: [PATCH 5/5] spawnm block

---
 code/datums/components/spawner.dm | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/code/datums/components/spawner.dm b/code/datums/components/spawner.dm
index 5a029d077b..1574f314d5 100644
--- a/code/datums/components/spawner.dm
+++ b/code/datums/components/spawner.dm
@@ -357,7 +357,7 @@
 /datum/component/spawner/proc/blocked()
 	var/atom/A = parent
 	var/turf/here = get_turf(A)
-	for(var/obj/structure/respawner_blocker/RB in SSmonster_spawner.spawn_blockers)
+	for(var/obj/structure/respawner_blocker/RB in SSmonster_wave.spawn_blockers)
 		if(here.z != RB.z)
 			continue
 		var/maxdist = RB.protection_radius