mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-10 18:22:39 +00:00
New turf proc: assume_gas(). Maps to air.adjust_gas_temp(). Lots of optimizations to processing, fire, lighting, HasEntered() and more. Zones now process all fire data and existance in one go, fire objects only handle spreading. Most code has been ported straight so some of it mightn't be ideally structured for the new gas_mixtures. Signed-off-by: Mloc-Argent <colmohici@gmail.com>
166 lines
4.9 KiB
Plaintext
166 lines
4.9 KiB
Plaintext
var/image/contamination_overlay = image('icons/effects/contamination.dmi')
|
|
|
|
/pl_control
|
|
var/PHORON_DMG = 3
|
|
var/PHORON_DMG_NAME = "Phoron Damage Amount"
|
|
var/PHORON_DMG_DESC = "Self Descriptive"
|
|
|
|
var/CLOTH_CONTAMINATION = 1
|
|
var/CLOTH_CONTAMINATION_NAME = "Cloth Contamination"
|
|
var/CLOTH_CONTAMINATION_DESC = "If this is on, phoron does damage by getting into cloth."
|
|
|
|
var/PHORONGUARD_ONLY = 0
|
|
var/PHORONGUARD_ONLY_NAME = "\"PhoronGuard Only\""
|
|
var/PHORONGUARD_ONLY_DESC = "If this is on, only biosuits and spacesuits protect against contamination and ill effects."
|
|
|
|
var/GENETIC_CORRUPTION = 0
|
|
var/GENETIC_CORRUPTION_NAME = "Genetic Corruption Chance"
|
|
var/GENETIC_CORRUPTION_DESC = "Chance of genetic corruption as well as toxic damage, X in 10,000."
|
|
|
|
var/SKIN_BURNS = 0
|
|
var/SKIN_BURNS_DESC = "Phoron has an effect similar to mustard gas on the un-suited."
|
|
var/SKIN_BURNS_NAME = "Skin Burns"
|
|
|
|
var/EYE_BURNS = 1
|
|
var/EYE_BURNS_NAME = "Eye Burns"
|
|
var/EYE_BURNS_DESC = "Phoron burns the eyes of anyone not wearing eye protection."
|
|
|
|
var/CONTAMINATION_LOSS = 0.02
|
|
var/CONTAMINATION_LOSS_NAME = "Contamination Loss"
|
|
var/CONTAMINATION_LOSS_DESC = "How much toxin damage is dealt from contaminated clothing" //Per tick? ASK ARYN
|
|
|
|
var/PHORON_HALLUCINATION = 0
|
|
var/PHORON_HALLUCINATION_NAME = "Phoron Hallucination"
|
|
var/PHORON_HALLUCINATION_DESC = "Does being in phoron cause you to hallucinate?"
|
|
|
|
var/N2O_HALLUCINATION = 1
|
|
var/N2O_HALLUCINATION_NAME = "N2O Hallucination"
|
|
var/N2O_HALLUCINATION_DESC = "Does being in sleeping gas cause you to hallucinate?"
|
|
|
|
|
|
obj/var/contaminated = 0
|
|
|
|
|
|
/obj/item/proc/can_contaminate()
|
|
//Clothing and backpacks can be contaminated.
|
|
if(flags & PHORONGUARD) return 0
|
|
else if(istype(src,/obj/item/weapon/storage/backpack)) return 0 //Cannot be washed :(
|
|
else if(istype(src,/obj/item/clothing)) return 1
|
|
|
|
/obj/item/proc/contaminate()
|
|
//Do a contamination overlay? Temporary measure to keep contamination less deadly than it was.
|
|
if(!contaminated)
|
|
contaminated = 1
|
|
overlays += contamination_overlay
|
|
|
|
/obj/item/proc/decontaminate()
|
|
contaminated = 0
|
|
overlays -= contamination_overlay
|
|
|
|
/mob/proc/contaminate()
|
|
|
|
/mob/living/carbon/human/contaminate()
|
|
//See if anything can be contaminated.
|
|
|
|
if(!pl_suit_protected())
|
|
suit_contamination()
|
|
|
|
if(!pl_head_protected())
|
|
if(prob(1)) suit_contamination() //Phoron can sometimes get through such an open suit.
|
|
|
|
//Cannot wash backpacks currently.
|
|
// if(istype(back,/obj/item/weapon/storage/backpack))
|
|
// back.contaminate()
|
|
|
|
/mob/proc/pl_effects()
|
|
|
|
/mob/living/carbon/human/pl_effects()
|
|
//Handles all the bad things phoron can do.
|
|
|
|
//Contamination
|
|
if(vsc.plc.CLOTH_CONTAMINATION) contaminate()
|
|
|
|
//Anything else requires them to not be dead.
|
|
if(stat >= 2)
|
|
return
|
|
|
|
//Burn skin if exposed.
|
|
if(vsc.plc.SKIN_BURNS)
|
|
if(!pl_head_protected() || !pl_suit_protected())
|
|
burn_skin(0.75)
|
|
if(prob(20)) src << "\red Your skin burns!"
|
|
updatehealth()
|
|
|
|
//Burn eyes if exposed.
|
|
if(vsc.plc.EYE_BURNS)
|
|
if(!head)
|
|
if(!wear_mask)
|
|
burn_eyes()
|
|
else
|
|
if(!(wear_mask.flags & MASKCOVERSEYES))
|
|
burn_eyes()
|
|
else
|
|
if(!(head.flags & HEADCOVERSEYES))
|
|
if(!wear_mask)
|
|
burn_eyes()
|
|
else
|
|
if(!(wear_mask.flags & MASKCOVERSEYES))
|
|
burn_eyes()
|
|
|
|
//Genetic Corruption
|
|
if(vsc.plc.GENETIC_CORRUPTION)
|
|
if(rand(1,10000) < vsc.plc.GENETIC_CORRUPTION)
|
|
randmutb(src)
|
|
src << "\red High levels of toxins cause you to spontaneously mutate."
|
|
domutcheck(src,null)
|
|
|
|
|
|
/mob/living/carbon/human/proc/burn_eyes()
|
|
//The proc that handles eye burning.
|
|
if(prob(20)) src << "\red Your eyes burn!"
|
|
var/datum/organ/internal/eyes/E = internal_organs_by_name["eyes"]
|
|
E.damage += 2.5
|
|
eye_blurry = min(eye_blurry+1.5,50)
|
|
if (prob(max(0,E.damage - 15) + 1) &&!eye_blind)
|
|
src << "\red You are blinded!"
|
|
eye_blind += 20
|
|
|
|
/mob/living/carbon/human/proc/pl_head_protected()
|
|
//Checks if the head is adequately sealed.
|
|
if(head)
|
|
if(vsc.plc.PHORONGUARD_ONLY)
|
|
if(head.flags & PHORONGUARD)
|
|
return 1
|
|
else if(head.flags & HEADCOVERSEYES)
|
|
return 1
|
|
return 0
|
|
|
|
/mob/living/carbon/human/proc/pl_suit_protected()
|
|
//Checks if the suit is adequately sealed.
|
|
if(wear_suit)
|
|
if(vsc.plc.PHORONGUARD_ONLY)
|
|
if(wear_suit.flags & PHORONGUARD) return 1
|
|
else
|
|
if(wear_suit.flags_inv & HIDEJUMPSUIT) return 1
|
|
//should check HIDETAIL as well, but for the moment tails are not a part that can be damaged separately
|
|
return 0
|
|
|
|
/mob/living/carbon/human/proc/suit_contamination()
|
|
//Runs over the things that can be contaminated and does so.
|
|
if(w_uniform) w_uniform.contaminate()
|
|
if(shoes) shoes.contaminate()
|
|
if(gloves) gloves.contaminate()
|
|
|
|
|
|
turf/Entered(obj/item/I)
|
|
. = ..()
|
|
//Items that are in phoron, but not on a mob, can still be contaminated.
|
|
if(istype(I) && vsc.plc.CLOTH_CONTAMINATION && I.can_contaminate())
|
|
var/datum/gas_mixture/env = return_air(1)
|
|
if(!env)
|
|
return
|
|
for(var/g in env.gas)
|
|
if(gas_data.flags[g] & XGM_GAS_CONTAMINANT && env.gas[g] > gas_data.overlay_limit[g] + 1)
|
|
I.contaminate()
|
|
break
|