I've found a way how to find which propertyName available for PTFX. You need CodeWalker for that. Run CodeWalker RPF Explorer Search for PTFX dict(eg, scr_ih_sub) Open context menu for PTFX dictionary and Export it as XML file Open XML file in any text editor and search for desired particle effect(eg, scr_ih_sub_pool_door) Then look its internals for EventEmitterFlags property(one property per emitter of PTFX) Every Item you will find there is propertyName for Evolution Here's example for scr_ih_sub_pool_door: <EventEmitterFlags> <Item>depth</Item> </EventEmitterFlags> where depth is our propertyName. And here's how it was used in R* scripts(am_mp_nightclub): void func_3486(var uParam0) { uParam0->f_247 = "scr_ih_sub"; uParam0->f_248 = "scr_ih_sub_pool_door"; uParam0->f_250 = { 0.2f, 0f, 0f }; uParam0->f_253 = { 0f, 0f, 0f }; } void func_3471(var uParam0, int iParam1) { if ((!MISC::IS_STRING_NULL_OR_EMPTY(uParam0->f_248) && !MISC::IS_STRING_NULL_OR_EMPTY(uParam0->f_247)) && func_11143(iParam1)) { GRAPHICS::USE_PARTICLE_FX_ASSET(uParam0->f_247); uParam0->f_246 = GRAPHICS::START_PARTICLE_FX_LOOPED_ON_ENTITY(uParam0->f_248, iParam1, uParam0->f_250, uParam0->f_253, 1f, false, false, false); } } void func_3453(var uParam0, float fParam1, bool bParam2) { float fVar0; if (bParam2) { fVar0 = func_3454(fParam1); } else { fVar0 = fParam1; } if (GRAPHICS::DOES_PARTICLE_FX_LOOPED_EXIST(uParam0->f_246)) { GRAPHICS::SET_PARTICLE_FX_LOOPED_EVOLUTION(uParam0->f_246, "depth", fVar0, true); } }