will continue to update over time...
Disclaimer!!!!!!!!!!! this guide is mostly for editing things related to the player character. if you have any questions, you can ask on the souls modding discord. link is in the Souls Modding Wiki's "about" section to your left. have fun! (no for real, you better pray you have fun)
First: The Prerequisites and things to know before you start
- unpack the game files with UXM. just navigate to the game's exe and click "unpack". click "restore", if you want to repack the game files again
- you'll eventually want to unpack the game's .dcx files, especially anibnds. For this, you'll need WitchyBND.
- download ModEngine and make a new folder in the game's directory and call it "mods"
- it's important to remember that you'll want to copy any file you want to edit from the unpacked game files and place it in the mods folder. this easily allows you to revert changes without any hassle. DO NOT EDIT UNPACKED GAME FILES.
- you'll want to mimic the original path of the files you put in the mods folder. if you copy the files from the "chr" folder, make a folder in the mods folder, name it "chr" and paste the files you wanna edit there. if the file is in action\script, make a folder named "script" inside a folder named "action" inside the mods folder and so on and so forth...
- the action folder contains hks, which handles when animations are allowed to play.
- the chr folder contains animations, textures, models and Havok Behavior(HKB) of characters
- the event folder contains events, which manage a lot of in-game occurrences, and the files are edited with Dark Script.
- the param folder handles params, which manage things like hitboxes, projectiles/bullets, items, prosthetics and combat arts, among many other things, but the juiciest of them all is SpEffects. they are used to apply all sorts of...well... effects. but they can also be used as triggers/conditions for events and hks.
- the parts folder handles wolf's models, weapon models, and the animations related to those models like the grappling hook animations and the animation for the one mind sword (yea, weirdly enough, the sword's animation for one mind is separate from wolf's animation)
- the sfx folder contains visual effects
- the sound folder.... anyway
________________________________________________________________________________________________________________________________________________________________
Part 1: animations:
- download and open DSanimStudio. with it you can view and edit animation TAEs and to some extent, the animations themselves.
- TAEs are the events attached to animations, like hitboxes, bullets, visual effects, speffects, cancel events like cancelling an animation by dodging, walking, using an item/prosthetic, blocking...etc. they activate when the animation reaches the frames where the TAEs are placed.
- animations are stored in "anibnd" files. wolf's anibnd is split into c0000.anibnd.dcx, which contains the TAEs (and that's the file you want to open with DSAS, to view wolf's animations. think of it as the parent file), and several other anibnd files that contain the animations themselves (for example, a05x contains basic attacks and blocking animations, and a07x contains prosthetic and combat art animations), while each npc has one anibnd that has both the TAEs and animations. you can view this sheet to find the character ID (which is also used in the anibnd file name) among other things.
- Sekiro's animations are grouped into the following categories:
- a00: for traversal, world interactions, item use and taking damage
- a10: for non-combat areas
- a50: for blocking, deflecting and basic attacks
- a70: shuriken
- a71: firecrackers
- a72: flame vent
- a73: axe
- a74: mist raven
- a75: sabimaru
- a76: umbrella
- a77: fans
- a78: spear
- a79: whistle
- a100: whirlwind slash
- a101: nightjar slash
- a102: ichimonji
- a103: dragon flash
- a104: ashina cross & one mind
- a105: floating & spiral cloud passage
- a106: mortal draw
- a107: leaping kicks & high monk
- a108: praying strikes
- a109: shadowrush & shadowfall
- a110: sakura dance
- a200 and onward: deathblows and grabs (mikiri counter is a grab btw)
- to make a new jumptable in the timeline, shift+RMB in an empty space, or just copy (CTRL+C CTRL+V) an existing one and edit it.
- here's a list of the jumptables you'll use often:
- Blend: important to place at the beginning of every animation, to make the transition TO it smooth. adjust its length for the best result. in the top, go to simulation, and check animation blending, then when you select an animation WHILE another animation is playing, you'll be able to see the blend in action.
- AddSpEffect: pretty self-explanatory. some Speffects are used to decide which animation you can cancel to.
- InvokeAttackBehavior: adds a hitbox by referencing its BehaviorJudgeId (more on that in the param section). you can reference a StateInfo (more on that in the param section) to decide when the hitbox is allowed to spawn. make it 0, if you want it to spawn every time the animation plays
- InvokeBulletBehavior: spawns a bullet (projectile) in the specified DummyPoly (more on that later) by referencing its BehaviorJudgeId. also has a StateInfo field
- SpawnOneShotFFX: spawns a visual effect in the specified DummyPoly. also has a StateInfo field
- PlaySound, Disable Turning and SetTurnSpeed are self-explanatory. you can toggle IsLockOnCheck in SetTurnSpeed to set whether the turn speed happens while locked on or not.
- OverrideWeaponModelLocation: used to place the weapons (the two swords and prosthetics) and sheathe in the specified DummyPolies.
- CameraModule: controls camera placement. gonna have to edit the animation (specifically the camera bone) in 3ds max or blender in order to give animations dynamic camera with CameraModule1
- InvokeAttackAction_Complex: key element for cancel jumptables. place it where you want to place cancel jumptables and adjust its length accordingly
- InvokeAnimCancelEnd_R1: allows you to cancel the animation by attacking, during the frames where you put it
- InvokeAnimCancelEnd_L1: allows you to cancel the animation by blocking, during the frames where you put it
- Normal attack stage transition Speffects: used to decide which normal r1 attack is playing during the InvokeAnimCancelEnd_R1 frames. put them in the same frames as InvokeAnimCancelEnd_R1. you can extend them to the earlier frames if you want the input to be recognized earlier (in other words, the game will remember your input during the speffect frames, and once the animation reaches InvokeAnimCancelEnd_R1, the cancel will happen on its own). you can search them in SpEffectParam in Smithbox
- the rest of the cancel jumptables should be pretty self-explanatory.
- do give the speffects already used in DSAS a look in Smithbox from time to time, as they might be useful/essential
- if you want to change the animations themselves, DSAS gives you the option of making an animation slot use up another animation. select the animation you wanna change, click "edit" at the top, and select "edit current animation properties", and check "override HKX", and enter the ID of the animation you want to change into. now you have two options:
1. only copy the animation, in which case, select Original Anim Entry
2. copy both the animation and TAE jumptables, in which case, select Clone Anim Entry. keep in mind that you can't edit the tae of a Clone Anim Entry, so only choose this option if you want an animation to be an exact copy of another
- but if you want to change into an animation from a different character, you'll have to retarget that animation. here's a retargeting tutorial (here's the OG tutorial, though it's a little outdated)
______________________________________________________________
3DS MAX Notes:
- to render skeletons and animations in MAX, importing hkx files from anibnds unpacked with WitchyBND won't work. you'll want to export the animation from DSAS (go to Tools -> Export Skeleton & Animations -> select the (fast) file type, check the skeleton and animations you want, and hit "Start Export"), but if the animation is a custom animation that was exported from MAX and put inside an anibnd before, you could still unpack its anibnd with WitchyBND and take the animation from there, and import it to MAX.
- it's important that the position and orientation constraints of a skeleton are correct, because if you ignore them, there could be some issues with the animation, like the legs bouncing a little in-game when the animation reaches its final frame
- the correct position and orientation constraints (yes, the retargeting tutorial got it wrong) are as follows:
1. import the skeleton. don't import the animation yet, as we need to do the constraints in bind pose (A-pose/T-pose). look for the "animation" dropdown at the top, select "constraints" and you'll find position and orientation constraints there.
2. position constraint the left and right Foot_Target2 bones to the left and right Foot bones, and after each position constraint, go to the command panel to your right, select "Motion" (the circle icon on the top of the panel), select "position" in the bottom-left of the "PRS Parameters" tab, scroll down to the "Position Constraint" tab, and check "Keep Initial Offset"

