Adding Particle Events to Specific Animations (Specifically Recall but the method is applicable for any animation) This does not show you how to create idle particles, only particles that show up in animations like Dance, Recall, Joke, CAS_Effects, etc.
If you encounter any issues with this tutorial or you don’t understand part of it, you can ask for help on the Runeforge-Discord server
An code editor of your choice, we recommend Visual Studio Code:
If you choose Visual Studio Code, you need the Python extension aswell!
Other editors work aswell, aslong as they can edit .py (Python) files.
You will need the skin0.bin
inside data for both skin and animation bin.
For this example, I will just simply throw in the recall effects from Star Guardian Kai’sa (skin40) for Base Graves. The first thing I would recommend doing is adding your new particle system (vfxsystemdefinitiondata) to your skin0.bin DATA. We are grabbing the entire system, from the bracket above vfxsystemdefinitiondata all the way to the very last bracket after particlepath
.
Note that some champions, especially older ones may not have any VFX in their skin0 bin, so be mindful of where you paste the new container. Below are examples of how you can navigate each case.
Old Champion with no VFX in skin0 bin
after that ^
paste right here
and before this v
New Champion with VFX in skin0 bin
after that, the very last particle container in the bin ^
paste right here
and before this v
After you’ve pasted, Delete the 2nd and 3rd bracket at the end so there’s only one. It should look like:
After pasting your particle system, make sure to check that there are no double brackets at the beginning and end.
Once you have added your new particle system, for organiziation purposes, I recommend changing the system name which comes before “vfxsystemdefinitiondata” to whatever name you would like to give it. In this case I will be naming it GravesRecall_VFX
and I will make sure to use the quotes as well.
Then, you need to change at the bottom of the particle system, the ParticleName
and ParticleString
These can be renamed to virtually anything, however I recommend using the same name as the VFX system at the top because that name may become hashed later on. These will not.
Do keep in mind that after converting the two files to bins, your names for the particle systems may become hashed in both the regular data bin AND animation when you open them back up again. This is totally normal. So if you aren’t doing all of this in one session, then I recommend taking screenshots of your names so you know how everything relates when you come back to do more editing at another time. Now, if you want to make changes to your vfxsystem, you will look for particlename
instead and your name should be as it was before instead of being hashed.
Once those steps are completed, navigate to your ResourceResolver section. Once again, make sure to use quotation marks when naming these. The first name can be anything but make sure that whatever comes after the equal sign matches with your VFX system name.
You are now done with skin0.bin in the skins folder.
now you will need to open the skin0.bin in animations.
In your animation bin, you will need to search for the animation that you would like to put the particles in. I am looking for anything with recall
. You can search for atomicclipdata
however these names may be hashed so you can instead look for the “.anm” file that is being used for that animation.
From here, in order to add a particleeventdata
, you will need to copy the following code below and paste underneath mTrackDataName: hash = “Default
mEventDataMap: map[hash,pointer] = {
"GravesRecall_VFX" = ParticleEventData {
mEffectKey: hash = "GravesRecall"
mParticleEventDataPairList: list[embed] = {
ParticleEventDataPair {
mBoneName: hash = "C_Buffbone_GLB_Layout_Loc"
}
}
mStartFrame: f32 = 1
}
}
}
}
Graves by default has no particles in his recall.
If your champion already have an “mEventDataMap,” then you only need the particle event data part. Be mindful of the brackets, Visual Studio Code should be able to show you if there’s an issue.
If your naming is not correct, the VFX simply won’t show in-game. It won’t cause a crash.
Make sure that the name before ParticleEventData
matches the same as your VFX system name (GravesRecall_VFX)
and that the mEffectKey
is the same as you listed in your bin resources for animation clip (GravesRecall)
You are now done with skin0.bin in the animation folder.
Convert both python files to bins and test!
External link to Youtube!
Couple things to note, mStartFrame
defines at what frame your particle will start. If you are unsure what frame you want it to start, load your skn/skl in Maya, load the anim, and then check which frame on the timeline. This is most useful for when you want an emote, a burst, or something to pop up in the middle of the recall rather than at the beginning. If you want this separate from your recall VFX system then you will have to create a new system and link again in resources, repeating all the same processes.
There’s also mEndFrame
which is self-explanatory.
Then also mIsLoop
. This will basically make your particle loop. mIsKillEvent
means that your particles will stop as soon as the animation stops. So for example, if I cancel my recall, then the VFX will stop completely (Not always needed).
You can also show/hide submeshes during these events. In this example you can that Ahri has a recall_fox
and a recall_spirit
for material overrides that are initially hidden. We can tell the animation bin to show these at a certain frame for our recall animation.
Here I’m adding a recall material for Katarina’s recall animation.