Skip to content
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

Баунти Прайм. Дебаффы смерти. #1657

Closed
wants to merge 9 commits into from
1 change: 1 addition & 0 deletions modular_ss220/prime_only/_prime.dme
Original file line number Diff line number Diff line change
Expand Up @@ -10,3 +10,4 @@
#include "code/vending.dm"
#include "code/crematorium.dm"
#include "code/shuttle_gib.dm"
#include "code/death_debuffs/death_debuffs.dme"
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
/datum/death_debuff/brain
affected_zone = "brain"
scanned_zone = "мозг"

/datum/death_debuff/ears
affected_zone = "ears"
scanned_zone = "уши"

/datum/death_debuff/eyes
affected_zone = "eyes"
scanned_zone = "глаза"

/datum/death_debuff/heart
affected_zone = "heart"
scanned_zone = "сердце"

/datum/death_debuff/lungs
affected_zone = "lungs"
scanned_zone = "легкие"

/datum/death_debuff/liver
affected_zone = "liver"
scanned_zone = "печень"

/datum/death_debuff/kidneys
affected_zone = "kidneys"
scanned_zone = "почки"

/datum/death_debuff/head
affected_zone = "head"
scanned_zone = "голова"
29 changes: 29 additions & 0 deletions modular_ss220/prime_only/code/death_debuffs/dd_brain_traumas.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
/datum/death_debuff/brain/hallucination
name = "посттравматическое стрессовое расстройство"
reagent_list = list(/datum/reagent/medicine/mannitol,/datum/reagent/medicine/sterilizine)
applied_text = "Вы начинаете видеть необычные вещи."
removed_text = "Похоже призраки прошлого решили оставить вас."

/datum/death_debuff/brain/hallucination/dd_effect()
. = ..()
var/obj/item/organ/organ = H.get_organ_slot(affected_zone)
if(!organ)
return

//Вызывает эффект галлюцинаций
H.AdjustHallucinate(2 SECONDS)

/datum/death_debuff/brain/confusion
name = "сильное сотрясение мозга"
reagent_list = list(/datum/reagent/medicine/mannitol,/datum/reagent/medicine/omnizine)
applied_text = "Либо вы, либо весь мир решил кружиться в вальсе."
removed_text = "Вы снова нормально видите этот мир."

/datum/death_debuff/brain/confusion/dd_effect()
. = ..()
var/obj/item/organ/organ = H.get_organ_slot(affected_zone)
if(!organ)
return

//Вызывает эффект пошатывания
H.SetConfused(2 SECONDS)
32 changes: 32 additions & 0 deletions modular_ss220/prime_only/code/death_debuffs/dd_ears_traumas.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
/datum/death_debuff/ears/destruction
name = "разрушение нервного узла"
reagent_list = list(/datum/reagent/medicine/oculine,/datum/reagent/medicine/mannitol)
applied_text = "Вы осознаете, что полностью потеряли слух."
removed_text = "До вас начинают доносится какие-то звуки."

/datum/death_debuff/ears/destruction/dd_effect()
. = ..()
var/obj/item/organ/organ = H.get_organ_slot(affected_zone)
if(!organ)
return

//Накладывает эффект глухоты
organ.status |= ORGAN_DEAD

/datum/death_debuff/ears/mailfuction
name = "кровоизлияние барабанной перепонки"
reagent_list = list(/datum/reagent/medicine/oculine,/datum/reagent/medicine/heal_on_apply/styptic_powder)
applied_text = "Вам становится чуть теплее в районе уха и его пронзает острая боль."
removed_text = "Боль в районе уха отступила."

/datum/death_debuff/ears/mailfuction/dd_effect()
. = ..()
var/obj/item/organ/organ = H.get_organ_slot(affected_zone)
if(!organ)
return

//Накладывает эффект глухоты
if(prob(10))
H.Deaf(state*0.1 SECONDS)
H.KnockDown(state*0.05 SECONDS)

38 changes: 38 additions & 0 deletions modular_ss220/prime_only/code/death_debuffs/dd_eyes_traumas.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
/datum/death_debuff/eyes/destruction
name = "повреждение затылочной доли"
reagent_list = list(/datum/reagent/medicine/oculine,/datum/reagent/medicine/salglu_solution)
applied_text = "Вы осознаете, что полностью потеряли зрение."
removed_text = "Пелена на глазах отступает."

