diff --git a/code/__defines/_reagents_ch.dm b/code/__defines/_reagents_ch.dm
index 5fc1742725..96a0348098 100644
--- a/code/__defines/_reagents_ch.dm
+++ b/code/__defines/_reagents_ch.dm
@@ -281,3 +281,9 @@
#define REAGENT_ID_NEOLIQUIDFIRE "neoliquidfire"
#define REAGENT_LIQUIDLIFE "Liquid Life"
#define REAGENT_ID_LIQUIDLIFE "liquidlife"
+
+#define REAGENT_NUMBING_FLUID "Numbing Fluid"
+#define REAGENT_ID_NUMBING_FLUID "succubi_numbing"
+#define REAGENT_PARALYZE_FLUID "Paralyzing Fluid"
+#define REAGENT_ID_PARALYZE_FLUID "succubi_paralize"
+#define REAGENT_ID_APHRODIAC_FLUID "succubi_aphrodisiac"
diff --git a/code/game/objects/items/weapons/capture_crystal.dm b/code/game/objects/items/weapons/capture_crystal.dm
index c640eb21e6..cafd2563b2 100644
--- a/code/game/objects/items/weapons/capture_crystal.dm
+++ b/code/game/objects/items/weapons/capture_crystal.dm
@@ -50,7 +50,7 @@
if(isanimal(bound_mob))
. += span_notice("[bound_mob.health / bound_mob.maxHealth * 100]%")
if(bound_mob.ooc_notes)
- . += span_deptradio("OOC Notes:") + " \[View\] - \[Print\]"
+ . += span_deptradio("OOC Notes:") + " \[View\] - \[Print\]"
. += span_deptradio("\[Mechanical Vore Preferences\]")
//Command! This lets the owner toggle hostile on AI controlled mobs, or send a silent command message to your bound mob, wherever they may be.
diff --git a/code/modules/mob/living/carbon/human/species/station/station_special_abilities_ch.dm b/code/modules/mob/living/carbon/human/species/station/station_special_abilities_ch.dm
index 8d761759e7..1d7cb949af 100644
--- a/code/modules/mob/living/carbon/human/species/station/station_special_abilities_ch.dm
+++ b/code/modules/mob/living/carbon/human/species/station/station_special_abilities_ch.dm
@@ -41,16 +41,16 @@
if(choice == REAGENT_APHRODISIAC)
src.show_message(span_warning("You sink your fangs into [T] and inject your aphrodisiac!"))
src.visible_message(span_red("[src] sinks their fangs into [T]!"))
- T.bloodstr.add_reagent("succubi_aphrodisiac",100)
+ T.bloodstr.add_reagent(REAGENT_ID_APHRODIAC_FLUID,100)
return 0
else if(choice == "Numbing")
src.show_message(span_warning("You sink your fangs into [T] and inject your poison!"))
src.visible_message(span_red("[src] sinks their fangs into [T]!"))
- T.bloodstr.add_reagent("numbing_enzyme",20) //Poisons should work when more units are injected
+ T.bloodstr.add_reagent(REAGENT_ID_NUMBING_FLUID,20) //Poisons should work when more units are injected
else if(choice == "Paralyzing")
src.show_message(span_warning("You sink your fangs into [T] and inject your poison!"))
src.visible_message(span_red("[src] sinks their fangs into [T]!"))
- T.bloodstr.add_reagent("succubi_paralize",20) //Poisons should work when more units are injected
+ T.bloodstr.add_reagent(REAGENT_ID_PARALYZE_FLUID,20) //Poisons should work when more units are injected
else
return //Should never happen
@@ -65,7 +65,7 @@ mob/living/carbon/proc/charmed() //TODO
/datum/reagent/succubi_aphrodisiac
name = REAGENT_APHRODISIAC
- id = "succubi_aphrodisiac"
+ id = REAGENT_ID_APHRODIAC_FLUID
description = "A unknown liquid, it smells sweet"
metabolism = REM * 0.8
color = "#8A0829"
@@ -79,8 +79,8 @@ mob/living/carbon/proc/charmed() //TODO
return
/datum/reagent/succubi_numbing //Using numbing_enzyme instead.
- name = "Numbing Fluid"
- id = "succubi_numbing"
+ name = REAGENT_NUMBING_FLUID
+ id = REAGENT_ID_NUMBING_FLUID
description = "A unknown liquid, it doesn't smell"
metabolism = REM * 0.5
color = "#41029B"
@@ -97,8 +97,8 @@ mob/living/carbon/proc/charmed() //TODO
return
/datum/reagent/succubi_paralize
- name = "Paralyzing Fluid"
- id = "succubi_paralize"
+ name = REAGENT_PARALYZE_FLUID
+ id = REAGENT_ID_PARALYZE_FLUID
description = "A unknown liquid, it doesn't smell"
metabolism= REM * 0.5
color = "#41029B"
diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/_giant_spider.dm b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/_giant_spider.dm
index 3dc4530250..efa69b42ed 100644
--- a/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/_giant_spider.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/_giant_spider.dm
@@ -129,7 +129,7 @@
AddComponent(/datum/component/swarming)
/mob/living/simple_mob/animal/giant_spider/CanPass(atom/movable/mover, turf/target)
- if(isliving(mover) && !istype(mover, /mob/living/simple_mob/animal/giant_spider) && mover.density == TRUE)
+ if(isliving(mover) && !istype(mover, /mob/living/simple_mob/animal/giant_spider) && mover.density == TRUE && stat != DEAD)
return FALSE
return ..()
diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/space/carp.dm b/code/modules/mob/living/simple_mob/subtypes/animal/space/carp.dm
index ee288342c6..5732cb7a04 100644
--- a/code/modules/mob/living/simple_mob/subtypes/animal/space/carp.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/animal/space/carp.dm
@@ -96,7 +96,7 @@
// This is so carps can swarm
/mob/living/simple_mob/animal/space/carp/CanPass(atom/movable/mover, turf/target)
- if(isliving(mover) && !istype(mover, /mob/living/simple_mob/animal/space/carp) && mover.density == TRUE)
+ if(isliving(mover) && !istype(mover, /mob/living/simple_mob/animal/space/carp) && mover.density == TRUE && stat != DEAD)
return FALSE
return ..()
diff --git a/code/modules/nifsoft/nif.dm b/code/modules/nifsoft/nif.dm
index 5a8cf233ad..dd55cff3b5 100644
--- a/code/modules/nifsoft/nif.dm
+++ b/code/modules/nifsoft/nif.dm
@@ -156,7 +156,7 @@ You can also set the stat of a NIF to NIF_TEMPFAIL without any issues to disable
return FALSE
/obj/item/nif/proc/quick_install(var/mob/living/carbon/human/H)
- if(!H) //Or letting them get deleted
+ if(QDELETED(H)) //Or letting them get deleted
return
if(H.mind)
owner = H.mind.name
diff --git a/code/modules/nifsoft/software/14_commlink.dm b/code/modules/nifsoft/software/14_commlink.dm
index f9d4ed8e47..def34c3e17 100644
--- a/code/modules/nifsoft/software/14_commlink.dm
+++ b/code/modules/nifsoft/software/14_commlink.dm
@@ -39,9 +39,9 @@
var/obj/item/nif/nif
var/datum/nifsoft/commlink/nifsoft
-/obj/item/communicator/commlink/New(var/newloc,var/soft)
- ..()
- nif = newloc
+/obj/item/communicator/commlink/Initialize(mapload, var/soft)
+ . = ..()
+ nif = loc
nifsoft = soft
/obj/item/communicator/commlink/Destroy()
diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm
index 78a32767d6..e9a4873145 100644
--- a/code/modules/projectiles/projectile.dm
+++ b/code/modules/projectiles/projectile.dm
@@ -554,6 +554,10 @@
else
var/mob/living/L = target
if(!direct_target)
+ // Swarms are special scuffed critters. They must have density FALSE to swarm, but then they don't get hit.
+ // So we'll check before, just in case. Lying might gives a chance to dodge, however.
+ if(L.GetComponent(/datum/component/swarming) && L.stat != DEAD && !L.lying)
+ return TRUE
if(!L.density)
return FALSE
return TRUE
diff --git a/modular_chomp/code/modules/organs/internal/malignant/malignant.dm b/modular_chomp/code/modules/organs/internal/malignant/malignant.dm
index 80ba202b90..9326fbcb2a 100644
--- a/modular_chomp/code/modules/organs/internal/malignant/malignant.dm
+++ b/modular_chomp/code/modules/organs/internal/malignant/malignant.dm
@@ -38,7 +38,7 @@
// engineered ones don't do all of the above
if(force_location)
parent_organ = force_location
- return ..(mapload, internal)
+ return ..(mapload, internal)
/mob/living/carbon/human/proc/random_malignant_organ( var/allowtumors = TRUE, var/allowparasites = TRUE, var/allowengineered = TRUE)
// get a list of valid malignant organs and spawn one