Compare commits

...

2 Commits

Author SHA1 Message Date
Simon Robertshaw
c0f5534fee Register spec: Wavelength storage & tmp2 storage copied from GameView element description code 2021-06-02 19:07:58 +01:00
Simon Robertshaw
d7a6b25a4b Experiment with generic "register" for life prop
Move PROP_LIFE to LifeSpec register to encode behaviour
2021-06-02 18:44:34 +01:00
88 changed files with 221 additions and 16 deletions

View File

@ -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;

View File

@ -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

View File

@ -4713,6 +4713,28 @@ int Simulation::GetParticleType(ByteString type)
return -1;
}
bool Simulation::ApplyIntegerRegisterBehaviour(int i, int &reg, 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;
}
}
}

View File

@ -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 &reg, int registerSpec);
void RecalcFreeParticles(bool do_life_dec);
void CheckStacking();
void BeforeSim();

View File

@ -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;

View File

@ -34,6 +34,8 @@ void Element::Element_BIZR()
Properties = TYPE_LIQUID;
CtypeSpec = RSPEC_STORAGE_TYPE_WAVELENGTH;
LowPressure = IPL;
LowPressureTransition = NT;
HighPressure = IPH;

View File

@ -35,6 +35,8 @@ void Element::Element_BIZRG()
Properties = TYPE_GAS;
CtypeSpec = RSPEC_STORAGE_TYPE_WAVELENGTH;
LowPressure = IPL;
LowPressureTransition = NT;
HighPressure = IPH;

View File

@ -35,6 +35,8 @@ void Element::Element_BIZRS()
Properties = TYPE_SOLID;
CtypeSpec = RSPEC_STORAGE_TYPE_WAVELENGTH;
LowPressure = IPL;
LowPressureTransition = NT;
HighPressure = IPH;

View File

@ -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;

View File

@ -33,6 +33,9 @@ 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;
CtypeSpec = RSPEC_STORAGE_TYPE_WAVELENGTH;
LowPressure = IPL;
LowPressureTransition = NT;
HighPressure = IPH;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -35,6 +35,9 @@ void Element::Element_CBNW()
Properties = TYPE_LIQUID|PROP_CONDUCTS|PROP_LIFE_DEC|PROP_NEUTPENETRATE;
LifeSpec = RSPEC_STORAGE_TYPE_NUMBER | RSPEC_BEHAVIOUR_DEC;
Tmp2Spec = RSPEC_STORAGE_TYPE_NUMBER;
LowPressure = IPL;
LowPressureTransition = NT;
HighPressure = IPH;

View File

@ -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;

View File

@ -34,6 +34,8 @@ void Element::Element_CRAY()
Description = "Particle Ray Emitter. Creates a beam of particles set by its ctype, with a range set by tmp.";
Properties = TYPE_SOLID;
Tmp2Spec = RSPEC_STORAGE_TYPE_NUMBER;
LowPressure = IPL;
LowPressureTransition = NT;

View File

@ -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;

View File

@ -32,6 +32,8 @@ void Element::Element_DRAY()
Description = "Duplicator ray. Replicates a line of particles in front of it.";
Properties = TYPE_SOLID;
Tmp2Spec = RSPEC_STORAGE_TYPE_NUMBER;
LowPressure = IPL;
LowPressureTransition = NT;

View File

@ -33,6 +33,8 @@ void Element::Element_DTEC()
Properties = TYPE_SOLID;
Tmp2Spec = RSPEC_STORAGE_TYPE_NUMBER;
LowPressure = IPL;
LowPressureTransition = NT;
HighPressure = IPH;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -34,6 +34,8 @@ void Element::Element_EXOT()
Description = "Exotic matter. Explodes with excess exposure to electrons. Has many other odd reactions.";
Properties = TYPE_LIQUID|PROP_NEUTPASS;
Tmp2Spec = RSPEC_STORAGE_TYPE_NUMBER;
LowPressure = IPL;
LowPressureTransition = NT;

View File