/datum/death_debuff/eyes/destruction/dd_effect()
. = ..()
var/obj/item/organ/organ = H.get_organ_slot(affected_zone)
if(!organ)
return

//Накладывает эффект полной слепоты
organ.status |= ORGAN_DEAD

/datum/death_debuff/eyes/mailfuction
name = "травма зрительного нерва"
reagent_list = list(/datum/reagent/medicine/oculine,/datum/reagent/medicine/heal_on_apply/silver_sulfadiazine)
applied_text = "Глаза пронзает резкая боль, все кажется слишком ярким."
removed_text = "Похоже что резь в глазах от яркого света отступила."

/datum/death_debuff/eyes/mailfuction/dd_effect()
. = ..()
var/obj/item/organ/internal/eyes/organ = H.get_organ_slot(affected_zone)
if(!organ)
return

//Накладывает кратковременный эффект слепоты и размытия, повышает чувствительной глаз
organ.flash_protect = FLASH_PROTECTION_VERYVUNERABLE
if(prob(10))
H.SetEyeBlurry(state*0.1 SECONDS)
H.SetEyeBlind(state*0.01 SECONDS)

/datum/death_debuff/eyes/mailfuction/remove_debuff()
var/obj/item/organ/internal/eyes/organ = H.get_organ_slot(affected_zone)
if(!organ)
organ.flash_protect = initial(organ.flash_protect)
. = ..()
15 changes: 15 additions & 0 deletions modular_ss220/prime_only/code/death_debuffs/dd_head_trauma.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
/datum/death_debuff/head/trauma
name = "мозговая травма"
reagent_list = list(/datum/chemical_reaction/mannitol,/datum/chemical_reaction/osseous_reagent)
applied_text = "Вашу голову пронзила резкая, давящая боль."
removed_text = "Боль в голове постепенно отступила."

/datum/death_debuff/head/trauma/dd_effect()
. = ..()
var/obj/item/organ/organ = H.get_limb_by_name(affected_zone)
if(!organ)
return

//Накладывает эффект дееспособности на конечность (считается словно ампутированная)
if(H.stat != DEAD)
H.adjustBrainLoss(0.02)
33 changes: 33 additions & 0 deletions modular_ss220/prime_only/code/death_debuffs/dd_heart_traumas.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
/datum/death_debuff/heart/failure
name = "прогрессирующий инфаркт"
reagent_list = list(/datum/reagent/medicine/mitocholide,/datum/reagent/medicine/epinephrine)
applied_text = "Ваше сердце пронзает резкая боль, и кажется, она становится только сильнее."
removed_text = "Боль в сердце отступила."

/datum/death_debuff/heart/failure/dd_effect()
. = ..()
var/obj/item/organ/organ = H.get_organ_slot(affected_zone)
if(!organ)
return

//Сердце бьется неровно и вот-вот будет инфаркт
var/datum/disease/critical/heart_failure/CA
if(!(H.HasDisease(/datum/disease/critical/heart_failure)) && H.stat != DEAD)
CA = new /datum/disease/critical/heart_failure
H.ForceContractDisease(CA)

/datum/death_debuff/heart/mailfunction
name = "брадикардия"
reagent_list = list(/datum/reagent/medicine/mitocholide,/datum/reagent/medicine/ephedrine)
applied_text = "Ваше сердце издает медленное, успокаивающее биение, и силы покидают вас."
removed_text = "Вы снова чувствуете прилив сил."

/datum/death_debuff/heart/mailfunction/dd_effect()
. = ..()
var/obj/item/organ/organ = H.get_organ_slot(affected_zone)
if(!organ)
return

//Сердце медленно бьется и пациент испытывает слабость
if(H.stat != DEAD)
H.adjustStaminaLoss(state * 0.5)
33 changes: 33 additions & 0 deletions modular_ss220/prime_only/code/death_debuffs/dd_kidney_traumas.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
/datum/death_debuff/kidneys/failure
name = "отказ почек"
reagent_list = list(/datum/reagent/medicine/pen_acid)
applied_text = "Вы чувствуете резь в районе чуть ниже спины."
removed_text = "Боль чуть ниже спины отступает."

/datum/death_debuff/kidneys/failure/dd_effect()
. = ..()
var/obj/item/organ/organ = H.get_organ_slot(affected_zone)
if(!organ)
return

