Skip to content

Небольшие изменения в вирусологии #3612

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 58 commits into from
May 23, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
58 commits
Select commit Hold shift + click to select a range
5112fa6
Тест тест?
Lexanx Jul 26, 2024
50afd59
Revert "Тест тест?"
Lexanx Jul 26, 2024
55d7781
Merge branch 'SierraBay:dev-sierra' into dev-sierra
Lexanx Jul 26, 2024
bfadba6
Merge branch 'SierraBay:dev-sierra' into dev-sierra
Lexanx Aug 1, 2024
241e17f
Merge branch 'SierraBay:dev-sierra' into dev-sierra
Lexanx Aug 5, 2024
0bb7584
Merge branch 'SierraBay:dev-sierra' into dev-sierra
Lexanx Aug 22, 2024
a886e10
Merge branch 'SierraBay:dev-sierra' into dev-sierra
Lexanx Sep 29, 2024
bbcd6be
Merge branch 'SierraBay:dev-sierra' into dev-sierra
Lexanx Oct 17, 2024
56dd013
Merge branch 'SierraBay:dev-sierra' into dev-sierra
Lexanx Oct 22, 2024
4609819
Merge branch 'SierraBay:dev-sierra' into dev-sierra
Lexanx Nov 3, 2024
2a937b7
Merge branch 'SierraBay:dev-sierra' into dev-sierra
Lexanx Nov 3, 2024
0ce5434
Merge branch 'SierraBay:dev-sierra' into dev-sierra
Lexanx Nov 5, 2024
27b4bc1
Merge branch 'SierraBay:dev-sierra' into dev-sierra
Lexanx Nov 6, 2024
0cc34b0
Merge branch 'SierraBay:dev-sierra' into dev-sierra
Lexanx Nov 9, 2024
3c4bc5b
Merge branch 'SierraBay:dev-sierra' into dev-sierra
Lexanx Nov 10, 2024
ca46a3a
Merge branch 'SierraBay:dev-sierra' into dev-sierra
Lexanx Nov 12, 2024
643a403
Merge branch 'SierraBay:dev-sierra' into dev-sierra
Lexanx Nov 14, 2024
75bf4a8
Merge branch 'SierraBay:dev-sierra' into dev-sierra
Lexanx Nov 24, 2024
2cf9df9
Merge branch 'SierraBay:dev-sierra' into dev-sierra
Lexanx Nov 24, 2024
44cf246
Merge branch 'SierraBay:dev-sierra' into dev-sierra
Lexanx Nov 28, 2024
992dcac
Merge branch 'SierraBay:dev-sierra' into dev-sierra
Lexanx Dec 1, 2024
02a640d
Merge branch 'SierraBay:dev-sierra' into dev-sierra
Lexanx Dec 1, 2024
2ad6b98
Merge branch 'SierraBay:dev-sierra' into dev-sierra
Lexanx Dec 19, 2024
c3d0502
Merge branch 'SierraBay:dev-sierra' into dev-sierra
Lexanx Dec 21, 2024
5fc193d
Merge branch 'SierraBay:dev-sierra' into dev-sierra
Lexanx Jan 4, 2025
10a8e43
Merge branch 'SierraBay:dev-sierra' into dev-sierra
Lexanx Jan 5, 2025
b5aa102
Merge branch 'SierraBay:dev-sierra' into dev-sierra
Lexanx Jan 10, 2025
f62c0dd
Merge branch 'SierraBay:dev-sierra' into dev-sierra
Lexanx Jan 19, 2025
e4f3dd9
Merge branch 'SierraBay:dev-sierra' into dev-sierra
Lexanx Jan 30, 2025
aa8e45a
Merge branch 'SierraBay:dev-sierra' into dev-sierra
Lexanx Feb 1, 2025
eeff875
Merge branch 'SierraBay:dev-sierra' into dev-sierra
Lexanx Feb 8, 2025
3541b87
Merge branch 'SierraBay:dev-sierra' into dev-sierra
Lexanx Feb 21, 2025
874dbf6
Merge branch 'SierraBay:dev-sierra' into dev-sierra
Lexanx Feb 22, 2025
dd1ac1d
Merge branch 'SierraBay:dev-sierra' into dev-sierra
Lexanx Feb 22, 2025
c060a49
Merge branch 'SierraBay:dev-sierra' into dev-sierra
Lexanx Mar 1, 2025
003b261
Merge branch 'SierraBay:dev-sierra' into dev-sierra
Lexanx Apr 12, 2025
d2d1371
Merge branch 'SierraBay:dev-sierra' into dev-sierra
Lexanx Apr 21, 2025
e85de37
Merge branch 'SierraBay:dev-sierra' into dev-sierra
Lexanx Apr 21, 2025
b92de2e
зондбе баф и вирус
Lexanx May 5, 2025
db7287c
bruh
Lexanx May 5, 2025
909a68a
3
Lexanx May 5, 2025
8c886ea
Merge branch 'dev-sierra' into hue-moe
Lexanx May 5, 2025
61563e9
Update human_process.dm
Lexanx May 5, 2025
8ba4f97
Merge branch 'hue-moe' of https://github.com/Lexanx/SierraBay12 into …
Lexanx May 5, 2025
42bbf27
Merge branch 'dev-sierra' into hue-moe
Lexanx May 12, 2025
bcc0434
Update helpers.dm
Lexanx May 17, 2025
cfe16e7
Update viruses.dm
Lexanx May 17, 2025
5693e7b
Merge branch 'dev-sierra' into hue-moe
Lexanx May 21, 2025
5944b79
Update viruses.dm
Lexanx May 22, 2025
edcfb8d
Update human_process.dm
Lexanx May 22, 2025
ff3d1d1
Update human_process.dm
Lexanx May 22, 2025
e3fa940
done?
Lexanx May 22, 2025
8e73d2e
уээ
Lexanx May 22, 2025
a903bd0
gotovo
Lexanx May 22, 2025
031f290
Update effect.dm
Lexanx May 22, 2025
7713549
Merge branch 'dev-sierra' into hue-moe
Lexanx May 22, 2025
a7c4a39
5
Lexanx May 23, 2025
817da85
Merge branch 'dev-sierra' into hue-moe
Lexanx May 23, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions baystation12.dme
Original file line number Diff line number Diff line change
Expand Up @@ -3444,6 +3444,7 @@
#include "mods\_master_files\code\modules\events\gravity.dm"
#include "mods\_master_files\code\modules\maps\map_template.dm"
#include "mods\_master_files\code\modules\mob\living\life.dm"
#include "mods\_master_files\code\modules\mob\living\carbon\viruses.dm"
#include "mods\_master_files\code\modules\mob\living\carbon\human\human_helpers.dm"
#include "mods\_master_files\code\modules\mob\new_player\new_player.dm"
#include "mods\_master_files\code\modules\multiz\turf.dm"
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@