@ -36,6 +36,9 @@ void Element::Element_FILT()
Properties = TYPE_SOLID | PROP_NOAMBHEAT | PROP_LIFE_DEC;
LifeSpec = RSPEC_STORAGE_TYPE_NUMBER | RSPEC_BEHAVIOUR_DEC;
CtypeSpec = RSPEC_STORAGE_TYPE_WAVELENGTH;
LowPressure = IPL;
LowPressureTransition = NT;
HighPressure = IPH;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -33,6 +33,8 @@ void Element::Element_LCRY()
Description = "Liquid Crystal. Changes colour when charged. (PSCN Charges, NSCN Discharges)";
Properties = TYPE_SOLID;
Tmp2Spec = RSPEC_STORAGE_TYPE_NUMBER;
LowPressure = IPL;
LowPressureTransition = NT;

View File

@ -34,6 +34,8 @@ void Element::Element_LDTC()
Properties = TYPE_SOLID | PROP_NOCTYPEDRAW;
Tmp2Spec = RSPEC_STORAGE_TYPE_NUMBER;
LowPressure = IPL;
LowPressureTransition = NT;
HighPressure = IPH;

View File

@ -35,6 +35,8 @@ void Element::Element_LIGH()
Description = "Lightning. Change the brush size to set the size of the lightning.";
Properties = TYPE_SOLID;
Tmp2Spec = RSPEC_STORAGE_TYPE_NUMBER;
LowPressure = IPL;
LowPressureTransition = NT;

View File

@ -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;

View File

@ -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;

View File

@ -34,6 +34,8 @@ void Element::Element_LSNS()
Properties = TYPE_SOLID;
Tmp2Spec = RSPEC_STORAGE_TYPE_NUMBER;
LowPressure = IPL;
LowPressureTransition = NT;
HighPressure = IPH;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -37,6 +37,9 @@ 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;
CtypeSpec = RSPEC_STORAGE_TYPE_WAVELENGTH;
LowPressure = IPL;
LowPressureTransition = NT;
HighPressure = IPH;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -40,6 +40,8 @@ void Element::Element_PSTN()
Properties = TYPE_SOLID;
Tmp2Spec = RSPEC_STORAGE_TYPE_NUMBER;
LowPressure = IPL;
LowPressureTransition = NT;
HighPressure = IPH;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -36,6 +36,9 @@ void Element::Element_SOAP()
Properties = TYPE_LIQUID|PROP_NEUTPENETRATE|PROP_LIFE_DEC;
LifeSpec = RSPEC_STORAGE_TYPE_NUMBER | RSPEC_BEHAVIOUR_DEC;
Tmp2Spec = RSPEC_STORAGE_TYPE_NUMBER;
LowPressure = IPL;
LowPressureTransition = NT;
HighPressure = IPH;

View File

@ -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;

View File

@ -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;

View File

@ -40,6 +40,9 @@ 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;
Tmp2Spec = RSPEC_STORAGE_TYPE_NUMBER;
LowPressure = IPL;
LowPressureTransition = NT;
HighPressure = IPH;

View File

@ -33,6 +33,8 @@ void Element::Element_TSNS()
Properties = TYPE_SOLID;
Tmp2Spec = RSPEC_STORAGE_TYPE_NUMBER;
LowPressure = IPL;
LowPressureTransition = NT;
HighPressure = IPH;

View File

@ -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;

View File

@ -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;

View File

@ -35,6 +35,9 @@ void Element::Element_VIBR()
Properties = TYPE_SOLID|PROP_LIFE_DEC;
LifeSpec = RSPEC_STORAGE_TYPE_NUMBER | RSPEC_BEHAVIOUR_DEC;
Tmp2Spec = RSPEC_STORAGE_TYPE_NUMBER;
LowPressure = IPL;
LowPressureTransition = NT;
HighPressure = IPH;

View File

@ -34,6 +34,8 @@ void Element::Element_VIRS()
Description = "Virus. Turns everything it touches into virus.";
Properties = TYPE_LIQUID|PROP_DEADLY;
Tmp2Spec = RSPEC_STORAGE_TYPE_ELEMENT;
LowPressure = IPL;
LowPressureTransition = NT;

View File

@ -34,6 +34,8 @@ void Element::Element_VSNS()
Properties = TYPE_SOLID;
Tmp2Spec = RSPEC_STORAGE_TYPE_NUMBER;
LowPressure = IPL;
LowPressureTransition = NT;
HighPressure = IPH;

View File

@ -35,6 +35,9 @@ 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;
Tmp2Spec = RSPEC_STORAGE_TYPE_NUMBER;
LowPressure = IPL;
LowPressureTransition = NT;
HighPressure = IPH;

View File

@ -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;