
ZenCombat
Enhanced combat mechanics: dedicated dodge button, riding mounts can attack, auto equip shield, melee on a slope, arrow aim improvements, parrying ranged attack does not stun attacker, hide other player's damage numbers, adjust pushback force.
Date uploaded | 3 days ago |
Version | 0.3.1 |
Download link | ZenDragon-ZenCombat-0.3.1.zip |
Downloads | 884 |
Dependency string | ZenDragon-ZenCombat-0.3.1 |
This mod requires the following mods to function

README
ZenCombat
Adjustments to bring more fun and balance to the combat system.
NOTE: Pair with the ZenTargeting
mod for target lock!
- Dedicated dodge button for keyboard and gamepad.
- Your mounts can attack and jump (configurable).
- Optional rolling dismount for quick stylish dismounts from your steed.
- Pair with
ZenPlayer
for even more control over your mount's stamina and regen stats under the "Riding" section. Also an option to push your mounts beyond exhaustion to drive them farther and faster.
- Parrying a ranged attack does not stun the attacker.
- Show damage numbers only for yourself, not everyone.
- Adjust pushback force
- Equip last used shield automatically when drawing 1h weapon.
- Auto equip your lantern or torch and keep your weapon drawn.
- Game Setting: "Attack towards look dir" now also works with block.
- Bows aim at the crosshair, not under it.
- Option to turn off wooden arrows, overpowered, too cheap.
- Restrict movement when drawing a bow.
- Melee correctly on slopes.
- Red screen flash is reduced when taking damage so that it is less blinding.
Client / Server Requirements
NOTE: Technically it is not required on the server. However, if it is installed on the server then it will force all clients to have it installed as well. This is to enable two modes of usage:
- Dedicated server admins can put the mod on the server to enforce all clients to have the mod installed and sync admin configs.
- Trusted friends can agree to run the same mods and connect through a vanilla dedicated server with no enforcement but with locked admin configs.
Client Only
This mod operates entirely client side. That means you can connect to any vanilla server with this mod installed. Other players do not need to have the mod installed.
NOTE: If you host a game session with this mod installed then it will be considered to be installed on the server since your session is the server. Therefor, all clients will be required to have it. If you don't want to require all players to have this mod then you will need to host your game in a dedicated server. You can easily download and run the Valheim Dedicated Server from Steam or host one in the cloud.
Extend Functionality with Additional ZenMods
ZenTargeting
: Target lock is awesome! :)ZenRedecorate
: Move chests around without destroying them.ZenItemStand
: Item Stands and Armor Stands behave like containers. Quickly swap your gear.
Improve Your Experience
CORE MODS
The full collection of all Zen MODS:
- Radically improved QoL
- Incredible performance
- Pre-configured
- 100% Gamepad support
- Spectacularly immersive
Enjoy!
Sample Config File
## Settings file was created by plugin ZenCombat v0.3.0
## Plugin GUID: ZenDragon.ZenCombat
[AutoShield]
## Automatically equip the recent shield when equipping main 1h weapon.
## Plus extra logic to make the torch behave nicely with auto shield.
## Intuitivly toggle weapons and shields and torches without needing to think about it to much.
# Setting type: Boolean
# Default value: true
Autoequip Recent Shield = true
[Bows]
## [Admin] Allow wood arrows? They are a bit OP because they are so cheap and lethal.
## When enabled it does not make firing an arrow a risky proposition and they
## undermine any reason to invest in more expensive ammunition.
## [restart required]
# Setting type: Boolean
# Default value: false
Enable WoodArrow = false
## [Admin] How much damage should wood arrows do if they are enabled?
## They are very OP by default for being a basic crude arrow. (Vanilla: 22)
## [restart required]
# Setting type: Single
# Default value: 1
# Acceptable value range: From 0.1 to 22
WoodArrow Damage = 1
## [Admin] Angle that the projectile is launched at. To offset the default undershot in Vanilla. (Vanilla: 0)
# Setting type: Single
# Default value: -2
# Acceptable value range: From -10 to 10
Projectile Launch Angle = -2
## [Admin] Percent of normal movement speed when bow is drawn, 0.5 = 50%, move half speed when drawing bow. (Vanilla: 1)
## NOTE: If CombatOverhaulRewrite is installed it is recommended to set this to 1 otherwise the two mods will compound this value.
# Setting type: Single
# Default value: 0.5
# Acceptable value range: From 0 to 1
Movement Speed = 0.5
[Input]
## Dodge becomes a separate button from jump, you no longer need to hold block to dodge.
## Keyboard: Define the custom key using the config option below.
## Gamepad: Interact (Use) is moved to X on classic controller layout to make room.
## Note: When using gamepad you need to restart the game for all control mapping to take effect.
# Setting type: Boolean
# Default value: true
Separate Jump/Dodge Buttons = true
## Keyboard: Dedicated dodge button for keyboard.
# Setting type: KeyCode
# Default value: LeftAlt
# Acceptable values: None, Backspace, Tab, Clear, Return, Pause, Escape, Space, Exclaim, DoubleQuote, Hash, Dollar, Percent, Ampersand, Quote, LeftParen, RightParen, Asterisk, Plus, Comma, Minus, Period, Slash, Alpha0, Alpha1, Alpha2, Alpha3, Alpha4, Alpha5, Alpha6, Alpha7, Alpha8, Alpha9, Colon, Semicolon, Less, Equals, Greater, Question, At, LeftBracket, Backslash, RightBracket, Caret, Underscore, BackQuote, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, LeftCurlyBracket, Pipe, RightCurlyBracket, Tilde, Delete, Keypad0, Keypad1, Keypad2, Keypad3, Keypad4, Keypad5, Keypad6, Keypad7, Keypad8, Keypad9, KeypadPeriod, KeypadDivide, KeypadMultiply, KeypadMinus, KeypadPlus, KeypadEnter, KeypadEquals, UpArrow, DownArrow, RightArrow, LeftArrow, Insert, Home, End, PageUp, PageDown, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, F13, F14, F15, Numlock, CapsLock, ScrollLock, RightShift, LeftShift, RightControl, LeftControl, RightAlt, LeftAlt, RightMeta, RightCommand, RightApple, LeftMeta, LeftCommand, LeftApple, LeftWindows, RightWindows, AltGr, Help, Print, SysReq, Break, Menu, Mouse0, Mouse1, Mouse2, Mouse3, Mouse4, Mouse5, Mouse6, JoystickButton0, JoystickButton1, JoystickButton2, JoystickButton3, JoystickButton4, JoystickButton5, JoystickButton6, JoystickButton7, JoystickButton8, JoystickButton9, JoystickButton10, JoystickButton11, JoystickButton12, JoystickButton13, JoystickButton14, JoystickButton15, JoystickButton16, JoystickButton17, JoystickButton18, JoystickButton19, Joystick1Button0, Joystick1Button1, Joystick1Button2, Joystick1Button3, Joystick1Button4, Joystick1Button5, Joystick1Button6, Joystick1Button7, Joystick1Button8, Joystick1Button9, Joystick1Button10, Joystick1Button11, Joystick1Button12, Joystick1Button13, Joystick1Button14, Joystick1Button15, Joystick1Button16, Joystick1Button17, Joystick1Button18, Joystick1Button19, Joystick2Button0, Joystick2Button1, Joystick2Button2, Joystick2Button3, Joystick2Button4, Joystick2Button5, Joystick2Button6, Joystick2Button7, Joystick2Button8, Joystick2Button9, Joystick2Button10, Joystick2Button11, Joystick2Button12, Joystick2Button13, Joystick2Button14, Joystick2Button15, Joystick2Button16, Joystick2Button17, Joystick2Button18, Joystick2Button19, Joystick3Button0, Joystick3Button1, Joystick3Button2, Joystick3Button3, Joystick3Button4, Joystick3Button5, Joystick3Button6, Joystick3Button7, Joystick3Button8, Joystick3Button9, Joystick3Button10, Joystick3Button11, Joystick3Button12, Joystick3Button13, Joystick3Button14, Joystick3Button15, Joystick3Button16, Joystick3Button17, Joystick3Button18, Joystick3Button19, Joystick4Button0, Joystick4Button1, Joystick4Button2, Joystick4Button3, Joystick4Button4, Joystick4Button5, Joystick4Button6, Joystick4Button7, Joystick4Button8, Joystick4Button9, Joystick4Button10, Joystick4Button11, Joystick4Button12, Joystick4Button13, Joystick4Button14, Joystick4Button15, Joystick4Button16, Joystick4Button17, Joystick4Button18, Joystick4Button19, Joystick5Button0, Joystick5Button1, Joystick5Button2, Joystick5Button3, Joystick5Button4, Joystick5Button5, Joystick5Button6, Joystick5Button7, Joystick5Button8, Joystick5Button9, Joystick5Button10, Joystick5Button11, Joystick5Button12, Joystick5Button13, Joystick5Button14, Joystick5Button15, Joystick5Button16, Joystick5Button17, Joystick5Button18, Joystick5Button19, Joystick6Button0, Joystick6Button1, Joystick6Button2, Joystick6Button3, Joystick6Button4, Joystick6Button5, Joystick6Button6, Joystick6Button7, Joystick6Button8, Joystick6Button9, Joystick6Button10, Joystick6Button11, Joystick6Button12, Joystick6Button13, Joystick6Button14, Joystick6Button15, Joystick6Button16, Joystick6Button17, Joystick6Button18, Joystick6Button19, Joystick7Button0, Joystick7Button1, Joystick7Button2, Joystick7Button3, Joystick7Button4, Joystick7Button5, Joystick7Button6, Joystick7Button7, Joystick7Button8, Joystick7Button9, Joystick7Button10, Joystick7Button11, Joystick7Button12, Joystick7Button13, Joystick7Button14, Joystick7Button15, Joystick7Button16, Joystick7Button17, Joystick7Button18, Joystick7Button19, Joystick8Button0, Joystick8Button1, Joystick8Button2, Joystick8Button3, Joystick8Button4, Joystick8Button5, Joystick8Button6, Joystick8Button7, Joystick8Button8, Joystick8Button9, Joystick8Button10, Joystick8Button11, Joystick8Button12, Joystick8Button13, Joystick8Button14, Joystick8Button15, Joystick8Button16, Joystick8Button17, Joystick8Button18, Joystick8Button19
Keyboard Dodge Button = LeftAlt
[Melee]
## [Admin] Parrying a ranged attack does not stun the attacker. That's just silly. (Vanilla : false)
# Setting type: Boolean
# Default value: true
Parry Ranged Attacker - No Stun = true
## [Admin] Attack targets on slopes above or below you.
# Setting type: Boolean
# Default value: true
Enable Slope Combat = true
## When the vanilla setting 'Attack towards look direction' is enabled this makes it also apply those rules for blocking. (Vanilla : false)
# Setting type: Boolean
# Default value: true
Block Towards Look Direction = true
## [Admin] The percent of vanilla pushback force to apply (Vanilla: 100%)
## By default this is set to lower than 100% to make it feel weighty.
## Otherwise things get flinged around far to easily and feels weightless.
# Setting type: Single
# Default value: 0.4
# Acceptable value range: From 0 to 1
Pushback Force Percent = 0.4
[Mounts]
## [Admin] Stamina drain of mounts when they perform their primary attack.
# Setting type: Single
# Default value: 10
# Acceptable value range: From 0 to 250
Stamina Drain - Primary Attack = 10
## [Admin] Stamina drain of mounts when they perform their secondary attack.
# Setting type: Single
# Default value: 25
# Acceptable value range: From 0 to 250
Stamina Drain - Secondary Attack = 25
## [Admin] When enabled the player can directly control the mount's jump (Vanilla: false)
## Note: The mount must be sprinting before they can jump.
## The vanilla animations are not designed for jumping mounts, they look odd.
## I think it looks bad and it breaks the gameplay somewhat, so it's disabled by default.
# Setting type: Condition
# Default value: NotAllowed
# Acceptable values: NotAllowed, NotEncumbered, Allowed
Can Jump = NotAllowed
## [Admin] When enabled the player can directly control the mount's attack (Vanilla: false)
## Controls:
## - Main Attack: Primary attack (if mount has an attack)
## - Secondary Attack:(if mount has 2 attacks)
## - Third Attack: Attack + Hold Block (if mount has 3 attacks)
## NOTE: Third attack stamina cost is the average of primary + secondary attacks
# Setting type: Condition
# Default value: Allowed
# Acceptable values: NotAllowed, NotEncumbered, Allowed
Can Attack = Allowed
## Press and hold in a direction while pressing the dismount key/button to do a rolling dismount.
# Setting type: Boolean
# Default value: true
Dismount Roll = true
## Dedicated dismount key so that you can always dismount easily and intentionally.
## NOTE: Set both Dismount Key and Dismount Button to None to revert to vanilla dismount behavior.
## [restart required for changes to take effect]
# Setting type: KeyCode
# Default value: LeftAlt
# Acceptable values: None, Backspace, Tab, Clear, Return, Pause, Escape, Space, Exclaim, DoubleQuote, Hash, Dollar, Percent, Ampersand, Quote, LeftParen, RightParen, Asterisk, Plus, Comma, Minus, Period, Slash, Alpha0, Alpha1, Alpha2, Alpha3, Alpha4, Alpha5, Alpha6, Alpha7, Alpha8, Alpha9, Colon, Semicolon, Less, Equals, Greater, Question, At, LeftBracket, Backslash, RightBracket, Caret, Underscore, BackQuote, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, LeftCurlyBracket, Pipe, RightCurlyBracket, Tilde, Delete, Keypad0, Keypad1, Keypad2, Keypad3, Keypad4, Keypad5, Keypad6, Keypad7, Keypad8, Keypad9, KeypadPeriod, KeypadDivide, KeypadMultiply, KeypadMinus, KeypadPlus, KeypadEnter, KeypadEquals, UpArrow, DownArrow, RightArrow, LeftArrow, Insert, Home, End, PageUp, PageDown, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, F13, F14, F15, Numlock, CapsLock, ScrollLock, RightShift, LeftShift, RightControl, LeftControl, RightAlt, LeftAlt, RightMeta, RightCommand, RightApple, LeftMeta, LeftCommand, LeftApple, LeftWindows, RightWindows, AltGr, Help, Print, SysReq, Break, Menu, Mouse0, Mouse1, Mouse2, Mouse3, Mouse4, Mouse5, Mouse6, JoystickButton0, JoystickButton1, JoystickButton2, JoystickButton3, JoystickButton4, JoystickButton5, JoystickButton6, JoystickButton7, JoystickButton8, JoystickButton9, JoystickButton10, JoystickButton11, JoystickButton12, JoystickButton13, JoystickButton14, JoystickButton15, JoystickButton16, JoystickButton17, JoystickButton18, JoystickButton19, Joystick1Button0, Joystick1Button1, Joystick1Button2, Joystick1Button3, Joystick1Button4, Joystick1Button5, Joystick1Button6, Joystick1Button7, Joystick1Button8, Joystick1Button9, Joystick1Button10, Joystick1Button11, Joystick1Button12, Joystick1Button13, Joystick1Button14, Joystick1Button15, Joystick1Button16, Joystick1Button17, Joystick1Button18, Joystick1Button19, Joystick2Button0, Joystick2Button1, Joystick2Button2, Joystick2Button3, Joystick2Button4, Joystick2Button5, Joystick2Button6, Joystick2Button7, Joystick2Button8, Joystick2Button9, Joystick2Button10, Joystick2Button11, Joystick2Button12, Joystick2Button13, Joystick2Button14, Joystick2Button15, Joystick2Button16, Joystick2Button17, Joystick2Button18, Joystick2Button19, Joystick3Button0, Joystick3Button1, Joystick3Button2, Joystick3Button3, Joystick3Button4, Joystick3Button5, Joystick3Button6, Joystick3Button7, Joystick3Button8, Joystick3Button9, Joystick3Button10, Joystick3Button11, Joystick3Button12, Joystick3Button13, Joystick3Button14, Joystick3Button15, Joystick3Button16, Joystick3Button17, Joystick3Button18, Joystick3Button19, Joystick4Button0, Joystick4Button1, Joystick4Button2, Joystick4Button3, Joystick4Button4, Joystick4Button5, Joystick4Button6, Joystick4Button7, Joystick4Button8, Joystick4Button9, Joystick4Button10, Joystick4Button11, Joystick4Button12, Joystick4Button13, Joystick4Button14, Joystick4Button15, Joystick4Button16, Joystick4Button17, Joystick4Button18, Joystick4Button19, Joystick5Button0, Joystick5Button1, Joystick5Button2, Joystick5Button3, Joystick5Button4, Joystick5Button5, Joystick5Button6, Joystick5Button7, Joystick5Button8, Joystick5Button9, Joystick5Button10, Joystick5Button11, Joystick5Button12, Joystick5Button13, Joystick5Button14, Joystick5Button15, Joystick5Button16, Joystick5Button17, Joystick5Button18, Joystick5Button19, Joystick6Button0, Joystick6Button1, Joystick6Button2, Joystick6Button3, Joystick6Button4, Joystick6Button5, Joystick6Button6, Joystick6Button7, Joystick6Button8, Joystick6Button9, Joystick6Button10, Joystick6Button11, Joystick6Button12, Joystick6Button13, Joystick6Button14, Joystick6Button15, Joystick6Button16, Joystick6Button17, Joystick6Button18, Joystick6Button19, Joystick7Button0, Joystick7Button1, Joystick7Button2, Joystick7Button3, Joystick7Button4, Joystick7Button5, Joystick7Button6, Joystick7Button7, Joystick7Button8, Joystick7Button9, Joystick7Button10, Joystick7Button11, Joystick7Button12, Joystick7Button13, Joystick7Button14, Joystick7Button15, Joystick7Button16, Joystick7Button17, Joystick7Button18, Joystick7Button19, Joystick8Button0, Joystick8Button1, Joystick8Button2, Joystick8Button3, Joystick8Button4, Joystick8Button5, Joystick8Button6, Joystick8Button7, Joystick8Button8, Joystick8Button9, Joystick8Button10, Joystick8Button11, Joystick8Button12, Joystick8Button13, Joystick8Button14, Joystick8Button15, Joystick8Button16, Joystick8Button17, Joystick8Button18, Joystick8Button19
Dismount Key = LeftAlt
## Dedicated dismount gamepad button so that you can always dismount easily and intentionally.
## NOTE: Set both Dismount Key and Dismount Button to None to revert to vanilla dismount behavior.
## [restart required for changes to take effect]
# Setting type: GamepadInput
# Default value: FaceButtonB
# Acceptable values: None, DPadLeft, DPadRight, DPadDown, DPadUp, FaceButtonA, FaceButtonB, FaceButtonX, FaceButtonY, StickLHorizontal, StickLVertical, StickLButton, StickRHorizontal, StickRVertical, StickRButton, BumperL, BumperR, TriggerL, TriggerR, Select, Start, DualShockTouchpad, StickRUp, StickRDown, StickRLeft, StickRRight, StickLUp, StickLDown, StickLLeft, StickLRight, StickR, StickL
Dismount Button = FaceButtonB
[UI]
## [Admin] Override the vanilla red screen damage flash with a softer less blinding style.
# Setting type: Boolean
# Default value: true
Softer Damage Screen Flash = true
## [Admin] Hide damage text when it is just 0 (Vanilla: false)
# Setting type: Boolean
# Default value: true
Hide Damage Text 0 = true
## [Admin] In multiplayer, damage text visibility mode: (Vanilla: All)
## All - View all damage numbers and info text from everyone.
## Self - Only show your own damage numbers + Info texts.
## Info - Only show info texts, no damage numbers.
## None - Hide all texts, show nothing.
# Setting type: DamageTextVisibilityMode
# Default value: Self
# Acceptable values: All, Self, Info, None
Damage Text Visibility = Self
Like My Mods? Donations Welcome
Bitcoin

