mirror of
https://github.com/yogstation13/Yogstation.git
synced 2025-02-26 09:04:50 +00:00
[READY]Plague rat (#13968)
* Le Ratto * Description * Update plague.dm * Update plague.dm * Update plague_rat.dm * Update code/modules/mob/living/simple_animal/hostile/plague_rat.dm Co-authored-by: Ashleigh Carr <ashcorr20@gmail.com> * Comments and plague meat * Update code/datums/diseases/plague.dm Co-authored-by: Anvilman6 <54463777+Anvilman6@users.noreply.github.com> * Update code/datums/diseases/plague.dm Co-authored-by: Anvilman6 <54463777+Anvilman6@users.noreply.github.com> * Update code/datums/diseases/plague.dm Co-authored-by: Anvilman6 <54463777+Anvilman6@users.noreply.github.com> * Update code/modules/food_and_drinks/food/snacks/meat.dm Co-authored-by: Anvilman6 <54463777+Anvilman6@users.noreply.github.com> * Update code/modules/mob/living/simple_animal/hostile/plague_rat.dm Co-authored-by: Anvilman6 <54463777+Anvilman6@users.noreply.github.com> * Update code/modules/mob/living/simple_animal/hostile/plague_rat.dm Co-authored-by: Anvilman6 <54463777+Anvilman6@users.noreply.github.com> * Update code/modules/mob/living/simple_animal/hostile/plague_rat.dm Co-authored-by: Anvilman6 <54463777+Anvilman6@users.noreply.github.com> * Update code/modules/mob/living/simple_animal/hostile/plague_rat.dm Co-authored-by: Anvilman6 <54463777+Anvilman6@users.noreply.github.com> * Update code/modules/mob/living/simple_animal/hostile/plague_rat.dm Co-authored-by: Anvilman6 <54463777+Anvilman6@users.noreply.github.com> * Update code/modules/mob/living/simple_animal/hostile/plague_rat.dm Co-authored-by: Anvilman6 <54463777+Anvilman6@users.noreply.github.com> * Update code/modules/reagents/chemistry/reagents/other_reagents.dm Co-authored-by: Anvilman6 <54463777+Anvilman6@users.noreply.github.com> * No more infecting people with space suits and armor * Update plague_rat.dm * Update plague_rat.dm * Update plague_rat.dm * Update plague_rat.dm * Update plague_rat.dm * Update plague_rat.dm * Update plague_rat.dm * Update plague_rat.dm * Update plague_rat.dm * Update plague_rat.dm * Update plague_rat.dm Co-authored-by: Ashleigh Carr <ashcorr20@gmail.com> Co-authored-by: Anvilman6 <54463777+Anvilman6@users.noreply.github.com>
This commit is contained in:
54
code/datums/diseases/plague.dm
Normal file
54
code/datums/diseases/plague.dm
Normal file
@@ -0,0 +1,54 @@
|
||||
/datum/disease/plague
|
||||
form = "Disease"
|
||||
name = "Plague"
|
||||
max_stages = 5
|
||||
spread_text = "Airborne"
|
||||
cure_text = "Spaceacillin"
|
||||
cures = list(/datum/reagent/medicine/spaceacillin)
|
||||
agent = "Plague rats"
|
||||
viable_mobtypes = list(/mob/living/carbon/human)
|
||||
cure_chance = 20
|
||||
desc = "A deadly disease, spread by infected animals and insects. It causes fever, weakness, headache and choking."
|
||||
required_organs = list(/obj/item/organ/lungs)
|
||||
severity = DISEASE_SEVERITY_BIOHAZARD
|
||||
bypasses_immunity = TRUE
|
||||
|
||||
/datum/disease/tuberculosis/stage_act()
|
||||
..()
|
||||
switch(stage)
|
||||
if(2)
|
||||
if(prob(2))
|
||||
affected_mob.emote("cough")
|
||||
to_chat(affected_mob, span_danger("Your chest hurts."))
|
||||
if(prob(2))
|
||||
to_chat(affected_mob, span_danger("Your head pounds."))
|
||||
if(4)
|
||||
if(prob(2))
|
||||
to_chat(affected_mob, span_userdanger("You can't keep steady!"))
|
||||
affected_mob.Dizzy(5)
|
||||
if(prob(2))
|
||||
to_chat(affected_mob, span_danger("You can barely breathe!"))
|
||||
affected_mob.adjustOxyLoss(5)
|
||||
affected_mob.emote("gasp")
|
||||
if(prob(10))
|
||||
to_chat(affected_mob, span_danger("You can't breathe!"))
|
||||
affected_mob.adjustOxyLoss(20)
|
||||
affected_mob.emote("gasp")
|
||||
if(prob(2))
|
||||
to_chat(affected_mob, span_danger("You feel weak!"))
|
||||
affected_mob.adjustStaminaLoss(40)
|
||||
if(5)
|
||||
if(prob(10))
|
||||
affected_mob.vomit(20)
|
||||
if(prob(15))
|
||||
affected_mob.adjust_bodytemperature(30)
|
||||
to_chat(affected_mob, span_danger("You feel hot!"))
|
||||
if(prob(2))
|
||||
to_chat(affected_mob, span_danger("You feel very weak!"))
|
||||
affected_mob.adjustStaminaLoss(100)
|
||||
if(prob(6))
|
||||
to_chat(affected_mob, span_danger("Your lungs feel full of fluid! You're unable to breathe!"))
|
||||
affected_mob.adjustOxyLoss(35)
|
||||
affected_mob.emote("gasp")
|
||||
return
|
||||
|
||||
@@ -340,6 +340,19 @@
|
||||
icon_state = "shadowmeat"
|
||||
desc = "It is covered in a strange darkness. This slab's magical properties appear to be drastically weakened due to the synthetic nature of the meat."
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/meat/slab/plagued
|
||||
name = "meat"
|
||||
desc = "A slab of disease-ridden meat. Eating it is a questionable idea."
|
||||
icon_state = "meat"
|
||||
dried_type = /obj/item/reagent_containers/food/snacks/sosjerky/
|
||||
bitesize = 3
|
||||
list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/cooking_oil = 2, /datum/reagent/plaguebacteria = 3) //It is infected by plague
|
||||
slice_path = /obj/item/reagent_containers/food/snacks/meat/raw_cutlet/plain
|
||||
slices_num = 3
|
||||
filling_color = "#FF0000"
|
||||
tastes = list("meat" = 2, "decay" = 1)
|
||||
foodtype = MEAT | RAW
|
||||
|
||||
////////////////////////////////////// MEAT STEAKS ///////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
@@ -435,7 +448,7 @@
|
||||
/obj/item/reagent_containers/food/snacks/meat/raw_cutlet/initialize_cooked_food(obj/item/reagent_containers/food/snacks/S, cooking_efficiency)
|
||||
..()
|
||||
S.name = "[meat_type] cutlet"
|
||||
|
||||
|
||||
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/meat/raw_cutlet/plain
|
||||
|
||||
89
code/modules/mob/living/simple_animal/hostile/plague_rat.dm
Normal file
89
code/modules/mob/living/simple_animal/hostile/plague_rat.dm
Normal file
@@ -0,0 +1,89 @@
|
||||
/mob/living/simple_animal/hostile/plaguerat
|
||||
name = "rat"
|
||||
desc = "It's a large rodent, afflicted with both anger issues and a terrible disease."
|
||||
icon_state = "mouse_gray"
|
||||
icon_living = "mouse_gray"
|
||||
icon_dead = "mouse_gray_dead"
|
||||
speak = list("Skree!","SKREEE!","Squeak?")
|
||||
speak_emote = list("squeaks")
|
||||
emote_hear = list("Hisses.")
|
||||
emote_see = list("runs in a circle.", "stands on its hind legs.")
|
||||
melee_damage_lower = 5 //stronk
|
||||
melee_damage_upper = 5
|
||||
obj_damage = 5
|
||||
speak_chance = 1
|
||||
turns_per_move = 5
|
||||
see_in_dark = 6
|
||||
maxHealth = 20
|
||||
health = 20
|
||||
butcher_results = list(/obj/item/reagent_containers/food/snacks/meat/slab/plagued = 1)
|
||||
density = FALSE
|
||||
ventcrawler = VENTCRAWLER_ALWAYS
|
||||
pass_flags = PASSTABLE | PASSGRILLE | PASSMOB
|
||||
mob_size = MOB_SIZE_TINY
|
||||
mob_biotypes = list(MOB_ORGANIC,MOB_BEAST)
|
||||
faction = list("rat")
|
||||
var/playstyle_string = "<span class='big bold'>You are a Plague Rat,</span></b> \
|
||||
Your goal is to spread The Plague as much as possible, by infecting anyone you can. \
|
||||
You can do this by licking their food, or by directly biting them. \
|
||||
You can also nibble on dead bodies to slightly heal yourself! \
|
||||
However, you are still very fragile! You're just are a small rat, after all.</b>"
|
||||
|
||||
/mob/living/simple_animal/hostile/plaguerat/AttackingTarget()
|
||||
..()
|
||||
var/mob/living/carbon/C = target
|
||||
if(isliving(C) && (C.stat != DEAD)) //It is for injecting plague reagent into people via biting them.
|
||||
if(C.reagents)
|
||||
var/obj/item/I = C.get_item_by_slot(ITEM_SLOT_OCLOTHING)
|
||||
if(!istype(I, /obj/item/clothing/suit/space/hardsuit) && !istype(I, /obj/item/clothing/suit/armor))
|
||||
C.reagents.add_reagent(/datum/reagent/plaguebacteria, 3)
|
||||
|
||||
if(C.stat == DEAD) //It is for biting dead bodies to heal.
|
||||
src.visible_message(span_warning("[src] starts biting into [C]!"),span_notice("You start eating [C]..."))
|
||||
if(do_mob(src, target, 3 SECONDS))
|
||||
to_chat(src, span_notice ("You finish eating [C]."))
|
||||
heal_bodypart_damage(5)
|
||||
C.adjustBruteLoss(15)
|
||||
return
|
||||
|
||||
if (!isliving(target) && target.reagents && target.is_injectable(src, allowmobs = TRUE)) //It is for injecting plague reagent into food and reagent containers by licking them. Not to be confused with biting people.
|
||||
src.visible_message(span_warning("[src] starts licking [target]!"),span_notice("You start licking [target]..."))
|
||||
if (do_mob(src, target, 2 SECONDS))
|
||||
target.reagents.add_reagent(/datum/reagent/plaguebacteria,rand(1,2),no_react = TRUE)
|
||||
to_chat(src, span_notice("You finish licking [target]."))
|
||||
return
|
||||
|
||||
//Spawn Event
|
||||
|
||||
/datum/round_event_control/plaguerat
|
||||
name = "Spawn a Plague Rat"
|
||||
typepath = /datum/round_event/ghost_role/plaguerat
|
||||
weight = 6
|
||||
max_occurrences = 1
|
||||
earliest_start = 30 MINUTES
|
||||
|
||||
/datum/round_event/ghost_role/plaguerat
|
||||
minimum_required = 1
|
||||
role_name = "plaguerat"
|
||||
|
||||
/datum/round_event/ghost_role/plaguerat/spawn_role()
|
||||
var/list/candidates = get_candidates(ROLE_SENTIENCE, null, ROLE_SENTIENCE)
|
||||
if(!candidates.len)
|
||||
return NOT_ENOUGH_PLAYERS
|
||||
|
||||
var/mob/dead/selected = pick_n_take(candidates)
|
||||
|
||||
var/datum/mind/player_mind = new /datum/mind(selected.key)
|
||||
player_mind.active = 1
|
||||
if(!GLOB.xeno_spawn)
|
||||
return MAP_ERROR
|
||||
var/mob/living/simple_animal/hostile/plaguerat/S = new /mob/living/simple_animal/hostile/plaguerat/(pick(GLOB.xeno_spawn))
|
||||
player_mind.transfer_to(S)
|
||||
player_mind.assigned_role = "Plague rat"
|
||||
player_mind.special_role = "Plague rat"
|
||||
to_chat(S, S.playstyle_string)
|
||||
SEND_SOUND(S, sound('sound/magic/mutate.ogg'))
|
||||
message_admins("[ADMIN_LOOKUPFLW(S)] has been made into a plague rat by an event.")
|
||||
log_game("[key_name(S)] was spawned as a plague rat by an event.")
|
||||
spawned_mobs += S
|
||||
return SUCCESSFUL_SPAWN
|
||||
@@ -283,8 +283,8 @@
|
||||
if(13 to INFINITY)
|
||||
M.visible_message("<span class='danger'>[M] suddenly ignites in a brilliant flash of white!<span>", span_userdanger("You suddenly ignite in a holy fire!"))
|
||||
M.adjust_fire_stacks(3)
|
||||
M.IgniteMob()
|
||||
M.adjustFireLoss(4)
|
||||
M.IgniteMob()
|
||||
M.adjustFireLoss(4)
|
||||
holder.remove_reagent(type, 0.4) //fixed consumption to prevent balancing going out of whack
|
||||
|
||||
/datum/reagent/water/holywater/reaction_turf(turf/T, reac_volume)
|
||||
@@ -2043,3 +2043,14 @@
|
||||
wounded_part.heal_damage(0.25, 0.25)
|
||||
M.adjustStaminaLoss(-0.25*REM) // the more wounds, the more stamina regen
|
||||
..()
|
||||
|
||||
|
||||
/datum/reagent/plaguebacteria
|
||||
name = "Yersinia pestis"
|
||||
description = "A horrible plague, in a container. It is a TERRIBLE idea to drink this."
|
||||
color = "#7CFC00"
|
||||
taste_description = "death"
|
||||
can_synth = FALSE
|
||||
|
||||
/datum/reagent/plaguebacteria/reaction_mob(mob/living/L, method=TOUCH, reac_volume, show_message = 1, touch_protection = 0)
|
||||
L.ForceContractDisease(new /datum/disease/plague(), FALSE, TRUE)
|
||||
@@ -508,6 +508,7 @@
|
||||
#include "code\datums\diseases\magnitis.dm"
|
||||
#include "code\datums\diseases\parrotpossession.dm"
|
||||
#include "code\datums\diseases\pierrot_throat.dm"
|
||||
#include "code\datums\diseases\plague.dm"
|
||||
#include "code\datums\diseases\retrovirus.dm"
|
||||
#include "code\datums\diseases\rhumba_beat.dm"
|
||||
#include "code\datums\diseases\sleepy.dm"
|
||||
@@ -2534,6 +2535,7 @@
|
||||
#include "code\modules\mob\living\simple_animal\hostile\nanotrasen.dm"
|
||||
#include "code\modules\mob\living\simple_animal\hostile\netherworld.dm"
|
||||
#include "code\modules\mob\living\simple_animal\hostile\pirate.dm"
|
||||
#include "code\modules\mob\living\simple_animal\hostile\plague_rat.dm"
|
||||
#include "code\modules\mob\living\simple_animal\hostile\rat.dm"
|
||||
#include "code\modules\mob\living\simple_animal\hostile\regalrat.dm"
|
||||
#include "code\modules\mob\living\simple_animal\hostile\russian.dm"
|
||||
|
||||
Reference in New Issue
Block a user