diff --git a/html/changelogs/AutoChangeLog-pr-1684.yml b/html/changelogs/AutoChangeLog-pr-1684.yml
new file mode 100644
index 0000000000000..fc8df6021b837
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-1684.yml
@@ -0,0 +1,4 @@
+author: "Arturlang"
+delete-after: True
+changes:
+ - balance: "Bloodsuckers can only reach 560 max blood via drinking blood bags or the blood reagent, and bloodsuckers above level 4 will get 30% less blood and be disgusted by it."
\ No newline at end of file
diff --git a/html/changelogs/AutoChangeLog-pr-1795.yml b/html/changelogs/AutoChangeLog-pr-1795.yml
new file mode 100644
index 0000000000000..5b815d817f1d2
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-1795.yml
@@ -0,0 +1,4 @@
+author: "nikothedude"
+delete-after: True
+changes:
+ - rscadd: "Mothroaches can now be milked for moth milk"
\ No newline at end of file
diff --git a/modular_zubbers/code/modules/antagonists/bloodsucker/bloodsuckers/integration.dm b/modular_zubbers/code/modules/antagonists/bloodsucker/bloodsuckers/integration.dm
index e50e1d3cbcec3..b5ab59e326faf 100644
--- a/modular_zubbers/code/modules/antagonists/bloodsucker/bloodsuckers/integration.dm
+++ b/modular_zubbers/code/modules/antagonists/bloodsucker/bloodsuckers/integration.dm
@@ -8,10 +8,15 @@
var/datum/antagonist/bloodsucker/bloodsuckerdatum = IS_BLOODSUCKER(exposed_mob)
if(!bloodsuckerdatum)
return ..()
+ if(!(methods & (INJECT|INGEST)))
+ return ..()
- if(istype(bloodsuckerdatum.my_clan, /datum/bloodsucker_clan/ventrue) && bloodsuckerdatum.GetBloodVolume() >= BLOOD_VOLUME_SAFE)
+ if(bloodsuckerdatum.my_clan && istype(bloodsuckerdatum.my_clan, /datum/bloodsucker_clan/ventrue) && bloodsuckerdatum.GetBloodVolume() >= BLOOD_VOLUME_SAFE)
return ..()
- if(bloodsuckerdatum.GetBloodVolume() >= BLOOD_VOLUME_MAXIMUM)
+ if(bloodsuckerdatum.GetRank() >= BLOODSUCKER_HIGH_LEVEL)
+ exposed_mob.adjust_disgust(5 SECONDS, DISGUST_LEVEL_GROSS)
+ reac_volume = reac_volume * 0.3
+ if(bloodsuckerdatum.GetBloodVolume() >= BLOOD_VOLUME_NORMAL)
return ..()
bloodsuckerdatum.AdjustBloodVolume(round(reac_volume, 0.1))
diff --git a/modular_zubbers/code/modules/antagonists/bloodsucker/clans/clan.dm b/modular_zubbers/code/modules/antagonists/bloodsucker/clans/clan.dm
index 454318b242fce..04f0616e10c7d 100644
--- a/modular_zubbers/code/modules/antagonists/bloodsucker/clans/clan.dm
+++ b/modular_zubbers/code/modules/antagonists/bloodsucker/clans/clan.dm
@@ -211,7 +211,7 @@
// Ranked up enough to get your true Reputation?
if(bloodsuckerdatum.GetRank() == BLOODSUCKER_HIGH_LEVEL)
- to_chat(bloodsuckerdatum.owner.current, span_warning("Drinking from mindless humans is now much more less effective."))
+ to_chat(bloodsuckerdatum.owner.current, span_warning("Drinking from mindless humans and blood bags is now much more less effective."))
bloodsuckerdatum.SelectReputation(am_fledgling = FALSE, forced = TRUE)
diff --git a/modular_zubbers/code/modules/reagents/drink_reagents.dm b/modular_zubbers/code/modules/reagents/drink_reagents.dm
index 0b21c250b4c60..94b556fe55076 100644
--- a/modular_zubbers/code/modules/reagents/drink_reagents.dm
+++ b/modular_zubbers/code/modules/reagents/drink_reagents.dm
@@ -11,3 +11,9 @@
if(!ismoth(M))
M.adjust_disgust(10 * REM * delta_time,DISGUST_LEVEL_DISGUSTED)
return UPDATE_MOB_HEALTH
+
+
+/mob/living/basic/mothroach/Initialize(mapload)
+ . = ..()
+
+ AddComponent(/datum/component/udder, reagent_produced_override = /datum/reagent/consumable/moth_milk)