/mob/living/simple_animal/mouse name = "mouse" desc = "It's a nasty, ugly, evil, disease-ridden rodent." icon_state = "mouse_gray" icon_living = "mouse_gray" icon_dead = "mouse_gray_dead" speak = list("Squeak!","SQUEAK!","Squeak?") speak_emote = list("squeaks") emote_hear = list("squeaks.") emote_see = list("runs in a circle.", "shakes.") speak_chance = 1 turns_per_move = 5 blood_volume = 250 see_in_dark = 6 maxHealth = 5 health = 5 butcher_results = list(/obj/item/reagent_containers/food/snacks/meat/slab = 1) response_help_continuous = "pets" response_help_simple = "pet" response_disarm_continuous = "gently pushes aside" response_disarm_simple = "gently push aside" response_harm_continuous = "splats" response_harm_simple = "splat" density = FALSE pass_flags = PASSTABLE | PASSGRILLE | PASSMOB mob_size = MOB_SIZE_TINY mob_biotypes = MOB_ORGANIC|MOB_BEAST var/body_color //brown, gray and white, leave blank for random gold_core_spawnable = FRIENDLY_SPAWN var/chew_probability = 1 faction = list("rat") vocal_bark_id = "squeak" vocal_pitch = 1.4 /mob/living/simple_animal/mouse/Initialize(mapload) . = ..() AddComponent(/datum/component/squeak, list('sound/effects/mousesqueek.ogg'=1), 100) if(!body_color) body_color = pick(list("brown","gray","white")) AddElement(/datum/element/mob_holder, "mouse_[body_color]") icon_state = "mouse_[body_color]" icon_living = "mouse_[body_color]" icon_dead = "mouse_[body_color]_dead" AddElement(/datum/element/ventcrawling, given_tier = VENTCRAWLER_ALWAYS) /mob/living/simple_animal/mouse/proc/splat() src.health = 0 src.icon_dead = "mouse_[body_color]_splat" death() /mob/living/simple_animal/mouse/death(gibbed, toast) if(!ckey) ..(1) if(!gibbed) var/obj/item/reagent_containers/food/snacks/deadmouse/M = new(loc) M.icon_state = icon_dead M.name = name if(toast) M.add_atom_colour("#3A3A3A", FIXED_COLOUR_PRIORITY) M.desc = "It's toast." qdel(src) else ..(gibbed) /mob/living/simple_animal/mouse/Crossed(AM as mob|obj) if( ishuman(AM) ) if(!stat) var/mob/M = AM to_chat(M, "[icon2html(src, M)] Squeak!") if(istype(AM, /obj/item/reagent_containers/food/snacks/royalcheese)) evolve() qdel(AM) ..() /mob/living/simple_animal/mouse/handle_automated_action() if(!isturf(loc)) return if(prob(chew_probability)) var/turf/open/floor/F = get_turf(src) // GS13 - EDIT if(istype(F, /turf/open/floor/catwalk_floor)) var/turf/open/floor/catwalk_floor/catwalk = F if(catwalk.covered) return // GS13 - END EDIT if(istype(F) && !F.intact) var/obj/structure/cable/C = locate() in F if(C && prob(15)) if(C.avail()) visible_message("[src] chews through the [C]. It's toast!") playsound(src, 'sound/effects/sparks2.ogg', 100, 1) C.deconstruct() death(toast=TRUE) 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)) be_fruitful() qdel(cheese) return for(var/obj/item/reagent_containers/food/snacks/royalcheese/bigcheese in range(1, src)) qdel(bigcheese) evolve() return for(var/obj/item/trash/garbage in range(1, src)) if(is_station_level(z)) if(prob(2)) qdel(garbage) evolve_plague() return for(var/obj/effect/decal/cleanable/blood/gibs/leftovers in range(1, src)) if(is_station_level(z)) if(prob(2)) qdel(leftovers) evolve_plague() return /** *Checks the mouse cap, if it's above the cap, doesn't spawn a mouse. If below, spawns a mouse and adds it to cheeserats. */ /mob/living/simple_animal/mouse/proc/be_fruitful() 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!") 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!") /** *Spawns a new regal rat, says some good jazz, and if sentient, transfers the relivant mind. */ /mob/living/simple_animal/mouse/proc/evolve() var/mob/living/simple_animal/hostile/regalrat = new /mob/living/simple_animal/hostile/regalrat(loc) visible_message("[src] devours the cheese! He morphs into something... greater!") regalrat.say("RISE, MY SUBJECTS! SCREEEEEEE!") if(mind) mind.transfer_to(regalrat) qdel(src) /mob/living/simple_animal/mouse/proc/evolve_plague() return /* var/mob/living/simple_animal/hostile/plaguerat = new /mob/living/simple_animal/hostile/plaguerat(loc) visible_message("[src] devours the food! He rots into something worse!") if(mind) mind.transfer_to(plaguerat) qdel(src) */ /* * Mouse types */ /mob/living/simple_animal/mouse/white body_color = "white" icon_state = "mouse_white" /mob/living/simple_animal/mouse/gray body_color = "gray" icon_state = "mouse_gray" /mob/living/simple_animal/mouse/brown body_color = "brown" icon_state = "mouse_brown" /mob/living/simple_animal/mouse/Destroy() SSmobs.cheeserats -= src return ..() GLOBAL_VAR(tom_existed) //TOM IS ALIVE! SQUEEEEEEEE~K :) /mob/living/simple_animal/mouse/brown/Tom name = "Tom" desc = "Jerry the cat is not amused." gold_core_spawnable = NO_SPAWN /mob/living/simple_animal/mouse/brown/Tom/Initialize(mapload) . = ..() GLOB.tom_existed = TRUE /obj/item/reagent_containers/food/snacks/deadmouse name = "dead mouse" desc = "It looks like somebody dropped the bass on it. A lizard's favorite meal." icon = 'icons/mob/animal.dmi' icon_state = "mouse_gray_dead" bitesize = 3 eatverb = "devour" list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 2) foodtype = GROSS | MEAT | RAW grind_results = list(/datum/reagent/blood = 20, /datum/reagent/liquidgibs = 5) /obj/item/reagent_containers/food/snacks/deadmouse/on_grind() reagents.clear_reagents() /mob/living/simple_animal/mouse/proc/miasma(datum/gas_mixture/environment, check_temp = FALSE) if(isturf(src.loc) && isopenturf(src.loc)) var/turf/open/ST = src.loc var/miasma_moles = ST.air.get_moles(GAS_MIASMA) if(prob(5) && miasma_moles >= 5) evolve_plague() else if(miasma_moles >= 20) evolve_plague() return /mob/living/simple_animal/mouse/handle_environment(datum/gas_mixture/environment) . = ..() if(is_station_level(z)) miasma()