From d7a6b25a4bed619c90b4cf697a094decfd0f02e6 Mon Sep 17 00:00:00 2001 From: Simon Robertshaw Date: Wed, 2 Jun 2021 18:44:34 +0100 Subject: [PATCH] Experiment with generic "register" for life prop Move PROP_LIFE to LifeSpec register to encode behaviour --- src/simulation/Element.h | 5 ++++ src/simulation/ElementDefs.h | 9 ++++++ src/simulation/Simulation.cpp | 46 ++++++++++++++++++++----------- src/simulation/Simulation.h | 1 + src/simulation/elements/BCLN.cpp | 2 ++ src/simulation/elements/BMTL.cpp | 2 ++ src/simulation/elements/BRAY.cpp | 2 ++ src/simulation/elements/BREC.cpp | 2 ++ src/simulation/elements/BRMT.cpp | 2 ++ src/simulation/elements/BVBR.cpp | 2 ++ src/simulation/elements/C5.cpp | 2 ++ src/simulation/elements/CBNW.cpp | 2 ++ src/simulation/elements/CFLM.cpp | 2 ++ src/simulation/elements/DEST.cpp | 2 ++ src/simulation/elements/ELEC.cpp | 2 ++ src/simulation/elements/EMBR.cpp | 2 ++ src/simulation/elements/EMP.cpp | 2 ++ src/simulation/elements/ETRD.cpp | 2 ++ src/simulation/elements/FILT.cpp | 2 ++ src/simulation/elements/FIRE.cpp | 2 ++ src/simulation/elements/FIRW.cpp | 2 ++ src/simulation/elements/FOG.cpp | 2 ++ src/simulation/elements/FRZW.cpp | 2 ++ src/simulation/elements/FWRK.cpp | 2 ++ src/simulation/elements/GBMB.cpp | 2 ++ src/simulation/elements/GEL.cpp | 2 ++ src/simulation/elements/GLOW.cpp | 2 ++ src/simulation/elements/GOLD.cpp | 2 ++ src/simulation/elements/GOO.cpp | 2 ++ src/simulation/elements/GRAV.cpp | 2 ++ src/simulation/elements/GRVT.cpp | 2 ++ src/simulation/elements/ICEI.cpp | 2 ++ src/simulation/elements/IGNT.cpp | 2 ++ src/simulation/elements/INST.cpp | 2 ++ src/simulation/elements/INWR.cpp | 2 ++ src/simulation/elements/IRON.cpp | 2 ++ src/simulation/elements/LAVA.cpp | 2 ++ src/simulation/elements/LITH.cpp | 2 ++ src/simulation/elements/LRBD.cpp | 2 ++ src/simulation/elements/MERC.cpp | 2 ++ src/simulation/elements/METL.cpp | 2 ++ src/simulation/elements/NBLE.cpp | 2 ++ src/simulation/elements/NEUT.cpp | 2 ++ src/simulation/elements/NSCN.cpp | 2 ++ src/simulation/elements/NTCT.cpp | 2 ++ src/simulation/elements/PHOT.cpp | 2 ++ src/simulation/elements/PIPE.cpp | 2 ++ src/simulation/elements/PLNT.cpp | 2 ++ src/simulation/elements/PLSM.cpp | 2 ++ src/simulation/elements/POLO.cpp | 2 ++ src/simulation/elements/PPIP.cpp | 2 ++ src/simulation/elements/PSCN.cpp | 2 ++ src/simulation/elements/PTCT.cpp | 2 ++ src/simulation/elements/PTNM.cpp | 2 ++ src/simulation/elements/QRTZ.cpp | 2 ++ src/simulation/elements/RBDM.cpp | 2 ++ src/simulation/elements/SHLD1.cpp | 2 ++ src/simulation/elements/SHLD2.cpp | 2 ++ src/simulation/elements/SHLD3.cpp | 2 ++ src/simulation/elements/SHLD4.cpp | 2 ++ src/simulation/elements/SING.cpp | 2 ++ src/simulation/elements/SLCN.cpp | 2 ++ src/simulation/elements/SLTW.cpp | 2 ++ src/simulation/elements/SMKE.cpp | 2 ++ src/simulation/elements/SOAP.cpp | 2 ++ src/simulation/elements/SPRK.cpp | 2 ++ src/simulation/elements/TESC.cpp | 2 ++ src/simulation/elements/TRON.cpp | 2 ++ src/simulation/elements/TTAN.cpp | 2 ++ src/simulation/elements/TUNG.cpp | 2 ++ src/simulation/elements/VIBR.cpp | 2 ++ src/simulation/elements/WARP.cpp | 2 ++ src/simulation/elements/WATR.cpp | 2 ++ 73 files changed, 183 insertions(+), 16 deletions(-) diff --git a/src/simulation/Element.h b/src/simulation/Element.h index 75188153c..c4c37c232 100644 --- a/src/simulation/Element.h +++ b/src/simulation/Element.h @@ -59,6 +59,11 @@ public: bool (*CtypeDraw) (CTYPEDRAW_FUNC_ARGS); + int LifeSpec = 0; + int CtypeSpec = 0; + int TmpSpec = 0; + int Tmp2Spec = 0; + VideoBuffer * (*IconGenerator)(int, int, int); Particle DefaultProperties; diff --git a/src/simulation/ElementDefs.h b/src/simulation/ElementDefs.h index 6b9ac045d..13d99f012 100644 --- a/src/simulation/ElementDefs.h +++ b/src/simulation/ElementDefs.h @@ -10,6 +10,15 @@ #define O_MAX_TEMP 3500 #define O_MIN_TEMP -273 +#define RSPEC_STORAGE_TYPE_NUMBER 0x0001 //Register stores an untyped number +#define RSPEC_STORAGE_TYPE_ELEMENT 0x0002 //Register stores a number that refers to an element type +#define RSPEC_STORAGE_TYPE_ELEMENT_PACKED 0x0004 //Register stores an element type packaged into the lower bits with ancilliary data in higher bits. +#define RSPEC_STORAGE_TYPE 0x00FF +#define RSPEC_BEHAVIOUR_DEC 0x0100 //The register value will be decremented to zero on every frame +#define RSPEC_BEHAVIOUR_ZERO_KILL 0x0200 //A particle with a zero value will be killed +#define RSPEC_BEHAVIOUR_DEC_ZERO_KILL 0x0400 //A particle will be killed when the value of this register is decremented to zero from RSPEC_BEHAVIOUR_DEC +#define RSPEC_BEHAVIOUR 0xFF00 + #define TYPE_PART 0x00001 //1 Powders #define TYPE_LIQUID 0x00002 //2 Liquids #define TYPE_SOLID 0x00004 //4 Solids diff --git a/src/simulation/Simulation.cpp b/src/simulation/Simulation.cpp index da639ad15..95c822b30 100644 --- a/src/simulation/Simulation.cpp +++ b/src/simulation/Simulation.cpp @@ -4713,6 +4713,28 @@ int Simulation::GetParticleType(ByteString type) return -1; } +bool Simulation::ApplyIntegerRegisterBehaviour(int i, int ®, int registerSpec) { + //unsigned int elem_properties = elements[t].Properties; + if (reg>0 && (registerSpec&RSPEC_BEHAVIOUR_DEC)) + { + // automatically decrease life + reg--; + if (reg<=0 && (registerSpec&(RSPEC_BEHAVIOUR_DEC_ZERO_KILL|RSPEC_BEHAVIOUR_ZERO_KILL))) + { + // kill on change to no life + kill_part(i); + return true; + } + } + else if (reg<=0 && (registerSpec&RSPEC_BEHAVIOUR_ZERO_KILL)) + { + // kill if no life + kill_part(i); + return true; + } + return false; +} + void Simulation::RecalcFreeParticles(bool do_life_dec) { int x, y, t; @@ -4764,23 +4786,15 @@ void Simulation::RecalcFreeParticles(bool do_life_dec) continue; } - unsigned int elem_properties = elements[t].Properties; - if (parts[i].life>0 && (elem_properties&PROP_LIFE_DEC) && !(inBounds && bmap[y/CELL][x/CELL] == WL_STASIS && emap[y/CELL][x/CELL]<8)) - { - // automatically decrease life - parts[i].life--; - if (parts[i].life<=0 && (elem_properties&(PROP_LIFE_KILL_DEC|PROP_LIFE_KILL))) - { - // kill on change to no life - kill_part(i); + if(!(inBounds && bmap[y/CELL][x/CELL] == WL_STASIS && emap[y/CELL][x/CELL]<8)) { + if(ApplyIntegerRegisterBehaviour(i, parts[i].life, elements[t].LifeSpec)) + continue; + if(ApplyIntegerRegisterBehaviour(i, parts[i].ctype, elements[t].CtypeSpec)) + continue; + if(ApplyIntegerRegisterBehaviour(i, parts[i].tmp, elements[t].TmpSpec)) + continue; + if(ApplyIntegerRegisterBehaviour(i, parts[i].tmp2, elements[t].Tmp2Spec)) continue; - } - } - else if (parts[i].life<=0 && (elem_properties&PROP_LIFE_KILL) && !(inBounds && bmap[y/CELL][x/CELL] == WL_STASIS && emap[y/CELL][x/CELL]<8)) - { - // kill if no life - kill_part(i); - continue; } } } diff --git a/src/simulation/Simulation.h b/src/simulation/Simulation.h index d76e94f5c..4657ee600 100644 --- a/src/simulation/Simulation.h +++ b/src/simulation/Simulation.h @@ -161,6 +161,7 @@ public: void create_arc(int sx, int sy, int dx, int dy, int midpoints, int variance, int type, int flags); void UpdateParticles(int start, int end); void SimulateGoL(); + bool ApplyIntegerRegisterBehaviour(int i, int ®, int registerSpec); void RecalcFreeParticles(bool do_life_dec); void CheckStacking(); void BeforeSim(); diff --git a/src/simulation/elements/BCLN.cpp b/src/simulation/elements/BCLN.cpp index 6f1158775..4264804e3 100644 --- a/src/simulation/elements/BCLN.cpp +++ b/src/simulation/elements/BCLN.cpp @@ -33,6 +33,8 @@ void Element::Element_BCLN() Properties = TYPE_SOLID | PROP_LIFE_DEC | PROP_LIFE_KILL_DEC | PROP_NOCTYPEDRAW; + LifeSpec = RSPEC_STORAGE_TYPE_NUMBER | RSPEC_BEHAVIOUR_DEC | RSPEC_BEHAVIOUR_DEC_ZERO_KILL; + LowPressure = IPL; LowPressureTransition = NT; HighPressure = IPH; diff --git a/src/simulation/elements/BMTL.cpp b/src/simulation/elements/BMTL.cpp index aafaf0a1c..2a988165d 100644 --- a/src/simulation/elements/BMTL.cpp +++ b/src/simulation/elements/BMTL.cpp @@ -33,6 +33,8 @@ void Element::Element_BMTL() Properties = TYPE_SOLID|PROP_CONDUCTS|PROP_LIFE_DEC|PROP_HOT_GLOW; + LifeSpec = RSPEC_STORAGE_TYPE_NUMBER | RSPEC_BEHAVIOUR_DEC; + LowPressure = IPL; LowPressureTransition = NT; HighPressure = 1.0f; diff --git a/src/simulation/elements/BRAY.cpp b/src/simulation/elements/BRAY.cpp index e8d11546d..5b76194f2 100644 --- a/src/simulation/elements/BRAY.cpp +++ b/src/simulation/elements/BRAY.cpp @@ -33,6 +33,8 @@ void Element::Element_BRAY() Properties = TYPE_SOLID|PROP_LIFE_DEC|PROP_LIFE_KILL; + LifeSpec = RSPEC_STORAGE_TYPE_NUMBER | RSPEC_BEHAVIOUR_DEC | RSPEC_BEHAVIOUR_ZERO_KILL; + LowPressure = IPL; LowPressureTransition = NT; HighPressure = IPH; diff --git a/src/simulation/elements/BREC.cpp b/src/simulation/elements/BREC.cpp index 070514599..6aaa9e82d 100644 --- a/src/simulation/elements/BREC.cpp +++ b/src/simulation/elements/BREC.cpp @@ -33,6 +33,8 @@ void Element::Element_BREC() Properties = TYPE_PART|PROP_CONDUCTS|PROP_LIFE_DEC|PROP_HOT_GLOW; + LifeSpec = RSPEC_STORAGE_TYPE_NUMBER | RSPEC_BEHAVIOUR_DEC; + LowPressure = IPL; LowPressureTransition = NT; HighPressure = IPH; diff --git a/src/simulation/elements/BRMT.cpp b/src/simulation/elements/BRMT.cpp index 5413a92da..483512d66 100644 --- a/src/simulation/elements/BRMT.cpp +++ b/src/simulation/elements/BRMT.cpp @@ -33,6 +33,8 @@ void Element::Element_BRMT() Properties = TYPE_PART|PROP_CONDUCTS|PROP_LIFE_DEC|PROP_HOT_GLOW; + LifeSpec = RSPEC_STORAGE_TYPE_NUMBER | RSPEC_BEHAVIOUR_DEC; + LowPressure = IPL; LowPressureTransition = NT; HighPressure = IPH; diff --git a/src/simulation/elements/BVBR.cpp b/src/simulation/elements/BVBR.cpp index b32ead1e0..dc297d108 100644 --- a/src/simulation/elements/BVBR.cpp +++ b/src/simulation/elements/BVBR.cpp @@ -35,6 +35,8 @@ void Element::Element_BVBR() Properties = TYPE_PART|PROP_LIFE_DEC; + LifeSpec = RSPEC_STORAGE_TYPE_NUMBER | RSPEC_BEHAVIOUR_DEC; + LowPressure = IPL; LowPressureTransition = NT; HighPressure = IPH; diff --git a/src/simulation/elements/C5.cpp b/src/simulation/elements/C5.cpp index 908eac6e9..61d523343 100644 --- a/src/simulation/elements/C5.cpp +++ b/src/simulation/elements/C5.cpp @@ -34,6 +34,8 @@ void Element::Element_C5() Properties = TYPE_SOLID | PROP_NEUTPENETRATE | PROP_LIFE_DEC; + LifeSpec = RSPEC_STORAGE_TYPE_NUMBER | RSPEC_BEHAVIOUR_DEC; + LowPressure = IPL; LowPressureTransition = NT; HighPressure = IPH; diff --git a/src/simulation/elements/CBNW.cpp b/src/simulation/elements/CBNW.cpp index 37e21cc95..9b3d73d2b 100644 --- a/src/simulation/elements/CBNW.cpp +++ b/src/simulation/elements/CBNW.cpp @@ -35,6 +35,8 @@ void Element::Element_CBNW() Properties = TYPE_LIQUID|PROP_CONDUCTS|PROP_LIFE_DEC|PROP_NEUTPENETRATE; + LifeSpec = RSPEC_STORAGE_TYPE_NUMBER | RSPEC_BEHAVIOUR_DEC; + LowPressure = IPL; LowPressureTransition = NT; HighPressure = IPH; diff --git a/src/simulation/elements/CFLM.cpp b/src/simulation/elements/CFLM.cpp index d11216da3..b39ef7e0c 100644 --- a/src/simulation/elements/CFLM.cpp +++ b/src/simulation/elements/CFLM.cpp @@ -36,6 +36,8 @@ void Element::Element_CFLM() Properties = TYPE_GAS|PROP_LIFE_DEC|PROP_LIFE_KILL; + LifeSpec = RSPEC_STORAGE_TYPE_NUMBER | RSPEC_BEHAVIOUR_DEC | RSPEC_BEHAVIOUR_ZERO_KILL; + LowPressure = IPL; LowPressureTransition = NT; HighPressure = IPH; diff --git a/src/simulation/elements/DEST.cpp b/src/simulation/elements/DEST.cpp index f7331e616..5c8ef080a 100644 --- a/src/simulation/elements/DEST.cpp +++ b/src/simulation/elements/DEST.cpp @@ -34,6 +34,8 @@ void Element::Element_DEST() Properties = TYPE_PART|PROP_LIFE_DEC|PROP_LIFE_KILL_DEC; + LifeSpec = RSPEC_STORAGE_TYPE_NUMBER | RSPEC_BEHAVIOUR_DEC | RSPEC_BEHAVIOUR_DEC_ZERO_KILL; + LowPressure = IPL; LowPressureTransition = NT; HighPressure = IPH; diff --git a/src/simulation/elements/ELEC.cpp b/src/simulation/elements/ELEC.cpp index f8df72039..e478282e1 100644 --- a/src/simulation/elements/ELEC.cpp +++ b/src/simulation/elements/ELEC.cpp @@ -36,6 +36,8 @@ void Element::Element_ELEC() Properties = TYPE_ENERGY|PROP_LIFE_DEC|PROP_LIFE_KILL_DEC; + LifeSpec = RSPEC_STORAGE_TYPE_NUMBER | RSPEC_BEHAVIOUR_DEC | RSPEC_BEHAVIOUR_DEC_ZERO_KILL; + LowPressure = IPL; LowPressureTransition = NT; HighPressure = IPH; diff --git a/src/simulation/elements/EMBR.cpp b/src/simulation/elements/EMBR.cpp index 2c7e256f4..e3bcf41f1 100644 --- a/src/simulation/elements/EMBR.cpp +++ b/src/simulation/elements/EMBR.cpp @@ -35,6 +35,8 @@ void Element::Element_EMBR() Properties = TYPE_PART|PROP_LIFE_DEC|PROP_LIFE_KILL|PROP_SPARKSETTLE; + LifeSpec = RSPEC_STORAGE_TYPE_NUMBER | RSPEC_BEHAVIOUR_DEC | RSPEC_BEHAVIOUR_ZERO_KILL; + LowPressure = IPL; LowPressureTransition = NT; HighPressure = IPH; diff --git a/src/simulation/elements/EMP.cpp b/src/simulation/elements/EMP.cpp index 0a464097d..1cb2be257 100644 --- a/src/simulation/elements/EMP.cpp +++ b/src/simulation/elements/EMP.cpp @@ -34,6 +34,8 @@ void Element::Element_EMP() Properties = TYPE_SOLID|PROP_LIFE_DEC; + LifeSpec = RSPEC_STORAGE_TYPE_NUMBER | RSPEC_BEHAVIOUR_DEC; + LowPressure = IPL; LowPressureTransition = NT; HighPressure = IPH; diff --git a/src/simulation/elements/ETRD.cpp b/src/simulation/elements/ETRD.cpp index f7114dbf6..343d426e4 100644 --- a/src/simulation/elements/ETRD.cpp +++ b/src/simulation/elements/ETRD.cpp @@ -35,6 +35,8 @@ void Element::Element_ETRD() Properties = TYPE_SOLID|PROP_CONDUCTS|PROP_LIFE_DEC; + LifeSpec = RSPEC_STORAGE_TYPE_NUMBER | RSPEC_BEHAVIOUR_DEC; + LowPressure = IPL; LowPressureTransition = NT; HighPressure = IPH; diff --git a/src/simulation/elements/FILT.cpp b/src/simulation/elements/FILT.cpp index c377396db..d76a57781 100644 --- a/src/simulation/elements/FILT.cpp +++ b/src/simulation/elements/FILT.cpp @@ -36,6 +36,8 @@ void Element::Element_FILT() Properties = TYPE_SOLID | PROP_NOAMBHEAT | PROP_LIFE_DEC; + LifeSpec = RSPEC_STORAGE_TYPE_NUMBER | RSPEC_BEHAVIOUR_DEC; + LowPressure = IPL; LowPressureTransition = NT; HighPressure = IPH; diff --git a/src/simulation/elements/FIRE.cpp b/src/simulation/elements/FIRE.cpp index 77b2c9416..f43198f40 100644 --- a/src/simulation/elements/FIRE.cpp +++ b/src/simulation/elements/FIRE.cpp @@ -38,6 +38,8 @@ void Element::Element_FIRE() Properties = TYPE_GAS|PROP_LIFE_DEC|PROP_LIFE_KILL; + LifeSpec = RSPEC_STORAGE_TYPE_NUMBER | RSPEC_BEHAVIOUR_DEC | RSPEC_BEHAVIOUR_ZERO_KILL; + LowPressure = IPL; LowPressureTransition = NT; HighPressure = IPH; diff --git a/src/simulation/elements/FIRW.cpp b/src/simulation/elements/FIRW.cpp index 642f0ebcb..9b12af52b 100644 --- a/src/simulation/elements/FIRW.cpp +++ b/src/simulation/elements/FIRW.cpp @@ -35,6 +35,8 @@ void Element::Element_FIRW() Properties = TYPE_PART|PROP_LIFE_DEC; + LifeSpec = RSPEC_STORAGE_TYPE_NUMBER | RSPEC_BEHAVIOUR_DEC; + LowPressure = IPL; LowPressureTransition = NT; HighPressure = IPH; diff --git a/src/simulation/elements/FOG.cpp b/src/simulation/elements/FOG.cpp index 9b655e1f7..c41e85b69 100644 --- a/src/simulation/elements/FOG.cpp +++ b/src/simulation/elements/FOG.cpp @@ -34,6 +34,8 @@ void Element::Element_FOG() Properties = TYPE_GAS|PROP_LIFE_DEC; + LifeSpec = RSPEC_STORAGE_TYPE_NUMBER | RSPEC_BEHAVIOUR_DEC; + LowPressure = IPL; LowPressureTransition = NT; HighPressure = IPH; diff --git a/src/simulation/elements/FRZW.cpp b/src/simulation/elements/FRZW.cpp index a5306bbae..b531f4586 100644 --- a/src/simulation/elements/FRZW.cpp +++ b/src/simulation/elements/FRZW.cpp @@ -34,6 +34,8 @@ void Element::Element_FRZW() Properties = TYPE_LIQUID | PROP_LIFE_DEC; + LifeSpec = RSPEC_STORAGE_TYPE_NUMBER | RSPEC_BEHAVIOUR_DEC; + LowPressure = IPL; LowPressureTransition = NT; HighPressure = IPH; diff --git a/src/simulation/elements/FWRK.cpp b/src/simulation/elements/FWRK.cpp index 8f6f52396..789e8c72b 100644 --- a/src/simulation/elements/FWRK.cpp +++ b/src/simulation/elements/FWRK.cpp @@ -34,6 +34,8 @@ void Element::Element_FWRK() Properties = TYPE_PART|PROP_LIFE_DEC; + LifeSpec = RSPEC_STORAGE_TYPE_NUMBER | RSPEC_BEHAVIOUR_DEC; + LowPressure = IPL; LowPressureTransition = NT; HighPressure = IPH; diff --git a/src/simulation/elements/GBMB.cpp b/src/simulation/elements/GBMB.cpp index b99c9678e..5deb7fe83 100644 --- a/src/simulation/elements/GBMB.cpp +++ b/src/simulation/elements/GBMB.cpp @@ -35,6 +35,8 @@ void Element::Element_GBMB() Properties = TYPE_PART|PROP_LIFE_DEC|PROP_LIFE_KILL_DEC; + LifeSpec = RSPEC_STORAGE_TYPE_NUMBER | RSPEC_BEHAVIOUR_DEC | RSPEC_BEHAVIOUR_DEC_ZERO_KILL; + LowPressure = IPL; LowPressureTransition = NT; HighPressure = IPH; diff --git a/src/simulation/elements/GEL.cpp b/src/simulation/elements/GEL.cpp index aa0b8a7fc..911e0e749 100644 --- a/src/simulation/elements/GEL.cpp +++ b/src/simulation/elements/GEL.cpp @@ -35,6 +35,8 @@ void Element::Element_GEL() Properties = TYPE_LIQUID|PROP_LIFE_DEC|PROP_NEUTPENETRATE; + LifeSpec = RSPEC_STORAGE_TYPE_NUMBER | RSPEC_BEHAVIOUR_DEC; + LowPressure = IPL; LowPressureTransition = NT; HighPressure = IPH; diff --git a/src/simulation/elements/GLOW.cpp b/src/simulation/elements/GLOW.cpp index 281542993..285ac816f 100644 --- a/src/simulation/elements/GLOW.cpp +++ b/src/simulation/elements/GLOW.cpp @@ -35,6 +35,8 @@ void Element::Element_GLOW() Properties = TYPE_LIQUID | PROP_LIFE_DEC; + LifeSpec = RSPEC_STORAGE_TYPE_NUMBER | RSPEC_BEHAVIOUR_DEC; + LowPressure = IPL; LowPressureTransition = NT; HighPressure = IPH; diff --git a/src/simulation/elements/GOLD.cpp b/src/simulation/elements/GOLD.cpp index 3908bba13..6a3690bf9 100644 --- a/src/simulation/elements/GOLD.cpp +++ b/src/simulation/elements/GOLD.cpp @@ -36,6 +36,8 @@ void Element::Element_GOLD() Properties = TYPE_SOLID|PROP_CONDUCTS|PROP_HOT_GLOW|PROP_LIFE_DEC|PROP_NEUTPASS; + LifeSpec = RSPEC_STORAGE_TYPE_NUMBER | RSPEC_BEHAVIOUR_DEC; + LowPressure = IPL; LowPressureTransition = NT; HighPressure = IPH; diff --git a/src/simulation/elements/GOO.cpp b/src/simulation/elements/GOO.cpp index 2916c9ba0..7a98f5d6e 100644 --- a/src/simulation/elements/GOO.cpp +++ b/src/simulation/elements/GOO.cpp @@ -34,6 +34,8 @@ void Element::Element_GOO() Properties = TYPE_SOLID | PROP_NEUTPENETRATE|PROP_LIFE_DEC|PROP_LIFE_KILL_DEC; + LifeSpec = RSPEC_STORAGE_TYPE_NUMBER | RSPEC_BEHAVIOUR_DEC | RSPEC_BEHAVIOUR_DEC_ZERO_KILL; + LowPressure = IPL; LowPressureTransition = NT; HighPressure = IPH; diff --git a/src/simulation/elements/GRAV.cpp b/src/simulation/elements/GRAV.cpp index 4fca0d105..087590904 100644 --- a/src/simulation/elements/GRAV.cpp +++ b/src/simulation/elements/GRAV.cpp @@ -35,6 +35,8 @@ void Element::Element_GRAV() Properties = TYPE_PART | PROP_LIFE_DEC; + LifeSpec = RSPEC_STORAGE_TYPE_NUMBER | RSPEC_BEHAVIOUR_DEC; + LowPressure = IPL; LowPressureTransition = NT; HighPressure = IPH; diff --git a/src/simulation/elements/GRVT.cpp b/src/simulation/elements/GRVT.cpp index c12e90898..f7786d73f 100644 --- a/src/simulation/elements/GRVT.cpp +++ b/src/simulation/elements/GRVT.cpp @@ -35,6 +35,8 @@ void Element::Element_GRVT() Properties = TYPE_ENERGY|PROP_LIFE_DEC|PROP_LIFE_KILL_DEC; + LifeSpec = RSPEC_STORAGE_TYPE_NUMBER | RSPEC_BEHAVIOUR_DEC | RSPEC_BEHAVIOUR_DEC_ZERO_KILL; + LowPressure = IPL; LowPressureTransition = NT; HighPressure = IPH; diff --git a/src/simulation/elements/ICEI.cpp b/src/simulation/elements/ICEI.cpp index 5445783f8..5744fdc25 100644 --- a/src/simulation/elements/ICEI.cpp +++ b/src/simulation/elements/ICEI.cpp @@ -34,6 +34,8 @@ void Element::Element_ICEI() Properties = TYPE_SOLID|PROP_LIFE_DEC|PROP_NEUTPASS; + LifeSpec = RSPEC_STORAGE_TYPE_NUMBER | RSPEC_BEHAVIOUR_DEC; + LowPressure = IPL; LowPressureTransition = NT; HighPressure = 0.8f; diff --git a/src/simulation/elements/IGNT.cpp b/src/simulation/elements/IGNT.cpp index 624a68b3d..ed7f8b7a1 100644 --- a/src/simulation/elements/IGNT.cpp +++ b/src/simulation/elements/IGNT.cpp @@ -33,6 +33,8 @@ void Element::Element_IGNT() Properties = TYPE_SOLID | PROP_NEUTPENETRATE | PROP_SPARKSETTLE | PROP_LIFE_KILL; + LifeSpec = RSPEC_STORAGE_TYPE_NUMBER | RSPEC_BEHAVIOUR_ZERO_KILL; + LowPressure = IPL; LowPressureTransition = NT; HighPressure = IPH; diff --git a/src/simulation/elements/INST.cpp b/src/simulation/elements/INST.cpp index 3e50ceeb1..b0a8d6051 100644 --- a/src/simulation/elements/INST.cpp +++ b/src/simulation/elements/INST.cpp @@ -31,6 +31,8 @@ void Element::Element_INST() Properties = TYPE_SOLID|PROP_LIFE_DEC; + LifeSpec = RSPEC_STORAGE_TYPE_NUMBER | RSPEC_BEHAVIOUR_DEC; + LowPressure = IPL; LowPressureTransition = NT; HighPressure = IPH; diff --git a/src/simulation/elements/INWR.cpp b/src/simulation/elements/INWR.cpp index 9d1137ec8..f40e90de8 100644 --- a/src/simulation/elements/INWR.cpp +++ b/src/simulation/elements/INWR.cpp @@ -31,6 +31,8 @@ void Element::Element_INWR() Properties = TYPE_SOLID|PROP_CONDUCTS|PROP_LIFE_DEC; + LifeSpec = RSPEC_STORAGE_TYPE_NUMBER | RSPEC_BEHAVIOUR_DEC; + LowPressure = IPL; LowPressureTransition = NT; HighPressure = IPH; diff --git a/src/simulation/elements/IRON.cpp b/src/simulation/elements/IRON.cpp index 45ef6c76d..e9ada93d5 100644 --- a/src/simulation/elements/IRON.cpp +++ b/src/simulation/elements/IRON.cpp @@ -33,6 +33,8 @@ void Element::Element_IRON() Properties = TYPE_SOLID|PROP_CONDUCTS|PROP_LIFE_DEC|PROP_HOT_GLOW; + LifeSpec = RSPEC_STORAGE_TYPE_NUMBER | RSPEC_BEHAVIOUR_DEC; + LowPressure = IPL; LowPressureTransition = NT; HighPressure = IPH; diff --git a/src/simulation/elements/LAVA.cpp b/src/simulation/elements/LAVA.cpp index be5cf197f..5b72672e1 100644 --- a/src/simulation/elements/LAVA.cpp +++ b/src/simulation/elements/LAVA.cpp @@ -37,6 +37,8 @@ void Element::Element_LAVA() Properties = TYPE_LIQUID|PROP_LIFE_DEC; + LifeSpec = RSPEC_STORAGE_TYPE_NUMBER | RSPEC_BEHAVIOUR_DEC; + LowPressure = IPL; LowPressureTransition = NT; HighPressure = IPH; diff --git a/src/simulation/elements/LITH.cpp b/src/simulation/elements/LITH.cpp index b05088a69..e141d79d8 100644 --- a/src/simulation/elements/LITH.cpp +++ b/src/simulation/elements/LITH.cpp @@ -34,6 +34,8 @@ void Element::Element_LITH() Properties = TYPE_PART | PROP_LIFE_DEC; + LifeSpec = RSPEC_STORAGE_TYPE_NUMBER | RSPEC_BEHAVIOUR_DEC; + LowPressure = IPL; LowPressureTransition = NT; HighPressure = IPH; diff --git a/src/simulation/elements/LRBD.cpp b/src/simulation/elements/LRBD.cpp index b7716ac86..fd2e654ff 100644 --- a/src/simulation/elements/LRBD.cpp +++ b/src/simulation/elements/LRBD.cpp @@ -32,6 +32,8 @@ void Element::Element_LRBD() Properties = TYPE_LIQUID|PROP_CONDUCTS|PROP_LIFE_DEC; + LifeSpec = RSPEC_STORAGE_TYPE_NUMBER | RSPEC_BEHAVIOUR_DEC; + LowPressure = IPL; LowPressureTransition = NT; HighPressure = IPH; diff --git a/src/simulation/elements/MERC.cpp b/src/simulation/elements/MERC.cpp index a546b2d89..0375e31d9 100644 --- a/src/simulation/elements/MERC.cpp +++ b/src/simulation/elements/MERC.cpp @@ -33,6 +33,8 @@ void Element::Element_MERC() Properties = TYPE_LIQUID|PROP_CONDUCTS|PROP_NEUTABSORB|PROP_LIFE_DEC; + LifeSpec = RSPEC_STORAGE_TYPE_NUMBER | RSPEC_BEHAVIOUR_DEC; + LowPressure = IPL; LowPressureTransition = NT; HighPressure = IPH; diff --git a/src/simulation/elements/METL.cpp b/src/simulation/elements/METL.cpp index 44ff6a98a..05005d9df 100644 --- a/src/simulation/elements/METL.cpp +++ b/src/simulation/elements/METL.cpp @@ -31,6 +31,8 @@ void Element::Element_METL() Properties = TYPE_SOLID|PROP_CONDUCTS|PROP_LIFE_DEC|PROP_HOT_GLOW; + LifeSpec = RSPEC_STORAGE_TYPE_NUMBER | RSPEC_BEHAVIOUR_DEC; + LowPressure = IPL; LowPressureTransition = NT; HighPressure = IPH; diff --git a/src/simulation/elements/NBLE.cpp b/src/simulation/elements/NBLE.cpp index baa6de670..e501b38f3 100644 --- a/src/simulation/elements/NBLE.cpp +++ b/src/simulation/elements/NBLE.cpp @@ -35,6 +35,8 @@ void Element::Element_NBLE() Properties = TYPE_GAS|PROP_CONDUCTS|PROP_LIFE_DEC; + LifeSpec = RSPEC_STORAGE_TYPE_NUMBER | RSPEC_BEHAVIOUR_DEC; + LowPressure = IPL; LowPressureTransition = NT; HighPressure = IPH; diff --git a/src/simulation/elements/NEUT.cpp b/src/simulation/elements/NEUT.cpp index d3ebdc2a7..50e648c2c 100644 --- a/src/simulation/elements/NEUT.cpp +++ b/src/simulation/elements/NEUT.cpp @@ -38,6 +38,8 @@ void Element::Element_NEUT() Properties = TYPE_ENERGY|PROP_LIFE_DEC|PROP_LIFE_KILL_DEC; + LifeSpec = RSPEC_STORAGE_TYPE_NUMBER | RSPEC_BEHAVIOUR_DEC | RSPEC_BEHAVIOUR_DEC_ZERO_KILL; + LowPressure = IPL; LowPressureTransition = NT; HighPressure = IPH; diff --git a/src/simulation/elements/NSCN.cpp b/src/simulation/elements/NSCN.cpp index f0e45749b..59b983718 100644 --- a/src/simulation/elements/NSCN.cpp +++ b/src/simulation/elements/NSCN.cpp @@ -31,6 +31,8 @@ void Element::Element_NSCN() Description = "N-Type Silicon, Will not transfer current to P-Type Silicon."; Properties = TYPE_SOLID|PROP_CONDUCTS|PROP_LIFE_DEC; + + LifeSpec = RSPEC_STORAGE_TYPE_NUMBER | RSPEC_BEHAVIOUR_DEC; LowPressure = IPL; LowPressureTransition = NT; diff --git a/src/simulation/elements/NTCT.cpp b/src/simulation/elements/NTCT.cpp index df7888467..d7465aa15 100644 --- a/src/simulation/elements/NTCT.cpp +++ b/src/simulation/elements/NTCT.cpp @@ -33,6 +33,8 @@ void Element::Element_NTCT() Properties = TYPE_SOLID|PROP_CONDUCTS|PROP_LIFE_DEC; + LifeSpec = RSPEC_STORAGE_TYPE_NUMBER | RSPEC_BEHAVIOUR_DEC; + LowPressure = IPL; LowPressureTransition = NT; HighPressure = IPH; diff --git a/src/simulation/elements/PHOT.cpp b/src/simulation/elements/PHOT.cpp index 8efbd9f19..32de5549d 100644 --- a/src/simulation/elements/PHOT.cpp +++ b/src/simulation/elements/PHOT.cpp @@ -37,6 +37,8 @@ void Element::Element_PHOT() Properties = TYPE_ENERGY|PROP_LIFE_DEC|PROP_LIFE_KILL_DEC; + LifeSpec = RSPEC_STORAGE_TYPE_NUMBER | RSPEC_BEHAVIOUR_DEC | RSPEC_BEHAVIOUR_DEC_ZERO_KILL; + LowPressure = IPL; LowPressureTransition = NT; HighPressure = IPH; diff --git a/src/simulation/elements/PIPE.cpp b/src/simulation/elements/PIPE.cpp index c75b57140..bc86275fc 100644 --- a/src/simulation/elements/PIPE.cpp +++ b/src/simulation/elements/PIPE.cpp @@ -42,6 +42,8 @@ void Element::Element_PIPE() Properties = TYPE_SOLID|PROP_LIFE_DEC; + LifeSpec = RSPEC_STORAGE_TYPE_NUMBER | RSPEC_BEHAVIOUR_DEC; + LowPressure = IPL; LowPressureTransition = NT; HighPressure = 10.0f; diff --git a/src/simulation/elements/PLNT.cpp b/src/simulation/elements/PLNT.cpp index 72be9aad9..dbd02bd68 100644 --- a/src/simulation/elements/PLNT.cpp +++ b/src/simulation/elements/PLNT.cpp @@ -36,6 +36,8 @@ void Element::Element_PLNT() Properties = TYPE_SOLID|PROP_NEUTPENETRATE|PROP_LIFE_DEC; + LifeSpec = RSPEC_STORAGE_TYPE_NUMBER | RSPEC_BEHAVIOUR_DEC; + LowPressure = IPL; LowPressureTransition = NT; HighPressure = IPH; diff --git a/src/simulation/elements/PLSM.cpp b/src/simulation/elements/PLSM.cpp index dd95bb874..dc36f10fe 100644 --- a/src/simulation/elements/PLSM.cpp +++ b/src/simulation/elements/PLSM.cpp @@ -36,6 +36,8 @@ void Element::Element_PLSM() Properties = TYPE_GAS|PROP_LIFE_DEC|PROP_LIFE_KILL; + LifeSpec = RSPEC_STORAGE_TYPE_NUMBER | RSPEC_BEHAVIOUR_DEC | RSPEC_BEHAVIOUR_ZERO_KILL; + LowPressure = IPL; LowPressureTransition = NT; HighPressure = IPH; diff --git a/src/simulation/elements/POLO.cpp b/src/simulation/elements/POLO.cpp index fdd8ba8ca..49219777b 100644 --- a/src/simulation/elements/POLO.cpp +++ b/src/simulation/elements/POLO.cpp @@ -36,6 +36,8 @@ void Element::Element_POLO() Properties = TYPE_PART|PROP_NEUTPASS|PROP_RADIOACTIVE|PROP_LIFE_DEC|PROP_DEADLY; + LifeSpec = RSPEC_STORAGE_TYPE_NUMBER | RSPEC_BEHAVIOUR_DEC; + LowPressure = IPL; LowPressureTransition = NT; HighPressure = IPH; diff --git a/src/simulation/elements/PPIP.cpp b/src/simulation/elements/PPIP.cpp index 69579c465..f1826bc26 100644 --- a/src/simulation/elements/PPIP.cpp +++ b/src/simulation/elements/PPIP.cpp @@ -35,6 +35,8 @@ void Element::Element_PPIP() Properties = TYPE_SOLID|PROP_LIFE_DEC; + LifeSpec = RSPEC_STORAGE_TYPE_NUMBER | RSPEC_BEHAVIOUR_DEC; + LowPressure = IPL; LowPressureTransition = NT; HighPressure = IPH; diff --git a/src/simulation/elements/PSCN.cpp b/src/simulation/elements/PSCN.cpp index b5a5900c9..7e5b72edd 100644 --- a/src/simulation/elements/PSCN.cpp +++ b/src/simulation/elements/PSCN.cpp @@ -32,6 +32,8 @@ void Element::Element_PSCN() Properties = TYPE_SOLID|PROP_CONDUCTS|PROP_LIFE_DEC; + LifeSpec = RSPEC_STORAGE_TYPE_NUMBER | RSPEC_BEHAVIOUR_DEC; + LowPressure = IPL; LowPressureTransition = NT; HighPressure = IPH; diff --git a/src/simulation/elements/PTCT.cpp b/src/simulation/elements/PTCT.cpp index bc5dadb69..3548ede00 100644 --- a/src/simulation/elements/PTCT.cpp +++ b/src/simulation/elements/PTCT.cpp @@ -33,6 +33,8 @@ void Element::Element_PTCT() Properties = TYPE_SOLID|PROP_CONDUCTS|PROP_LIFE_DEC; + LifeSpec = RSPEC_STORAGE_TYPE_NUMBER | RSPEC_BEHAVIOUR_DEC; + LowPressure = IPL; LowPressureTransition = NT; HighPressure = IPH; diff --git a/src/simulation/elements/PTNM.cpp b/src/simulation/elements/PTNM.cpp index d17b063ff..12bbccc93 100644 --- a/src/simulation/elements/PTNM.cpp +++ b/src/simulation/elements/PTNM.cpp @@ -34,6 +34,8 @@ void Element::Element_PTNM() Properties = TYPE_SOLID | PROP_CONDUCTS | PROP_LIFE_DEC | PROP_HOT_GLOW | PROP_SPARKSETTLE; + LifeSpec = RSPEC_STORAGE_TYPE_NUMBER | RSPEC_BEHAVIOUR_DEC; + LowPressure = IPL; LowPressureTransition = NT; HighPressure = IPH; diff --git a/src/simulation/elements/QRTZ.cpp b/src/simulation/elements/QRTZ.cpp index 8f49f2ba6..6e70174e8 100644 --- a/src/simulation/elements/QRTZ.cpp +++ b/src/simulation/elements/QRTZ.cpp @@ -35,6 +35,8 @@ void Element::Element_QRTZ() Properties = TYPE_SOLID|PROP_HOT_GLOW|PROP_LIFE_DEC; + LifeSpec = RSPEC_STORAGE_TYPE_NUMBER | RSPEC_BEHAVIOUR_DEC; + LowPressure = IPL; LowPressureTransition = NT; HighPressure = IPH; diff --git a/src/simulation/elements/RBDM.cpp b/src/simulation/elements/RBDM.cpp index 395274b81..8cc793d4d 100644 --- a/src/simulation/elements/RBDM.cpp +++ b/src/simulation/elements/RBDM.cpp @@ -31,6 +31,8 @@ void Element::Element_RBDM() Properties = TYPE_SOLID|PROP_CONDUCTS|PROP_LIFE_DEC; + LifeSpec = RSPEC_STORAGE_TYPE_NUMBER | RSPEC_BEHAVIOUR_DEC; + LowPressure = IPL; LowPressureTransition = NT; HighPressure = IPH; diff --git a/src/simulation/elements/SHLD1.cpp b/src/simulation/elements/SHLD1.cpp index 5dc8b8ed8..d8b2caf81 100644 --- a/src/simulation/elements/SHLD1.cpp +++ b/src/simulation/elements/SHLD1.cpp @@ -33,6 +33,8 @@ void Element::Element_SHLD1() Properties = TYPE_SOLID|PROP_LIFE_DEC; + LifeSpec = RSPEC_STORAGE_TYPE_NUMBER | RSPEC_BEHAVIOUR_DEC; + LowPressure = IPL; LowPressureTransition = NT; HighPressure = 7.0f; diff --git a/src/simulation/elements/SHLD2.cpp b/src/simulation/elements/SHLD2.cpp index d9b081d1c..782411397 100644 --- a/src/simulation/elements/SHLD2.cpp +++ b/src/simulation/elements/SHLD2.cpp @@ -33,6 +33,8 @@ void Element::Element_SHLD2() Properties = TYPE_SOLID|PROP_LIFE_DEC; + LifeSpec = RSPEC_STORAGE_TYPE_NUMBER | RSPEC_BEHAVIOUR_DEC; + LowPressure = IPL; LowPressureTransition = NT; HighPressure = 15.0f; diff --git a/src/simulation/elements/SHLD3.cpp b/src/simulation/elements/SHLD3.cpp index 882a5f56f..7f6d5e6fd 100644 --- a/src/simulation/elements/SHLD3.cpp +++ b/src/simulation/elements/SHLD3.cpp @@ -33,6 +33,8 @@ void Element::Element_SHLD3() Properties = TYPE_SOLID|PROP_LIFE_DEC; + LifeSpec = RSPEC_STORAGE_TYPE_NUMBER | RSPEC_BEHAVIOUR_DEC; + LowPressure = IPL; LowPressureTransition = NT; HighPressure = 25.0f; diff --git a/src/simulation/elements/SHLD4.cpp b/src/simulation/elements/SHLD4.cpp index e57d18c5a..99c1bb336 100644 --- a/src/simulation/elements/SHLD4.cpp +++ b/src/simulation/elements/SHLD4.cpp @@ -33,6 +33,8 @@ void Element::Element_SHLD4() Properties = TYPE_SOLID|PROP_LIFE_DEC; + LifeSpec = RSPEC_STORAGE_TYPE_NUMBER | RSPEC_BEHAVIOUR_DEC; + LowPressure = IPL; LowPressureTransition = NT; HighPressure = 40.0f; diff --git a/src/simulation/elements/SING.cpp b/src/simulation/elements/SING.cpp index 5ec9e0e28..5a42b34c6 100644 --- a/src/simulation/elements/SING.cpp +++ b/src/simulation/elements/SING.cpp @@ -34,6 +34,8 @@ void Element::Element_SING() Properties = TYPE_PART|PROP_LIFE_DEC; + LifeSpec = RSPEC_STORAGE_TYPE_NUMBER | RSPEC_BEHAVIOUR_DEC; + LowPressure = IPL; LowPressureTransition = NT; HighPressure = IPH; diff --git a/src/simulation/elements/SLCN.cpp b/src/simulation/elements/SLCN.cpp index f9823229f..6bb2ce7d9 100644 --- a/src/simulation/elements/SLCN.cpp +++ b/src/simulation/elements/SLCN.cpp @@ -35,6 +35,8 @@ void Element::Element_SLCN() Properties = TYPE_PART | PROP_CONDUCTS | PROP_HOT_GLOW | PROP_LIFE_DEC; + LifeSpec = RSPEC_STORAGE_TYPE_NUMBER | RSPEC_BEHAVIOUR_DEC; + LowPressure = IPL; LowPressureTransition = NT; HighPressure = IPH; diff --git a/src/simulation/elements/SLTW.cpp b/src/simulation/elements/SLTW.cpp index da58ba4d0..5feaf0da2 100644 --- a/src/simulation/elements/SLTW.cpp +++ b/src/simulation/elements/SLTW.cpp @@ -33,6 +33,8 @@ void Element::Element_SLTW() Properties = TYPE_LIQUID|PROP_CONDUCTS|PROP_LIFE_DEC|PROP_NEUTPENETRATE; + LifeSpec = RSPEC_STORAGE_TYPE_NUMBER | RSPEC_BEHAVIOUR_DEC; + LowPressure = IPL; LowPressureTransition = NT; HighPressure = IPH; diff --git a/src/simulation/elements/SMKE.cpp b/src/simulation/elements/SMKE.cpp index 82fde602e..86b4050e4 100644 --- a/src/simulation/elements/SMKE.cpp +++ b/src/simulation/elements/SMKE.cpp @@ -34,6 +34,8 @@ void Element::Element_SMKE() Properties = TYPE_GAS|PROP_LIFE_DEC|PROP_LIFE_KILL_DEC; + LifeSpec = RSPEC_STORAGE_TYPE_NUMBER | RSPEC_BEHAVIOUR_DEC | RSPEC_BEHAVIOUR_DEC_ZERO_KILL; + LowPressure = IPL; LowPressureTransition = NT; HighPressure = IPH; diff --git a/src/simulation/elements/SOAP.cpp b/src/simulation/elements/SOAP.cpp index cb68a1fad..3061961d8 100644 --- a/src/simulation/elements/SOAP.cpp +++ b/src/simulation/elements/SOAP.cpp @@ -36,6 +36,8 @@ void Element::Element_SOAP() Properties = TYPE_LIQUID|PROP_NEUTPENETRATE|PROP_LIFE_DEC; + LifeSpec = RSPEC_STORAGE_TYPE_NUMBER | RSPEC_BEHAVIOUR_DEC; + LowPressure = IPL; LowPressureTransition = NT; HighPressure = IPH; diff --git a/src/simulation/elements/SPRK.cpp b/src/simulation/elements/SPRK.cpp index a0a8d9176..f5da69296 100644 --- a/src/simulation/elements/SPRK.cpp +++ b/src/simulation/elements/SPRK.cpp @@ -36,6 +36,8 @@ void Element::Element_SPRK() Properties = TYPE_SOLID|PROP_LIFE_DEC; + LifeSpec = RSPEC_STORAGE_TYPE_NUMBER | RSPEC_BEHAVIOUR_DEC; + LowPressure = IPL; LowPressureTransition = NT; HighPressure = IPH; diff --git a/src/simulation/elements/TESC.cpp b/src/simulation/elements/TESC.cpp index 4333ee154..2811151e0 100644 --- a/src/simulation/elements/TESC.cpp +++ b/src/simulation/elements/TESC.cpp @@ -33,6 +33,8 @@ void Element::Element_TESC() Properties = TYPE_SOLID|PROP_CONDUCTS|PROP_LIFE_DEC|PROP_HOT_GLOW; + LifeSpec = RSPEC_STORAGE_TYPE_NUMBER | RSPEC_BEHAVIOUR_DEC; + LowPressure = IPL; LowPressureTransition = NT; HighPressure = IPH; diff --git a/src/simulation/elements/TRON.cpp b/src/simulation/elements/TRON.cpp index 873596edc..27c4aa696 100644 --- a/src/simulation/elements/TRON.cpp +++ b/src/simulation/elements/TRON.cpp @@ -40,6 +40,8 @@ void Element::Element_TRON() Properties = TYPE_SOLID|PROP_LIFE_DEC|PROP_LIFE_KILL; + LifeSpec = RSPEC_STORAGE_TYPE_NUMBER | RSPEC_BEHAVIOUR_DEC | RSPEC_BEHAVIOUR_ZERO_KILL; + LowPressure = IPL; LowPressureTransition = NT; HighPressure = IPH; diff --git a/src/simulation/elements/TTAN.cpp b/src/simulation/elements/TTAN.cpp index 0b9c46a00..ffcc0d231 100644 --- a/src/simulation/elements/TTAN.cpp +++ b/src/simulation/elements/TTAN.cpp @@ -34,6 +34,8 @@ void Element::Element_TTAN() Properties = TYPE_SOLID|PROP_CONDUCTS|PROP_HOT_GLOW|PROP_LIFE_DEC; + LifeSpec = RSPEC_STORAGE_TYPE_NUMBER | RSPEC_BEHAVIOUR_DEC; + LowPressure = IPL; LowPressureTransition = NT; HighPressure = IPH; diff --git a/src/simulation/elements/TUNG.cpp b/src/simulation/elements/TUNG.cpp index b50801b04..bd29428db 100644 --- a/src/simulation/elements/TUNG.cpp +++ b/src/simulation/elements/TUNG.cpp @@ -35,6 +35,8 @@ void Element::Element_TUNG() Properties = TYPE_SOLID|PROP_CONDUCTS|PROP_LIFE_DEC; + LifeSpec = RSPEC_STORAGE_TYPE_NUMBER | RSPEC_BEHAVIOUR_DEC; + LowPressure = IPL; LowPressureTransition = NT; HighPressure = IPH; diff --git a/src/simulation/elements/VIBR.cpp b/src/simulation/elements/VIBR.cpp index 7862016e9..0ced49028 100644 --- a/src/simulation/elements/VIBR.cpp +++ b/src/simulation/elements/VIBR.cpp @@ -35,6 +35,8 @@ void Element::Element_VIBR() Properties = TYPE_SOLID|PROP_LIFE_DEC; + LifeSpec = RSPEC_STORAGE_TYPE_NUMBER | RSPEC_BEHAVIOUR_DEC; + LowPressure = IPL; LowPressureTransition = NT; HighPressure = IPH; diff --git a/src/simulation/elements/WARP.cpp b/src/simulation/elements/WARP.cpp index 30b180f42..1f4138142 100644 --- a/src/simulation/elements/WARP.cpp +++ b/src/simulation/elements/WARP.cpp @@ -35,6 +35,8 @@ void Element::Element_WARP() Properties = TYPE_GAS|PROP_LIFE_DEC|PROP_LIFE_KILL; + LifeSpec = RSPEC_STORAGE_TYPE_NUMBER | RSPEC_BEHAVIOUR_DEC | RSPEC_BEHAVIOUR_ZERO_KILL; + LowPressure = IPL; LowPressureTransition = NT; HighPressure = IPH; diff --git a/src/simulation/elements/WATR.cpp b/src/simulation/elements/WATR.cpp index 3adcc2a80..4db32b831 100644 --- a/src/simulation/elements/WATR.cpp +++ b/src/simulation/elements/WATR.cpp @@ -34,6 +34,8 @@ void Element::Element_WATR() Properties = TYPE_LIQUID|PROP_CONDUCTS|PROP_LIFE_DEC|PROP_NEUTPASS; + LifeSpec = RSPEC_STORAGE_TYPE_NUMBER | RSPEC_BEHAVIOUR_DEC; + LowPressure = IPL; LowPressureTransition = NT; HighPressure = IPH;