Weapons and Mobs
Perfect Parries supports modded weapons and entities. This page covers how to configure custom stats and animations for your custom weapons and entities.
As of now, only animations can be completely set on your end. For custom entity/weapoon parry stats to be officially implemented, please contact me via discord to let me know what stats you would like for your weapon/entity heavy weapon. In the future, I aim to create a way to automatically read information from your mod.
Weapons
Custom Parry Animations
Add a PP_Parry entry to your weapon's JSON file. This tells Perfect Parries which animation to play when a parry occurs with this weapon.
"PP_Parry": {
"ThirdPerson": "Characters/Animations/Main_Handed/{Weapon_Name}/Attacks/Perfect_Parries/Parry.blockyanim",
"ThirdPersonMoving": "Characters/Animations/Main_Handed/{Weapon_Name}/Attacks/Perfect_Parries/Parry_Moving.blockyanim",
"FirstPerson": "Characters/Animations/Main_Handed/{Weapon_Name}/Attacks/Perfect_Parries/Parry_FPS.blockyanim",
"BlendingDuration": 0.1,
"KeepPreviousFirstPersonAnimation": true
}
Place your .blockyanim files at the paths specified above, adjusting {Weapon_Name} to match your weapon. {Weapon_Name} is the exact string you see when you hover over your weapon in your creative inventory.
Custom Parry Stats
You can override parry behavior for your weapons by adding entries to weapon_parry_settings.json in mods/Perfect_Parries/. Each entry is keyed by the weapon's item ID and can override any combination of the following properties:
| Property | Type | Description |
|---|---|---|
parryWindowMs | Long | the timing window in milliseconds |
reflectDamagePercent | Float | percentage of damage reflected to attacker |
knockbackX | Float | horizontal knockback force on attacker |
knockbackY | Float | vertical knockback force on attacker |
counterattackDamageMultiplier | Float | damage multiplier for counterattacks |
counterattackWindowMs | Long | window for landing a counterattack (ms) |
stunnedDamageMultiplier | Float | damage multiplier against stunned targets |
parryStaminaDrainMultiplier | Float | stamina drain multiplier on perfect parry |
signature_energy_gain | Float | signature energy granted per parry |
flatBonusStaggerChance | Float | flat addition to the entity's stagger chance |
percentageBonusStaggerChance | Float | percentage increase to the entity's stagger chance |
parrySfxId | String | custom SFX ID for the parry sound |
counterattackSfxId | String | custom SFX ID for the counterattack hit sound |
Any property you don't specify will use the global defaults from parry_config.json.
Wildcards and Material Groups
You can use * as a wildcard to match multiple weapons at once. Two built-in material groups are also available:
{METAL}— matches common metal materials (iron, cobalt, mithril, etc.){NON_METAL}— matches non-metal materials (stone, wood, trork, etc.)
Example
{
"Weapon_Narwhals_Karambit": {
"signature_energy_gain": 10.0,
"parryWindowMs": 150,
"reflectDamagePercent": 0.05,
"knockbackX": 2.5,
"knockbackY": 2.5,
"counterattackDamageMultiplier": 2.0,
"stunnedDamageMultiplier": 3.0,
"parryStaminaDrainMultiplier": 0.0,
"counterattackWindowMs": 300,
"flatBonusStaggerChance": 0,
"percentageBonusStaggerChance": 0
},
"Weapon_Mjolnir_Starky": {
"signature_energy_gain": 35.0
}
}
Mobs
Custom Stun Animations
Add a ParriedStun entry to your entity's animation JSON file. This tells Perfect Parries which animation to play when the entity is fully stunned.
"ParriedStun": {
"Animations": [
{
"Animation": "NPC/{Entity_Name}/Animations/Damage/Default/PP_Parry_Stunned.blockyanim"
}
]
}
Place your .blockyanim file at the path specified above, adjusting {Entity_Name} to match your entity. {Entity_Name} is the exact string you type to spawn the NPC.
Custom Entity Stamina Stats
You can configure stamina and stun behavior for your modded entities by adding entries to entity_stamina.json in mods/Perfect_Parries/. Each entry is keyed by the entity type ID and has the following properties:
| Property | Description |
|---|---|
max_stamina | maximum stamina pool for this entity type |
stamina_regen_timer | delay in milliseconds before stamina starts regenerating after being drained |
stamina_regen_rate | how fast stamina regenerates per tick |
damaged_stamina_multiplier | how much normal (non-parry) damage drains stamina |
parried_stamina_change | flat stamina drained when this entity is parried |
stagger_chance | probability of a stagger on each parry (0.0 to 1.0) |
When an entity's stamina reaches 0, it enters a full stun for the duration configured in parry_config.json (default 5 seconds).
Example
{
"KF_Fire_Queen": {
"max_stamina": 350.0,
"stamina_regen_timer": 5000,
"stamina_regen_rate": 25.0,
"damaged_stamina_multiplier": 0.75,
"parried_stamina_change": 35.0,
"stagger_chance": 0.1
},
"Sentinel_Golem": {
"max_stamina": 250.0,
"stamina_regen_timer": 3000,
"stamina_regen_rate": 25.0,
"damaged_stamina_multiplier": 0.5,
"parried_stamina_change": 35.0,
"stagger_chance": 0
}
}
Bosses typically have higher max_stamina and lower stagger_chance to not trivialize bosses while keeping parrying rewarding.