3. orientation constraint the left and right Foot_Target bones to the left and right Foot bones. no need to check Keep Initial Offset here.
- after you do the constraints, it's best you save the scene, so you don't have to do the constraints every time you want to retarget or edit an animation of the same skeleton. go to "file" in the top-left, and select "save" or "save as". after that, you can render the skeleton by opening it from file -> open/open recent, instead of importing the skeleton.hkx, and then you can import any animation on it
- for animations whose constraints are partially incorrect, the previous steps won't work on their own. follow these steps:
1. load the skeleton and animation, then go to Animation -> Save Animation, check all checkboxes, enter the length of the animation in the "From" and "To" fields, name the file and hit "Save Motion".
2. create a new scene, and import the skeleton...don't do the constraints yet. select the whole skeleton, go to Animation -> Set as Skin Pose, then import any animation (we only need to do this so we can load the animation we saved, because for some reason, we can't load it unless we import an animation first).
3. delete the first keyframe of the animation you imported, turn on the Auto key in the bottom-right, and go to Animation -> Assume Skin Pose, then go ahead and delete the rest of the animation's keyframes, keeping only the T-pose/A-pose. then go to Animation -> Load Animation, select the animation's xaf file, check Absolute and Replace, and make it load at frame 1 (not 0).
4. turn off the Auto key, drag the timeline slider to the T-pose/A-pose frame, and you can now go ahead and do the constraints, as shown previously.
5. if the constraints are still messy, select all the Foot_target bones, delete the keyframes where they're messy, while keeping the ones with correct constraints, save the animation (without the T-pose/A-pose), and go back to step 2.
- to save a bit of time, you can just save a couple of A-Pose/T-pose frames, (after you do "Assume Skin Pose") using Animation -> Save Animation. then you can load it on the animation you want to fix, without having to set skin pose every time. in many cases you might have to delete the keyframes of the Foot_Target bones except the ones in the A-pose/T-pose frames
Animation Editing Notes:
- if you want to take things further and make manual edits to animations, you've a long way to go. start with these two tutorials to get familiar with 3ds max:
Beginner Tutorial
Animation Tutorial
- to keep your work clean, always create a new scene with file -> new, when you want to render a different animation from the one currently on the scene, and always work with one animation at a time.
- to merge animations into another animation, you can render them (do it one animation at a time), select the whole skeleton by dragging the mouse over it, or CTRL+A (or if you only want to merge a part of the skeleton, select that part. you can also select and de-select bones from the scene explorer to your left), then go to Animation -> Save Animation, check all checkboxes, enter the length of the animation in the "From" and "To" fields, name the file and hit "Save Motion", then render the animation you want to merge the saved animations into, then go to Animation -> Load Animation, select the animation's xaf file, and here you've got a few options:
- if you select Relative, MAX tries to modify the animation as best as it could to blend them together, but it doesn't do a good job for fromsoft skeletons
- if you select Absolute, MAX preserves everything in the saved animation, giving you more control over how you want to merge them
- if you select Replace, MAX... well... Replaces the selected objects (in our case, the objects are the skeleton's bones) with the loaded animation's objects. this is pretty useful for merging animations for only parts of the skeleton
- if you select Insert, MAX just places the animations in the timeline without replacing anything
- in the "At Frame: " field, you'll want to load the animation after the last current keyframe in the timeline, as things tend to get messy, if you load an animation in the beginning or middle. so to avoid unnecessary hiccups, just load it at the end, and if you want it to be elsewhere, you can always select keyframes on the timeline in the bottom and move them anywhere you want
- time configuration (the clock symbol at the bottom-right) is used to modify the length of the timeline, animation playback speed in the scene, frame rate, among other things
- editing a keyframe affects every other frame on the timeline (for example, if you move an object 30 meters in the Y axis in one frame, the Y-position's value of the object increases by the same amount in every single frame), but when the "Auto" key at the bottom-right is turned on (it turns red if it's on), any change to a keyframe only applies to that frame
- The Curve Editor (go to "Graph editors" at the top, and select "curve editor") is a great tool for modifying the position and rotation of multiple keyframes of the selected bones, if you, for example, want the bones to have the same position/rotation in multiple keyframes. if you want to view the graphs for each of the three axes separately, right click "position" or "rotation" under the bone you want, select "Assign Controller" and select the option that has "XYZ".
- another way to edit multiple keyframes, that's especially useful if you want to do plenty of editing, is to utilize the save and load animation function. edit the animation in the frame you want with the auto key turned OFF, save that slice of the timeline you want to change, revert the changes you made with the "Undo" button at the top-left (or CTRL+Z), and load the animation with Absolute AND Replace (you'll, of course, want to load the animation in the exact place it was on the timeline). it's worth noting that MAX has a limit on its Undo function, so saving the scene before making the changes and opening it after saving the slice of the timeline, is a good way to get past that limit.
- if you want to speed up the animation or parts of it, delete keyframes in a pattern (e.g. delete two keyframes and keep one), then close the gaps by moving the frames to the left to make the gap only one frame
- to slow it down, you can just make gaps between each frame by moving the frames to the right.
- but you don't have to do this manually. you can do it in the dopesheet as follows:

