added pulmonary fibrosis

This commit is contained in:
Vaern 2021-10-02 13:37:44 -07:00
parent fa88b16c4c
commit 6e32c9818d
5 changed files with 48 additions and 3 deletions

View File

@ -2,6 +2,7 @@ package com.hbm.blocks.gas;
import java.util.Random; import java.util.Random;
import com.hbm.extprop.HbmLivingProps;
import com.hbm.util.ArmorUtil; import com.hbm.util.ArmorUtil;
import com.hbm.util.ContaminationUtil; import com.hbm.util.ContaminationUtil;
import com.hbm.util.ContaminationUtil.ContaminationType; import com.hbm.util.ContaminationUtil.ContaminationType;
@ -24,6 +25,7 @@ public class BlockGasRadon extends BlockGasBase {
if(entity instanceof EntityLivingBase) { if(entity instanceof EntityLivingBase) {
ContaminationUtil.contaminate((EntityLivingBase)entity, HazardType.RADIATION, ContaminationType.RAD_BYPASS, 0.05F); ContaminationUtil.contaminate((EntityLivingBase)entity, HazardType.RADIATION, ContaminationType.RAD_BYPASS, 0.05F);
HbmLivingProps.incrementFibrosis((EntityLivingBase)entity, 5);
} }
} }

View File

@ -3,6 +3,7 @@ package com.hbm.blocks.gas;
import java.util.Random; import java.util.Random;
import com.hbm.blocks.ModBlocks; import com.hbm.blocks.ModBlocks;
import com.hbm.extprop.HbmLivingProps;
import com.hbm.lib.ModDamageSource; import com.hbm.lib.ModDamageSource;
import com.hbm.potion.HbmPotion; import com.hbm.potion.HbmPotion;
import com.hbm.util.ArmorRegistry; import com.hbm.util.ArmorRegistry;
@ -40,6 +41,7 @@ public class BlockGasRadonDense extends BlockGasBase {
} else { } else {
ContaminationUtil.contaminate((EntityLivingBase)entity, HazardType.RADIATION, ContaminationType.CREATIVE, 0.5F); ContaminationUtil.contaminate((EntityLivingBase)entity, HazardType.RADIATION, ContaminationType.CREATIVE, 0.5F);
entityLiving.addPotionEffect(new PotionEffect(HbmPotion.radiation.id, 15 * 20, 0)); entityLiving.addPotionEffect(new PotionEffect(HbmPotion.radiation.id, 15 * 20, 0));
HbmLivingProps.incrementFibrosis(entityLiving, 10);
} }
} }

View File

@ -3,6 +3,7 @@ package com.hbm.blocks.gas;
import java.util.Random; import java.util.Random;
import com.hbm.blocks.ModBlocks; import com.hbm.blocks.ModBlocks;
import com.hbm.extprop.HbmLivingProps;
import com.hbm.util.ContaminationUtil; import com.hbm.util.ContaminationUtil;
import com.hbm.util.ContaminationUtil.ContaminationType; import com.hbm.util.ContaminationUtil.ContaminationType;
import com.hbm.util.ContaminationUtil.HazardType; import com.hbm.util.ContaminationUtil.HazardType;
@ -52,6 +53,7 @@ public class BlockGasRadonTomb extends BlockGasBase {
if(entity instanceof EntityLivingBase) { if(entity instanceof EntityLivingBase) {
ContaminationUtil.contaminate((EntityLivingBase)entity, HazardType.RADIATION, ContaminationType.RAD_BYPASS, 0.5F); ContaminationUtil.contaminate((EntityLivingBase)entity, HazardType.RADIATION, ContaminationType.RAD_BYPASS, 0.5F);
HbmLivingProps.incrementFibrosis((EntityLivingBase)entity, 20);
} }
} }

View File

