Held Prop? Is it a hat substitute or did you ignite the head bone?
Yes, a common, ordinary held prop, with some peculiarities, though nothing really especial about it (and you know very well the matter, for I've been inspired by your own work on your fire extinguisher):
- The mesh is assigned a to a bone named 'emitter_bone' -think it's a mere convention, but I'm not sure- and applied a material with 100% transparency and a texture. My first thought was to include the flaming_device fully inside the brains of the puppet, but there is a good reason to go with an invisible contraption instead... IMPORTANT: this bone must be a terminal bone! And its orientation plays an important part in the direction the particles are emitted.
- The initial animation triggers a custom event passing the name of a particle effect (flameon)
<AnimTransition>
<menuPath>male01/flameon</menuPath>
<soundTime>0.0</soundTime>
<soundLevel>1.0</soundLevel>
<interest>0</interest>
<events>
<mscope.things.ai.transitions.CustomEvent>
<methodName>playEffect</methodName>
<argString>flameon</argString>
<playbackFlags>3</playbackFlags>
<name>playEffect</name>
<time>0.0</time>
</mscope.things.ai.transitions.CustomEvent>
</events>
<name>male01/flameon</name>
<resources class="enum-set" enum-type="Resource"></resources>
</AnimTransition>
- The prop's template defines a binding of the bone and the particle effect:
</materials>
...
</materials>
<bindings>
<boneBindings>
<EffectBinding>
<mpsPath>Data/fx/Flaming_Head.mps</mpsPath>
<light>
<type>flicker</type>
<color>0.5 0.475 0.2 1.0</color>
<halo>
<radius>2.0</radius>
</halo>
</light>
<name>flameon</name>
<bone>emitter_bone</bone>
</EffectBinding>
</boneBindings>
</bindings>
- About the particle fx definition itself (Data/fx/Flaming_Head.mps), it's a tweaked version of one of the standard ones.
- Finally: the prop must be of type PyroProp (otherwise, it will raise an exception and no particle effect will be triggered), and holdable:
<ModelDescriptor>
<name>Flaming_Head</name>
<model>Flaming_Head</model>
<type>PyroProp</type>
<tags>
...
</tags>
<defaultVariant>Flaming_Head</defaultVariant>
<attributes>
...
<entry>
<string>HoldBone</string>
<string>HEAD</string>
</entry>
...
</attributes>
<sitBones/>
</ModelDescriptor>
Now, what's the reason to go with a invisible prop? I must confess I'm not satisfied with the result: because of the working common to held props, there are times that the prop is shown a bit displaced to its designed position relative to the puppet's head. I've tried to offer a partial solution to this problem with an animation which displaces the prop (and the emitting bone) forward, to be used when the puppet is walking. But I've seen unexplained and large misplacements during the execution of some concurrent complex animations. So I'm afraid that it's far from perfect, and its usability is limited at best, though I have not assessed the extent of this issue.
My first idea was to create a bodypart other than an accessory (they won't ever accept an animation), probably a custom head, bind one of the terminal head bones to a particle effect and create a gesture animation "ad hoc" to trigger the event, but there is a fatal flaw in this schema: bodyparts can't be flagged as a PyroProp 
Anyway I'm going to complete my work on this unlucky creation of me and unleash it to the public domain.