- a neat trick to smoothen out rough transitions that are bound to happen when merging animations is to delete 3-5 keyframes on the part with the rough transitions, and MAX will try to better interpolate the two frames around the gap you made. if you need to do this more than once in the same part, you can fill the frame gap with keys, using the "Set Keys" button (the plus symbol on the bottom-right), or to save time, you could save and load that part of the animation after deleting the keyframes with Absolute AND Replace, and MAX will fill in the gap with keys upon load.
- if you want your merged animations to have as much quality as possible, the most common issue you'll face is the direction the character faces, or the positioning of the lower body, since the two animations would have different motion most of the time. for example, you want to add a getting-up animation at the end of a crouch attack, and you want the legs to not be floaty during the transition between the two animations. a neat trick to simulate realistic turning is to choose a foot and make the character turn around it. in other words, make the foot stay on the same XYZ coordinates during the transition between the two animations you wanna merge. this will be especially useful if you want an animation you retarget from a different character to end with the idle pose of the target character. this helps make the transition immersive and less floaty without doing too much work. BUT I don't mean that you should move the foot itself. that won't work!!! the master bone is what controls the position and rotation of the body in the 3d plane in-game. so you'll want to edit its position (mainly X and Z) to fix the position of the leg....so...yea, it'll be quite a bit of manual work.
- a neat 3DS MAX feature is HI Solver (Animation > IK Solvers > HI Solver). it allows you to have more fluid control over things like arms, by allowing you to make a child bone affect its parent. let's say you want Sekiro's hand to be on his sheathe during a walking animation. here's how to set it up (after setting up the initial positioning of the arm in the first frame by yourself):
1.Hi Solver the Clavicle to the UpperArm
2.Hi Solver the UpperArm to the ForeArm
3.Hi Solver the ForeArm to the Shield bone (because it's in the middle of the hand)
4.link constraint the first IK Chain to the second and the second to the third. this way, moving the third one moves the whole arm naturally
5.position constraint the third IK Chain to the sheathe bone (with Keep Initial Offset if you want) to make the hand stay on the sheathe
- and you don't have to do much to the arm (besides a few adjustments to the shoulder, cuz of Sekiro's goofy ahh walk). it'll naturally adjust to the position of the hand.
- you can link constraint the third IK Chain instead of position constraint, if you want to be able to manually move it around, since position constraint prevents that
________________________________________________________________________________________________________
working with the skeleton without the model can be a pain. here's how to import the model to 3ds Max, as well as attach it to the skeleton:
- character models are inside .flver files, and npc models can be found in their respective chrbnd files, which can be unpacked with WitchyBND
- you'll need to convert the flver model to fbx with AquaModelTool in the Aqua-Toolset. make sure to select "No Mirroring", if you're working with mirrored skeletons, as the default option de-mirrors the model. then you can just import the fbx straight into 3ds Max