//Почки начинают выбрасывать в организм токсины, в зависимости от силы дебаффа
organ.status |= ORGAN_DEAD
if(prob(50) && H.stat != DEAD)
H.adjustToxLoss(state * 0.001)

/datum/death_debuff/kidneys/mailfunction
name = "почечная недостаточность"
reagent_list = list(/datum/reagent/medicine/calomel)
applied_text = "Вы чувствуете легкий дискомфорт где-то в нижней части спины."
removed_text = "Ощущения в нижней части спины пришли в норму, и больше не приносят дискомфорт."

/datum/death_debuff/kidneys/mailfunction/dd_effect()
. = ..()
var/obj/item/organ/organ = H.get_organ_slot(affected_zone)
if(!organ)
return

//При употреблении пищи, почки вырабаьывают гистамин
for(var/datum/reagent/consumable/chemical in H.reagents.reagent_list)
if(!isnull(chemical))
H.reagents.add_reagent("histamine", state * 0.01 * chemical.nutriment_factor)
47 changes: 47 additions & 0 deletions modular_ss220/prime_only/code/death_debuffs/dd_limb_failure.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
/datum/death_debuff/shaking_hands
name = "трасущиеся руки"
reagent_list = list(/datum/reagent/medicine/salglu_solution,/datum/reagent/medicine/sanguine_reagent)
affected_zone = "l_arm"
applied_text = "Ваша левая рука едва-заметно трясется"
removed_text = "Вы чувствуете, как ваша левая рука пришла в норму."

/datum/death_debuff/shaking_hands/r_arm
affected_zone = "r_arm"
applied_text = "Ваша правая рука едва-заметно трясется"
removed_text = "Вы чувствуете, как ваша правая рука пришла в норму."

/datum/death_debuff/shaking_hands/dd_effect()
. = ..()
var/obj/item/organ/organ = H.get_limb_by_name(affected_zone)
if(!organ)
return

//Накладывает эффект дееспособности на конечность (считается словно ампутированная)
var/chance_drop = clamp(state,30,100)
if(prob(chance_drop))
var/arm_slot = (affected_zone == "r_arm" ? SLOT_HUD_RIGHT_HAND : SLOT_HUD_LEFT_HAND)
var/obj/item/arm_item = organ.owner.get_item_by_slot(arm_slot)
organ.owner.unEquip(arm_item)

/datum/death_debuff/muscular_weakness
name = "мышечная слабость"
reagent_list = list(/datum/reagent/medicine/salglu_solution,/datum/reagent/medicine/osseous_reagent)
affected_zone = "l_leg"
applied_text = "Ваша левая нога испытывает слабость и едва вас держит."
removed_text = "Вы чувствуете, как ваша левая нога пришла в норму."

/datum/death_debuff/muscular_weakness/r_leg
affected_zone = "r_leg"
applied_text = "Ваша правая нога испытывает слабость и едва вас держит."
removed_text = "Вы чувствуете, как ваша правая нога пришла в норму."

/datum/death_debuff/muscular_weakness/dd_effect()
. = ..()
var/obj/item/organ/organ = H.get_limb_by_name(affected_zone)
if(!organ)
return

//Накладывает эффект дееспособности на конечность (считается словно ампутированная)
var/chance_drop = clamp(state*2,15,50)
if(prob(chance_drop))
H.KnockDown(2 SECONDS)
37 changes: 37 additions & 0 deletions modular_ss220/prime_only/code/death_debuffs/dd_liver_traumas.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
/datum/death_debuff/liver/failure
name = "отказ печени"
reagent_list = list(/datum/reagent/medicine/potass_iodide)
applied_text = "Ваше тело пронзает резкая боль в районе печени."
removed_text = "Боль в районе печени отступила."

/datum/death_debuff/liver/failure/dd_effect()
. = ..()
var/obj/item/organ/organ = H.get_organ_slot(affected_zone)
if(!organ)
return

//Печень отмирает и начинает выбрасывать по 2 токсина в тело
organ.status |= ORGAN_DEAD
if(prob(33) && H.stat != DEAD)
H.adjustToxLoss(0.25)

