diff --git a/code/controllers/configuration/entries/game_options.dm b/code/controllers/configuration/entries/game_options.dm
index f3db9bb3159..ac6ab78afb3 100644
--- a/code/controllers/configuration/entries/game_options.dm
+++ b/code/controllers/configuration/entries/game_options.dm
@@ -379,4 +379,8 @@
config_entry_value = 64
min_val = 0
+/datum/config_entry/number/ratcap
+ config_entry_value = 64
+ min_val = 0
+
/datum/config_entry/flag/dynamic_config_enabled
diff --git a/code/controllers/subsystem/mobs.dm b/code/controllers/subsystem/mobs.dm
index 8caf2a4623c..885587ff554 100644
--- a/code/controllers/subsystem/mobs.dm
+++ b/code/controllers/subsystem/mobs.dm
@@ -8,6 +8,7 @@ SUBSYSTEM_DEF(mobs)
var/static/list/clients_by_zlevel[][]
var/static/list/dead_players_by_zlevel[][] = list(list()) // Needs to support zlevel 1 here, MaxZChanged only happens when z2 is created and new_players can login before that.
var/static/list/cubemonkeys = list()
+ var/static/list/cheeserats = list()
/datum/controller/subsystem/mobs/stat_entry()
..("P:[GLOB.mob_living_list.len]")
diff --git a/code/modules/mob/living/simple_animal/friendly/mouse.dm b/code/modules/mob/living/simple_animal/friendly/mouse.dm
index 8d6364fad4f..51c7db91c28 100644
--- a/code/modules/mob/living/simple_animal/friendly/mouse.dm
+++ b/code/modules/mob/living/simple_animal/friendly/mouse.dm
@@ -79,6 +79,18 @@
else
C.deconstruct()
visible_message("[src] chews through the [C].")
+ for(var/obj/item/reagent_containers/food/snacks/cheesewedge/cheese in range(1, src))
+ if(prob(10))
+ var/cap = CONFIG_GET(number/ratcap)
+ if(LAZYLEN(SSmobs.cheeserats) >= cap)
+ visible_message("[src] carefully eats the cheese, hiding it from the [cap] mice on the station!")
+ qdel(cheese)
+ return
+ var/mob/living/newmouse = new /mob/living/simple_animal/mouse(loc)
+ SSmobs.cheeserats += newmouse
+ visible_message("[src] nibbles through the [cheese], attracting another mouse!")
+ qdel(cheese)
+ return
/*
* Mouse types
@@ -96,6 +108,10 @@
body_color = "brown"
icon_state = "mouse_brown"
+/mob/living/simple_animal/mouse/Destroy()
+ SSmobs.cheeserats -= src
+ return ..()
+
//TOM IS ALIVE! SQUEEEEEEEE~K :)
/mob/living/simple_animal/mouse/brown/Tom
name = "Tom"
diff --git a/config/game_options.txt b/config/game_options.txt
index d6ff9420749..91b406be709 100644
--- a/config/game_options.txt
+++ b/config/game_options.txt
@@ -563,5 +563,8 @@ ROUNDSTART_TRAITS
## A cap on how many monkeys may be created via monkey cubes
MONKEYCAP 64
+## A cap on how many mice can be bred via cheese wedges
+RATCAP 64
+
## Enable the capitalist agenda on your server.
ECONOMY