- make sure to select "Convert as Dummy"

- you'll need this script (Credit to Igor on the souls modding discord for providing it) to attach the model to the skeleton. run it from Scripting -> Run Script, and proceed as follows:
1. in the list of bones to the left, select the entire model's skeleton (double click the master), right click and select "Rename", and only have the prefix checkbox selected, and enter any prefix you want.

2. import the skeleton.hkx that belongs to the character, select the whole skeleton. make sure to also enter the prefix from step 1 in the script's prefix too, then hit "Constrain"

- for the player character, the flver model is in the parts folder ... or should I say modelS, because each of the body, head, arms, legs, and weapons have their own files, so you'll have to import them one by one AND make sure to rename BOTH the model's skeleton and meshes before importing another model and before importing the skeleton.hkx, because they share names, and will override each other. if you don't want the hassle, here's a 3ds max 2019 scene with everything, including the sword and sheath properly set up.

- it's a good idea to go over the animations of the character, you're editing animations for, in DSAS and look for an animation that ends with the idle pose and transitions well off of the animation you're working on, and use it to end your custom animation with. doing this is much less time-consuming than loading the idle pose at the end and painstakingly editing the frames between the custom animation and the idle, as you will be doing less editing.
- in animations where the character is supposed to be on the ground, you obviously don't want the Y position of the feet to be below 0 (i.e. below the ground). often times retargeted animations have the issue where the legs go a little too low, even if the master is at Y=0. to fix this, you'll want to edit the Y value of the RootPos bone.
________________________________________________________________________________________________________________________________________________________________
Part 2: Params:
- param\gameparam\gameparam.parambnd.dcx is the file that contains params
- download and open Smithbox. with it you can edit all sorts of stuff. we'll focus on params for now. so select the param editor, and under the tool window in the far right, select "import row names", select "all params" in target category, check "only replace empty row names" and hit import, and param rows will have obscure google translated names. good luck figuring out what their names indicate. sometimes it's easy, sometimes it's...anyway
- to add a new param row (the things listed in the middle), duplicate one. right click one and select duplicate, or select one and CTRL+D it.
- it's advised to duplicate a param row that's similar to how you want your new param to be, so you don't have to edit so much
- most param fields (the properties on the right) have a ? symbol. click on it to learn what the field does
- if you want to seach for a param row whose field has a specific value, select any row, right click the field, and select "Add to Searchbar" and type the value in the search bar
- if you want to mass edit the same field for multiple rows, select the rows you want (CTRL+LMB or shift+LMB), right click the field, select "mass edit", choose what kind of value you want to enter...e.g. if it's a checkbox and you want to uncheck it, type 0 under the = field, and click on the = field, and finally click "submit"
let's start with AtkParam:
- applying hitboxes requires an AtkParam_Pc row (AtkParam_Npc, if the hitbox belongs to an npc) and a BehaviorParam_Pc row (BehaviorParam, if the hitbox belongs to an npc)
- what are dummypolies? open DSAS, click "window" at the top, select "scene explorer", select "helpers", check "dummypoly IDs" and you'll see that dummypolies are points around the character in the 3d plane (also check "Dummypoly" if you want to see their directions).

