Element Properties

From The Powder Toy
Revision as of 19:59, 4 July 2015 by ChargedCreeper (talk | contribs) (Properties)
Jump to: navigation, search

Each element in TPT has properties associated with it that apply to all particles of that type on the screen. This is a list of all those properties (for use in both C++ and Lua)

Properties

Identifier Identifier string, used for lua and internal stuff. Formatted like DEFAULT_PT_XXXX.
Name Name, it is recommended to use 4 letters, but less works. 5 or more will probably not fit on the buttons.
Color Default color, in hexadecimal (AARRGGBB). In the deco editor, it will tell you the color in hex, ignore the initial FF, and use the 6 digits after for this. The initial FF is the alpha or transparency part of 32-bit color.
MenuVisible If it's visible in the menu, if 0 then it is hidden and can only be produced with reactions or lua.
MenuSection The menu section it's in. See below for a list of possible values.
Enabled If 0, it cannot be created or seen in any way, not even lua. It will just disappear if somehow created. Used for removed elements, you should leave this 1.
Advection How much the particle is accelerated by moving air. Normally 0 for solids, and up to 1 for other elements. It can be negative, ANAR and DEST do this so it goes towards pressure.
AirDrag How much air the particle generates in the direction of travel. Generally is very small, 0.04f creates a lot of positive air (- creates negative pressure)..
AirLoss How much the particle slows down moving air (although not as big an effect as a wall). 1 = no effect, 0 = maximum effect. Solids are generally above 0.90f, along with most other elements too.
Loss How much velocity the particle loses each frame. 1 = no loss, .5 = half loss. Solids have it at 0. Only a few have it at 1, like energy particles, and old moving sponge.
Collision Velocity is multiplied by this when the particle collides with something. Energy particles have it at -0.99f, everything else is -0.01f or 0.0f. This property does not do much at all.
Gravity How fast the particle falls. A negative number means it floats. Generally very small, most gasses are negative, everything else is usually less than 0.04f.
Diffusion How much the particle "wiggles" around (think GAS or HYGN). Set at 0, except for gasses, which is a positive number. Up to 3 (or higher) for a large amount of wiggle, GAS is 0.75f, HYGN is 3.00f.
HotAir How much the particle increases the pressure by. Another property only for gasses, but VENT/VACU have theirs at (-)0.010f. Usually it's an extremely small number, sometimes as small as 0.000001f.
Falldown How does the particle move? 0 = solid, gas, or energy particle, 1 = powder, 2 = liquid.
Flammable Does it burn? 0 = no, higher numbers = higher "burnage". Something like 20 is WOOD, while C-4 is 1000. Some are a few thousand for almost instant burning.
Explosive Does it explode? 0 = no, 1 = when touching fire, 2 = when touching fire or when pressure > 2.5. Yes, those are the only options, see FIRE.cpp or somewhere in Simulation.cpp to modify how they work. You MUST set the Flammable property also for this to have any effect.
Meltable Does it melt? 1 or higher = yes, 0 = no. This is actually only used when heat sim is off, to make it actually melt use element transitions.
Hardness How much does acid affect it? 0 = no effect, higher numbers = higher effect. Generally goes up to about 50.
Weight Heavier elements sink beneath lighter ones. 1 = Gas. 2 = Light, 98 = Heavy (liquids 0-49, powder 50-99). 100 = Solid. -1 is Neutrons and Photons.
Temperature What temperature does it have when spawned? Temperature is in Kelvin (Kelvin = degrees C + 273.15). R_TEMP+273.15f gives room temperature.
HeatConduct 0 - no heat transfer, 255 - maximum heat transfer speed.
Description A short one sentence description of the element, shown when you mouse over it in-game.
State What state is this element? Options are ST_NONE, ST_SOLID, ST_LIQUID, ST_GAS. Powders use solid, energy particles and some other random things use none.
Properties Does this element have special properties? At the minimum you need to put the state here too, see below for possible properties (add them together with +).
LowPressure If the element drops below this pressure it will transition (set to IPL to never transition).
LowPressureTransition The element to transition into when pressure is below the threshold (set to NT to never transition).
HighPressure If the element goes above this pressure it will transition (set to IPH to never transision).
HighPressureTransition The element to transition into when pressure is above the threshold (set to NT to never transition).
LowTemperature If the element drops below this temperature it will transition (set to ITL to never transition).
LowTemperatureTransition The element to transition into when temperature is below the threshold (set to NT to never transition).
HighTemperature If the element goes above this temperature it will transition (set to ITH to never transition).
HighTemperatureTransition The element to transition into when temperature is above the threshold (set to NT to never transition).
Update The update function. This is what controls how your element reacts with other elements.
Graphics The graphics function, This controls any fancy effects. If your element is only one solid color, you don't need this.

Menu sections

These are used for the MenuSection property.

SC_WALL
SC_ELEC
SC_POWERED
SC_SENSOR
SC_FORCE
SC_EXPLOSIVE
SC_GAS
SC_LIQUID
SC_POWDERS
SC_SOLIDS
SC_NUCLEAR
SC_SPECIAL
SC_LIFE
SC_TOOL
SC_DECO

.Property Constants

These are used for the Properties property.

TYPE_PART
Used in powders.
TYPE_LIQUID
Used in liquids.
TYPE_SOLID
Used in solids / misc elements.
TYPE_GAS
Used in gasses.
TYPE_ENERGY
Used in energy particles.
PROP_CONDUCTS
Allows an element to automatically conduct SPRK, requires PROP_LIFE_DEC.
PROP_BLACK
Elements with this property absorb photons of any color.
PROP_NEUTPENETRATE
Elements with this property allow neutrons to go through it.
PROP_NEUTABSORB
Element will absorb neutrons.
PROP_NEUTPASS
Element can be displaced by neutrons (observe behavior of wood with neutrons to see).
PROP_DEADLY
Element will kill stickmen and fighters.
PROP_HOT_GLOW
Element will glow red when it approaches it's melting point.
PROP_LIFE
Unused.
PROP_RADIOACTIVE
Element will have a radioactive glow, like URAN or PLUT. Also, deadly to stickmen.
PROP_LIFE_DEC
The "life" property of particles will be reduced by 1 every frame.
PROP_LIFE_KILL
Particles will be destroyed when the "life" property is less than or equal to zero.
PROP_LIFE_KILL_DEC
When used with PROP_LIFE_DEC, particles will be destroyed when the "life" property is decremented to 0. If already at 0 it will be fine.
PROP_SPARKSETTLE
Allows sparks/embers to contact without being destroyed.
PROP_NOAMBHEAT
Prevents particles from exchanging heat with the air when ambient heat is enabled.
PROP_DRAWONCTYPE
Set its ctype to another element if the element is drawn upon it (like what CLNE does).
PROP_NOCTYPEDRAW
When this element is drawn upon other elements, do not set ctype (like STKM for CLNE).