/datum/death_debuff/liver/mailfunction
name = "нарушение обмена веществ"
reagent_list = list(/datum/reagent/medicine/charcoal)
applied_text = "Вы внезапно испытываете дикий, почти непреодолимый голод."
removed_text = "Похоже, ваше чувство насыщения вернулось."

/datum/death_debuff/liver/mailfunction/dd_effect()
. = ..()
var/obj/item/organ/organ = H.get_organ_slot(affected_zone)
if(!organ)
return

//Печень сбоит и повышает уровень голода жертвы
organ.owner.physiology.hunger_mod = state * 0.1 * initial(organ.owner.physiology.hunger_mod)

/datum/death_debuff/liver/mailfunction/remove_debuff()
var/obj/item/organ/organ = H.get_organ_slot(affected_zone)
if(!organ)
organ.owner.physiology.hunger_mod = initial(organ.owner.physiology.hunger_mod)
. = ..()
30 changes: 30 additions & 0 deletions modular_ss220/prime_only/code/death_debuffs/dd_lungs_traumas.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
/datum/death_debuff/lungs/failure
name = "повреждение альвеол"
reagent_list = list(/datum/reagent/medicine/perfluorodecalin,/datum/reagent/medicine/salglu_solution)
applied_text = "Вам трудно дышать, вы жадно хватаете ртом воздух."
removed_text = "Ваше дыхание приходит в норму."

/datum/death_debuff/lungs/failure/dd_effect()
. = ..()
var/obj/item/organ/organ = H.get_organ_slot(affected_zone)
if(!organ)
return

//Легкие плохо работают и в итоге персонаж испытывает удушье
if(prob(50) && H.stat != DEAD)
H.adjustOxyLoss(state * 0.1)

/datum/death_debuff/lungs/mailfunction
name = "переохлаждение легких"
reagent_list = list(/datum/reagent/medicine/teporone,/datum/reagent/medicine/heal_on_apply/silver_sulfadiazine)
applied_text = "Вы чувствуете холод в своих легких, который неприятно распротраняется по всему телу."
removed_text = "Похоже, озноб отступил."

/datum/death_debuff/lungs/mailfunction/dd_effect()
. = ..()
var/obj/item/organ/organ = H.get_organ_slot(affected_zone)
if(!organ)
return

//Легкие переохлаждены и снижают температуру тела владельца
organ.owner.bodytemperature -= 0.05 * state
47 changes: 47 additions & 0 deletions modular_ss220/prime_only/code/death_debuffs/dd_paralyze.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
/datum/death_debuff/paralyze
name = "паралич конечности"
reagent_list = list(/datum/reagent/medicine/mannitol,/datum/reagent/medicine/mitocholide)
affected_zone = "l_arm"
applied_text = "Вы понимаете, что с вашей левой рукой что-то не так и она почти безжизненно болтается."
removed_text = "Похоже, ваша левая рука снова в норме."

/datum/death_debuff/paralyze/r_arm
affected_zone = "r_arm"
applied_text = "Вы понимаете, что с вашей правой рукой что-то не так и она почти безжизненно болтается."
removed_text = "Похоже, ваша правая рука снова в норме."

/datum/death_debuff/paralyze/r_leg
affected_zone = "r_leg"
applied_text = "Вы понимаете, что с вашей левой ногой что-то не так и она почти безжизненно болтается."
removed_text = "Похоже, ваша левая нога снова в норме."

/datum/death_debuff/paralyze/l_leg
affected_zone = "l_leg"
applied_text = "Вы понимаете, что с вашей правой ногой что-то не так и она почти безжизненно болтается."
removed_text = "Похоже, ваша правая нога снова в норме."

/datum/death_debuff/paralyze/dd_effect()
. = ..()
var/obj/item/organ/external/organ = H.get_limb_by_name(affected_zone)
if(!organ)
return

//Накладывает эффект дееспособности на конечность (считается словно ампутированная)
organ.paralyzed = TRUE
organ.children[1].paralyzed = TRUE

/datum/death_debuff/paralyze/remove_debuff()
var/obj/item/organ/external/organ = H.get_limb_by_name(affected_zone)
if(organ)
organ.paralyzed = FALSE
organ.children[1].paralyzed = FALSE
. = ..()


/obj/item/organ/external
var/paralyzed = FALSE

/obj/item/organ/external/is_malfunctioning()
if(paralyzed)
return TRUE
. = ..()
Loading
Loading