CHANGELOG
v0.3.1
- tweak controls for rolling dismount off of mounts to provide the option to also dismount in place by holding the dismount button down for a moment without pressing a directional input.
v0.3.0
- added a new Mounts section for combat mounts. Now your mounts can now attack and jump!
- pair with ZenPlayer for even more control over your mount's stamina and regen under the "Riding" section as well as stabilizing the camera can be found there as well.
v0.2.10
- bugfix: when the AutoShield option was enabled: torch would not unequip in inventory when held in the left hand and then switching to a tool.
v0.2.9
- update to use features in Zen.ModLib v1.1.0
- renamed config option DisableDamage0 to HideDamage0
v0.2.8
- fix: wood arrow config options were not syncing with servers in multiplayer.
v0.2.7
- small fix: Change option PushbackForce to admin only so only server admins can set it when playing multiplayer.
v0.2.6
- Add Config: PushbackForce: The percent of pushback to apply. Vanilla feels too weightless, default 40% of vanilla.
- Add Config: DamageTextVisibility: Default self only: This means you will only see the damage texts that you generate, not other players.
- Remove Config: DamageTextMaxRange: No longer needed because DamageTextVisibility solves the problem that this config was trying to solve.
v0.2.5
- fix: do not unequip shield if you throw your spear.
v0.2.4
- do not remap gamepad controls if the option: Separate Jump/Dodge Buttons is false.
v0.2.3
- fix: disable remap dodge config option was not working for keyboard.
v0.2.2
- fixed config sync
- parrying a ranged attack does not stun the attacker.
v0.2.1
- removed BepInEx from dependency, Zen.ModLib handles it.
v0.2.0
- use Zen.ModLib
v0.1.20
- update readme.
v0.1.19
- add config option Block Towards Look Direction.
- prevent dodge button from having any effect when sitting (Alt-Tab without standing)
v0.1.18
-
bugfix: Autoequip config value wasn't properly being checked in all areas. Now it can be fully turned off.
v0.1.17
-
update configs and logging subsystem
v0.1.16
- UPDATE FOR VALHEIM v0.220.3
v0.1.15
- Bugfix: admin only config options can now be changed when connecting to vanilla server.
v0.1.14
- Changed config option: bow draw movement speed default value to 0.5 from 1.
v0.1.13
- Dedicated dodge button for keyboard and gamepad.