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