/mob/living/carbon/virus_immunity()
if(reagents)
var/antibiotic_boost = reagents.get_reagent_amount(/datum/reagent/spaceacillin) / (REAGENTS_OVERDOSE/2)
return max(immunity/100 * (1+antibiotic_boost), antibiotic_boost)
4 changes: 2 additions & 2 deletions mods/virusology/code/disease2.dm
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ LEGACY_RECORD_STRUCTURE(virus_records, virus_record)
return

if(stage <= 1 && clicks == 0) // with a certain chance, the mob may become immune to the disease before it starts properly
if(prob(mob.virus_immunity() * 0.05))
if(prob(mob.virus_immunity() * 0.025))
cure(mob, 1)
return

Expand All @@ -88,7 +88,7 @@ LEGACY_RECORD_STRUCTURE(virus_records, virus_record)
cure(mob,1)
//Waiting out the disease the old way
if(stage == max_stage && clicks > max(stage*100, 300))
if(prob(mob.virus_immunity() * 0.05 + 100-infectionchance))
if(prob(mob.virus_immunity() * 0.5))
cure(mob, 1)

var/top_badness = 1
Expand Down
67 changes: 67 additions & 0 deletions mods/virusology/code/effect.dm
Original file line number Diff line number Diff line change
Expand Up @@ -183,8 +183,75 @@
mob.emote("cough")
to_chat(mob, "<span class='warning'>You cough up the [S]!</span>")


/datum/disease2/effect/zombie
name = "Corruption Syndrome"
stage = 4
badness = VIRUS_EXOTIC
chance_max = 80
delay = 20 SECONDS
var/first_message_shown = FALSE
var/time_of_first_tick = 0
var/total_trasformation = 0
var/time_to_trasform = 5 MINUTES


