diff --git a/code/game/gamemodes/miniantags/irradiated_mouse/irradiated_mouse.dm b/code/game/gamemodes/miniantags/irradiated_mouse/irradiated_mouse.dm index 596489a6482..1c1d6c3f33f 100644 --- a/code/game/gamemodes/miniantags/irradiated_mouse/irradiated_mouse.dm +++ b/code/game/gamemodes/miniantags/irradiated_mouse/irradiated_mouse.dm @@ -72,18 +72,20 @@ var/alpha_rad = 0 var/beta_rad = 0 var/gamma_rad = 0 - var/alpha_rad_per_level = 500 - var/beta_rad_per_level = 500 + var/alpha_rad_per_level = 400 + var/beta_rad_per_level = 400 var/gamma_rad_per_level = 0 var/radiation_cooldown = 0.1 var/produce_radioactive_sludge = FALSE var/speed_per_level = -0.5 - var/speed_capstone_alpha = 50 + var/speed_capstone_alpha = 125 var/has_exited_vents = FALSE var/seconds_time_till_death = 60 * 15 + var/cheese_heal = 2 + var/datum/spell/irradiated_mouse_spell/upgrade_radiation/upgrade_radiation_spell var/datum/spell/irradiated_mouse_spell/upgrade_speed/upgrade_speed_spell var/datum/spell/irradiated_mouse_spell/upgrade_damage/upgrade_damage_spell @@ -100,6 +102,18 @@ AddSpell(upgrade_speed_spell) AddSpell(upgrade_damage_spell) +/mob/living/basic/mouse/irradiated_mouse/try_consume_cheese(obj/item/food/sliced/cheesewedge/cheese) + if(health >= maxHealth) + return + + visible_message( + SPAN_NOTICE("[src] gorges on [cheese]."), + SPAN_NOTICE("You gorge on [cheese][health < maxHealth ? ", restoring your health" : ""].") + ) + + adjustBruteLoss(-cheese_heal) + qdel(cheese) + /mob/living/basic/mouse/irradiated_mouse/update_desc() . = ..() desc = initial(desc) // we dont want the standard description auto added by mice @@ -114,6 +128,9 @@ /mob/living/basic/mouse/irradiated_mouse/remove_ventcrawl() . = ..() + start_death_countdown() + +/mob/living/basic/mouse/irradiated_mouse/proc/start_death_countdown() if(!has_exited_vents) upgrade_radiation() upgrade_speed() @@ -126,7 +143,10 @@ return if(!has_exited_vents) - return + if(admin_spawned) + start_death_countdown() + else + return // telegraph the radiation by giving tiles harmless alpha radiation for(var/turf/turf in range(1, src)) diff --git a/code/game/objects/items/stacks/medical_packs.dm b/code/game/objects/items/stacks/medical_packs.dm index 2570899be29..a001dd13f4b 100644 --- a/code/game/objects/items/stacks/medical_packs.dm +++ b/code/game/objects/items/stacks/medical_packs.dm @@ -168,6 +168,21 @@ if(!ishuman(M)) return FALSE + if(istype(M, /mob/living/basic/mouse/irradiated_mouse)) + if(!istype(/mob/living, user)) + return FALSE + + var/mob/living/living_user = user + if(HAS_TRAIT(living_user, TRAIT_RADIMMUNE) || isrobot(living_user)) + to_chat(user, SPAN_NOTICE("[M] is moving around too much for you to treat it.")) + else + to_chat(user, SPAN_WARN("You feel too sick to do that!")) + + if(user.radiation < 1000) + living_user.apply_effect(250, IRRADIATE) + + return FALSE + var/mob/living/carbon/human/H = M var/obj/item/organ/external/affecting = H.get_organ(user.zone_selected) for(var/obj/item/organ/external/E in H.bodyparts) diff --git a/code/modules/mob/living/carbon/carbon_life.dm b/code/modules/mob/living/carbon/carbon_life.dm index 5a37d6f7a62..ecd6d8ba6fd 100644 --- a/code/modules/mob/living/carbon/carbon_life.dm +++ b/code/modules/mob/living/carbon/carbon_life.dm @@ -256,6 +256,9 @@ continue if(stat != DEAD) if(M.stat == DEAD && !iscarbon(M)) + if(istype(M, /mob/living/basic/mouse/irradiated_mouse)) + apply_effect(20000, IRRADIATE) // You willingly ate the green mouse that is clearly making everyone sick, this is on you. + LAZYREMOVE(stomach_contents, M) qdel(M) continue