@ -35,6 +35,8 @@ public class HbmLivingProps implements IExtendedEntityProperties {
public static final int maxAsbestos = 60 * 60 * 20; public static final int maxAsbestos = 60 * 60 * 20;
private int blacklung; private int blacklung;
public static final int maxBlacklung = 60 * 60 * 20; public static final int maxBlacklung = 60 * 60 * 20;
private int Fibrosis;
public static final int maxFibrosis = 60 * 60 * 30;
private float radEnv; private float radEnv;
private float radBuf; private float radBuf;
private int bombTimer; private int bombTimer;
@ -185,6 +187,7 @@ public class HbmLivingProps implements IExtendedEntityProperties {
public static void incrementAsbestos(EntityLivingBase entity, int asbestos) { public static void incrementAsbestos(EntityLivingBase entity, int asbestos) {
setAsbestos(entity, getAsbestos(entity) + asbestos); setAsbestos(entity, getAsbestos(entity) + asbestos);
incrementFibrosis(entity, asbestos);
} }
@ -197,13 +200,32 @@ public class HbmLivingProps implements IExtendedEntityProperties {
getData(entity).blacklung = blacklung; getData(entity).blacklung = blacklung;
if(blacklung >= maxBlacklung) { if(blacklung >= maxBlacklung) {
getData(entity).asbestos = 0; getData(entity).blacklung = 0;
entity.attackEntityFrom(ModDamageSource.asbestos, 1000); entity.attackEntityFrom(ModDamageSource.asbestos, 1000);
} }
} }
public static void incrementBlackLung(EntityLivingBase entity, int blacklung) { public static void incrementBlackLung(EntityLivingBase entity, int blacklung) {
setBlackLung(entity, getBlackLung(entity) + blacklung); setBlackLung(entity, getBlackLung(entity) + blacklung);
incrementFibrosis(entity, blacklung);
}
/// PULMONARY FIBROSIS ///
public static int getFibrosis(EntityLivingBase entity) {
return getData(entity).Fibrosis;
}
public static void setFibrosis(EntityLivingBase entity, int fibrosis) {
getData(entity).Fibrosis = fibrosis;
if (fibrosis >= maxFibrosis) {
getData(entity).Fibrosis = 0;
entity.attackEntityFrom(ModDamageSource.asbestos, 1000);
}
}
public static void incrementFibrosis(EntityLivingBase entity, int fibrosis) {
setFibrosis(entity, getFibrosis(entity) + fibrosis);
} }
/// TIME BOMB /// /// TIME BOMB ///

View File

@ -328,6 +328,7 @@ public class EntityEffectHandler {
if(entity instanceof EntityPlayer && ((EntityPlayer) entity).capabilities.isCreativeMode) { if(entity instanceof EntityPlayer && ((EntityPlayer) entity).capabilities.isCreativeMode) {
HbmLivingProps.setBlackLung(entity, 0); HbmLivingProps.setBlackLung(entity, 0);
HbmLivingProps.setAsbestos(entity, 0); HbmLivingProps.setAsbestos(entity, 0);
HbmLivingProps.setFibrosis(entity, 0);
return; return;
} else { } else {
@ -340,8 +341,9 @@ public class EntityEffectHandler {
double blacklung = Math.min(HbmLivingProps.getBlackLung(entity), HbmLivingProps.maxBlacklung); double blacklung = Math.min(HbmLivingProps.getBlackLung(entity), HbmLivingProps.maxBlacklung);
double asbestos = Math.min(HbmLivingProps.getAsbestos(entity), HbmLivingProps.maxAsbestos); double asbestos = Math.min(HbmLivingProps.getAsbestos(entity), HbmLivingProps.maxAsbestos);
double fibrosis = Math.min(HbmLivingProps.getFibrosis(entity), HbmLivingProps.maxFibrosis);
boolean coughs = blacklung / HbmLivingProps.maxBlacklung > 0.25D || asbestos / HbmLivingProps.maxAsbestos > 0.25D; boolean coughs = blacklung / HbmLivingProps.maxBlacklung > 0.25D || asbestos / HbmLivingProps.maxAsbestos > 0.25D || fibrosis / HbmLivingProps.maxFibrosis > 0.25D;
if(!coughs) if(!coughs)
return; return;
@ -349,11 +351,13 @@ public class EntityEffectHandler {
boolean coughsCoal = blacklung / HbmLivingProps.maxBlacklung > 0.5D; boolean coughsCoal = blacklung / HbmLivingProps.maxBlacklung > 0.5D;
boolean coughsALotOfCoal = blacklung / HbmLivingProps.maxBlacklung > 0.8D; boolean coughsALotOfCoal = blacklung / HbmLivingProps.maxBlacklung > 0.8D;
boolean coughsBlood = asbestos / HbmLivingProps.maxAsbestos > 0.75D || blacklung / HbmLivingProps.maxBlacklung > 0.75D; boolean coughsBlood = asbestos / HbmLivingProps.maxAsbestos > 0.75D || blacklung / HbmLivingProps.maxBlacklung > 0.75D;
boolean asthmaAttack = fibrosis / HbmLivingProps.maxFibrosis > 0.30D;
double blacklungDelta = 1D - (blacklung / (double)HbmLivingProps.maxBlacklung); double blacklungDelta = 1D - (blacklung / (double)HbmLivingProps.maxBlacklung);
double asbestosDelta = 1D - (asbestos / (double)HbmLivingProps.maxAsbestos); double asbestosDelta = 1D - (asbestos / (double)HbmLivingProps.maxAsbestos);
double fibrosisDelta = 1D - (fibrosis / (double)HbmLivingProps.maxFibrosis);
double total = 1 - (blacklungDelta * asbestosDelta); double total = 1 - (blacklungDelta * asbestosDelta * fibrosisDelta);
int freq = Math.max((int) (1000 - 950 * total), 20); int freq = Math.max((int) (1000 - 950 * total), 20);
@ -377,6 +381,10 @@ public class EntityEffectHandler {
nbt.setInteger("count", 5); nbt.setInteger("count", 5);
nbt.setInteger("entity", entity.getEntityId()); nbt.setInteger("entity", entity.getEntityId());
PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(nbt, 0, 0, 0), new TargetPoint(entity.dimension, entity.posX, entity.posY, entity.posZ, 25)); PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(nbt, 0, 0, 0), new TargetPoint(entity.dimension, entity.posX, entity.posY, entity.posZ, 25));
if(asthmaAttack) {
entity.addPotionEffect(new PotionEffect(Potion.confusion.id, 40, 1));
entity.addPotionEffect(new PotionEffect(Potion.moveSlowdown.id, 100, 1));
}
} }
if(coughsCoal) { if(coughsCoal) {
@ -386,6 +394,15 @@ public class EntityEffectHandler {
nbt.setInteger("count", coughsALotOfCoal ? 50 : 10); nbt.setInteger("count", coughsALotOfCoal ? 50 : 10);
nbt.setInteger("entity", entity.getEntityId()); nbt.setInteger("entity", entity.getEntityId());
PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(nbt, 0, 0, 0), new TargetPoint(entity.dimension, entity.posX, entity.posY, entity.posZ, 25)); PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(nbt, 0, 0, 0), new TargetPoint(entity.dimension, entity.posX, entity.posY, entity.posZ, 25));
if(asthmaAttack) {
entity.addPotionEffect(new PotionEffect(Potion.confusion.id, 40, 1));
entity.addPotionEffect(new PotionEffect(Potion.moveSlowdown.id, 100, 1));
}
}
if(asthmaAttack) {
entity.addPotionEffect(new PotionEffect(Potion.confusion.id, 40, 1));
entity.addPotionEffect(new PotionEffect(Potion.moveSlowdown.id, 100, 1));
} }
} }
} }