/datum/disease2/effect/zombie/activate(mob/living/carbon/human/mob, multiplier)
if(mob.is_species(SPECIES_ZOMBIE))
return
if(!first_message_shown)
first_message_shown = TRUE
time_of_first_tick = world.time
total_trasformation = time_of_first_tick + time_to_trasform
to_chat(mob, "<span class='notice'>You feel as something hungry is woke up inside you!</span>")
if(prob(50))
to_chat(mob, "<span class='warning'>You feel uncontrollable rage filling you! Your hunger is killing you! You want to eat!</span>")
if (mob.reagents.get_reagent_amount(/datum/reagent/hyperzine) < 10)
mob.reagents.add_reagent(/datum/reagent/hyperzine, 4)
mob.adjust_nutrition(-50)
if(prob(50) && mob.check_has_mouth())//go crazy and bite someone
var/list/mouth_status = mob.can_eat_status()
if (mouth_status[1] == 1)//if no mouth HUMAN_EATING_NBP_MOUTH
to_chat(mob, "<span class='warning'>You angrily attempt to bite someone but you can't without a mouth!</span>")
return
if (mouth_status[1] == 2)//if something covers mouth HUMAN_EATING_BLOCKED_MOUTH
to_chat(mob, "<span class='warning'>You angrily chew \the [mouth_status[2]] covering your mouth!</span>")
return
var/list/mobs_to_bite = list()
for (var/mob/living/carbon/L in range(1))
if (L == mob)
continue
mobs_to_bite += L
if (LAZYLEN(mobs_to_bite) < 1)//nobody to bite
return
var/mob/living/Target = pick(mobs_to_bite)
mob.visible_message("<span class='warning'>[mob] violently bites [Target]!</span>")
Target.adjustBruteLoss(5)
if (prob(50))
infect_virus2(Target, src, 1)
if(total_trasformation)
var/time_left = total_trasformation - world.time
var/transform_chance = (time_left/total_trasformation)*100
if(prob(100-transform_chance))
mob.zombify()

////////////////////////STAGE 3/////////////////////////////////

/datum/disease2/effect/hiv
name = "Immunodeficiency"
stage = 3
multiplier_max = 3
chance = 50
chance_max = 100
badness = VIRUS_COMMON
/datum/disease2/effect/hiv/activate(mob/living/carbon/human/mob)
mob.immunity -= 30
mob.immunity_norm -= 15

/datum/disease2/effect/hiv/deactivate(mob/living/carbon/human/mob)
mob.immunity_norm = 100


/datum/disease2/effect/toxins
name = "Hyperacidity"
stage = 3
Expand Down
2 changes: 1 addition & 1 deletion mods/virusology/code/helpers.dm
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@
var/list/antibodies_in_common = M.antibodies & disease.antigen
if(LAZYLEN(antibodies_in_common))
return
if(prob(100 * M.reagents.get_reagent_amount(/datum/reagent/spaceacillin) / (REAGENTS_OVERDOSE/2)))
if(M.reagents && prob(100 * M.reagents.get_reagent_amount(/datum/reagent/spaceacillin) / (REAGENTS_OVERDOSE/2)))
return

if(!LAZYLEN(disease.affected_species))
Expand Down
2 changes: 2 additions & 0 deletions mods/virusology/code/human_process.dm
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,8 @@
if(life_tick % 5 && immunity < 15 && chem_effects[CE_ANTIVIRAL] < VIRUS_COMMON && !LAZYLEN(virus2))
var/infection_prob = 5 - immunity
var/turf/simulated/T = get_turf(src)
if(istype(T,/turf/space))
return
if(istype(T))
infection_prob += T.dirt
if(T.dirt >= 50)
Expand Down
120 changes: 120 additions & 0 deletions mods/virusology/code/pre_made_viruses.dm
Original file line number Diff line number Diff line change
Expand Up @@ -119,3 +119,123 @@
E4.chance = 2
effects += E4
E4.multiplier = rand(1,E4.multiplier_max)




/datum/disease2/disease/zombie

infectionchance = 80
speed = 8
spreadtype = "Contact"
max_stage = 4
affected_species = list(HUMAN_SPECIES,SPECIES_TAJARA,SPECIES_RESOMI,SPECIES_MONKEY,SPECIES_SPACER,SPECIES_GRAVWORLDER,SPECIES_VATGROWN,SPECIES_VOX,SPECIES_FARWA,SPECIES_MULE,SPECIES_STOK,SPECIES_SKRELL,SPECIES_UNATHI,SPECIES_YEOSA,SPECIES_TRITONIAN,SPECIES_RESOMI,SPECIES_MONKEY,SPECIES_ZOMBIE)