- it's important to keep dummypoly directions in mind, as they determine the direction of VFXs and bullets
- to control the location of the hitbox, you'll need to use the location of dummypolies in AtkParam_Pc. hitboxes are spherical if you only enter a dummypoly ID in hit0_DmyPoly1 and leave hit0_DmyPoly2 at -1, but they become cylindrical between hit0_DmyPoly1 and hit0_DmyPoly2, if you enter a value in both fields.
- now param IDs follow a numbering scheme. for AtkParam_PC the ID starts with the behaviorVariationId (found in EquipParamWeapon. if the hitbox is for a combat art or a prosthetic, do keep in mind that each one has its own behaviorVariationId. kusabimaru's is 5000) of the weapon, and ends with the behaviorJudgeId (referenced in BehaviorParam_Pc. must be 3 numbers long, so if it's 65, for example, make it 065. if it's 9, make it 009 ... and so on).
- after you edit the hitbox in AtkParam_PC, go to BehaviorParam_Pc, duplicate a row, change the behaviorJudgeId to the one you selected for the AtkParam_PC row ID (no need to make it 3 numbers long here. If it's 55, for example, you don't need to make it 055.), make ezStateBehaviorType_old 1, and the ? symbols will tell you what the other fields are for
- BehaviorParam_Pc's row ID numbering scheme goes like this: 10+behaviorVariationId (it's called "variationId" in BehaviorParam, so don't let that confuse you)+behaviorJudgeId(must be 3 numbers long)
- as I said above, BehaviorJudgeId is what you use in InvokeAttackBehavior in DSAS
- if you want the hitbox to be unblockable, check isAllDirGuard and the four checkboxes below it
moving on to Bullets:
- as the name suggests, they are projectiles. you need a bullet param row and a BehaviorParam_Pc row (BehaviorParam, if the bullet belongs to an npc)
- bullet row IDs don't seem to follow a strict numbering scheme. so, for example, you can make the ID 300 and use it anywhere (though, that means you'll make the behaviorJudgeId as well as the refId 300). but just in case, follow the numbering scheme of AtkParam_PC row IDs: behaviorVariationId+behaviorJudgeId
- bullets must also have a BehaviorParam_Pc row, which also must follow the numbering scheme of 10+behaviorVariationId+behaviorJudgeId(must be 3 numbers long)
- and as I said above, BehaviorJudgeId is what you use in InvokeBulletBehavior in DSAS
- hitboxes that are used to apply damage to bullets, and bullets that are spawned from other bullets, don't need a BehaviorParam_Pc row
Now for SpEffects:
- as I said before, the ? tooltips will help you with most param fields. so let's talk about the stateInfo field. it's used as a condition to prevent other things like hitboxes, bullets, sounds...etc... from activating until the speffect is active. here's a list of the most common stateInfos you'll use:
- [914] if there are no buffs
- [62] if the fire buff is applied
- [64] if the purple flames/confetti buff is applied
- [358] if abduction is applied
- [940] if golden vortex is applied
- [153] if blood bestowal is applied
- [152] if poison bestowal is applied
- [357] if lifesteal bestowal is applied
- [994/993] if the player has enough spirit emblems (Does not depend on buffs)
- that said, you can definately set your own custom stateInfo numbers
________________________________________________________________________________________________________________________________________________________________
Part 3: FXRs:
- you'll find that visual effects are referred to as SFX,VFX,FFX and FXR in fromsoft's code (yea, it's weird). currently, the most efficient and beginner-friendly way to edit them is using FXR Playground.
- you may like the old UI of the website, and specifically the Structure page. to revert back to it, go to the Main page -> Settings -> Graph Renderer, and select Old renderer
- Most FXRs are found in sfxbnd_commoneffects.ffxbnd which allows its FXRs to load anywhere, while the rest are location-specific. like the other dcx files, you can unpack them with WitchyBND
- after you import an FXR to the Playground, you've got the basic straightforward stuff, like recoloring, rescaling and converting between games.
- in the "Structure" page, you can see a simplified visual layout of the JSON code. you can use it to copy Nodes (RMB and select copy branch), which contain properties like fire, into other FXRs' Nodes (RMB and select Paste Branch as Child).
- in the "JSON" page, you can manually edit each property. here's a list of properties and what they do:
- rateOfTime: speed of the effects in the FXR.
- duration: duration of the FXR. -0.03333334 means infinite.
- limitViewDistance: takes a boolean value. determines whether maxViewDistance is applied or not.
- maxViewDistance: determines how far the player can be and still see the FXR. requires limitViewDistance to be true
- offsetVariance & rotationVariance: add a bit of randomness to offset and rotation, respectively. useful for making things like fire effects appear natural
- nodeAudio: sound attached to FXR.
- model: the ID of the flver model that spawns with the FXR. (must be the same as the one in the flver file name, and the ID must be 5 digits long, but only in the flver file's name. for example, if the model ID is 8888 in JSON, make sure the flver file's name is "s08888.flver". put the flver file in the model folder in the unpacked dcx)
- if you want the model to be a weapon, keep in mind that NPC weapons are inside their models, so you'll want to make sure the flver contains nothing except the weapon. you can edit models with Flver Editor. use it to delete everything except the weapon model you want.
- the position of the model in the flver seems to affect its position when spawned as an fxr. so you'll want to center it on the grid in almost all scenarios
- you can also assign a texture to the FXR's weapon model, simply by putting the tpf file (found in the character's texbnd file) containing the texture in the tex folder in the unpacked dcx. no need to reference it in the FXR's JSON.
- try to fiddle out with the position of the model in Flver Editor, as it affects its position when spawned as an FXR. typically you'll want to center it on the grid.
- here's an example of a Weapon FXR
- FXRs can be applied in several ways:
- attaching them to Bullets using Smithbox
- attaching them to an Animation as a TAE using DSAS
- activating them under a condition in an Event using Dark Script
Part 4: Events:
- common.emevd contains universal events, while m+locationID.emevd files contain location-specific events, and can be handled with common_func.emevd (i.e, you can write the event in common_func.emevd and initialize it in m+locationID.emevd)
- location IDs can be seen in Smithbox's map editor. there are also event files for reflections. you can notice the boss's character ID in the reflection file name:
m10_00_00_00.emevd.dcx: hirata estate
m10_00_50_60.emevd.dcx: owl's reflection in hirata (c5060)
m10_00_50_90.emevd.dcx: lady butter's reflection (c5090)
- events must be initialized in order to work. you'll find that the first event in each file contains event initialization.
- Dark Script contains a tooltip on each function's syntax
- don't forget to end functions with semicolon ";"
- unless you want the event to be applied once, you must put "RestartEvent();" at the end of the event
- you can check the full list of conditions and functions from Help -> View EMEDF
- if you want to write a function that's to be applied for different entities, you can write the function once in common_func.emevd, and type the variable X0_4, where you would normally put the entity ID, and go to the m+locationID.emevd file that belongs to the location where the entity spawns, and initialize the event like this:
InitializeCommonEvent(eventID, entityID);
- here, the entityID field will replace X0_4 with the ID you type
0 comments