rainergeis

Untitled

Feb 14th, 2023
764
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 13.29 KB | Gaming | 0 0
  1. Guide to Deflections and a rough guide to blocking animations found in a00 (default), a02 (small/med/large shield + weapon on shoulder), a03 (small/med/large shield + long weapon), a10 (light 2H weapon), a12 (heavy 2H weapon on shoulder), a13 (2H long weapon), and a15 (2H small/med/large shield). I recommend having this mod https://www.nexusmods.com/eldenring/mods/1890 as a guide and a reference to debug and to digest what is going on. The language here used is for Yapped editors.
  2.  
  3. Basic a10, a12, a13 Deflections.
  4.  
  5. To set up the Deflection itself, it's very simple. You just need an spEffect with a certain stateInfo, like "888" or "1723" to trigger for 1 frame on the first frame of a setup. The setup animations are aXXX_019000 (standing to Deflect), aXXX_019001 (running to Deflect), and aXXX_019004 (? post weapon swing to Deflect? -not too sure). aXXX_019002 is Deflect to Idle (more animations listed in sections below). Then you go to your modified spEffect, like spEffect 6202004 or whatever, you set the duration to 0.3. More spEffects may be added and chained to 1 another to provide things such as post-Deflect stamina regeneration, Guard Stability, Guard Physical Damage Negation, and others, but this is the basics.
  6.  
  7. Your post-Deflect animations can be seen in aXXX_019200, aXXX_019210, and aXXX_019220. aXXX_019200 deals with attacks with stagger values below a weapon's Guard Level (can be found in EquipWeaponParam). Most lighter weapon's Guard Level is 1, meaning that attacks that deal No Stagger will trigger aXXX_019200. I highly recommend going to your EquipWeaponParam, exporting it, then using LibreOffice or Excel to change all weaponry's Guard Level to 1. It is for this reason that you should put a Deflect animation going right to left (character's perspective) as your aXXX_019200, as most bosses in the game are right-handed, and their tougher (stagger level of 2 or higher) swings come from their right to left, and conversely their easier swings come from their left to right.
  8.  
  9.  
  10. Deflection Logic:
  11.  
  12.  
  13. A Deflection is comprised on a spEffect that goes off based on a condition, which enables certain events in an animation. The Serpent Hunter has animations with events such as spawning Oneshots and SFX, as well as bigger hitboxes that only activate if a certain stateInfo is held by the player, stateInfo 187. The condition to activate that stateInfo is whether a player is in Rykard's Arena, which triggers spEffect 1908, containing stateInfo 187. The Deflect's condition is that you have to be activating your block, from animations aXXX_019000, aXXX_019001, and aXXX_019004 (when the spEffect is activated), and that you cannot have held your block for more than 0.3 (or user defined length) seconds because you'll no longer be in a startup block animation, either in aXXX_0001X0, or aXXX_023XXX. The events the Deflect activates are a Oneshot, a SFX, and a bullet that deals 1 damage + posture damage.
  14.  
  15.  
  16. Regulation.bin Behavioral Changes:
  17. vvv
  18.  
  19. During the actual Deflecting process, there are a number of things to do. First is to go to BehaviorParam_PC and to go to a universal Ash of War. I recommend Flame of the Redmanes, as it comes premade with many things we need. We duplicate Flame of the Redmanes' 300000140 to create a TimedBlockDeflect or whatever you want to call it. We're on row 300000141, and we need to modify Behavior Judge ID to match, so instead of 140, we change it to 141. We also modify the Stamina Cost to be 0.
  20.  
  21. We then go to the bullet referenced by Flame of the Redmanes, bullet 2570, see that it is a spawner of multiple bullets of 2571, so we duplicate that bullet, into bullet 2572 and call it TimedDeflectProj or something. We go back to TimedBlockDeflect and we change its Reference value to 2572. We remove all traces of acceleration, deceleration, initial velocity, etc... We change the Initial Hit Radius to 5, the Projectile SFX ID to -1, the Duration to 0.2, the Special Attribute to None, the Material Attack Material to 3 - Standard, the Is Penetrate Character to off, and the Is Penetrate Object and Is Penetrate Map to one. Most of these changes are just common-sense changes, so if something is not to your liking, just go ham.
  22.  
  23. Next, we go to AtkParam_PC and find the Flame of the Redmanes attack, row 30020930. We duplicate that into row 30020931, call it TimedDeflectPoiseDMG, and we put that value in for bullet row 2572's AtkParam ID. What we do in AtkParam_PC is we go to our Knockback Distance, and we change it to 0, and we change its Damage: Physical and change that to a 1. We change the Damage: Fire, Damage: Guard Attack Rate, Damage: Object, and Damage: Stamina to 0. We change its Damage Level to 1 - No Stagger. We change the Attack Attribute to 3 - Standard, and Special Attribute to 0 - None. We uncheck Is Base Attack Added. We lower the Damage: Poise from 40 to 6, Disable Guard to yes, Disable No Damage to yes, Status Ailment Correction to 0.
  24.  
  25. Alternatively, you could change Hit 0: Radius to 3, Hit 0: Dummy Poly [1] to 100, Attack Correction: Physical to 1, Damage: Physical to 1, Damage Level 0 - None, Special Attribute to None, Attack Attribute to 3 - Standard, disable Is Base Attack Added, Damage: Poise to 0, Status Ailment Correction to 0, and Attack Correction: Poise to 100.
  26.  
  27. There is a myriad of ways one can get the TimedDeflectPoiseDMG to work, the two above are what I recommend. The most important thing here is common sense and making sure you have your bases covered in edge cases and such. This process of modifying Yapped should only take around 10 minutes or so to do, and another 10 minutes or so to iron out any kinks.
  28. ^^^
  29.  
  30. TAE Changes:
  31.  
  32. With Deflection animations, it's important to get rid of certain events in the TAE. JumpTable 5: Get-Parried Window, JumpTable 63: SetBool32_0x7C_3_RequestAIState, InvokeAttackBehavior, JumpTable 57: SetStartbit14_DamageModule, JumpTable 56: SetStartbit13_DamageModule, and JumpTable 72: InvokeKnockbackValue should be erased.
  33.  
  34. SetKnockbackPercent should be adjusted as per the animation. If your animation features you moving back already, then a lower value like 80-100 works. If your animation features you moving forwards or sitting still, then a value of 120-150 usually works.
  35.  
  36. What's needed next is the Blend and AnimSpeedGradient to speed up the animation. Ideally, you should have an AnimSpeedGradient of 30->30, stretching from the first frame until a few frames before the swing, and a Blend event from the first frame to around 2-4 frames after the AnimSpeedGradient ends. You should then have another AnimSpeedGradient right after the first one with speed 1->1, so that the imprecisions of the game reading your TAE are lessened, because without this, there is a chance that the game still thinks your animation is going at 30x its regular speed... for another 1 or 2 real time frames, in which another half or even whole second can be skipped.
  37.  
  38. What's needed next is an InvokeBulletBehavior, typically the same length as the Blend event, starting from the first frame. The s32 DummyPolyID can be almost anything above -1. I prefer 55, 0, or 101, but it usually doesn't matter. s32 AttackIndex should be 0, and s32 BehaviorJudgeID should be 3141, or whatever your Behavior Judge ID for your TimedBlockDeflect was and then add a "3" as a prefix. The u8 AttachmentType should be 0, b Enable should not be checked, and the s16 StateInfo should be 888 or whatever stateInfo it was that the original Deflect spEffect had. s16 Offset and u8 Unk12 should be 0, and b Unk13 should be unchecked.
  39.  
  40. Animations typically also move the character forwards by 1 step, so a RootMotionReduction lasting for however long the step should be included, starting at the first frame. f32 ReductionAtEventStart and f32 ReductionAtEventEnd should both be 100, u8 ReductionType should be 0.
  41.  
  42. Then you'll want a SpawnOneShotFFX to indicate visually that you've suceeded on a Deflect. I like using s32 FFXID 200001, on s32 DummyPolyID 902. The s32 TimerNumber should be -1, and b IsIgnoreDummyPolyAngle should be unchecked. b IsFollowDummyPoly and bIsRestrictToDummyPoly should be checked. u8 ExtraSpawnCondition should be 0 and s16 StateInfo should be 888 or whatever stateInfo it was that the original Deflect spEffect had. You'll also want a Wwise_PlaySound_ByStateInfo, with s32 SoundType 5: (s) SFX, s32 SoundID 440194, s32 DummyPolyID of 100, s32 SlotNumber of -1, s16 StateInfo of 888 or whatever you chose, s16 Unk12 of 256, s32 Unk14 of 1, s32 Unk18 of 0, and s32Unk1C of 255.
  43.  
  44. You'll also want to put in JumpTable 7: Disable Turning and JumpTable 89: Disable All Movement for a few more frames longer than your Blend.
  45.  
  46. It'd also be good to define a secondary post-Deflect spEffect so that you have some frames after a Deflect where you can have some safety, along with a JumpTable 3: Set Guard Type, with f32 ArgA as 0, Guard BehaviorJudgeID as 470 (for 1H Deflects it should be 460), u8ArgC as 6, u8 ArgD as 0, and s16 ArgE as 0.
  47.  
  48. Once you have all this done, you are basically 90% done with your Deflect system, because all these events can be copy pasted into various aXXX_0192XX without many problems.
  49.  
  50. EquipWeaponParam Changes:
  51.  
  52. To get weapons Deflecting in certain ways, we need to modify its EquipWeaponParam. Guard Motion Category on all weapons should be a 2, if your Weapon Motion Position - 2H is 10, 12, or 13 (these correspond to which TAE you get your idle anims and Deflect anims from).
  53.  
  54. a15 Changes:
  55.  
  56. a015_000000, the idle animation, is now a013_000000's idle animation, which results in the proper holding of Greataxes and Greathammers to be like a spear, but also causes certain Colossal Swords to be held that way as well.
  57.  
  58. a015_000100 and a015_000120 are changed. aXXX_0001XX are the idle block animations of a moveset. a015_000100 corresponds with a Guard Motion Category of 0, a015_000110 corresponds with a Guard Motion Category of 1, and a015_000120 corresponds with a Guard Motion Category of 2. Generally speaking, a Guard Motion Category offsets your animation within a certain category by 10 or 100. However, this is not always the case, and so extensive testing should be done before you replace an animation. Due to an improper testing procedure with Sword Mastery, the a15 in the c000.anibnd should NOT be used as a base for one's own mods as it contains illogical replacements.
  59.  
  60. The Deflect animations for a015 have been changed, and so have the moving while blocking animations, a015_023XXX. To note: if you want to use the Square Up animations for your block while walk/run/sprint, make sure to take out the AddSpEffect 100130, as this is a "leg animation". All 100XXX spEffects modify either your legs or have some interaction with hks events in the animations, like with casting spell animations looping back onto themselves or going forwards, or with certain heavy attack animations.
  61.  
  62. The Guard Break animations, a015_0195XX have not been modified because I like how they look.
  63.  
  64. "Braking" animations (a015_026XXX) done after a sprint, have been modified.
  65.  
  66. Because the backstep animations, a015_027XXX, do not have replacements, it seems like there isn't a way to get custom weapon-type backsteps. While backstepping may work for long weapon animations, like the Greathammers this TAE was modified for, for the Colossal Swords that this TAE had shoved on them, it does not.
  67.  
  68. The a015_029XXX item swap animations have not been touched. The horse animations, a015_10XXXX and a015_126XXX have not been touched.
  69.  
  70. The a015_202XXX animations of jumping and landing have been modified to be of a013_202XXX. The sneaking animations, which comprise the rest of the TAE, a015_300000 and below, have been made to be a013 animations.
  71.  
  72. 7-Tiered Deflects (For Advanced Modders. Dissecting Sword Mastery's a012 and a040 is HIGHLY recommended in this section. Disregard this tutorial after HKS and Behbnd editing is out.)
  73.  
  74. 7-Tiered Deflects consists of the standard 3 Deflects, Left, Right, and Heavy. The 4 other tiers are Left Branch 1, Left Branch 2, Right Branch 1, and Right Branch 2. The Branch Deflects are weapon-specific, as 7-Tiered Deflects uses an unorthodox and unstable method to achieve its results. Theoretically, one could achieve 9 Tiers of Deflects by utilizing a modified methodology for Weapon Repel/Flick Power that would totally consume the weapon bouncing mechanic.
  75.  
  76. To create a 7-Tiered Deflect System, you need to add a SpEffect that gets applied on your Deflect bullet, lasting for around 0.5-1 seconds, giving the enemy 200 Weapon Repel Defense. Next, you need to create 2 new attacks and 4 new behaviors linked to those attacks. The 2 new attacks should be labelled "Small Repel" (labelled as "Underhead" in Sword Mastery) and "Large Repel" (labelled as "Overhead" in Sword Mastery), with radius 4 centered around dummypoly 80, but dealing no damage whatsoever other than stagger damage. The Damage Level for the "Small Repel" should be Damage Level 2, Short Stagger, and the Damage Level for the "Large Repel" should be Damage Level 4, Long Stagger.
  77.  
  78. Then you need to manually add new blank SpEffects that give custom stateInfos, one for the Overhead and one for the Underhead. These SpEffects should be put on enemy attacks, and they'll force out the new Deflects. In the TAEs for your blocks, aXXX_19200 and aXXX_019210, you should have invokeAttackBehavior that references the Overhead and Underhead attacks on the respective custom stateInfos shortly (about 0.05-0.1 seconds) after your initial Deflect bullet spawns.
Advertisement
Add Comment
Please, Sign In to add comment