/datum/disease2/disease/zombie/New()
..()
antigen = list(pick(ALL_ANTIGENS))
antigen |= pick(ALL_ANTIGENS)
infectionchance = rand(50,100)
var/datum/disease2/effect/gunck/E1 = new()
E1.stage = 1
E1.chance = 20
effects += E1
E1.multiplier = rand(1,E1.multiplier_max)
var/datum/disease2/effect/hungry/E2 = new()
E2.stage = 2
E2.chance = 25
effects += E2
E2.multiplier = rand(1,E2.multiplier_max)
var/datum/disease2/effect/hiv/E3 = new()
E3.stage = 3
E3.chance = 50
effects += E3
E3.multiplier = rand(3,E3.multiplier_max)
var/datum/disease2/effect/zombie/E4 = new()
E4.stage = 4
E4.chance = 80
effects += E4
E4.multiplier = rand(1,E4.multiplier_max)


////////ЕСЛИ ЗАХОТИМ НА ДЕРЕЛИКТ ДЕЛАТЬ СИМПЛМОБОВ ЗАРАЖЕННЫХ ВИРУСОМ ЗОМБЕЙ, ТО СЮДА ПРОПИСЫВАЕМ ИХ, САМ ПРЕМЕЙД ЕСТЬ ВЫШЕ/////

/// ПРЯМ СЮДА ^
// |

/mob/living/carbon/human/zombify()
if (!(species.name in GLOB.zombie_species) || is_species(SPECIES_DIONA) || is_zombie() || isSynthetic())
return

adjustHalLoss(100)
adjustBruteLoss(50)
make_jittery(300)

var/turf/T = get_turf(src)
new /obj/decal/cleanable/vomit(T)
playsound(T, 'sound/effects/splat.ogg', 20, 1)

var/obj/item/held_l = get_equipped_item(slot_l_hand)
var/obj/item/held_r = get_equipped_item(slot_r_hand)
if(held_l)
drop_from_inventory(held_l)
if(held_r)
drop_from_inventory(held_r)
if(prob(70))
addtimer(new Callback(src, PROC_REF(transform_zombie)), 20)
else
addtimer(new Callback(src, PROC_REF(transform_zombie_smart)), 20)


/singleton/species/zombie/handle_post_spawn(mob/living/carbon/human/H)
. = ..()
var/datum/disease2/disease/zombie = new()
natural_armour_values = list(
melee = ARMOR_MELEE_RESISTANT,
bullet = ARMOR_BALLISTIC_SMALL,
laser = ARMOR_LASER_SMALL,
bomb = ARMOR_BOMB_PADDED,
bio = ARMOR_BIO_SHIELDED,
rad = ARMOR_RAD_RESISTANT
)
infect_virus2(H, zombie, 1)
H.immunity = 10
H.immunity_norm = 10


/singleton/species/zombie/handle_environment_special(mob/living/carbon/human/H)
var/datum/disease2/disease/zombie = new()
if (H.stat == CONSCIOUS)
if (prob(5))
playsound(H.loc, 'sound/hallucinations/far_noise.ogg', 15, 1)
else if (prob(5))
playsound(H.loc, 'sound/hallucinations/veryfar_noise.ogg', 15, 1)
else if (prob(5))
playsound(H.loc, 'sound/hallucinations/wail.ogg', 15, 1)

if (H.stat != DEAD)
for(var/obj/item/organ/organ in (H.organs + H.internal_organs))
if (organ.damage > 0)
organ.heal_damage(heal_rate, heal_rate, 1)
if (H.getToxLoss())
H.adjustToxLoss(-heal_rate)
if (prob(5))
H.resuscitate()
H.vessel.add_reagent(/datum/reagent/blood, min(heal_rate * 20, blood_volume - H.vessel.total_volume))

else
var/list/victims = ohearers(rand(1, 2), H)
for(var/mob/living/carbon/human/M in victims) // Post-mortem infection
if (H == M || M.is_zombie())
continue
if (M.isSynthetic() || M.is_species(SPECIES_DIONA) || !(M.species.name in GLOB.zombie_species))
continue
if (M.wear_mask && (M.wear_mask.item_flags & ITEM_FLAG_AIRTIGHT)) // If they're protected by a mask
continue
if (M.head && (M.head.item_flags & ITEM_FLAG_AIRTIGHT)) // If they're protected by a helmet
continue

var/vuln = 1 - M.get_blocked_ratio(BP_HEAD, DAMAGE_TOXIN, damage_flags = DAMAGE_FLAG_BIO) // Are they protected by hazmat clothing?
if (vuln > 0.10 && prob(8))
infect_virus2(H, zombie, 1)