diff --git a/CHANGELOG.md b/CHANGELOG.md index 9fba9249c8..d927b9986c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -26,6 +26,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Skill trees - Lactose tolerant golems - 6 different gems. (Topaz, Amethyst, Sapphire, Emerald, Ruby and Diamond) +- Poise system (not currently accessible to players for balancing reasons) ### Changed diff --git a/assets/common/abilities/axe/doublestrike.ron b/assets/common/abilities/axe/doublestrike.ron index cf52d4639f..23449bd186 100644 --- a/assets/common/abilities/axe/doublestrike.ron +++ b/assets/common/abilities/axe/doublestrike.ron @@ -3,7 +3,9 @@ ComboMelee( ( stage: 1, base_damage: 90, + base_poise_damage: 0, damage_increase: 10, + poise_damage_increase: 0, knockback: 8.0, range: 3.5, angle: 50.0, @@ -15,7 +17,9 @@ ComboMelee( ( stage: 2, base_damage: 130, + base_poise_damage: 0, damage_increase: 15, + poise_damage_increase: 0, knockback: 12.0, range: 3.5, angle: 30.0, @@ -32,4 +36,4 @@ ComboMelee( max_speed_increase: 0.6, scales_from_combo: 2, is_interruptible: false, -) \ No newline at end of file +) diff --git a/assets/common/abilities/axe/leap.ron b/assets/common/abilities/axe/leap.ron index 1b6cd34c6d..d4518b1b27 100644 --- a/assets/common/abilities/axe/leap.ron +++ b/assets/common/abilities/axe/leap.ron @@ -5,9 +5,10 @@ LeapMelee( swing_duration: 200, recover_duration: 200, base_damage: 240, + base_poise_damage: 0, knockback: 12.0, range: 4.5, max_angle: 30.0, forward_leap_strength: 28.0, vertical_leap_strength: 8.0, -) \ No newline at end of file +) diff --git a/assets/common/abilities/axe/spin.ron b/assets/common/abilities/axe/spin.ron index a26b860d02..3e21490f57 100644 --- a/assets/common/abilities/axe/spin.ron +++ b/assets/common/abilities/axe/spin.ron @@ -3,6 +3,7 @@ SpinMelee( swing_duration: 400, recover_duration: 200, base_damage: 60, + base_poise_damage: 0, knockback: 0.0, range: 3.5, energy_cost: 100, @@ -11,4 +12,4 @@ SpinMelee( is_interruptible: false, forward_speed: 0.0, num_spins: 1, -) \ No newline at end of file +) diff --git a/assets/common/abilities/bow/basic.ron b/assets/common/abilities/bow/basic.ron index ef04839b0a..ddef833ad9 100644 --- a/assets/common/abilities/bow/basic.ron +++ b/assets/common/abilities/bow/basic.ron @@ -12,4 +12,4 @@ BasicRanged( projectile_gravity: Some(Gravity(0.2)), projectile_speed: 100.0, can_continue: true, -) \ No newline at end of file +) diff --git a/assets/common/abilities/bow/repeater.ron b/assets/common/abilities/bow/repeater.ron index 18dc6d0bd2..d494b639ed 100644 --- a/assets/common/abilities/bow/repeater.ron +++ b/assets/common/abilities/bow/repeater.ron @@ -7,7 +7,7 @@ RepeaterRanged( leap: Some(5.0), projectile: Arrow( damage: 40.0, - knockback: 10.0, + knockback: 5.0, energy_regen: 0, ), projectile_body: Object(Arrow), @@ -15,4 +15,4 @@ RepeaterRanged( projectile_gravity: Some(Gravity(0.2)), projectile_speed: 100.0, reps_remaining: 3, -) \ No newline at end of file +) diff --git a/assets/common/abilities/dagger/tempbasic.ron b/assets/common/abilities/dagger/tempbasic.ron index 0d31c0b0f4..96f0bc4415 100644 --- a/assets/common/abilities/dagger/tempbasic.ron +++ b/assets/common/abilities/dagger/tempbasic.ron @@ -4,7 +4,8 @@ BasicMelee( swing_duration: 100, recover_duration: 300, base_damage: 50, + base_poise_damage: 0, knockback: 0.0, range: 3.5, max_angle: 20.0, -) \ No newline at end of file +) diff --git a/assets/common/abilities/empty/basic.ron b/assets/common/abilities/empty/basic.ron index 3562af81b5..d4c8eee77a 100644 --- a/assets/common/abilities/empty/basic.ron +++ b/assets/common/abilities/empty/basic.ron @@ -4,7 +4,8 @@ BasicMelee( swing_duration: 100, recover_duration: 900, base_damage: 20, + base_poise_damage: 0, knockback: 0.0, range: 3.5, max_angle: 15.0, -) \ No newline at end of file +) diff --git a/assets/common/abilities/farming/basic.ron b/assets/common/abilities/farming/basic.ron index 0a60b62df7..91761c2515 100644 --- a/assets/common/abilities/farming/basic.ron +++ b/assets/common/abilities/farming/basic.ron @@ -4,7 +4,8 @@ BasicMelee( swing_duration: 100, recover_duration: 150, base_damage: 50, + base_poise_damage: 0, knockback: 0.0, range: 3.5, max_angle: 20.0, -) \ No newline at end of file +) diff --git a/assets/common/abilities/hammer/charged.ron b/assets/common/abilities/hammer/charged.ron index 916ad9ce4e..85d34ffd8b 100644 --- a/assets/common/abilities/hammer/charged.ron +++ b/assets/common/abilities/hammer/charged.ron @@ -3,6 +3,8 @@ ChargedMelee( energy_drain: 300, initial_damage: 10, scaled_damage: 160, + initial_poise_damage: 0, + scaled_poise_damage: 0, initial_knockback: 10.0, scaled_knockback: 50.0, range: 3.5, diff --git a/assets/common/abilities/hammer/leap.ron b/assets/common/abilities/hammer/leap.ron index 70ec3019bf..079773f94a 100644 --- a/assets/common/abilities/hammer/leap.ron +++ b/assets/common/abilities/hammer/leap.ron @@ -5,9 +5,10 @@ LeapMelee( swing_duration: 150, recover_duration: 200, base_damage: 240, + base_poise_damage: 0, knockback: 25.0, range: 4.5, max_angle: 360.0, forward_leap_strength: 28.0, vertical_leap_strength: 8.0, -) \ No newline at end of file +) diff --git a/assets/common/abilities/hammer/singlestrike.ron b/assets/common/abilities/hammer/singlestrike.ron index 554f30c73c..34578dcc34 100644 --- a/assets/common/abilities/hammer/singlestrike.ron +++ b/assets/common/abilities/hammer/singlestrike.ron @@ -3,7 +3,9 @@ ComboMelee( stage: 1, base_damage: 130, damage_increase: 10, - knockback: 10.0, + base_poise_damage: 0, + poise_damage_increase: 0, + knockback: 0.0, range: 4.5, angle: 50.0, base_buildup_duration: 600, @@ -18,4 +20,4 @@ ComboMelee( max_speed_increase: 0.4, scales_from_combo: 2, is_interruptible: false, -) \ No newline at end of file +) diff --git a/assets/common/abilities/sceptre/healingbomb.ron b/assets/common/abilities/sceptre/healingbomb.ron index e653d3931d..731c259e80 100644 --- a/assets/common/abilities/sceptre/healingbomb.ron +++ b/assets/common/abilities/sceptre/healingbomb.ron @@ -5,6 +5,7 @@ BasicRanged( projectile: Heal( heal: 80.0, damage: 60.0, + poise_damage: 0, radius: 6.0, ), projectile_body: Object(BoltNature), @@ -15,4 +16,4 @@ BasicRanged( projectile_gravity: Some(Gravity(0.5)), projectile_speed: 40.0, can_continue: false, -) \ No newline at end of file +) diff --git a/assets/common/abilities/shield/tempbasic.ron b/assets/common/abilities/shield/tempbasic.ron index eca1996eb1..cd78ac1924 100644 --- a/assets/common/abilities/shield/tempbasic.ron +++ b/assets/common/abilities/shield/tempbasic.ron @@ -4,7 +4,8 @@ BasicMelee( swing_duration: 100, recover_duration: 300, base_damage: 40, + base_poise_damage: 0, knockback: 0.0, range: 3.0, max_angle: 120.0, -) \ No newline at end of file +) diff --git a/assets/common/abilities/staff/firebomb.ron b/assets/common/abilities/staff/firebomb.ron index 05a18db3d3..38eae4af48 100644 --- a/assets/common/abilities/staff/firebomb.ron +++ b/assets/common/abilities/staff/firebomb.ron @@ -15,4 +15,4 @@ BasicRanged( projectile_gravity: Some(Gravity(0.3)), projectile_speed: 60.0, can_continue: true, -) \ No newline at end of file +) diff --git a/assets/common/abilities/staff/fireshockwave.ron b/assets/common/abilities/staff/fireshockwave.ron index fabf1b00b5..1a3c2c48bc 100644 --- a/assets/common/abilities/staff/fireshockwave.ron +++ b/assets/common/abilities/staff/fireshockwave.ron @@ -4,6 +4,7 @@ Shockwave( swing_duration: 100, recover_duration: 300, damage: 200, + poise_damage: 0, knockback: Away(25.0), shockwave_angle: 360.0, shockwave_vertical_angle: 90.0, @@ -11,4 +12,4 @@ Shockwave( shockwave_duration: 500, requires_ground: false, move_efficiency: 0.1, -) \ No newline at end of file +) diff --git a/assets/common/abilities/sword/dash.ron b/assets/common/abilities/sword/dash.ron index 6ca2de60b7..355f9a44ee 100644 --- a/assets/common/abilities/sword/dash.ron +++ b/assets/common/abilities/sword/dash.ron @@ -2,6 +2,8 @@ DashMelee( energy_cost: 100, base_damage: 80, scaled_damage: 160, + base_poise_damage: 0, + scaled_poise_damage: 0, base_knockback: 8.0, scaled_knockback: 7.0, range: 5.0, diff --git a/assets/common/abilities/sword/spin.ron b/assets/common/abilities/sword/spin.ron index 64edbfb839..2b1e09dbcd 100644 --- a/assets/common/abilities/sword/spin.ron +++ b/assets/common/abilities/sword/spin.ron @@ -3,6 +3,7 @@ SpinMelee( swing_duration: 400, recover_duration: 500, base_damage: 160, + base_poise_damage: 0, knockback: 10.0, range: 3.5, energy_cost: 150, @@ -11,4 +12,4 @@ SpinMelee( is_interruptible: true, forward_speed: 1.0, num_spins: 3, -) \ No newline at end of file +) diff --git a/assets/common/abilities/sword/triplestrike.ron b/assets/common/abilities/sword/triplestrike.ron index ab19e0fd43..ad1cbd6c83 100644 --- a/assets/common/abilities/sword/triplestrike.ron +++ b/assets/common/abilities/sword/triplestrike.ron @@ -4,6 +4,8 @@ ComboMelee( stage: 1, base_damage: 100, damage_increase: 10, + base_poise_damage: 0, + poise_damage_increase: 0, knockback: 10.0, range: 4.0, angle: 30.0, @@ -16,6 +18,8 @@ ComboMelee( stage: 2, base_damage: 80, damage_increase: 15, + base_poise_damage: 0, + poise_damage_increase: 0, knockback: 12.0, range: 3.5, angle: 180.0, @@ -28,6 +32,8 @@ ComboMelee( stage: 3, base_damage: 130, damage_increase: 20, + base_poise_damage: 0, + poise_damage_increase: 0, knockback: 14.0, range: 6.0, angle: 10.0, @@ -44,4 +50,4 @@ ComboMelee( max_speed_increase: 0.8, scales_from_combo: 2, is_interruptible: true, -) \ No newline at end of file +) diff --git a/assets/common/abilities/unique/beastclaws/basic.ron b/assets/common/abilities/unique/beastclaws/basic.ron index 77e860349c..cdc3a21430 100644 --- a/assets/common/abilities/unique/beastclaws/basic.ron +++ b/assets/common/abilities/unique/beastclaws/basic.ron @@ -5,6 +5,7 @@ BasicMelee( recover_duration: 250, knockback: 25.0, base_damage: 200, + base_poise_damage: 0, range: 5.0, max_angle: 120.0, -) \ No newline at end of file +) diff --git a/assets/common/abilities/unique/quadlowbasic/singlestrike.ron b/assets/common/abilities/unique/quadlowbasic/singlestrike.ron index dc6c1cd6b2..7a3066bb06 100644 --- a/assets/common/abilities/unique/quadlowbasic/singlestrike.ron +++ b/assets/common/abilities/unique/quadlowbasic/singlestrike.ron @@ -4,6 +4,8 @@ ComboMelee( stage: 1, base_damage: 100, damage_increase: 0, + base_poise_damage: 0, + poise_damage_increase: 0, knockback: 5.0, range: 3.5, angle: 60.0, @@ -20,4 +22,4 @@ ComboMelee( max_speed_increase: 0.0, scales_from_combo: 0, is_interruptible: false, -) \ No newline at end of file +) diff --git a/assets/common/abilities/unique/quadlowbasic/triplestrike.ron b/assets/common/abilities/unique/quadlowbasic/triplestrike.ron index 94beb996c4..fa9e4bcf23 100644 --- a/assets/common/abilities/unique/quadlowbasic/triplestrike.ron +++ b/assets/common/abilities/unique/quadlowbasic/triplestrike.ron @@ -4,6 +4,8 @@ ComboMelee( stage: 1, base_damage: 120, damage_increase: 0, + base_poise_damage: 0, + poise_damage_increase: 0, knockback: 10.0, range: 3.5, angle: 30.0, @@ -16,6 +18,8 @@ ComboMelee( stage: 2, base_damage: 80, damage_increase: 0, + base_poise_damage: 0, + poise_damage_increase: 0, knockback: 10.0, range: 3.5, angle: 30.0, @@ -28,6 +32,8 @@ ComboMelee( stage: 3, base_damage: 130, damage_increase: 0, + base_poise_damage: 0, + poise_damage_increase: 0, knockback: 10.0, range: 3.5, angle: 30.0, @@ -44,4 +50,4 @@ ComboMelee( max_speed_increase: 0.0, scales_from_combo: 0, is_interruptible: false, -) \ No newline at end of file +) diff --git a/assets/common/abilities/unique/quadlowbreathe/dash.ron b/assets/common/abilities/unique/quadlowbreathe/dash.ron index e5081de2ac..57709273c7 100644 --- a/assets/common/abilities/unique/quadlowbreathe/dash.ron +++ b/assets/common/abilities/unique/quadlowbreathe/dash.ron @@ -2,6 +2,8 @@ DashMelee( energy_cost: 0, base_damage: 150, scaled_damage: 110, + base_poise_damage: 0, + scaled_poise_damage: 0, base_knockback: 8.0, scaled_knockback: 17.0, range: 5.0, diff --git a/assets/common/abilities/unique/quadlowbreathe/triplestrike.ron b/assets/common/abilities/unique/quadlowbreathe/triplestrike.ron index dd78e2893c..1d4512be9a 100644 --- a/assets/common/abilities/unique/quadlowbreathe/triplestrike.ron +++ b/assets/common/abilities/unique/quadlowbreathe/triplestrike.ron @@ -4,6 +4,8 @@ ComboMelee( stage: 1, base_damage: 100, damage_increase: 0, + base_poise_damage: 0, + poise_damage_increase: 0, knockback: 10.0, range: 4.5, angle: 30.0, @@ -16,6 +18,8 @@ ComboMelee( stage: 2, base_damage: 80, damage_increase: 0, + base_poise_damage: 0, + poise_damage_increase: 0, knockback: 10.0, range: 3.5, angle: 30.0, @@ -28,6 +32,8 @@ ComboMelee( stage: 3, base_damage: 130, damage_increase: 0, + base_poise_damage: 0, + poise_damage_increase: 0, knockback: 10.0, range: 3.5, angle: 30.0, diff --git a/assets/common/abilities/unique/quadlowquick/dash.ron b/assets/common/abilities/unique/quadlowquick/dash.ron index 21b070b83e..7a0faf4799 100644 --- a/assets/common/abilities/unique/quadlowquick/dash.ron +++ b/assets/common/abilities/unique/quadlowquick/dash.ron @@ -2,6 +2,8 @@ DashMelee( energy_cost: 0, base_damage: 30, scaled_damage: 10, + base_poise_damage: 0, + scaled_poise_damage: 0, base_knockback: 8.0, scaled_knockback: 7.0, range: 2.0, diff --git a/assets/common/abilities/unique/quadlowquick/quadstrike.ron b/assets/common/abilities/unique/quadlowquick/quadstrike.ron index 36700b4d3a..0defac6e9b 100644 --- a/assets/common/abilities/unique/quadlowquick/quadstrike.ron +++ b/assets/common/abilities/unique/quadlowquick/quadstrike.ron @@ -4,6 +4,8 @@ ComboMelee( stage: 1, base_damage: 100, damage_increase: 0, + base_poise_damage: 0, + poise_damage_increase: 0, knockback: 2.0, range: 3.5, angle: 30.0, @@ -16,6 +18,8 @@ ComboMelee( stage: 2, base_damage: 130, damage_increase: 0, + base_poise_damage: 0, + poise_damage_increase: 0, knockback: 2.0, range: 3.5, angle: 30.0, @@ -28,6 +32,8 @@ ComboMelee( stage: 3, base_damage: 130, damage_increase: 0, + base_poise_damage: 0, + poise_damage_increase: 0, knockback: 2.0, range: 3.5, angle: 30.0, @@ -40,6 +46,8 @@ ComboMelee( stage: 4, base_damage: 130, damage_increase: 0, + base_poise_damage: 0, + poise_damage_increase: 0, knockback: 8.0, range: 3.5, angle: 30.0, @@ -56,4 +64,4 @@ ComboMelee( max_speed_increase: 0.0, scales_from_combo: 0, is_interruptible: false, -) \ No newline at end of file +) diff --git a/assets/common/abilities/unique/quadlowranged/singlestrike.ron b/assets/common/abilities/unique/quadlowranged/singlestrike.ron index bd24b84ae8..d3711a4c46 100644 --- a/assets/common/abilities/unique/quadlowranged/singlestrike.ron +++ b/assets/common/abilities/unique/quadlowranged/singlestrike.ron @@ -4,6 +4,8 @@ ComboMelee( stage: 1, base_damage: 60, damage_increase: 0, + base_poise_damage: 0, + poise_damage_increase: 0, knockback: 5.0, range: 3.5, angle: 60.0, @@ -20,4 +22,4 @@ ComboMelee( max_speed_increase: 0.0, scales_from_combo: 0, is_interruptible: false, -) \ No newline at end of file +) diff --git a/assets/common/abilities/unique/quadlowtail/charged.ron b/assets/common/abilities/unique/quadlowtail/charged.ron index a5f1890962..b4a8c0006c 100644 --- a/assets/common/abilities/unique/quadlowtail/charged.ron +++ b/assets/common/abilities/unique/quadlowtail/charged.ron @@ -3,6 +3,8 @@ ChargedMelee( energy_drain: 0, initial_damage: 160, scaled_damage: 40, + initial_poise_damage: 0, + scaled_poise_damage: 0, initial_knockback: 10.0, scaled_knockback: 20.0, range: 6.0, diff --git a/assets/common/abilities/unique/quadlowtail/triplestrike.ron b/assets/common/abilities/unique/quadlowtail/triplestrike.ron index 14b1f9bb86..133304cba4 100644 --- a/assets/common/abilities/unique/quadlowtail/triplestrike.ron +++ b/assets/common/abilities/unique/quadlowtail/triplestrike.ron @@ -4,6 +4,8 @@ ComboMelee( stage: 1, base_damage: 100, damage_increase: 0, + base_poise_damage: 0, + poise_damage_increase: 0, knockback: 10.0, range: 3.5, angle: 30.0, @@ -16,6 +18,8 @@ ComboMelee( stage: 2, base_damage: 120, damage_increase: 0, + base_poise_damage: 0, + poise_damage_increase: 0, knockback: 10.0, range: 3.5, angle: 30.0, @@ -28,6 +32,8 @@ ComboMelee( stage: 3, base_damage: 130, damage_increase: 0, + base_poise_damage: 0, + poise_damage_increase: 0, knockback: 10.0, range: 3.5, angle: 30.0, @@ -44,4 +50,4 @@ ComboMelee( max_speed_increase: 0.0, scales_from_combo: 0, is_interruptible: false, -) \ No newline at end of file +) diff --git a/assets/common/abilities/unique/quadmedbasic/singlestrike.ron b/assets/common/abilities/unique/quadmedbasic/singlestrike.ron index 082dfc218f..3138f0e7cd 100644 --- a/assets/common/abilities/unique/quadmedbasic/singlestrike.ron +++ b/assets/common/abilities/unique/quadmedbasic/singlestrike.ron @@ -4,6 +4,8 @@ ComboMelee( stage: 1, base_damage: 120, damage_increase: 0, + base_poise_damage: 0, + poise_damage_increase: 0, knockback: 5.0, range: 3.5, angle: 60.0, diff --git a/assets/common/abilities/unique/quadmedbasic/triplestrike.ron b/assets/common/abilities/unique/quadmedbasic/triplestrike.ron index 6588856b0d..7479271ed7 100644 --- a/assets/common/abilities/unique/quadmedbasic/triplestrike.ron +++ b/assets/common/abilities/unique/quadmedbasic/triplestrike.ron @@ -4,6 +4,8 @@ ComboMelee( stage: 1, base_damage: 120, damage_increase: 0, + base_poise_damage: 0, + poise_damage_increase: 0, knockback: 10.0, range: 3.5, angle: 30.0, @@ -16,6 +18,8 @@ ComboMelee( stage: 2, base_damage: 120, damage_increase: 0, + base_poise_damage: 0, + poise_damage_increase: 0, knockback: 10.0, range: 3.5, angle: 30.0, @@ -28,6 +32,8 @@ ComboMelee( stage: 3, base_damage: 120, damage_increase: 0, + base_poise_damage: 0, + poise_damage_increase: 0, knockback: 10.0, range: 3.5, angle: 30.0, diff --git a/assets/common/abilities/unique/quadmedcharge/dash.ron b/assets/common/abilities/unique/quadmedcharge/dash.ron index 2e258451b7..9f4acc580f 100644 --- a/assets/common/abilities/unique/quadmedcharge/dash.ron +++ b/assets/common/abilities/unique/quadmedcharge/dash.ron @@ -2,6 +2,8 @@ DashMelee( energy_cost: 0, base_damage: 150, scaled_damage: 40, + base_poise_damage: 0, + scaled_poise_damage: 0, base_knockback: 8.0, scaled_knockback: 17.0, range: 4.0, diff --git a/assets/common/abilities/unique/quadmedcharge/doublestrike.ron b/assets/common/abilities/unique/quadmedcharge/doublestrike.ron index 51a8bf0985..850d652f47 100644 --- a/assets/common/abilities/unique/quadmedcharge/doublestrike.ron +++ b/assets/common/abilities/unique/quadmedcharge/doublestrike.ron @@ -4,6 +4,8 @@ ComboMelee( stage: 1, base_damage: 100, damage_increase: 0, + base_poise_damage: 0, + poise_damage_increase: 0, knockback: 10.0, range: 3.5, angle: 30.0, @@ -16,6 +18,8 @@ ComboMelee( stage: 2, base_damage: 80, damage_increase: 0, + base_poise_damage: 0, + poise_damage_increase: 0, knockback: 10.0, range: 3.5, angle: 30.0, diff --git a/assets/common/abilities/unique/quadmedhoof/basic.ron b/assets/common/abilities/unique/quadmedhoof/basic.ron index f4fa2f61b5..8e517a4f7f 100644 --- a/assets/common/abilities/unique/quadmedhoof/basic.ron +++ b/assets/common/abilities/unique/quadmedhoof/basic.ron @@ -4,7 +4,8 @@ BasicMelee( swing_duration: 500, recover_duration: 350, base_damage: 130, + base_poise_damage: 0, knockback: 25.0, range: 3.0, max_angle: 120.0, -) \ No newline at end of file +) diff --git a/assets/common/abilities/unique/quadmedjump/doublestrike.ron b/assets/common/abilities/unique/quadmedjump/doublestrike.ron index c2c3fa1f4a..68c8084ce9 100644 --- a/assets/common/abilities/unique/quadmedjump/doublestrike.ron +++ b/assets/common/abilities/unique/quadmedjump/doublestrike.ron @@ -4,6 +4,8 @@ ComboMelee( stage: 1, base_damage: 100, damage_increase: 0, + base_poise_damage: 0, + poise_damage_increase: 0, knockback: 8.0, range: 3.5, angle: 30.0, @@ -16,6 +18,8 @@ ComboMelee( stage: 2, base_damage: 80, damage_increase: 0, + base_poise_damage: 0, + poise_damage_increase: 0, knockback: 8.0, range: 3.5, angle: 30.0, diff --git a/assets/common/abilities/unique/quadmedjump/leap.ron b/assets/common/abilities/unique/quadmedjump/leap.ron index 468dda4ebb..bf6c78c3ce 100644 --- a/assets/common/abilities/unique/quadmedjump/leap.ron +++ b/assets/common/abilities/unique/quadmedjump/leap.ron @@ -5,6 +5,7 @@ LeapMelee( swing_duration: 75, recover_duration: 200, base_damage: 240, + base_poise_damage: 0, knockback: 12.0, range: 4.5, max_angle: 180.0, diff --git a/assets/common/abilities/unique/quadmedjump/quickleap.ron b/assets/common/abilities/unique/quadmedjump/quickleap.ron index c18f6e729a..94b614ad12 100644 --- a/assets/common/abilities/unique/quadmedjump/quickleap.ron +++ b/assets/common/abilities/unique/quadmedjump/quickleap.ron @@ -5,6 +5,7 @@ LeapMelee( swing_duration: 75, recover_duration: 125, base_damage: 120, + base_poise_damage: 0, knockback: 7.0, range: 4.5, max_angle: 180.0, diff --git a/assets/common/abilities/unique/quadmedquick/dash.ron b/assets/common/abilities/unique/quadmedquick/dash.ron index 325088f2c7..c0cd1dc9fc 100644 --- a/assets/common/abilities/unique/quadmedquick/dash.ron +++ b/assets/common/abilities/unique/quadmedquick/dash.ron @@ -2,6 +2,8 @@ DashMelee( energy_cost: 0, base_damage: 130, scaled_damage: 20, + base_poise_damage: 0, + scaled_poise_damage: 0, base_knockback: 8.0, scaled_knockback: 7.0, range: 2.0, diff --git a/assets/common/abilities/unique/quadmedquick/triplestrike.ron b/assets/common/abilities/unique/quadmedquick/triplestrike.ron index 06057f3178..b396bedc0d 100644 --- a/assets/common/abilities/unique/quadmedquick/triplestrike.ron +++ b/assets/common/abilities/unique/quadmedquick/triplestrike.ron @@ -4,6 +4,8 @@ ComboMelee( stage: 1, base_damage: 150, damage_increase: 0, + base_poise_damage: 0, + poise_damage_increase: 0, knockback: 5.0, range: 3.5, angle: 60.0, @@ -16,6 +18,8 @@ ComboMelee( stage: 2, base_damage: 150, damage_increase: 0, + base_poise_damage: 0, + poise_damage_increase: 0, knockback: 5.0, range: 3.5, angle: 60.0, @@ -28,6 +32,8 @@ ComboMelee( stage: 3, base_damage: 150, damage_increase: 0, + base_poise_damage: 0, + poise_damage_increase: 0, knockback: 5.0, range: 3.5, angle: 60.0, diff --git a/assets/common/abilities/unique/quadsmallbasic/singlestrike.ron b/assets/common/abilities/unique/quadsmallbasic/singlestrike.ron index 3870ba9037..0526899e60 100644 --- a/assets/common/abilities/unique/quadsmallbasic/singlestrike.ron +++ b/assets/common/abilities/unique/quadsmallbasic/singlestrike.ron @@ -4,6 +4,8 @@ ComboMelee( stage: 1, base_damage: 30, damage_increase: 0, + base_poise_damage: 0, + poise_damage_increase: 0, knockback: 5.0, range: 3.5, angle: 60.0, @@ -20,4 +22,4 @@ ComboMelee( max_speed_increase: 0.0, scales_from_combo: 0, is_interruptible: false, -) \ No newline at end of file +) diff --git a/assets/common/abilities/unique/stonegolemfist/basic.ron b/assets/common/abilities/unique/stonegolemfist/basic.ron index 2ce4d66744..2dc89b8cac 100644 --- a/assets/common/abilities/unique/stonegolemfist/basic.ron +++ b/assets/common/abilities/unique/stonegolemfist/basic.ron @@ -5,6 +5,7 @@ BasicMelee( recover_duration: 250, knockback: 25.0, base_damage: 200, + base_poise_damage: 0, range: 5.0, max_angle: 120.0, -) \ No newline at end of file +) diff --git a/assets/common/abilities/unique/stonegolemfist/shockwave.ron b/assets/common/abilities/unique/stonegolemfist/shockwave.ron index d161a02d62..7945e5d9c3 100644 --- a/assets/common/abilities/unique/stonegolemfist/shockwave.ron +++ b/assets/common/abilities/unique/stonegolemfist/shockwave.ron @@ -4,6 +4,7 @@ Shockwave( swing_duration: 200, recover_duration: 800, damage: 500, + poise_damage: 0, knockback: TowardsUp(40.0), shockwave_angle: 90.0, shockwave_vertical_angle: 90.0, @@ -11,4 +12,4 @@ Shockwave( shockwave_duration: 1000, requires_ground: true, move_efficiency: 0.05, -) \ No newline at end of file +) diff --git a/assets/common/abilities/unique/stonegolemfist/spin.ron b/assets/common/abilities/unique/stonegolemfist/spin.ron index 06f2756ffb..fb106e851f 100644 --- a/assets/common/abilities/unique/stonegolemfist/spin.ron +++ b/assets/common/abilities/unique/stonegolemfist/spin.ron @@ -3,6 +3,7 @@ SpinMelee( swing_duration: 300, recover_duration: 100, base_damage: 500, + base_poise_damage: 0, knockback: 0.0, range: 7.5, energy_cost: 0, @@ -11,4 +12,4 @@ SpinMelee( is_interruptible: false, forward_speed: 0.0, num_spins: 1, -) \ No newline at end of file +) diff --git a/assets/common/abilities/unique/theropodbasic/singlestrike.ron b/assets/common/abilities/unique/theropodbasic/singlestrike.ron index 2e6da823b3..8c84abc5da 100644 --- a/assets/common/abilities/unique/theropodbasic/singlestrike.ron +++ b/assets/common/abilities/unique/theropodbasic/singlestrike.ron @@ -4,6 +4,8 @@ ComboMelee( stage: 1, base_damage: 150, damage_increase: 0, + base_poise_damage: 0, + poise_damage_increase: 0, knockback: 5.0, range: 7.5, angle: 60.0, @@ -20,4 +22,4 @@ ComboMelee( max_speed_increase: 0.0, scales_from_combo: 0, is_interruptible: false, -) \ No newline at end of file +) diff --git a/assets/common/abilities/unique/theropodbasic/triplestrike.ron b/assets/common/abilities/unique/theropodbasic/triplestrike.ron index 92127a6454..839749b65b 100644 --- a/assets/common/abilities/unique/theropodbasic/triplestrike.ron +++ b/assets/common/abilities/unique/theropodbasic/triplestrike.ron @@ -4,6 +4,8 @@ ComboMelee( stage: 1, base_damage: 170, damage_increase: 0, + base_poise_damage: 0, + poise_damage_increase: 0, knockback: 10.0, range: 7.5, angle: 30.0, @@ -16,6 +18,8 @@ ComboMelee( stage: 2, base_damage: 190, damage_increase: 0, + base_poise_damage: 0, + poise_damage_increase: 0, knockback: 10.0, range: 5.5, angle: 30.0, @@ -28,6 +32,8 @@ ComboMelee( stage: 3, base_damage: 230, damage_increase: 0, + base_poise_damage: 0, + poise_damage_increase: 0, knockback: 10.0, range: 5.5, angle: 30.0, diff --git a/assets/common/abilities/unique/theropodbird/singlestrike.ron b/assets/common/abilities/unique/theropodbird/singlestrike.ron index 0b9a84f80e..56f8b3b137 100644 --- a/assets/common/abilities/unique/theropodbird/singlestrike.ron +++ b/assets/common/abilities/unique/theropodbird/singlestrike.ron @@ -4,6 +4,8 @@ ComboMelee( stage: 1, base_damage: 150, damage_increase: 0, + base_poise_damage: 0, + poise_damage_increase: 0, knockback: 5.0, range: 5.5, angle: 5.0, @@ -20,4 +22,4 @@ ComboMelee( max_speed_increase: 0.0, scales_from_combo: 0, is_interruptible: false, -) \ No newline at end of file +) diff --git a/assets/common/abilities/unique/theropodbird/triplestrike.ron b/assets/common/abilities/unique/theropodbird/triplestrike.ron index cf59834a8b..853c2583a2 100644 --- a/assets/common/abilities/unique/theropodbird/triplestrike.ron +++ b/assets/common/abilities/unique/theropodbird/triplestrike.ron @@ -4,6 +4,8 @@ ComboMelee( stage: 1, base_damage: 170, damage_increase: 0, + base_poise_damage: 0, + poise_damage_increase: 0, knockback: 10.0, range: 4.5, angle: 5.0, @@ -16,6 +18,8 @@ ComboMelee( stage: 2, base_damage: 190, damage_increase: 0, + base_poise_damage: 0, + poise_damage_increase: 0, knockback: 10.0, range: 4.0, angle: 10.0, @@ -28,6 +32,8 @@ ComboMelee( stage: 3, base_damage: 230, damage_increase: 0, + base_poise_damage: 0, + poise_damage_increase: 0, knockback: 10.0, range: 4.0, angle: 10.0, diff --git a/assets/common/items/armor/back/admin.ron b/assets/common/items/armor/back/admin.ron index 1a6bcd9759..cd009c926a 100644 --- a/assets/common/items/armor/back/admin.ron +++ b/assets/common/items/armor/back/admin.ron @@ -1,12 +1,12 @@ ItemDef( - name: "Admin's Cape", + name: "Admin\'s Cape", description: "With great power comes\ngreat responsibility.", - kind: Armor( - ( - kind: Back("Admin"), - stats: ( - protection: Normal(0.0)), - ) - ), + kind: Armor(( + kind: Back("Admin"), + stats: ( + protection: Invincible, + poise_resilience: Invincible, + ), + )), quality: Debug, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/back/backpack_0.ron b/assets/common/items/armor/back/backpack_0.ron index 0b623b4fcc..26d49a30d9 100644 --- a/assets/common/items/armor/back/backpack_0.ron +++ b/assets/common/items/armor/back/backpack_0.ron @@ -1,13 +1,12 @@ ItemDef( - name: "Traveler's Backpack", + name: "Traveler\'s Backpack", description: "Comfort and capacity united.", - kind: Armor( - ( - kind: Back("Backpack0"), - stats: ( - protection: Normal(0.0)), - ) - ), + kind: Armor(( + kind: Back("Backpack0"), + stats: ( + protection: Normal(0.0), + poise_resilience: Normal(0.0), + ), + )), quality: High, - slots: 18, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/back/dungeon_purple-0.ron b/assets/common/items/armor/back/dungeon_purple-0.ron index 943df27e07..2a9fdd7b13 100644 --- a/assets/common/items/armor/back/dungeon_purple-0.ron +++ b/assets/common/items/armor/back/dungeon_purple-0.ron @@ -1,12 +1,12 @@ ItemDef( name: "Purple Cultist Cape", description: "Smells like dark magic and candles.", - kind: Armor( - ( - kind: Back("DungPurp0"), - stats: ( - protection: Normal(3.0)), - ) - ), + kind: Armor(( + kind: Back("DungPurp0"), + stats: ( + protection: Normal(3.0), + poise_resilience: Normal(1.0), + ), + )), quality: Epic, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/back/leather_adventurer.ron b/assets/common/items/armor/back/leather_adventurer.ron index 90dde99935..7fd045613d 100644 --- a/assets/common/items/armor/back/leather_adventurer.ron +++ b/assets/common/items/armor/back/leather_adventurer.ron @@ -1,12 +1,12 @@ ItemDef( name: "Agile Cape", - description: "'Tightly packed pieces of leather to endure all weather.'", - kind: Armor( - ( - kind: Back("Short2"), - stats: ( - protection: Normal(0.2)), - ) - ), + description: "\'Tightly packed pieces of leather to endure all weather.\'", + kind: Armor(( + kind: Back("Short2"), + stats: ( + protection: Normal(0.2), + poise_resilience: Normal(0.1), + ), + )), quality: Common, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/back/short_0.ron b/assets/common/items/armor/back/short_0.ron index 17f4858f70..746a2eec73 100644 --- a/assets/common/items/armor/back/short_0.ron +++ b/assets/common/items/armor/back/short_0.ron @@ -1,13 +1,12 @@ ItemDef( name: "Short leather Cape", description: "Probably made of the finest leather.", - kind: Armor( - ( - kind: Back("Short0"), - stats: ( - protection: Normal(0.3) - ), - ) - ), + kind: Armor(( + kind: Back("Short0"), + stats: ( + protection: Normal(0.3), + poise_resilience: Normal(0.5), + ), + )), quality: Moderate, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/back/short_1.ron b/assets/common/items/armor/back/short_1.ron index 556a4683c4..859ef261bb 100644 --- a/assets/common/items/armor/back/short_1.ron +++ b/assets/common/items/armor/back/short_1.ron @@ -1,12 +1,12 @@ ItemDef( name: "Green Blanket", description: "Keeps your shoulders warm.", - kind: Armor( - ( - kind: Back("Short1"), - stats: ( - protection: Normal(0.1)), - ) - ), + kind: Armor(( + kind: Back("Short1"), + stats: ( + protection: Normal(0.1), + poise_resilience: Normal(0.2), + ), + )), quality: Common, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/back/velorite_mage_0.ron b/assets/common/items/armor/back/velorite_mage_0.ron index 76fda525bc..0034156b76 100644 --- a/assets/common/items/armor/back/velorite_mage_0.ron +++ b/assets/common/items/armor/back/velorite_mage_0.ron @@ -1,12 +1,12 @@ ItemDef( name: "Velorite Battlemage Cloak", description: "Keeps your shoulders warm.", - kind: Armor( - ( - kind: Back("VeloriteMage0"), - stats: ( - protection: Normal(2.8)), - ) - ), + kind: Armor(( + kind: Back("VeloriteMage0"), + stats: ( + protection: Normal(2.8), + poise_resilience: Normal(2.0), + ), + )), quality: High, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/back/warlock.ron b/assets/common/items/armor/back/warlock.ron index aefb29bf8f..b9ebf9f592 100644 --- a/assets/common/items/armor/back/warlock.ron +++ b/assets/common/items/armor/back/warlock.ron @@ -1,12 +1,12 @@ ItemDef( name: "Warlock cape", description: "Belong to a mighty warlock.", - kind: Armor( - ( - kind: Back("Warlock"), - stats: ( - protection: Normal(4.0)), - ) - ), + kind: Armor(( + kind: Back("Warlock"), + stats: ( + protection: Normal(4.0), + poise_resilience: Normal(3.0), + ), + )), quality: Moderate, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/back/warlord.ron b/assets/common/items/armor/back/warlord.ron index c1bf1dad60..119b123c76 100644 --- a/assets/common/items/armor/back/warlord.ron +++ b/assets/common/items/armor/back/warlord.ron @@ -1,12 +1,12 @@ ItemDef( name: "Warlord cape", description: "Belong to a mighty warlord.", - kind: Armor( - ( - kind: Back("Warlord"), - stats: ( - protection: Normal(4.0)), - ) - ), + kind: Armor(( + kind: Back("Warlord"), + stats: ( + protection: Normal(4.0), + poise_resilience: Normal(5.0), + ), + )), quality: Moderate, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/bag/heavy_seabag.ron b/assets/common/items/armor/bag/heavy_seabag.ron index d679a2070f..985a3d19a8 100644 --- a/assets/common/items/armor/bag/heavy_seabag.ron +++ b/assets/common/items/armor/bag/heavy_seabag.ron @@ -4,7 +4,10 @@ ItemDef( kind: Armor( ( kind: Bag("BluePouch"), - stats: (protection: Normal(0.0)), + stats: ( + protection: Normal(0.0), + poise_resilience: Normal(0.0), + ), ) ), quality: Moderate, diff --git a/assets/common/items/armor/bag/knitted_red_pouch.ron b/assets/common/items/armor/bag/knitted_red_pouch.ron index a3829eee99..1d0dfb459f 100644 --- a/assets/common/items/armor/bag/knitted_red_pouch.ron +++ b/assets/common/items/armor/bag/knitted_red_pouch.ron @@ -4,7 +4,10 @@ ItemDef( kind: Armor( ( kind: Bag("RedSmall"), - stats: (protection: Normal(0.0)), + stats: ( + protection: Normal(0.0), + poise_resilience: Normal(0.0), + ), ) ), quality: Moderate, diff --git a/assets/common/items/armor/bag/liana_kit.ron b/assets/common/items/armor/bag/liana_kit.ron index 6bebf02b17..1ec94e42ff 100644 --- a/assets/common/items/armor/bag/liana_kit.ron +++ b/assets/common/items/armor/bag/liana_kit.ron @@ -4,7 +4,10 @@ ItemDef( kind: Armor( ( kind: Bag("GreenMid"), - stats: (protection: Normal(0.0)), + stats: ( + protection: Normal(0.0), + poise_resilience: Normal(0.0), + ), ) ), quality: Moderate, diff --git a/assets/common/items/armor/bag/mindflayer_spellbag.ron b/assets/common/items/armor/bag/mindflayer_spellbag.ron index c9962ce616..5a3cd0d5b0 100644 --- a/assets/common/items/armor/bag/mindflayer_spellbag.ron +++ b/assets/common/items/armor/bag/mindflayer_spellbag.ron @@ -4,7 +4,10 @@ ItemDef( kind: Armor( ( kind: Bag("PurpleSkull"), - stats: (protection: Normal(0.0)), + stats: ( + protection: Normal(0.0), + poise_resilience: Normal(0.0), + ), ) ), quality: Epic, diff --git a/assets/common/items/armor/bag/reliable_backpack.ron b/assets/common/items/armor/bag/reliable_backpack.ron index 732bb75e69..5b219f4531 100644 --- a/assets/common/items/armor/bag/reliable_backpack.ron +++ b/assets/common/items/armor/bag/reliable_backpack.ron @@ -4,7 +4,10 @@ ItemDef( kind: Armor( ( kind: Bag("LeatherLarge"), - stats: (protection: Normal(0.0)), + stats: ( + protection: Normal(0.0), + poise_resilience: Normal(0.0), + ), ) ), quality: High, diff --git a/assets/common/items/armor/bag/soulkeeper_cursed.ron b/assets/common/items/armor/bag/soulkeeper_cursed.ron index 237296d588..a465d21901 100644 --- a/assets/common/items/armor/bag/soulkeeper_cursed.ron +++ b/assets/common/items/armor/bag/soulkeeper_cursed.ron @@ -4,7 +4,10 @@ ItemDef( kind: Armor( ( kind: Bag("RedFace"), - stats: (protection: Normal(0.0)), + stats: ( + protection: Normal(0.0), + poise_resilience: Normal(0.0), + ), ) ), quality: Legendary, diff --git a/assets/common/items/armor/bag/soulkeeper_pure.ron b/assets/common/items/armor/bag/soulkeeper_pure.ron index 7cb1b49c62..fd5977c10d 100644 --- a/assets/common/items/armor/bag/soulkeeper_pure.ron +++ b/assets/common/items/armor/bag/soulkeeper_pure.ron @@ -4,7 +4,10 @@ ItemDef( kind: Armor( ( kind: Bag("BlueFace"), - stats: (protection: Normal(0.0)), + stats: ( + protection: Normal(0.0), + poise_resilience: Normal(0.0), + ), ) ), quality: Legendary, diff --git a/assets/common/items/armor/bag/sturdy_red_backpack.ron b/assets/common/items/armor/bag/sturdy_red_backpack.ron index e46a915ef4..cadd2570eb 100644 --- a/assets/common/items/armor/bag/sturdy_red_backpack.ron +++ b/assets/common/items/armor/bag/sturdy_red_backpack.ron @@ -4,7 +4,10 @@ ItemDef( kind: Armor( ( kind: Bag("RedLarge"), - stats: (protection: Normal(0.0)), + stats: ( + protection: Normal(0.0), + poise_resilience: Normal(0.0), + ), ) ), quality: High, diff --git a/assets/common/items/armor/bag/tiny_leather_pouch.ron b/assets/common/items/armor/bag/tiny_leather_pouch.ron index 21d195fdca..994f908241 100644 --- a/assets/common/items/armor/bag/tiny_leather_pouch.ron +++ b/assets/common/items/armor/bag/tiny_leather_pouch.ron @@ -4,7 +4,10 @@ ItemDef( kind: Armor( ( kind: Bag("LeatherSmall"), - stats: (protection: Normal(0.0)), + stats: ( + protection: Normal(0.0), + poise_resilience: Normal(0.0), + ), ) ), quality: Common, diff --git a/assets/common/items/armor/bag/tiny_red_pouch.ron b/assets/common/items/armor/bag/tiny_red_pouch.ron index e8b944c994..7e68e045d2 100644 --- a/assets/common/items/armor/bag/tiny_red_pouch.ron +++ b/assets/common/items/armor/bag/tiny_red_pouch.ron @@ -4,7 +4,10 @@ ItemDef( kind: Armor( ( kind: Bag("RedTiny"), - stats: (protection: Normal(0.0)), + stats: ( + protection: Normal(0.0), + poise_resilience: Normal(0.0), + ), ) ), quality: Common, diff --git a/assets/common/items/armor/bag/troll_hide_pack.ron b/assets/common/items/armor/bag/troll_hide_pack.ron index 242a32dc4d..1f2163343f 100644 --- a/assets/common/items/armor/bag/troll_hide_pack.ron +++ b/assets/common/items/armor/bag/troll_hide_pack.ron @@ -4,7 +4,10 @@ ItemDef( kind: Armor( ( kind: Bag("GreenLarge"), - stats: (protection: Normal(0.0)), + stats: ( + protection: Normal(0.0), + poise_resilience: Normal(0.0), + ), ) ), quality: High, diff --git a/assets/common/items/armor/bag/woven_red_bag.ron b/assets/common/items/armor/bag/woven_red_bag.ron index fea605d7e3..cfe3fbe18c 100644 --- a/assets/common/items/armor/bag/woven_red_bag.ron +++ b/assets/common/items/armor/bag/woven_red_bag.ron @@ -4,7 +4,10 @@ ItemDef( kind: Armor( ( kind: Bag("RedMed"), - stats: (protection: Normal(0.0)), + stats: ( + protection: Normal(0.0), + poise_resilience: Normal(0.0), + ), ) ), quality: Moderate, diff --git a/assets/common/items/armor/belt/assassin.ron b/assets/common/items/armor/belt/assassin.ron index bc784b4abe..9b8861a8ae 100644 --- a/assets/common/items/armor/belt/assassin.ron +++ b/assets/common/items/armor/belt/assassin.ron @@ -1,13 +1,12 @@ ItemDef( name: "Assassin Belt", description: "Only the best for a member of the creed.", - kind: Armor( - ( - kind: Belt("Assassin"), - stats: ( - protection: Normal(2.0) - ), - ) - ), + kind: Armor(( + kind: Belt("Assassin"), + stats: ( + protection: Normal(2.0), + poise_resilience: Normal(1.0), + ), + )), quality: Moderate, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/belt/bonerattler.ron b/assets/common/items/armor/belt/bonerattler.ron index e87969c5d8..911b00698c 100644 --- a/assets/common/items/armor/belt/bonerattler.ron +++ b/assets/common/items/armor/belt/bonerattler.ron @@ -1,12 +1,12 @@ ItemDef( name: "Bonerattler Belt", description: "Sections of vertebrae fastened together with hide and a bonerattler eye for the buckle.", - kind: Armor( - ( - kind: Belt("Bonerattler"), - stats: ( - protection: Normal(3.0)), - ) - ), + kind: Armor(( + kind: Belt("Bonerattler"), + stats: ( + protection: Normal(3.0), + poise_resilience: Normal(5.0), + ), + )), quality: High, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/belt/cloth_blue_0.ron b/assets/common/items/armor/belt/cloth_blue_0.ron index fe96d5508b..63f94481b8 100644 --- a/assets/common/items/armor/belt/cloth_blue_0.ron +++ b/assets/common/items/armor/belt/cloth_blue_0.ron @@ -1,12 +1,12 @@ ItemDef( name: "Blue Linen Belt", description: "A stylish rough fabric belt, dyed blue.", - kind: Armor( - ( - kind: Belt("ClothBlue0"), - stats: ( - protection: Normal(1.0)), - ) - ), + kind: Armor(( + kind: Belt("ClothBlue0"), + stats: ( + protection: Normal(1.0), + poise_resilience: Normal(1.0), + ), + )), quality: Common, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/belt/cloth_green_0.ron b/assets/common/items/armor/belt/cloth_green_0.ron index 31482c185c..382fd7d56f 100644 --- a/assets/common/items/armor/belt/cloth_green_0.ron +++ b/assets/common/items/armor/belt/cloth_green_0.ron @@ -1,12 +1,12 @@ ItemDef( name: "Green Linen Belt", description: "A stylish rough fabric belt, dyed green.", - kind: Armor( - ( - kind: Belt("ClothGreen0"), - stats: ( - protection: Normal(1.0)), - ) - ), + kind: Armor(( + kind: Belt("ClothGreen0"), + stats: ( + protection: Normal(1.0), + poise_resilience: Normal(1.0), + ), + )), quality: Common, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/belt/cloth_purple_0.ron b/assets/common/items/armor/belt/cloth_purple_0.ron index 06a4797cb0..19dcf4a0b8 100644 --- a/assets/common/items/armor/belt/cloth_purple_0.ron +++ b/assets/common/items/armor/belt/cloth_purple_0.ron @@ -1,12 +1,12 @@ ItemDef( name: "Purple Linen Belt", description: "A stylish rough fabric belt, dyed purple.", - kind: Armor( - ( - kind: Belt("ClothPurple0"), - stats: ( - protection: Normal(1.0)), - ) - ), + kind: Armor(( + kind: Belt("ClothPurple0"), + stats: ( + protection: Normal(1.0), + poise_resilience: Normal(1.0), + ), + )), quality: Common, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/belt/cultist_belt.ron b/assets/common/items/armor/belt/cultist_belt.ron index ba621bf791..b1e593be4c 100644 --- a/assets/common/items/armor/belt/cultist_belt.ron +++ b/assets/common/items/armor/belt/cultist_belt.ron @@ -1,12 +1,12 @@ ItemDef( name: "Cultist Belt", description: "Ceremonial attire used by members.", - kind: Armor( - ( - kind: Belt("Cultist"), - stats: ( - protection: Normal(6.0)), - ) - ), + kind: Armor(( + kind: Belt("Cultist"), + stats: ( + protection: Normal(6.0), + poise_resilience: Normal(5.0), + ), + )), quality: Epic, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/belt/druid.ron b/assets/common/items/armor/belt/druid.ron index c46390ef68..74b5b2c6b4 100644 --- a/assets/common/items/armor/belt/druid.ron +++ b/assets/common/items/armor/belt/druid.ron @@ -1,13 +1,12 @@ ItemDef( - name: "Druid's Belt", + name: "Druid\'s Belt", description: "Twisted vines to keep everything secure.", - kind: Armor( - ( - kind: Belt("Druid"), - stats: ( - protection: Normal(2.0) - ), - ) - ), + kind: Armor(( + kind: Belt("Druid"), + stats: ( + protection: Normal(2.0), + poise_resilience: Normal(2.0), + ), + )), quality: Moderate, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/belt/leather_0.ron b/assets/common/items/armor/belt/leather_0.ron index 237baffb3e..c577366f77 100644 --- a/assets/common/items/armor/belt/leather_0.ron +++ b/assets/common/items/armor/belt/leather_0.ron @@ -1,12 +1,12 @@ ItemDef( name: "Swift Belt", description: "Swift like the wind.", - kind: Armor( - ( - kind: Belt("Leather0"), - stats: ( - protection: Normal(1.0)), - ) - ), + kind: Armor(( + kind: Belt("Leather0"), + stats: ( + protection: Normal(1.0), + poise_resilience: Normal(1.0), + ), + )), quality: Common, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/belt/leather_2.ron b/assets/common/items/armor/belt/leather_2.ron index 5a15c5c9c5..f0f9e5d3b5 100644 --- a/assets/common/items/armor/belt/leather_2.ron +++ b/assets/common/items/armor/belt/leather_2.ron @@ -1,12 +1,12 @@ ItemDef( name: "Leather Belt", description: "A belt made from simple leather.", - kind: Armor( - ( - kind: Belt("Leather2"), - stats: ( - protection: Normal(1.0)), - ) - ), + kind: Armor(( + kind: Belt("Leather2"), + stats: ( + protection: Normal(1.0), + poise_resilience: Normal(1.0), + ), + )), quality: Common, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/belt/leather_adventurer.ron b/assets/common/items/armor/belt/leather_adventurer.ron index d5cf8072f4..af56b777b0 100644 --- a/assets/common/items/armor/belt/leather_adventurer.ron +++ b/assets/common/items/armor/belt/leather_adventurer.ron @@ -1,13 +1,12 @@ ItemDef( name: "Agile Belt", - description: "'Tightly packed pieces of leather to endure all weather.'", - kind: Armor( - ( - kind: Belt("Leather2"), - stats: ( - protection: Normal(1.0) - ), - ) - ), + description: "\'Tightly packed pieces of leather to endure all weather.\'", + kind: Armor(( + kind: Belt("Leather2"), + stats: ( + protection: Normal(1.0), + poise_resilience: Normal(1.0), + ), + )), quality: Moderate, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/belt/plate_0.ron b/assets/common/items/armor/belt/plate_0.ron index bd28bb8763..7ed91ac2e2 100644 --- a/assets/common/items/armor/belt/plate_0.ron +++ b/assets/common/items/armor/belt/plate_0.ron @@ -1,13 +1,12 @@ ItemDef( name: "Iron Belt", description: "A tanned leather belt with a forged iron buckle.", - kind: Armor( - ( - kind: Belt("Plate0"), - stats: ( - protection: Normal(3.0) - ), - ) - ), + kind: Armor(( + kind: Belt("Plate0"), + stats: ( + protection: Normal(3.0), + poise_resilience: Normal(4.0), + ), + )), quality: Moderate, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/belt/steel_0.ron b/assets/common/items/armor/belt/steel_0.ron index 9d2bdbd190..43eaacf59d 100644 --- a/assets/common/items/armor/belt/steel_0.ron +++ b/assets/common/items/armor/belt/steel_0.ron @@ -1,13 +1,12 @@ ItemDef( name: "Steel Belt", description: "Metal alloy interlocking plates to improve protection.", - kind: Armor( - ( - kind: Belt("Steel0"), - stats: ( - protection: Normal(4.0) - ), - ) - ), + kind: Armor(( + kind: Belt("Steel0"), + stats: ( + protection: Normal(4.0), + poise_resilience: Normal(8.0), + ), + )), quality: Moderate, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/belt/tarasque.ron b/assets/common/items/armor/belt/tarasque.ron index ad8b73c7b4..ac7b654622 100644 --- a/assets/common/items/armor/belt/tarasque.ron +++ b/assets/common/items/armor/belt/tarasque.ron @@ -1,12 +1,12 @@ ItemDef( name: "Tarasque Belt", description: "Shattered band of a tarasque shell, making for a strong belt.", - kind: Armor( - ( - kind: Belt("Tarasque"), - stats: ( - protection: Normal(3.0)), - ) - ), + kind: Armor(( + kind: Belt("Tarasque"), + stats: ( + protection: Normal(3.0), + poise_resilience: Normal(5.0), + ), + )), quality: High, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/belt/twig.ron b/assets/common/items/armor/belt/twig.ron index 5a2807f827..7cc86cfd35 100644 --- a/assets/common/items/armor/belt/twig.ron +++ b/assets/common/items/armor/belt/twig.ron @@ -1,13 +1,12 @@ ItemDef( name: "Twig Belt", description: "Small bits of nature magically held together into the shape of a belt.", - kind: Armor( - ( - kind: Belt("Twig"), - stats: ( - protection: Normal(2.0) - ), - ) - ), + kind: Armor(( + kind: Belt("Twig"), + stats: ( + protection: Normal(2.0), + poise_resilience: Normal(1.0), + ), + )), quality: Moderate, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/belt/twigsflowers.ron b/assets/common/items/armor/belt/twigsflowers.ron index 15d51493ef..0bd4638439 100644 --- a/assets/common/items/armor/belt/twigsflowers.ron +++ b/assets/common/items/armor/belt/twigsflowers.ron @@ -1,13 +1,12 @@ ItemDef( name: "Flowery Belt", description: "Magically imbued twigs, held together with a flower intertwining its stem to hold the belt together.", - kind: Armor( - ( - kind: Belt("Twigsflowers"), - stats: ( - protection: Normal(2.0) - ), - ) - ), + kind: Armor(( + kind: Belt("Twigsflowers"), + stats: ( + protection: Normal(2.0), + poise_resilience: Normal(1.0), + ), + )), quality: Moderate, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/belt/twigsleaves.ron b/assets/common/items/armor/belt/twigsleaves.ron index c73e91f103..5c428b1647 100644 --- a/assets/common/items/armor/belt/twigsleaves.ron +++ b/assets/common/items/armor/belt/twigsleaves.ron @@ -1,13 +1,12 @@ ItemDef( name: "Leafy Belt", description: "Dried leaves cover over the standard twig belt, providing a slightly different texture.", - kind: Armor( - ( - kind: Belt("Twigsleaves"), - stats: ( - protection: Normal(2.0) - ), - ) - ), + kind: Armor(( + kind: Belt("Twigsleaves"), + stats: ( + protection: Normal(2.0), + poise_resilience: Normal(3.0), + ), + )), quality: Moderate, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/belt/velorite_mage_0.ron b/assets/common/items/armor/belt/velorite_mage_0.ron index d06b094920..4f9f0f6f75 100644 --- a/assets/common/items/armor/belt/velorite_mage_0.ron +++ b/assets/common/items/armor/belt/velorite_mage_0.ron @@ -1,13 +1,12 @@ ItemDef( name: "Velorite Battlemage Belt", description: "", - kind: Armor( - ( - kind: Belt("VeloriteMage0"), - stats: ( - protection: Normal(5.8) - ), - ) - ), + kind: Armor(( + kind: Belt("VeloriteMage0"), + stats: ( + protection: Normal(5.8), + poise_resilience: Normal(5.0), + ), + )), quality: High, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/belt/warlock.ron b/assets/common/items/armor/belt/warlock.ron index 1ae5d83c5d..13090bcf11 100644 --- a/assets/common/items/armor/belt/warlock.ron +++ b/assets/common/items/armor/belt/warlock.ron @@ -1,13 +1,12 @@ ItemDef( name: "Warlock Belt", description: "Belong to a mighty warlock.", - kind: Armor( - ( - kind: Belt("Warlock"), - stats: ( - protection: Normal(8.0) - ), - ) - ), + kind: Armor(( + kind: Belt("Warlock"), + stats: ( + protection: Normal(8.0), + poise_resilience: Normal(7.0), + ), + )), quality: Moderate, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/belt/warlord.ron b/assets/common/items/armor/belt/warlord.ron index ca0173c1cc..038abb0854 100644 --- a/assets/common/items/armor/belt/warlord.ron +++ b/assets/common/items/armor/belt/warlord.ron @@ -1,13 +1,12 @@ ItemDef( name: "Warlord Belt", description: "Belong to a mighty warlord.", - kind: Armor( - ( - kind: Belt("Warlord"), - stats: ( - protection: Normal(8.0) - ), - ) - ), + kind: Armor(( + kind: Belt("Warlord"), + stats: ( + protection: Normal(8.0), + poise_resilience: Normal(5.0), + ), + )), quality: Moderate, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/chest/assassin.ron b/assets/common/items/armor/chest/assassin.ron index 8aff55ab7e..e34d74407c 100644 --- a/assets/common/items/armor/chest/assassin.ron +++ b/assets/common/items/armor/chest/assassin.ron @@ -1,13 +1,12 @@ ItemDef( name: "Assassin Chest", description: "Only the best for a member of the creed.", - kind: Armor( - ( - kind: Chest("Assassin"), - stats: ( - protection: Normal(15.0) - ), - ) - ), + kind: Armor(( + kind: Chest("Assassin"), + stats: ( + protection: Normal(15.0), + poise_resilience: Normal(10.0), + ), + )), quality: Moderate, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/chest/bonerattler.ron b/assets/common/items/armor/chest/bonerattler.ron index d8de4a5ec3..e2f609a790 100644 --- a/assets/common/items/armor/chest/bonerattler.ron +++ b/assets/common/items/armor/chest/bonerattler.ron @@ -1,12 +1,12 @@ ItemDef( name: "Bonerattler Cuirass", description: "The spiny back and hide of a bonerattler fastened together into a protective cuirass.", - kind: Armor( - ( - kind: Chest("Bonerattler"), - stats: ( - protection: Normal(25.0)), - ) - ), + kind: Armor(( + kind: Chest("Bonerattler"), + stats: ( + protection: Normal(25.0), + poise_resilience: Normal(35.0), + ), + )), quality: High, ) \ No newline at end of file diff --git a/assets/common/items/armor/chest/cloth_blue_0.ron b/assets/common/items/armor/chest/cloth_blue_0.ron index 661b1ae8a0..7592e1e5e8 100644 --- a/assets/common/items/armor/chest/cloth_blue_0.ron +++ b/assets/common/items/armor/chest/cloth_blue_0.ron @@ -1,12 +1,12 @@ ItemDef( name: "Blue Linen Chest", description: "A stylish rough fabric surcoat, dyed blue.", - kind: Armor( - ( - kind: Chest("ClothBlue0"), - stats: ( - protection: Normal(1.0)), - ) - ), + kind: Armor(( + kind: Chest("ClothBlue0"), + stats: ( + protection: Normal(1.0), + poise_resilience: Normal(1.0), + ), + )), quality: Common, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/chest/cloth_green_0.ron b/assets/common/items/armor/chest/cloth_green_0.ron index a958dee2bb..2141a19e40 100644 --- a/assets/common/items/armor/chest/cloth_green_0.ron +++ b/assets/common/items/armor/chest/cloth_green_0.ron @@ -1,12 +1,12 @@ ItemDef( name: "Green Linen Chest", description: "A stylish rough fabric surcoat, dyed green.", - kind: Armor( - ( - kind: Chest("ClothGreen0"), - stats: ( - protection: Normal(1.0)), - ) - ), + kind: Armor(( + kind: Chest("ClothGreen0"), + stats: ( + protection: Normal(1.0), + poise_resilience: Normal(1.0), + ), + )), quality: Common, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/chest/cloth_purple_0.ron b/assets/common/items/armor/chest/cloth_purple_0.ron index bc2828bff5..104f19ba21 100644 --- a/assets/common/items/armor/chest/cloth_purple_0.ron +++ b/assets/common/items/armor/chest/cloth_purple_0.ron @@ -1,12 +1,12 @@ ItemDef( name: "Purple Linen Chest", description: "A stylish rough fabric surcoat, dyed purple.", - kind: Armor( - ( - kind: Chest("ClothPurple0"), - stats: ( - protection: Normal(1.0)), - ) - ), + kind: Armor(( + kind: Chest("ClothPurple0"), + stats: ( + protection: Normal(1.0), + poise_resilience: Normal(1.0), + ), + )), quality: Common, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/chest/cultist_chest_blue.ron b/assets/common/items/armor/chest/cultist_chest_blue.ron index c5449652f2..b7cdb46189 100644 --- a/assets/common/items/armor/chest/cultist_chest_blue.ron +++ b/assets/common/items/armor/chest/cultist_chest_blue.ron @@ -1,12 +1,12 @@ ItemDef( name: "Velorite Chest", description: "Ceremonial attire used by members.", - kind: Armor( - ( - kind: Chest("VeloriteMage0"), - stats: ( - protection: Normal(30.0)), - ) - ), + kind: Armor(( + kind: Chest("VeloriteMage0"), + stats: ( + protection: Normal(30.0), + poise_resilience: Normal(15.0), + ), + )), quality: Epic, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/chest/cultist_chest_purple.ron b/assets/common/items/armor/chest/cultist_chest_purple.ron index 57838b09cb..57676da60e 100644 --- a/assets/common/items/armor/chest/cultist_chest_purple.ron +++ b/assets/common/items/armor/chest/cultist_chest_purple.ron @@ -1,12 +1,12 @@ ItemDef( name: "Purple Cultist Chest", description: "Ceremonial attire used by members.", - kind: Armor( - ( - kind: Chest("CultistPurple"), - stats: ( - protection: Normal(30.0)), - ) - ), + kind: Armor(( + kind: Chest("CultistPurple"), + stats: ( + protection: Normal(30.0), + poise_resilience: Normal(15.0), + ), + )), quality: Epic, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/chest/druid.ron b/assets/common/items/armor/chest/druid.ron index 583004b13b..a455fdaf7a 100644 --- a/assets/common/items/armor/chest/druid.ron +++ b/assets/common/items/armor/chest/druid.ron @@ -1,13 +1,12 @@ ItemDef( - name: "Druid's Vest", + name: "Druid\'s Vest", description: "Vines and leaves formed into a tunic.", - kind: Armor( - ( - kind: Chest("Druid"), - stats: ( - protection: Normal(6.0) - ), - ) - ), + kind: Armor(( + kind: Chest("Druid"), + stats: ( + protection: Normal(6.0), + poise_resilience: Normal(4.0), + ), + )), quality: Moderate, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/chest/leather_0.ron b/assets/common/items/armor/chest/leather_0.ron index 5bfd1f5f6e..aee90be404 100644 --- a/assets/common/items/armor/chest/leather_0.ron +++ b/assets/common/items/armor/chest/leather_0.ron @@ -1,13 +1,12 @@ ItemDef( name: "Swift Chest", description: "Swift like the wind.", - kind: Armor( - ( - kind: Chest("Leather0"), - stats: ( - protection: Normal(10.0) - ), - ) - ), + kind: Armor(( + kind: Chest("Leather0"), + stats: ( + protection: Normal(10.0), + poise_resilience: Normal(7.0), + ), + )), quality: Moderate, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/chest/leather_2.ron b/assets/common/items/armor/chest/leather_2.ron index 974ee75c09..524c86d484 100644 --- a/assets/common/items/armor/chest/leather_2.ron +++ b/assets/common/items/armor/chest/leather_2.ron @@ -1,13 +1,12 @@ ItemDef( name: "Leather Cuirass", description: "A cuirass made of simple leather.", - kind: Armor( - ( - kind: Chest("Leather2"), - stats: ( - protection: Normal(10.0) - ), - ) - ), + kind: Armor(( + kind: Chest("Leather2"), + stats: ( + protection: Normal(10.0), + poise_resilience: Normal(8.0), + ), + )), quality: Moderate, ) \ No newline at end of file diff --git a/assets/common/items/armor/chest/leather_adventurer.ron b/assets/common/items/armor/chest/leather_adventurer.ron index cb4cb0afc0..85dc6603c2 100644 --- a/assets/common/items/armor/chest/leather_adventurer.ron +++ b/assets/common/items/armor/chest/leather_adventurer.ron @@ -1,13 +1,12 @@ ItemDef( name: "Agile Chest", - description: "'Tightly packed pieces of leather to endure all weather.'", - kind: Armor( - ( - kind: Chest("Leather2"), - stats: ( - protection: Normal(8.0) - ), - ) - ), + description: "Tightly packed pieces of leather to endure all weather.", + kind: Armor(( + kind: Chest("Leather2"), + stats: ( + protection: Normal(8.0), + poise_resilience: Normal(3.0), + ), + )), quality: Moderate, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/chest/plate_green_0.ron b/assets/common/items/armor/chest/plate_green_0.ron index 8838aa1a8d..c561370496 100644 --- a/assets/common/items/armor/chest/plate_green_0.ron +++ b/assets/common/items/armor/chest/plate_green_0.ron @@ -1,13 +1,12 @@ ItemDef( name: "Iron Chestplate", description: "Formed iron plate resulting in very heavy but solid protection, worn over a simple rough linen shirt, dyed green.", - kind: Armor( - ( - kind: Chest("PlateGreen0"), - stats: ( - protection: Normal(20.0) - ), - ) - ), + kind: Armor(( + kind: Chest("PlateGreen0"), + stats: ( + protection: Normal(20.0), + poise_resilience: Normal(18.0), + ), + )), quality: Moderate, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/chest/rugged.ron b/assets/common/items/armor/chest/rugged.ron new file mode 100644 index 0000000000..9ef7387b84 --- /dev/null +++ b/assets/common/items/armor/chest/rugged.ron @@ -0,0 +1,12 @@ +ItemDef( + name: "Rugged Shirt", + description: "Smells like Adventure.", + kind: Armor(( + kind: Chest("Rugged0"), + stats: ( + protection: Normal(1.0), + poise_resilience: Normal(1.0), + ), + )), + quality: Low, +) \ No newline at end of file diff --git a/assets/common/items/armor/chest/steel_0.ron b/assets/common/items/armor/chest/steel_0.ron index 74bc4751e3..66f55df851 100644 --- a/assets/common/items/armor/chest/steel_0.ron +++ b/assets/common/items/armor/chest/steel_0.ron @@ -1,12 +1,12 @@ ItemDef( name: "Steel Cuirass", description: "The metal alloy provides a somewhat lighter and stronger cuirass.", - kind: Armor( - ( - kind: Chest("Steel0"), - stats: ( - protection: Normal(25.0)), - ) - ), + kind: Armor(( + kind: Chest("Steel0"), + stats: ( + protection: Normal(25.0), + poise_resilience: Normal(40.0), + ), + )), quality: High, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/chest/tarasque.ron b/assets/common/items/armor/chest/tarasque.ron index d2acaca9d8..19ae895edf 100644 --- a/assets/common/items/armor/chest/tarasque.ron +++ b/assets/common/items/armor/chest/tarasque.ron @@ -1,12 +1,12 @@ ItemDef( name: "Tarasque Cuirass", - description: "The rough protective underbelly and back of a tarasque's shell, formed to fit humanoid proportions.", - kind: Armor( - ( - kind: Chest("Tarasque"), - stats: ( - protection: Normal(25.0)), - ) - ), + description: "The rough protective underbelly and back of a tarasque\'s shell, formed to fit humanoid proportions.", + kind: Armor(( + kind: Chest("Tarasque"), + stats: ( + protection: Normal(25.0), + poise_resilience: Normal(30.0), + ), + )), quality: High, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/chest/twig.ron b/assets/common/items/armor/chest/twig.ron index f02cccb93f..2c19c88308 100644 --- a/assets/common/items/armor/chest/twig.ron +++ b/assets/common/items/armor/chest/twig.ron @@ -1,13 +1,12 @@ ItemDef( name: "Twig Shirt", description: "Small sticks magically imbued to hold together to form a shirt.", - kind: Armor( - ( - kind: Chest("Twig"), - stats: ( - protection: Normal(15.0) - ), - ) - ), + kind: Armor(( + kind: Chest("Twig"), + stats: ( + protection: Normal(15.0), + poise_resilience: Normal(10.0), + ), + )), quality: Moderate, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/chest/twigsflowers.ron b/assets/common/items/armor/chest/twigsflowers.ron index 5c866b1de2..bb0af6ac07 100644 --- a/assets/common/items/armor/chest/twigsflowers.ron +++ b/assets/common/items/armor/chest/twigsflowers.ron @@ -1,13 +1,12 @@ ItemDef( name: "Flowery Shirt", description: "Magically imbued twigs decorated with flowers and their stems, letting others know your intentions of peace and love.", - kind: Armor( - ( - kind: Chest("Twigsflowers"), - stats: ( - protection: Normal(15.0) - ), - ) - ), + kind: Armor(( + kind: Chest("Twigsflowers"), + stats: ( + protection: Normal(15.0), + poise_resilience: Normal(8.0), + ), + )), quality: Moderate, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/chest/twigsleaves.ron b/assets/common/items/armor/chest/twigsleaves.ron index 303f4cfe57..134dc38dbd 100644 --- a/assets/common/items/armor/chest/twigsleaves.ron +++ b/assets/common/items/armor/chest/twigsleaves.ron @@ -1,13 +1,12 @@ ItemDef( name: "Leafy Shirt", description: "Leaves cover the magically imbued twig shirt, providing a more natural appearance.", - kind: Armor( - ( - kind: Chest("Twigsleaves"), - stats: ( - protection: Normal(15.0) - ), - ) - ), + kind: Armor(( + kind: Chest("Twigsleaves"), + stats: ( + protection: Normal(15.0), + poise_resilience: Normal(10.0), + ), + )), quality: Moderate, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/chest/velorite_mage_0.ron b/assets/common/items/armor/chest/velorite_mage_0.ron index 9d8a1773d8..66f34078ac 100644 --- a/assets/common/items/armor/chest/velorite_mage_0.ron +++ b/assets/common/items/armor/chest/velorite_mage_0.ron @@ -1,13 +1,12 @@ ItemDef( name: "Velorite Battlemage Vest", description: "", - kind: Armor( - ( - kind: Chest("VeloriteMage0"), - stats: ( - protection: Normal(28.0) - ), - ) - ), + kind: Armor(( + kind: Chest("VeloriteMage0"), + stats: ( + protection: Normal(28.0), + poise_resilience: Normal(20.0), + ), + )), quality: High, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/chest/warlock.ron b/assets/common/items/armor/chest/warlock.ron index 9095ae409a..ade247dec7 100644 --- a/assets/common/items/armor/chest/warlock.ron +++ b/assets/common/items/armor/chest/warlock.ron @@ -1,13 +1,12 @@ ItemDef( name: "Warlock Vest", description: "Belong to a mighty warlock.", - kind: Armor( - ( - kind: Chest("Warlock"), - stats: ( - protection: Normal(40.0) - ), - ) - ), + kind: Armor(( + kind: Chest("Warlock"), + stats: ( + protection: Normal(40.0), + poise_resilience: Normal(29.0), + ), + )), quality: Moderate, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/chest/warlord.ron b/assets/common/items/armor/chest/warlord.ron index 5400ffcc0b..feb00e87bd 100644 --- a/assets/common/items/armor/chest/warlord.ron +++ b/assets/common/items/armor/chest/warlord.ron @@ -1,13 +1,12 @@ ItemDef( name: "Warlord Cuirass", description: "Belong to a mighty warlord.", - kind: Armor( - ( - kind: Chest("Warlord"), - stats: ( - protection: Normal(40.0) - ), - ) - ), + kind: Armor(( + kind: Chest("Warlord"), + stats: ( + protection: Normal(40.0), + poise_resilience: Normal(29.0), + ), + )), quality: Moderate, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/chest/worker_green_0.ron b/assets/common/items/armor/chest/worker_green_0.ron index e12cedf33a..f5ad6ad68e 100644 --- a/assets/common/items/armor/chest/worker_green_0.ron +++ b/assets/common/items/armor/chest/worker_green_0.ron @@ -1,12 +1,12 @@ ItemDef( name: "Green Worker Shirt", description: "Was used by a farmer, until recently.", - kind: Armor( - ( - kind: Chest("WorkerGreen0"), - stats: ( - protection: Normal(1.0)), - ) - ), + kind: Armor(( + kind: Chest("WorkerGreen0"), + stats: ( + protection: Normal(1.0), + poise_resilience: Normal(1.0), + ), + )), quality: Low, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/chest/worker_green_1.ron b/assets/common/items/armor/chest/worker_green_1.ron index 1f9583a25a..e38bf81f40 100644 --- a/assets/common/items/armor/chest/worker_green_1.ron +++ b/assets/common/items/armor/chest/worker_green_1.ron @@ -1,12 +1,12 @@ ItemDef( name: "Green Worker Shirt", description: "Was used by a farmer, until recently.", - kind: Armor( - ( - kind: Chest("WorkerGreen1"), - stats: ( - protection: Normal(1.0)), - ) - ), + kind: Armor(( + kind: Chest("WorkerGreen1"), + stats: ( + protection: Normal(1.0), + poise_resilience: Normal(1.0), + ), + )), quality: Low, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/chest/worker_orange_0.ron b/assets/common/items/armor/chest/worker_orange_0.ron index 87a952eb2e..27ec2a9544 100644 --- a/assets/common/items/armor/chest/worker_orange_0.ron +++ b/assets/common/items/armor/chest/worker_orange_0.ron @@ -1,12 +1,12 @@ ItemDef( name: "Orange Worker Shirt", description: "Was used by a farmer, until recently.", - kind: Armor( - ( - kind: Chest("WorkerOrange0"), - stats: ( - protection: Normal(1.0)), - ) - ), + kind: Armor(( + kind: Chest("WorkerOrange0"), + stats: ( + protection: Normal(1.0), + poise_resilience: Normal(1.0), + ), + )), quality: Low, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/chest/worker_orange_1.ron b/assets/common/items/armor/chest/worker_orange_1.ron index 43fe0517dc..c1468459ce 100644 --- a/assets/common/items/armor/chest/worker_orange_1.ron +++ b/assets/common/items/armor/chest/worker_orange_1.ron @@ -1,12 +1,12 @@ ItemDef( name: "Orange Worker Shirt", description: "Was used by a farmer, until recently.", - kind: Armor( - ( - kind: Chest("WorkerOrange1"), - stats: ( - protection: Normal(1.0)), - ) - ), + kind: Armor(( + kind: Chest("WorkerOrange1"), + stats: ( + protection: Normal(1.0), + poise_resilience: Normal(1.0), + ), + )), quality: Low, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/chest/worker_purple_0.ron b/assets/common/items/armor/chest/worker_purple_0.ron index ab2ceee463..8133ecd89f 100644 --- a/assets/common/items/armor/chest/worker_purple_0.ron +++ b/assets/common/items/armor/chest/worker_purple_0.ron @@ -1,12 +1,12 @@ ItemDef( name: "Purple Worker Shirt", description: "Was used by a farmer, until recently.", - kind: Armor( - ( - kind: Chest("WorkerPurple0"), - stats: ( - protection: Normal(1.0)), - ) - ), + kind: Armor(( + kind: Chest("WorkerPurple0"), + stats: ( + protection: Normal(1.0), + poise_resilience: Normal(1.0), + ), + )), quality: Low, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/chest/worker_purple_1.ron b/assets/common/items/armor/chest/worker_purple_1.ron index 0ec0f3385c..af8ea4be98 100644 --- a/assets/common/items/armor/chest/worker_purple_1.ron +++ b/assets/common/items/armor/chest/worker_purple_1.ron @@ -1,12 +1,12 @@ ItemDef( name: "Purple Worker Shirt", description: "Was used by a farmer, until recently.", - kind: Armor( - ( - kind: Chest("WorkerPurple1"), - stats: ( - protection: Normal(1.0)), - ) - ), + kind: Armor(( + kind: Chest("WorkerPurple1"), + stats: ( + protection: Normal(1.0), + poise_resilience: Normal(1.0), + ), + )), quality: Low, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/chest/worker_red_0.ron b/assets/common/items/armor/chest/worker_red_0.ron index 6f9183ca2a..ce3bee75a3 100644 --- a/assets/common/items/armor/chest/worker_red_0.ron +++ b/assets/common/items/armor/chest/worker_red_0.ron @@ -1,12 +1,12 @@ ItemDef( name: "Red Worker Shirt", description: "Was used by a farmer, until recently.", - kind: Armor( - ( - kind: Chest("WorkerRed0"), - stats: ( - protection: Normal(1.0)), - ) - ), + kind: Armor(( + kind: Chest("WorkerRed0"), + stats: ( + protection: Normal(1.0), + poise_resilience: Normal(1.0), + ), + )), quality: Low, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/chest/worker_red_1.ron b/assets/common/items/armor/chest/worker_red_1.ron index caafc13601..e773744171 100644 --- a/assets/common/items/armor/chest/worker_red_1.ron +++ b/assets/common/items/armor/chest/worker_red_1.ron @@ -1,12 +1,12 @@ ItemDef( name: "Red Worker Shirt", description: "Was used by a farmer, until recently.", - kind: Armor( - ( - kind: Chest("WorkerRed1"), - stats: ( - protection: Normal(1.0)), - ) - ), + kind: Armor(( + kind: Chest("WorkerRed1"), + stats: ( + protection: Normal(1.0), + poise_resilience: Normal(1.0), + ), + )), quality: Low, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/chest/worker_yellow_0.ron b/assets/common/items/armor/chest/worker_yellow_0.ron index 368a3b5a4e..a4b3160d01 100644 --- a/assets/common/items/armor/chest/worker_yellow_0.ron +++ b/assets/common/items/armor/chest/worker_yellow_0.ron @@ -1,12 +1,12 @@ ItemDef( name: "Yellow Worker Shirt", description: "Was used by a farmer, until recently.", - kind: Armor( - ( - kind: Chest("WorkerYellow0"), - stats: ( - protection: Normal(1.0)), - ) - ), + kind: Armor(( + kind: Chest("WorkerYellow0"), + stats: ( + protection: Normal(1.0), + poise_resilience: Normal(1.0), + ), + )), quality: Low, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/chest/worker_yellow_1.ron b/assets/common/items/armor/chest/worker_yellow_1.ron index b5d78b0deb..cd5848a950 100644 --- a/assets/common/items/armor/chest/worker_yellow_1.ron +++ b/assets/common/items/armor/chest/worker_yellow_1.ron @@ -1,12 +1,12 @@ ItemDef( name: "Yellow Worker Shirt", description: "Was used by a farmer, until recently.", - kind: Armor( - ( - kind: Chest("WorkerYellow1"), - stats: ( - protection: Normal(1.0)), - ) - ), + kind: Armor(( + kind: Chest("WorkerYellow1"), + stats: ( + protection: Normal(1.0), + poise_resilience: Normal(1.0), + ), + )), quality: Low, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/foot/assassin.ron b/assets/common/items/armor/foot/assassin.ron index de74557c1d..15f1e84952 100644 --- a/assets/common/items/armor/foot/assassin.ron +++ b/assets/common/items/armor/foot/assassin.ron @@ -1,13 +1,12 @@ ItemDef( name: "Assassin Boots", description: "Only the best for a member of the creed.", - kind: Armor( - ( - kind: Foot("Assassin"), - stats: ( - protection: Normal(4.0) - ), - ) - ), + kind: Armor(( + kind: Foot("Assassin"), + stats: ( + protection: Normal(4.0), + poise_resilience: Normal(2.0), + ), + )), quality: Moderate, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/foot/bonerattler.ron b/assets/common/items/armor/foot/bonerattler.ron index 678e9f8cdf..208d5a05ef 100644 --- a/assets/common/items/armor/foot/bonerattler.ron +++ b/assets/common/items/armor/foot/bonerattler.ron @@ -1,12 +1,12 @@ ItemDef( name: "Bonerattler Boots", description: "Boots made from the claws and hide of a bonerattler.", - kind: Armor( - ( - kind: Foot("Bonerattler"), - stats: ( - protection: Normal(5.0)), - ) - ), + kind: Armor(( + kind: Foot("Bonerattler"), + stats: ( + protection: Normal(5.0), + poise_resilience: Normal(10.0), + ), + )), quality: High, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/foot/cloth_blue_0.ron b/assets/common/items/armor/foot/cloth_blue_0.ron index d672c007a0..bd4ba2ff2b 100644 --- a/assets/common/items/armor/foot/cloth_blue_0.ron +++ b/assets/common/items/armor/foot/cloth_blue_0.ron @@ -1,12 +1,12 @@ ItemDef( name: "Blue Linen Boots", description: "Cobbled rough fabric boots, dyed blue.", - kind: Armor( - ( - kind: Foot("ClothBlue0"), - stats: ( - protection: Normal(0.0)), - ) - ), + kind: Armor(( + kind: Foot("ClothBlue0"), + stats: ( + protection: Normal(0.0), + poise_resilience: Normal(0.0), + ), + )), quality: Common, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/foot/cloth_green_0.ron b/assets/common/items/armor/foot/cloth_green_0.ron index 06bb0b3d58..ddccadad8f 100644 --- a/assets/common/items/armor/foot/cloth_green_0.ron +++ b/assets/common/items/armor/foot/cloth_green_0.ron @@ -1,12 +1,12 @@ ItemDef( name: "Green Linen Boots", description: "Cobbled rough fabric boots, dyed green.", - kind: Armor( - ( - kind: Foot("ClothGreen0"), - stats: ( - protection: Normal(0.0)), - ) - ), + kind: Armor(( + kind: Foot("ClothGreen0"), + stats: ( + protection: Normal(0.0), + poise_resilience: Normal(0.0), + ), + )), quality: Common, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/foot/cloth_purple_0.ron b/assets/common/items/armor/foot/cloth_purple_0.ron index fa7df73d6c..d939474622 100644 --- a/assets/common/items/armor/foot/cloth_purple_0.ron +++ b/assets/common/items/armor/foot/cloth_purple_0.ron @@ -1,12 +1,12 @@ ItemDef( name: "Purple Linen Boots", description: "Cobbled rough fabric boots, dyed purple.", - kind: Armor( - ( - kind: Foot("ClothPurple0"), - stats: ( - protection: Normal(0.0)), - ) - ), + kind: Armor(( + kind: Foot("ClothPurple0"), + stats: ( + protection: Normal(0.0), + poise_resilience: Normal(0.0), + ), + )), quality: Common, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/foot/cultist_boots.ron b/assets/common/items/armor/foot/cultist_boots.ron index 6c683b4c69..25646f2d9f 100644 --- a/assets/common/items/armor/foot/cultist_boots.ron +++ b/assets/common/items/armor/foot/cultist_boots.ron @@ -1,12 +1,12 @@ ItemDef( name: "Cultist Boots", description: "Ceremonial attire used by members.", - kind: Armor( - ( - kind: Foot("Cultist"), - stats: ( - protection: Normal(6.0)), - ) - ), + kind: Armor(( + kind: Foot("Cultist"), + stats: ( + protection: Normal(6.0), + poise_resilience: Normal(3.0), + ), + )), quality: Epic, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/foot/druid.ron b/assets/common/items/armor/foot/druid.ron index d07bdd9481..c0623f8b0e 100644 --- a/assets/common/items/armor/foot/druid.ron +++ b/assets/common/items/armor/foot/druid.ron @@ -1,13 +1,12 @@ ItemDef( - name: "Druid's Slippers", + name: "Druid\'s Slippers", description: "For treading softly through the woods.", - kind: Armor( - ( - kind: Foot("Druid"), - stats: ( - protection: Normal(1.0) - ), - ) - ), + kind: Armor(( + kind: Foot("Druid"), + stats: ( + protection: Normal(1.0), + poise_resilience: Normal(1.0), + ), + )), quality: Moderate, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/foot/jackalope_slippers.ron b/assets/common/items/armor/foot/jackalope_slippers.ron index 60ff901ff4..9e828b2b12 100644 --- a/assets/common/items/armor/foot/jackalope_slippers.ron +++ b/assets/common/items/armor/foot/jackalope_slippers.ron @@ -1,12 +1,12 @@ ItemDef( name: "Fluffy Jackalope Slippers", description: "So warm and cozy!", - kind: Armor( - ( - kind: Foot("JackalopeSlips"), - stats: ( - protection: Normal(0.0)), - ) - ), + kind: Armor(( + kind: Foot("JackalopeSlips"), + stats: ( + protection: Normal(0.0), + poise_resilience: Normal(10.0), + ), + )), quality: High, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/foot/leather_0.ron b/assets/common/items/armor/foot/leather_0.ron index 1f774ec0ef..857b7d6ec6 100644 --- a/assets/common/items/armor/foot/leather_0.ron +++ b/assets/common/items/armor/foot/leather_0.ron @@ -1,12 +1,12 @@ ItemDef( name: "Swift Boots", description: "Swift like the wind.", - kind: Armor( - ( - kind: Foot("Leather0"), - stats: ( - protection: Normal(2.0)), - ) - ), + kind: Armor(( + kind: Foot("Leather0"), + stats: ( + protection: Normal(2.0), + poise_resilience: Normal(2.0), + ), + )), quality: Common, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/foot/leather_2.ron b/assets/common/items/armor/foot/leather_2.ron index 8dcc285e7c..5b5368478d 100644 --- a/assets/common/items/armor/foot/leather_2.ron +++ b/assets/common/items/armor/foot/leather_2.ron @@ -1,12 +1,12 @@ ItemDef( name: "Leather Boots", description: "Boots made of simple leather.", - kind: Armor( - ( - kind: Foot("Leather2"), - stats: ( - protection: Normal(2.0)), - ) - ), + kind: Armor(( + kind: Foot("Leather2"), + stats: ( + protection: Normal(2.0), + poise_resilience: Normal(3.0), + ), + )), quality: Common, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/foot/leather_adventurer.ron b/assets/common/items/armor/foot/leather_adventurer.ron index 4048f926fa..6edbf1489d 100644 --- a/assets/common/items/armor/foot/leather_adventurer.ron +++ b/assets/common/items/armor/foot/leather_adventurer.ron @@ -1,13 +1,12 @@ ItemDef( name: "Agile Kickers", - description: "'Tightly packed pieces of leather to endure all weather.", - kind: Armor( - ( - kind: Foot("Leather2"), - stats: ( - protection: Normal(2.0) - ), - ) - ), + description: "\'Tightly packed pieces of leather to endure all weather.", + kind: Armor(( + kind: Foot("Leather2"), + stats: ( + protection: Normal(2.0), + poise_resilience: Normal(1.0), + ), + )), quality: Moderate, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/foot/plate_0.ron b/assets/common/items/armor/foot/plate_0.ron index 1a3c400c41..79c1ef0b95 100644 --- a/assets/common/items/armor/foot/plate_0.ron +++ b/assets/common/items/armor/foot/plate_0.ron @@ -1,13 +1,12 @@ ItemDef( name: "Iron Feet", description: "Quickly shaped iron plates, forming boots that are uncomfortable but durable.", - kind: Armor( - ( - kind: Foot("Plate0"), - stats: ( - protection: Normal(4.0) - ), - ) - ), + kind: Armor(( + kind: Foot("Plate0"), + stats: ( + protection: Normal(4.0), + poise_resilience: Normal(8.0), + ), + )), quality: Moderate, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/foot/sandals_0.ron b/assets/common/items/armor/foot/sandals_0.ron new file mode 100644 index 0000000000..935537888a --- /dev/null +++ b/assets/common/items/armor/foot/sandals_0.ron @@ -0,0 +1,12 @@ +ItemDef( + name: "Worn out Sandals", + description: "Loyal companions.", + kind: Armor(( + kind: Foot("Sandal0"), + stats: ( + protection: Normal(0.0), + poise_resilience: Normal(0.0), + ), + )), + quality: Low, +) \ No newline at end of file diff --git a/assets/common/items/armor/foot/steel_0.ron b/assets/common/items/armor/foot/steel_0.ron index 9c8e7bda31..4fa4afc307 100644 --- a/assets/common/items/armor/foot/steel_0.ron +++ b/assets/common/items/armor/foot/steel_0.ron @@ -1,12 +1,12 @@ ItemDef( name: "Steel Boots", description: "Metal alloy boots providing a more comfortable and durable protection.", - kind: Armor( - ( - kind: Foot("Steel0"), - stats: ( - protection: Normal(5.0)), - ) - ), + kind: Armor(( + kind: Foot("Steel0"), + stats: ( + protection: Normal(5.0), + poise_resilience: Normal(10.0), + ), + )), quality: High, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/foot/tarasque.ron b/assets/common/items/armor/foot/tarasque.ron index 6964184c23..25fba263c7 100644 --- a/assets/common/items/armor/foot/tarasque.ron +++ b/assets/common/items/armor/foot/tarasque.ron @@ -1,12 +1,12 @@ ItemDef( name: "Tarasque Boots", - description: "Tarasque claws form the outside of these boots, protecting the wearer's feet.", - kind: Armor( - ( - kind: Foot("Tarasque"), - stats: ( - protection: Normal(5.0)), - ) - ), + description: "Tarasque claws form the outside of these boots, protecting the wearer\'s feet.", + kind: Armor(( + kind: Foot("Tarasque"), + stats: ( + protection: Normal(5.0), + poise_resilience: Normal(9.0), + ), + )), quality: High, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/foot/twig.ron b/assets/common/items/armor/foot/twig.ron index 6a8d2be421..c261e07977 100644 --- a/assets/common/items/armor/foot/twig.ron +++ b/assets/common/items/armor/foot/twig.ron @@ -1,13 +1,12 @@ ItemDef( name: "Twig Boots", description: "Small twigs intertwined and imbued with magic to provide simple protection.", - kind: Armor( - ( - kind: Foot("Twig"), - stats: ( - protection: Normal(3.0) - ), - ) - ), + kind: Armor(( + kind: Foot("Twig"), + stats: ( + protection: Normal(3.0), + poise_resilience: Normal(2.0), + ), + )), quality: Moderate, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/foot/twigsflowers.ron b/assets/common/items/armor/foot/twigsflowers.ron index 8177d58192..f64bab848e 100644 --- a/assets/common/items/armor/foot/twigsflowers.ron +++ b/assets/common/items/armor/foot/twigsflowers.ron @@ -1,13 +1,12 @@ ItemDef( name: "Flowery Boots", description: "Woven and magically imbued, these boots of twigs and flowers provide simple protection and peace to the wearer.", - kind: Armor( - ( - kind: Foot("Twigsflowers"), - stats: ( - protection: Normal(3.0) - ), - ) - ), + kind: Armor(( + kind: Foot("Twigsflowers"), + stats: ( + protection: Normal(3.0), + poise_resilience: Normal(2.0), + ), + )), quality: Moderate, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/foot/twigsleaves.ron b/assets/common/items/armor/foot/twigsleaves.ron index 0de5383eae..edd7cdc56a 100644 --- a/assets/common/items/armor/foot/twigsleaves.ron +++ b/assets/common/items/armor/foot/twigsleaves.ron @@ -1,13 +1,12 @@ ItemDef( name: "Leafy Boots", description: "Leaves cover the magically entwined twigs to provide simple protection from the elements.", - kind: Armor( - ( - kind: Foot("Twigsleaves"), - stats: ( - protection: Normal(3.0) - ), - ) - ), + kind: Armor(( + kind: Foot("Twigsleaves"), + stats: ( + protection: Normal(3.0), + poise_resilience: Normal(2.0), + ), + )), quality: Moderate, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/foot/velorite_mage_0.ron b/assets/common/items/armor/foot/velorite_mage_0.ron index 7b48e3cd75..cf7d799801 100644 --- a/assets/common/items/armor/foot/velorite_mage_0.ron +++ b/assets/common/items/armor/foot/velorite_mage_0.ron @@ -1,13 +1,12 @@ ItemDef( name: "Velorite Battlemage Boots", description: "", - kind: Armor( - ( - kind: Foot("VeloriteMage0"), - stats: ( - protection: Normal(5.9) - ), - ) - ), + kind: Armor(( + kind: Foot("VeloriteMage0"), + stats: ( + protection: Normal(5.9), + poise_resilience: Normal(5.0), + ), + )), quality: High, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/foot/warlock.ron b/assets/common/items/armor/foot/warlock.ron index 3bd1951429..7ada97e62f 100644 --- a/assets/common/items/armor/foot/warlock.ron +++ b/assets/common/items/armor/foot/warlock.ron @@ -1,13 +1,12 @@ ItemDef( name: "Warlock Slippers", description: "Belong to a mighty warlock.", - kind: Armor( - ( - kind: Foot("Warlock"), - stats: ( - protection: Normal(8.0) - ), - ) - ), + kind: Armor(( + kind: Foot("Warlock"), + stats: ( + protection: Normal(8.0), + poise_resilience: Normal(5.0), + ), + )), quality: Moderate, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/foot/warlord.ron b/assets/common/items/armor/foot/warlord.ron index 74f7cef132..ad7f8cba15 100644 --- a/assets/common/items/armor/foot/warlord.ron +++ b/assets/common/items/armor/foot/warlord.ron @@ -1,13 +1,12 @@ ItemDef( name: "Warlord Feet", description: "Belong to a mighty warlord.", - kind: Armor( - ( - kind: Foot("Warlord"), - stats: ( - protection: Normal(8.0) - ), - ) - ), + kind: Armor(( + kind: Foot("Warlord"), + stats: ( + protection: Normal(8.0), + poise_resilience: Normal(6.0), + ), + )), quality: Moderate, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/hand/assassin.ron b/assets/common/items/armor/hand/assassin.ron index f1f5892eb7..069ab1e39b 100644 --- a/assets/common/items/armor/hand/assassin.ron +++ b/assets/common/items/armor/hand/assassin.ron @@ -1,13 +1,12 @@ ItemDef( name: "Assassin Gloves", description: "Only the best for a member of the creed.", - kind: Armor( - ( - kind: Hand("Assassin"), - stats: ( - protection: Normal(6.0) - ), - ) - ), + kind: Armor(( + kind: Hand("Assassin"), + stats: ( + protection: Normal(6.0), + poise_resilience: Normal(3.0), + ), + )), quality: Moderate, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/hand/bonerattler.ron b/assets/common/items/armor/hand/bonerattler.ron index 0ed619deea..5900e7a77d 100644 --- a/assets/common/items/armor/hand/bonerattler.ron +++ b/assets/common/items/armor/hand/bonerattler.ron @@ -1,12 +1,12 @@ ItemDef( name: "Bonerattler Gauntlets", description: "The hide and bone from a bonerattler provide strong protection for the wearer.", - kind: Armor( - ( - kind: Hand("Bonerattler"), - stats: ( - protection: Normal(10.0)), - ) - ), + kind: Armor(( + kind: Hand("Bonerattler"), + stats: ( + protection: Normal(10.0), + poise_resilience: Normal(12.0), + ), + )), quality: High, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/hand/cloth_blue_0.ron b/assets/common/items/armor/hand/cloth_blue_0.ron index ce0d8350be..337e2c74e3 100644 --- a/assets/common/items/armor/hand/cloth_blue_0.ron +++ b/assets/common/items/armor/hand/cloth_blue_0.ron @@ -1,12 +1,12 @@ ItemDef( name: "Blue Linen Wrists", description: "Rough cloth bracelets provide a stylish fashion statement, dyed blue.", - kind: Armor( - ( - kind: Hand("ClothBlue0"), - stats: ( - protection: Normal(0.0)), - ) - ), + kind: Armor(( + kind: Hand("ClothBlue0"), + stats: ( + protection: Normal(0.0), + poise_resilience: Normal(0.0), + ), + )), quality: Common, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/hand/cloth_green_0.ron b/assets/common/items/armor/hand/cloth_green_0.ron index 66a847089e..acae6a4f0d 100644 --- a/assets/common/items/armor/hand/cloth_green_0.ron +++ b/assets/common/items/armor/hand/cloth_green_0.ron @@ -1,12 +1,12 @@ ItemDef( name: "Green Linen Wrists", description: "Rough cloth bracelets provide a stylish fashion statement, dyed green.", - kind: Armor( - ( - kind: Hand("ClothGreen0"), - stats: ( - protection: Normal(0.0)), - ) - ), + kind: Armor(( + kind: Hand("ClothGreen0"), + stats: ( + protection: Normal(0.0), + poise_resilience: Normal(0.0), + ), + )), quality: Common, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/hand/cloth_purple_0.ron b/assets/common/items/armor/hand/cloth_purple_0.ron index 1392bf82dd..865ff3578b 100644 --- a/assets/common/items/armor/hand/cloth_purple_0.ron +++ b/assets/common/items/armor/hand/cloth_purple_0.ron @@ -1,12 +1,12 @@ ItemDef( name: "Purple Silk Wrists", description: "Rough cloth bracelets provide a stylish fashion statement, dyed purple.", - kind: Armor( - ( - kind: Hand("ClothPurple0"), - stats: ( - protection: Normal(0.0)), - ) - ), + kind: Armor(( + kind: Hand("ClothPurple0"), + stats: ( + protection: Normal(0.0), + poise_resilience: Normal(0.0), + ), + )), quality: Common, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/hand/cultist_hands_blue.ron b/assets/common/items/armor/hand/cultist_hands_blue.ron index 959b095af4..c5b3fae240 100644 --- a/assets/common/items/armor/hand/cultist_hands_blue.ron +++ b/assets/common/items/armor/hand/cultist_hands_blue.ron @@ -1,12 +1,12 @@ ItemDef( name: "Velorite Gloves", description: "Ceremonial attire used by members.", - kind: Armor( - ( - kind: Hand("VeloriteMage0"), - stats: ( - protection: Normal(12.0)), - ) - ), + kind: Armor(( + kind: Hand("VeloriteMage0"), + stats: ( + protection: Normal(12.0), + poise_resilience: Normal(10.0), + ), + )), quality: Epic, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/hand/cultist_hands_purple.ron b/assets/common/items/armor/hand/cultist_hands_purple.ron index b2aba0a762..2d93729d04 100644 --- a/assets/common/items/armor/hand/cultist_hands_purple.ron +++ b/assets/common/items/armor/hand/cultist_hands_purple.ron @@ -1,12 +1,12 @@ ItemDef( name: "Purple Cultist Gloves", description: "Ceremonial attire used by members.", - kind: Armor( - ( - kind: Hand("CultistPurple"), - stats: ( - protection: Normal(12.0)), - ) - ), + kind: Armor(( + kind: Hand("CultistPurple"), + stats: ( + protection: Normal(12.0), + poise_resilience: Normal(8.0), + ), + )), quality: Epic, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/hand/druid.ron b/assets/common/items/armor/hand/druid.ron index 9f19a6419d..c8f00418d7 100644 --- a/assets/common/items/armor/hand/druid.ron +++ b/assets/common/items/armor/hand/druid.ron @@ -1,12 +1,12 @@ ItemDef( - name: "Druid's Gloves", + name: "Druid\'s Gloves", description: "Soft, strong, and flexible.", - kind: Armor( - ( - kind: Hand("Druid"), - stats: ( - protection: Normal(2.0)), - ) - ), + kind: Armor(( + kind: Hand("Druid"), + stats: ( + protection: Normal(2.0), + poise_resilience: Normal(1.0), + ), + )), quality: Common, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/hand/leather_0.ron b/assets/common/items/armor/hand/leather_0.ron index 4cf5ff780a..722829a8b3 100644 --- a/assets/common/items/armor/hand/leather_0.ron +++ b/assets/common/items/armor/hand/leather_0.ron @@ -1,12 +1,12 @@ ItemDef( name: "Swift Gloves", description: "Swift like the wind.", - kind: Armor( - ( - kind: Hand("Leather0"), - stats: ( - protection: Normal(4.0)), - ) - ), + kind: Armor(( + kind: Hand("Leather0"), + stats: ( + protection: Normal(4.0), + poise_resilience: Normal(3.0), + ), + )), quality: Common, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/hand/leather_2.ron b/assets/common/items/armor/hand/leather_2.ron index bdacce9bc7..177fe3eb07 100644 --- a/assets/common/items/armor/hand/leather_2.ron +++ b/assets/common/items/armor/hand/leather_2.ron @@ -1,12 +1,12 @@ ItemDef( name: "Leather Gloves", description: "Gloves made of simple leather.", - kind: Armor( - ( - kind: Hand("Leather2"), - stats: ( - protection: Normal(4.0)), - ) - ), + kind: Armor(( + kind: Hand("Leather2"), + stats: ( + protection: Normal(4.0), + poise_resilience: Normal(5.0), + ), + )), quality: Common, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/hand/leather_adventurer.ron b/assets/common/items/armor/hand/leather_adventurer.ron index 99dfec383c..6b9ab354a0 100644 --- a/assets/common/items/armor/hand/leather_adventurer.ron +++ b/assets/common/items/armor/hand/leather_adventurer.ron @@ -1,13 +1,12 @@ ItemDef( name: "Agile Gauntlets", - description: "'Tightly packed pieces of leather to endure all weather.'", - kind: Armor( - ( - kind: Hand("Leather2"), - stats: ( - protection: Normal(4.0) - ), - ) - ), + description: "\'Tightly packed pieces of leather to endure all weather.\'", + kind: Armor(( + kind: Hand("Leather2"), + stats: ( + protection: Normal(4.0), + poise_resilience: Normal(4.0), + ), + )), quality: Moderate, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/hand/plate_0.ron b/assets/common/items/armor/hand/plate_0.ron index 9b7ffe5395..5aea39a651 100644 --- a/assets/common/items/armor/hand/plate_0.ron +++ b/assets/common/items/armor/hand/plate_0.ron @@ -1,13 +1,12 @@ ItemDef( name: "Iron Handguards", description: "Heavy chunks of metal plate, not the most comfortable but keeps the wearer safe.", - kind: Armor( - ( - kind: Hand("Plate0"), - stats: ( - protection: Normal(8.0) - ), - ) - ), + kind: Armor(( + kind: Hand("Plate0"), + stats: ( + protection: Normal(8.0), + poise_resilience: Normal(11.0), + ), + )), quality: Moderate, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/hand/steel_0.ron b/assets/common/items/armor/hand/steel_0.ron index df5c895a55..714126c3e0 100644 --- a/assets/common/items/armor/hand/steel_0.ron +++ b/assets/common/items/armor/hand/steel_0.ron @@ -1,13 +1,12 @@ ItemDef( name: "Steel Gauntlets", description: "The metal alloy provides better protection and lighter weight, a quite comfortable gauntlet.", - kind: Armor( - ( - kind: Hand("Steel0"), - stats: ( - protection: Normal(10.0) - ), - ) - ), + kind: Armor(( + kind: Hand("Steel0"), + stats: ( + protection: Normal(10.0), + poise_resilience: Normal(15.0), + ), + )), quality: Moderate, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/hand/tarasque.ron b/assets/common/items/armor/hand/tarasque.ron index da6293a96e..60a67cb634 100644 --- a/assets/common/items/armor/hand/tarasque.ron +++ b/assets/common/items/armor/hand/tarasque.ron @@ -1,12 +1,12 @@ ItemDef( name: "Tarasque Gauntlets", description: "Shattered fragments from a tarasque shell shaped into a protective gauntlets.", - kind: Armor( - ( - kind: Hand("Tarasque"), - stats: ( - protection: Normal(10.0)), - ) - ), + kind: Armor(( + kind: Hand("Tarasque"), + stats: ( + protection: Normal(10.0), + poise_resilience: Normal(12.0), + ), + )), quality: High, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/hand/twig.ron b/assets/common/items/armor/hand/twig.ron index a9435d1738..83139293ad 100644 --- a/assets/common/items/armor/hand/twig.ron +++ b/assets/common/items/armor/hand/twig.ron @@ -1,13 +1,12 @@ ItemDef( name: "Twig Wraps", description: "Magically imbued twigs interlocked into simple hand wraps.", - kind: Armor( - ( - kind: Hand("Twig"), - stats: ( - protection: Normal(6.0) - ), - ) - ), + kind: Armor(( + kind: Hand("Twig"), + stats: ( + protection: Normal(6.0), + poise_resilience: Normal(6.0), + ), + )), quality: Moderate, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/hand/twigsflowers.ron b/assets/common/items/armor/hand/twigsflowers.ron index 715eb2d4af..df13a1736e 100644 --- a/assets/common/items/armor/hand/twigsflowers.ron +++ b/assets/common/items/armor/hand/twigsflowers.ron @@ -1,13 +1,12 @@ ItemDef( name: "Flowery Wraps", description: "Wrapped and intertwined twigs held together with magic and flowers with their stems, providing peace and protection for the wearer.", - kind: Armor( - ( - kind: Hand("Twigsflowers"), - stats: ( - protection: Normal(6.0) - ), - ) - ), + kind: Armor(( + kind: Hand("Twigsflowers"), + stats: ( + protection: Normal(6.0), + poise_resilience: Normal(4.0), + ), + )), quality: Moderate, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/hand/twigsleaves.ron b/assets/common/items/armor/hand/twigsleaves.ron index 5e66795bfb..90e7dd82a3 100644 --- a/assets/common/items/armor/hand/twigsleaves.ron +++ b/assets/common/items/armor/hand/twigsleaves.ron @@ -1,13 +1,12 @@ ItemDef( name: "Leafy Wraps", description: "Leaves help hide the magic-interlocking twigs, and provide mild protection from the elements.", - kind: Armor( - ( - kind: Hand("Twigsleaves"), - stats: ( - protection: Normal(6.0) - ), - ) - ), + kind: Armor(( + kind: Hand("Twigsleaves"), + stats: ( + protection: Normal(6.0), + poise_resilience: Normal(7.0), + ), + )), quality: Moderate, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/hand/velorite_mage_0.ron b/assets/common/items/armor/hand/velorite_mage_0.ron index 64a6e0ebb4..9872fae4bd 100644 --- a/assets/common/items/armor/hand/velorite_mage_0.ron +++ b/assets/common/items/armor/hand/velorite_mage_0.ron @@ -1,13 +1,12 @@ ItemDef( name: "Velorite Battlemage Gauntlets", description: "", - kind: Armor( - ( - kind: Hand("VeloriteMage0"), - stats: ( - protection: Normal(11.5) - ), - ) - ), + kind: Armor(( + kind: Hand("VeloriteMage0"), + stats: ( + protection: Normal(11.5), + poise_resilience: Normal(13.0), + ), + )), quality: High, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/hand/warlock.ron b/assets/common/items/armor/hand/warlock.ron index 371868f9ec..1c36991322 100644 --- a/assets/common/items/armor/hand/warlock.ron +++ b/assets/common/items/armor/hand/warlock.ron @@ -1,12 +1,12 @@ ItemDef( name: "Warlock Gloves", description: "Belong to a mighty warlock.", - kind: Armor( - ( - kind: Hand("Warlock"), - stats: ( - protection: Normal(15.0)), - ) - ), + kind: Armor(( + kind: Hand("Warlock"), + stats: ( + protection: Normal(15.0), + poise_resilience: Normal(16.0), + ), + )), quality: Common, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/hand/warlord.ron b/assets/common/items/armor/hand/warlord.ron index b923282a31..acb84db01d 100644 --- a/assets/common/items/armor/hand/warlord.ron +++ b/assets/common/items/armor/hand/warlord.ron @@ -1,12 +1,12 @@ ItemDef( name: "Warlord Handguards", description: "Belong to a mighty warlord.", - kind: Armor( - ( - kind: Hand("Warlord"), - stats: ( - protection: Normal(15.0)), - ) - ), + kind: Armor(( + kind: Hand("Warlord"), + stats: ( + protection: Normal(15.0), + poise_resilience: Normal(14.0), + ), + )), quality: Common, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/head/assa_mask_0.ron b/assets/common/items/armor/head/assa_mask_0.ron index b68f0f32a9..5d25c4be52 100644 --- a/assets/common/items/armor/head/assa_mask_0.ron +++ b/assets/common/items/armor/head/assa_mask_0.ron @@ -1,13 +1,12 @@ ItemDef( name: "Dark Assassin Mask", description: "A general assassination mask preventing the wearer from being identified.", - kind: Armor( - ( - kind: Head("AssaMask0"), - stats: ( - protection: Normal(0.0) - ), - ) - ), + kind: Armor(( + kind: Head("AssaMask0"), + stats: ( + protection: Normal(0.0), + poise_resilience: Normal(0.0), + ), + )), quality: Moderate, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/head/leather_0.ron b/assets/common/items/armor/head/leather_0.ron index 7844e0f34e..fe175bac01 100644 --- a/assets/common/items/armor/head/leather_0.ron +++ b/assets/common/items/armor/head/leather_0.ron @@ -1,12 +1,12 @@ ItemDef( name: "Swift Leather Cap", description: "Swift like the wind.", - kind: Armor( - ( - kind: Head("Leather0"), - stats: ( - protection: Normal(0.0)), - ) - ), + kind: Armor(( + kind: Head("Leather0"), + stats: ( + protection: Normal(0.0), + poise_resilience: Normal(0.0), + ), + )), quality: Common, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/head/warlock.ron b/assets/common/items/armor/head/warlock.ron index b0a56ec629..6d0182716b 100644 --- a/assets/common/items/armor/head/warlock.ron +++ b/assets/common/items/armor/head/warlock.ron @@ -1,12 +1,12 @@ ItemDef( name: "Warlock", description: "Belong to a mighty warlock.", - kind: Armor( - ( - kind: Head("Warlock"), - stats: ( - protection: Normal(10.0)), - ) - ), + kind: Armor(( + kind: Head("Warlock"), + stats: ( + protection: Normal(10.0), + poise_resilience: Normal(10.0), + ), + )), quality: Common, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/head/warlord.ron b/assets/common/items/armor/head/warlord.ron index 6ecc46f802..b505dd0dcf 100644 --- a/assets/common/items/armor/head/warlord.ron +++ b/assets/common/items/armor/head/warlord.ron @@ -1,12 +1,12 @@ ItemDef( name: "Warlord Helmet", description: "Belong to a mighty warlord.", - kind: Armor( - ( - kind: Head("Warlord"), - stats: ( - protection: Normal(10.0)), - ) - ), + kind: Armor(( + kind: Head("Warlord"), + stats: ( + protection: Normal(10.0), + poise_resilience: Normal(10.0), + ), + )), quality: Common, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/neck/neck_0.ron b/assets/common/items/armor/neck/neck_0.ron index 8f2a59e977..e31aacb465 100644 --- a/assets/common/items/armor/neck/neck_0.ron +++ b/assets/common/items/armor/neck/neck_0.ron @@ -1,12 +1,12 @@ ItemDef( name: "Plain Necklace", - description: "It's become tarnished with age.", - kind: Armor( - ( - kind: Neck("Neck0"), - stats: ( - protection: Normal(1.0)), - ) - ), + description: "It\'s become tarnished with age.", + kind: Armor(( + kind: Neck("Neck0"), + stats: ( + protection: Normal(1.0), + poise_resilience: Normal(1.0), + ), + )), quality: Common, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/neck/neck_1.ron b/assets/common/items/armor/neck/neck_1.ron index 0820a2731c..df762fb5cd 100644 --- a/assets/common/items/armor/neck/neck_1.ron +++ b/assets/common/items/armor/neck/neck_1.ron @@ -1,13 +1,12 @@ ItemDef( name: "Gem of lesser Protection", description: "Surrounded by a discrete magical glow.", - kind: Armor( - ( - kind: Neck("Neck1"), - stats: ( - protection: Normal(2.0) - ), - ) - ), + kind: Armor(( + kind: Neck("Neck1"), + stats: ( + protection: Normal(2.0), + poise_resilience: Normal(1.0), + ), + )), quality: Moderate, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/pants/assassin.ron b/assets/common/items/armor/pants/assassin.ron index 9de8dc7603..c2829143cf 100644 --- a/assets/common/items/armor/pants/assassin.ron +++ b/assets/common/items/armor/pants/assassin.ron @@ -1,13 +1,12 @@ ItemDef( name: "Assassin Pants", description: "Only the best for a member of the creed.", - kind: Armor( - ( - kind: Pants("Assassin"), - stats: ( - protection: Normal(10.0) - ), - ) - ), + kind: Armor(( + kind: Pants("Assassin"), + stats: ( + protection: Normal(10.0), + poise_resilience: Normal(3.0), + ), + )), quality: Moderate, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/pants/bonerattler.ron b/assets/common/items/armor/pants/bonerattler.ron index 73aa86acf7..2f2048240a 100644 --- a/assets/common/items/armor/pants/bonerattler.ron +++ b/assets/common/items/armor/pants/bonerattler.ron @@ -1,12 +1,12 @@ ItemDef( name: "Bonerattler Chausses", - description: "Assorted bones and hide from a bonerattler provide protection around the wearer's legs.", - kind: Armor( - ( - kind: Pants("Bonerattler"), - stats: ( - protection: Normal(20.0)), - ) - ), + description: "Assorted bones and hide from a bonerattler provide protection around the wearer\'s legs.", + kind: Armor(( + kind: Pants("Bonerattler"), + stats: ( + protection: Normal(20.0), + poise_resilience: Normal(24.0), + ), + )), quality: High, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/pants/cloth_blue_0.ron b/assets/common/items/armor/pants/cloth_blue_0.ron index 6ea7360ec6..f48e6f4a93 100644 --- a/assets/common/items/armor/pants/cloth_blue_0.ron +++ b/assets/common/items/armor/pants/cloth_blue_0.ron @@ -1,12 +1,12 @@ ItemDef( name: "Blue Linen Skirt", description: "A stylish, rough fabric skirt, dyed blue.", - kind: Armor( - ( - kind: Pants("ClothBlue0"), - stats: ( - protection: Normal(1.0)), - ) - ), + kind: Armor(( + kind: Pants("ClothBlue0"), + stats: ( + protection: Normal(1.0), + poise_resilience: Normal(1.0), + ), + )), quality: Common, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/pants/cloth_green_0.ron b/assets/common/items/armor/pants/cloth_green_0.ron index 7371957d6d..0002d26a10 100644 --- a/assets/common/items/armor/pants/cloth_green_0.ron +++ b/assets/common/items/armor/pants/cloth_green_0.ron @@ -1,12 +1,12 @@ ItemDef( name: "Green Linen Skirt", description: "A stylish, rough fabric skirt, dyed green.", - kind: Armor( - ( - kind: Pants("ClothGreen0"), - stats: ( - protection: Normal(1.0)), - ) - ), + kind: Armor(( + kind: Pants("ClothGreen0"), + stats: ( + protection: Normal(1.0), + poise_resilience: Normal(1.0), + ), + )), quality: Common, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/pants/cloth_purple_0.ron b/assets/common/items/armor/pants/cloth_purple_0.ron index 155e26b9e8..f0e7f6d519 100644 --- a/assets/common/items/armor/pants/cloth_purple_0.ron +++ b/assets/common/items/armor/pants/cloth_purple_0.ron @@ -1,12 +1,12 @@ ItemDef( name: "Purple Linen Skirt", description: "A stylish, rough fabric skirt, dyed purple.", - kind: Armor( - ( - kind: Pants("ClothPurple0"), - stats: ( - protection: Normal(1.0)), - ) - ), + kind: Armor(( + kind: Pants("ClothPurple0"), + stats: ( + protection: Normal(1.0), + poise_resilience: Normal(1.0), + ), + )), quality: Common, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/pants/cultist_legs_blue.ron b/assets/common/items/armor/pants/cultist_legs_blue.ron index 4f965a7355..f58ef00f72 100644 --- a/assets/common/items/armor/pants/cultist_legs_blue.ron +++ b/assets/common/items/armor/pants/cultist_legs_blue.ron @@ -1,12 +1,12 @@ ItemDef( name: "Velorite Skirt", description: "Ceremonial attire used by members.", - kind: Armor( - ( - kind: Pants("VeloriteMage0"), - stats: ( - protection: Normal(24.0)), - ) - ), + kind: Armor(( + kind: Pants("VeloriteMage0"), + stats: ( + protection: Normal(24.0), + poise_resilience: Normal(10.0), + ), + )), quality: Epic, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/pants/cultist_legs_purple.ron b/assets/common/items/armor/pants/cultist_legs_purple.ron index 8863aad0f9..007a27b19b 100644 --- a/assets/common/items/armor/pants/cultist_legs_purple.ron +++ b/assets/common/items/armor/pants/cultist_legs_purple.ron @@ -1,12 +1,12 @@ ItemDef( name: "Purple Cultist Skirt", description: "Ceremonial attire used by members.", - kind: Armor( - ( - kind: Pants("CultistPurple"), - stats: ( - protection: Normal(24.0)), - ) - ), + kind: Armor(( + kind: Pants("CultistPurple"), + stats: ( + protection: Normal(24.0), + poise_resilience: Normal(14.0), + ), + )), quality: Epic, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/pants/druid.ron b/assets/common/items/armor/pants/druid.ron index 31a6d529a6..fdca0d659e 100644 --- a/assets/common/items/armor/pants/druid.ron +++ b/assets/common/items/armor/pants/druid.ron @@ -1,13 +1,12 @@ ItemDef( - name: "Druid's Kilt", + name: "Druid\'s Kilt", description: "Feel the breeze!", - kind: Armor( - ( - kind: Pants("Druid"), - stats: ( - protection: Normal(4.0) - ), - ) - ), + kind: Armor(( + kind: Pants("Druid"), + stats: ( + protection: Normal(4.0), + poise_resilience: Normal(2.0), + ), + )), quality: Moderate, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/pants/hunting.ron b/assets/common/items/armor/pants/hunting.ron index 1a0b0fba47..ac8258c1c1 100644 --- a/assets/common/items/armor/pants/hunting.ron +++ b/assets/common/items/armor/pants/hunting.ron @@ -1,13 +1,12 @@ ItemDef( name: "Hunting Pants", description: "Crafted from soft, supple leather.", - kind: Armor( - ( - kind: Pants("Hunting"), - stats: ( - protection: Normal(8.0) - ), - ) - ), + kind: Armor(( + kind: Pants("Hunting"), + stats: ( + protection: Normal(8.0), + poise_resilience: Normal(3.0), + ), + )), quality: Moderate, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/pants/leather_0.ron b/assets/common/items/armor/pants/leather_0.ron index 7546ee2c25..f1d0924839 100644 --- a/assets/common/items/armor/pants/leather_0.ron +++ b/assets/common/items/armor/pants/leather_0.ron @@ -1,12 +1,12 @@ ItemDef( name: "Swift Pants", description: "Swift like the wind.", - kind: Armor( - ( - kind: Pants("Leather0"), - stats: ( - protection: Normal(8.0)), - ) - ), + kind: Armor(( + kind: Pants("Leather0"), + stats: ( + protection: Normal(8.0), + poise_resilience: Normal(4.0), + ), + )), quality: Common, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/pants/leather_2.ron b/assets/common/items/armor/pants/leather_2.ron index 910b966416..22b363abfd 100644 --- a/assets/common/items/armor/pants/leather_2.ron +++ b/assets/common/items/armor/pants/leather_2.ron @@ -1,12 +1,12 @@ ItemDef( name: "Leather Leg Armour", description: "Leg armour made of simple leather.", - kind: Armor( - ( - kind: Pants("Leather2"), - stats: ( - protection: Normal(8.0)), - ) - ), + kind: Armor(( + kind: Pants("Leather2"), + stats: ( + protection: Normal(8.0), + poise_resilience: Normal(4.0), + ), + )), quality: Common, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/pants/leather_adventurer.ron b/assets/common/items/armor/pants/leather_adventurer.ron index 7bde4e749c..5ee6f11da7 100644 --- a/assets/common/items/armor/pants/leather_adventurer.ron +++ b/assets/common/items/armor/pants/leather_adventurer.ron @@ -1,13 +1,12 @@ ItemDef( name: "Agile Pantalons", - description: "'Tightly packed pieces of leather to endure all weather.'", - kind: Armor( - ( - kind: Pants("Leather2"), - stats: ( - protection: Normal(6.0) - ), - ) - ), + description: "\'Tightly packed pieces of leather to endure all weather.\'", + kind: Armor(( + kind: Pants("Leather2"), + stats: ( + protection: Normal(6.0), + poise_resilience: Normal(3.0), + ), + )), quality: Moderate, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/pants/plate_green_0.ron b/assets/common/items/armor/pants/plate_green_0.ron index 59dd99ad58..dec3ed0d36 100644 --- a/assets/common/items/armor/pants/plate_green_0.ron +++ b/assets/common/items/armor/pants/plate_green_0.ron @@ -1,13 +1,12 @@ ItemDef( name: "Iron Legguards", description: "Heavy iron plate formed into protective greaves, decorated with rough green fabric.", - kind: Armor( - ( - kind: Pants("PlateGreen0"), - stats: ( - protection: Normal(16.0) - ), - ) - ), + kind: Armor(( + kind: Pants("PlateGreen0"), + stats: ( + protection: Normal(16.0), + poise_resilience: Normal(14.0), + ), + )), quality: Moderate, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/pants/rugged.ron b/assets/common/items/armor/pants/rugged.ron new file mode 100644 index 0000000000..4c8d4ac65a --- /dev/null +++ b/assets/common/items/armor/pants/rugged.ron @@ -0,0 +1,12 @@ +ItemDef( + name: "Rugged Commoner\'s Pants", + description: "They remind you of the old days.", + kind: Armor(( + kind: Pants("Rugged0"), + stats: ( + protection: Normal(1.0), + poise_resilience: Normal(1.0), + ), + )), + quality: Low, +) \ No newline at end of file diff --git a/assets/common/items/armor/pants/steel_0.ron b/assets/common/items/armor/pants/steel_0.ron index c5ed8c7a8e..a4107db885 100644 --- a/assets/common/items/armor/pants/steel_0.ron +++ b/assets/common/items/armor/pants/steel_0.ron @@ -1,13 +1,12 @@ ItemDef( name: "Steel Chausses", description: "The metal alloy provides improvements to fit, durability, and lightness.", - kind: Armor( - ( - kind: Pants("Steel0"), - stats: ( - protection: Normal(20.0) - ), - ) - ), + kind: Armor(( + kind: Pants("Steel0"), + stats: ( + protection: Normal(20.0), + poise_resilience: Normal(26.0), + ), + )), quality: Moderate, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/pants/tarasque.ron b/assets/common/items/armor/pants/tarasque.ron index e82af5f2cc..320a0da07b 100644 --- a/assets/common/items/armor/pants/tarasque.ron +++ b/assets/common/items/armor/pants/tarasque.ron @@ -1,12 +1,12 @@ ItemDef( name: "Tarasque Chausses", description: "Fragmented tarasque shell tied together to form protective leg armor.", - kind: Armor( - ( - kind: Pants("Tarasque"), - stats: ( - protection: Normal(20.0)), - ) - ), + kind: Armor(( + kind: Pants("Tarasque"), + stats: ( + protection: Normal(20.0), + poise_resilience: Normal(13.0), + ), + )), quality: High, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/pants/twig.ron b/assets/common/items/armor/pants/twig.ron index 773a392b75..6cf14421dd 100644 --- a/assets/common/items/armor/pants/twig.ron +++ b/assets/common/items/armor/pants/twig.ron @@ -1,13 +1,12 @@ ItemDef( name: "Twig Pants", description: "Magically imbued twigs formed into links similar to chainmail.", - kind: Armor( - ( - kind: Pants("Twig"), - stats: ( - protection: Normal(12.0) - ), - ) - ), + kind: Armor(( + kind: Pants("Twig"), + stats: ( + protection: Normal(12.0), + poise_resilience: Normal(9.0), + ), + )), quality: Moderate, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/pants/twigsflowers.ron b/assets/common/items/armor/pants/twigsflowers.ron index cfd06d0c74..91d894ed1e 100644 --- a/assets/common/items/armor/pants/twigsflowers.ron +++ b/assets/common/items/armor/pants/twigsflowers.ron @@ -1,13 +1,12 @@ ItemDef( name: "Flowery Pants", description: "Chainmail woven twigs enhanced with flower stems to provide protection and peace.", - kind: Armor( - ( - kind: Pants("Twigsflowers"), - stats: ( - protection: Normal(12.0) - ), - ) - ), + kind: Armor(( + kind: Pants("Twigsflowers"), + stats: ( + protection: Normal(12.0), + poise_resilience: Normal(4.0), + ), + )), quality: Moderate, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/pants/twigsleaves.ron b/assets/common/items/armor/pants/twigsleaves.ron index c121ac383a..b100aade6d 100644 --- a/assets/common/items/armor/pants/twigsleaves.ron +++ b/assets/common/items/armor/pants/twigsleaves.ron @@ -1,13 +1,12 @@ ItemDef( name: "Leafy Pants", description: "Leaves cover the magically imbued chainmail twigs, providing protection from the elements.", - kind: Armor( - ( - kind: Pants("Twigsleaves"), - stats: ( - protection: Normal(12.0) - ), - ) - ), + kind: Armor(( + kind: Pants("Twigsleaves"), + stats: ( + protection: Normal(12.0), + poise_resilience: Normal(8.0), + ), + )), quality: Moderate, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/pants/velorite_mage_0.ron b/assets/common/items/armor/pants/velorite_mage_0.ron index c8e7093470..bc30434a1d 100644 --- a/assets/common/items/armor/pants/velorite_mage_0.ron +++ b/assets/common/items/armor/pants/velorite_mage_0.ron @@ -1,13 +1,12 @@ ItemDef( name: "Velorite Battlemage Kilt", description: "", - kind: Armor( - ( - kind: Pants("VeloriteMage0"), - stats: ( - protection: Normal(23.0) - ), - ) - ), + kind: Armor(( + kind: Pants("VeloriteMage0"), + stats: ( + protection: Normal(23.0), + poise_resilience: Normal(23.0), + ), + )), quality: High, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/pants/warlock.ron b/assets/common/items/armor/pants/warlock.ron index 782b2bbf05..f03da6f0e2 100644 --- a/assets/common/items/armor/pants/warlock.ron +++ b/assets/common/items/armor/pants/warlock.ron @@ -1,13 +1,12 @@ ItemDef( name: "Warlock Kilt", description: "Belong to a mighty warlock.", - kind: Armor( - ( - kind: Pants("Warlock"), - stats: ( - protection: Normal(30.0) - ), - ) - ), + kind: Armor(( + kind: Pants("Warlock"), + stats: ( + protection: Normal(30.0), + poise_resilience: Normal(20.0), + ), + )), quality: Moderate, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/pants/warlord.ron b/assets/common/items/armor/pants/warlord.ron index 3836043c68..a7b8e06a13 100644 --- a/assets/common/items/armor/pants/warlord.ron +++ b/assets/common/items/armor/pants/warlord.ron @@ -1,13 +1,12 @@ ItemDef( name: "Warlord Legguards", description: "Belong to a mighty warlord.", - kind: Armor( - ( - kind: Pants("Warlord"), - stats: ( - protection: Normal(30.0) - ), - ) - ), + kind: Armor(( + kind: Pants("Warlord"), + stats: ( + protection: Normal(30.0), + poise_resilience: Normal(24.0), + ), + )), quality: Moderate, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/pants/worker_blue_0.ron b/assets/common/items/armor/pants/worker_blue_0.ron index 8d5faa1e14..9296727f21 100644 --- a/assets/common/items/armor/pants/worker_blue_0.ron +++ b/assets/common/items/armor/pants/worker_blue_0.ron @@ -1,12 +1,12 @@ ItemDef( name: "Blue Worker Pants", description: "Pants used by a farmer, until recently.", - kind: Armor( - ( - kind: Pants("WorkerBlue0"), - stats: ( - protection: Normal(1.0)), - ) - ), + kind: Armor(( + kind: Pants("WorkerBlue0"), + stats: ( + protection: Normal(1.0), + poise_resilience: Normal(1.0), + ), + )), quality: Low, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/ring/ring_0.ron b/assets/common/items/armor/ring/ring_0.ron index fbcda86466..923f2466fa 100644 --- a/assets/common/items/armor/ring/ring_0.ron +++ b/assets/common/items/armor/ring/ring_0.ron @@ -1,12 +1,12 @@ ItemDef( name: "Scratched Ring", description: "Barely fits your finger.", - kind: Armor( - ( - kind: Ring("Ring0"), - stats: ( - protection: Normal(0.1)), - ) - ), + kind: Armor(( + kind: Ring("Ring0"), + stats: ( + protection: Normal(0.1), + poise_resilience: Normal(0.0), + ), + )), quality: Low, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/ring/ring_gold_0.ron b/assets/common/items/armor/ring/ring_gold_0.ron index 30a880c69d..256c3fa02f 100644 --- a/assets/common/items/armor/ring/ring_gold_0.ron +++ b/assets/common/items/armor/ring/ring_gold_0.ron @@ -1,12 +1,12 @@ ItemDef( name: "Gold Ring", description: "Someone is surely missing it...", - kind: Armor( - ( - kind: Ring("RingGold0"), - stats: ( - protection: Normal(0.5)), - ) - ), + kind: Armor(( + kind: Ring("RingGold0"), + stats: ( + protection: Normal(0.5), + poise_resilience: Normal(0.0), + ), + )), quality: Moderate, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/ring/ring_purp_high_0.ron b/assets/common/items/armor/ring/ring_purp_high_0.ron index addad514be..8ba421fdf8 100644 --- a/assets/common/items/armor/ring/ring_purp_high_0.ron +++ b/assets/common/items/armor/ring/ring_purp_high_0.ron @@ -1,12 +1,12 @@ ItemDef( name: "Cultist Signet Ring ", description: "Once belonged to a cultist.", - kind: Armor( - ( - kind: Ring("RingSkull0"), - stats: ( - protection: Normal(3.0)), - ) - ), + kind: Armor(( + kind: Ring("RingSkull0"), + stats: ( + protection: Normal(3.0), + poise_resilience: Normal(1.0), + ), + )), quality: High, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/shoulder/assassin.ron b/assets/common/items/armor/shoulder/assassin.ron index 7ab33f9c58..3e5df29267 100644 --- a/assets/common/items/armor/shoulder/assassin.ron +++ b/assets/common/items/armor/shoulder/assassin.ron @@ -1,13 +1,12 @@ ItemDef( name: "Assassin Shoulder Guard", description: "Only the best for a member of the creed.", - kind: Armor( - ( - kind: Shoulder("Assassin"), - stats: ( - protection: Normal(8.0) - ), - ) - ), + kind: Armor(( + kind: Shoulder("Assassin"), + stats: ( + protection: Normal(8.0), + poise_resilience: Normal(7.0), + ), + )), quality: Moderate, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/shoulder/bonerattler.ron b/assets/common/items/armor/shoulder/bonerattler.ron index 2168901ca6..0ced92ba0c 100644 --- a/assets/common/items/armor/shoulder/bonerattler.ron +++ b/assets/common/items/armor/shoulder/bonerattler.ron @@ -1,12 +1,12 @@ ItemDef( name: "Bonerattler Shoulder Pad", description: "Roughly formed bonerattler hide provide some strong protection.", - kind: Armor( - ( - kind: Shoulder("Bonerattler"), - stats: ( - protection: Normal(15.0)), - ) - ), + kind: Armor(( + kind: Shoulder("Bonerattler"), + stats: ( + protection: Normal(15.0), + poise_resilience: Normal(17.0), + ), + )), quality: High, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/shoulder/cloth_blue_0.ron b/assets/common/items/armor/shoulder/cloth_blue_0.ron index a8f683b171..0eeb743252 100644 --- a/assets/common/items/armor/shoulder/cloth_blue_0.ron +++ b/assets/common/items/armor/shoulder/cloth_blue_0.ron @@ -1,12 +1,12 @@ ItemDef( name: "Blue Linen Coat", description: "A rough fabric coat, dyed blue.", - kind: Armor( - ( - kind: Shoulder("ClothBlue0"), - stats: ( - protection: Normal(1.0)), - ) - ), + kind: Armor(( + kind: Shoulder("ClothBlue0"), + stats: ( + protection: Normal(1.0), + poise_resilience: Normal(1.0), + ), + )), quality: Common, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/shoulder/cloth_blue_1.ron b/assets/common/items/armor/shoulder/cloth_blue_1.ron index 43cd74fcfa..944e6ebb51 100644 --- a/assets/common/items/armor/shoulder/cloth_blue_1.ron +++ b/assets/common/items/armor/shoulder/cloth_blue_1.ron @@ -1,12 +1,12 @@ ItemDef( name: "Blue Cloth Pads", description: "Simple shoulderpads made from blue cloth.", - kind: Armor( - ( - kind: Shoulder("ClothBlue1"), - stats: ( - protection: Normal(1.0)), - ) - ), + kind: Armor(( + kind: Shoulder("ClothBlue1"), + stats: ( + protection: Normal(1.0), + poise_resilience: Normal(1.0), + ), + )), quality: Common, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/shoulder/cloth_green_0.ron b/assets/common/items/armor/shoulder/cloth_green_0.ron index 30409c7778..960c32da5d 100644 --- a/assets/common/items/armor/shoulder/cloth_green_0.ron +++ b/assets/common/items/armor/shoulder/cloth_green_0.ron @@ -1,12 +1,12 @@ ItemDef( name: "Green Linen Coat", description: "A rough fabric coat, dyed green.", - kind: Armor( - ( - kind: Shoulder("ClothGreen0"), - stats: ( - protection: Normal(1.0)), - ) - ), + kind: Armor(( + kind: Shoulder("ClothGreen0"), + stats: ( + protection: Normal(1.0), + poise_resilience: Normal(1.0), + ), + )), quality: Common, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/shoulder/cloth_purple_0.ron b/assets/common/items/armor/shoulder/cloth_purple_0.ron index ad81ea146b..0ee60100ed 100644 --- a/assets/common/items/armor/shoulder/cloth_purple_0.ron +++ b/assets/common/items/armor/shoulder/cloth_purple_0.ron @@ -1,12 +1,12 @@ ItemDef( name: "Purple Linen Coat", description: "A rough fabric coat, dyed purple.", - kind: Armor( - ( - kind: Shoulder("ClothPurple0"), - stats: ( - protection: Normal(1.0)), - ) - ), + kind: Armor(( + kind: Shoulder("ClothPurple0"), + stats: ( + protection: Normal(1.0), + poise_resilience: Normal(1.0), + ), + )), quality: Common, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/shoulder/cultist_shoulder_blue.ron b/assets/common/items/armor/shoulder/cultist_shoulder_blue.ron index 7f07f1797f..37723c5c80 100644 --- a/assets/common/items/armor/shoulder/cultist_shoulder_blue.ron +++ b/assets/common/items/armor/shoulder/cultist_shoulder_blue.ron @@ -1,12 +1,12 @@ ItemDef( name: "Velorite Mantle", description: "Ceremonial attire used by members.", - kind: Armor( - ( - kind: Shoulder("VeloriteMage0"), - stats: ( - protection: Normal(18.0)), - ) - ), + kind: Armor(( + kind: Shoulder("VeloriteMage0"), + stats: ( + protection: Normal(18.0), + poise_resilience: Normal(10.0), + ), + )), quality: Epic, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/shoulder/cultist_shoulder_purple.ron b/assets/common/items/armor/shoulder/cultist_shoulder_purple.ron index 3d11f7a84d..021447aa44 100644 --- a/assets/common/items/armor/shoulder/cultist_shoulder_purple.ron +++ b/assets/common/items/armor/shoulder/cultist_shoulder_purple.ron @@ -1,12 +1,12 @@ ItemDef( name: "Purple Cultist Mantle", description: "Ceremonial attire used by members.", - kind: Armor( - ( - kind: Shoulder("CultistPurple"), - stats: ( - protection: Normal(18.0)), - ) - ), + kind: Armor(( + kind: Shoulder("CultistPurple"), + stats: ( + protection: Normal(18.0), + poise_resilience: Normal(10.0), + ), + )), quality: Epic, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/shoulder/druidshoulder.ron b/assets/common/items/armor/shoulder/druidshoulder.ron index fafffff09f..570e1cfaa2 100644 --- a/assets/common/items/armor/shoulder/druidshoulder.ron +++ b/assets/common/items/armor/shoulder/druidshoulder.ron @@ -1,12 +1,12 @@ ItemDef( name: "Druid Shoulders", description: "Forged for protectors of the wild.", - kind: Armor( - ( - kind: Shoulder("DruidShoulder"), - stats: ( - protection: Normal(3.0)), - ) - ), + kind: Armor(( + kind: Shoulder("DruidShoulder"), + stats: ( + protection: Normal(3.0), + poise_resilience: Normal(6.0), + ), + )), quality: Common, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/shoulder/iron_spikes.ron b/assets/common/items/armor/shoulder/iron_spikes.ron index 6dadb09b87..4e5af911ff 100644 --- a/assets/common/items/armor/shoulder/iron_spikes.ron +++ b/assets/common/items/armor/shoulder/iron_spikes.ron @@ -1,13 +1,12 @@ ItemDef( name: "Iron Spiked Pauldrons", description: "The heavy, rough iron plate has an interlocking spikes shoved through several slots in the center to dissuade attackers.", - kind: Armor( - ( - kind: Shoulder("IronSpikes"), - stats: ( - protection: Normal(12.0) - ), - ) - ), + kind: Armor(( + kind: Shoulder("IronSpikes"), + stats: ( + protection: Normal(12.0), + poise_resilience: Normal(15.0), + ), + )), quality: Moderate, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/shoulder/leather_0.ron b/assets/common/items/armor/shoulder/leather_0.ron index ea2bd0888c..8b8319b90f 100644 --- a/assets/common/items/armor/shoulder/leather_0.ron +++ b/assets/common/items/armor/shoulder/leather_0.ron @@ -1,12 +1,12 @@ ItemDef( name: "Leather Pauldrons", description: "Animal hide tanned and formed into shoulder pads.", - kind: Armor( - ( - kind: Shoulder("Leather0"), - stats: ( - protection: Normal(6.0)), - ) - ), + kind: Armor(( + kind: Shoulder("Leather0"), + stats: ( + protection: Normal(6.0), + poise_resilience: Normal(3.0), + ), + )), quality: Common, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/shoulder/leather_1.ron b/assets/common/items/armor/shoulder/leather_1.ron index 0a80a4a8a3..93bb62655d 100644 --- a/assets/common/items/armor/shoulder/leather_1.ron +++ b/assets/common/items/armor/shoulder/leather_1.ron @@ -1,12 +1,12 @@ ItemDef( name: "Swift Shoulderpads", description: "Swift like the wind.", - kind: Armor( - ( - kind: Shoulder("Leather1"), - stats: ( - protection: Normal(6.0)), - ) - ), + kind: Armor(( + kind: Shoulder("Leather1"), + stats: ( + protection: Normal(6.0), + poise_resilience: Normal(5.0), + ), + )), quality: Common, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/shoulder/leather_2.ron b/assets/common/items/armor/shoulder/leather_2.ron index 4a05c53bbd..f021dd2ec5 100644 --- a/assets/common/items/armor/shoulder/leather_2.ron +++ b/assets/common/items/armor/shoulder/leather_2.ron @@ -1,12 +1,12 @@ ItemDef( name: "Leather Shoulder Pad", description: "A simple shoulder pad made of leather.", - kind: Armor( - ( - kind: Shoulder("Leather2"), - stats: ( - protection: Normal(6.0)), - ) - ), + kind: Armor(( + kind: Shoulder("Leather2"), + stats: ( + protection: Normal(6.0), + poise_resilience: Normal(2.0), + ), + )), quality: Common, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/shoulder/leather_adventurer.ron b/assets/common/items/armor/shoulder/leather_adventurer.ron index b1a7c9fe95..03cf73bf83 100644 --- a/assets/common/items/armor/shoulder/leather_adventurer.ron +++ b/assets/common/items/armor/shoulder/leather_adventurer.ron @@ -1,13 +1,12 @@ ItemDef( name: "Agile Guards", - description: "'Tightly packed pieces of leather to endure all weather.'", - kind: Armor( - ( - kind: Shoulder("Leather2"), - stats: ( - protection: Normal(8.0) - ), - ) - ), + description: "Tightly packed pieces of leather to endure all weather.", + kind: Armor(( + kind: Shoulder("Leather2"), + stats: ( + protection: Normal(8.0), + poise_resilience: Normal(4.0), + ), + )), quality: Moderate, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/shoulder/leather_iron_0.ron b/assets/common/items/armor/shoulder/leather_iron_0.ron index 84731d1446..5bb268473e 100644 --- a/assets/common/items/armor/shoulder/leather_iron_0.ron +++ b/assets/common/items/armor/shoulder/leather_iron_0.ron @@ -1,12 +1,12 @@ ItemDef( name: "Iron and Leather Spaulders", description: "Leather shoulders decorated with heavy iron hooks provide protection to the wearer.", - kind: Armor( - ( - kind: Shoulder("IronLeather0"), - stats: ( - protection: Normal(9.0)), - ) - ), + kind: Armor(( + kind: Shoulder("IronLeather0"), + stats: ( + protection: Normal(9.0), + poise_resilience: Normal(5.0), + ), + )), quality: Common, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/shoulder/leather_iron_1.ron b/assets/common/items/armor/shoulder/leather_iron_1.ron index 31d9e2ee1e..84a229e827 100644 --- a/assets/common/items/armor/shoulder/leather_iron_1.ron +++ b/assets/common/items/armor/shoulder/leather_iron_1.ron @@ -1,12 +1,12 @@ ItemDef( name: "Iron and Leather Spaulders", description: "Leather inset with heavy iron spikes provide solid protection to the wearer.", - kind: Armor( - ( - kind: Shoulder("IronLeather1"), - stats: ( - protection: Normal(9.0)), - ) - ), + kind: Armor(( + kind: Shoulder("IronLeather1"), + stats: ( + protection: Normal(9.0), + poise_resilience: Normal(10.0), + ), + )), quality: Common, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/shoulder/leather_iron_2.ron b/assets/common/items/armor/shoulder/leather_iron_2.ron index 2bc7a82817..710e093419 100644 --- a/assets/common/items/armor/shoulder/leather_iron_2.ron +++ b/assets/common/items/armor/shoulder/leather_iron_2.ron @@ -1,12 +1,12 @@ ItemDef( name: "Iron and Leather Spaulders", description: "Leather inset with heavy iron bands provide protection to the wearer.", - kind: Armor( - ( - kind: Shoulder("IronLeather2"), - stats: ( - protection: Normal(9.0)), - ) - ), + kind: Armor(( + kind: Shoulder("IronLeather2"), + stats: ( + protection: Normal(9.0), + poise_resilience: Normal(8.0), + ), + )), quality: Common, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/shoulder/leather_iron_3.ron b/assets/common/items/armor/shoulder/leather_iron_3.ron index 181eb465af..54368c633f 100644 --- a/assets/common/items/armor/shoulder/leather_iron_3.ron +++ b/assets/common/items/armor/shoulder/leather_iron_3.ron @@ -1,12 +1,12 @@ ItemDef( name: "Iron and Leather Spaulders", description: "Leather inset with iron fragments provide protection to the wearer.", - kind: Armor( - ( - kind: Shoulder("IronLeather3"), - stats: ( - protection: Normal(9.0)), - ) - ), + kind: Armor(( + kind: Shoulder("IronLeather3"), + stats: ( + protection: Normal(9.0), + poise_resilience: Normal(5.0), + ), + )), quality: Common, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/shoulder/leather_strips.ron b/assets/common/items/armor/shoulder/leather_strips.ron index a47ae472cc..7d28b59695 100644 --- a/assets/common/items/armor/shoulder/leather_strips.ron +++ b/assets/common/items/armor/shoulder/leather_strips.ron @@ -1,12 +1,12 @@ ItemDef( name: "Leather Strips", description: "Tanned animal hide strips formed into loose shoulder pads.", - kind: Armor( - ( - kind: Shoulder("LeatherStrips"), - stats: ( - protection: Normal(4.0)), - ) - ), + kind: Armor(( + kind: Shoulder("LeatherStrips"), + stats: ( + protection: Normal(4.0), + poise_resilience: Normal(1.0), + ), + )), quality: Low, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/shoulder/plate_0.ron b/assets/common/items/armor/shoulder/plate_0.ron index c92f2be8eb..e7b45ab80e 100644 --- a/assets/common/items/armor/shoulder/plate_0.ron +++ b/assets/common/items/armor/shoulder/plate_0.ron @@ -1,13 +1,12 @@ ItemDef( name: "Iron Shoulderguards", description: "Heavy iron shoulder protection.", - kind: Armor( - ( - kind: Shoulder("Plate0"), - stats: ( - protection: Normal(12.0) - ), - ) - ), + kind: Armor(( + kind: Shoulder("Plate0"), + stats: ( + protection: Normal(12.0), + poise_resilience: Normal(16.0), + ), + )), quality: Moderate, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/shoulder/steel_0.ron b/assets/common/items/armor/shoulder/steel_0.ron index caec1c6619..58c2e2e82f 100644 --- a/assets/common/items/armor/shoulder/steel_0.ron +++ b/assets/common/items/armor/shoulder/steel_0.ron @@ -1,13 +1,12 @@ ItemDef( name: "Steel Shoulder Pad", description: "The metal alloy plates provide better protection and comfort.", - kind: Armor( - ( - kind: Shoulder("Steel0"), - stats: ( - protection: Normal(15.0) - ), - ) - ), + kind: Armor(( + kind: Shoulder("Steel0"), + stats: ( + protection: Normal(15.0), + poise_resilience: Normal(20.0), + ), + )), quality: Moderate, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/shoulder/tarasque.ron b/assets/common/items/armor/shoulder/tarasque.ron index 72fc33b92e..90d9882617 100644 --- a/assets/common/items/armor/shoulder/tarasque.ron +++ b/assets/common/items/armor/shoulder/tarasque.ron @@ -1,12 +1,12 @@ ItemDef( name: "Tarasque Shoulder Pad", description: "Spiky tarasque shell fragments formed to fit as shoulder guards.", - kind: Armor( - ( - kind: Shoulder("Tarasque"), - stats: ( - protection: Normal(15.0)), - ) - ), + kind: Armor(( + kind: Shoulder("Tarasque"), + stats: ( + protection: Normal(15.0), + poise_resilience: Normal(18.0), + ), + )), quality: High, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/shoulder/twigs.ron b/assets/common/items/armor/shoulder/twigs.ron index 6a2e3e7298..4094e8b255 100644 --- a/assets/common/items/armor/shoulder/twigs.ron +++ b/assets/common/items/armor/shoulder/twigs.ron @@ -1,12 +1,12 @@ ItemDef( name: "Twiggy Shoulders", description: "Spaulders made from tightly tied twigs.", - kind: Armor( - ( - kind: Shoulder("TwiggyShoulder"), - stats: ( - protection: Normal(9.0)), - ) - ), + kind: Armor(( + kind: Shoulder("TwiggyShoulder"), + stats: ( + protection: Normal(9.0), + poise_resilience: Normal(14.0), + ), + )), quality: Common, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/shoulder/twigsflowers.ron b/assets/common/items/armor/shoulder/twigsflowers.ron index 12c0f77f7b..d4d9516e4a 100644 --- a/assets/common/items/armor/shoulder/twigsflowers.ron +++ b/assets/common/items/armor/shoulder/twigsflowers.ron @@ -1,12 +1,12 @@ ItemDef( name: "Flowery Shoulders", description: "Flowers join the tied twigs to provide protection and peace to the wearer.", - kind: Armor( - ( - kind: Shoulder("FlowerShoulder"), - stats: ( - protection: Normal(9.0)), - ) - ), + kind: Armor(( + kind: Shoulder("FlowerShoulder"), + stats: ( + protection: Normal(9.0), + poise_resilience: Normal(3.0), + ), + )), quality: Common, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/shoulder/twigsleaves.ron b/assets/common/items/armor/shoulder/twigsleaves.ron index bf91b9bf69..d7d643badb 100644 --- a/assets/common/items/armor/shoulder/twigsleaves.ron +++ b/assets/common/items/armor/shoulder/twigsleaves.ron @@ -1,12 +1,12 @@ ItemDef( name: "Leafy Shoulders", description: "Leaves cover over the twigs to provide better protection from the elements.", - kind: Armor( - ( - kind: Shoulder("LeafyShoulder"), - stats: ( - protection: Normal(9.0)), - ) - ), + kind: Armor(( + kind: Shoulder("LeafyShoulder"), + stats: ( + protection: Normal(9.0), + poise_resilience: Normal(2.0), + ), + )), quality: Common, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/shoulder/velorite_mage_0.ron b/assets/common/items/armor/shoulder/velorite_mage_0.ron index 4f4ab63871..45dc1b3004 100644 --- a/assets/common/items/armor/shoulder/velorite_mage_0.ron +++ b/assets/common/items/armor/shoulder/velorite_mage_0.ron @@ -1,13 +1,12 @@ ItemDef( name: "Velorite Battlemage Guards", description: "", - kind: Armor( - ( - kind: Shoulder("VeloriteMage0"), - stats: ( - protection: Normal(17.0) - ), - ) - ), + kind: Armor(( + kind: Shoulder("VeloriteMage0"), + stats: ( + protection: Normal(17.0), + poise_resilience: Normal(17.0), + ), + )), quality: High, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/shoulder/warlock.ron b/assets/common/items/armor/shoulder/warlock.ron index ee077bbc5f..a442668d90 100644 --- a/assets/common/items/armor/shoulder/warlock.ron +++ b/assets/common/items/armor/shoulder/warlock.ron @@ -1,12 +1,12 @@ ItemDef( name: "Warlock Shoulders", description: "Belong to a mighty warlock.", - kind: Armor( - ( - kind: Shoulder("Warlock"), - stats: ( - protection: Normal(22.0)), - ) - ), + kind: Armor(( + kind: Shoulder("Warlock"), + stats: ( + protection: Normal(22.0), + poise_resilience: Normal(15.0), + ), + )), quality: Common, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/shoulder/warlord.ron b/assets/common/items/armor/shoulder/warlord.ron index d7163c9155..7f9308cb83 100644 --- a/assets/common/items/armor/shoulder/warlord.ron +++ b/assets/common/items/armor/shoulder/warlord.ron @@ -1,12 +1,12 @@ ItemDef( name: "Warlord Shoulderguards", description: "Belong to a mighty warlord.", - kind: Armor( - ( - kind: Shoulder("Warlord"), - stats: ( - protection: Normal(22.0)), - ) - ), + kind: Armor(( + kind: Shoulder("Warlord"), + stats: ( + protection: Normal(22.0), + poise_resilience: Normal(14.0), + ), + )), quality: Common, -) +) \ No newline at end of file diff --git a/assets/common/items/armor/starter/lantern.ron b/assets/common/items/armor/starter/lantern.ron deleted file mode 100644 index 5f0affc265..0000000000 --- a/assets/common/items/armor/starter/lantern.ron +++ /dev/null @@ -1,13 +0,0 @@ -ItemDef( - name: "Black Lantern", - description: "Used by city guards.", - kind: Lantern( - ( - kind: "Black0", - color: (r: 255, g: 190, b: 75), - strength_thousandths: 3000, - flicker_thousandths: 300, - ), - ), - quality: Common, -) diff --git a/assets/common/items/armor/starter/rugged_chest.ron b/assets/common/items/armor/starter/rugged_chest.ron deleted file mode 100644 index 8da94b8122..0000000000 --- a/assets/common/items/armor/starter/rugged_chest.ron +++ /dev/null @@ -1,12 +0,0 @@ -ItemDef( - name: "Rugged Shirt", - description: "Smells like Adventure.", - kind: Armor( - ( - kind: Chest("Rugged0"), - stats: ( - protection: Normal(1.0)), - ) - ), - quality: Low, -) diff --git a/assets/common/items/armor/starter/rugged_pants.ron b/assets/common/items/armor/starter/rugged_pants.ron deleted file mode 100644 index f9863dbee8..0000000000 --- a/assets/common/items/armor/starter/rugged_pants.ron +++ /dev/null @@ -1,12 +0,0 @@ -ItemDef( - name: "Rugged Commoner's Pants", - description: "They remind you of the old days.", - kind: Armor( - ( - kind: Pants("Rugged0"), - stats: ( - protection: Normal(1.0)), - ) - ), - quality: Low, -) diff --git a/assets/common/items/armor/starter/sandals_0.ron b/assets/common/items/armor/starter/sandals_0.ron deleted file mode 100644 index 4852d8a71e..0000000000 --- a/assets/common/items/armor/starter/sandals_0.ron +++ /dev/null @@ -1,12 +0,0 @@ -ItemDef( - name: "Worn out Sandals", - description: "Loyal companions.", - kind: Armor( - ( - kind: Foot("Sandal0"), - stats: ( - protection: Normal(0.0)), - ) - ), - quality: Low, -) diff --git a/assets/common/items/armor/tabard/admin.ron b/assets/common/items/armor/tabard/admin.ron index eea10b1096..e3c21deb14 100644 --- a/assets/common/items/armor/tabard/admin.ron +++ b/assets/common/items/armor/tabard/admin.ron @@ -1,12 +1,12 @@ ItemDef( - name: "Admin's Tabard", - description: "With great power comes\ngreat responsibility.", - kind: Armor( - ( - kind: Tabard("Admin"), - stats: ( - protection: Normal(0.0)), - ) - ), + name: "Admin\'s Tabard", + description: "With great power comes great responsibility.", + kind: Armor(( + kind: Tabard("Admin"), + stats: ( + protection: Invincible, + poise_resilience: Invincible, + ), + )), quality: Debug, -) +) \ No newline at end of file diff --git a/assets/common/items/debug/admin.ron b/assets/common/items/debug/admin.ron index 028d729140..16e18773eb 100644 --- a/assets/common/items/debug/admin.ron +++ b/assets/common/items/debug/admin.ron @@ -5,7 +5,9 @@ ItemDef( ( kind: Tabard("Admin"), stats: ( - protection: Invincible), + protection: Invincible, + poise_resilience: Invincible, + ), ) ), quality: Debug, diff --git a/assets/common/items/debug/admin_back.ron b/assets/common/items/debug/admin_back.ron index 2b8648185a..c59fd0bd43 100644 --- a/assets/common/items/debug/admin_back.ron +++ b/assets/common/items/debug/admin_back.ron @@ -5,7 +5,9 @@ ItemDef( ( kind: Back("Admin"), stats: ( - protection: Invincible), + protection: Invincible, + poise_resilience: Invincible, + ), ) ), quality: Debug, diff --git a/assets/common/items/debug/admin_black_hole.ron b/assets/common/items/debug/admin_black_hole.ron index f2ec6911d7..c883bf33ef 100644 --- a/assets/common/items/debug/admin_black_hole.ron +++ b/assets/common/items/debug/admin_black_hole.ron @@ -4,7 +4,10 @@ ItemDef( kind: Armor( ( kind: Bag("BrownFace"), - stats: (protection: Normal(0.0)), + stats: ( + protection: Normal(0.0), + poise_resilience: Normal(0.0) + ), ) ), quality: Artifact, diff --git a/assets/common/items/debug/boost.ron b/assets/common/items/debug/boost.ron index 10a95d2195..1079711cbb 100644 --- a/assets/common/items/debug/boost.ron +++ b/assets/common/items/debug/boost.ron @@ -7,6 +7,7 @@ ItemDef( stats: ( equip_time_millis: 0, power: 1.00, + poise_strength: 1.00, speed: 1.0 ), ) diff --git a/assets/common/items/debug/cultist_belt.ron b/assets/common/items/debug/cultist_belt.ron index b9823f35e9..9e77d29e3c 100644 --- a/assets/common/items/debug/cultist_belt.ron +++ b/assets/common/items/debug/cultist_belt.ron @@ -5,7 +5,9 @@ ItemDef( ( kind: Belt("VeloriteMage0"), stats: ( - protection: Invincible), + protection: Invincible, + poise_resilience: Invincible, + ), ) ), quality: Debug, diff --git a/assets/common/items/debug/cultist_boots.ron b/assets/common/items/debug/cultist_boots.ron index e212095431..938652154a 100644 --- a/assets/common/items/debug/cultist_boots.ron +++ b/assets/common/items/debug/cultist_boots.ron @@ -5,7 +5,9 @@ ItemDef( ( kind: Foot("VeloriteMage0"), stats: ( - protection: Invincible), + protection: Invincible, + poise_resilience: Invincible, + ), ) ), quality: Debug, diff --git a/assets/common/items/debug/cultist_chest_blue.ron b/assets/common/items/debug/cultist_chest_blue.ron index 9a0339c8d0..5d827a9dbd 100644 --- a/assets/common/items/debug/cultist_chest_blue.ron +++ b/assets/common/items/debug/cultist_chest_blue.ron @@ -5,7 +5,9 @@ ItemDef( ( kind: Chest("VeloriteMage0"), stats: ( - protection: Invincible), + protection: Invincible, + poise_resilience: Invincible, + ), ) ), quality: Debug, diff --git a/assets/common/items/debug/cultist_hands_blue.ron b/assets/common/items/debug/cultist_hands_blue.ron index 5138204320..080ca2b3b0 100644 --- a/assets/common/items/debug/cultist_hands_blue.ron +++ b/assets/common/items/debug/cultist_hands_blue.ron @@ -5,7 +5,9 @@ ItemDef( ( kind: Hand("VeloriteMage0"), stats: ( - protection: Invincible), + protection: Invincible, + poise_resilience: Invincible, + ), ) ), quality: Debug, diff --git a/assets/common/items/debug/cultist_legs_blue.ron b/assets/common/items/debug/cultist_legs_blue.ron index 7fd62d77f4..b63b957c20 100644 --- a/assets/common/items/debug/cultist_legs_blue.ron +++ b/assets/common/items/debug/cultist_legs_blue.ron @@ -5,7 +5,9 @@ ItemDef( ( kind: Pants("VeloriteMage0"), stats: ( - protection: Invincible), + protection: Invincible, + poise_resilience: Invincible, + ), ) ), quality: Debug, diff --git a/assets/common/items/debug/cultist_purp_2h_boss-0.ron b/assets/common/items/debug/cultist_purp_2h_boss-0.ron index 0ce9a87270..42af4bcd69 100644 --- a/assets/common/items/debug/cultist_purp_2h_boss-0.ron +++ b/assets/common/items/debug/cultist_purp_2h_boss-0.ron @@ -7,6 +7,7 @@ ItemDef( stats: ( equip_time_millis: 0, power: 1000.0, + poise_strength: 1000.0, speed: 1.0 ), ) diff --git a/assets/common/items/debug/cultist_shoulder_blue.ron b/assets/common/items/debug/cultist_shoulder_blue.ron index ee114ab8ff..273661b694 100644 --- a/assets/common/items/debug/cultist_shoulder_blue.ron +++ b/assets/common/items/debug/cultist_shoulder_blue.ron @@ -5,7 +5,9 @@ ItemDef( ( kind: Shoulder("VeloriteMage0"), stats: ( - protection: Invincible), + protection: Invincible, + poise_resilience: Invincible, + ), ) ), quality: Debug, diff --git a/assets/common/items/debug/dungeon_purple-0.ron b/assets/common/items/debug/dungeon_purple-0.ron index 200482c826..379aa17fe3 100644 --- a/assets/common/items/debug/dungeon_purple-0.ron +++ b/assets/common/items/debug/dungeon_purple-0.ron @@ -5,7 +5,9 @@ ItemDef( ( kind: Back("VeloriteMage0"), stats: ( - protection: Invincible), + protection: Invincible, + poise_resilience: Invincible, + ), ) ), quality: Debug, diff --git a/assets/common/items/debug/possess.ron b/assets/common/items/debug/possess.ron index 10a95d2195..1079711cbb 100644 --- a/assets/common/items/debug/possess.ron +++ b/assets/common/items/debug/possess.ron @@ -7,6 +7,7 @@ ItemDef( stats: ( equip_time_millis: 0, power: 1.00, + poise_strength: 1.00, speed: 1.0 ), ) diff --git a/assets/common/items/armor/starter/glider.ron b/assets/common/items/glider/glider_cloverleaf.ron similarity index 100% rename from assets/common/items/armor/starter/glider.ron rename to assets/common/items/glider/glider_cloverleaf.ron diff --git a/assets/common/items/npc_armor/back/backpack_0.ron b/assets/common/items/npc_armor/back/backpack_0.ron index 00a64c0d47..245ab110df 100644 --- a/assets/common/items/npc_armor/back/backpack_0.ron +++ b/assets/common/items/npc_armor/back/backpack_0.ron @@ -5,7 +5,9 @@ ItemDef( ( kind: Back("Backpack0"), stats: ( - protection: Normal(0.0)), + protection: Normal(0.0), + poise_resilience: Normal(0.0), + ), ) ), quality: Moderate, diff --git a/assets/common/items/npc_armor/back/backpack_blue_0.ron b/assets/common/items/npc_armor/back/backpack_blue_0.ron index 66446c93f2..665c6a1639 100644 --- a/assets/common/items/npc_armor/back/backpack_blue_0.ron +++ b/assets/common/items/npc_armor/back/backpack_blue_0.ron @@ -5,7 +5,9 @@ ItemDef( ( kind: Back("BackpackBlue0"), stats: ( - protection: Normal(0.0)), + protection: Normal(0.0), + poise_resilience: Normal(0.0), + ), ) ), quality: Moderate, diff --git a/assets/common/items/npc_armor/back/dungeon_purple-0.ron b/assets/common/items/npc_armor/back/dungeon_purple-0.ron index 310286b04b..f049d17d10 100644 --- a/assets/common/items/npc_armor/back/dungeon_purple-0.ron +++ b/assets/common/items/npc_armor/back/dungeon_purple-0.ron @@ -5,7 +5,9 @@ ItemDef( ( kind: Back("DungPurp0"), stats: ( - protection: Normal(1.0)), + protection: Normal(1.0), + poise_resilience: Normal(0.0), + ), ) ), quality: Low, diff --git a/assets/common/items/npc_armor/back/leather_blue_0.ron b/assets/common/items/npc_armor/back/leather_blue_0.ron index 3cc34c285d..d8a321d866 100644 --- a/assets/common/items/npc_armor/back/leather_blue_0.ron +++ b/assets/common/items/npc_armor/back/leather_blue_0.ron @@ -5,7 +5,9 @@ ItemDef( ( kind: Back("LeatherBlue0"), stats: ( - protection: Normal(1.0)), + protection: Normal(1.0), + poise_resilience: Normal(0.0), + ), ) ), quality: Moderate, diff --git a/assets/common/items/npc_armor/belt/cultist_belt.ron b/assets/common/items/npc_armor/belt/cultist_belt.ron index 69a81186be..00813b2141 100644 --- a/assets/common/items/npc_armor/belt/cultist_belt.ron +++ b/assets/common/items/npc_armor/belt/cultist_belt.ron @@ -5,7 +5,9 @@ ItemDef( ( kind: Belt("Cultist"), stats: ( - protection: Normal(0.0)), + protection: Normal(0.0), + poise_resilience: Normal(0.0), + ), ) ), quality: Low, diff --git a/assets/common/items/npc_armor/chest/cultist_chest_purple.ron b/assets/common/items/npc_armor/chest/cultist_chest_purple.ron index 475fd3eb82..246e194a84 100644 --- a/assets/common/items/npc_armor/chest/cultist_chest_purple.ron +++ b/assets/common/items/npc_armor/chest/cultist_chest_purple.ron @@ -5,7 +5,9 @@ ItemDef( ( kind: Chest("CultistPurple"), stats: ( - protection: Normal(5.0)), + protection: Normal(5.0), + poise_resilience: Normal(5.0), + ), ) ), quality: Low, diff --git a/assets/common/items/npc_armor/chest/leather_blue_0.ron b/assets/common/items/npc_armor/chest/leather_blue_0.ron index 0a07cbe40a..144c81ee5e 100644 --- a/assets/common/items/npc_armor/chest/leather_blue_0.ron +++ b/assets/common/items/npc_armor/chest/leather_blue_0.ron @@ -5,7 +5,9 @@ ItemDef( ( kind: Chest("LeatherBlue0"), stats: ( - protection: Normal(5.0)), + protection: Normal(5.0), + poise_resilience: Normal(5.0), + ), ) ), quality: Moderate, diff --git a/assets/common/items/npc_armor/chest/plate_green_0.ron b/assets/common/items/npc_armor/chest/plate_green_0.ron index 6218a465dd..771db3388b 100644 --- a/assets/common/items/npc_armor/chest/plate_green_0.ron +++ b/assets/common/items/npc_armor/chest/plate_green_0.ron @@ -5,7 +5,9 @@ ItemDef( ( kind: Chest("PlateGreen0"), stats: ( - protection: Normal(5.0)), + protection: Normal(5.0), + poise_resilience: Normal(5.0), + ), ) ), quality: Low, diff --git a/assets/common/items/npc_armor/chest/plate_red_0.ron b/assets/common/items/npc_armor/chest/plate_red_0.ron index 35ed8aeecf..8443377f62 100644 --- a/assets/common/items/npc_armor/chest/plate_red_0.ron +++ b/assets/common/items/npc_armor/chest/plate_red_0.ron @@ -5,7 +5,9 @@ ItemDef( ( kind: Chest("PlateRed0"), stats: ( - protection: Normal(5.0)), + protection: Normal(5.0), + poise_resilience: Normal(5.0), + ), ) ), quality: Low, diff --git a/assets/common/items/npc_armor/chest/worker_green_0.ron b/assets/common/items/npc_armor/chest/worker_green_0.ron index e599e76361..6632e53cda 100644 --- a/assets/common/items/npc_armor/chest/worker_green_0.ron +++ b/assets/common/items/npc_armor/chest/worker_green_0.ron @@ -5,7 +5,9 @@ ItemDef( ( kind: Chest("WorkerGreen0"), stats: ( - protection: Normal(80.0)), + protection: Normal(80.0), + poise_resilience: Normal(80.0), + ), ) ), quality: Low, diff --git a/assets/common/items/npc_armor/chest/worker_green_1.ron b/assets/common/items/npc_armor/chest/worker_green_1.ron index 7dc2529f59..bba97dd57c 100644 --- a/assets/common/items/npc_armor/chest/worker_green_1.ron +++ b/assets/common/items/npc_armor/chest/worker_green_1.ron @@ -5,7 +5,9 @@ ItemDef( ( kind: Chest("WorkerGreen1"), stats: ( - protection: Normal(80.0)), + protection: Normal(80.0), + poise_resilience: Normal(80.0), + ), ) ), quality: Low, diff --git a/assets/common/items/npc_armor/chest/worker_orange_0.ron b/assets/common/items/npc_armor/chest/worker_orange_0.ron index a6d930ebab..ad68f5542e 100644 --- a/assets/common/items/npc_armor/chest/worker_orange_0.ron +++ b/assets/common/items/npc_armor/chest/worker_orange_0.ron @@ -5,7 +5,9 @@ ItemDef( ( kind: Chest("WorkerOrange0"), stats: ( - protection: Normal(80.0)), + protection: Normal(80.0), + poise_resilience: Normal(80.0), + ), ) ), quality: Low, diff --git a/assets/common/items/npc_armor/chest/worker_orange_1.ron b/assets/common/items/npc_armor/chest/worker_orange_1.ron index 3974902a17..48e34fb2d4 100644 --- a/assets/common/items/npc_armor/chest/worker_orange_1.ron +++ b/assets/common/items/npc_armor/chest/worker_orange_1.ron @@ -5,7 +5,9 @@ ItemDef( ( kind: Chest("WorkerOrange1"), stats: ( - protection: Normal(80.0)), + protection: Normal(80.0), + poise_resilience: Normal(80.0), + ), ) ), quality: Low, diff --git a/assets/common/items/npc_armor/chest/worker_purple_0.ron b/assets/common/items/npc_armor/chest/worker_purple_0.ron index 454eb832e1..98d6d0f65a 100644 --- a/assets/common/items/npc_armor/chest/worker_purple_0.ron +++ b/assets/common/items/npc_armor/chest/worker_purple_0.ron @@ -5,7 +5,9 @@ ItemDef( ( kind: Chest("WorkerPurple0"), stats: ( - protection: Normal(80.0)), + protection: Normal(80.0), + poise_resilience: Normal(80.0), + ), ) ), quality: Low, diff --git a/assets/common/items/npc_armor/chest/worker_purple_1.ron b/assets/common/items/npc_armor/chest/worker_purple_1.ron index b33ef2caf1..6bc00e25ec 100644 --- a/assets/common/items/npc_armor/chest/worker_purple_1.ron +++ b/assets/common/items/npc_armor/chest/worker_purple_1.ron @@ -5,7 +5,9 @@ ItemDef( ( kind: Chest("WorkerPurple1"), stats: ( - protection: Normal(80.0)), + protection: Normal(80.0), + poise_resilience: Normal(80.0), + ), ) ), quality: Low, diff --git a/assets/common/items/npc_armor/chest/worker_red_0.ron b/assets/common/items/npc_armor/chest/worker_red_0.ron index da06489316..cd37b92a52 100644 --- a/assets/common/items/npc_armor/chest/worker_red_0.ron +++ b/assets/common/items/npc_armor/chest/worker_red_0.ron @@ -5,7 +5,9 @@ ItemDef( ( kind: Chest("WorkerRed0"), stats: ( - protection: Normal(80.0)), + protection: Normal(80.0), + poise_resilience: Normal(80.0), + ), ) ), quality: Low, diff --git a/assets/common/items/npc_armor/chest/worker_red_1.ron b/assets/common/items/npc_armor/chest/worker_red_1.ron index 78b7b42045..0deb676eb1 100644 --- a/assets/common/items/npc_armor/chest/worker_red_1.ron +++ b/assets/common/items/npc_armor/chest/worker_red_1.ron @@ -5,7 +5,9 @@ ItemDef( ( kind: Chest("WorkerRed1"), stats: ( - protection: Normal(80.0)), + protection: Normal(80.0), + poise_resilience: Normal(80.0), + ), ) ), quality: Low, diff --git a/assets/common/items/npc_armor/chest/worker_yellow_0.ron b/assets/common/items/npc_armor/chest/worker_yellow_0.ron index a5dc3fddbb..de7be724c7 100644 --- a/assets/common/items/npc_armor/chest/worker_yellow_0.ron +++ b/assets/common/items/npc_armor/chest/worker_yellow_0.ron @@ -5,7 +5,9 @@ ItemDef( ( kind: Chest("WorkerYellow0"), stats: ( - protection: Normal(80.0)), + protection: Normal(80.0), + poise_resilience: Normal(80.0), + ), ) ), quality: Low, diff --git a/assets/common/items/npc_armor/chest/worker_yellow_1.ron b/assets/common/items/npc_armor/chest/worker_yellow_1.ron index 8976176dda..4623756ebd 100644 --- a/assets/common/items/npc_armor/chest/worker_yellow_1.ron +++ b/assets/common/items/npc_armor/chest/worker_yellow_1.ron @@ -5,7 +5,9 @@ ItemDef( ( kind: Chest("WorkerYellow1"), stats: ( - protection: Normal(80.0)), + protection: Normal(80.0), + poise_resilience: Normal(80.0), + ), ) ), quality: Low, diff --git a/assets/common/items/npc_armor/foot/cultist_boots.ron b/assets/common/items/npc_armor/foot/cultist_boots.ron index e2cdcc8ecf..a767753d73 100644 --- a/assets/common/items/npc_armor/foot/cultist_boots.ron +++ b/assets/common/items/npc_armor/foot/cultist_boots.ron @@ -5,7 +5,9 @@ ItemDef( ( kind: Foot("Cultist"), stats: ( - protection: Normal(1.0)), + protection: Normal(1.0), + poise_resilience: Normal(1.0), + ), ) ), quality: Low, diff --git a/assets/common/items/npc_armor/hand/cultist_hands_purple.ron b/assets/common/items/npc_armor/hand/cultist_hands_purple.ron index 4fdcf555c0..acb85e1fe3 100644 --- a/assets/common/items/npc_armor/hand/cultist_hands_purple.ron +++ b/assets/common/items/npc_armor/hand/cultist_hands_purple.ron @@ -5,7 +5,9 @@ ItemDef( ( kind: Hand("CultistPurple"), stats: ( - protection: Normal(2.0)), + protection: Normal(2.0), + poise_resilience: Normal(2.0), + ), ) ), quality: Low, diff --git a/assets/common/items/npc_armor/pants/cultist_legs_purple.ron b/assets/common/items/npc_armor/pants/cultist_legs_purple.ron index 1a10bbe4e0..649e8d6ae1 100644 --- a/assets/common/items/npc_armor/pants/cultist_legs_purple.ron +++ b/assets/common/items/npc_armor/pants/cultist_legs_purple.ron @@ -5,7 +5,9 @@ ItemDef( ( kind: Pants("CultistPurple"), stats: ( - protection: Normal(10.0)), + protection: Normal(10.0), + poise_resilience: Normal(10.0), + ), ) ), quality: Low, diff --git a/assets/common/items/npc_armor/pants/leather_blue_0.ron b/assets/common/items/npc_armor/pants/leather_blue_0.ron index 02eab70c3e..c8b8f8874d 100644 --- a/assets/common/items/npc_armor/pants/leather_blue_0.ron +++ b/assets/common/items/npc_armor/pants/leather_blue_0.ron @@ -5,7 +5,9 @@ ItemDef( ( kind: Pants("LeatherBlue0"), stats: ( - protection: Normal(10.0)), + protection: Normal(10.0), + poise_resilience: Normal(10.0), + ), ) ), quality: Low, diff --git a/assets/common/items/npc_armor/pants/plate_green_0.ron b/assets/common/items/npc_armor/pants/plate_green_0.ron index a5853d21a9..7d70fb0cac 100644 --- a/assets/common/items/npc_armor/pants/plate_green_0.ron +++ b/assets/common/items/npc_armor/pants/plate_green_0.ron @@ -5,7 +5,9 @@ ItemDef( ( kind: Pants("PlateGreen0"), stats: ( - protection: Normal(10.0)), + protection: Normal(10.0), + poise_resilience: Normal(10.0), + ), ) ), quality: Low, diff --git a/assets/common/items/npc_armor/pants/plate_red_0.ron b/assets/common/items/npc_armor/pants/plate_red_0.ron index 6b86f92c7f..af0ac1b877 100644 --- a/assets/common/items/npc_armor/pants/plate_red_0.ron +++ b/assets/common/items/npc_armor/pants/plate_red_0.ron @@ -5,7 +5,9 @@ ItemDef( ( kind: Pants("PlateRed0"), stats: ( - protection: Normal(10.0)), + protection: Normal(10.0), + poise_resilience: Normal(10.0), + ), ) ), quality: Low, diff --git a/assets/common/items/npc_armor/shoulder/cultist_shoulder_purple.ron b/assets/common/items/npc_armor/shoulder/cultist_shoulder_purple.ron index 2d1b71ec11..083c5404d6 100644 --- a/assets/common/items/npc_armor/shoulder/cultist_shoulder_purple.ron +++ b/assets/common/items/npc_armor/shoulder/cultist_shoulder_purple.ron @@ -5,7 +5,9 @@ ItemDef( ( kind: Shoulder("CultistPurple"), stats: ( - protection: Normal(5.0)), + protection: Normal(5.0), + poise_resilience: Normal(5.0), + ), ) ), quality: Low, diff --git a/assets/common/items/npc_weapons/axe/malachite_axe-0.ron b/assets/common/items/npc_weapons/axe/malachite_axe-0.ron index 2a9ac446f8..69e29ca551 100644 --- a/assets/common/items/npc_weapons/axe/malachite_axe-0.ron +++ b/assets/common/items/npc_weapons/axe/malachite_axe-0.ron @@ -7,6 +7,7 @@ ItemDef( stats: ( equip_time_millis: 400, power: 0.50, + poise_strength: 0.50, speed: 1.0 ), ) diff --git a/assets/common/items/npc_weapons/axe/starter_axe.ron b/assets/common/items/npc_weapons/axe/starter_axe.ron index b867f649aa..a87a8e0871 100644 --- a/assets/common/items/npc_weapons/axe/starter_axe.ron +++ b/assets/common/items/npc_weapons/axe/starter_axe.ron @@ -7,6 +7,7 @@ ItemDef( stats: ( equip_time_millis: 400, power: 0.50, + poise_strength: 0.50, speed: 1.0 ), ) diff --git a/assets/common/items/npc_weapons/bow/horn_longbow-0.ron b/assets/common/items/npc_weapons/bow/horn_longbow-0.ron index 3e2b78e8b7..bf12d042fa 100644 --- a/assets/common/items/npc_weapons/bow/horn_longbow-0.ron +++ b/assets/common/items/npc_weapons/bow/horn_longbow-0.ron @@ -7,6 +7,7 @@ ItemDef( stats: ( equip_time_millis: 400, power: 0.5, + poise_strength: 0.50, speed: 1.0 ), ) diff --git a/assets/common/items/npc_weapons/bow/saurok_bow.ron b/assets/common/items/npc_weapons/bow/saurok_bow.ron index d546b84ced..5fd67f2123 100644 --- a/assets/common/items/npc_weapons/bow/saurok_bow.ron +++ b/assets/common/items/npc_weapons/bow/saurok_bow.ron @@ -7,6 +7,7 @@ ItemDef( stats: ( equip_time_millis: 500, power: 1.00, + poise_strength: 1.00, speed: 1.0 ), ) diff --git a/assets/common/items/npc_weapons/dagger/starter_dagger.ron b/assets/common/items/npc_weapons/dagger/starter_dagger.ron index 63ce0843cc..0300bcf1ac 100644 --- a/assets/common/items/npc_weapons/dagger/starter_dagger.ron +++ b/assets/common/items/npc_weapons/dagger/starter_dagger.ron @@ -7,6 +7,7 @@ ItemDef( stats: ( equip_time_millis: 300, power: 1.00, + poise_strength: 1.00, speed: 1.0 ), ) diff --git a/assets/common/items/npc_weapons/empty/empty.ron b/assets/common/items/npc_weapons/empty/empty.ron index a19e674e7a..bea2a82516 100644 --- a/assets/common/items/npc_weapons/empty/empty.ron +++ b/assets/common/items/npc_weapons/empty/empty.ron @@ -7,6 +7,7 @@ ItemDef( stats: ( equip_time_millis: 200, power: 1.00, + poise_strength: 1.00, speed: 1.0 ), ) diff --git a/assets/common/items/npc_weapons/hammer/cultist_purp_2h-0.ron b/assets/common/items/npc_weapons/hammer/cultist_purp_2h-0.ron index a73d6eb0b9..be35c48871 100644 --- a/assets/common/items/npc_weapons/hammer/cultist_purp_2h-0.ron +++ b/assets/common/items/npc_weapons/hammer/cultist_purp_2h-0.ron @@ -7,6 +7,7 @@ ItemDef( stats: ( equip_time_millis: 500, power: 0.5, + poise_strength: 0.5, speed: 1.0 ), ) diff --git a/assets/common/items/npc_weapons/hammer/cyclops_hammer.ron b/assets/common/items/npc_weapons/hammer/cyclops_hammer.ron index 0ed47448cd..ea545e2f1d 100644 --- a/assets/common/items/npc_weapons/hammer/cyclops_hammer.ron +++ b/assets/common/items/npc_weapons/hammer/cyclops_hammer.ron @@ -7,6 +7,7 @@ ItemDef( stats: ( equip_time_millis: 500, power: 1.00, + poise_strength: 1.00, speed: 1.0 ), ) diff --git a/assets/common/items/npc_weapons/hammer/ogre_hammer.ron b/assets/common/items/npc_weapons/hammer/ogre_hammer.ron index 2ddb48d615..3edf1cebca 100644 --- a/assets/common/items/npc_weapons/hammer/ogre_hammer.ron +++ b/assets/common/items/npc_weapons/hammer/ogre_hammer.ron @@ -7,6 +7,7 @@ ItemDef( stats: ( equip_time_millis: 500, power: 1.00, + poise_strength: 1.00, speed: 1.0 ), ) diff --git a/assets/common/items/npc_weapons/hammer/starter_hammer.ron b/assets/common/items/npc_weapons/hammer/starter_hammer.ron index 35d167e7a8..accb83e2d2 100644 --- a/assets/common/items/npc_weapons/hammer/starter_hammer.ron +++ b/assets/common/items/npc_weapons/hammer/starter_hammer.ron @@ -7,6 +7,7 @@ ItemDef( stats: ( equip_time_millis: 500, power: 0.50, + poise_strength: 0.50, speed: 1.0 ), ) diff --git a/assets/common/items/npc_weapons/hammer/troll_hammer.ron b/assets/common/items/npc_weapons/hammer/troll_hammer.ron index 173ca7f65d..b2402d91bf 100644 --- a/assets/common/items/npc_weapons/hammer/troll_hammer.ron +++ b/assets/common/items/npc_weapons/hammer/troll_hammer.ron @@ -7,6 +7,7 @@ ItemDef( stats: ( equip_time_millis: 500, power: 1.00, + poise_strength: 1.00, speed: 1.0 ), ) diff --git a/assets/common/items/npc_weapons/hammer/wendigo_hammer.ron b/assets/common/items/npc_weapons/hammer/wendigo_hammer.ron index daa3a55f29..ef65f8122d 100644 --- a/assets/common/items/npc_weapons/hammer/wendigo_hammer.ron +++ b/assets/common/items/npc_weapons/hammer/wendigo_hammer.ron @@ -7,6 +7,7 @@ ItemDef( stats: ( equip_time_millis: 500, power: 1.00, + poise_strength: 1.00, speed: 1.0 ), ) diff --git a/assets/common/items/npc_weapons/shield/shield_1.ron b/assets/common/items/npc_weapons/shield/shield_1.ron index 1bb911aa93..39ff6c8159 100644 --- a/assets/common/items/npc_weapons/shield/shield_1.ron +++ b/assets/common/items/npc_weapons/shield/shield_1.ron @@ -7,6 +7,7 @@ ItemDef( stats: ( equip_time_millis: 400, power: 1.00, + poise_strength: 1.00, speed: 1.0 ), ) diff --git a/assets/common/items/npc_weapons/staff/bone_staff.ron b/assets/common/items/npc_weapons/staff/bone_staff.ron index a26aeda05b..6455cb7a58 100644 --- a/assets/common/items/npc_weapons/staff/bone_staff.ron +++ b/assets/common/items/npc_weapons/staff/bone_staff.ron @@ -7,6 +7,7 @@ ItemDef( stats: ( equip_time_millis: 300, power: 0.8, + poise_strength: 0.8, speed: 1.0 ), ) diff --git a/assets/common/items/npc_weapons/staff/cultist_staff.ron b/assets/common/items/npc_weapons/staff/cultist_staff.ron index 41eda11f81..c71b93e97e 100644 --- a/assets/common/items/npc_weapons/staff/cultist_staff.ron +++ b/assets/common/items/npc_weapons/staff/cultist_staff.ron @@ -7,6 +7,7 @@ ItemDef( stats: ( equip_time_millis: 300, power: 0.8, + poise_strength: 0.8, speed: 1.0 ), ) diff --git a/assets/common/items/npc_weapons/staff/mindflayer_staff.ron b/assets/common/items/npc_weapons/staff/mindflayer_staff.ron index 2d6dabf364..774f63279a 100644 --- a/assets/common/items/npc_weapons/staff/mindflayer_staff.ron +++ b/assets/common/items/npc_weapons/staff/mindflayer_staff.ron @@ -7,6 +7,7 @@ ItemDef( stats: ( equip_time_millis: 300, power: 3.0, + poise_strength: 1.00, speed: 1.5, ), ) diff --git a/assets/common/items/npc_weapons/staff/ogre_staff.ron b/assets/common/items/npc_weapons/staff/ogre_staff.ron index 99d34ea909..5b9a8ff23f 100644 --- a/assets/common/items/npc_weapons/staff/ogre_staff.ron +++ b/assets/common/items/npc_weapons/staff/ogre_staff.ron @@ -7,6 +7,7 @@ ItemDef( stats: ( equip_time_millis: 500, power: 1.00, + poise_strength: 1.00, speed: 1.0 ), ) diff --git a/assets/common/items/npc_weapons/staff/saurok_staff.ron b/assets/common/items/npc_weapons/staff/saurok_staff.ron index 15b1d9d24d..4730447a09 100644 --- a/assets/common/items/npc_weapons/staff/saurok_staff.ron +++ b/assets/common/items/npc_weapons/staff/saurok_staff.ron @@ -7,6 +7,7 @@ ItemDef( stats: ( equip_time_millis: 500, power: 1.00, + poise_strength: 1.00, speed: 1.0 ), ) diff --git a/assets/common/items/npc_weapons/sword/cultist_purp_2h-0.ron b/assets/common/items/npc_weapons/sword/cultist_purp_2h-0.ron index f1918612ca..f112732e69 100644 --- a/assets/common/items/npc_weapons/sword/cultist_purp_2h-0.ron +++ b/assets/common/items/npc_weapons/sword/cultist_purp_2h-0.ron @@ -7,6 +7,7 @@ ItemDef( stats: ( equip_time_millis: 500, power: 0.5, + poise_strength: 0.5, speed: 1.0 ), ) diff --git a/assets/common/items/npc_weapons/sword/cultist_purp_2h_boss-0.ron b/assets/common/items/npc_weapons/sword/cultist_purp_2h_boss-0.ron index b757822657..7d2ff54fe6 100644 --- a/assets/common/items/npc_weapons/sword/cultist_purp_2h_boss-0.ron +++ b/assets/common/items/npc_weapons/sword/cultist_purp_2h_boss-0.ron @@ -7,6 +7,7 @@ ItemDef( stats: ( equip_time_millis: 500, power: 1.0, + poise_strength: 1.0, speed: 1.0 ), ) diff --git a/assets/common/items/npc_weapons/sword/dullahan_sword.ron b/assets/common/items/npc_weapons/sword/dullahan_sword.ron index 6dab58cb39..70b5bc872d 100644 --- a/assets/common/items/npc_weapons/sword/dullahan_sword.ron +++ b/assets/common/items/npc_weapons/sword/dullahan_sword.ron @@ -7,6 +7,7 @@ ItemDef( stats: ( equip_time_millis: 500, power: 1.00, + poise_strength: 1.00, speed: 1.0 ), ) diff --git a/assets/common/items/npc_weapons/sword/saurok_sword.ron b/assets/common/items/npc_weapons/sword/saurok_sword.ron index fe0e59b4b9..e58358127c 100644 --- a/assets/common/items/npc_weapons/sword/saurok_sword.ron +++ b/assets/common/items/npc_weapons/sword/saurok_sword.ron @@ -7,6 +7,7 @@ ItemDef( stats: ( equip_time_millis: 500, power: 1.00, + poise_strength: 1.00, speed: 1.0 ), ) diff --git a/assets/common/items/npc_weapons/sword/starter_sword.ron b/assets/common/items/npc_weapons/sword/starter_sword.ron index 0e4f7bed26..a2199851fb 100644 --- a/assets/common/items/npc_weapons/sword/starter_sword.ron +++ b/assets/common/items/npc_weapons/sword/starter_sword.ron @@ -7,6 +7,7 @@ ItemDef( stats: ( equip_time_millis: 300, power: 0.50, + poise_strength: 0.50, speed: 1.0 ), ) diff --git a/assets/common/items/npc_weapons/sword/zweihander_sword_0.ron b/assets/common/items/npc_weapons/sword/zweihander_sword_0.ron index 95d9cf4fba..fd780c722a 100644 --- a/assets/common/items/npc_weapons/sword/zweihander_sword_0.ron +++ b/assets/common/items/npc_weapons/sword/zweihander_sword_0.ron @@ -7,6 +7,7 @@ ItemDef( stats: ( equip_time_millis: 500, power: 0.75, + poise_strength: 0.75, speed: 1.0 ), ) diff --git a/assets/common/items/npc_weapons/tool/broom.ron b/assets/common/items/npc_weapons/tool/broom.ron index ce72baa6f6..5acc0b7b97 100644 --- a/assets/common/items/npc_weapons/tool/broom.ron +++ b/assets/common/items/npc_weapons/tool/broom.ron @@ -7,6 +7,7 @@ ItemDef( stats: ( equip_time_millis: 400, power: 1.5, + poise_strength: 1.5, speed: 1.0 ), ) diff --git a/assets/common/items/npc_weapons/tool/fishing_rod.ron b/assets/common/items/npc_weapons/tool/fishing_rod.ron index 4602d7123d..f95090de85 100644 --- a/assets/common/items/npc_weapons/tool/fishing_rod.ron +++ b/assets/common/items/npc_weapons/tool/fishing_rod.ron @@ -7,6 +7,7 @@ ItemDef( stats: ( equip_time_millis: 400, power: 1.5, + poise_strength: 1.5, speed: 1.0 ), ) diff --git a/assets/common/items/npc_weapons/tool/hoe.ron b/assets/common/items/npc_weapons/tool/hoe.ron index 6036295c9e..442f003b4d 100644 --- a/assets/common/items/npc_weapons/tool/hoe.ron +++ b/assets/common/items/npc_weapons/tool/hoe.ron @@ -7,6 +7,7 @@ ItemDef( stats: ( equip_time_millis: 400, power: 1.50, + poise_strength: 1.50, speed: 1.0 ), ) diff --git a/assets/common/items/npc_weapons/tool/pickaxe.ron b/assets/common/items/npc_weapons/tool/pickaxe.ron index 59c317df95..4925c8fbe6 100644 --- a/assets/common/items/npc_weapons/tool/pickaxe.ron +++ b/assets/common/items/npc_weapons/tool/pickaxe.ron @@ -7,6 +7,7 @@ ItemDef( stats: ( equip_time_millis: 400, power: 1.50, + poise_strength: 1.50, speed: 1.0 ), ) diff --git a/assets/common/items/npc_weapons/tool/pitchfork.ron b/assets/common/items/npc_weapons/tool/pitchfork.ron index 2bfbe7ddb0..48cb72c1a8 100644 --- a/assets/common/items/npc_weapons/tool/pitchfork.ron +++ b/assets/common/items/npc_weapons/tool/pitchfork.ron @@ -7,6 +7,7 @@ ItemDef( stats: ( equip_time_millis: 400, power: 1.50, + poise_strength: 1.50, speed: 1.0 ), ) diff --git a/assets/common/items/npc_weapons/tool/rake.ron b/assets/common/items/npc_weapons/tool/rake.ron index 1ff77b9c4a..55e5988834 100644 --- a/assets/common/items/npc_weapons/tool/rake.ron +++ b/assets/common/items/npc_weapons/tool/rake.ron @@ -7,6 +7,7 @@ ItemDef( stats: ( equip_time_millis: 400, power: 1.50, + poise_strength: 1.50, speed: 1.0 ), ) diff --git a/assets/common/items/npc_weapons/tool/shovel-0.ron b/assets/common/items/npc_weapons/tool/shovel-0.ron index be185121e4..a5961017e4 100644 --- a/assets/common/items/npc_weapons/tool/shovel-0.ron +++ b/assets/common/items/npc_weapons/tool/shovel-0.ron @@ -7,6 +7,7 @@ ItemDef( stats: ( equip_time_millis: 400, power: 1.50, + poise_strength: 1.50, speed: 1.0 ), ) diff --git a/assets/common/items/npc_weapons/tool/shovel-1.ron b/assets/common/items/npc_weapons/tool/shovel-1.ron index 0acb72575c..e466084a1a 100644 --- a/assets/common/items/npc_weapons/tool/shovel-1.ron +++ b/assets/common/items/npc_weapons/tool/shovel-1.ron @@ -7,6 +7,7 @@ ItemDef( stats: ( equip_time_millis: 400, power: 1.50, + poise_strength: 1.50, speed: 1.0 ), ) diff --git a/assets/common/items/npc_weapons/unique/beast_claws.ron b/assets/common/items/npc_weapons/unique/beast_claws.ron index e871f541e4..f28be29396 100644 --- a/assets/common/items/npc_weapons/unique/beast_claws.ron +++ b/assets/common/items/npc_weapons/unique/beast_claws.ron @@ -7,6 +7,7 @@ ItemDef( stats: ( equip_time_millis: 500, power: 1.00, + poise_strength: 1.00, speed: 1.0, ), ) diff --git a/assets/common/items/npc_weapons/unique/quadlowbasic.ron b/assets/common/items/npc_weapons/unique/quadlowbasic.ron index d82fc3409c..74c32b4641 100644 --- a/assets/common/items/npc_weapons/unique/quadlowbasic.ron +++ b/assets/common/items/npc_weapons/unique/quadlowbasic.ron @@ -7,6 +7,7 @@ ItemDef( stats: ( equip_time_millis: 10, power: 1.00, + poise_strength: 1.00, speed: 1.00, ), ) diff --git a/assets/common/items/npc_weapons/unique/quadlowbreathe.ron b/assets/common/items/npc_weapons/unique/quadlowbreathe.ron index 04b230bc6c..585f808f40 100644 --- a/assets/common/items/npc_weapons/unique/quadlowbreathe.ron +++ b/assets/common/items/npc_weapons/unique/quadlowbreathe.ron @@ -7,6 +7,7 @@ ItemDef( stats: ( equip_time_millis: 10, power: 1.00, + poise_strength: 1.00, speed: 1.00, ), ) diff --git a/assets/common/items/npc_weapons/unique/quadlowquick.ron b/assets/common/items/npc_weapons/unique/quadlowquick.ron index 4bcae60ed5..a2278202e9 100644 --- a/assets/common/items/npc_weapons/unique/quadlowquick.ron +++ b/assets/common/items/npc_weapons/unique/quadlowquick.ron @@ -7,6 +7,7 @@ ItemDef( stats: ( equip_time_millis: 10, power: 1.00, + poise_strength: 1.00, speed: 1.00, ), ) diff --git a/assets/common/items/npc_weapons/unique/quadlowranged.ron b/assets/common/items/npc_weapons/unique/quadlowranged.ron index 282c1fa15a..090292ab96 100644 --- a/assets/common/items/npc_weapons/unique/quadlowranged.ron +++ b/assets/common/items/npc_weapons/unique/quadlowranged.ron @@ -7,6 +7,7 @@ ItemDef( stats: ( equip_time_millis: 10, power: 1.00, + poise_strength: 1.00, speed: 1.00, ), ) diff --git a/assets/common/items/npc_weapons/unique/quadlowtail.ron b/assets/common/items/npc_weapons/unique/quadlowtail.ron index a79007335f..9b554bb398 100644 --- a/assets/common/items/npc_weapons/unique/quadlowtail.ron +++ b/assets/common/items/npc_weapons/unique/quadlowtail.ron @@ -7,6 +7,7 @@ ItemDef( stats: ( equip_time_millis: 10, power: 1.00, + poise_strength: 1.00, speed: 1.00, ), ) diff --git a/assets/common/items/npc_weapons/unique/quadmedbasic.ron b/assets/common/items/npc_weapons/unique/quadmedbasic.ron index b1950b89e4..fc6cedd22b 100644 --- a/assets/common/items/npc_weapons/unique/quadmedbasic.ron +++ b/assets/common/items/npc_weapons/unique/quadmedbasic.ron @@ -7,6 +7,7 @@ ItemDef( stats: ( equip_time_millis: 10, power: 1.00, + poise_strength: 1.00, speed: 1.00, ), ) diff --git a/assets/common/items/npc_weapons/unique/quadmedcharge.ron b/assets/common/items/npc_weapons/unique/quadmedcharge.ron index 990f56637b..6418ea601e 100644 --- a/assets/common/items/npc_weapons/unique/quadmedcharge.ron +++ b/assets/common/items/npc_weapons/unique/quadmedcharge.ron @@ -7,6 +7,7 @@ ItemDef( stats: ( equip_time_millis: 10, power: 1.00, + poise_strength: 1.00, speed: 1.00, ), ) diff --git a/assets/common/items/npc_weapons/unique/quadmedhoof.ron b/assets/common/items/npc_weapons/unique/quadmedhoof.ron index 0cb269c2a6..eed0adea73 100644 --- a/assets/common/items/npc_weapons/unique/quadmedhoof.ron +++ b/assets/common/items/npc_weapons/unique/quadmedhoof.ron @@ -7,6 +7,7 @@ ItemDef( stats: ( equip_time_millis: 10, power: 1.00, + poise_strength: 1.00, speed: 1.00, ), ) diff --git a/assets/common/items/npc_weapons/unique/quadmedjump.ron b/assets/common/items/npc_weapons/unique/quadmedjump.ron index 88fa3a2151..674b6a8479 100644 --- a/assets/common/items/npc_weapons/unique/quadmedjump.ron +++ b/assets/common/items/npc_weapons/unique/quadmedjump.ron @@ -7,6 +7,7 @@ ItemDef( stats: ( equip_time_millis: 10, power: 1.00, + poise_strength: 1.00, speed: 1.0, ), ) diff --git a/assets/common/items/npc_weapons/unique/quadmedquick.ron b/assets/common/items/npc_weapons/unique/quadmedquick.ron index 299ba3ab35..0535f15b89 100644 --- a/assets/common/items/npc_weapons/unique/quadmedquick.ron +++ b/assets/common/items/npc_weapons/unique/quadmedquick.ron @@ -7,6 +7,7 @@ ItemDef( stats: ( equip_time_millis: 10, power: 1.00, + poise_strength: 1.00, speed: 1.0, ), ) diff --git a/assets/common/items/npc_weapons/unique/quadsmallbasic.ron b/assets/common/items/npc_weapons/unique/quadsmallbasic.ron index da263d6109..0c8ca574ee 100644 --- a/assets/common/items/npc_weapons/unique/quadsmallbasic.ron +++ b/assets/common/items/npc_weapons/unique/quadsmallbasic.ron @@ -7,6 +7,7 @@ ItemDef( stats: ( equip_time_millis: 10, power: 1.00, + poise_strength: 1.00, speed: 1.00, ), ) diff --git a/assets/common/items/npc_weapons/unique/stone_golems_fist.ron b/assets/common/items/npc_weapons/unique/stone_golems_fist.ron index 3e665d9b61..a247a656af 100644 --- a/assets/common/items/npc_weapons/unique/stone_golems_fist.ron +++ b/assets/common/items/npc_weapons/unique/stone_golems_fist.ron @@ -7,6 +7,7 @@ ItemDef( stats: ( equip_time_millis: 500, power: 1.00, + poise_strength: 1.00, speed: 1.0 ), ) diff --git a/assets/common/items/npc_weapons/unique/theropodbasic.ron b/assets/common/items/npc_weapons/unique/theropodbasic.ron index 19bf867622..0f77fd2e10 100644 --- a/assets/common/items/npc_weapons/unique/theropodbasic.ron +++ b/assets/common/items/npc_weapons/unique/theropodbasic.ron @@ -7,6 +7,7 @@ ItemDef( stats: ( equip_time_millis: 10, power: 1.00, + poise_strength: 1.00, speed: 1.00, ), ) diff --git a/assets/common/items/npc_weapons/unique/theropodbird.ron b/assets/common/items/npc_weapons/unique/theropodbird.ron index 28e8b88293..bc054515a0 100644 --- a/assets/common/items/npc_weapons/unique/theropodbird.ron +++ b/assets/common/items/npc_weapons/unique/theropodbird.ron @@ -7,6 +7,7 @@ ItemDef( stats: ( equip_time_millis: 10, power: 1.00, + poise_strength: 1.00, speed: 1.00, ), ) diff --git a/assets/common/items/testing/test_bag_18_slot.ron b/assets/common/items/testing/test_bag_18_slot.ron index 4c708efeab..08e41f7659 100644 --- a/assets/common/items/testing/test_bag_18_slot.ron +++ b/assets/common/items/testing/test_bag_18_slot.ron @@ -4,7 +4,10 @@ ItemDef( kind: Armor( ( kind: Bag("TestBag18Slot"), - stats: (protection: Normal(0.0)), + stats: ( + protection: Normal(0.0), + poise_resilience: Normal(0.0), + ), ) ), quality: High, diff --git a/assets/common/items/testing/test_bag_9_slot.ron b/assets/common/items/testing/test_bag_9_slot.ron index 454d51d06e..4618b6179e 100644 --- a/assets/common/items/testing/test_bag_9_slot.ron +++ b/assets/common/items/testing/test_bag_9_slot.ron @@ -4,7 +4,10 @@ ItemDef( kind: Armor( ( kind: Bag("TestBag9Slot"), - stats: (protection: Normal(0.0)), + stats: ( + protection: Normal(0.0), + poise_resilience: Normal(0.0), + ), ) ), quality: High, diff --git a/assets/common/items/testing/test_boots.ron b/assets/common/items/testing/test_boots.ron index f30749f977..6a40f3f4c9 100644 --- a/assets/common/items/testing/test_boots.ron +++ b/assets/common/items/testing/test_boots.ron @@ -5,7 +5,9 @@ ItemDef( ( kind: Foot("Dark"), stats: ( - protection: Normal(0.0)), + protection: Normal(0.0), + poise_resilience: Normal(0.0), + ), ) ), quality: Low, diff --git a/assets/common/items/weapons/axe/bloodsteel_axe-0.ron b/assets/common/items/weapons/axe/bloodsteel_axe-0.ron index 0be056e32f..91fc7f98b6 100644 --- a/assets/common/items/weapons/axe/bloodsteel_axe-0.ron +++ b/assets/common/items/weapons/axe/bloodsteel_axe-0.ron @@ -1,15 +1,14 @@ ItemDef( name: "Bloodsteel Axe", description: "Dark rituals call for metal alloys to be formed in the blood of an animal carcass to ensure the resultant axe thirsts for future kills.", - kind: Tool( - ( - kind: Axe, - stats: ( - equip_time_millis: 400, - power: 1.60, - speed: 1.0 - ), - ) - ), + kind: Tool(( + kind: Axe, + stats: ( + equip_time_millis: 400, + power: 1.6, + poise_strength: 1.4, + speed: 1.0, + ), + )), quality: High, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/axe/bloodsteel_axe-1.ron b/assets/common/items/weapons/axe/bloodsteel_axe-1.ron index a8b1463cc7..4ae7a21165 100644 --- a/assets/common/items/weapons/axe/bloodsteel_axe-1.ron +++ b/assets/common/items/weapons/axe/bloodsteel_axe-1.ron @@ -1,15 +1,14 @@ ItemDef( - name: "Executioner's Axe", + name: "Executioner\'s Axe", description: "Dark rituals call for metal alloys to be formed in the blood of an animal carcass to ensure the resultant axe thirsts for future kills.", - kind: Tool( - ( - kind: Axe, - stats: ( - equip_time_millis: 400, - power: 1.60, - speed: 1.0 - ), - ) - ), + kind: Tool(( + kind: Axe, + stats: ( + equip_time_millis: 400, + power: 1.6, + poise_strength: 1.8, + speed: 1.0, + ), + )), quality: High, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/axe/bloodsteel_axe-2.ron b/assets/common/items/weapons/axe/bloodsteel_axe-2.ron index 749baeabe1..7ad948d4eb 100644 --- a/assets/common/items/weapons/axe/bloodsteel_axe-2.ron +++ b/assets/common/items/weapons/axe/bloodsteel_axe-2.ron @@ -1,15 +1,14 @@ ItemDef( name: "Tribal Axe", - description: "Some tribes call for metal alloys to be formed in the blood of an animal carcass to ensure the resultant axe is honed for striking their enemy's veins.", - kind: Tool( - ( - kind: Axe, - stats: ( - equip_time_millis: 400, - power: 1.60, - speed: 1.0 - ), - ) - ), + description: "Some tribes call for metal alloys to be formed in the blood of an animal carcass to ensure the resultant axe is honed for striking their enemy\'s veins.", + kind: Tool(( + kind: Axe, + stats: ( + equip_time_millis: 400, + power: 1.6, + poise_strength: 1.4, + speed: 1.0, + ), + )), quality: High, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/axe/bronze_axe-0.ron b/assets/common/items/weapons/axe/bronze_axe-0.ron index 831a96c31d..509db1a76c 100644 --- a/assets/common/items/weapons/axe/bronze_axe-0.ron +++ b/assets/common/items/weapons/axe/bronze_axe-0.ron @@ -1,15 +1,14 @@ ItemDef( name: "Bronze Axe", description: "A fine quality metal alloy axe.", - kind: Tool( - ( - kind: Axe, - stats: ( - equip_time_millis: 400, - power: 1.00, - speed: 1.0 - ), - ) - ), + kind: Tool(( + kind: Axe, + stats: ( + equip_time_millis: 400, + power: 1.0, + poise_strength: 0.9, + speed: 1.0, + ), + )), quality: Moderate, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/axe/bronze_axe-1.ron b/assets/common/items/weapons/axe/bronze_axe-1.ron index 2db56ad6af..0b9822c925 100644 --- a/assets/common/items/weapons/axe/bronze_axe-1.ron +++ b/assets/common/items/weapons/axe/bronze_axe-1.ron @@ -1,15 +1,14 @@ ItemDef( name: "Discus Axe", description: "While the metal alloy is relatively simple, this unique circular axe has a unique appearance.", - kind: Tool( - ( - kind: Axe, - stats: ( - equip_time_millis: 400, - power: 1.00, - speed: 1.0 - ), - ) - ), + kind: Tool(( + kind: Axe, + stats: ( + equip_time_millis: 400, + power: 1.0, + poise_strength: 1.5, + speed: 1.0, + ), + )), quality: Moderate, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/axe/cobalt_axe-0.ron b/assets/common/items/weapons/axe/cobalt_axe-0.ron index 6857a20150..cc8136a39b 100644 --- a/assets/common/items/weapons/axe/cobalt_axe-0.ron +++ b/assets/common/items/weapons/axe/cobalt_axe-0.ron @@ -1,15 +1,14 @@ ItemDef( name: "Cobalt Axe", description: "The lustrous bluish gray axe provides a certain stylish class to the weapon.", - kind: Tool( - ( - kind: Axe, - stats: ( - equip_time_millis: 400, - power: 1.80, - speed: 1.0 - ), - ) - ), + kind: Tool(( + kind: Axe, + stats: ( + equip_time_millis: 400, + power: 1.8, + poise_strength: 1.0, + speed: 1.0, + ), + )), quality: High, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/axe/iron_axe-0.ron b/assets/common/items/weapons/axe/iron_axe-0.ron index 860558e075..edcfe7fc01 100644 --- a/assets/common/items/weapons/axe/iron_axe-0.ron +++ b/assets/common/items/weapons/axe/iron_axe-0.ron @@ -1,15 +1,14 @@ ItemDef( name: "Iron Greataxe", description: "Heavy iron hammered into rough blades, a simple tool for killing.", - kind: Tool( - ( - kind: Axe, - stats: ( - equip_time_millis: 400, - power: 1.20, - speed: 1.0 - ), - ) - ), + kind: Tool(( + kind: Axe, + stats: ( + equip_time_millis: 400, + power: 1.2, + poise_strength: 1.7, + speed: 1.0, + ), + )), quality: Moderate, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/axe/iron_axe-1.ron b/assets/common/items/weapons/axe/iron_axe-1.ron index 034de7040c..c13537612a 100644 --- a/assets/common/items/weapons/axe/iron_axe-1.ron +++ b/assets/common/items/weapons/axe/iron_axe-1.ron @@ -1,15 +1,14 @@ ItemDef( name: "Ceremonial Axe", description: "Heavy iron axe, likely created for ritual execution.", - kind: Tool( - ( - kind: Axe, - stats: ( - equip_time_millis: 400, - power: 1.20, - speed: 1.0 - ), - ) - ), + kind: Tool(( + kind: Axe, + stats: ( + equip_time_millis: 400, + power: 1.2, + poise_strength: 1.4, + speed: 1.0, + ), + )), quality: Moderate, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/axe/iron_axe-2.ron b/assets/common/items/weapons/axe/iron_axe-2.ron index 4d504a54ef..5587256351 100644 --- a/assets/common/items/weapons/axe/iron_axe-2.ron +++ b/assets/common/items/weapons/axe/iron_axe-2.ron @@ -1,15 +1,14 @@ ItemDef( name: "Cyclone Axe", description: "The iron axe head is split into two distinct curves, giving it a unique appearance.", - kind: Tool( - ( - kind: Axe, - stats: ( - equip_time_millis: 400, - power: 1.20, - speed: 1.0 - ), - ) - ), + kind: Tool(( + kind: Axe, + stats: ( + equip_time_millis: 400, + power: 1.2, + poise_strength: 1.1, + speed: 1.0, + ), + )), quality: Moderate, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/axe/iron_axe-3.ron b/assets/common/items/weapons/axe/iron_axe-3.ron index 5f3bae741f..c801068869 100644 --- a/assets/common/items/weapons/axe/iron_axe-3.ron +++ b/assets/common/items/weapons/axe/iron_axe-3.ron @@ -1,15 +1,14 @@ ItemDef( name: "Iron Battleaxe", description: "Tried and true iron armaments, mass produced for killing.", - kind: Tool( - ( - kind: Axe, - stats: ( - equip_time_millis: 400, - power: 1.20, - speed: 1.0 - ), - ) - ), + kind: Tool(( + kind: Axe, + stats: ( + equip_time_millis: 400, + power: 1.2, + poise_strength: 1.6, + speed: 1.0, + ), + )), quality: Moderate, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/axe/iron_axe-4.ron b/assets/common/items/weapons/axe/iron_axe-4.ron index 3666abd029..b954b1308c 100644 --- a/assets/common/items/weapons/axe/iron_axe-4.ron +++ b/assets/common/items/weapons/axe/iron_axe-4.ron @@ -1,15 +1,14 @@ ItemDef( - name: "Butcher's Axe", + name: "Butcher\'s Axe", description: "This axe has a heavy iron head used to cleave nearly anything.", - kind: Tool( - ( - kind: Axe, - stats: ( - equip_time_millis: 400, - power: 1.20, - speed: 1.0 - ), - ) - ), + kind: Tool(( + kind: Axe, + stats: ( + equip_time_millis: 400, + power: 1.2, + poise_strength: 1.4, + speed: 1.0, + ), + )), quality: Moderate, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/axe/iron_axe-5.ron b/assets/common/items/weapons/axe/iron_axe-5.ron index f610d87614..756fab48c4 100644 --- a/assets/common/items/weapons/axe/iron_axe-5.ron +++ b/assets/common/items/weapons/axe/iron_axe-5.ron @@ -1,15 +1,14 @@ ItemDef( - name: "Barbarian's Axe", + name: "Barbarian\'s Axe", description: "While heavy, this iron forged axe is quite easy to swing, at least for those with the muscle backing it.", - kind: Tool( - ( - kind: Axe, - stats: ( - equip_time_millis: 400, - power: 1.20, - speed: 1.0 - ), - ) - ), + kind: Tool(( + kind: Axe, + stats: ( + equip_time_millis: 400, + power: 1.2, + poise_strength: 1.8, + speed: 1.0, + ), + )), quality: Moderate, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/axe/iron_axe-6.ron b/assets/common/items/weapons/axe/iron_axe-6.ron index 26de17601e..d62cff2294 100644 --- a/assets/common/items/weapons/axe/iron_axe-6.ron +++ b/assets/common/items/weapons/axe/iron_axe-6.ron @@ -1,15 +1,14 @@ ItemDef( name: "Iron Axe", description: "A simple dual bitted iron forged axe.", - kind: Tool( - ( - kind: Axe, - stats: ( - equip_time_millis: 400, - power: 1.20, - speed: 1.0 - ), - ) - ), + kind: Tool(( + kind: Axe, + stats: ( + equip_time_millis: 400, + power: 1.2, + poise_strength: 1.3, + speed: 1.0, + ), + )), quality: Moderate, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/axe/iron_axe-7.ron b/assets/common/items/weapons/axe/iron_axe-7.ron index 2dda4e512b..180769f438 100644 --- a/assets/common/items/weapons/axe/iron_axe-7.ron +++ b/assets/common/items/weapons/axe/iron_axe-7.ron @@ -1,15 +1,14 @@ ItemDef( name: "Iron Labrys", description: "Double bitted axe head, decorated iron construction.", - kind: Tool( - ( - kind: Axe, - stats: ( - equip_time_millis: 400, - power: 1.20, - speed: 1.0 - ), - ) - ), + kind: Tool(( + kind: Axe, + stats: ( + equip_time_millis: 400, + power: 1.2, + poise_strength: 1.6, + speed: 1.0, + ), + )), quality: Moderate, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/axe/iron_axe-8.ron b/assets/common/items/weapons/axe/iron_axe-8.ron index 96da8a3311..9ec1e1db5d 100644 --- a/assets/common/items/weapons/axe/iron_axe-8.ron +++ b/assets/common/items/weapons/axe/iron_axe-8.ron @@ -1,15 +1,14 @@ ItemDef( name: "Fanged Axe", description: "Several sharp axe heads forged with points to mimic animal fangs.", - kind: Tool( - ( - kind: Axe, - stats: ( - equip_time_millis: 400, - power: 1.20, - speed: 1.0 - ), - ) - ), + kind: Tool(( + kind: Axe, + stats: ( + equip_time_millis: 400, + power: 1.2, + poise_strength: 0.6, + speed: 1.0, + ), + )), quality: Moderate, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/axe/iron_axe-9.ron b/assets/common/items/weapons/axe/iron_axe-9.ron index 6fe9ac4c57..4e4cde5057 100644 --- a/assets/common/items/weapons/axe/iron_axe-9.ron +++ b/assets/common/items/weapons/axe/iron_axe-9.ron @@ -1,15 +1,14 @@ ItemDef( name: "Wolfen Axe", description: "Strikes from this axe look like wolf bites in flesh.", - kind: Tool( - ( - kind: Axe, - stats: ( - equip_time_millis: 400, - power: 1.20, - speed: 1.0 - ), - ) - ), + kind: Tool(( + kind: Axe, + stats: ( + equip_time_millis: 400, + power: 1.2, + poise_strength: 0.3, + speed: 1.0, + ), + )), quality: Moderate, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/axe/malachite_axe-0.ron b/assets/common/items/weapons/axe/malachite_axe-0.ron index d53a11f47d..1c1b901132 100644 --- a/assets/common/items/weapons/axe/malachite_axe-0.ron +++ b/assets/common/items/weapons/axe/malachite_axe-0.ron @@ -1,15 +1,14 @@ ItemDef( name: "Malachite Axe", description: "Etched axe head decorated with malachite on the blades to provide magical properties.", - kind: Tool( - ( - kind: Axe, - stats: ( - equip_time_millis: 400, - power: 2.00, - speed: 1.0 - ), - ) - ), + kind: Tool(( + kind: Axe, + stats: ( + equip_time_millis: 400, + power: 2.0, + poise_strength: 1.1, + speed: 1.0, + ), + )), quality: Epic, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/axe/orc_axe-0.ron b/assets/common/items/weapons/axe/orc_axe-0.ron index f725de2891..cd7969e1cf 100644 --- a/assets/common/items/weapons/axe/orc_axe-0.ron +++ b/assets/common/items/weapons/axe/orc_axe-0.ron @@ -1,15 +1,14 @@ ItemDef( name: "Beast Cleaver", description: "A rough cut axe created by orcs to cleave beasts in two.", - kind: Tool( - ( - kind: Axe, - stats: ( - equip_time_millis: 400, - power: 0.60, - speed: 1.0 - ), - ) - ), + kind: Tool(( + kind: Axe, + stats: ( + equip_time_millis: 400, + power: 0.6, + poise_strength: 1.5, + speed: 1.0, + ), + )), quality: Low, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/axe/starter_axe.ron b/assets/common/items/weapons/axe/starter_axe.ron index b867f649aa..37b9b1431d 100644 --- a/assets/common/items/weapons/axe/starter_axe.ron +++ b/assets/common/items/weapons/axe/starter_axe.ron @@ -1,15 +1,14 @@ ItemDef( name: "Notched Axe", description: "Every dent tells the story of a chopped tree.", - kind: Tool( - ( - kind: Axe, - stats: ( - equip_time_millis: 400, - power: 0.50, - speed: 1.0 - ), - ) - ), + kind: Tool(( + kind: Axe, + stats: ( + equip_time_millis: 400, + power: 0.5, + poise_strength: 2.0, + speed: 1.0, + ), + )), quality: Low, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/axe/steel_axe-0.ron b/assets/common/items/weapons/axe/steel_axe-0.ron index a422646047..9a4efa2f92 100644 --- a/assets/common/items/weapons/axe/steel_axe-0.ron +++ b/assets/common/items/weapons/axe/steel_axe-0.ron @@ -1,15 +1,14 @@ ItemDef( name: "Steel Battleaxe", description: "Well crafted metal alloy axe that slices more cleanly than its iron counterparts.", - kind: Tool( - ( - kind: Axe, - stats: ( - equip_time_millis: 400, - power: 1.40, - speed: 1.0 - ), - ) - ), + kind: Tool(( + kind: Axe, + stats: ( + equip_time_millis: 400, + power: 1.4, + poise_strength: 1.2, + speed: 1.0, + ), + )), quality: Moderate, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/axe/steel_axe-1.ron b/assets/common/items/weapons/axe/steel_axe-1.ron index b5e3365c24..83c5c7d84a 100644 --- a/assets/common/items/weapons/axe/steel_axe-1.ron +++ b/assets/common/items/weapons/axe/steel_axe-1.ron @@ -1,15 +1,14 @@ ItemDef( name: "Steel Labrys", description: "Double bitted, well polished, and spiked axe head.", - kind: Tool( - ( - kind: Axe, - stats: ( - equip_time_millis: 400, - power: 1.40, - speed: 1.0 - ), - ) - ), + kind: Tool(( + kind: Axe, + stats: ( + equip_time_millis: 400, + power: 1.4, + poise_strength: 1.2, + speed: 1.0, + ), + )), quality: Moderate, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/axe/steel_axe-2.ron b/assets/common/items/weapons/axe/steel_axe-2.ron index aeab3c660e..5da1136e72 100644 --- a/assets/common/items/weapons/axe/steel_axe-2.ron +++ b/assets/common/items/weapons/axe/steel_axe-2.ron @@ -1,15 +1,14 @@ ItemDef( name: "Steel Axe", description: "A simple metal alloy axe.", - kind: Tool( - ( - kind: Axe, - stats: ( - equip_time_millis: 400, - power: 1.40, - speed: 1.0 - ), - ) - ), + kind: Tool(( + kind: Axe, + stats: ( + equip_time_millis: 400, + power: 1.4, + poise_strength: 1.2, + speed: 1.0, + ), + )), quality: Moderate, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/axe/steel_axe-3.ron b/assets/common/items/weapons/axe/steel_axe-3.ron index 279638b999..477208f836 100644 --- a/assets/common/items/weapons/axe/steel_axe-3.ron +++ b/assets/common/items/weapons/axe/steel_axe-3.ron @@ -1,15 +1,14 @@ ItemDef( name: "Crescent Axe", description: "The blade of this steel axe is forged in a manner to resemble a crescent moon.", - kind: Tool( - ( - kind: Axe, - stats: ( - equip_time_millis: 400, - power: 1.40, - speed: 1.0 - ), - ) - ), + kind: Tool(( + kind: Axe, + stats: ( + equip_time_millis: 400, + power: 1.4, + poise_strength: 1.1, + speed: 1.0, + ), + )), quality: Moderate, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/axe/steel_axe-4.ron b/assets/common/items/weapons/axe/steel_axe-4.ron index f79705a9a6..3bc9e5e909 100644 --- a/assets/common/items/weapons/axe/steel_axe-4.ron +++ b/assets/common/items/weapons/axe/steel_axe-4.ron @@ -1,15 +1,14 @@ ItemDef( name: "Moon Axe", description: "The blade of this axe resembles a full moon.", - kind: Tool( - ( - kind: Axe, - stats: ( - equip_time_millis: 400, - power: 1.40, - speed: 1.0 - ), - ) - ), + kind: Tool(( + kind: Axe, + stats: ( + equip_time_millis: 400, + power: 1.4, + poise_strength: 1.2, + speed: 1.0, + ), + )), quality: Moderate, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/axe/steel_axe-5.ron b/assets/common/items/weapons/axe/steel_axe-5.ron index f0e90d9539..3460142677 100644 --- a/assets/common/items/weapons/axe/steel_axe-5.ron +++ b/assets/common/items/weapons/axe/steel_axe-5.ron @@ -1,15 +1,14 @@ ItemDef( name: "Owl Axe", description: "Druidic rituals formed this axe in the dark of night. Made to look like the wings of an owl swooping in on a kill.", - kind: Tool( - ( - kind: Axe, - stats: ( - equip_time_millis: 400, - power: 1.40, - speed: 1.0 - ), - ) - ), + kind: Tool(( + kind: Axe, + stats: ( + equip_time_millis: 400, + power: 1.4, + poise_strength: 1.5, + speed: 1.0, + ), + )), quality: Moderate, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/axe/steel_axe-6.ron b/assets/common/items/weapons/axe/steel_axe-6.ron index 70af8b071b..650aa5a48e 100644 --- a/assets/common/items/weapons/axe/steel_axe-6.ron +++ b/assets/common/items/weapons/axe/steel_axe-6.ron @@ -1,15 +1,14 @@ ItemDef( name: "Spade Axe", description: "This axe is designed to mimic the playing card suit, swiftly slicing through the air.", - kind: Tool( - ( - kind: Axe, - stats: ( - equip_time_millis: 400, - power: 1.40, - speed: 1.0 - ), - ) - ), + kind: Tool(( + kind: Axe, + stats: ( + equip_time_millis: 400, + power: 1.4, + poise_strength: 1.0, + speed: 1.0, + ), + )), quality: Moderate, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/axe/worn_iron_axe-0.ron b/assets/common/items/weapons/axe/worn_iron_axe-0.ron index f28034eca3..935db023e9 100644 --- a/assets/common/items/weapons/axe/worn_iron_axe-0.ron +++ b/assets/common/items/weapons/axe/worn_iron_axe-0.ron @@ -1,15 +1,14 @@ ItemDef( name: "Worn Dwarven Axe", - description: "Rough cut axe of dwarven origin, it's very old, but still usable.", - kind: Tool( - ( - kind: Axe, - stats: ( - equip_time_millis: 400, - power: 0.80, - speed: 1.0 - ), - ) - ), + description: "Rough cut axe of dwarven origin, it\'s very old, but still usable.", + kind: Tool(( + kind: Axe, + stats: ( + equip_time_millis: 400, + power: 0.8, + poise_strength: 0.4, + speed: 1.0, + ), + )), quality: Low, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/axe/worn_iron_axe-1.ron b/assets/common/items/weapons/axe/worn_iron_axe-1.ron index ea846a768c..3d535c97e6 100644 --- a/assets/common/items/weapons/axe/worn_iron_axe-1.ron +++ b/assets/common/items/weapons/axe/worn_iron_axe-1.ron @@ -1,15 +1,14 @@ ItemDef( name: "Worn Elven Axe", description: "Light elven axe, scratched from eons of use. Still usable in some manner.", - kind: Tool( - ( - kind: Axe, - stats: ( - equip_time_millis: 400, - power: 0.80, - speed: 1.0 - ), - ) - ), + kind: Tool(( + kind: Axe, + stats: ( + equip_time_millis: 400, + power: 0.8, + poise_strength: 0.4, + speed: 1.0, + ), + )), quality: Low, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/axe/worn_iron_axe-2.ron b/assets/common/items/weapons/axe/worn_iron_axe-2.ron index 11d8a79165..ed777c29de 100644 --- a/assets/common/items/weapons/axe/worn_iron_axe-2.ron +++ b/assets/common/items/weapons/axe/worn_iron_axe-2.ron @@ -1,15 +1,14 @@ ItemDef( name: "Worn Human Axe", - description: "There's nothing too remarkable about this old axe.", - kind: Tool( - ( - kind: Axe, - stats: ( - equip_time_millis: 400, - power: 0.80, - speed: 1.0 - ), - ) - ), + description: "There\'s nothing too remarkable about this old axe.", + kind: Tool(( + kind: Axe, + stats: ( + equip_time_millis: 400, + power: 0.8, + poise_strength: 0.7, + speed: 1.0, + ), + )), quality: Low, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/axe/worn_iron_axe-3.ron b/assets/common/items/weapons/axe/worn_iron_axe-3.ron index a8de78ee0d..54ed1655a8 100644 --- a/assets/common/items/weapons/axe/worn_iron_axe-3.ron +++ b/assets/common/items/weapons/axe/worn_iron_axe-3.ron @@ -1,15 +1,14 @@ ItemDef( name: "Worn Orcish Axe", description: "Rough cut iron makes it hard to tell that this axe is even used, other than how old it feels.", - kind: Tool( - ( - kind: Axe, - stats: ( - equip_time_millis: 400, - power: 0.80, - speed: 1.0 - ), - ) - ), + kind: Tool(( + kind: Axe, + stats: ( + equip_time_millis: 400, + power: 0.8, + poise_strength: 1.1, + speed: 1.0, + ), + )), quality: Low, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/axe/worn_iron_axe-4.ron b/assets/common/items/weapons/axe/worn_iron_axe-4.ron index 891cbbc2d2..c0238d670f 100644 --- a/assets/common/items/weapons/axe/worn_iron_axe-4.ron +++ b/assets/common/items/weapons/axe/worn_iron_axe-4.ron @@ -1,15 +1,14 @@ ItemDef( name: "Beetle Axe", description: "An axe formed with the intent of making the blade seem like a beetle. With how brittle it has gotten over the years, one would be mistaken in thinking it was made from beetle shell.", - kind: Tool( - ( - kind: Axe, - stats: ( - equip_time_millis: 400, - power: 0.80, - speed: 1.0 - ), - ) - ), + kind: Tool(( + kind: Axe, + stats: ( + equip_time_millis: 400, + power: 0.8, + poise_strength: 0.5, + speed: 1.0, + ), + )), quality: Low, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/bow/horn_longbow-0.ron b/assets/common/items/weapons/bow/horn_longbow-0.ron index 2cae3a5cb6..b5f8d7699f 100644 --- a/assets/common/items/weapons/bow/horn_longbow-0.ron +++ b/assets/common/items/weapons/bow/horn_longbow-0.ron @@ -1,15 +1,14 @@ ItemDef( name: "Horn Bow", - description: "You don't recognize the creature these horns belong to.", - kind: Tool( - ( - kind: Bow, - stats: ( - equip_time_millis: 400, - power: 1.50, - speed: 1.0 - ), - ) - ), + description: "You don\'t recognize the creature these horns belong to.", + kind: Tool(( + kind: Bow, + stats: ( + equip_time_millis: 400, + power: 1.5, + poise_strength: 0.8, + speed: 1.0, + ), + )), quality: Moderate, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/bow/iron_longbow-0.ron b/assets/common/items/weapons/bow/iron_longbow-0.ron index e762de291d..78b086a35e 100644 --- a/assets/common/items/weapons/bow/iron_longbow-0.ron +++ b/assets/common/items/weapons/bow/iron_longbow-0.ron @@ -1,15 +1,14 @@ ItemDef( - name: "Soldier's Bow", - description: "Has an insignia on it.", - kind: Tool( - ( - kind: Bow, - stats: ( - equip_time_millis: 400, - power: 1.75, - speed: 1.0 - ), - ) - ), + name: "Soldier\'s Bow", + description: "Has an insignia on it.", + kind: Tool(( + kind: Bow, + stats: ( + equip_time_millis: 400, + power: 1.75, + poise_strength: 1.3, + speed: 1.0, + ), + )), quality: Moderate, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/bow/leafy_longbow-0.ron b/assets/common/items/weapons/bow/leafy_longbow-0.ron index 2861d9ae72..25bfa06017 100644 --- a/assets/common/items/weapons/bow/leafy_longbow-0.ron +++ b/assets/common/items/weapons/bow/leafy_longbow-0.ron @@ -1,15 +1,14 @@ ItemDef( name: "Elven Longbow", - description: "There's a new leaf starting to grow.", - kind: Tool( - ( - kind: Bow, - stats: ( - equip_time_millis: 400, - power: 1.25, - speed: 1.0 - ), - ) - ), + description: "There\'s a new leaf starting to grow.", + kind: Tool(( + kind: Bow, + stats: ( + equip_time_millis: 400, + power: 1.25, + poise_strength: 1.0, + speed: 1.0, + ), + )), quality: Moderate, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/bow/leafy_shortbow-0.ron b/assets/common/items/weapons/bow/leafy_shortbow-0.ron index 50037a7ac2..46ff2edd2a 100644 --- a/assets/common/items/weapons/bow/leafy_shortbow-0.ron +++ b/assets/common/items/weapons/bow/leafy_shortbow-0.ron @@ -1,15 +1,14 @@ ItemDef( name: "Elven Shortbow", - description: "The wood still seems alive.", - kind: Tool( - ( - kind: Bow, - stats: ( - equip_time_millis: 400, - power: 1.00, - speed: 1.0 - ), - ) - ), + description: "The wood still seems alive.", + kind: Tool(( + kind: Bow, + stats: ( + equip_time_millis: 400, + power: 1.0, + poise_strength: 0.4, + speed: 1.0, + ), + )), quality: Common, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/bow/nature_ore_longbow-0.ron b/assets/common/items/weapons/bow/nature_ore_longbow-0.ron index 8053a3785c..585cfec405 100644 --- a/assets/common/items/weapons/bow/nature_ore_longbow-0.ron +++ b/assets/common/items/weapons/bow/nature_ore_longbow-0.ron @@ -1,15 +1,14 @@ ItemDef( name: "Velorite Bow", - description: "Infused with Velorite power.", - kind: Tool( - ( - kind: Bow, - stats: ( - equip_time_millis: 400, - power: 2.00, - speed: 1.0 - ), - ) - ), + description: "Infused with Velorite power.", + kind: Tool(( + kind: Bow, + stats: ( + equip_time_millis: 400, + power: 2.0, + poise_strength: 1.1, + speed: 1.0, + ), + )), quality: Epic, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/bow/rare_longbow.ron b/assets/common/items/weapons/bow/rare_longbow.ron index a1fb137a44..e0f8b8d02c 100644 --- a/assets/common/items/weapons/bow/rare_longbow.ron +++ b/assets/common/items/weapons/bow/rare_longbow.ron @@ -1,15 +1,14 @@ ItemDef( name: "Enchanted Longbow", - description: "You can sense power resting in the bow.", - kind: Tool( - ( - kind: Bow, - stats: ( - equip_time_millis: 400, - power: 2.00, - speed: 1.0 - ), - ) - ), + description: "You can sense power resting in the bow.", + kind: Tool(( + kind: Bow, + stats: ( + equip_time_millis: 400, + power: 2.0, + poise_strength: 1.0, + speed: 1.0, + ), + )), quality: Epic, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/bow/starter_bow.ron b/assets/common/items/weapons/bow/starter_bow.ron index 053d52ffec..6d579fd528 100644 --- a/assets/common/items/weapons/bow/starter_bow.ron +++ b/assets/common/items/weapons/bow/starter_bow.ron @@ -1,15 +1,14 @@ ItemDef( name: "Uneven Bow", - description: "Someone carved their initials into it.", - kind: Tool( - ( - kind: Bow, - stats: ( - equip_time_millis: 400, - power: 0.50, - speed: 1.0 - ), - ) - ), + description: "Someone carved their initials into it.", + kind: Tool(( + kind: Bow, + stats: ( + equip_time_millis: 400, + power: 0.5, + poise_strength: 0.3, + speed: 1.0, + ), + )), quality: Low, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/bow/wood_longbow-0.ron b/assets/common/items/weapons/bow/wood_longbow-0.ron index 52f2576f1d..716863c463 100644 --- a/assets/common/items/weapons/bow/wood_longbow-0.ron +++ b/assets/common/items/weapons/bow/wood_longbow-0.ron @@ -1,15 +1,14 @@ ItemDef( name: "Longbow", - description: "It's been well used.", - kind: Tool( - ( - kind: Bow, - stats: ( - equip_time_millis: 400, - power: 1.00, - speed: 1.0 - ), - ) - ), + description: "It\'s been well used.", + kind: Tool(( + kind: Bow, + stats: ( + equip_time_millis: 400, + power: 1.0, + poise_strength: 0.9, + speed: 1.0, + ), + )), quality: Common, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/bow/wood_longbow-1.ron b/assets/common/items/weapons/bow/wood_longbow-1.ron index 16e3bf322a..b23d93d237 100644 --- a/assets/common/items/weapons/bow/wood_longbow-1.ron +++ b/assets/common/items/weapons/bow/wood_longbow-1.ron @@ -1,15 +1,14 @@ ItemDef( name: "Recurve Bow", - description: "It's hard to pull all the way back.", - kind: Tool( - ( - kind: Bow, - stats: ( - equip_time_millis: 400, - power: 1.00, - speed: 1.0 - ), - ) - ), + description: "It\'s hard to pull all the way back.", + kind: Tool(( + kind: Bow, + stats: ( + equip_time_millis: 400, + power: 1.0, + poise_strength: 1.2, + speed: 1.0, + ), + )), quality: Common, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/bow/wood_shortbow-0.ron b/assets/common/items/weapons/bow/wood_shortbow-0.ron index 75cc167f2f..1a59612735 100644 --- a/assets/common/items/weapons/bow/wood_shortbow-0.ron +++ b/assets/common/items/weapons/bow/wood_shortbow-0.ron @@ -1,15 +1,14 @@ ItemDef( name: "Hunting Bow", - description: "Strips of leather are wrapped around the handle.", - kind: Tool( - ( - kind: Bow, - stats: ( - equip_time_millis: 400, - power: 0.8, - speed: 1.0 - ), - ) - ), + description: "Strips of leather are wrapped around the handle.", + kind: Tool(( + kind: Bow, + stats: ( + equip_time_millis: 400, + power: 0.8, + poise_strength: 0.7, + speed: 1.0, + ), + )), quality: Moderate, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/bow/wood_shortbow-1.ron b/assets/common/items/weapons/bow/wood_shortbow-1.ron index 26dffba37b..132a506ecb 100644 --- a/assets/common/items/weapons/bow/wood_shortbow-1.ron +++ b/assets/common/items/weapons/bow/wood_shortbow-1.ron @@ -1,15 +1,14 @@ ItemDef( name: "Horse Bow", - description: "Works on the ground too.", - kind: Tool( - ( - kind: Bow, - stats: ( - equip_time_millis: 400, - power: 0.75, - speed: 1.0 - ), - ) - ), + description: "Works on the ground too.", + kind: Tool(( + kind: Bow, + stats: ( + equip_time_millis: 400, + power: 0.75, + poise_strength: 0.4, + speed: 1.0, + ), + )), quality: Common, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/dagger/basic_0.ron b/assets/common/items/weapons/dagger/basic_0.ron index 4ee3f82ff6..62913c4659 100644 --- a/assets/common/items/weapons/dagger/basic_0.ron +++ b/assets/common/items/weapons/dagger/basic_0.ron @@ -1,15 +1,14 @@ ItemDef( name: "Suspicious Paper Knife", description: "Opens letters quickly.", - kind: Tool( - ( - kind: Dagger, - stats: ( - equip_time_millis: 0, - power: 1.80, - speed: 1.0 - ), - ) - ), + kind: Tool(( + kind: Dagger, + stats: ( + equip_time_millis: 0, + power: 1.8, + poise_strength: 2.0, + speed: 1.0, + ), + )), quality: High, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/dagger/cultist_0.ron b/assets/common/items/weapons/dagger/cultist_0.ron index d581e75484..9464b14fb0 100644 --- a/assets/common/items/weapons/dagger/cultist_0.ron +++ b/assets/common/items/weapons/dagger/cultist_0.ron @@ -1,15 +1,14 @@ ItemDef( name: "Magical Cultist Dagger", description: "This belonged to an evil Cult Leader.", - kind: Tool( - ( - kind: Dagger, - stats: ( - equip_time_millis: 0, - power: 2.00, - speed: 1.5 - ), - ) - ), + kind: Tool(( + kind: Dagger, + stats: ( + equip_time_millis: 0, + power: 2.0, + poise_strength: 1.0, + speed: 1.0, + ), + )), quality: Epic, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/dagger/starter_dagger.ron b/assets/common/items/weapons/dagger/starter_dagger.ron index a0118d0aca..0d5e5b4e32 100644 --- a/assets/common/items/weapons/dagger/starter_dagger.ron +++ b/assets/common/items/weapons/dagger/starter_dagger.ron @@ -1,15 +1,14 @@ ItemDef( name: "Rusty Dagger", description: "Easily concealed.", - kind: Tool( - ( - kind: Dagger, - stats: ( - equip_time_millis: 300, - power: 1.00, - speed: 1.0 - ), - ) - ), + kind: Tool(( + kind: Dagger, + stats: ( + equip_time_millis: 300, + power: 1.0, + poise_strength: 0.5, + speed: 1.0, + ), + )), quality: Moderate, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/empty/empty.ron b/assets/common/items/weapons/empty/empty.ron index ca1672b393..37a239cb98 100644 --- a/assets/common/items/weapons/empty/empty.ron +++ b/assets/common/items/weapons/empty/empty.ron @@ -1,15 +1,14 @@ ItemDef( name: "Empty Item", description: "This item may grant abilities, but is invisible", - kind: Tool ( - ( - kind: Empty, - stats: ( - equip_time_millis: 200, - power: 1.00, - speed: 1.0 - ), - ) - ), + kind: Tool(( + kind: Empty, + stats: ( + equip_time_millis: 200, + power: 1.0, + poise_strength: 1.0, + speed: 1.0, + ), + )), quality: Low, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/hammer/bronze_hammer-0.ron b/assets/common/items/weapons/hammer/bronze_hammer-0.ron index a558558585..7dd2ac408e 100644 --- a/assets/common/items/weapons/hammer/bronze_hammer-0.ron +++ b/assets/common/items/weapons/hammer/bronze_hammer-0.ron @@ -1,15 +1,14 @@ ItemDef( name: "Bronze Hammer", description: "A heavy hammer forged from a simple metal alloy.", - kind: Tool( - ( - kind: Hammer, - stats: ( - equip_time_millis: 500, - power: 1.00, - speed: 1.0 - ), - ) - ), + kind: Tool(( + kind: Hammer, + stats: ( + equip_time_millis: 500, + power: 1.0, + poise_strength: 0.9, + speed: 1.0, + ), + )), quality: Common, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/hammer/bronze_hammer-1.ron b/assets/common/items/weapons/hammer/bronze_hammer-1.ron index 3fbff62c53..25d9e09855 100644 --- a/assets/common/items/weapons/hammer/bronze_hammer-1.ron +++ b/assets/common/items/weapons/hammer/bronze_hammer-1.ron @@ -1,15 +1,14 @@ ItemDef( name: "Bronze Club", description: "The entire head of this club is forged from bronze alloy.", - kind: Tool( - ( - kind: Hammer, - stats: ( - equip_time_millis: 500, - power: 1.00, - speed: 1.0 - ), - ) - ), + kind: Tool(( + kind: Hammer, + stats: ( + equip_time_millis: 500, + power: 1.0, + poise_strength: 1.0, + speed: 1.0, + ), + )), quality: Common, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/hammer/cobalt_hammer-0.ron b/assets/common/items/weapons/hammer/cobalt_hammer-0.ron index 726cb8c524..3419ec5721 100644 --- a/assets/common/items/weapons/hammer/cobalt_hammer-0.ron +++ b/assets/common/items/weapons/hammer/cobalt_hammer-0.ron @@ -1,15 +1,14 @@ ItemDef( name: "Cobalt Hammer", description: "The bluish gray tinge to the metal of this hammer head provides a slight classiness to the weapon.", - kind: Tool( - ( - kind: Hammer, - stats: ( - equip_time_millis: 500, - power: 1.60, - speed: 1.0 - ), - ) - ), + kind: Tool(( + kind: Hammer, + stats: ( + equip_time_millis: 500, + power: 1.6, + poise_strength: 1.5, + speed: 1.0, + ), + )), quality: Moderate, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/hammer/cobalt_hammer-1.ron b/assets/common/items/weapons/hammer/cobalt_hammer-1.ron index 02bb324bfb..474f09cbb5 100644 --- a/assets/common/items/weapons/hammer/cobalt_hammer-1.ron +++ b/assets/common/items/weapons/hammer/cobalt_hammer-1.ron @@ -1,15 +1,14 @@ ItemDef( name: "Cobalt Mace", description: "The decorative hooked head of this mace is formed from a bluish gray metal.", - kind: Tool( - ( - kind: Hammer, - stats: ( - equip_time_millis: 500, - power: 1.60, - speed: 1.0 - ), - ) - ), + kind: Tool(( + kind: Hammer, + stats: ( + equip_time_millis: 500, + power: 1.6, + poise_strength: 1.4, + speed: 1.0, + ), + )), quality: Moderate, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/hammer/cultist_purp_2h-0.ron b/assets/common/items/weapons/hammer/cultist_purp_2h-0.ron index 942d2c86d4..ddefb19926 100644 --- a/assets/common/items/weapons/hammer/cultist_purp_2h-0.ron +++ b/assets/common/items/weapons/hammer/cultist_purp_2h-0.ron @@ -1,15 +1,14 @@ ItemDef( name: "Magical Cultist Warhammer", description: "This belonged to an evil Cult Leader.", - kind: Tool( - ( - kind: Hammer, - stats: ( - equip_time_millis: 500, - power: 2.00, - speed: 1.0 - ), - ) - ), + kind: Tool(( + kind: Hammer, + stats: ( + equip_time_millis: 500, + power: 2.0, + poise_strength: 1.0, + speed: 1.0, + ), + )), quality: Epic, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/hammer/flimsy_hammer.ron b/assets/common/items/weapons/hammer/flimsy_hammer.ron index 02b087a584..a017441bee 100644 --- a/assets/common/items/weapons/hammer/flimsy_hammer.ron +++ b/assets/common/items/weapons/hammer/flimsy_hammer.ron @@ -1,15 +1,14 @@ ItemDef( name: "Flimsy Hammer", description: "The head is barely secured.", - kind: Tool( - ( - kind: Hammer, - stats: ( - equip_time_millis: 500, - power: 0.50, - speed: 1.0 - ), - ) - ), + kind: Tool(( + kind: Hammer, + stats: ( + equip_time_millis: 500, + power: 0.5, + poise_strength: 0.4, + speed: 1.0, + ), + )), quality: Low, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/hammer/hammer_1.ron b/assets/common/items/weapons/hammer/hammer_1.ron index 47b01d509b..3feb1658f6 100644 --- a/assets/common/items/weapons/hammer/hammer_1.ron +++ b/assets/common/items/weapons/hammer/hammer_1.ron @@ -1,15 +1,14 @@ ItemDef( name: "Crude Mallet", description: "Breaks bones like sticks and stones.", - kind: Tool( - ( - kind: Hammer, - stats: ( - equip_time_millis: 500, - power: 0.50, - speed: 1.0 - ), - quality: Low, - ) - ) -) + kind: Tool(( + kind: Hammer, + stats: ( + equip_time_millis: 500, + power: 0.5, + poise_strength: 0.8, + speed: 1.0, + ), + )), + quality: Low, +) \ No newline at end of file diff --git a/assets/common/items/weapons/hammer/iron_hammer-0.ron b/assets/common/items/weapons/hammer/iron_hammer-0.ron index 226db9e7d3..7f604f97ea 100644 --- a/assets/common/items/weapons/hammer/iron_hammer-0.ron +++ b/assets/common/items/weapons/hammer/iron_hammer-0.ron @@ -1,15 +1,14 @@ ItemDef( name: "Iron Hammer", description: "This heavy, solid chunk iron hammer head is simple and brutal in its design.", - kind: Tool( - ( - kind: Hammer, - stats: ( - equip_time_millis: 500, - power: 1.20, - speed: 1.0 - ), - ) - ), + kind: Tool(( + kind: Hammer, + stats: ( + equip_time_millis: 500, + power: 1.2, + poise_strength: 1.4, + speed: 1.0, + ), + )), quality: Common, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/hammer/iron_hammer-1.ron b/assets/common/items/weapons/hammer/iron_hammer-1.ron index 70fc39cda6..9eea0766ae 100644 --- a/assets/common/items/weapons/hammer/iron_hammer-1.ron +++ b/assets/common/items/weapons/hammer/iron_hammer-1.ron @@ -1,15 +1,14 @@ ItemDef( name: "Iron Battlehammer", description: "This heavy, square iron hammer is designed for squashing heads like watermelons.", - kind: Tool( - ( - kind: Hammer, - stats: ( - equip_time_millis: 500, - power: 1.20, - speed: 1.0 - ), - ) - ), + kind: Tool(( + kind: Hammer, + stats: ( + equip_time_millis: 500, + power: 1.2, + poise_strength: 0.9, + speed: 1.0, + ), + )), quality: Common, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/hammer/iron_hammer-2.ron b/assets/common/items/weapons/hammer/iron_hammer-2.ron index 11f045abe7..ad792b4109 100644 --- a/assets/common/items/weapons/hammer/iron_hammer-2.ron +++ b/assets/common/items/weapons/hammer/iron_hammer-2.ron @@ -1,15 +1,14 @@ ItemDef( name: "Iron Mace", description: "A decorative iron mace, great for smashing.", - kind: Tool( - ( - kind: Hammer, - stats: ( - equip_time_millis: 500, - power: 1.20, - speed: 1.0 - ), - ) - ), + kind: Tool(( + kind: Hammer, + stats: ( + equip_time_millis: 500, + power: 1.2, + poise_strength: 1.4, + speed: 1.0, + ), + )), quality: Common, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/hammer/iron_hammer-3.ron b/assets/common/items/weapons/hammer/iron_hammer-3.ron index 7af920efb4..b37c10e0eb 100644 --- a/assets/common/items/weapons/hammer/iron_hammer-3.ron +++ b/assets/common/items/weapons/hammer/iron_hammer-3.ron @@ -1,15 +1,14 @@ ItemDef( name: "Crowned Mace", description: "The decorative iron mace has a crowning tip on top.", - kind: Tool( - ( - kind: Hammer, - stats: ( - equip_time_millis: 500, - power: 1.20, - speed: 1.0 - ), - ) - ), + kind: Tool(( + kind: Hammer, + stats: ( + equip_time_millis: 500, + power: 1.2, + poise_strength: 1.0, + speed: 1.0, + ), + )), quality: Common, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/hammer/iron_hammer-4.ron b/assets/common/items/weapons/hammer/iron_hammer-4.ron index e7e7b0d2cf..5456e732f3 100644 --- a/assets/common/items/weapons/hammer/iron_hammer-4.ron +++ b/assets/common/items/weapons/hammer/iron_hammer-4.ron @@ -1,15 +1,14 @@ ItemDef( name: "Forge Hammer", description: "Worn head shows that this hammer had been used for many years to make other weapons, now relegated to being a weapon in its own right.", - kind: Tool( - ( - kind: Hammer, - stats: ( - equip_time_millis: 500, - power: 1.20, - speed: 1.0 - ), - ) - ), + kind: Tool(( + kind: Hammer, + stats: ( + equip_time_millis: 500, + power: 1.2, + poise_strength: 1.0, + speed: 1.0, + ), + )), quality: Common, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/hammer/iron_hammer-5.ron b/assets/common/items/weapons/hammer/iron_hammer-5.ron index 63a1bd1b41..cb868b7417 100644 --- a/assets/common/items/weapons/hammer/iron_hammer-5.ron +++ b/assets/common/items/weapons/hammer/iron_hammer-5.ron @@ -1,15 +1,14 @@ ItemDef( name: "Lucerne Hammer", description: "A hybrid fusion of a warhammer and a polearm.", - kind: Tool( - ( - kind: Hammer, - stats: ( - equip_time_millis: 500, - power: 1.20, - speed: 1.0 - ), - ) - ), + kind: Tool(( + kind: Hammer, + stats: ( + equip_time_millis: 500, + power: 1.2, + poise_strength: 0.8, + speed: 1.0, + ), + )), quality: Common, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/hammer/iron_hammer-6.ron b/assets/common/items/weapons/hammer/iron_hammer-6.ron index f87de3f0e8..f1fc1e3e19 100644 --- a/assets/common/items/weapons/hammer/iron_hammer-6.ron +++ b/assets/common/items/weapons/hammer/iron_hammer-6.ron @@ -1,15 +1,14 @@ ItemDef( name: "Spiked Maul", description: "A rough shaped iron hammer with spikes for added destruction.", - kind: Tool( - ( - kind: Hammer, - stats: ( - equip_time_millis: 500, - power: 1.20, - speed: 1.0 - ), - ) - ), + kind: Tool(( + kind: Hammer, + stats: ( + equip_time_millis: 500, + power: 1.2, + poise_strength: 1.4, + speed: 1.0, + ), + )), quality: Common, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/hammer/iron_hammer-7.ron b/assets/common/items/weapons/hammer/iron_hammer-7.ron index bda62278e3..0bf7ef8389 100644 --- a/assets/common/items/weapons/hammer/iron_hammer-7.ron +++ b/assets/common/items/weapons/hammer/iron_hammer-7.ron @@ -1,15 +1,14 @@ ItemDef( - name: "Giant's Fist", + name: "Giant\'s Fist", description: "This iron forged hammer is roughly shaped into the shape of a fist holding the hammer head.", - kind: Tool( - ( - kind: Hammer, - stats: ( - equip_time_millis: 500, - power: 1.20, - speed: 1.0 - ), - ) - ), + kind: Tool(( + kind: Hammer, + stats: ( + equip_time_millis: 500, + power: 1.2, + poise_strength: 1.1, + speed: 1.0, + ), + )), quality: Common, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/hammer/iron_hammer-8.ron b/assets/common/items/weapons/hammer/iron_hammer-8.ron index 9b2ae813ad..93fc183829 100644 --- a/assets/common/items/weapons/hammer/iron_hammer-8.ron +++ b/assets/common/items/weapons/hammer/iron_hammer-8.ron @@ -1,15 +1,14 @@ ItemDef( name: "Pike Hammer", description: "This hammer has a spike on the opposite end, making it dangerous when swung either direction.", - kind: Tool( - ( - kind: Hammer, - stats: ( - equip_time_millis: 500, - power: 1.20, - speed: 1.0 - ), - ) - ), + kind: Tool(( + kind: Hammer, + stats: ( + equip_time_millis: 500, + power: 1.2, + poise_strength: 0.8, + speed: 1.0, + ), + )), quality: Common, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/hammer/mjolnir.ron b/assets/common/items/weapons/hammer/mjolnir.ron index 81b190becb..e804e29ec9 100644 --- a/assets/common/items/weapons/hammer/mjolnir.ron +++ b/assets/common/items/weapons/hammer/mjolnir.ron @@ -7,6 +7,7 @@ ItemDef( stats: ( equip_time_millis: 500, power: 4.00, + poise_strength: 2.0, speed: 0.5 ), ) diff --git a/assets/common/items/weapons/hammer/ramshead_hammer.ron b/assets/common/items/weapons/hammer/ramshead_hammer.ron index 0f1c2887a6..1221aa1432 100644 --- a/assets/common/items/weapons/hammer/ramshead_hammer.ron +++ b/assets/common/items/weapons/hammer/ramshead_hammer.ron @@ -1,15 +1,14 @@ ItemDef( - name: "Ram's Head Mace", + name: "Ram\'s Head Mace", description: "You feel an evil presence in the hammer.", - kind: Tool( - ( - kind: Hammer, - stats: ( - equip_time_millis: 500, - power: 1.80, - speed: 1.0 - ), - ) - ), + kind: Tool(( + kind: Hammer, + stats: ( + equip_time_millis: 500, + power: 1.8, + poise_strength: 1.7, + speed: 1.0, + ), + )), quality: High, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/hammer/runic_hammer.ron b/assets/common/items/weapons/hammer/runic_hammer.ron index 3b32590023..0f39b2b3c5 100644 --- a/assets/common/items/weapons/hammer/runic_hammer.ron +++ b/assets/common/items/weapons/hammer/runic_hammer.ron @@ -1,15 +1,14 @@ ItemDef( name: "Runic Hammer", description: "There are strange runes inscribed into it.", - kind: Tool( - ( - kind: Hammer, - stats: ( - equip_time_millis: 500, - power: 1.80, - speed: 1.0 - ), - ) - ), + kind: Tool(( + kind: Hammer, + stats: ( + equip_time_millis: 500, + power: 1.8, + poise_strength: 1.8, + speed: 1.0, + ), + )), quality: High, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/hammer/starter_hammer.ron b/assets/common/items/weapons/hammer/starter_hammer.ron index 35d167e7a8..79503805d8 100644 --- a/assets/common/items/weapons/hammer/starter_hammer.ron +++ b/assets/common/items/weapons/hammer/starter_hammer.ron @@ -1,15 +1,14 @@ ItemDef( name: "Sturdy Old Hammer", - description: "'Property of...' The rest is missing.", - kind: Tool( - ( - kind: Hammer, - stats: ( - equip_time_millis: 500, - power: 0.50, - speed: 1.0 - ), - ) - ), + description: "\'Property of...\' The rest is missing.", + kind: Tool(( + kind: Hammer, + stats: ( + equip_time_millis: 500, + power: 0.5, + poise_strength: 0.9, + speed: 1.0, + ), + )), quality: Low, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/hammer/steel_hammer-0.ron b/assets/common/items/weapons/hammer/steel_hammer-0.ron index a952a02129..1e9d715a34 100644 --- a/assets/common/items/weapons/hammer/steel_hammer-0.ron +++ b/assets/common/items/weapons/hammer/steel_hammer-0.ron @@ -1,15 +1,14 @@ ItemDef( name: "Steel Hammer", description: "While lighter and more durable than its iron counterparts, it is nonetheless just as deadly.", - kind: Tool( - ( - kind: Hammer, - stats: ( - equip_time_millis: 500, - power: 1.40, - speed: 1.0 - ), - ) - ), + kind: Tool(( + kind: Hammer, + stats: ( + equip_time_millis: 500, + power: 1.4, + poise_strength: 1.5, + speed: 1.0, + ), + )), quality: Moderate, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/hammer/steel_hammer-1.ron b/assets/common/items/weapons/hammer/steel_hammer-1.ron index 0550316424..14f1d494b8 100644 --- a/assets/common/items/weapons/hammer/steel_hammer-1.ron +++ b/assets/common/items/weapons/hammer/steel_hammer-1.ron @@ -1,15 +1,14 @@ ItemDef( name: "Steel Greathammer", description: "The lighter attributes of the metal alloy are barely noticed when forged into such a wide hammer head.", - kind: Tool( - ( - kind: Hammer, - stats: ( - equip_time_millis: 500, - power: 1.40, - speed: 1.0 - ), - ) - ), + kind: Tool(( + kind: Hammer, + stats: ( + equip_time_millis: 500, + power: 1.4, + poise_strength: 1.3, + speed: 1.0, + ), + )), quality: Moderate, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/hammer/steel_hammer-2.ron b/assets/common/items/weapons/hammer/steel_hammer-2.ron index 9556767429..ad546e4b2b 100644 --- a/assets/common/items/weapons/hammer/steel_hammer-2.ron +++ b/assets/common/items/weapons/hammer/steel_hammer-2.ron @@ -1,15 +1,14 @@ ItemDef( name: "Steel Club", description: "A heavy and wide baton made of a durable metal alloy, decorated with spikes.", - kind: Tool( - ( - kind: Hammer, - stats: ( - equip_time_millis: 500, - power: 1.40, - speed: 1.0 - ), - ) - ), + kind: Tool(( + kind: Hammer, + stats: ( + equip_time_millis: 500, + power: 1.4, + poise_strength: 1.0, + speed: 1.0, + ), + )), quality: Moderate, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/hammer/steel_hammer-3.ron b/assets/common/items/weapons/hammer/steel_hammer-3.ron index aff74b45a8..e74106526a 100644 --- a/assets/common/items/weapons/hammer/steel_hammer-3.ron +++ b/assets/common/items/weapons/hammer/steel_hammer-3.ron @@ -1,15 +1,14 @@ ItemDef( name: "Battle Mace", description: "A heavy, spiked steel ball tip provides a great smashing weapon.", - kind: Tool( - ( - kind: Hammer, - stats: ( - equip_time_millis: 500, - power: 1.40, - speed: 1.0 - ), - ) - ), + kind: Tool(( + kind: Hammer, + stats: ( + equip_time_millis: 500, + power: 1.4, + poise_strength: 1.7, + speed: 1.0, + ), + )), quality: Moderate, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/hammer/steel_hammer-4.ron b/assets/common/items/weapons/hammer/steel_hammer-4.ron index b5a6c46b8a..7c256f30cd 100644 --- a/assets/common/items/weapons/hammer/steel_hammer-4.ron +++ b/assets/common/items/weapons/hammer/steel_hammer-4.ron @@ -1,15 +1,14 @@ ItemDef( - name: "Brute's Hammer", + name: "Brute\'s Hammer", description: "This destructive hammer was likely wielded by a vicious killer.", - kind: Tool( - ( - kind: Hammer, - stats: ( - equip_time_millis: 500, - power: 1.40, - speed: 1.0 - ), - ) - ), + kind: Tool(( + kind: Hammer, + stats: ( + equip_time_millis: 500, + power: 1.4, + poise_strength: 1.5, + speed: 1.0, + ), + )), quality: Moderate, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/hammer/steel_hammer-5.ron b/assets/common/items/weapons/hammer/steel_hammer-5.ron index 9b2bc8b565..5c266923e1 100644 --- a/assets/common/items/weapons/hammer/steel_hammer-5.ron +++ b/assets/common/items/weapons/hammer/steel_hammer-5.ron @@ -1,15 +1,14 @@ ItemDef( name: "Morning Star", description: "A spiked ball designed to resemble the stars lining the night sky.", - kind: Tool( - ( - kind: Hammer, - stats: ( - equip_time_millis: 500, - power: 1.40, - speed: 1.0 - ), - ) - ), + kind: Tool(( + kind: Hammer, + stats: ( + equip_time_millis: 500, + power: 1.4, + poise_strength: 1.3, + speed: 1.0, + ), + )), quality: Moderate, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/hammer/stone_hammer-0.ron b/assets/common/items/weapons/hammer/stone_hammer-0.ron index 6b5c9141e2..fa90c09493 100644 --- a/assets/common/items/weapons/hammer/stone_hammer-0.ron +++ b/assets/common/items/weapons/hammer/stone_hammer-0.ron @@ -1,15 +1,14 @@ ItemDef( name: "Basalt Sledgehammer", description: "Bloodied stone tied to a branch, simple but functional as a weapon.", - kind: Tool( - ( - kind: Hammer, - stats: ( - equip_time_millis: 500, - power: 0.70, - speed: 1.0 - ), - ) - ), + kind: Tool(( + kind: Hammer, + stats: ( + equip_time_millis: 500, + power: 0.7, + poise_strength: 1.7, + speed: 1.0, + ), + )), quality: Low, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/hammer/stone_hammer-1.ron b/assets/common/items/weapons/hammer/stone_hammer-1.ron index 02fc44688a..9ed2ae8378 100644 --- a/assets/common/items/weapons/hammer/stone_hammer-1.ron +++ b/assets/common/items/weapons/hammer/stone_hammer-1.ron @@ -1,15 +1,14 @@ ItemDef( name: "Granite Sledgehammer", description: "A rough stone, crumbling on the striking surfaces. Still usable as a weapon.", - kind: Tool( - ( - kind: Hammer, - stats: ( - equip_time_millis: 500, - power: 0.70, - speed: 1.0 - ), - ) - ), + kind: Tool(( + kind: Hammer, + stats: ( + equip_time_millis: 500, + power: 0.7, + poise_strength: 1.8, + speed: 1.0, + ), + )), quality: Low, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/hammer/stone_hammer-2.ron b/assets/common/items/weapons/hammer/stone_hammer-2.ron index ead1e3cdd9..864830660e 100644 --- a/assets/common/items/weapons/hammer/stone_hammer-2.ron +++ b/assets/common/items/weapons/hammer/stone_hammer-2.ron @@ -1,15 +1,14 @@ ItemDef( name: "Rocky Maul", description: "A rock tied to a stick, still good for smashing, but not very strong.", - kind: Tool( - ( - kind: Hammer, - stats: ( - equip_time_millis: 500, - power: 0.70, - speed: 1.0 - ), - ) - ), + kind: Tool(( + kind: Hammer, + stats: ( + equip_time_millis: 500, + power: 0.7, + poise_strength: 1.0, + speed: 1.0, + ), + )), quality: Low, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/hammer/stone_hammer-3.ron b/assets/common/items/weapons/hammer/stone_hammer-3.ron index 8817aec322..278b23666b 100644 --- a/assets/common/items/weapons/hammer/stone_hammer-3.ron +++ b/assets/common/items/weapons/hammer/stone_hammer-3.ron @@ -1,15 +1,14 @@ ItemDef( name: "Stone Sledgehammer", description: "A heavy rock with a slot worn through to fasten it in place. Brutal in its simple design, but still functional.", - kind: Tool( - ( - kind: Hammer, - stats: ( - equip_time_millis: 500, - power: 0.70, - speed: 1.0 - ), - ) - ), + kind: Tool(( + kind: Hammer, + stats: ( + equip_time_millis: 500, + power: 0.7, + poise_strength: 1.8, + speed: 1.0, + ), + )), quality: Low, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/hammer/wood_hammer-0.ron b/assets/common/items/weapons/hammer/wood_hammer-0.ron index 9c9d66a659..ba56f59df6 100644 --- a/assets/common/items/weapons/hammer/wood_hammer-0.ron +++ b/assets/common/items/weapons/hammer/wood_hammer-0.ron @@ -1,15 +1,14 @@ ItemDef( name: "Hardwood Mallet", description: "Hardened wood, subjected to many different elements to provide a enough strength to be a weapon.", - kind: Tool( - ( - kind: Hammer, - stats: ( - equip_time_millis: 500, - power: 0.60, - speed: 1.0 - ), - ) - ), + kind: Tool(( + kind: Hammer, + stats: ( + equip_time_millis: 500, + power: 0.6, + poise_strength: 0.8, + speed: 1.0, + ), + )), quality: Low, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/hammer/worn_iron_hammer-0.ron b/assets/common/items/weapons/hammer/worn_iron_hammer-0.ron index e48ae526da..eaf971771c 100644 --- a/assets/common/items/weapons/hammer/worn_iron_hammer-0.ron +++ b/assets/common/items/weapons/hammer/worn_iron_hammer-0.ron @@ -1,15 +1,14 @@ ItemDef( name: "Worn Dwarven Hammer", description: "While the dwarves excel at rough hewn weapons, this one has seen its fair share of battles, might still serve well enough for a few more.", - kind: Tool( - ( - kind: Hammer, - stats: ( - equip_time_millis: 500, - power: 0.85, - speed: 1.0 - ), - ) - ), + kind: Tool(( + kind: Hammer, + stats: ( + equip_time_millis: 500, + power: 0.85, + poise_strength: 1.0, + speed: 1.0, + ), + )), quality: Common, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/hammer/worn_iron_hammer-1.ron b/assets/common/items/weapons/hammer/worn_iron_hammer-1.ron index 42aa2614f8..edb7855aa6 100644 --- a/assets/common/items/weapons/hammer/worn_iron_hammer-1.ron +++ b/assets/common/items/weapons/hammer/worn_iron_hammer-1.ron @@ -1,15 +1,14 @@ ItemDef( name: "Worn Elven Hammer", description: "Elven hammers are lighter than most. This one has seen its fair share of wear and tear.", - kind: Tool( - ( - kind: Hammer, - stats: ( - equip_time_millis: 500, - power: 0.85, - speed: 1.0 - ), - ) - ), + kind: Tool(( + kind: Hammer, + stats: ( + equip_time_millis: 500, + power: 0.85, + poise_strength: 0.6, + speed: 1.0, + ), + )), quality: Common, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/hammer/worn_iron_hammer-2.ron b/assets/common/items/weapons/hammer/worn_iron_hammer-2.ron index e005ea5254..c88709a11e 100644 --- a/assets/common/items/weapons/hammer/worn_iron_hammer-2.ron +++ b/assets/common/items/weapons/hammer/worn_iron_hammer-2.ron @@ -1,15 +1,14 @@ ItemDef( name: "Worn Human Mace", description: "An unremarkable mace, that has seen a lot of use.", - kind: Tool( - ( - kind: Hammer, - stats: ( - equip_time_millis: 500, - power: 0.85, - speed: 1.0 - ), - ) - ), + kind: Tool(( + kind: Hammer, + stats: ( + equip_time_millis: 500, + power: 0.85, + poise_strength: 0.7, + speed: 1.0, + ), + )), quality: Common, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/hammer/worn_iron_hammer-3.ron b/assets/common/items/weapons/hammer/worn_iron_hammer-3.ron index c5c42c6b31..0cdfc9eb9c 100644 --- a/assets/common/items/weapons/hammer/worn_iron_hammer-3.ron +++ b/assets/common/items/weapons/hammer/worn_iron_hammer-3.ron @@ -1,15 +1,14 @@ ItemDef( name: "Worn Orcish Hammer", description: "A heavy orc crafted hammer, missing chunks from heavy use.", - kind: Tool( - ( - kind: Hammer, - stats: ( - equip_time_millis: 500, - power: 0.85, - speed: 1.0 - ), - ) - ), + kind: Tool(( + kind: Hammer, + stats: ( + equip_time_millis: 500, + power: 0.85, + poise_strength: 1.1, + speed: 1.0, + ), + )), quality: Common, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/sceptre/fork0.ron b/assets/common/items/weapons/sceptre/fork0.ron index 2720258e28..01f5966b79 100644 --- a/assets/common/items/weapons/sceptre/fork0.ron +++ b/assets/common/items/weapons/sceptre/fork0.ron @@ -7,6 +7,7 @@ ItemDef( stats: ( equip_time_millis: 400, power: 2.0, + poise_strength: 1.5, speed: 0.8 ), ) diff --git a/assets/common/items/weapons/sceptre/loops0.ron b/assets/common/items/weapons/sceptre/loops0.ron index 4f67fefb71..fb58f390b7 100644 --- a/assets/common/items/weapons/sceptre/loops0.ron +++ b/assets/common/items/weapons/sceptre/loops0.ron @@ -7,6 +7,7 @@ ItemDef( stats: ( equip_time_millis: 400, power: 1.2, + poise_strength: 1.5, speed: 1.5 ), ) diff --git a/assets/common/items/weapons/sceptre/moon0.ron b/assets/common/items/weapons/sceptre/moon0.ron index b77a981837..84691f2592 100644 --- a/assets/common/items/weapons/sceptre/moon0.ron +++ b/assets/common/items/weapons/sceptre/moon0.ron @@ -7,6 +7,7 @@ ItemDef( stats: ( equip_time_millis: 400, power: 1.6, + poise_strength: 1.5, speed: 0.5 ), ) diff --git a/assets/common/items/weapons/sceptre/root_evil.ron b/assets/common/items/weapons/sceptre/root_evil.ron index 488423bbad..1e6f0c870c 100644 --- a/assets/common/items/weapons/sceptre/root_evil.ron +++ b/assets/common/items/weapons/sceptre/root_evil.ron @@ -7,6 +7,7 @@ ItemDef( stats: ( equip_time_millis: 400, power: 4.0, + poise_strength: 1.5, speed: 0.5 ), ) diff --git a/assets/common/items/weapons/sceptre/root_green0.ron b/assets/common/items/weapons/sceptre/root_green0.ron index a2dc37d073..ba7f2682ef 100644 --- a/assets/common/items/weapons/sceptre/root_green0.ron +++ b/assets/common/items/weapons/sceptre/root_green0.ron @@ -7,6 +7,7 @@ ItemDef( stats: ( equip_time_millis: 400, power: 3.5, + poise_strength: 1.5, speed: 0.4 ), ) diff --git a/assets/common/items/weapons/sceptre/sceptre_velorite_0.ron b/assets/common/items/weapons/sceptre/sceptre_velorite_0.ron index 848210af87..c0fbe93799 100644 --- a/assets/common/items/weapons/sceptre/sceptre_velorite_0.ron +++ b/assets/common/items/weapons/sceptre/sceptre_velorite_0.ron @@ -7,6 +7,7 @@ ItemDef( stats: ( equip_time_millis: 400, power: 1.2, + poise_strength: 1.5, speed: 1.6 ), ) diff --git a/assets/common/items/weapons/sceptre/staff_nature.ron b/assets/common/items/weapons/sceptre/staff_nature.ron index 22d675987e..272c634c77 100644 --- a/assets/common/items/weapons/sceptre/staff_nature.ron +++ b/assets/common/items/weapons/sceptre/staff_nature.ron @@ -7,6 +7,7 @@ ItemDef( stats: ( equip_time_millis: 400, power: 0.91, + poise_strength: 0.5, speed: 1.1 ), ) diff --git a/assets/common/items/weapons/sceptre/starter_sceptre.ron b/assets/common/items/weapons/sceptre/starter_sceptre.ron index a0769a37e2..d5aa4cb20a 100644 --- a/assets/common/items/weapons/sceptre/starter_sceptre.ron +++ b/assets/common/items/weapons/sceptre/starter_sceptre.ron @@ -1,15 +1,14 @@ ItemDef( name: "Naturalist Walking Stick", - description: "Heals your allies with the power of nature.", - kind: Tool( - ( - kind: Sceptre, - stats: ( - equip_time_millis: 400, - power: 0.50, - speed: 1.0 - ), - ) - ), + description: "Heals your allies with the power of nature.", + kind: Tool(( + kind: Sceptre, + stats: ( + equip_time_millis: 400, + power: 0.5, + poise_strength: 0.1, + speed: 1.0, + ), + )), quality: Low, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/sceptre/totem_green.ron b/assets/common/items/weapons/sceptre/totem_green.ron index 54415c7f20..13e47c89a0 100644 --- a/assets/common/items/weapons/sceptre/totem_green.ron +++ b/assets/common/items/weapons/sceptre/totem_green.ron @@ -8,6 +8,7 @@ ItemDef( stats: ( equip_time_millis: 400, power: 1.0, + poise_strength: 1.5, speed: 1.2 ), ) diff --git a/assets/common/items/weapons/shield/shield_1.ron b/assets/common/items/weapons/shield/shield_1.ron index a0afddac2a..61f121c8e7 100644 --- a/assets/common/items/weapons/shield/shield_1.ron +++ b/assets/common/items/weapons/shield/shield_1.ron @@ -1,15 +1,14 @@ ItemDef( name: "A Tattered Targe", description: "Should withstand a few more hits, hopefully...", - kind: Tool ( - ( - kind: Shield, - stats: ( - equip_time_millis: 400, - power: 1.00, - speed: 1.0 - ), - ) - ), + kind: Tool(( + kind: Shield, + stats: ( + equip_time_millis: 400, + power: 1.0, + poise_strength: 1.0, + speed: 1.0, + ), + )), quality: Common, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/staff/amethyst_staff.ron b/assets/common/items/weapons/staff/amethyst_staff.ron index f5cbf8dd5b..df3a736a06 100644 --- a/assets/common/items/weapons/staff/amethyst_staff.ron +++ b/assets/common/items/weapons/staff/amethyst_staff.ron @@ -1,15 +1,14 @@ ItemDef( name: "Amethyst Staff", description: "The amethyst faintly glows.", - kind: Tool( - ( - kind: Staff, - stats: ( - equip_time_millis: 300, - power: 1.50, - speed: 1.0 - ), - ) - ), + kind: Tool(( + kind: Staff, + stats: ( + equip_time_millis: 300, + power: 1.5, + poise_strength: 1.4, + speed: 1.0, + ), + )), quality: Moderate, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/staff/bone_staff.ron b/assets/common/items/weapons/staff/bone_staff.ron index 95c82f7687..b00ddc9cd7 100644 --- a/assets/common/items/weapons/staff/bone_staff.ron +++ b/assets/common/items/weapons/staff/bone_staff.ron @@ -1,15 +1,14 @@ ItemDef( name: "Bone Staff", - description: "There's a red gem suspended in the bones.", - kind: Tool( - ( - kind: Staff, - stats: ( - equip_time_millis: 300, - power: 1.00, - speed: 1.0 - ), - ) - ), + description: "There\'s a red gem suspended in the bones.", + kind: Tool(( + kind: Staff, + stats: ( + equip_time_millis: 300, + power: 1.0, + poise_strength: 1.5, + speed: 1.0, + ), + )), quality: Common, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/staff/cultist_staff.ron b/assets/common/items/weapons/staff/cultist_staff.ron index c7c28d3ce6..ae920eb5d4 100644 --- a/assets/common/items/weapons/staff/cultist_staff.ron +++ b/assets/common/items/weapons/staff/cultist_staff.ron @@ -1,15 +1,14 @@ ItemDef( name: "Cultist Staff", description: "The fire gives off no heat.", - kind: Tool( - ( - kind: Staff, - stats: ( - equip_time_millis: 300, - power: 2.00, - speed: 1.0 - ), - ) - ), + kind: Tool(( + kind: Staff, + stats: ( + equip_time_millis: 300, + power: 2.0, + poise_strength: 1.5, + speed: 1.0, + ), + )), quality: Epic, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/staff/staff_1.ron b/assets/common/items/weapons/staff/staff_1.ron index 8b3080ec0c..ff0595149b 100644 --- a/assets/common/items/weapons/staff/staff_1.ron +++ b/assets/common/items/weapons/staff/staff_1.ron @@ -1,15 +1,14 @@ ItemDef( name: "Humble Stick", description: "Walking stick with a sharpened end.", - kind: Tool( - ( - kind: Staff, - stats: ( - equip_time_millis: 200, - power: 0.50, - speed: 1.0 - ), - ) - ), + kind: Tool(( + kind: Staff, + stats: ( + equip_time_millis: 200, + power: 0.5, + poise_strength: 1.0, + speed: 1.0, + ), + )), quality: Low, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/staff/starter_staff.ron b/assets/common/items/weapons/staff/starter_staff.ron index 8fc27aa382..14fd07cb19 100644 --- a/assets/common/items/weapons/staff/starter_staff.ron +++ b/assets/common/items/weapons/staff/starter_staff.ron @@ -1,15 +1,14 @@ ItemDef( name: "Gnarled Rod", description: "Smells like resin and magic.", - kind: Tool( - ( - kind: Staff, - stats: ( - equip_time_millis: 300, - power: 0.50, - speed: 1.0 - ), - ) - ), + kind: Tool(( + kind: Staff, + stats: ( + equip_time_millis: 300, + power: 0.5, + poise_strength: 1.0, + speed: 1.0, + ), + )), quality: Low, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/sword/cultist_purp_2h-0.ron b/assets/common/items/weapons/sword/cultist_purp_2h-0.ron index 38cff1c841..07916b5796 100644 --- a/assets/common/items/weapons/sword/cultist_purp_2h-0.ron +++ b/assets/common/items/weapons/sword/cultist_purp_2h-0.ron @@ -1,15 +1,14 @@ ItemDef( name: "Magical Cultist Greatsword", description: "This belonged to an evil Cult Leader.", - kind: Tool( - ( - kind: Sword, - stats: ( - equip_time_millis: 500, - power: 2.00, - speed: 1.0 - ), - ) - ), + kind: Tool(( + kind: Sword, + stats: ( + equip_time_millis: 500, + power: 2.0, + poise_strength: 1.5, + speed: 1.0, + ), + )), quality: Epic, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/sword/frost_cleaver_2h-0.ron b/assets/common/items/weapons/sword/frost_cleaver_2h-0.ron index f8ebee6226..5a88577d08 100644 --- a/assets/common/items/weapons/sword/frost_cleaver_2h-0.ron +++ b/assets/common/items/weapons/sword/frost_cleaver_2h-0.ron @@ -1,13 +1,14 @@ ItemDef( name: "Frost Cleaver", description: "Radiates a freezing aura.", - kind: Tool( - ( - kind: Sword, - stats: ( - equip_time_millis: 500, - power: 1.70), - ) - ), + kind: Tool(( + kind: Sword, + stats: ( + equip_time_millis: 500, + power: 1.7, + poise_strength: 2.0, + speed: 1.0, + ), + )), quality: High, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/sword/frost_cleaver_2h-1.ron b/assets/common/items/weapons/sword/frost_cleaver_2h-1.ron index 26ae101c97..d302f22a36 100644 --- a/assets/common/items/weapons/sword/frost_cleaver_2h-1.ron +++ b/assets/common/items/weapons/sword/frost_cleaver_2h-1.ron @@ -1,13 +1,14 @@ ItemDef( name: "Frost Saw", - description: "Forged from a single piece\nof eternal ice.", - kind: Tool( - ( - kind: Sword, - stats: ( - equip_time_millis: 500, - power: 1.95), - ) - ), + description: "Forged from a single piece of eternal ice.", + kind: Tool(( + kind: Sword, + stats: ( + equip_time_millis: 500, + power: 1.95, + poise_strength: 1.7, + speed: 1.0, + ), + )), quality: Epic, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/sword/greatsword_2h_dam-0.ron b/assets/common/items/weapons/sword/greatsword_2h_dam-0.ron index b154161895..33c87429d8 100644 --- a/assets/common/items/weapons/sword/greatsword_2h_dam-0.ron +++ b/assets/common/items/weapons/sword/greatsword_2h_dam-0.ron @@ -1,15 +1,14 @@ ItemDef( name: "Damaged Greatsword", description: "The blade has been chipped quite a few times.", - kind: Tool( - ( - kind: Sword, - stats: ( - equip_time_millis: 500, - power: 0.80, - speed: 1.0 - ), - ) - ), + kind: Tool(( + kind: Sword, + stats: ( + equip_time_millis: 500, + power: 0.8, + poise_strength: 1.1, + speed: 1.0, + ), + )), quality: Common, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/sword/greatsword_2h_dam-1.ron b/assets/common/items/weapons/sword/greatsword_2h_dam-1.ron index b154161895..9aad290dcd 100644 --- a/assets/common/items/weapons/sword/greatsword_2h_dam-1.ron +++ b/assets/common/items/weapons/sword/greatsword_2h_dam-1.ron @@ -1,15 +1,14 @@ ItemDef( name: "Damaged Greatsword", description: "The blade has been chipped quite a few times.", - kind: Tool( - ( - kind: Sword, - stats: ( - equip_time_millis: 500, - power: 0.80, - speed: 1.0 - ), - ) - ), + kind: Tool(( + kind: Sword, + stats: ( + equip_time_millis: 500, + power: 0.8, + poise_strength: 0.5, + speed: 1.0, + ), + )), quality: Common, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/sword/greatsword_2h_dam-2.ron b/assets/common/items/weapons/sword/greatsword_2h_dam-2.ron index b154161895..40c3ea0b9e 100644 --- a/assets/common/items/weapons/sword/greatsword_2h_dam-2.ron +++ b/assets/common/items/weapons/sword/greatsword_2h_dam-2.ron @@ -1,15 +1,14 @@ ItemDef( name: "Damaged Greatsword", description: "The blade has been chipped quite a few times.", - kind: Tool( - ( - kind: Sword, - stats: ( - equip_time_millis: 500, - power: 0.80, - speed: 1.0 - ), - ) - ), + kind: Tool(( + kind: Sword, + stats: ( + equip_time_millis: 500, + power: 0.8, + poise_strength: 0.9, + speed: 1.0, + ), + )), quality: Common, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/sword/greatsword_2h_fine-0.ron b/assets/common/items/weapons/sword/greatsword_2h_fine-0.ron index e6628d0292..98b0428536 100644 --- a/assets/common/items/weapons/sword/greatsword_2h_fine-0.ron +++ b/assets/common/items/weapons/sword/greatsword_2h_fine-0.ron @@ -1,15 +1,14 @@ ItemDef( name: "Fine Greatsword", - description: "It's been polished and sharpened recently.", - kind: Tool( - ( - kind: Sword, - stats: ( - equip_time_millis: 500, - power: 1.40, - speed: 1.0 - ), - ) - ), + description: "It\'s been polished and sharpened recently.", + kind: Tool(( + kind: Sword, + stats: ( + equip_time_millis: 500, + power: 1.4, + poise_strength: 1.6, + speed: 1.0, + ), + )), quality: Moderate, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/sword/greatsword_2h_fine-1.ron b/assets/common/items/weapons/sword/greatsword_2h_fine-1.ron index e6628d0292..979f084c99 100644 --- a/assets/common/items/weapons/sword/greatsword_2h_fine-1.ron +++ b/assets/common/items/weapons/sword/greatsword_2h_fine-1.ron @@ -1,15 +1,14 @@ ItemDef( name: "Fine Greatsword", - description: "It's been polished and sharpened recently.", - kind: Tool( - ( - kind: Sword, - stats: ( - equip_time_millis: 500, - power: 1.40, - speed: 1.0 - ), - ) - ), + description: "It\'s been polished and sharpened recently.", + kind: Tool(( + kind: Sword, + stats: ( + equip_time_millis: 500, + power: 1.4, + poise_strength: 1.5, + speed: 1.0, + ), + )), quality: Moderate, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/sword/greatsword_2h_fine-2.ron b/assets/common/items/weapons/sword/greatsword_2h_fine-2.ron index e6628d0292..cbdcd15d30 100644 --- a/assets/common/items/weapons/sword/greatsword_2h_fine-2.ron +++ b/assets/common/items/weapons/sword/greatsword_2h_fine-2.ron @@ -1,15 +1,14 @@ ItemDef( name: "Fine Greatsword", - description: "It's been polished and sharpened recently.", - kind: Tool( - ( - kind: Sword, - stats: ( - equip_time_millis: 500, - power: 1.40, - speed: 1.0 - ), - ) - ), + description: "It\'s been polished and sharpened recently.", + kind: Tool(( + kind: Sword, + stats: ( + equip_time_millis: 500, + power: 1.4, + poise_strength: 1.7, + speed: 1.0, + ), + )), quality: Moderate, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/sword/greatsword_2h_orn-0.ron b/assets/common/items/weapons/sword/greatsword_2h_orn-0.ron index 9f30811969..b32630a1df 100644 --- a/assets/common/items/weapons/sword/greatsword_2h_orn-0.ron +++ b/assets/common/items/weapons/sword/greatsword_2h_orn-0.ron @@ -1,15 +1,14 @@ ItemDef( name: "Ornamented Greatsword", - description: "The sword's almost a work of art.", - kind: Tool( - ( - kind: Sword, - stats: ( - equip_time_millis: 500, - power: 1.70, - speed: 1.0 - ), - ) - ), + description: "The sword\'s almost a work of art.", + kind: Tool(( + kind: Sword, + stats: ( + equip_time_millis: 500, + power: 1.7, + poise_strength: 1.4, + speed: 1.0, + ), + )), quality: Moderate, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/sword/greatsword_2h_orn-1.ron b/assets/common/items/weapons/sword/greatsword_2h_orn-1.ron index 9f30811969..b32630a1df 100644 --- a/assets/common/items/weapons/sword/greatsword_2h_orn-1.ron +++ b/assets/common/items/weapons/sword/greatsword_2h_orn-1.ron @@ -1,15 +1,14 @@ ItemDef( name: "Ornamented Greatsword", - description: "The sword's almost a work of art.", - kind: Tool( - ( - kind: Sword, - stats: ( - equip_time_millis: 500, - power: 1.70, - speed: 1.0 - ), - ) - ), + description: "The sword\'s almost a work of art.", + kind: Tool(( + kind: Sword, + stats: ( + equip_time_millis: 500, + power: 1.7, + poise_strength: 1.4, + speed: 1.0, + ), + )), quality: Moderate, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/sword/greatsword_2h_orn-2.ron b/assets/common/items/weapons/sword/greatsword_2h_orn-2.ron index 9f30811969..0dd78ad302 100644 --- a/assets/common/items/weapons/sword/greatsword_2h_orn-2.ron +++ b/assets/common/items/weapons/sword/greatsword_2h_orn-2.ron @@ -1,15 +1,14 @@ ItemDef( name: "Ornamented Greatsword", - description: "The sword's almost a work of art.", - kind: Tool( - ( - kind: Sword, - stats: ( - equip_time_millis: 500, - power: 1.70, - speed: 1.0 - ), - ) - ), + description: "The sword\'s almost a work of art.", + kind: Tool(( + kind: Sword, + stats: ( + equip_time_millis: 500, + power: 1.7, + poise_strength: 1.1, + speed: 1.0, + ), + )), quality: Moderate, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/sword/greatsword_2h_simple-0.ron b/assets/common/items/weapons/sword/greatsword_2h_simple-0.ron index 1c23454b2e..6a969da4ba 100644 --- a/assets/common/items/weapons/sword/greatsword_2h_simple-0.ron +++ b/assets/common/items/weapons/sword/greatsword_2h_simple-0.ron @@ -1,15 +1,14 @@ ItemDef( name: "Simple Greatsword", - description: "It's been well used.", - kind: Tool( - ( - kind: Sword, - stats: ( - equip_time_millis: 500, - power: 1.10, - speed: 1.0 - ), - ) - ), + description: "It\'s been well used.", + kind: Tool(( + kind: Sword, + stats: ( + equip_time_millis: 500, + power: 1.1, + poise_strength: 1.5, + speed: 1.0, + ), + )), quality: Common, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/sword/greatsword_2h_simple-1.ron b/assets/common/items/weapons/sword/greatsword_2h_simple-1.ron index 1c23454b2e..6a969da4ba 100644 --- a/assets/common/items/weapons/sword/greatsword_2h_simple-1.ron +++ b/assets/common/items/weapons/sword/greatsword_2h_simple-1.ron @@ -1,15 +1,14 @@ ItemDef( name: "Simple Greatsword", - description: "It's been well used.", - kind: Tool( - ( - kind: Sword, - stats: ( - equip_time_millis: 500, - power: 1.10, - speed: 1.0 - ), - ) - ), + description: "It\'s been well used.", + kind: Tool(( + kind: Sword, + stats: ( + equip_time_millis: 500, + power: 1.1, + poise_strength: 1.5, + speed: 1.0, + ), + )), quality: Common, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/sword/greatsword_2h_simple-2.ron b/assets/common/items/weapons/sword/greatsword_2h_simple-2.ron index 1c23454b2e..c48f58f04e 100644 --- a/assets/common/items/weapons/sword/greatsword_2h_simple-2.ron +++ b/assets/common/items/weapons/sword/greatsword_2h_simple-2.ron @@ -1,15 +1,14 @@ ItemDef( name: "Simple Greatsword", - description: "It's been well used.", - kind: Tool( - ( - kind: Sword, - stats: ( - equip_time_millis: 500, - power: 1.10, - speed: 1.0 - ), - ) - ), + description: "It\'s been well used.", + kind: Tool(( + kind: Sword, + stats: ( + equip_time_millis: 500, + power: 1.1, + poise_strength: 1.4, + speed: 1.0, + ), + )), quality: Common, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/sword/long_2h_dam-0.ron b/assets/common/items/weapons/sword/long_2h_dam-0.ron index 50617f1647..b4a8b1ff23 100644 --- a/assets/common/items/weapons/sword/long_2h_dam-0.ron +++ b/assets/common/items/weapons/sword/long_2h_dam-0.ron @@ -1,15 +1,14 @@ ItemDef( name: "Damaged Longsword", - description: "It's slightly cracked.", - kind: Tool( - ( - kind: Sword, - stats: ( - equip_time_millis: 500, - power: 0.60, - speed: 1.0 - ), - ) - ), + description: "It\'s slightly cracked.", + kind: Tool(( + kind: Sword, + stats: ( + equip_time_millis: 500, + power: 0.6, + poise_strength: 0.5, + speed: 1.0, + ), + )), quality: Low, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/sword/long_2h_dam-1.ron b/assets/common/items/weapons/sword/long_2h_dam-1.ron index 50617f1647..b4a8b1ff23 100644 --- a/assets/common/items/weapons/sword/long_2h_dam-1.ron +++ b/assets/common/items/weapons/sword/long_2h_dam-1.ron @@ -1,15 +1,14 @@ ItemDef( name: "Damaged Longsword", - description: "It's slightly cracked.", - kind: Tool( - ( - kind: Sword, - stats: ( - equip_time_millis: 500, - power: 0.60, - speed: 1.0 - ), - ) - ), + description: "It\'s slightly cracked.", + kind: Tool(( + kind: Sword, + stats: ( + equip_time_millis: 500, + power: 0.6, + poise_strength: 0.5, + speed: 1.0, + ), + )), quality: Low, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/sword/long_2h_dam-2.ron b/assets/common/items/weapons/sword/long_2h_dam-2.ron index 50617f1647..b4a8b1ff23 100644 --- a/assets/common/items/weapons/sword/long_2h_dam-2.ron +++ b/assets/common/items/weapons/sword/long_2h_dam-2.ron @@ -1,15 +1,14 @@ ItemDef( name: "Damaged Longsword", - description: "It's slightly cracked.", - kind: Tool( - ( - kind: Sword, - stats: ( - equip_time_millis: 500, - power: 0.60, - speed: 1.0 - ), - ) - ), + description: "It\'s slightly cracked.", + kind: Tool(( + kind: Sword, + stats: ( + equip_time_millis: 500, + power: 0.6, + poise_strength: 0.5, + speed: 1.0, + ), + )), quality: Low, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/sword/long_2h_dam-3.ron b/assets/common/items/weapons/sword/long_2h_dam-3.ron index 50617f1647..b4a8b1ff23 100644 --- a/assets/common/items/weapons/sword/long_2h_dam-3.ron +++ b/assets/common/items/weapons/sword/long_2h_dam-3.ron @@ -1,15 +1,14 @@ ItemDef( name: "Damaged Longsword", - description: "It's slightly cracked.", - kind: Tool( - ( - kind: Sword, - stats: ( - equip_time_millis: 500, - power: 0.60, - speed: 1.0 - ), - ) - ), + description: "It\'s slightly cracked.", + kind: Tool(( + kind: Sword, + stats: ( + equip_time_millis: 500, + power: 0.6, + poise_strength: 0.5, + speed: 1.0, + ), + )), quality: Low, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/sword/long_2h_dam-4.ron b/assets/common/items/weapons/sword/long_2h_dam-4.ron index 50617f1647..b4a8b1ff23 100644 --- a/assets/common/items/weapons/sword/long_2h_dam-4.ron +++ b/assets/common/items/weapons/sword/long_2h_dam-4.ron @@ -1,15 +1,14 @@ ItemDef( name: "Damaged Longsword", - description: "It's slightly cracked.", - kind: Tool( - ( - kind: Sword, - stats: ( - equip_time_millis: 500, - power: 0.60, - speed: 1.0 - ), - ) - ), + description: "It\'s slightly cracked.", + kind: Tool(( + kind: Sword, + stats: ( + equip_time_millis: 500, + power: 0.6, + poise_strength: 0.5, + speed: 1.0, + ), + )), quality: Low, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/sword/long_2h_dam-5.ron b/assets/common/items/weapons/sword/long_2h_dam-5.ron index 50617f1647..b4a8b1ff23 100644 --- a/assets/common/items/weapons/sword/long_2h_dam-5.ron +++ b/assets/common/items/weapons/sword/long_2h_dam-5.ron @@ -1,15 +1,14 @@ ItemDef( name: "Damaged Longsword", - description: "It's slightly cracked.", - kind: Tool( - ( - kind: Sword, - stats: ( - equip_time_millis: 500, - power: 0.60, - speed: 1.0 - ), - ) - ), + description: "It\'s slightly cracked.", + kind: Tool(( + kind: Sword, + stats: ( + equip_time_millis: 500, + power: 0.6, + poise_strength: 0.5, + speed: 1.0, + ), + )), quality: Low, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/sword/long_2h_fine-0.ron b/assets/common/items/weapons/sword/long_2h_fine-0.ron index ca339b1ea7..6cb5ea99aa 100644 --- a/assets/common/items/weapons/sword/long_2h_fine-0.ron +++ b/assets/common/items/weapons/sword/long_2h_fine-0.ron @@ -1,15 +1,14 @@ ItemDef( name: "Fine Longsword", description: "It shines when you hold it up to the light.", - kind: Tool( - ( - kind: Sword, - stats: ( - equip_time_millis: 500, - power: 1.20, - speed: 1.0 - ), - ) - ), + kind: Tool(( + kind: Sword, + stats: ( + equip_time_millis: 500, + power: 1.2, + poise_strength: 1.3, + speed: 1.0, + ), + )), quality: Moderate, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/sword/long_2h_fine-1.ron b/assets/common/items/weapons/sword/long_2h_fine-1.ron index ca339b1ea7..6cb5ea99aa 100644 --- a/assets/common/items/weapons/sword/long_2h_fine-1.ron +++ b/assets/common/items/weapons/sword/long_2h_fine-1.ron @@ -1,15 +1,14 @@ ItemDef( name: "Fine Longsword", description: "It shines when you hold it up to the light.", - kind: Tool( - ( - kind: Sword, - stats: ( - equip_time_millis: 500, - power: 1.20, - speed: 1.0 - ), - ) - ), + kind: Tool(( + kind: Sword, + stats: ( + equip_time_millis: 500, + power: 1.2, + poise_strength: 1.3, + speed: 1.0, + ), + )), quality: Moderate, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/sword/long_2h_fine-2.ron b/assets/common/items/weapons/sword/long_2h_fine-2.ron index ca339b1ea7..6cb5ea99aa 100644 --- a/assets/common/items/weapons/sword/long_2h_fine-2.ron +++ b/assets/common/items/weapons/sword/long_2h_fine-2.ron @@ -1,15 +1,14 @@ ItemDef( name: "Fine Longsword", description: "It shines when you hold it up to the light.", - kind: Tool( - ( - kind: Sword, - stats: ( - equip_time_millis: 500, - power: 1.20, - speed: 1.0 - ), - ) - ), + kind: Tool(( + kind: Sword, + stats: ( + equip_time_millis: 500, + power: 1.2, + poise_strength: 1.3, + speed: 1.0, + ), + )), quality: Moderate, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/sword/long_2h_fine-3.ron b/assets/common/items/weapons/sword/long_2h_fine-3.ron index ca339b1ea7..c2401af32c 100644 --- a/assets/common/items/weapons/sword/long_2h_fine-3.ron +++ b/assets/common/items/weapons/sword/long_2h_fine-3.ron @@ -1,15 +1,14 @@ ItemDef( name: "Fine Longsword", description: "It shines when you hold it up to the light.", - kind: Tool( - ( - kind: Sword, - stats: ( - equip_time_millis: 500, - power: 1.20, - speed: 1.0 - ), - ) - ), + kind: Tool(( + kind: Sword, + stats: ( + equip_time_millis: 500, + power: 1.2, + poise_strength: 1.1, + speed: 1.0, + ), + )), quality: Moderate, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/sword/long_2h_fine-4.ron b/assets/common/items/weapons/sword/long_2h_fine-4.ron index ca339b1ea7..6cb5ea99aa 100644 --- a/assets/common/items/weapons/sword/long_2h_fine-4.ron +++ b/assets/common/items/weapons/sword/long_2h_fine-4.ron @@ -1,15 +1,14 @@ ItemDef( name: "Fine Longsword", description: "It shines when you hold it up to the light.", - kind: Tool( - ( - kind: Sword, - stats: ( - equip_time_millis: 500, - power: 1.20, - speed: 1.0 - ), - ) - ), + kind: Tool(( + kind: Sword, + stats: ( + equip_time_millis: 500, + power: 1.2, + poise_strength: 1.3, + speed: 1.0, + ), + )), quality: Moderate, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/sword/long_2h_fine-5.ron b/assets/common/items/weapons/sword/long_2h_fine-5.ron index ca339b1ea7..ecff96d7ec 100644 --- a/assets/common/items/weapons/sword/long_2h_fine-5.ron +++ b/assets/common/items/weapons/sword/long_2h_fine-5.ron @@ -1,15 +1,14 @@ ItemDef( name: "Fine Longsword", description: "It shines when you hold it up to the light.", - kind: Tool( - ( - kind: Sword, - stats: ( - equip_time_millis: 500, - power: 1.20, - speed: 1.0 - ), - ) - ), + kind: Tool(( + kind: Sword, + stats: ( + equip_time_millis: 500, + power: 1.2, + poise_strength: 1.4, + speed: 1.0, + ), + )), quality: Moderate, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/sword/long_2h_orn-0.ron b/assets/common/items/weapons/sword/long_2h_orn-0.ron index 30f9362ce5..f68c56066c 100644 --- a/assets/common/items/weapons/sword/long_2h_orn-0.ron +++ b/assets/common/items/weapons/sword/long_2h_orn-0.ron @@ -1,15 +1,14 @@ ItemDef( name: "Ornamented Longsword", - description: "It's probably the weapon of some noble.", - kind: Tool( - ( - kind: Sword, - stats: ( - equip_time_millis: 500, - power: 1.50, - speed: 1.0 - ), - ) - ), + description: "It\'s probably the weapon of some noble.", + kind: Tool(( + kind: Sword, + stats: ( + equip_time_millis: 500, + power: 1.5, + poise_strength: 1.0, + speed: 1.0, + ), + )), quality: Moderate, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/sword/long_2h_orn-1.ron b/assets/common/items/weapons/sword/long_2h_orn-1.ron index 30f9362ce5..31092a3c1a 100644 --- a/assets/common/items/weapons/sword/long_2h_orn-1.ron +++ b/assets/common/items/weapons/sword/long_2h_orn-1.ron @@ -1,15 +1,14 @@ ItemDef( name: "Ornamented Longsword", - description: "It's probably the weapon of some noble.", - kind: Tool( - ( - kind: Sword, - stats: ( - equip_time_millis: 500, - power: 1.50, - speed: 1.0 - ), - ) - ), + description: "It\'s probably the weapon of some noble.", + kind: Tool(( + kind: Sword, + stats: ( + equip_time_millis: 500, + power: 1.5, + poise_strength: 1.1, + speed: 1.0, + ), + )), quality: Moderate, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/sword/long_2h_orn-2.ron b/assets/common/items/weapons/sword/long_2h_orn-2.ron index 30f9362ce5..f68c56066c 100644 --- a/assets/common/items/weapons/sword/long_2h_orn-2.ron +++ b/assets/common/items/weapons/sword/long_2h_orn-2.ron @@ -1,15 +1,14 @@ ItemDef( name: "Ornamented Longsword", - description: "It's probably the weapon of some noble.", - kind: Tool( - ( - kind: Sword, - stats: ( - equip_time_millis: 500, - power: 1.50, - speed: 1.0 - ), - ) - ), + description: "It\'s probably the weapon of some noble.", + kind: Tool(( + kind: Sword, + stats: ( + equip_time_millis: 500, + power: 1.5, + poise_strength: 1.0, + speed: 1.0, + ), + )), quality: Moderate, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/sword/long_2h_orn-3.ron b/assets/common/items/weapons/sword/long_2h_orn-3.ron index 30f9362ce5..f68c56066c 100644 --- a/assets/common/items/weapons/sword/long_2h_orn-3.ron +++ b/assets/common/items/weapons/sword/long_2h_orn-3.ron @@ -1,15 +1,14 @@ ItemDef( name: "Ornamented Longsword", - description: "It's probably the weapon of some noble.", - kind: Tool( - ( - kind: Sword, - stats: ( - equip_time_millis: 500, - power: 1.50, - speed: 1.0 - ), - ) - ), + description: "It\'s probably the weapon of some noble.", + kind: Tool(( + kind: Sword, + stats: ( + equip_time_millis: 500, + power: 1.5, + poise_strength: 1.0, + speed: 1.0, + ), + )), quality: Moderate, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/sword/long_2h_orn-4.ron b/assets/common/items/weapons/sword/long_2h_orn-4.ron index 30f9362ce5..31092a3c1a 100644 --- a/assets/common/items/weapons/sword/long_2h_orn-4.ron +++ b/assets/common/items/weapons/sword/long_2h_orn-4.ron @@ -1,15 +1,14 @@ ItemDef( name: "Ornamented Longsword", - description: "It's probably the weapon of some noble.", - kind: Tool( - ( - kind: Sword, - stats: ( - equip_time_millis: 500, - power: 1.50, - speed: 1.0 - ), - ) - ), + description: "It\'s probably the weapon of some noble.", + kind: Tool(( + kind: Sword, + stats: ( + equip_time_millis: 500, + power: 1.5, + poise_strength: 1.1, + speed: 1.0, + ), + )), quality: Moderate, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/sword/long_2h_orn-5.ron b/assets/common/items/weapons/sword/long_2h_orn-5.ron index 30f9362ce5..31092a3c1a 100644 --- a/assets/common/items/weapons/sword/long_2h_orn-5.ron +++ b/assets/common/items/weapons/sword/long_2h_orn-5.ron @@ -1,15 +1,14 @@ ItemDef( name: "Ornamented Longsword", - description: "It's probably the weapon of some noble.", - kind: Tool( - ( - kind: Sword, - stats: ( - equip_time_millis: 500, - power: 1.50, - speed: 1.0 - ), - ) - ), + description: "It\'s probably the weapon of some noble.", + kind: Tool(( + kind: Sword, + stats: ( + equip_time_millis: 500, + power: 1.5, + poise_strength: 1.1, + speed: 1.0, + ), + )), quality: Moderate, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/sword/long_2h_simple-0.ron b/assets/common/items/weapons/sword/long_2h_simple-0.ron index 834db5e8f9..e28f2f652f 100644 --- a/assets/common/items/weapons/sword/long_2h_simple-0.ron +++ b/assets/common/items/weapons/sword/long_2h_simple-0.ron @@ -1,15 +1,14 @@ ItemDef( name: "Simple Longsword", - description: "It was well maintained by it's previous owner.", - kind: Tool( - ( - kind: Sword, - stats: ( - equip_time_millis: 500, - power: 0.90, - speed: 1.0 - ), - ) - ), + description: "It was well maintained by it\'s previous owner.", + kind: Tool(( + kind: Sword, + stats: ( + equip_time_millis: 500, + power: 0.9, + poise_strength: 0.8, + speed: 1.0, + ), + )), quality: Common, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/sword/long_2h_simple-1.ron b/assets/common/items/weapons/sword/long_2h_simple-1.ron index 834db5e8f9..e28f2f652f 100644 --- a/assets/common/items/weapons/sword/long_2h_simple-1.ron +++ b/assets/common/items/weapons/sword/long_2h_simple-1.ron @@ -1,15 +1,14 @@ ItemDef( name: "Simple Longsword", - description: "It was well maintained by it's previous owner.", - kind: Tool( - ( - kind: Sword, - stats: ( - equip_time_millis: 500, - power: 0.90, - speed: 1.0 - ), - ) - ), + description: "It was well maintained by it\'s previous owner.", + kind: Tool(( + kind: Sword, + stats: ( + equip_time_millis: 500, + power: 0.9, + poise_strength: 0.8, + speed: 1.0, + ), + )), quality: Common, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/sword/long_2h_simple-2.ron b/assets/common/items/weapons/sword/long_2h_simple-2.ron index 834db5e8f9..d401f19c57 100644 --- a/assets/common/items/weapons/sword/long_2h_simple-2.ron +++ b/assets/common/items/weapons/sword/long_2h_simple-2.ron @@ -1,15 +1,14 @@ ItemDef( name: "Simple Longsword", - description: "It was well maintained by it's previous owner.", - kind: Tool( - ( - kind: Sword, - stats: ( - equip_time_millis: 500, - power: 0.90, - speed: 1.0 - ), - ) - ), + description: "It was well maintained by it\'s previous owner.", + kind: Tool(( + kind: Sword, + stats: ( + equip_time_millis: 500, + power: 0.9, + poise_strength: 1.0, + speed: 1.0, + ), + )), quality: Common, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/sword/long_2h_simple-3.ron b/assets/common/items/weapons/sword/long_2h_simple-3.ron index 834db5e8f9..e28f2f652f 100644 --- a/assets/common/items/weapons/sword/long_2h_simple-3.ron +++ b/assets/common/items/weapons/sword/long_2h_simple-3.ron @@ -1,15 +1,14 @@ ItemDef( name: "Simple Longsword", - description: "It was well maintained by it's previous owner.", - kind: Tool( - ( - kind: Sword, - stats: ( - equip_time_millis: 500, - power: 0.90, - speed: 1.0 - ), - ) - ), + description: "It was well maintained by it\'s previous owner.", + kind: Tool(( + kind: Sword, + stats: ( + equip_time_millis: 500, + power: 0.9, + poise_strength: 0.8, + speed: 1.0, + ), + )), quality: Common, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/sword/long_2h_simple-4.ron b/assets/common/items/weapons/sword/long_2h_simple-4.ron index 834db5e8f9..e28f2f652f 100644 --- a/assets/common/items/weapons/sword/long_2h_simple-4.ron +++ b/assets/common/items/weapons/sword/long_2h_simple-4.ron @@ -1,15 +1,14 @@ ItemDef( name: "Simple Longsword", - description: "It was well maintained by it's previous owner.", - kind: Tool( - ( - kind: Sword, - stats: ( - equip_time_millis: 500, - power: 0.90, - speed: 1.0 - ), - ) - ), + description: "It was well maintained by it\'s previous owner.", + kind: Tool(( + kind: Sword, + stats: ( + equip_time_millis: 500, + power: 0.9, + poise_strength: 0.8, + speed: 1.0, + ), + )), quality: Common, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/sword/long_2h_simple-5.ron b/assets/common/items/weapons/sword/long_2h_simple-5.ron index 834db5e8f9..e28f2f652f 100644 --- a/assets/common/items/weapons/sword/long_2h_simple-5.ron +++ b/assets/common/items/weapons/sword/long_2h_simple-5.ron @@ -1,15 +1,14 @@ ItemDef( name: "Simple Longsword", - description: "It was well maintained by it's previous owner.", - kind: Tool( - ( - kind: Sword, - stats: ( - equip_time_millis: 500, - power: 0.90, - speed: 1.0 - ), - ) - ), + description: "It was well maintained by it\'s previous owner.", + kind: Tool(( + kind: Sword, + stats: ( + equip_time_millis: 500, + power: 0.9, + poise_strength: 0.8, + speed: 1.0, + ), + )), quality: Common, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/sword/short_sword_0.ron b/assets/common/items/weapons/sword/short_sword_0.ron index 32322d16f6..07c49cfb03 100644 --- a/assets/common/items/weapons/sword/short_sword_0.ron +++ b/assets/common/items/weapons/sword/short_sword_0.ron @@ -1,15 +1,14 @@ ItemDef( name: "Vicious Gladius", - description: "There's blood encrusted on the blade.", - kind: Tool( - ( - kind: Sword, - stats: ( - equip_time_millis: 400, - power: 0.75, - speed: 1.0 - ), - ) - ), + description: "There\'s blood encrusted on the blade.", + kind: Tool(( + kind: Sword, + stats: ( + equip_time_millis: 400, + power: 0.75, + poise_strength: 0.8, + speed: 1.0, + ), + )), quality: Common, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/sword/starter_sword.ron b/assets/common/items/weapons/sword/starter_sword.ron index 0e4f7bed26..92821d4282 100644 --- a/assets/common/items/weapons/sword/starter_sword.ron +++ b/assets/common/items/weapons/sword/starter_sword.ron @@ -1,15 +1,14 @@ ItemDef( name: "Battered Sword", description: "Held together by Rust and hope.", - kind: Tool( - ( - kind: Sword, - stats: ( - equip_time_millis: 300, - power: 0.50, - speed: 1.0 - ), - ) - ), + kind: Tool(( + kind: Sword, + stats: ( + equip_time_millis: 300, + power: 0.5, + poise_strength: 0.4, + speed: 1.0, + ), + )), quality: Low, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/sword/wood_sword.ron b/assets/common/items/weapons/sword/wood_sword.ron index c061ac0ecb..0276b6db2f 100644 --- a/assets/common/items/weapons/sword/wood_sword.ron +++ b/assets/common/items/weapons/sword/wood_sword.ron @@ -1,15 +1,14 @@ ItemDef( name: "Forest Spirit", description: "The resin glows.", - kind: Tool( - ( - kind: Sword, - stats: ( - equip_time_millis: 400, - power: 0.8, - speed: 1.0 - ), - ) - ), + kind: Tool(( + kind: Sword, + stats: ( + equip_time_millis: 400, + power: 0.8, + poise_strength: 0.5, + speed: 1.0, + ), + )), quality: Moderate, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/sword/zweihander_sword_0.ron b/assets/common/items/weapons/sword/zweihander_sword_0.ron index 4570f5f508..2fdc971e04 100644 --- a/assets/common/items/weapons/sword/zweihander_sword_0.ron +++ b/assets/common/items/weapons/sword/zweihander_sword_0.ron @@ -1,15 +1,14 @@ ItemDef( name: "Sturdy Zweihander", - description: "It's a big sword, and sharp too.", - kind: Tool( - ( - kind: Sword, - stats: ( - equip_time_millis: 500, - power: 1.50, - speed: 1.0 - ), - ) - ), + description: "It\'s a big sword, and sharp too.", + kind: Tool(( + kind: Sword, + stats: ( + equip_time_millis: 500, + power: 1.5, + poise_strength: 1.9, + speed: 1.0, + ), + )), quality: Moderate, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/tool/broom.ron b/assets/common/items/weapons/tool/broom.ron index fce5d07407..9df66924e5 100644 --- a/assets/common/items/weapons/tool/broom.ron +++ b/assets/common/items/weapons/tool/broom.ron @@ -1,15 +1,14 @@ ItemDef( name: "Broom", - description: "It's beginning to fall apart.", - kind: Tool ( - ( - kind: Farming, - stats: ( - equip_time_millis: 400, - power: 1.00, - speed: 1.0 - ), - ) - ), + description: "It\'s beginning to fall apart.", + kind: Tool(( + kind: Farming, + stats: ( + equip_time_millis: 400, + power: 1.0, + poise_strength: 1.0, + speed: 1.0, + ), + )), quality: Common, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/tool/fishing_rod.ron b/assets/common/items/weapons/tool/fishing_rod.ron index da171bf0df..04cae8452d 100644 --- a/assets/common/items/weapons/tool/fishing_rod.ron +++ b/assets/common/items/weapons/tool/fishing_rod.ron @@ -1,15 +1,14 @@ ItemDef( name: "Fishing Rod", description: "Smells of fish.", - kind: Tool ( - ( - kind: Farming, - stats: ( - equip_time_millis: 400, - power: 1.00, - speed: 1.0 - ), - ) - ), + kind: Tool(( + kind: Farming, + stats: ( + equip_time_millis: 400, + power: 1.0, + poise_strength: 1.0, + speed: 1.0, + ), + )), quality: Common, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/tool/hoe.ron b/assets/common/items/weapons/tool/hoe.ron index 2d2af04949..9c1d696ccd 100644 --- a/assets/common/items/weapons/tool/hoe.ron +++ b/assets/common/items/weapons/tool/hoe.ron @@ -1,15 +1,14 @@ ItemDef( name: "Hoe", - description: "It's stained with dirt.", - kind: Tool ( - ( - kind: Farming, - stats: ( - equip_time_millis: 400, - power: 1.00, - speed: 1.0 - ), - ) - ), + description: "It\'s stained with dirt.", + kind: Tool(( + kind: Farming, + stats: ( + equip_time_millis: 400, + power: 1.0, + poise_strength: 1.5, + speed: 1.0, + ), + )), quality: Common, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/tool/pickaxe.ron b/assets/common/items/weapons/tool/pickaxe.ron index 3215e311d1..29ae61ff57 100644 --- a/assets/common/items/weapons/tool/pickaxe.ron +++ b/assets/common/items/weapons/tool/pickaxe.ron @@ -1,15 +1,14 @@ ItemDef( name: "Pickaxe", description: "It has a chipped edge.", - kind: Tool ( - ( - kind: Farming, - stats: ( - equip_time_millis: 400, - power: 1.00, - speed: 1.0 - ), - ) - ), + kind: Tool(( + kind: Farming, + stats: ( + equip_time_millis: 400, + power: 1.0, + poise_strength: 1.0, + speed: 1.0, + ), + )), quality: Common, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/tool/pitchfork.ron b/assets/common/items/weapons/tool/pitchfork.ron index 8f9c33a851..f6ae281e95 100644 --- a/assets/common/items/weapons/tool/pitchfork.ron +++ b/assets/common/items/weapons/tool/pitchfork.ron @@ -1,15 +1,14 @@ ItemDef( name: "Pitchfork", description: "One of the prongs is broken.", - kind: Tool ( - ( - kind: Farming, - stats: ( - equip_time_millis: 400, - power: 1.00, - speed: 1.0 - ), - ) - ), + kind: Tool(( + kind: Farming, + stats: ( + equip_time_millis: 400, + power: 1.0, + poise_strength: 4.0, + speed: 1.0, + ), + )), quality: Common, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/tool/rake.ron b/assets/common/items/weapons/tool/rake.ron index 12357d1d60..c3b9958510 100644 --- a/assets/common/items/weapons/tool/rake.ron +++ b/assets/common/items/weapons/tool/rake.ron @@ -1,15 +1,14 @@ ItemDef( name: "Rake", description: "Held together with twine.", - kind: Tool ( - ( - kind: Farming, - stats: ( - equip_time_millis: 400, - power: 1.00, - speed: 1.0 - ), - ) - ), + kind: Tool(( + kind: Farming, + stats: ( + equip_time_millis: 400, + power: 1.0, + poise_strength: 1.0, + speed: 1.0, + ), + )), quality: Common, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/tool/shovel-0.ron b/assets/common/items/weapons/tool/shovel-0.ron index 55c06b76b9..488733a6e6 100644 --- a/assets/common/items/weapons/tool/shovel-0.ron +++ b/assets/common/items/weapons/tool/shovel-0.ron @@ -1,15 +1,14 @@ ItemDef( name: "Shovel", - description: "It's covered in manure.", - kind: Tool ( - ( - kind: Farming, - stats: ( - equip_time_millis: 400, - power: 1.00, - speed: 1.0 - ), - ) - ), + description: "It\'s covered in manure.", + kind: Tool(( + kind: Farming, + stats: ( + equip_time_millis: 400, + power: 1.0, + poise_strength: 2.0, + speed: 1.0, + ), + )), quality: Common, -) +) \ No newline at end of file diff --git a/assets/common/items/weapons/tool/shovel-1.ron b/assets/common/items/weapons/tool/shovel-1.ron index a9b0a19c53..2c862e20e0 100644 --- a/assets/common/items/weapons/tool/shovel-1.ron +++ b/assets/common/items/weapons/tool/shovel-1.ron @@ -1,15 +1,14 @@ ItemDef( name: "Shovel", - description: "It's been recently cleaned.", - kind: Tool ( - ( - kind: Farming, - stats: ( - equip_time_millis: 400, - power: 1.00, - speed: 1.0 - ), - ) - ), + description: "It\'s been recently cleaned.", + kind: Tool(( + kind: Farming, + stats: ( + equip_time_millis: 400, + power: 1.0, + poise_strength: 2.0, + speed: 1.0, + ), + )), quality: Common, -) +) \ No newline at end of file diff --git a/common/Cargo.toml b/common/Cargo.toml index eabc7906d2..fdd42a15f7 100644 --- a/common/Cargo.toml +++ b/common/Cargo.toml @@ -8,7 +8,7 @@ edition = "2018" no-assets = [] tracy = ["tracy-client"] simd = ["vek/platform_intrinsics"] -bin_csv_export = ["csv", "structopt"] +bin_csv = ["csv", "structopt"] default = ["simd"] @@ -71,4 +71,8 @@ harness = false [[bin]] name = "csv_export" -required-features = ["bin_csv_export"] +required-features = ["bin_csv"] + +[[bin]] +name = "csv_import" +required-features = ["bin_csv"] diff --git a/common/net/src/msg/ecs_packet.rs b/common/net/src/msg/ecs_packet.rs index 25860655e7..599115dcd1 100644 --- a/common/net/src/msg/ecs_packet.rs +++ b/common/net/src/msg/ecs_packet.rs @@ -18,6 +18,7 @@ sum_type! { Auras(comp::Auras), Energy(comp::Energy), Health(comp::Health), + Poise(comp::Poise), LightEmitter(comp::LightEmitter), Inventory(comp::Inventory), Item(comp::Item), @@ -50,6 +51,7 @@ sum_type! { Auras(PhantomData), Energy(PhantomData), Health(PhantomData), + Poise(PhantomData), LightEmitter(PhantomData), Inventory(PhantomData), Item(PhantomData), @@ -82,6 +84,7 @@ impl sync::CompPacket for EcsCompPacket { EcsCompPacket::Auras(comp) => sync::handle_insert(comp, entity, world), EcsCompPacket::Energy(comp) => sync::handle_insert(comp, entity, world), EcsCompPacket::Health(comp) => sync::handle_insert(comp, entity, world), + EcsCompPacket::Poise(comp) => sync::handle_insert(comp, entity, world), EcsCompPacket::LightEmitter(comp) => sync::handle_insert(comp, entity, world), EcsCompPacket::Inventory(comp) => sync::handle_insert(comp, entity, world), EcsCompPacket::Item(comp) => sync::handle_insert(comp, entity, world), @@ -112,6 +115,7 @@ impl sync::CompPacket for EcsCompPacket { EcsCompPacket::Auras(comp) => sync::handle_modify(comp, entity, world), EcsCompPacket::Energy(comp) => sync::handle_modify(comp, entity, world), EcsCompPacket::Health(comp) => sync::handle_modify(comp, entity, world), + EcsCompPacket::Poise(comp) => sync::handle_modify(comp, entity, world), EcsCompPacket::LightEmitter(comp) => sync::handle_modify(comp, entity, world), EcsCompPacket::Inventory(comp) => sync::handle_modify(comp, entity, world), EcsCompPacket::Item(comp) => sync::handle_modify(comp, entity, world), @@ -142,6 +146,7 @@ impl sync::CompPacket for EcsCompPacket { EcsCompPhantom::Auras(_) => sync::handle_remove::(entity, world), EcsCompPhantom::Energy(_) => sync::handle_remove::(entity, world), EcsCompPhantom::Health(_) => sync::handle_remove::(entity, world), + EcsCompPhantom::Poise(_) => sync::handle_remove::(entity, world), EcsCompPhantom::LightEmitter(_) => { sync::handle_remove::(entity, world) }, diff --git a/common/src/bin/csv_export/main.rs b/common/src/bin/csv_export/main.rs index cdfa9bc220..5025ee2811 100644 --- a/common/src/bin/csv_export/main.rs +++ b/common/src/bin/csv_export/main.rs @@ -18,22 +18,46 @@ struct Cli { fn armor_stats() -> Result<(), Box> { let mut wtr = csv::Writer::from_path("armorstats.csv")?; - wtr.write_record(&["Path", "Kind", "Name", "Protection"])?; + wtr.write_record(&[ + "Path", + "Kind", + "Name", + "Quality", + "Protection", + "Poise Resilience", + "Description", + ])?; for item in comp::item::Item::new_from_asset_glob("common.items.armor.*") .expect("Failed to iterate over item folders!") { match item.kind() { comp::item::ItemKind::Armor(armor) => { + let kind = get_armor_kind(&armor.kind); + if kind == "Bag" { + continue; + } + let protection = match armor.get_protection() { Protection::Invincible => "Invincible".to_string(), Protection::Normal(value) => value.to_string(), }; - let kind = get_armor_kind(&armor.kind); + let poise_resilience = match armor.get_poise_resilience() { + Protection::Invincible => "Invincible".to_string(), + Protection::Normal(value) => value.to_string(), + }; - wtr.write_record(&[item.item_definition_id(), &kind, item.name(), &protection])?; + wtr.write_record(&[ + item.item_definition_id(), + &kind, + item.name(), + &format!("{:?}", item.quality()), + &protection, + &poise_resilience, + item.description(), + ])?; }, - _ => println!("Skipping non-armor item: {:?}", item), + _ => println!("Skipping non-armor item: {:?}\n", item), } } @@ -43,7 +67,17 @@ fn armor_stats() -> Result<(), Box> { fn weapon_stats() -> Result<(), Box> { let mut wtr = csv::Writer::from_path("weaponstats.csv")?; - wtr.write_record(&["Path", "Kind", "Name", "Power", "Speed", "Equip Time (ms)"])?; + wtr.write_record(&[ + "Path", + "Kind", + "Name", + "Quality", + "Power", + "Poise Strength", + "Speed", + "Equip Time (ms)", + "Description", + ])?; for item in comp::item::Item::new_from_asset_glob("common.items.weapons.*") .expect("Failed to iterate over item folders!") @@ -51,6 +85,7 @@ fn weapon_stats() -> Result<(), Box> { match item.kind() { comp::item::ItemKind::Tool(tool) => { let power = tool.base_power().to_string(); + let poise_strength = tool.base_poise_strength().to_string(); let speed = tool.base_speed().to_string(); let equip_time = tool.equip_time().subsec_millis().to_string(); let kind = get_tool_kind(&tool.kind); @@ -59,12 +94,15 @@ fn weapon_stats() -> Result<(), Box> { item.item_definition_id(), &kind, item.name(), + &format!("{:?}", item.quality()), &power, + &poise_strength, &speed, &equip_time, + item.description(), ])?; }, - _ => println!("Skipping non-weapon item: {:?}", item), + _ => println!("Skipping non-weapon item: {:?}\n", item), } } @@ -147,15 +185,15 @@ fn main() { let args = Cli::from_args(); if args.function.eq_ignore_ascii_case("armor_stats") { if let Err(e) = armor_stats() { - println!("Error: {}", e) + println!("Error: {}\n", e) } } else if args.function.eq_ignore_ascii_case("weapon_stats") { if let Err(e) = weapon_stats() { - println!("Error: {}", e) + println!("Error: {}\n", e) } } else if args.function.eq_ignore_ascii_case("all_items") { if let Err(e) = all_items() { - println!("Error: {}", e) + println!("Error: {}\n", e) } } else { println!( diff --git a/common/src/bin/csv_import/main.rs b/common/src/bin/csv_import/main.rs new file mode 100644 index 0000000000..c3f2f3707b --- /dev/null +++ b/common/src/bin/csv_import/main.rs @@ -0,0 +1,360 @@ +#![deny(clippy::clone_on_ref_ptr)] + +use ron::ser::{to_string_pretty, PrettyConfig}; +use serde::Serialize; +use std::{error::Error, fs::File, io::Write}; +use structopt::StructOpt; + +use comp::item::{ + armor::{ArmorKind, Protection}, + ItemKind, Quality, +}; +use veloren_common::{assets::ASSETS_PATH, comp}; + +#[derive(StructOpt)] +struct Cli { + /// Available arguments: "armor_stats", "weapon_stats" + function: String, +} + +#[derive(Serialize)] +struct FakeItemDef { + name: String, + description: String, + kind: ItemKind, + quality: Quality, +} + +impl FakeItemDef { + fn new(name: String, description: String, kind: ItemKind, quality: Quality) -> Self { + Self { + name, + description, + kind, + quality, + } + } +} + +fn armor_stats() -> Result<(), Box> { + let mut rdr = csv::Reader::from_path("armorstats.csv")?; + + for record in rdr.records() { + for item in comp::item::Item::new_from_asset_glob("common.items.armor.*") + .expect("Failed to iterate over item folders!") + { + match item.kind() { + comp::item::ItemKind::Armor(armor) => { + match armor.kind { + ArmorKind::Bag(_) => { + continue; + }, + _ => {}, + } + + if let Ok(ref record) = record { + if item.item_definition_id() == record.get(0).expect("No file path in csv?") + { + let protection = if let Some(protection_raw) = record.get(4) { + if protection_raw == "Invincible" { + Protection::Invincible + } else { + let value: f32 = protection_raw.parse().unwrap(); + Protection::Normal(value) + } + } else { + eprintln!( + "Could not unwrap protection value for {:?}", + item.item_definition_id() + ); + Protection::Normal(0.0) + }; + + let poise_resilience = if let Some(poise_resilience_raw) = record.get(5) + { + if poise_resilience_raw == "Invincible" { + Protection::Invincible + } else { + let value: f32 = poise_resilience_raw.parse().unwrap(); + Protection::Normal(value) + } + } else { + eprintln!( + "Could not unwrap poise protection value for {:?}", + item.item_definition_id() + ); + Protection::Normal(0.0) + }; + + let kind = armor.kind.clone(); + let armor = + comp::item::armor::Armor::new(kind, protection, poise_resilience); + let quality = if let Some(quality_raw) = record.get(3) { + match quality_raw { + "Low" => comp::item::Quality::Low, + "Common" => comp::item::Quality::Common, + "Moderate" => comp::item::Quality::Moderate, + "High" => comp::item::Quality::High, + "Epic" => comp::item::Quality::Epic, + "Legendary" => comp::item::Quality::Legendary, + "Artifact" => comp::item::Quality::Artifact, + "Debug" => comp::item::Quality::Debug, + _ => { + eprintln!( + "Unknown quality variant for {:?}", + item.item_definition_id() + ); + comp::item::Quality::Debug + }, + } + } else { + eprintln!( + "Could not unwrap quality for {:?}", + item.item_definition_id() + ); + comp::item::Quality::Debug + }; + + let description = record.get(6).expect(&format!( + "Error unwrapping description for {:?}", + item.item_definition_id() + )); + + let fake_item = FakeItemDef::new( + item.name().to_string(), + description.to_string(), + ItemKind::Armor(armor), + quality, + ); + + let pretty_config = PrettyConfig::new() + .with_depth_limit(4) + .with_separate_tuple_members(true) + .with_decimal_floats(true) + .with_enumerate_arrays(true); + + let mut path = ASSETS_PATH.clone(); + for part in item.item_definition_id().split(".") { + path.push(part); + } + path.set_extension("ron"); + + let path_str = path.to_str().expect("File path not unicode?!"); + let mut writer = File::create(path_str)?; + write!( + writer, + "ItemDef{}", + to_string_pretty(&fake_item, pretty_config)? + )?; + } + } + }, + _ => println!("Skipping non-armor item: {:?}\n", item), + } + } + } + + Ok(()) +} + +fn weapon_stats() -> Result<(), Box> { + let mut rdr = csv::Reader::from_path("weaponstats.csv")?; + + for record in rdr.records() { + for item in comp::item::Item::new_from_asset_glob("common.items.weapons.*") + .expect("Failed to iterate over item folders!") + { + match item.kind() { + comp::item::ItemKind::Tool(tool) => { + if let Ok(ref record) = record { + if item.item_definition_id() == record.get(0).expect("No file path in csv?") + { + let kind = tool.kind; + let equip_time_millis: u32 = record + .get(7) + .expect(&format!( + "Error unwrapping equip time for {:?}", + item.item_definition_id() + )) + .parse() + .expect(&format!("Not a u32? {:?}", item.item_definition_id())); + let power: f32 = record + .get(4) + .expect(&format!( + "Error unwrapping power for {:?}", + item.item_definition_id() + )) + .parse() + .expect(&format!("Not a f32? {:?}", item.item_definition_id())); + let poise_strength: f32 = record + .get(5) + .expect(&format!( + "Error unwrapping poise power for {:?}", + item.item_definition_id() + )) + .parse() + .expect(&format!("Not a f32? {:?}", item.item_definition_id())); + + let speed: f32 = record + .get(6) + .expect(&format!( + "Error unwrapping speed for {:?}", + item.item_definition_id() + )) + .parse() + .expect(&format!("Not a f32? {:?}", item.item_definition_id())); + + let tool = comp::item::tool::Tool::new( + kind, + equip_time_millis, + power, + poise_strength, + speed, + ); + + let quality = if let Some(quality_raw) = record.get(3) { + match quality_raw { + "Low" => comp::item::Quality::Low, + "Common" => comp::item::Quality::Common, + "Moderate" => comp::item::Quality::Moderate, + "High" => comp::item::Quality::High, + "Epic" => comp::item::Quality::Epic, + "Legendary" => comp::item::Quality::Legendary, + "Artifact" => comp::item::Quality::Artifact, + "Debug" => comp::item::Quality::Debug, + _ => { + eprintln!( + "Unknown quality variant for {:?}", + item.item_definition_id() + ); + comp::item::Quality::Debug + }, + } + } else { + eprintln!( + "Could not unwrap quality for {:?}", + item.item_definition_id() + ); + comp::item::Quality::Debug + }; + + let description = record.get(8).expect(&format!( + "Error unwrapping description for {:?}", + item.item_definition_id() + )); + + let fake_item = FakeItemDef::new( + item.name().to_string(), + description.to_string(), + ItemKind::Tool(tool), + quality, + ); + + let pretty_config = PrettyConfig::new() + .with_depth_limit(4) + .with_separate_tuple_members(true) + .with_decimal_floats(true) + .with_enumerate_arrays(true); + + let mut path = ASSETS_PATH.clone(); + for part in item.item_definition_id().split(".") { + path.push(part); + } + path.set_extension("ron"); + + let path_str = path.to_str().expect("File path not unicode?!"); + let mut writer = File::create(path_str)?; + write!( + writer, + "ItemDef{}", + to_string_pretty(&fake_item, pretty_config)? + )?; + } + } + }, + _ => println!("Skipping non-weapon item: {:?}\n", item), + } + } + } + + Ok(()) +} + +fn main() { + let args = Cli::from_args(); + if args.function.eq_ignore_ascii_case("armor_stats") { + if get_input( + " +------------------------------------------------------------------------------- +| DISCLAIMER | +------------------------------------------------------------------------------- +| | +| This script will wreck the RON files for armor if it messes up. | +| You might want to save a back up of the weapon files or be prepared to | +| use `git checkout HEAD -- ../assets/common/items/armor/*` if needed. | +| If this script does mess up your files, please fix it. Otherwise your | +| files will be yeeted away and you will get a bonk on the head. | +| | +------------------------------------------------------------------------------- + +In order for this script to work, you need to have first run the csv exporter. +Once you have armorstats.csv you can make changes to stats, quality, and +description in your preferred editor. Save the csv file and then run this +script to import your changes back to RON. + +Would you like to continue? (y/n) +> ", + ) + .to_lowercase() + == "y".to_string() + { + if let Err(e) = armor_stats() { + println!("Error: {}\n", e) + } + } + } else if args.function.eq_ignore_ascii_case("weapon_stats") { + if get_input( + " +------------------------------------------------------------------------------- +| DISCLAIMER | +------------------------------------------------------------------------------- +| | +| This script will wreck the RON files for weapons if it messes up. | +| You might want to save a back up of the weapon files or be prepared to | +| use `git checkout HEAD -- ../assets/common/items/weapons/*` if needed. | +| If this script does mess up your files, please fix it. Otherwise your | +| files will be yeeted away and you will get a bonk on the head. | +| | +------------------------------------------------------------------------------- + +In order for this script to work, you need to have first run the csv exporter. +Once you have weaponstats.csv you can make changes to stats, quality, and +description in your preferred editor. Save the csv file and then run this +script to import your changes back to RON. + +Would you like to continue? (y/n) +> ", + ) + .to_lowercase() + == "y".to_string() + { + if let Err(e) = weapon_stats() { + println!("Error: {}\n", e) + } + } + } else { + println!("Invalid argument, available arguments:\n\"armor_stats\"\n\"weapon_stats\"\n\"") + } +} + +pub fn get_input(prompt: &str) -> String { + // Function to get input from the user with a prompt + let mut input = String::new(); + print!("{}", prompt); + std::io::stdout().flush().unwrap(); + std::io::stdin() + .read_line(&mut input) + .expect("Error reading input"); + + String::from(input.trim()) +} diff --git a/common/src/combat.rs b/common/src/combat.rs index 1ba9de057d..eb905c135f 100644 --- a/common/src/combat.rs +++ b/common/src/combat.rs @@ -68,7 +68,6 @@ impl Damage { pub fn modify_damage(self, inventory: Option<&Inventory>, uid: Option) -> HealthChange { let mut damage = self.value; let damage_reduction = inventory.map_or(0.0, |inv| Damage::compute_damage_reduction(inv)); - match self.source { DamageSource::Melee => { // Critical hit diff --git a/common/src/comp/ability.rs b/common/src/comp/ability.rs index 6b487708f7..8dea5f3373 100644 --- a/common/src/comp/ability.rs +++ b/common/src/comp/ability.rs @@ -61,6 +61,7 @@ pub enum CharacterAbility { swing_duration: u64, recover_duration: u64, base_damage: u32, + base_poise_damage: u32, knockback: f32, range: f32, max_angle: f32, @@ -98,6 +99,8 @@ pub enum CharacterAbility { energy_cost: u32, base_damage: u32, scaled_damage: u32, + base_poise_damage: u32, + scaled_poise_damage: u32, base_knockback: f32, scaled_knockback: f32, range: f32, @@ -137,6 +140,7 @@ pub enum CharacterAbility { swing_duration: u64, recover_duration: u64, base_damage: u32, + base_poise_damage: u32, range: f32, max_angle: f32, knockback: f32, @@ -148,6 +152,7 @@ pub enum CharacterAbility { swing_duration: u64, recover_duration: u64, base_damage: u32, + base_poise_damage: u32, knockback: f32, range: f32, energy_cost: u32, @@ -162,6 +167,8 @@ pub enum CharacterAbility { energy_drain: u32, initial_damage: u32, scaled_damage: u32, + initial_poise_damage: u32, + scaled_poise_damage: u32, initial_knockback: f32, scaled_knockback: f32, range: f32, @@ -196,6 +203,7 @@ pub enum CharacterAbility { swing_duration: u64, recover_duration: u64, damage: u32, + poise_damage: u32, knockback: Knockback, shockwave_angle: f32, shockwave_vertical_angle: f32, @@ -228,6 +236,7 @@ impl Default for CharacterAbility { swing_duration: 250, recover_duration: 500, base_damage: 10, + base_poise_damage: 10, knockback: 0.0, range: 3.5, max_angle: 15.0, @@ -313,7 +322,7 @@ impl CharacterAbility { } } - pub fn adjusted_by_stats(mut self, power: f32, speed: f32) -> Self { + pub fn adjusted_by_stats(mut self, power: f32, poise_strength: f32, speed: f32) -> Self { use CharacterAbility::*; match self { BasicMelee { @@ -321,12 +330,14 @@ impl CharacterAbility { ref mut swing_duration, ref mut recover_duration, ref mut base_damage, + ref mut base_poise_damage, .. } => { *buildup_duration = (*buildup_duration as f32 / speed) as u64; *swing_duration = (*swing_duration as f32 / speed) as u64; *recover_duration = (*recover_duration as f32 / speed) as u64; *base_damage = (*base_damage as f32 * power) as u32; + *base_poise_damage = (*base_poise_damage as f32 * poise_strength) as u32; }, BasicRanged { ref mut buildup_duration, @@ -361,6 +372,8 @@ impl CharacterAbility { DashMelee { ref mut base_damage, ref mut scaled_damage, + ref mut base_poise_damage, + ref mut scaled_poise_damage, ref mut buildup_duration, ref mut swing_duration, ref mut recover_duration, @@ -368,6 +381,8 @@ impl CharacterAbility { } => { *base_damage = (*base_damage as f32 * power) as u32; *scaled_damage = (*scaled_damage as f32 * power) as u32; + *base_poise_damage = (*base_damage as f32 * poise_strength) as u32; + *scaled_poise_damage = (*scaled_poise_damage as f32 * poise_strength) as u32; *buildup_duration = (*buildup_duration as f32 / speed) as u64; *swing_duration = (*swing_duration as f32 / speed) as u64; *recover_duration = (*recover_duration as f32 / speed) as u64; @@ -388,7 +403,7 @@ impl CharacterAbility { } => { *stage_data = stage_data .iter_mut() - .map(|s| s.adjusted_by_stats(power, speed)) + .map(|s| s.adjusted_by_stats(power, poise_strength, speed)) .collect(); }, LeapMelee { @@ -397,6 +412,7 @@ impl CharacterAbility { ref mut swing_duration, ref mut recover_duration, ref mut base_damage, + ref mut base_poise_damage, .. } => { *buildup_duration = (*buildup_duration as f32 / speed) as u64; @@ -404,22 +420,27 @@ impl CharacterAbility { *swing_duration = (*swing_duration as f32 / speed) as u64; *recover_duration = (*recover_duration as f32 / speed) as u64; *base_damage = (*base_damage as f32 * power) as u32; + *base_poise_damage = (*base_poise_damage as f32 * poise_strength) as u32; }, SpinMelee { ref mut buildup_duration, ref mut swing_duration, ref mut recover_duration, ref mut base_damage, + ref mut base_poise_damage, .. } => { *buildup_duration = (*buildup_duration as f32 / speed) as u64; *swing_duration = (*swing_duration as f32 / speed) as u64; *recover_duration = (*recover_duration as f32 / speed) as u64; *base_damage = (*base_damage as f32 * power) as u32; + *base_poise_damage = (*base_poise_damage as f32 * poise_strength) as u32; }, ChargedMelee { ref mut initial_damage, ref mut scaled_damage, + ref mut initial_poise_damage, + ref mut scaled_poise_damage, speed: ref mut ability_speed, ref mut charge_duration, ref mut swing_duration, @@ -428,6 +449,8 @@ impl CharacterAbility { } => { *initial_damage = (*initial_damage as f32 * power) as u32; *scaled_damage = (*scaled_damage as f32 * power) as u32; + *initial_poise_damage = (*initial_poise_damage as f32 * poise_strength) as u32; + *scaled_poise_damage = (*scaled_poise_damage as f32 * poise_strength) as u32; *ability_speed *= speed; *charge_duration = (*charge_duration as f32 / speed) as u64; *swing_duration = (*swing_duration as f32 / speed) as u64; @@ -454,12 +477,14 @@ impl CharacterAbility { ref mut swing_duration, ref mut recover_duration, ref mut damage, + ref mut poise_damage, .. } => { *buildup_duration = (*buildup_duration as f32 / speed) as u64; *swing_duration = (*swing_duration as f32 / speed) as u64; *recover_duration = (*recover_duration as f32 / speed) as u64; *damage = (*damage as f32 * power) as u32; + *poise_damage = (*poise_damage as f32 * poise_strength) as u32; }, BasicBeam { ref mut buildup_duration, @@ -1071,6 +1096,7 @@ impl From<(&CharacterAbility, AbilityKey)> for CharacterState { swing_duration, recover_duration, base_damage, + base_poise_damage, knockback, range, max_angle, @@ -1081,6 +1107,7 @@ impl From<(&CharacterAbility, AbilityKey)> for CharacterState { swing_duration: Duration::from_millis(*swing_duration), recover_duration: Duration::from_millis(*recover_duration), base_damage: *base_damage, + base_poise_damage: *base_poise_damage, knockback: *knockback, range: *range, max_angle: *max_angle, @@ -1131,6 +1158,8 @@ impl From<(&CharacterAbility, AbilityKey)> for CharacterState { energy_cost: _, base_damage, scaled_damage, + base_poise_damage, + scaled_poise_damage, base_knockback, scaled_knockback, range, @@ -1147,6 +1176,8 @@ impl From<(&CharacterAbility, AbilityKey)> for CharacterState { static_data: dash_melee::StaticData { base_damage: *base_damage, scaled_damage: *scaled_damage, + base_poise_damage: *base_poise_damage, + scaled_poise_damage: *scaled_poise_damage, base_knockback: *base_knockback, scaled_knockback: *scaled_knockback, range: *range, @@ -1224,6 +1255,7 @@ impl From<(&CharacterAbility, AbilityKey)> for CharacterState { swing_duration, recover_duration, base_damage, + base_poise_damage, knockback, range, max_angle, @@ -1236,6 +1268,7 @@ impl From<(&CharacterAbility, AbilityKey)> for CharacterState { swing_duration: Duration::from_millis(*swing_duration), recover_duration: Duration::from_millis(*recover_duration), base_damage: *base_damage, + base_poise_damage: *base_poise_damage, knockback: *knockback, range: *range, max_angle: *max_angle, @@ -1252,6 +1285,7 @@ impl From<(&CharacterAbility, AbilityKey)> for CharacterState { swing_duration, recover_duration, base_damage, + base_poise_damage, knockback, range, energy_cost, @@ -1266,6 +1300,7 @@ impl From<(&CharacterAbility, AbilityKey)> for CharacterState { swing_duration: Duration::from_millis(*swing_duration), recover_duration: Duration::from_millis(*recover_duration), base_damage: *base_damage, + base_poise_damage: *base_poise_damage, knockback: *knockback, range: *range, energy_cost: *energy_cost, @@ -1286,6 +1321,8 @@ impl From<(&CharacterAbility, AbilityKey)> for CharacterState { energy_drain, initial_damage, scaled_damage, + initial_poise_damage, + scaled_poise_damage, initial_knockback, scaled_knockback, speed, @@ -1301,6 +1338,8 @@ impl From<(&CharacterAbility, AbilityKey)> for CharacterState { energy_drain: *energy_drain, initial_damage: *initial_damage, scaled_damage: *scaled_damage, + initial_poise_damage: *initial_poise_damage, + scaled_poise_damage: *scaled_poise_damage, initial_knockback: *initial_knockback, scaled_knockback: *scaled_knockback, speed: *speed, @@ -1394,6 +1433,7 @@ impl From<(&CharacterAbility, AbilityKey)> for CharacterState { swing_duration, recover_duration, damage, + poise_damage, knockback, shockwave_angle, shockwave_vertical_angle, @@ -1407,6 +1447,7 @@ impl From<(&CharacterAbility, AbilityKey)> for CharacterState { swing_duration: Duration::from_millis(*swing_duration), recover_duration: Duration::from_millis(*recover_duration), damage: *damage, + poise_damage: *poise_damage, knockback: *knockback, shockwave_angle: *shockwave_angle, shockwave_vertical_angle: *shockwave_vertical_angle, diff --git a/common/src/comp/body.rs b/common/src/comp/body.rs index bd6ddc6775..81e5ba2ee0 100644 --- a/common/src/comp/body.rs +++ b/common/src/comp/body.rs @@ -444,6 +444,14 @@ impl Body { // TODO: Match on species pub fn combat_multiplier(&self) -> f32 { if let Body::Object(_) = self { 0.0 } else { 1.0 } } + pub fn base_poise(&self) -> u32 { + match self { + Body::Humanoid(_) => 100, + Body::BipedLarge(_) => 200, + _ => 100, + } + } + #[allow(unreachable_patterns)] pub fn base_exp(&self) -> u32 { match self { @@ -602,6 +610,13 @@ impl Body { } } + pub fn base_poise_dmg(&self) -> u32 { + match self { + Body::Humanoid(_) => 5, + _ => 10, + } + } + pub fn base_range(&self) -> f32 { match self { Body::Humanoid(_) => 5.0, diff --git a/common/src/comp/character_state.rs b/common/src/comp/character_state.rs index 92c2633ea4..66fad330a1 100644 --- a/common/src/comp/character_state.rs +++ b/common/src/comp/character_state.rs @@ -1,5 +1,5 @@ use crate::{ - comp::{Energy, Ori, Pos, Vel}, + comp::{Energy, Ori, PoiseChange, Pos, Vel}, event::{LocalEvent, ServerEvent}, states::{behavior::JoinData, *}, Damage, GroupTarget, Knockback, @@ -44,6 +44,8 @@ pub enum CharacterState { Sneak, Glide, GlideWield, + /// A stunned state + Stunned(stunned::Data), /// A basic blocking state BasicBlock, /// Player is busy equipping or unequipping weapons @@ -135,6 +137,7 @@ impl CharacterState { | CharacterState::RepeaterRanged(_) | CharacterState::Shockwave(_) | CharacterState::BasicBeam(_) + | CharacterState::Stunned(_) | CharacterState::Wielding ) } @@ -147,6 +150,8 @@ impl CharacterState { matches!(self, CharacterState::Roll(d) if d.static_data.immune_melee) } + pub fn is_stunned(&self) -> bool { matches!(self, CharacterState::Stunned(_)) } + /// Compares for shallow equality (does not check internal struct equality) pub fn same_variant(&self, other: &Self) -> bool { // Check if state is the same without looking at the inner data @@ -164,7 +169,7 @@ impl Component for CharacterState { #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)] pub struct Attacking { - pub damages: Vec<(Option, Damage)>, + pub effects: Vec<(Option, Damage, PoiseChange)>, pub range: f32, pub max_angle: f32, pub applied: bool, diff --git a/common/src/comp/inventory/item/armor.rs b/common/src/comp/inventory/item/armor.rs index aba06d5873..d19e129ee2 100644 --- a/common/src/comp/inventory/item/armor.rs +++ b/common/src/comp/inventory/item/armor.rs @@ -28,6 +28,18 @@ impl Armor { #[derive(Clone, Copy, Debug, PartialEq, Serialize, Deserialize)] pub struct Stats { protection: Protection, + poise_resilience: Protection, +} + +impl Stats { + // DO NOT USE UNLESS YOU KNOW WHAT YOU ARE DOING + // Added for csv import of stats + pub fn new(protection: Protection, poise_resilience: Protection) -> Self { + Self { + protection, + poise_resilience, + } + } } #[derive(Clone, Copy, Debug, PartialEq, Serialize, Deserialize)] @@ -43,13 +55,32 @@ pub struct Armor { } impl Armor { + pub fn new(kind: ArmorKind, protection: Protection, poise_resilience: Protection) -> Self { + Self { + kind, + stats: Stats { + protection, + poise_resilience, + }, + } + } + pub fn get_protection(&self) -> Protection { self.stats.protection } + pub fn get_poise_resilience(&self) -> Protection { self.stats.poise_resilience } + #[cfg(test)] - pub fn test_armor(kind: ArmorKind, protection: Protection) -> Armor { + pub fn test_armor( + kind: ArmorKind, + protection: Protection, + poise_resilience: Protection, + ) -> Armor { Armor { kind, - stats: Stats { protection }, + stats: Stats { + protection, + poise_resilience, + }, } } } diff --git a/common/src/comp/inventory/item/mod.rs b/common/src/comp/inventory/item/mod.rs index 0681327295..1db48c8b6c 100644 --- a/common/src/comp/inventory/item/mod.rs +++ b/common/src/comp/inventory/item/mod.rs @@ -352,6 +352,7 @@ impl Item { swing_duration: 100, recover_duration: 100, base_damage: body.base_dmg(), + base_poise_damage: body.base_poise_dmg(), knockback: 0.0, range: body.base_range(), max_angle: 20.0, diff --git a/common/src/comp/inventory/item/tool.rs b/common/src/comp/inventory/item/tool.rs index 729281ad6a..1a9512b454 100644 --- a/common/src/comp/inventory/item/tool.rs +++ b/common/src/comp/inventory/item/tool.rs @@ -55,6 +55,7 @@ pub enum Hands { pub struct Stats { equip_time_millis: u32, power: f32, + poise_strength: f32, speed: f32, } @@ -66,12 +67,33 @@ pub struct Tool { } impl Tool { + // DO NOT USE UNLESS YOU KNOW WHAT YOU ARE DOING + // Added for CSV import of stats + pub fn new( + kind: ToolKind, + equip_time_millis: u32, + power: f32, + poise_strength: f32, + speed: f32, + ) -> Self { + Self { + kind, + stats: Stats { + equip_time_millis, + power, + poise_strength, + speed, + }, + } + } + pub fn empty() -> Self { Self { kind: ToolKind::Empty, stats: Stats { equip_time_millis: 0, power: 1.00, + poise_strength: 1.00, speed: 1.00, }, } @@ -80,6 +102,8 @@ impl Tool { // Keep power between 0.5 and 2.00 pub fn base_power(&self) -> f32 { self.stats.power } + pub fn base_poise_strength(&self) -> f32 { self.stats.poise_strength } + pub fn base_speed(&self) -> f32 { self.stats.speed } pub fn equip_time(&self) -> Duration { @@ -107,8 +131,14 @@ pub struct AbilitySet { } impl AbilitySet { - fn modified_by_tool(self, tool: &Tool) -> Self { - self.map(|a| a.adjusted_by_stats(tool.base_power(), tool.base_speed())) + pub fn modified_by_tool(self, tool: &Tool) -> Self { + self.map(|a| { + a.adjusted_by_stats( + tool.base_power(), + tool.base_poise_strength(), + tool.base_speed(), + ) + }) } } diff --git a/common/src/comp/inventory/loadout.rs b/common/src/comp/inventory/loadout.rs index 4de423af8e..c79f8c4d21 100644 --- a/common/src/comp/inventory/loadout.rs +++ b/common/src/comp/inventory/loadout.rs @@ -336,6 +336,7 @@ mod tests { .get_slot_to_equip_into(&ItemKind::Armor(Armor::test_armor( ArmorKind::Bag("test".to_string()), Protection::Normal(0.0), + Protection::Normal(0.0), ))) .unwrap(); @@ -355,6 +356,7 @@ mod tests { .get_slot_to_equip_into(&ItemKind::Armor(Armor::test_armor( ArmorKind::Bag("test".to_string()), Protection::Normal(0.0), + Protection::Normal(0.0), ))) .unwrap(); diff --git a/common/src/comp/inventory/loadout_builder.rs b/common/src/comp/inventory/loadout_builder.rs index e6385be4f1..7ea301dd78 100644 --- a/common/src/comp/inventory/loadout_builder.rs +++ b/common/src/comp/inventory/loadout_builder.rs @@ -51,19 +51,19 @@ impl LoadoutBuilder { /// updates, but should be safe defaults for a new character. pub fn defaults(self) -> Self { self.chest(Some(Item::new_from_asset_expect( - "common.items.armor.starter.rugged_chest", + "common.items.armor.chest.rugged", ))) .pants(Some(Item::new_from_asset_expect( - "common.items.armor.starter.rugged_pants", + "common.items.armor.pants.rugged", ))) .feet(Some(Item::new_from_asset_expect( - "common.items.armor.starter.sandals_0", + "common.items.armor.foot.sandals_0", ))) .lantern(Some(Item::new_from_asset_expect( - "common.items.armor.starter.lantern", + "common.items.lantern.black_0", ))) .glider(Some(Item::new_from_asset_expect( - "common.items.armor.starter.glider", + "common.items.glider.glider_cloverleaf", ))) } @@ -479,7 +479,7 @@ impl LoadoutBuilder { .feet(Some(Item::new_from_asset_expect( match rand::thread_rng().gen_range(0..2) { 0 => "common.items.armor.foot.leather_0", - _ => "common.items.armor.starter.sandals_0", + _ => "common.items.armor.foot.sandals_0", }, ))) .build(), diff --git a/common/src/comp/inventory/test.rs b/common/src/comp/inventory/test.rs index 45de613774..acb566cc06 100644 --- a/common/src/comp/inventory/test.rs +++ b/common/src/comp/inventory/test.rs @@ -204,7 +204,7 @@ fn equip_replace_already_equipped_item() { let boots = Item::new_from_asset_expect("common.items.testing.test_boots"); let starting_sandles = Some(Item::new_from_asset_expect( - "common.items.armor.starter.sandals_0", + "common.items.armor.foot.sandals_0", )); let mut inv = Inventory::new_empty(); diff --git a/common/src/comp/inventory/test_helpers.rs b/common/src/comp/inventory/test_helpers.rs index 651d763081..8c2be8b586 100644 --- a/common/src/comp/inventory/test_helpers.rs +++ b/common/src/comp/inventory/test_helpers.rs @@ -15,6 +15,7 @@ pub(super) fn get_test_bag(slots: u16) -> Item { ItemKind::Armor(armor::Armor::test_armor( ArmorKind::Bag("Test Bag".to_string()), Protection::Normal(0.0), + Protection::Normal(0.0), )), Quality::Common, slots, diff --git a/common/src/comp/mod.rs b/common/src/comp/mod.rs index 2b3d47aeaf..5bfa41ae23 100644 --- a/common/src/comp/mod.rs +++ b/common/src/comp/mod.rs @@ -19,6 +19,7 @@ mod location; mod misc; mod phys; mod player; +pub mod poise; pub mod projectile; pub mod shockwave; pub mod skills; @@ -65,6 +66,7 @@ pub use phys::{ Sticky, Vel, }; pub use player::Player; +pub use poise::{Poise, PoiseChange, PoiseSource, PoiseState}; pub use projectile::{Projectile, ProjectileConstructor}; pub use shockwave::{Shockwave, ShockwaveHitEntities}; pub use skills::{Skill, SkillGroup, SkillGroupKind, SkillSet}; diff --git a/common/src/comp/poise.rs b/common/src/comp/poise.rs new file mode 100644 index 0000000000..3641dba5f8 --- /dev/null +++ b/common/src/comp/poise.rs @@ -0,0 +1,216 @@ +use crate::comp::{ + inventory::item::{armor::Protection, ItemKind}, + Body, Inventory, +}; +use serde::{Deserialize, Serialize}; +use specs::{Component, DerefFlaggedStorage}; +use specs_idvs::IdvStorage; +use vek::*; + +/// A change in the poise component. Stores the amount as a signed +/// integer to allow for added or removed poise. Also has a field to +/// label where the poise change came from. +#[derive(Clone, Copy, Debug, PartialEq, Serialize, Deserialize)] +pub struct PoiseChange { + /// Value of the change in poise + pub amount: i32, + /// Source of change in poise + pub source: PoiseSource, +} + +impl PoiseChange { + /// Alters poise damage as a result of armor poise damage reduction + pub fn modify_poise_damage(self, inventory: Option<&Inventory>) -> PoiseChange { + let poise_damage_reduction = + inventory.map_or(0.0, |inv| Poise::compute_poise_damage_reduction(inv)); + let poise_damage = self.amount as f32 * (1.0 - poise_damage_reduction); + // Add match on poise source when different calculations per source + // are needed/wanted + PoiseChange { + amount: poise_damage as i32, + source: self.source, + } + } +} + +/// Sources of poise change +#[derive(Clone, Copy, Debug, Eq, PartialEq, Serialize, Deserialize)] +pub enum PoiseSource { + LevelUp, + Attack, + Explosion, + Falling, + Revive, + Regen, + Other, +} + +/// Poise component +#[derive(Clone, Copy, Debug, Serialize, Deserialize)] +pub struct Poise { + /// Base poise amount for this entity + base_max: u32, + /// Poise of entity at any given moment + current: u32, + /// Maximum poise of entity at a given time + maximum: u32, + /// Last poise change, storing time since last change, the change itself, + /// and the knockback direction vector + pub last_change: (f64, PoiseChange, Vec3), + /// Rate of poise regeneration per tick. Starts at zero and accelerates. + pub regen_rate: f32, +} + +impl Default for Poise { + fn default() -> Self { + Self { + current: 0, + maximum: 0, + base_max: 0, + last_change: ( + 0.0, + PoiseChange { + amount: 0, + source: PoiseSource::Revive, + }, + Vec3::zero(), + ), + regen_rate: 0.0, + } + } +} + +/// States to define effects of a poise change +#[derive(Clone, Copy, PartialEq, Debug, Serialize, Deserialize)] +pub enum PoiseState { + /// No effect applied + Normal, + /// Poise reset, and target briefly stunned + Interrupted, + /// Poise reset, target stunned and knocked back horizontally + Stunned, + /// Poise reset, target staggered + Dazed, + /// Poise reset, target staggered and knocked back further + KnockedDown, +} + +impl Poise { + /// Creates a new poise struct based on the body it is being assigned to + pub fn new(body: Body) -> Self { + let mut poise = Poise::default(); + poise.update_base_max(Some(body)); + poise.set_maximum(poise.base_max); + poise.set_to(poise.maximum, PoiseSource::Revive); + + poise + } + + /// Returns knockback as a Vec3 + pub fn knockback(&self) -> Vec3 { self.last_change.2 } + + /// Defines the poise states based on fraction of maximum poise + pub fn poise_state(&self) -> PoiseState { + if self.current >= 8 * self.maximum / 10 { + PoiseState::Normal + } else if self.current >= 7 * self.maximum / 10 { + PoiseState::Interrupted + } else if self.current >= 6 * self.maximum / 10 { + PoiseState::Stunned + } else if self.current >= 4 * self.maximum / 10 { + PoiseState::Dazed + } else { + PoiseState::KnockedDown + } + } + + /// Gets the current poise value + pub fn current(&self) -> u32 { self.current } + + /// Gets the maximum poise value + pub fn maximum(&self) -> u32 { self.maximum } + + /// Gets the base_max value + pub fn base_max(&self) -> u32 { self.base_max } + + /// Sets the poise value to a provided value. First cuts off the value + /// at the maximum. In most cases change_by() should be used. + pub fn set_to(&mut self, amount: u32, cause: PoiseSource) { + let amount = amount.min(self.maximum); + self.last_change = ( + 0.0, + PoiseChange { + amount: amount as i32 - self.current as i32, + source: cause, + }, + Vec3::zero(), + ); + self.current = amount; + } + + /// Changes the current poise due to an in-game effect. + pub fn change_by(&mut self, change: PoiseChange, impulse: Vec3) { + self.current = ((self.current as i32 + change.amount).max(0) as u32).min(self.maximum); + self.last_change = ( + 0.0, + PoiseChange { + amount: change.amount, + source: change.source, + }, + impulse, + ); + } + + /// Resets current value to maximum + pub fn reset(&mut self) { self.current = self.maximum; } + + /// Sets the maximum and updates the current value to max out at the new + /// maximum + pub fn set_maximum(&mut self, amount: u32) { + self.maximum = amount; + self.current = self.current.min(self.maximum); + } + + /// Sets the `Poise` base_max + fn set_base_max(&mut self, amount: u32) { + self.base_max = amount; + self.current = self.current.min(self.maximum); + } + + /// Resets the maximum to the base_max. Example use would be a potion + /// wearing off + pub fn reset_max(&mut self) { self.maximum = self.base_max; } + + /// Sets the base_max based on the entity `Body` + pub fn update_base_max(&mut self, body: Option) { + if let Some(body) = body { + self.set_base_max(body.base_poise()); + } + } + + /// Returns the total poise damage reduction provided by all equipped items + pub fn compute_poise_damage_reduction(inventory: &Inventory) -> f32 { + let protection = inventory + .equipped_items() + .filter_map(|item| { + if let ItemKind::Armor(armor) = &item.kind() { + Some(armor.get_poise_resilience()) + } else { + None + } + }) + .map(|protection| match protection { + Protection::Normal(protection) => Some(protection), + Protection::Invincible => None, + }) + .sum::>(); + match protection { + Some(dr) => dr / (60.0 + dr.abs()), + None => 1.0, + } + } +} + +impl Component for Poise { + type Storage = DerefFlaggedStorage>; +} diff --git a/common/src/comp/shockwave.rs b/common/src/comp/shockwave.rs index 041d53302a..a844bc29c3 100644 --- a/common/src/comp/shockwave.rs +++ b/common/src/comp/shockwave.rs @@ -1,4 +1,4 @@ -use crate::{uid::Uid, Damage, GroupTarget, Knockback}; +use crate::{comp::PoiseChange, uid::Uid, Damage, GroupTarget, Knockback}; use serde::{Deserialize, Serialize}; use specs::{Component, DerefFlaggedStorage}; use specs_idvs::IdvStorage; @@ -9,7 +9,7 @@ pub struct Properties { pub angle: f32, pub vertical_angle: f32, pub speed: f32, - pub damages: Vec<(Option, Damage)>, + pub effects: Vec<(Option, Damage, PoiseChange)>, pub knockback: Knockback, pub requires_ground: bool, pub duration: Duration, diff --git a/common/src/effect.rs b/common/src/effect.rs index 9e123de118..aca9cf0ca8 100644 --- a/common/src/effect.rs +++ b/common/src/effect.rs @@ -5,6 +5,7 @@ use serde::{Deserialize, Serialize}; #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)] pub enum Effect { Health(comp::HealthChange), + PoiseChange(comp::PoiseChange), Damage(combat::Damage), Buff(BuffEffect), } @@ -21,6 +22,7 @@ impl Effect { pub fn info(&self) -> String { match self { Effect::Health(c) => format!("{:+} health", c.amount), + Effect::PoiseChange(c) => format!("{:+} poise", c.amount), Effect::Damage(d) => format!("{:+}", d.value), Effect::Buff(e) => format!("{:?} buff", e), } @@ -31,6 +33,9 @@ impl Effect { Effect::Health(change) => { change.amount = (change.amount as f32 * modifier) as i32; }, + Effect::PoiseChange(change) => { + change.amount = (change.amount as f32 * modifier) as i32; + }, Effect::Damage(damage) => { damage.interpolate_damage(modifier, 0.0); }, diff --git a/common/src/event.rs b/common/src/event.rs index cb9aa0d858..d9794c803b 100644 --- a/common/src/event.rs +++ b/common/src/event.rs @@ -36,6 +36,11 @@ pub enum ServerEvent { entity: EcsEntity, change: comp::HealthChange, }, + PoiseChange { + entity: EcsEntity, + change: comp::PoiseChange, + kb_dir: Vec3, + }, Delete(EcsEntity), Destroy { entity: EcsEntity, @@ -98,6 +103,7 @@ pub enum ServerEvent { pos: comp::Pos, stats: comp::Stats, health: comp::Health, + poise: comp::Poise, loadout: comp::inventory::loadout::Loadout, body: comp::Body, agent: Option, diff --git a/common/src/states/basic_melee.rs b/common/src/states/basic_melee.rs index dc3a1e94cd..42cb659afa 100644 --- a/common/src/states/basic_melee.rs +++ b/common/src/states/basic_melee.rs @@ -1,5 +1,8 @@ use crate::{ - comp::{Attacking, CharacterState, EnergyChange, EnergySource, StateUpdate}, + comp::{ + Attacking, CharacterState, EnergyChange, EnergySource, PoiseChange, PoiseSource, + StateUpdate, + }, states::{ behavior::{CharacterBehavior, JoinData}, utils::*, @@ -20,6 +23,8 @@ pub struct StaticData { pub recover_duration: Duration, /// Base damage pub base_damage: u32, + /// Base poise reduction + pub base_poise_damage: u32, /// Knockback pub knockback: f32, /// Max range @@ -89,10 +94,17 @@ impl CharacterBehavior for Data { // Hit attempt data.updater.insert(data.entity, Attacking { - damages: vec![(Some(GroupTarget::OutOfGroup), Damage { - source: DamageSource::Melee, - value: self.static_data.base_damage as f32, - })], + effects: vec![( + Some(GroupTarget::OutOfGroup), + Damage { + source: DamageSource::Melee, + value: self.static_data.base_damage as f32, + }, + PoiseChange { + amount: -(self.static_data.base_poise_damage as i32), + source: PoiseSource::Attack, + }, + )], range: self.static_data.range, max_angle: 180_f32.to_radians(), applied: false, diff --git a/common/src/states/charged_melee.rs b/common/src/states/charged_melee.rs index 21821d3a0c..23648ea051 100644 --- a/common/src/states/charged_melee.rs +++ b/common/src/states/charged_melee.rs @@ -1,5 +1,8 @@ use crate::{ - comp::{Attacking, CharacterState, EnergyChange, EnergySource, StateUpdate}, + comp::{ + Attacking, CharacterState, EnergyChange, EnergySource, PoiseChange, PoiseSource, + StateUpdate, + }, states::{ behavior::{CharacterBehavior, JoinData}, utils::{StageSection, *}, @@ -20,6 +23,10 @@ pub struct StaticData { pub initial_damage: u32, /// How much the damage is scaled by pub scaled_damage: u32, + /// How much poise damage is dealt with no charge + pub initial_poise_damage: u32, + /// How much poise damage is scaled by + pub scaled_poise_damage: u32, /// How much knockback there is with no charge pub initial_knockback: f32, /// How much the knockback is scaled by @@ -153,12 +160,18 @@ impl CharacterBehavior for Data { value: self.static_data.initial_damage as f32 + self.charge_amount * self.static_data.scaled_damage as f32, }; + let poise_damage = PoiseChange { + amount: -(self.static_data.initial_poise_damage as f32 + + self.charge_amount * self.static_data.scaled_poise_damage as f32) + as i32, + source: PoiseSource::Attack, + }; let knockback = self.static_data.initial_knockback + self.charge_amount * self.static_data.scaled_knockback; // Hit attempt data.updater.insert(data.entity, Attacking { - damages: vec![(Some(GroupTarget::OutOfGroup), damage)], + effects: vec![(Some(GroupTarget::OutOfGroup), damage, poise_damage)], range: self.static_data.range, max_angle: self.static_data.max_angle.to_radians(), applied: false, diff --git a/common/src/states/combo_melee.rs b/common/src/states/combo_melee.rs index e432e693ad..da4f080fcf 100644 --- a/common/src/states/combo_melee.rs +++ b/common/src/states/combo_melee.rs @@ -1,5 +1,8 @@ use crate::{ - comp::{Attacking, CharacterState, EnergyChange, EnergySource, StateUpdate}, + comp::{ + Attacking, CharacterState, EnergyChange, EnergySource, PoiseChange, PoiseSource, + StateUpdate, + }, states::{ behavior::{CharacterBehavior, JoinData}, utils::*, @@ -17,6 +20,10 @@ pub struct Stage { pub base_damage: u32, /// Damage scaling per combo pub damage_increase: u32, + /// Initial poise damage of stage + pub base_poise_damage: u32, + /// Poise damage scaling per combo + pub poise_damage_increase: u32, /// Knockback of stage pub knockback: f32, /// Range of attack @@ -40,6 +47,8 @@ impl Stage { stage: self.stage, base_damage: self.base_damage, damage_increase: self.damage_increase, + base_poise_damage: self.base_poise_damage, + poise_damage_increase: self.poise_damage_increase, knockback: self.knockback, range: self.range, angle: self.angle, @@ -50,9 +59,11 @@ impl Stage { } } - pub fn adjusted_by_stats(mut self, power: f32, speed: f32) -> Self { + pub fn adjusted_by_stats(mut self, power: f32, poise_strength: f32, speed: f32) -> Self { self.base_damage = (self.base_damage as f32 * power) as u32; self.damage_increase = (self.damage_increase as f32 * power) as u32; + self.base_poise_damage = (self.base_poise_damage as f32 * poise_strength) as u32; + self.poise_damage_increase = (self.poise_damage_increase as f32 * poise_strength) as u32; self.base_buildup_duration = (self.base_buildup_duration as f32 / speed) as u64; self.base_swing_duration = (self.base_swing_duration as f32 / speed) as u64; self.base_recover_duration = (self.base_recover_duration as f32 / speed) as u64; @@ -163,11 +174,25 @@ impl CharacterBehavior for Data { .scales_from_combo .min(self.combo / self.static_data.num_stages) * self.static_data.stage_data[stage_index].damage_increase; + + let poise_damage = self.static_data.stage_data[stage_index].base_poise_damage + + self + .static_data + .scales_from_combo + .min(self.combo / self.static_data.num_stages) + * self.static_data.stage_data[stage_index].poise_damage_increase; data.updater.insert(data.entity, Attacking { - damages: vec![(Some(GroupTarget::OutOfGroup), Damage { - source: DamageSource::Melee, - value: damage as f32, - })], + effects: vec![( + Some(GroupTarget::OutOfGroup), + Damage { + source: DamageSource::Melee, + value: damage as f32, + }, + PoiseChange { + amount: -(poise_damage as i32), + source: PoiseSource::Attack, + }, + )], range: self.static_data.stage_data[stage_index].range, max_angle: self.static_data.stage_data[stage_index].angle.to_radians(), applied: false, diff --git a/common/src/states/dash_melee.rs b/common/src/states/dash_melee.rs index 597bd33f7b..46fa3c1011 100644 --- a/common/src/states/dash_melee.rs +++ b/common/src/states/dash_melee.rs @@ -1,5 +1,8 @@ use crate::{ - comp::{Attacking, CharacterState, EnergyChange, EnergySource, StateUpdate}, + comp::{ + Attacking, CharacterState, EnergyChange, EnergySource, PoiseChange, PoiseSource, + StateUpdate, + }, states::{ behavior::{CharacterBehavior, JoinData}, utils::*, @@ -17,6 +20,10 @@ pub struct StaticData { pub base_damage: u32, /// How much the attack scales in damage pub scaled_damage: u32, + /// Initial poise damage + pub base_poise_damage: u32, + /// How much the attac scales in poise damage + pub scaled_poise_damage: u32, /// How much the attack knocks the target back initially pub base_knockback: f32, /// How much the attack scales in knockback @@ -130,10 +137,20 @@ impl CharacterBehavior for Data { value: self.static_data.base_damage as f32 + charge_frac * self.static_data.scaled_damage as f32, }; + let poise_damage = PoiseChange { + amount: -(self.static_data.base_poise_damage as f32 + + charge_frac * self.static_data.scaled_poise_damage as f32) + as i32, + source: PoiseSource::Attack, + }; let knockback = self.static_data.base_knockback + charge_frac * self.static_data.scaled_knockback; data.updater.insert(data.entity, Attacking { - damages: vec![(Some(GroupTarget::OutOfGroup), damage)], + effects: vec![( + Some(GroupTarget::OutOfGroup), + damage, + poise_damage, + )], range: self.static_data.range, max_angle: self.static_data.angle.to_radians(), applied: false, diff --git a/common/src/states/leap_melee.rs b/common/src/states/leap_melee.rs index 268cbfefd5..6afabfb583 100644 --- a/common/src/states/leap_melee.rs +++ b/common/src/states/leap_melee.rs @@ -1,5 +1,5 @@ use crate::{ - comp::{Attacking, CharacterState, StateUpdate}, + comp::{Attacking, CharacterState, PoiseChange, PoiseSource, StateUpdate}, states::{ behavior::{CharacterBehavior, JoinData}, utils::{StageSection, *}, @@ -22,6 +22,8 @@ pub struct StaticData { pub recover_duration: Duration, /// Base damage pub base_damage: u32, + /// Base poise damage + pub base_poise_damage: u32, /// Knockback pub knockback: f32, /// Max range @@ -147,10 +149,17 @@ impl CharacterBehavior for Data { if !self.exhausted { // Hit attempt, when animation plays data.updater.insert(data.entity, Attacking { - damages: vec![(Some(GroupTarget::OutOfGroup), Damage { - source: DamageSource::Melee, - value: self.static_data.base_damage as f32, - })], + effects: vec![( + Some(GroupTarget::OutOfGroup), + Damage { + source: DamageSource::Melee, + value: self.static_data.base_damage as f32, + }, + PoiseChange { + amount: -(self.static_data.base_poise_damage as i32), + source: PoiseSource::Attack, + }, + )], range: self.static_data.range, max_angle: self.static_data.max_angle.to_radians(), applied: false, diff --git a/common/src/states/mod.rs b/common/src/states/mod.rs index d5a1c5e4fe..6d8ac0ab11 100644 --- a/common/src/states/mod.rs +++ b/common/src/states/mod.rs @@ -21,5 +21,6 @@ pub mod shockwave; pub mod sit; pub mod sneak; pub mod spin_melee; +pub mod stunned; pub mod utils; pub mod wielding; diff --git a/common/src/states/shockwave.rs b/common/src/states/shockwave.rs index 8d0b7270e6..f166ad5444 100644 --- a/common/src/states/shockwave.rs +++ b/common/src/states/shockwave.rs @@ -1,5 +1,5 @@ use crate::{ - comp::{shockwave, CharacterState, StateUpdate}, + comp::{shockwave, CharacterState, PoiseChange, PoiseSource, StateUpdate}, event::ServerEvent, states::{ behavior::{CharacterBehavior, JoinData}, @@ -21,6 +21,8 @@ pub struct StaticData { pub recover_duration: Duration, /// Base damage pub damage: u32, + /// Base poise damage + pub poise_damage: u32, /// Knockback pub knockback: Knockback, /// Angle of the shockwave @@ -83,10 +85,17 @@ impl CharacterBehavior for Data { vertical_angle: self.static_data.shockwave_vertical_angle, speed: self.static_data.shockwave_speed, duration: self.static_data.shockwave_duration, - damages: vec![(Some(GroupTarget::OutOfGroup), Damage { - source: DamageSource::Shockwave, - value: self.static_data.damage as f32, - })], + effects: vec![( + Some(GroupTarget::OutOfGroup), + Damage { + source: DamageSource::Shockwave, + value: self.static_data.damage as f32, + }, + PoiseChange { + amount: -(self.static_data.poise_damage as i32), + source: PoiseSource::Attack, + }, + )], knockback: self.static_data.knockback, requires_ground: self.static_data.requires_ground, owner: Some(*data.uid), diff --git a/common/src/states/spin_melee.rs b/common/src/states/spin_melee.rs index 9d301f3e6c..12072b3484 100644 --- a/common/src/states/spin_melee.rs +++ b/common/src/states/spin_melee.rs @@ -1,5 +1,8 @@ use crate::{ - comp::{Attacking, CharacterState, EnergyChange, EnergySource, StateUpdate}, + comp::{ + Attacking, CharacterState, EnergyChange, EnergySource, PoiseChange, PoiseSource, + StateUpdate, + }, consts::GRAVITY, states::{ behavior::{CharacterBehavior, JoinData}, @@ -22,6 +25,8 @@ pub struct StaticData { pub recover_duration: Duration, /// Base damage pub base_damage: u32, + /// Base poise damage + pub base_poise_damage: u32, /// Knockback pub knockback: f32, /// Range @@ -111,10 +116,17 @@ impl CharacterBehavior for Data { }); // Hit attempt data.updater.insert(data.entity, Attacking { - damages: vec![(Some(GroupTarget::OutOfGroup), Damage { - source: DamageSource::Melee, - value: self.static_data.base_damage as f32, - })], + effects: vec![( + Some(GroupTarget::OutOfGroup), + Damage { + source: DamageSource::Melee, + value: self.static_data.base_damage as f32, + }, + PoiseChange { + amount: -(self.static_data.base_poise_damage as i32), + source: PoiseSource::Attack, + }, + )], range: self.static_data.range, max_angle: 180_f32.to_radians(), applied: false, diff --git a/common/src/states/stunned.rs b/common/src/states/stunned.rs new file mode 100644 index 0000000000..64bd813515 --- /dev/null +++ b/common/src/states/stunned.rs @@ -0,0 +1,92 @@ +use super::utils::*; +use crate::{ + comp::{CharacterState, PoiseState, StateUpdate}, + states::behavior::{CharacterBehavior, JoinData}, +}; +use serde::{Deserialize, Serialize}; +use std::time::Duration; + +/// Separated out to condense update portions of character state +#[derive(Copy, Clone, Debug, PartialEq, Serialize, Deserialize)] +pub struct StaticData { + /// How long until state begins to exit + pub buildup_duration: Duration, + /// How long the state has until exiting + pub recover_duration: Duration, + /// Fraction of normal movement speed allowed during the state + pub movement_speed: f32, + /// Poise state (used for determining animation in the client) + pub poise_state: PoiseState, +} + +#[derive(Copy, Clone, Debug, PartialEq, Serialize, Deserialize)] +pub struct Data { + /// Struct containing data that does not change over the course of the + /// character state + pub static_data: StaticData, + /// Timer for each stage + pub timer: Duration, + /// What section the character stage is in + pub stage_section: StageSection, + /// Whether the character was wielding or not + pub was_wielded: bool, +} + +impl CharacterBehavior for Data { + fn behavior(&self, data: &JoinData) -> StateUpdate { + let mut update = StateUpdate::from(data); + + handle_move(data, &mut update, self.static_data.movement_speed); + + match self.stage_section { + StageSection::Buildup => { + if self.timer < self.static_data.buildup_duration { + // Build up + update.character = CharacterState::Stunned(Data { + timer: self + .timer + .checked_add(Duration::from_secs_f32(data.dt.0)) + .unwrap_or_default(), + ..*self + }); + } else { + // Transitions to recovery section of stage + update.character = CharacterState::Stunned(Data { + timer: Duration::default(), + stage_section: StageSection::Recover, + ..*self + }); + } + }, + StageSection::Recover => { + if self.timer < self.static_data.recover_duration { + // Recovery + update.character = CharacterState::Stunned(Data { + timer: self + .timer + .checked_add(Duration::from_secs_f32(data.dt.0)) + .unwrap_or_default(), + ..*self + }); + } else { + // Done + if self.was_wielded { + update.character = CharacterState::Wielding; + } else { + update.character = CharacterState::Idle; + } + } + }, + _ => { + // If it somehow ends up in an incorrect stage section + if self.was_wielded { + update.character = CharacterState::Wielding; + } else { + update.character = CharacterState::Idle; + } + }, + } + + update + } +} diff --git a/common/sys/src/beam.rs b/common/sys/src/beam.rs index 3ab6cc6612..d38699d7b9 100644 --- a/common/sys/src/beam.rs +++ b/common/sys/src/beam.rs @@ -167,7 +167,6 @@ impl<'a> System<'a> for Sys { // Modify damage let change = damage.modify_damage(inventories.get(b), beam_segment.owner); - match target { Some(GroupTarget::OutOfGroup) => { server_emitter.emit(ServerEvent::Damage { entity: b, change }); diff --git a/common/sys/src/character_behavior.rs b/common/sys/src/character_behavior.rs index 37a055060a..2b6b793c82 100644 --- a/common/sys/src/character_behavior.rs +++ b/common/sys/src/character_behavior.rs @@ -4,7 +4,7 @@ use common::{ comp::{ inventory::slot::{EquipSlot, Slot}, Attacking, Beam, Body, CharacterState, Controller, Energy, Health, Inventory, Mounting, - Ori, PhysicsState, Pos, StateUpdate, Stats, Vel, + Ori, PhysicsState, Poise, PoiseState, Pos, StateUpdate, Stats, Vel, }, event::{EventBus, LocalEvent, ServerEvent}, metrics::SysMetrics, @@ -16,6 +16,7 @@ use common::{ }, uid::{Uid, UidAllocator}, }; +use std::time::Duration; fn incorporate_update(tuple: &mut JoinTuple, state_update: StateUpdate) { // TODO: if checking equality is expensive use optional field in StateUpdate @@ -65,6 +66,7 @@ impl<'a> System<'a> for Sys { WriteStorage<'a, Inventory>, WriteStorage<'a, Controller>, ReadStorage<'a, Health>, + WriteStorage<'a, Poise>, ReadStorage<'a, Body>, ReadStorage<'a, PhysicsState>, ReadStorage<'a, Attacking>, @@ -93,6 +95,7 @@ impl<'a> System<'a> for Sys { mut inventories, mut controllers, healths, + mut poises, bodies, physics_states, attacking_storage, @@ -141,6 +144,88 @@ impl<'a> System<'a> for Sys { continue; } + // Enter stunned state if poise damage is enough + if let Some(mut poise) = poises.get_mut(tuple.0) { + let was_wielded = tuple.2.get_unchecked().is_wield(); + let poise_state = poise.poise_state(); + match poise_state { + PoiseState::Normal => {}, + PoiseState::Interrupted => { + poise.reset(); + *tuple.2.get_mut_unchecked() = + CharacterState::Stunned(common::states::stunned::Data { + static_data: common::states::stunned::StaticData { + buildup_duration: Duration::from_millis(150), + recover_duration: Duration::from_millis(150), + movement_speed: 0.4, + poise_state, + }, + timer: Duration::default(), + stage_section: common::states::utils::StageSection::Buildup, + was_wielded, + }); + }, + PoiseState::Stunned => { + poise.reset(); + *tuple.2.get_mut_unchecked() = + CharacterState::Stunned(common::states::stunned::Data { + static_data: common::states::stunned::StaticData { + buildup_duration: Duration::from_millis(500), + recover_duration: Duration::from_millis(500), + movement_speed: 0.1, + poise_state, + }, + timer: Duration::default(), + stage_section: common::states::utils::StageSection::Buildup, + was_wielded, + }); + server_emitter.emit(ServerEvent::Knockback { + entity: tuple.0, + impulse: 5.0 * poise.knockback(), + }); + }, + PoiseState::Dazed => { + poise.reset(); + *tuple.2.get_mut_unchecked() = + CharacterState::Stunned(common::states::stunned::Data { + static_data: common::states::stunned::StaticData { + buildup_duration: Duration::from_millis(1000), + recover_duration: Duration::from_millis(1000), + movement_speed: 0.0, + poise_state, + }, + timer: Duration::default(), + stage_section: common::states::utils::StageSection::Buildup, + was_wielded, + }); + server_emitter.emit(ServerEvent::Knockback { + entity: tuple.0, + impulse: 10.0 * poise.knockback(), + }); + }, + PoiseState::KnockedDown => { + poise.reset(); + *tuple.2.get_mut_unchecked() = + CharacterState::Stunned(common::states::stunned::Data { + static_data: common::states::stunned::StaticData { + buildup_duration: Duration::from_millis(3000), + recover_duration: Duration::from_millis(500), + movement_speed: 0.0, + poise_state, + }, + timer: Duration::default(), + stage_section: common::states::utils::StageSection::Buildup, + was_wielded, + }); + server_emitter.emit(ServerEvent::Knockback { + entity: tuple.0, + impulse: 10.0 * poise.knockback(), + }); + }, + } + } + + // Controller actions let actions = std::mem::replace(&mut tuple.8.actions, Vec::new()); for action in actions { let j = JoinData::new(&tuple, &updater, &dt); @@ -151,6 +236,7 @@ impl<'a> System<'a> for Sys { CharacterState::GlideWield => { states::glide_wield::Data.handle_event(&j, action) }, + CharacterState::Stunned(data) => data.handle_event(&j, action), CharacterState::Sit => { states::sit::Data::handle_event(&states::sit::Data, &j, action) }, @@ -191,6 +277,7 @@ impl<'a> System<'a> for Sys { CharacterState::Climb => states::climb::Data.behavior(&j), CharacterState::Glide => states::glide::Data.behavior(&j), CharacterState::GlideWield => states::glide_wield::Data.behavior(&j), + CharacterState::Stunned(data) => data.behavior(&j), CharacterState::Sit => states::sit::Data::behavior(&states::sit::Data, &j), CharacterState::Dance => states::dance::Data::behavior(&states::dance::Data, &j), CharacterState::Sneak => states::sneak::Data::behavior(&states::sneak::Data, &j), diff --git a/common/sys/src/melee.rs b/common/sys/src/melee.rs index dffb3b4407..f1c2810c0a 100644 --- a/common/sys/src/melee.rs +++ b/common/sys/src/melee.rs @@ -118,7 +118,7 @@ impl<'a> System<'a> for Sys { GroupTarget::OutOfGroup }; - for (target, damage) in attack.damages.iter() { + for (target, damage, poise_change) in attack.effects.iter() { if let Some(target) = target { if *target != target_group || (!matches!(target, GroupTarget::InGroup) && is_dodge) @@ -130,6 +130,7 @@ impl<'a> System<'a> for Sys { let change = damage.modify_damage(inventories.get(b), Some(*uid)); server_emitter.emit(ServerEvent::Damage { entity: b, change }); + // Apply bleeding buff on melee hits with 10% chance // TODO: Don't have buff uniformly applied on all melee attacks if change.amount < 0 && thread_rng().gen::() < 0.1 { @@ -147,12 +148,22 @@ impl<'a> System<'a> for Sys { )), }); } + let kb_dir = Dir::new((pos_b.0 - pos.0).try_normalized().unwrap_or(*ori.0)); let impulse = attack.knockback.calculate_impulse(kb_dir); if !impulse.is_approx_zero() { server_emitter.emit(ServerEvent::Knockback { entity: b, impulse }); } + let poise_change = poise_change.modify_poise_damage(inventories.get(b)); + if poise_change.amount.abs() > 0 { + server_emitter.emit(ServerEvent::PoiseChange { + entity: b, + change: poise_change, + kb_dir: *kb_dir, + }); + } + attack.hit_count += 1; } } diff --git a/common/sys/src/shockwave.rs b/common/sys/src/shockwave.rs index 8db1047a44..8c7d72e9c3 100644 --- a/common/sys/src/shockwave.rs +++ b/common/sys/src/shockwave.rs @@ -191,7 +191,7 @@ impl<'a> System<'a> for Sys { && (!shockwave.requires_ground || physics_state_b.on_ground); if hit { - for (target, damage) in shockwave.damages.iter() { + for (target, damage, poise_damage) in shockwave.effects.iter() { if let Some(target) = target { if *target != target_group { continue; @@ -200,6 +200,7 @@ impl<'a> System<'a> for Sys { let owner_uid = shockwave.owner.unwrap_or(*uid); let change = damage.modify_damage(inventories.get(b), Some(owner_uid)); + let poise_change = poise_damage.modify_poise_damage(inventories.get(b)); server_emitter.emit(ServerEvent::Damage { entity: b, change }); shockwave_hit_list.hit_entities.push(*uid_b); @@ -209,6 +210,11 @@ impl<'a> System<'a> for Sys { if !impulse.is_approx_zero() { server_emitter.emit(ServerEvent::Knockback { entity: b, impulse }); } + server_emitter.emit(ServerEvent::PoiseChange { + entity: b, + change: poise_change, + kb_dir: *kb_dir, + }); } } } diff --git a/common/sys/src/state.rs b/common/sys/src/state.rs index e16af077e9..c5ba883d4c 100644 --- a/common/sys/src/state.rs +++ b/common/sys/src/state.rs @@ -116,6 +116,7 @@ impl State { ecs.register::(); ecs.register::(); ecs.register::(); + ecs.register::(); ecs.register::(); ecs.register::(); ecs.register::(); diff --git a/common/sys/src/stats.rs b/common/sys/src/stats.rs index 26137611b5..111a93089d 100644 --- a/common/sys/src/stats.rs +++ b/common/sys/src/stats.rs @@ -1,7 +1,8 @@ use common::{ comp::{ skills::{GeneralSkill, Skill}, - Body, CharacterState, Energy, EnergyChange, EnergySource, Health, Pos, Stats, + Body, CharacterState, Energy, EnergyChange, EnergySource, Health, Poise, PoiseChange, + PoiseSource, Pos, Stats, }, event::{EventBus, ServerEvent}, metrics::SysMetrics, @@ -12,8 +13,10 @@ use common::{ }; use hashbrown::HashSet; use specs::{Entities, Join, Read, ReadExpect, ReadStorage, System, Write, WriteStorage}; +use vek::Vec3; const ENERGY_REGEN_ACCEL: f32 = 10.0; +const POISE_REGEN_ACCEL: f32 = 2.0; /// This system kills players, levels them up, and regenerates energy. pub struct Sys; @@ -24,9 +27,10 @@ impl<'a> System<'a> for Sys { Read<'a, DeltaTime>, Read<'a, EventBus>, ReadExpect<'a, SysMetrics>, - ReadStorage<'a, CharacterState>, + WriteStorage<'a, CharacterState>, WriteStorage<'a, Stats>, WriteStorage<'a, Health>, + WriteStorage<'a, Poise>, WriteStorage<'a, Energy>, ReadStorage<'a, Uid>, ReadStorage<'a, Pos>, @@ -44,6 +48,7 @@ impl<'a> System<'a> for Sys { character_states, mut stats, mut healths, + mut poises, mut energies, uids, positions, @@ -57,10 +62,15 @@ impl<'a> System<'a> for Sys { // Increment last change timer healths.set_event_emission(false); // avoid unnecessary syncing + poises.set_event_emission(false); // avoid unnecessary syncing for mut health in (&mut healths).join() { health.last_change.0 += f64::from(dt.0); } + for mut poise in (&mut poises).join() { + poise.last_change.0 += f64::from(dt.0); + } healths.set_event_emission(true); + poises.set_event_emission(true); // Update stats for (entity, uid, mut stats, mut health, pos) in ( @@ -147,9 +157,13 @@ impl<'a> System<'a> for Sys { } } - // Update energies - for (character_state, mut energy) in - (&character_states, &mut energies.restrict_mut()).join() + // Update energies and poises + for (character_state, mut energy, mut poise) in ( + &character_states, + &mut energies.restrict_mut(), + &mut poises.restrict_mut(), + ) + .join() { match character_state { // Accelerate recharging energy. @@ -179,6 +193,26 @@ impl<'a> System<'a> for Sys { energy.regen_rate = (energy.regen_rate + ENERGY_REGEN_ACCEL * dt.0).min(100.0); } + + let res_poise = { + let poise = poise.get_unchecked(); + poise.current() < poise.maximum() + }; + + if res_poise { + let mut poise = poise.get_mut_unchecked(); + let poise = &mut *poise; + poise.change_by( + PoiseChange { + amount: (poise.regen_rate * dt.0 + + POISE_REGEN_ACCEL * dt.0.powi(2) / 2.0) + as i32, + source: PoiseSource::Regen, + }, + Vec3::zero(), + ); + poise.regen_rate = (poise.regen_rate + POISE_REGEN_ACCEL * dt.0).min(10.0); + } }, // Ability and glider use does not regen and sets the rate back to zero. CharacterState::Glide { .. } @@ -214,9 +248,12 @@ impl<'a> System<'a> for Sys { }, // Non-combat abilities that consume energy; // temporarily stall energy gain, but preserve regen_rate. - CharacterState::Roll { .. } | CharacterState::Climb { .. } => {}, + CharacterState::Roll { .. } + | CharacterState::Climb { .. } + | CharacterState::Stunned { .. } => {}, } } + sys_metrics.stats_ns.store( start_time.elapsed().as_nanos() as u64, std::sync::atomic::Ordering::Relaxed, diff --git a/server/src/cmd.rs b/server/src/cmd.rs index 0f50f4fa9c..baa017914a 100644 --- a/server/src/cmd.rs +++ b/server/src/cmd.rs @@ -825,6 +825,7 @@ fn handle_spawn( npc::BodyType::from_body(body), )), comp::Health::new(body, 1), + comp::Poise::new(body), inventory, body, ) @@ -932,10 +933,11 @@ fn handle_spawn_training_dummy( let stats = comp::Stats::new("Training Dummy".to_string()); let health = comp::Health::new(body, 0); + let poise = comp::Poise::new(body); server .state - .create_npc(pos, stats, health, Inventory::new_empty(), body) + .create_npc(pos, stats, health, poise, Inventory::new_empty(), body) .with(comp::Vel(vel)) .with(comp::MountState::Unmounted) .build(); diff --git a/server/src/events/entity_creation.rs b/server/src/events/entity_creation.rs index 2e6154a69d..03fa9dd55a 100644 --- a/server/src/events/entity_creation.rs +++ b/server/src/events/entity_creation.rs @@ -9,7 +9,7 @@ use common::{ group, inventory::loadout::Loadout, shockwave, Agent, Alignment, Body, Gravity, Health, HomeChunk, Inventory, Item, ItemDrop, - LightEmitter, Ori, Pos, Projectile, Scale, Stats, Vel, WaypointArea, + LightEmitter, Ori, Poise, Pos, Projectile, Scale, Stats, Vel, WaypointArea, }, outcome::Outcome, rtsim::RtSimEntity, @@ -49,6 +49,7 @@ pub fn handle_create_npc( pos: Pos, stats: Stats, health: Health, + poise: Poise, loadout: Loadout, body: Body, agent: impl Into>, @@ -71,7 +72,7 @@ pub fn handle_create_npc( let entity = server .state - .create_npc(pos, stats, health, inventory, body) + .create_npc(pos, stats, health, poise, inventory, body) .with(scale) .with(alignment); diff --git a/server/src/events/entity_manipulation.rs b/server/src/events/entity_manipulation.rs index d8aad62ceb..7c8e31ca2d 100644 --- a/server/src/events/entity_manipulation.rs +++ b/server/src/events/entity_manipulation.rs @@ -13,8 +13,8 @@ use common::{ comp::{ self, aura, buff, chat::{KillSource, KillType}, - object, Alignment, Body, Energy, EnergyChange, Group, Health, HealthChange, HealthSource, - Inventory, Item, Player, Pos, Stats, + object, Alignment, Body, CharacterState, Energy, EnergyChange, Group, Health, HealthChange, + HealthSource, Inventory, Item, Player, Poise, PoiseChange, PoiseSource, Pos, Stats, }, effect::Effect, lottery::Lottery, @@ -34,6 +34,23 @@ use specs::{join::Join, saveload::MarkerAllocator, Entity as EcsEntity, WorldExt use tracing::error; use vek::Vec3; +pub fn handle_poise( + server: &Server, + entity: EcsEntity, + change: PoiseChange, + knockback_dir: Vec3, +) { + let ecs = &server.state.ecs(); + if let Some(character_state) = ecs.read_storage::().get(entity) { + // Entity is invincible to poise change during stunned/staggered character state + if !character_state.is_stunned() { + if let Some(mut poise) = ecs.write_storage::().get_mut(entity) { + poise.change_by(change, knockback_dir); + } + } + } +} + pub fn handle_damage(server: &Server, entity: EcsEntity, change: HealthChange) { let ecs = &server.state.ecs(); if let Some(mut health) = ecs.write_storage::().get_mut(entity) { @@ -58,7 +75,7 @@ pub fn handle_knockback(server: &Server, entity: EcsEntity, impulse: Vec3) } let mut velocities = ecs.write_storage::(); if let Some(vel) = velocities.get_mut(entity) { - vel.0 = impulse; + vel.0 += impulse; } if let Some(client) = clients.get(entity) { client.send_fallible(ServerGeneral::Knockback(impulse)); @@ -419,6 +436,7 @@ pub fn handle_destroy(server: &mut Server, entity: EcsEntity, cause: HealthSourc }; let pos = state.ecs().read_storage::().get(entity).cloned(); + let vel = state.ecs().read_storage::().get(entity).cloned(); if let Some(pos) = pos { let _ = state .create_object(comp::Pos(pos.0 + Vec3::unit_z() * 0.25), match old_body { @@ -428,6 +446,7 @@ pub fn handle_destroy(server: &mut Server, entity: EcsEntity, cause: HealthSourc | Some(common::comp::Body::QuadrupedLow(_)) => object::Body::MeatDrop, _ => object::Body::Steak, }) + .maybe_with(vel) .with(item) .build(); } else { @@ -482,16 +501,26 @@ pub fn handle_delete(server: &mut Server, entity: EcsEntity) { pub fn handle_land_on_ground(server: &Server, entity: EcsEntity, vel: Vec3) { let state = &server.state; if vel.z <= -30.0 { + let falldmg = (vel.z.powi(2) / 20.0 - 40.0) * 10.0; + let inventories = state.ecs().read_storage::(); + // Handle health change if let Some(mut health) = state.ecs().write_storage::().get_mut(entity) { - let falldmg = (vel.z.powi(2) / 20.0 - 40.0) * 10.0; let damage = Damage { source: DamageSource::Falling, value: falldmg, }; - let inventories = state.ecs().read_storage::(); let change = damage.modify_damage(inventories.get(entity), None); health.change_by(change); } + // Handle poise change + if let Some(mut poise) = state.ecs().write_storage::().get_mut(entity) { + let poise_damage = PoiseChange { + amount: -(falldmg / 2.0) as i32, + source: PoiseSource::Falling, + }; + let poise_change = poise_damage.modify_poise_damage(inventories.get(entity)); + poise.change_by(poise_change, Vec3::unit_z()); + } } } diff --git a/server/src/events/mod.rs b/server/src/events/mod.rs index cd747048b9..5c98f18a25 100644 --- a/server/src/events/mod.rs +++ b/server/src/events/mod.rs @@ -9,7 +9,7 @@ use entity_creation::{ }; use entity_manipulation::{ handle_aura, handle_buff, handle_damage, handle_delete, handle_destroy, handle_energy_change, - handle_explosion, handle_knockback, handle_land_on_ground, handle_respawn, + handle_explosion, handle_knockback, handle_land_on_ground, handle_poise, handle_respawn, }; use group_manip::handle_group; use interaction::{handle_lantern, handle_mount, handle_possess, handle_unmount}; @@ -83,6 +83,11 @@ impl Server { handle_knockback(&self, entity, impulse) }, ServerEvent::Damage { entity, change } => handle_damage(&self, entity, change), + ServerEvent::PoiseChange { + entity, + change, + kb_dir, + } => handle_poise(&self, entity, change, kb_dir), ServerEvent::Delete(entity) => handle_delete(self, entity), ServerEvent::Destroy { entity, cause } => handle_destroy(self, entity, cause), ServerEvent::InventoryManip(entity, manip) => handle_inventory(self, entity, manip), @@ -110,6 +115,7 @@ impl Server { pos, stats, health, + poise, loadout, body, agent, @@ -123,6 +129,7 @@ impl Server { pos, stats, health, + poise, loadout, body, agent, diff --git a/server/src/migrations/2021-01-25-202618_starter_gear/down.sql b/server/src/migrations/2021-01-25-202618_starter_gear/down.sql new file mode 100644 index 0000000000..c65a41ea9c --- /dev/null +++ b/server/src/migrations/2021-01-25-202618_starter_gear/down.sql @@ -0,0 +1,10 @@ +UPDATE item +SET item_definition_id = 'common.items.armor.starter.glider' WHERE item_definition_id = 'common.items.glider.glider_cloverleaf'; +UPDATE item +SET item_definition_id = 'common.items.armor.starter.lantern' WHERE item_definition_id = 'common.items.lantern.black_0'; +UPDATE item +SET item_definition_id = 'common.items.armor.starter.rugged_chest' WHERE item_definition_id = 'common.items.armor.chest.rugged'; +UPDATE item +SET item_definition_id = 'common.items.armor.starter.rugged_pants' WHERE item_definition_id = 'common.items.armor.pants.rugged'; +UPDATE item +SET item_definition_id = 'common.items.armor.starter.sandals_0' WHERE item_definition_id = 'common.items.armor.foot.sandals_0'; diff --git a/server/src/migrations/2021-01-25-202618_starter_gear/up.sql b/server/src/migrations/2021-01-25-202618_starter_gear/up.sql new file mode 100644 index 0000000000..90daadce5b --- /dev/null +++ b/server/src/migrations/2021-01-25-202618_starter_gear/up.sql @@ -0,0 +1,10 @@ +UPDATE item +SET item_definition_id = 'common.items.glider.glider_cloverleaf' WHERE item_definition_id = 'common.items.armor.starter.glider'; +UPDATE item +SET item_definition_id = 'common.items.lantern.black_0' WHERE item_definition_id = 'common.items.armor.starter.lantern'; +UPDATE item +SET item_definition_id = 'common.items.armor.chest.rugged' WHERE item_definition_id = 'common.items.armor.starter.rugged_chest'; +UPDATE item +SET item_definition_id = 'common.items.armor.pants.rugged' WHERE item_definition_id = 'common.items.armor.starter.rugged_pants'; +UPDATE item +SET item_definition_id = 'common.items.armor.foot.sandals_0' WHERE item_definition_id = 'common.items.armor.starter.sandals_0'; diff --git a/server/src/rtsim/tick.rs b/server/src/rtsim/tick.rs index bc8631ca16..9a92926740 100644 --- a/server/src/rtsim/tick.rs +++ b/server/src/rtsim/tick.rs @@ -103,6 +103,7 @@ impl<'a> System<'a> for Sys { comp::Body::Humanoid(_) => entity.get_loadout(), _ => LoadoutBuilder::new().build(), }, + poise: comp::Poise::new(body), body, agent: Some(comp::Agent::new( None, diff --git a/server/src/state_ext.rs b/server/src/state_ext.rs index cc5c98b296..aed6f77790 100644 --- a/server/src/state_ext.rs +++ b/server/src/state_ext.rs @@ -35,6 +35,7 @@ pub trait StateExt { pos: comp::Pos, stats: comp::Stats, health: comp::Health, + poise: comp::Poise, inventory: comp::Inventory, body: comp::Body, ) -> EcsEntityBuilder; @@ -95,6 +96,23 @@ impl StateExt for State { .get_mut(entity) .map(|mut health| health.change_by(change)); }, + Effect::PoiseChange(poise_damage) => { + let inventories = self.ecs().read_storage::(); + let change = poise_damage.modify_poise_damage(inventories.get(entity)); + // Check to make sure the entity is not already stunned + if let Some(character_state) = self + .ecs() + .read_storage::() + .get(entity) + { + if !character_state.is_stunned() { + self.ecs() + .write_storage::() + .get_mut(entity) + .map(|mut poise| poise.change_by(change, Vec3::zero())); + } + } + }, Effect::Buff(buff) => { self.ecs() .write_storage::() @@ -116,6 +134,7 @@ impl StateExt for State { pos: comp::Pos, stats: comp::Stats, health: comp::Health, + poise: comp::Poise, inventory: comp::Inventory, body: comp::Body, ) -> EcsEntityBuilder { @@ -149,6 +168,7 @@ impl StateExt for State { )) .with(stats) .with(health) + .with(poise) .with(comp::Alignment::Npc) .with(comp::Gravity(1.0)) .with(comp::CharacterState::default()) @@ -292,6 +312,7 @@ impl StateExt for State { ); self.write_component(entity, comp::Health::new(body, health_level)); self.write_component(entity, comp::Energy::new(body, energy_level)); + self.write_component(entity, comp::Poise::new(body)); self.write_component(entity, stats); self.write_component(entity, inventory); self.write_component( diff --git a/server/src/sys/object.rs b/server/src/sys/object.rs index 332794a6b6..ae577b40e0 100644 --- a/server/src/sys/object.rs +++ b/server/src/sys/object.rs @@ -1,5 +1,5 @@ use common::{ - comp::{HealthSource, Object, PhysicsState, Pos, Vel}, + comp::{HealthSource, Object, PhysicsState, PoiseChange, PoiseSource, Pos, Vel}, effect::Effect, event::{EventBus, ServerEvent}, resources::DeltaTime, @@ -56,6 +56,13 @@ impl<'a> System<'a> for Sys { value: 500.0, }), ), + RadiusEffect::Entity( + None, + Effect::PoiseChange(PoiseChange { + source: PoiseSource::Explosion, + amount: -100, + }), + ), RadiusEffect::TerrainDestruction(4.0), ], radius: 12.0, @@ -83,6 +90,13 @@ impl<'a> System<'a> for Sys { value: 50.0, }), ), + RadiusEffect::Entity( + None, + Effect::PoiseChange(PoiseChange { + source: PoiseSource::Explosion, + amount: -40, + }), + ), RadiusEffect::TerrainDestruction(4.0), ], radius: 12.0, diff --git a/server/src/sys/sentinel.rs b/server/src/sys/sentinel.rs index f3c5daee58..01ffd0b25d 100644 --- a/server/src/sys/sentinel.rs +++ b/server/src/sys/sentinel.rs @@ -2,8 +2,8 @@ use super::SysTimer; use common::{ comp::{ Auras, BeamSegment, Body, Buffs, CanBuild, CharacterState, Collider, Energy, Gravity, - Group, Health, Inventory, Item, LightEmitter, Mass, MountState, Mounting, Ori, Player, Pos, - Scale, Shockwave, Stats, Sticky, Vel, + Group, Health, Inventory, Item, LightEmitter, Mass, MountState, Mounting, Ori, Player, + Poise, Pos, Scale, Shockwave, Stats, Sticky, Vel, }, span, uid::Uid, @@ -51,6 +51,7 @@ pub struct TrackedComps<'a> { pub auras: ReadStorage<'a, Auras>, pub energy: ReadStorage<'a, Energy>, pub health: ReadStorage<'a, Health>, + pub poise: ReadStorage<'a, Poise>, pub can_build: ReadStorage<'a, CanBuild>, pub light_emitter: ReadStorage<'a, LightEmitter>, pub item: ReadStorage<'a, Item>, @@ -107,6 +108,10 @@ impl<'a> TrackedComps<'a> { .get(entity) .cloned() .map(|c| comps.push(c.into())); + self.poise + .get(entity) + .cloned() + .map(|c| comps.push(c.into())); self.can_build .get(entity) .cloned() @@ -179,6 +184,7 @@ pub struct ReadTrackers<'a> { pub auras: ReadExpect<'a, UpdateTracker>, pub energy: ReadExpect<'a, UpdateTracker>, pub health: ReadExpect<'a, UpdateTracker>, + pub poise: ReadExpect<'a, UpdateTracker>, pub can_build: ReadExpect<'a, UpdateTracker>, pub light_emitter: ReadExpect<'a, UpdateTracker>, pub inventory: ReadExpect<'a, UpdateTracker>, @@ -212,6 +218,7 @@ impl<'a> ReadTrackers<'a> { .with_component(&comps.uid, &*self.auras, &comps.auras, filter) .with_component(&comps.uid, &*self.energy, &comps.energy, filter) .with_component(&comps.uid, &*self.health, &comps.health, filter) + .with_component(&comps.uid, &*self.poise, &comps.poise, filter) .with_component(&comps.uid, &*self.can_build, &comps.can_build, filter) .with_component( &comps.uid, @@ -252,6 +259,7 @@ pub struct WriteTrackers<'a> { auras: WriteExpect<'a, UpdateTracker>, energy: WriteExpect<'a, UpdateTracker>, health: WriteExpect<'a, UpdateTracker>, + poise: WriteExpect<'a, UpdateTracker>, can_build: WriteExpect<'a, UpdateTracker>, light_emitter: WriteExpect<'a, UpdateTracker>, item: WriteExpect<'a, UpdateTracker>, @@ -279,6 +287,7 @@ fn record_changes(comps: &TrackedComps, trackers: &mut WriteTrackers) { trackers.auras.record_changes(&comps.auras); trackers.energy.record_changes(&comps.energy); trackers.health.record_changes(&comps.health); + trackers.poise.record_changes(&comps.poise); trackers.can_build.record_changes(&comps.can_build); trackers.light_emitter.record_changes(&comps.light_emitter); trackers.item.record_changes(&comps.item); @@ -319,6 +328,7 @@ fn record_changes(comps: &TrackedComps, trackers: &mut WriteTrackers) { log_counts!(stats, "Stats"); log_counts!(energy, "Energies"); log_vounts!(health, "Healths"); + log_vounts!(poise, "Poises"); log_counts!(light_emitter, "Light emitters"); log_counts!(item, "Items"); log_counts!(scale, "Scales"); @@ -344,6 +354,7 @@ pub fn register_trackers(world: &mut World) { world.register_tracker::(); world.register_tracker::(); world.register_tracker::(); + world.register_tracker::(); world.register_tracker::(); world.register_tracker::(); world.register_tracker::(); diff --git a/server/src/sys/terrain.rs b/server/src/sys/terrain.rs index 1b6c2000f1..6c493baf7b 100644 --- a/server/src/sys/terrain.rs +++ b/server/src/sys/terrain.rs @@ -152,6 +152,7 @@ impl<'a> System<'a> for Sys { LoadoutBuilder::build_loadout(body, main_tool, loadout_config).build(); let health = comp::Health::new(body, entity.level.unwrap_or(0)); + let poise = comp::Poise::new(body); let can_speak = match body { comp::Body::Humanoid(_) => alignment == comp::Alignment::Npc, @@ -176,6 +177,7 @@ impl<'a> System<'a> for Sys { pos: Pos(entity.pos), stats, health, + poise, loadout, agent: if entity.has_agency { Some(comp::Agent::new( diff --git a/voxygen/anim/src/character/mod.rs b/voxygen/anim/src/character/mod.rs index 437a65b489..8999c390bd 100644 --- a/voxygen/anim/src/character/mod.rs +++ b/voxygen/anim/src/character/mod.rs @@ -22,7 +22,9 @@ pub mod sit; pub mod sneak; pub mod spin; pub mod spinmelee; +pub mod staggered; pub mod stand; +pub mod stunned; pub mod swim; pub mod swimwield; pub mod wield; @@ -36,8 +38,8 @@ pub use self::{ jump::JumpAnimation, leapmelee::LeapAnimation, repeater::RepeaterAnimation, roll::RollAnimation, run::RunAnimation, shockwave::ShockwaveAnimation, shoot::ShootAnimation, sit::SitAnimation, sneak::SneakAnimation, spin::SpinAnimation, spinmelee::SpinMeleeAnimation, - stand::StandAnimation, swim::SwimAnimation, swimwield::SwimWieldAnimation, - wield::WieldAnimation, + staggered::StaggeredAnimation, stand::StandAnimation, stunned::StunnedAnimation, + swim::SwimAnimation, swimwield::SwimWieldAnimation, wield::WieldAnimation, }; use super::{make_bone, vek::*, FigureBoneData, Skeleton}; use common::comp; diff --git a/voxygen/anim/src/character/run.rs b/voxygen/anim/src/character/run.rs index 7920070ff3..685e1f2061 100644 --- a/voxygen/anim/src/character/run.rs +++ b/voxygen/anim/src/character/run.rs @@ -117,21 +117,26 @@ impl Animation for RunAnimation { * 0.1, ); - next.head.position = Vec3::new(0.0, -1.0 + s_a.head.0, s_a.head.1 + short * 0.1); + next.head.position = + Vec3::new(0.0, -1.0 * speednorm + s_a.head.0, s_a.head.1 + short * 0.1); next.head.orientation = Quaternion::rotation_z(tilt * -2.5 + head_look.x * 0.2 - short * 0.02) * Quaternion::rotation_x(head_look.y + 0.45 * speednorm); next.head.scale = Vec3::one() * s_a.head_scale; - next.chest.position = Vec3::new(0.0, s_a.chest.0, s_a.chest.1 + 1.0 + shortalt * -0.8); + next.chest.position = Vec3::new( + 0.0, + s_a.chest.0, + s_a.chest.1 + 1.0 * speednorm + shortalt * -0.8, + ); next.chest.orientation = Quaternion::rotation_z(short * 0.06 + tilt * -0.6) * Quaternion::rotation_y(tilt * 1.6) * Quaternion::rotation_x( - impact * 0.06 + shortalter * 0.035 + speed * -0.07 + (tilt.abs()), + impact * 0.06 + shortalter * 0.035 + speednorm * -0.5 + (tilt.abs()), ); next.belt.position = Vec3::new(0.0, 0.25 + s_a.belt.0, 0.25 + s_a.belt.1); - next.belt.orientation = Quaternion::rotation_x(0.1) + next.belt.orientation = Quaternion::rotation_x(0.1 * speednorm) * Quaternion::rotation_z(short * 0.1 + tilt * -1.1) * Quaternion::rotation_y(tilt * 0.5); @@ -140,34 +145,36 @@ impl Animation for RunAnimation { Quaternion::rotation_x(-0.05 + short * 0.02 + noisea * 0.02 + noiseb * 0.02); next.shorts.position = Vec3::new(0.0, 0.65 + s_a.shorts.0, 0.65 + s_a.shorts.1); - next.shorts.orientation = Quaternion::rotation_x(0.2) + next.shorts.orientation = Quaternion::rotation_x(0.2 * speednorm) * Quaternion::rotation_z(short * 0.25 + tilt * -1.5) * Quaternion::rotation_y(tilt * 0.7); next.hand_l.position = Vec3::new( - -s_a.hand.0 + foothorir * -1.3, - 3.0 + s_a.hand.1 + foothorir * -7.0 * speednorm, - 1.5 + s_a.hand.2 - foothorir * 5.5 * speednorm, + -s_a.hand.0 + foothorir * -1.3 * speednorm, + 3.0 * speednorm + s_a.hand.1 + foothorir * -7.0 * speednorm, + 1.5 * speednorm + s_a.hand.2 - foothorir * 5.5 * speednorm, ); - next.hand_l.orientation = Quaternion::rotation_x(0.6 + (footrotr * -1.2) * speednorm) - * Quaternion::rotation_y(footrotr * 0.4); + next.hand_l.orientation = + Quaternion::rotation_x(0.6 * speednorm + (footrotr * -1.2) * speednorm) + * Quaternion::rotation_y(footrotr * 0.4 * speednorm); next.hand_r.position = Vec3::new( - s_a.hand.0 + foothoril * 1.3, - 3.0 + s_a.hand.1 + foothoril * -7.0 * speednorm, - 1.5 + s_a.hand.2 - foothoril * 5.5 * speednorm, + s_a.hand.0 + foothoril * 1.3 * speednorm, + 3.0 * speednorm + s_a.hand.1 + foothoril * -7.0 * speednorm, + 1.5 * speednorm + s_a.hand.2 - foothoril * 5.5 * speednorm, ); - next.hand_r.orientation = Quaternion::rotation_x(0.6 + (footrotl * -1.2) * speednorm) - * Quaternion::rotation_y(footrotl * -0.4); + next.hand_r.orientation = + Quaternion::rotation_x(0.6 * speednorm + (footrotl * -1.2) * speednorm) + * Quaternion::rotation_y(footrotl * -0.4 * speednorm); // next.foot_l.position = Vec3::new( -s_a.foot.0 + footstrafel * sideabs * 3.0 + tilt * -2.0, s_a.foot.1 - + (1.0 - sideabs) * (-1.5 + foothoril * -10.5 * speednorm) + + (1.0 - sideabs) * (-1.5 * speednorm + foothoril * -10.5 * speednorm) + (direction * 5.0).max(0.0), s_a.foot.2 - + (1.0 - sideabs) * (2.0 + ((footvertl * -2.1 * speednorm).max(-1.0))) + + (1.0 - sideabs) * (2.0 * speednorm + ((footvertl * -2.1 * speednorm).max(-1.0))) + side * ((footvertsl * 1.5).max(-1.0)), ); next.foot_l.orientation = Quaternion::rotation_x( @@ -179,10 +186,10 @@ impl Animation for RunAnimation { next.foot_r.position = Vec3::new( s_a.foot.0 + footstrafer * sideabs * 3.0 + tilt * -2.0, s_a.foot.1 - + (1.0 - sideabs) * (-1.5 + foothorir * -10.5 * speednorm) + + (1.0 - sideabs) * (-1.5 * speednorm + foothorir * -10.5 * speednorm) + (direction * 5.0).max(0.0), s_a.foot.2 - + (1.0 - sideabs) * (2.0 + ((footvertr * -2.1 * speednorm).max(-1.0))) + + (1.0 - sideabs) * (2.0 * speednorm + ((footvertr * -2.1 * speednorm).max(-1.0))) + side * ((footvertsr * -1.5).max(-1.0)), ); next.foot_r.orientation = Quaternion::rotation_x( @@ -253,7 +260,7 @@ impl Animation for RunAnimation { next.lantern.scale = Vec3::one() * 0.65; next.hold.scale = Vec3::one() * 0.0; - next.torso.position = Vec3::new(0.0, -0.3, 0.0) * s_a.scaler; + next.torso.position = Vec3::new(0.0, 0.0, 0.0) * s_a.scaler; next.torso.scale = Vec3::one() / 11.0 * s_a.scaler; next.second.scale = match ( diff --git a/voxygen/anim/src/character/staggered.rs b/voxygen/anim/src/character/staggered.rs new file mode 100644 index 0000000000..6d0295411d --- /dev/null +++ b/voxygen/anim/src/character/staggered.rs @@ -0,0 +1,211 @@ +use super::{ + super::{vek::*, Animation}, + CharacterSkeleton, SkeletonAttr, +}; +use common::{comp::item::ToolKind, states::utils::StageSection}; + +pub struct StaggeredAnimation; + +impl Animation for StaggeredAnimation { + type Dependency = ( + Option, + Option, + f32, + f64, + Option, + f64, + bool, + ); + type Skeleton = CharacterSkeleton; + + #[cfg(feature = "use-dyn-lib")] + const UPDATE_FN: &'static [u8] = b"character_staggered\0"; + + #[cfg_attr(feature = "be-dyn-lib", export_name = "character_staggered")] + #[allow(clippy::approx_constant)] // TODO: Pending review in #587 + fn update_skeleton_inner( + skeleton: &Self::Skeleton, + ( + active_tool_kind, + _second_tool_kind, + _velocity, + global_time, + stage_section, + timer, + wield_status, + ): Self::Dependency, + anim_time: f64, + rate: &mut f32, + s_a: &SkeletonAttr, + ) -> Self::Skeleton { + *rate = 1.0; + let mut next = (*skeleton).clone(); + + let (movement1base, movement2) = match stage_section { + Some(StageSection::Buildup) => ((anim_time as f32).powf(0.25), 0.0), + Some(StageSection::Recover) => (1.0, (anim_time as f32).powf(4.0)), + _ => (0.0, 0.0), + }; + let pullback = 1.0 - movement2; + let subtract = global_time - timer; + let check = subtract - subtract.trunc(); + let mirror = (check - 0.5).signum() as f32; + let movement1 = movement1base * pullback * mirror; + let movement1abs = movement1base * pullback; + + next.head.position = Vec3::new(0.0, s_a.head.0, s_a.head.1); + next.head.orientation = + Quaternion::rotation_x(movement1abs * -0.2) * Quaternion::rotation_z(movement1 * 0.3); + next.shorts.orientation = + Quaternion::rotation_x(movement1abs * 0.2) * Quaternion::rotation_z(movement1 * -0.3); + next.belt.orientation = + Quaternion::rotation_x(movement1abs * 0.1) * Quaternion::rotation_z(movement1 * -0.2); + next.shorts.position = Vec3::new(0.0, s_a.shorts.0 + movement1abs * 1.0, s_a.shorts.1); + next.chest.position = Vec3::new(0.0, s_a.chest.0, s_a.chest.1 + movement1abs * -4.0); + next.chest.orientation = + Quaternion::rotation_x(movement1abs * -0.1) * Quaternion::rotation_z(movement1 * 1.0); + if wield_status { + next.main.position = Vec3::new(0.0, 0.0, 0.0); + next.main.orientation = Quaternion::rotation_x(0.0); + match active_tool_kind { + Some(ToolKind::Sword) => { + next.hand_l.position = Vec3::new(s_a.shl.0, s_a.shl.1, s_a.shl.2); + next.hand_l.orientation = + Quaternion::rotation_x(s_a.shl.3) * Quaternion::rotation_y(s_a.shl.4); + next.hand_r.position = Vec3::new(s_a.shr.0, s_a.shr.1, s_a.shr.2); + next.hand_r.orientation = + Quaternion::rotation_x(s_a.shr.3) * Quaternion::rotation_y(s_a.shr.4); + + next.control.position = Vec3::new(s_a.sc.0, s_a.sc.1, s_a.sc.2); + next.control.orientation = Quaternion::rotation_x(s_a.sc.3); + }, + Some(ToolKind::Axe) => { + next.hand_l.position = Vec3::new(s_a.ahl.0, s_a.ahl.1, s_a.ahl.2); + next.hand_l.orientation = + Quaternion::rotation_x(s_a.ahl.3) * Quaternion::rotation_y(s_a.ahl.4); + next.hand_r.position = Vec3::new(s_a.ahr.0, s_a.ahr.1, s_a.ahr.2); + next.hand_r.orientation = + Quaternion::rotation_x(s_a.ahr.3) * Quaternion::rotation_z(s_a.ahr.5); + + next.control.position = Vec3::new(s_a.ac.0, s_a.ac.1, s_a.ac.2); + next.control.orientation = Quaternion::rotation_x(s_a.ac.3) + * Quaternion::rotation_y(s_a.ac.4) + * Quaternion::rotation_z(s_a.ac.5); + }, + Some(ToolKind::Hammer) => { + next.hand_l.position = Vec3::new(s_a.hhl.0, s_a.hhl.1, s_a.hhl.2); + next.hand_l.orientation = + Quaternion::rotation_x(s_a.hhl.3) * Quaternion::rotation_y(s_a.hhl.4); + next.hand_r.position = Vec3::new(s_a.hhr.0, s_a.hhr.1, s_a.hhr.2); + next.hand_r.orientation = + Quaternion::rotation_x(s_a.hhr.3) * Quaternion::rotation_y(s_a.hhr.4); + + next.control.position = Vec3::new(s_a.hc.0, s_a.hc.1, s_a.hc.2); + next.control.orientation = Quaternion::rotation_x(s_a.hc.3) + * Quaternion::rotation_y(s_a.hc.4) + * Quaternion::rotation_z(s_a.hc.5); + }, + Some(ToolKind::Staff) | Some(ToolKind::Sceptre) => { + next.hand_r.position = Vec3::new(s_a.sthr.0, s_a.sthr.1, s_a.sthr.2); + next.hand_r.orientation = + Quaternion::rotation_x(s_a.sthr.3) * Quaternion::rotation_y(s_a.sthr.4); + + next.control.position = Vec3::new(s_a.stc.0, s_a.stc.1, s_a.stc.2); + + next.hand_l.position = Vec3::new(s_a.sthl.0, s_a.sthl.1, s_a.sthl.2); + next.hand_l.orientation = Quaternion::rotation_x(s_a.sthl.3); + + next.control.orientation = Quaternion::rotation_x(s_a.stc.3) + * Quaternion::rotation_y(s_a.stc.4) + * Quaternion::rotation_z(s_a.stc.5); + }, + Some(ToolKind::Bow) => { + next.hand_l.position = Vec3::new(s_a.bhl.0, s_a.bhl.1, s_a.bhl.2); + next.hand_l.orientation = Quaternion::rotation_x(s_a.bhl.3); + next.hand_r.position = Vec3::new(s_a.bhr.0, s_a.bhr.1, s_a.bhr.2); + next.hand_r.orientation = Quaternion::rotation_x(s_a.bhr.3); + + next.hold.position = Vec3::new(0.0, -1.0, -5.2); + next.hold.orientation = Quaternion::rotation_x(-1.57); + next.hold.scale = Vec3::one() * 1.0; + + next.control.position = Vec3::new(s_a.bc.0, s_a.bc.1, s_a.bc.2); + next.control.orientation = + Quaternion::rotation_y(s_a.bc.4) * Quaternion::rotation_z(s_a.bc.5); + }, + Some(ToolKind::Debug) => { + next.hand_l.position = Vec3::new(-7.0, 4.0, 3.0); + next.hand_l.orientation = Quaternion::rotation_x(1.27); + next.main.position = Vec3::new(-5.0, 5.0, 23.0); + next.main.orientation = Quaternion::rotation_x(3.14); + }, + Some(ToolKind::Farming) => { + next.hand_l.position = Vec3::new(9.0, 1.0, 1.0); + next.hand_l.orientation = Quaternion::rotation_x(1.57); + next.hand_r.position = Vec3::new(9.0, 1.0, 11.0); + next.hand_r.orientation = Quaternion::rotation_x(1.57); + next.main.position = Vec3::new(7.5, 7.5, 13.2); + next.main.orientation = Quaternion::rotation_y(3.14); + + next.control.position = Vec3::new(-11.0, 1.8, 4.0); + }, + _ => {}, + } + } else if mirror > 0.0 { + next.hand_r.position = Vec3::new( + s_a.hand.0 + movement1abs * -9.0, + s_a.hand.1 + movement1 * 9.0, + s_a.hand.2 + movement1 * 5.0, + ); + next.hand_r.orientation = + Quaternion::rotation_x(movement1 * 1.2) * Quaternion::rotation_y(movement1 * 1.5); + next.hand_l.position = Vec3::new( + -s_a.hand.0, + s_a.hand.1 + movement1abs * 3.0, + s_a.hand.2 + movement1abs * -1.0, + ); + next.hand_l.orientation = Quaternion::rotation_x(movement1abs * 0.5) + * Quaternion::rotation_y(movement1 * 0.3); + next.foot_l.position = + Vec3::new(-s_a.foot.0, s_a.foot.1 + movement1abs * -7.0, s_a.foot.2); + next.foot_l.orientation = Quaternion::rotation_x(movement1abs * -1.2) + * Quaternion::rotation_z(movement1 * 0.8); + + next.foot_r.position = Vec3::new( + s_a.foot.0 + movement1 * -5.0, + s_a.foot.1 + movement1abs * 3.0, + s_a.foot.2, + ); + next.foot_r.orientation = Quaternion::rotation_z(movement1 * 0.6); + } else { + next.hand_l.position = Vec3::new( + -s_a.hand.0 + movement1abs * 9.0, + s_a.hand.1 + movement1abs * 9.0, + s_a.hand.2 + movement1abs * 5.0, + ); + next.hand_l.orientation = Quaternion::rotation_x(movement1abs * 1.2) + * Quaternion::rotation_y(movement1 * 1.5); + next.hand_r.position = Vec3::new( + s_a.hand.0, + s_a.hand.1 + movement1abs * 3.0, + s_a.hand.2 + movement1abs * -1.0, + ); + next.hand_r.orientation = Quaternion::rotation_x(movement1abs * 0.5) + * Quaternion::rotation_y(movement1 * 0.3); + next.foot_r.position = + Vec3::new(s_a.foot.0, s_a.foot.1 + movement1abs * -7.0, s_a.foot.2); + next.foot_r.orientation = Quaternion::rotation_x(movement1abs * -1.2) + * Quaternion::rotation_z(movement1 * 0.8); + next.foot_l.position = Vec3::new( + -s_a.foot.0 + movement1 * -5.0, + s_a.foot.1 + movement1abs * 3.0, + s_a.foot.2, + ); + next.foot_l.orientation = Quaternion::rotation_z(movement1 * 0.6); + }; + next.torso.position = Vec3::new(0.0, 0.0, 0.0) * s_a.scaler; + next.torso.orientation = Quaternion::rotation_z(0.0); + + next + } +} diff --git a/voxygen/anim/src/character/stunned.rs b/voxygen/anim/src/character/stunned.rs new file mode 100644 index 0000000000..3bafc78c13 --- /dev/null +++ b/voxygen/anim/src/character/stunned.rs @@ -0,0 +1,174 @@ +use super::{ + super::{vek::*, Animation}, + CharacterSkeleton, SkeletonAttr, +}; +use common::{comp::item::ToolKind, states::utils::StageSection}; + +pub struct StunnedAnimation; + +impl Animation for StunnedAnimation { + type Dependency = ( + Option, + Option, + f32, + f64, + Option, + f64, + bool, + ); + type Skeleton = CharacterSkeleton; + + #[cfg(feature = "use-dyn-lib")] + const UPDATE_FN: &'static [u8] = b"character_stunned\0"; + + #[cfg_attr(feature = "be-dyn-lib", export_name = "character_stunned")] + #[allow(clippy::approx_constant)] // TODO: Pending review in #587 + fn update_skeleton_inner( + skeleton: &Self::Skeleton, + ( + active_tool_kind, + _second_tool_kind, + _velocity, + global_time, + stage_section, + timer, + wield_status, + ): Self::Dependency, + anim_time: f64, + rate: &mut f32, + s_a: &SkeletonAttr, + ) -> Self::Skeleton { + *rate = 1.0; + let mut next = (*skeleton).clone(); + + let (movement1base, movement2) = match stage_section { + Some(StageSection::Buildup) => ((anim_time as f32).powf(0.25), 0.0), + Some(StageSection::Recover) => (1.0, (anim_time as f32).powf(4.0)), + _ => (0.0, 0.0), + }; + let pullback = 1.0 - movement2; + let subtract = global_time - timer; + let check = subtract - subtract.trunc(); + let mirror = (check - 0.5).signum() as f32; + let movement1 = movement1base * pullback * mirror; + let movement1abs = movement1base * pullback; + + next.head.position = Vec3::new(0.0, s_a.head.0, s_a.head.1); + next.head.orientation = Quaternion::rotation_z(movement1 * 0.3); + next.shorts.orientation = + Quaternion::rotation_x(movement1abs * -0.2) * Quaternion::rotation_z(movement1 * -0.3); + next.belt.orientation = + Quaternion::rotation_x(movement1abs * -0.1) * Quaternion::rotation_z(movement1 * -0.2); + + next.chest.orientation = + Quaternion::rotation_x(movement1abs * 0.3) * Quaternion::rotation_z(movement1 * 0.5); + if wield_status { + next.main.position = Vec3::new(0.0, 0.0, 0.0); + next.main.orientation = Quaternion::rotation_x(0.0); + match active_tool_kind { + Some(ToolKind::Sword) => { + next.hand_l.position = Vec3::new(s_a.shl.0, s_a.shl.1, s_a.shl.2); + next.hand_l.orientation = + Quaternion::rotation_x(s_a.shl.3) * Quaternion::rotation_y(s_a.shl.4); + next.hand_r.position = Vec3::new(s_a.shr.0, s_a.shr.1, s_a.shr.2); + next.hand_r.orientation = + Quaternion::rotation_x(s_a.shr.3) * Quaternion::rotation_y(s_a.shr.4); + + next.control.position = Vec3::new(s_a.sc.0, s_a.sc.1, s_a.sc.2); + next.control.orientation = Quaternion::rotation_x(s_a.sc.3); + }, + Some(ToolKind::Axe) => { + next.hand_l.position = Vec3::new(s_a.ahl.0, s_a.ahl.1, s_a.ahl.2); + next.hand_l.orientation = + Quaternion::rotation_x(s_a.ahl.3) * Quaternion::rotation_y(s_a.ahl.4); + next.hand_r.position = Vec3::new(s_a.ahr.0, s_a.ahr.1, s_a.ahr.2); + next.hand_r.orientation = + Quaternion::rotation_x(s_a.ahr.3) * Quaternion::rotation_z(s_a.ahr.5); + + next.control.position = Vec3::new(s_a.ac.0, s_a.ac.1, s_a.ac.2); + next.control.orientation = Quaternion::rotation_x(s_a.ac.3) + * Quaternion::rotation_y(s_a.ac.4) + * Quaternion::rotation_z(s_a.ac.5); + }, + Some(ToolKind::Hammer) => { + next.hand_l.position = Vec3::new(s_a.hhl.0, s_a.hhl.1, s_a.hhl.2); + next.hand_l.orientation = + Quaternion::rotation_x(s_a.hhl.3) * Quaternion::rotation_y(s_a.hhl.4); + next.hand_r.position = Vec3::new(s_a.hhr.0, s_a.hhr.1, s_a.hhr.2); + next.hand_r.orientation = + Quaternion::rotation_x(s_a.hhr.3) * Quaternion::rotation_y(s_a.hhr.4); + + next.control.position = Vec3::new(s_a.hc.0, s_a.hc.1, s_a.hc.2); + next.control.orientation = Quaternion::rotation_x(s_a.hc.3) + * Quaternion::rotation_y(s_a.hc.4) + * Quaternion::rotation_z(s_a.hc.5); + }, + Some(ToolKind::Staff) | Some(ToolKind::Sceptre) => { + next.hand_r.position = Vec3::new(s_a.sthr.0, s_a.sthr.1, s_a.sthr.2); + next.hand_r.orientation = + Quaternion::rotation_x(s_a.sthr.3) * Quaternion::rotation_y(s_a.sthr.4); + + next.control.position = Vec3::new(s_a.stc.0, s_a.stc.1, s_a.stc.2); + + next.hand_l.position = Vec3::new(s_a.sthl.0, s_a.sthl.1, s_a.sthl.2); + next.hand_l.orientation = Quaternion::rotation_x(s_a.sthl.3); + + next.control.orientation = Quaternion::rotation_x(s_a.stc.3) + * Quaternion::rotation_y(s_a.stc.4) + * Quaternion::rotation_z(s_a.stc.5); + }, + Some(ToolKind::Bow) => { + next.hand_l.position = Vec3::new(s_a.bhl.0, s_a.bhl.1, s_a.bhl.2); + next.hand_l.orientation = Quaternion::rotation_x(s_a.bhl.3); + next.hand_r.position = Vec3::new(s_a.bhr.0, s_a.bhr.1, s_a.bhr.2); + next.hand_r.orientation = Quaternion::rotation_x(s_a.bhr.3); + + next.hold.position = Vec3::new(0.0, -1.0, -5.2); + next.hold.orientation = Quaternion::rotation_x(-1.57); + next.hold.scale = Vec3::one() * 1.0; + + next.control.position = Vec3::new(s_a.bc.0, s_a.bc.1, s_a.bc.2); + next.control.orientation = + Quaternion::rotation_y(s_a.bc.4) * Quaternion::rotation_z(s_a.bc.5); + }, + Some(ToolKind::Debug) => { + next.hand_l.position = Vec3::new(-7.0, 4.0, 3.0); + next.hand_l.orientation = Quaternion::rotation_x(1.27); + next.main.position = Vec3::new(-5.0, 5.0, 23.0); + next.main.orientation = Quaternion::rotation_x(3.14); + }, + Some(ToolKind::Farming) => { + next.hand_l.position = Vec3::new(9.0, 1.0, 1.0); + next.hand_l.orientation = Quaternion::rotation_x(1.57); + next.hand_r.position = Vec3::new(9.0, 1.0, 11.0); + next.hand_r.orientation = Quaternion::rotation_x(1.57); + next.main.position = Vec3::new(7.5, 7.5, 13.2); + next.main.orientation = Quaternion::rotation_y(3.14); + + next.control.position = Vec3::new(-11.0, 1.8, 4.0); + }, + _ => {}, + } + } else if mirror > 0.0 { + next.hand_r.position = Vec3::new( + s_a.hand.0 + movement1abs * -4.0, + s_a.hand.1 + movement1 * 7.0, + s_a.hand.2 + movement1 * 6.0, + ); + next.hand_r.orientation = + Quaternion::rotation_x(movement1 * 1.2) * Quaternion::rotation_y(movement1 * 1.2); + } else { + next.hand_l.position = Vec3::new( + -s_a.hand.0 + movement1abs * 4.0, + s_a.hand.1 + movement1abs * 7.0, + s_a.hand.2 + movement1abs * 6.0, + ); + next.hand_l.orientation = Quaternion::rotation_x(movement1abs * 1.2) + * Quaternion::rotation_y(movement1 * 1.2); + }; + next.torso.position = Vec3::new(0.0, 0.0, 0.0) * s_a.scaler; + next.torso.orientation = Quaternion::rotation_z(0.0); + + next + } +} diff --git a/voxygen/anim/src/dyn_lib.rs b/voxygen/anim/src/dyn_lib.rs index 798df8bfbc..0e3343bd55 100644 --- a/voxygen/anim/src/dyn_lib.rs +++ b/voxygen/anim/src/dyn_lib.rs @@ -9,7 +9,6 @@ use std::{ }; use find_folder::Search; -use hashbrown::HashSet; use std::{env, path::PathBuf}; use tracing::{debug, error, info}; @@ -148,8 +147,7 @@ pub fn init() { // "Debounces" events since I can't find the option to do this in the latest // `notify` thread::spawn(move || { - let mut modified_paths = HashSet::new(); - + let mut modified_paths = std::collections::HashSet::new(); while let Ok(path) = reload_recv.recv() { modified_paths.insert(path); // Wait for any additional modify events before reloading diff --git a/voxygen/anim/src/quadruped_low/jump.rs b/voxygen/anim/src/quadruped_low/jump.rs index 953a8f1a1f..ee1d101619 100644 --- a/voxygen/anim/src/quadruped_low/jump.rs +++ b/voxygen/anim/src/quadruped_low/jump.rs @@ -28,27 +28,20 @@ impl Animation for JumpAnimation { next.tail_rear.scale = Vec3::one() * 0.98; next.head_upper.position = Vec3::new(0.0, s_a.head_upper.0, s_a.head_upper.1); - next.head_upper.orientation = Quaternion::rotation_z(0.4) * Quaternion::rotation_x(0.0); next.head_lower.position = Vec3::new(0.0, s_a.head_lower.0, s_a.head_lower.1); - next.head_lower.orientation = Quaternion::rotation_z(0.2); next.jaw.position = Vec3::new(0.0, s_a.jaw.0, s_a.jaw.1); - next.jaw.orientation = Quaternion::rotation_x(-0.3); next.chest.position = Vec3::new(0.0, s_a.chest.0, s_a.chest.1) * s_a.scaler / 11.0; next.tail_front.position = Vec3::new(0.0, s_a.tail_front.0, s_a.tail_front.1); - next.tail_front.orientation = Quaternion::rotation_x(0.15) * Quaternion::rotation_z(-0.2); next.tail_rear.position = Vec3::new(0.0, s_a.tail_rear.0, s_a.tail_rear.1); - next.tail_rear.orientation = Quaternion::rotation_z(-0.4) * Quaternion::rotation_x(-0.12); next.foot_fl.position = Vec3::new(-s_a.feet_f.0, s_a.feet_f.1, s_a.feet_f.2); - next.foot_fl.orientation = Quaternion::rotation_z(0.3); next.foot_fr.position = Vec3::new(s_a.feet_f.0, s_a.feet_f.1, s_a.feet_f.2); - next.foot_fr.orientation = Quaternion::rotation_z(0.3); next.foot_bl.position = Vec3::new(-s_a.feet_b.0, s_a.feet_b.1, s_a.feet_b.2); diff --git a/voxygen/anim/src/quadruped_low/mod.rs b/voxygen/anim/src/quadruped_low/mod.rs index e8ee046102..e7c936a5d1 100644 --- a/voxygen/anim/src/quadruped_low/mod.rs +++ b/voxygen/anim/src/quadruped_low/mod.rs @@ -6,13 +6,14 @@ pub mod idle; pub mod jump; pub mod run; pub mod shoot; +pub mod stunned; pub mod tailwhip; // Reexports pub use self::{ alpha::AlphaAnimation, beta::BetaAnimation, breathe::BreatheAnimation, dash::DashAnimation, idle::IdleAnimation, jump::JumpAnimation, run::RunAnimation, shoot::ShootAnimation, - tailwhip::TailwhipAnimation, + stunned::StunnedAnimation, tailwhip::TailwhipAnimation, }; use super::{make_bone, vek::*, FigureBoneData, Skeleton}; diff --git a/voxygen/anim/src/quadruped_low/stunned.rs b/voxygen/anim/src/quadruped_low/stunned.rs new file mode 100644 index 0000000000..86794cef52 --- /dev/null +++ b/voxygen/anim/src/quadruped_low/stunned.rs @@ -0,0 +1,60 @@ +use super::{ + super::{vek::*, Animation}, + QuadrupedLowSkeleton, SkeletonAttr, +}; +use common::states::utils::StageSection; +//use std::ops::Rem; + +pub struct StunnedAnimation; + +impl Animation for StunnedAnimation { + type Dependency = (f32, f64, Option, f64); + type Skeleton = QuadrupedLowSkeleton; + + #[cfg(feature = "use-dyn-lib")] + const UPDATE_FN: &'static [u8] = b"quadruped_low_stunned\0"; + + #[cfg_attr(feature = "be-dyn-lib", export_name = "quadruped_low_stunned")] + fn update_skeleton_inner( + skeleton: &Self::Skeleton, + (_velocity, global_time, stage_section, timer): Self::Dependency, + anim_time: f64, + _rate: &mut f32, + _s_a: &SkeletonAttr, + ) -> Self::Skeleton { + let mut next = (*skeleton).clone(); + + let (movement1base, movement2, twitch) = match stage_section { + Some(StageSection::Buildup) => ((anim_time as f32).powf(0.25), 0.0, 0.0), + Some(StageSection::Recover) => ( + 1.0, + (anim_time as f32).powf(3.0), + ((1.0 - anim_time as f32) * 7.0).sin(), + ), + _ => (0.0, 0.0, 0.0), + }; + let pullback = 1.0 - movement2; + let subtract = global_time - timer; + let check = subtract - subtract.trunc(); + let mirror = (check - 0.5).signum() as f32; + let movement1 = mirror * movement1base * pullback; + let movement1abs = movement1base * pullback; + + next.head_upper.orientation = Quaternion::rotation_x(movement1abs * -0.18) + * Quaternion::rotation_z(twitch * 0.13 * mirror); + + next.head_lower.orientation = + Quaternion::rotation_x(movement1abs * -0.18) * Quaternion::rotation_y(movement1 * 0.3); + + next.jaw.orientation = Quaternion::rotation_x(0.0); + next.chest.orientation = + Quaternion::rotation_y(movement1 * -0.08) * Quaternion::rotation_z(movement1 * -0.15); + + next.tail_front.orientation = + Quaternion::rotation_x(0.15) * Quaternion::rotation_z(movement1 * -0.4); + + next.tail_rear.orientation = + Quaternion::rotation_x(-0.12) * Quaternion::rotation_z(movement1 * -0.4); + next + } +} diff --git a/voxygen/anim/src/quadruped_medium/jump.rs b/voxygen/anim/src/quadruped_medium/jump.rs index 87029d0c8b..fc7127b274 100644 --- a/voxygen/anim/src/quadruped_medium/jump.rs +++ b/voxygen/anim/src/quadruped_medium/jump.rs @@ -36,43 +36,33 @@ impl Animation for JumpAnimation { next.ears.scale = Vec3::one() * 1.02; next.head.position = Vec3::new(0.0, s_a.head.0, s_a.head.1); - next.head.orientation = Quaternion::rotation_z(0.4) * Quaternion::rotation_x(0.3); next.neck.position = Vec3::new(0.0, s_a.neck.0, s_a.neck.1); - next.neck.orientation = Quaternion::rotation_z(0.2) * Quaternion::rotation_x(0.3); next.jaw.position = Vec3::new(0.0, s_a.jaw.0, s_a.jaw.1); - next.jaw.orientation = Quaternion::rotation_x(-0.4); + next.jaw.orientation = Quaternion::rotation_x(0.0); next.tail.position = Vec3::new(0.0, s_a.tail.0, s_a.tail.1); - next.tail.orientation = Quaternion::rotation_z(0.0) * Quaternion::rotation_x(-0.3); next.torso_front.position = Vec3::new(0.0, s_a.torso_front.0, s_a.torso_front.1) * s_a.scaler / 11.0; next.torso_front.orientation = Quaternion::rotation_y(0.0); next.torso_back.position = Vec3::new(0.0, s_a.torso_back.0, s_a.torso_back.1); - next.torso_back.orientation = Quaternion::rotation_z(-0.3); next.ears.position = Vec3::new(0.0, s_a.ears.0, s_a.ears.1); - next.ears.orientation = Quaternion::rotation_x(0.6); next.leg_fl.position = Vec3::new(-s_a.leg_f.0, s_a.leg_f.1, s_a.leg_f.2); - next.leg_fl.orientation = Quaternion::rotation_x(-0.4); next.leg_fr.position = Vec3::new(s_a.leg_f.0, s_a.leg_f.1, s_a.leg_f.2); - next.leg_fr.orientation = Quaternion::rotation_x(0.4); next.leg_bl.position = Vec3::new(-s_a.leg_b.0, s_a.leg_b.1, s_a.leg_b.2); next.leg_br.position = Vec3::new(s_a.leg_b.0, s_a.leg_b.1, s_a.leg_b.2); - next.leg_br.orientation = Quaternion::rotation_y(0.0); next.foot_fl.position = Vec3::new(-s_a.feet_f.0, s_a.feet_f.1, s_a.feet_f.2); - next.foot_fl.orientation = Quaternion::rotation_x(-0.3); next.foot_fr.position = Vec3::new(s_a.feet_f.0, s_a.feet_f.1, s_a.feet_f.2); - next.foot_fr.orientation = Quaternion::rotation_x(0.2); next.foot_bl.position = Vec3::new(-s_a.feet_b.0, s_a.feet_b.1, s_a.feet_b.2); diff --git a/voxygen/anim/src/quadruped_medium/mod.rs b/voxygen/anim/src/quadruped_medium/mod.rs index 5a4b025dc4..10f87dd25c 100644 --- a/voxygen/anim/src/quadruped_medium/mod.rs +++ b/voxygen/anim/src/quadruped_medium/mod.rs @@ -7,12 +7,13 @@ pub mod idle; pub mod jump; pub mod leapmelee; pub mod run; +pub mod stunned; // Reexports pub use self::{ alpha::AlphaAnimation, beta::BetaAnimation, dash::DashAnimation, feed::FeedAnimation, hoof::HoofAnimation, idle::IdleAnimation, jump::JumpAnimation, leapmelee::LeapMeleeAnimation, - run::RunAnimation, + run::RunAnimation, stunned::StunnedAnimation, }; use super::{make_bone, vek::*, FigureBoneData, Skeleton}; diff --git a/voxygen/anim/src/quadruped_medium/stunned.rs b/voxygen/anim/src/quadruped_medium/stunned.rs new file mode 100644 index 0000000000..22dff2f904 --- /dev/null +++ b/voxygen/anim/src/quadruped_medium/stunned.rs @@ -0,0 +1,91 @@ +use super::{ + super::{vek::*, Animation}, + QuadrupedMediumSkeleton, SkeletonAttr, +}; +use common::states::utils::StageSection; + +pub struct StunnedAnimation; + +impl Animation for StunnedAnimation { + type Dependency = (f32, f64, Option, f64); + type Skeleton = QuadrupedMediumSkeleton; + + #[cfg(feature = "use-dyn-lib")] + const UPDATE_FN: &'static [u8] = b"quadruped_medium_stunned\0"; + + #[cfg_attr(feature = "be-dyn-lib", export_name = "quadruped_medium_stunned")] + fn update_skeleton_inner( + skeleton: &Self::Skeleton, + (_velocity, global_time, stage_section, timer): Self::Dependency, + anim_time: f64, + _rate: &mut f32, + s_a: &SkeletonAttr, + ) -> Self::Skeleton { + let mut next = (*skeleton).clone(); + + let (movement1base, movement2, twitch) = match stage_section { + Some(StageSection::Buildup) => ((anim_time as f32).powf(0.25), 0.0, 0.0), + Some(StageSection::Recover) => ( + 1.0, + (anim_time as f32).powf(3.0), + ((1.0 - anim_time as f32) * 7.0).sin(), + ), + _ => (0.0, 0.0, 0.0), + }; + let pullback = 1.0 - movement2; + let subtract = global_time - timer; + let check = subtract - subtract.trunc(); + let mirror = (check - 0.5).signum() as f32; + let movement1 = movement1base * mirror * pullback; + let movement1abs = movement1base * pullback; + + next.head.orientation = Quaternion::rotation_x(movement1abs * -0.45) + * Quaternion::rotation_y(movement1 * 0.35) + * Quaternion::rotation_z(movement1 * 0.15 + twitch * 0.3 * mirror); + + next.neck.orientation = Quaternion::rotation_x(movement1abs * -0.3) + * Quaternion::rotation_y(movement1 * 0.0) + * Quaternion::rotation_z(movement1 * 0.10 + movement1 * -0.15); + + next.jaw.orientation = Quaternion::rotation_x(0.0); + + next.tail.orientation = Quaternion::rotation_z(movement1 * 0.5); + next.torso_front.position = Vec3::new( + 0.0, + s_a.torso_front.0 + movement1abs * -4.0, + s_a.torso_front.1, + ) * s_a.scaler + / 11.0; + next.torso_front.orientation = + Quaternion::rotation_y(0.0) * Quaternion::rotation_z(movement1 * 0.35); + + next.torso_back.orientation = + Quaternion::rotation_y(movement1 * 0.18) * Quaternion::rotation_z(movement1 * -0.4); + + next.ears.orientation = Quaternion::rotation_x(twitch * 0.1 * mirror); + + next.leg_fl.position = Vec3::new(-s_a.leg_f.0, s_a.leg_f.1, s_a.leg_f.2); + next.leg_fl.orientation = Quaternion::rotation_y(0.0); + + next.leg_fr.position = Vec3::new(s_a.leg_f.0, s_a.leg_f.1, s_a.leg_f.2); + next.leg_fr.orientation = Quaternion::rotation_y(0.0); + + next.leg_bl.position = Vec3::new(-s_a.leg_b.0, s_a.leg_b.1, s_a.leg_b.2); + next.leg_bl.orientation = Quaternion::rotation_y(movement1 * -0.3); + + next.leg_br.position = Vec3::new(s_a.leg_b.0, s_a.leg_b.1, s_a.leg_b.2); + next.leg_br.orientation = Quaternion::rotation_y(movement1 * -0.3); + + next.foot_fl.position = Vec3::new(-s_a.feet_f.0, s_a.feet_f.1, s_a.feet_f.2); + next.foot_fl.orientation = Quaternion::rotation_x(movement1abs * 0.2); + + next.foot_fr.position = Vec3::new(s_a.feet_f.0, s_a.feet_f.1, s_a.feet_f.2); + next.foot_fr.orientation = Quaternion::rotation_x(movement1abs * 0.2); + + next.foot_bl.position = Vec3::new(-s_a.feet_b.0, s_a.feet_b.1, s_a.feet_b.2); + + next.foot_br.position = Vec3::new(s_a.feet_b.0, s_a.feet_b.1, s_a.feet_b.2); + + next + } +} diff --git a/voxygen/anim/src/quadruped_small/jump.rs b/voxygen/anim/src/quadruped_small/jump.rs index 1bbc072d4c..4af9adadb1 100644 --- a/voxygen/anim/src/quadruped_small/jump.rs +++ b/voxygen/anim/src/quadruped_small/jump.rs @@ -23,7 +23,6 @@ impl Animation for JumpAnimation { let mut next = (*skeleton).clone(); next.head.position = Vec3::new(0.0, s_a.head.0, s_a.head.1); - next.head.orientation = Quaternion::rotation_z(-0.8) * Quaternion::rotation_x(0.5); next.chest.position = Vec3::new(0.0, s_a.chest.0, s_a.chest.1) * s_a.scaler / 11.0; next.chest.orientation = Quaternion::rotation_y(0.0); @@ -42,7 +41,6 @@ impl Animation for JumpAnimation { next.leg_br.orientation = Quaternion::rotation_x(0.0); next.tail.position = Vec3::new(0.0, s_a.tail.0, s_a.tail.1); - next.tail.orientation = Quaternion::rotation_x(-0.3); next } } diff --git a/voxygen/anim/src/quadruped_small/mod.rs b/voxygen/anim/src/quadruped_small/mod.rs index 2d09ae38c4..f48d05c471 100644 --- a/voxygen/anim/src/quadruped_small/mod.rs +++ b/voxygen/anim/src/quadruped_small/mod.rs @@ -3,11 +3,12 @@ pub mod feed; pub mod idle; pub mod jump; pub mod run; +pub mod stunned; // Reexports pub use self::{ alpha::AlphaAnimation, feed::FeedAnimation, idle::IdleAnimation, jump::JumpAnimation, - run::RunAnimation, + run::RunAnimation, stunned::StunnedAnimation, }; use super::{make_bone, vek::*, FigureBoneData, Skeleton}; diff --git a/voxygen/anim/src/quadruped_small/stunned.rs b/voxygen/anim/src/quadruped_small/stunned.rs new file mode 100644 index 0000000000..a449436991 --- /dev/null +++ b/voxygen/anim/src/quadruped_small/stunned.rs @@ -0,0 +1,70 @@ +use super::{ + super::{vek::*, Animation}, + QuadrupedSmallSkeleton, SkeletonAttr, +}; +use common::states::utils::StageSection; +//use std::ops::Rem; + +pub struct StunnedAnimation; + +impl Animation for StunnedAnimation { + type Dependency = (f32, f64, Option, f64); + type Skeleton = QuadrupedSmallSkeleton; + + #[cfg(feature = "use-dyn-lib")] + const UPDATE_FN: &'static [u8] = b"quadruped_small_stunned\0"; + + #[cfg_attr(feature = "be-dyn-lib", export_name = "quadruped_small_stunned")] + fn update_skeleton_inner( + skeleton: &Self::Skeleton, + (_velocity, global_time, stage_section, timer): Self::Dependency, + anim_time: f64, + _rate: &mut f32, + s_a: &SkeletonAttr, + ) -> Self::Skeleton { + let mut next = (*skeleton).clone(); + + let (movement1base, movement2, twitch) = match stage_section { + Some(StageSection::Buildup) => ((anim_time as f32).powf(0.25), 0.0, 0.0), + Some(StageSection::Recover) => ( + 1.0, + (anim_time as f32).powf(3.0), + ((1.0 - anim_time as f32) * 10.0).sin(), + ), + _ => (0.0, 0.0, 0.0), + }; + let pullback = 1.0 - movement2; + let subtract = global_time - timer; + let check = subtract - subtract.trunc(); + let mirror = (check - 0.5).signum() as f32; + let movement1 = mirror * movement1base * pullback; + let movement1abs = movement1base * pullback; + next.head.position = Vec3::new(0.0, s_a.head.0, s_a.head.1); + + next.chest.position = + Vec3::new(0.0, s_a.chest.0, s_a.chest.1 + movement1abs * -1.5) / 11.0 * s_a.scaler; + next.head.orientation = Quaternion::rotation_x(movement1abs * -0.2) + * Quaternion::rotation_y(movement1 * -0.6) + * Quaternion::rotation_z(movement1 * 0.4 + twitch * 0.2 * mirror); + + next.chest.orientation = + Quaternion::rotation_x(movement1abs * -0.2) * Quaternion::rotation_z(0.0); + + next.leg_fl.position = Vec3::new(-s_a.feet_f.0, s_a.feet_f.1, s_a.feet_f.2); + next.leg_fl.orientation = Quaternion::rotation_x(movement1abs * 0.8); + + next.leg_fr.position = Vec3::new(s_a.feet_f.0, s_a.feet_f.1, s_a.feet_f.2); + next.leg_fr.orientation = Quaternion::rotation_x(movement1abs * 0.8); + + next.leg_bl.position = Vec3::new(-s_a.feet_b.0, s_a.feet_b.1, s_a.feet_b.2); + next.leg_bl.orientation = Quaternion::rotation_x(movement1abs * -0.2); + + next.leg_br.position = Vec3::new(s_a.feet_b.0, s_a.feet_b.1, s_a.feet_b.2); + next.leg_br.orientation = Quaternion::rotation_x(movement1abs * -0.2); + + next.tail.orientation = + Quaternion::rotation_x(movement1abs * 0.5) * Quaternion::rotation_z(movement1 * -0.4); + + next + } +} diff --git a/voxygen/src/audio/sfx/event_mapper/combat/tests.rs b/voxygen/src/audio/sfx/event_mapper/combat/tests.rs index 3a0f3c1dd8..c78f85ea96 100644 --- a/voxygen/src/audio/sfx/event_mapper/combat/tests.rs +++ b/voxygen/src/audio/sfx/event_mapper/combat/tests.rs @@ -74,6 +74,7 @@ fn maps_basic_melee() { swing_duration: Duration::default(), recover_duration: Duration::default(), base_damage: 10, + base_poise_damage: 10, knockback: 0.0, range: 1.0, max_angle: 1.0, @@ -113,7 +114,9 @@ fn matches_ability_stage() { stage_data: vec![states::combo_melee::Stage { stage: 1, base_damage: 100, + base_poise_damage: 100, damage_increase: 10, + poise_damage_increase: 10, knockback: 10.0, range: 4.0, angle: 30.0, @@ -170,7 +173,9 @@ fn ignores_different_ability_stage() { stage_data: vec![states::combo_melee::Stage { stage: 1, base_damage: 100, + base_poise_damage: 100, damage_increase: 10, + poise_damage_increase: 10, knockback: 10.0, range: 4.0, angle: 30.0, diff --git a/voxygen/src/hud/util.rs b/voxygen/src/hud/util.rs index 292b4c86db..3f9408a843 100644 --- a/voxygen/src/hud/util.rs +++ b/voxygen/src/hud/util.rs @@ -69,13 +69,21 @@ fn armor_desc(armor: &Armor, desc: &str, slots: u16) -> String { ArmorKind::Tabard(_) => "Tabard", ArmorKind::Bag(_) => "Bag", }; - - let protection = match armor.get_protection() { + let armor_protection = match armor.get_protection() { Protection::Normal(a) => a.to_string(), Protection::Invincible => "Inf".to_string(), }; + //let armor_poise_resilience = match armor.get_poise_resilience() { + // Protection::Normal(a) => a.to_string(), + // Protection::Invincible => "Inf".to_string(), + //}; - let mut description = format!("{}\n\nArmor: {}", kind, protection); + let mut description = format!( + "{}\n\nArmor: {}", + //"{}\n\nArmor: {}\n\nPoise Resilience: {}", + kind, + armor_protection, /* armor_poise_resilience // Add back when we are ready for poise */ + ); if !desc.is_empty() { write!(&mut description, "\n\n{}", desc).unwrap(); @@ -104,24 +112,35 @@ fn tool_desc(tool: &Tool, desc: &str) -> String { ToolKind::Farming => "Farming Tool", ToolKind::Empty => "Empty", }; + + // Get tool stats let power = tool.base_power(); + //let poise_strength = tool.base_poise_strength(); let speed = tool.base_speed(); if !desc.is_empty() { format!( "{}\n\nDPS: {:0.1}\n\nPower: {:0.1}\n\nSpeed: {:0.1}\n\n{}\n\n", + // add back when ready for poise + //"{}\n\nDPS: {:0.1}\n\nPower: {:0.1}\n\nPoise Strength: {:0.1}\n\nSpeed: \ + // {:0.1}\n\n{}\n\n", kind, speed * power * 10.0, // Damage per second power * 10.0, + //poise_strength * 10.0, speed, desc ) } else { format!( "{}\n\nDPS: {:0.1}\n\nPower: {:0.1}\n\nSpeed: {:0.1}\n\n", + // add back when ready for poise + //"{}\n\nDPS: {:0.1}\n\nPower: {:0.1}\n\nPoise Strength: {:0.1}\n\nSpeed: \ + // {:0.1}\n\n", kind, speed * power * 10.0, // Damage per second power * 10.0, + //poise_strength * 10.0, speed ) } diff --git a/voxygen/src/scene/figure/mod.rs b/voxygen/src/scene/figure/mod.rs index 792f28d2e2..d98f29bad7 100644 --- a/voxygen/src/scene/figure/mod.rs +++ b/voxygen/src/scene/figure/mod.rs @@ -30,7 +30,7 @@ use common::{ inventory::slot::EquipSlot, item::{ItemKind, ToolKind}, Body, CharacterState, Health, Inventory, Item, Last, LightAnimation, LightEmitter, Ori, - PhysicsState, Pos, Scale, Vel, + PhysicsState, PoiseState, Pos, Scale, Vel, }, resources::DeltaTime, span, @@ -1122,6 +1122,57 @@ impl FigureMgr { skeleton_attr, ) }, + CharacterState::Stunned(s) => { + let stage_time = s.timer.as_secs_f64(); + let wield_status = s.was_wielded; + let stage_progress = match s.stage_section { + StageSection::Buildup => { + stage_time / s.static_data.buildup_duration.as_secs_f64() + }, + StageSection::Recover => { + stage_time / s.static_data.recover_duration.as_secs_f64() + }, + _ => 0.0, + }; + match s.static_data.poise_state { + PoiseState::Normal + | PoiseState::Stunned + | PoiseState::Interrupted => { + anim::character::StunnedAnimation::update_skeleton( + &target_base, + ( + active_tool_kind, + second_tool_kind, + vel.0.magnitude(), + time, + Some(s.stage_section), + state.state_time, + wield_status, + ), + stage_progress, + &mut state_animation_rate, + skeleton_attr, + ) + }, + PoiseState::Dazed | PoiseState::KnockedDown => { + anim::character::StaggeredAnimation::update_skeleton( + &target_base, + ( + active_tool_kind, + second_tool_kind, + vel.0.magnitude(), + time, + Some(s.stage_section), + state.state_time, + wield_status, + ), + stage_progress, + &mut state_animation_rate, + skeleton_attr, + ) + }, + } + }, CharacterState::BasicBeam(s) => { let stage_time = s.timer.as_secs_f64(); let stage_progress = match s.stage_section { @@ -1467,6 +1518,50 @@ impl FigureMgr { ) } }, + CharacterState::Stunned(s) => { + let stage_time = s.timer.as_secs_f64(); + let stage_progress = match s.stage_section { + StageSection::Buildup => { + stage_time / s.static_data.buildup_duration.as_secs_f64() + }, + StageSection::Recover => { + stage_time / s.static_data.recover_duration.as_secs_f64() + }, + _ => 0.0, + }; + match s.static_data.poise_state { + PoiseState::Normal + | PoiseState::Interrupted + | PoiseState::Stunned => { + anim::quadruped_small::StunnedAnimation::update_skeleton( + &target_base, + ( + vel.0.magnitude(), + time, + Some(s.stage_section), + state.state_time, + ), + stage_progress, + &mut state_animation_rate, + skeleton_attr, + ) + }, + PoiseState::Dazed | PoiseState::KnockedDown => { + anim::quadruped_small::StunnedAnimation::update_skeleton( + &target_base, + ( + vel.0.magnitude(), + time, + Some(s.stage_section), + state.state_time, + ), + stage_progress, + &mut state_animation_rate, + skeleton_attr, + ) + }, + } + }, CharacterState::Sit { .. } => { anim::quadruped_small::FeedAnimation::update_skeleton( &target_base, @@ -1744,6 +1839,50 @@ impl FigureMgr { ), } }, + CharacterState::Stunned(s) => { + let stage_time = s.timer.as_secs_f64(); + let stage_progress = match s.stage_section { + StageSection::Buildup => { + stage_time / s.static_data.buildup_duration.as_secs_f64() + }, + StageSection::Recover => { + stage_time / s.static_data.recover_duration.as_secs_f64() + }, + _ => 0.0, + }; + match s.static_data.poise_state { + PoiseState::Normal + | PoiseState::Stunned + | PoiseState::Interrupted => { + anim::quadruped_medium::StunnedAnimation::update_skeleton( + &target_base, + ( + vel.0.magnitude(), + time, + Some(s.stage_section), + state.state_time, + ), + stage_progress, + &mut state_animation_rate, + skeleton_attr, + ) + }, + PoiseState::Dazed | PoiseState::KnockedDown => { + anim::quadruped_medium::StunnedAnimation::update_skeleton( + &target_base, + ( + vel.0.magnitude(), + time, + Some(s.stage_section), + state.state_time, + ), + stage_progress, + &mut state_animation_rate, + skeleton_attr, + ) + }, + } + }, CharacterState::Sit { .. } => { anim::quadruped_medium::FeedAnimation::update_skeleton( &target_base, @@ -1903,6 +2042,7 @@ impl FigureMgr { skeleton_attr, ) }, + CharacterState::ChargedMelee(s) => { let stage_time = s.timer.as_secs_f64(); @@ -1932,6 +2072,50 @@ impl FigureMgr { skeleton_attr, ) }, + CharacterState::Stunned(s) => { + let stage_time = s.timer.as_secs_f64(); + let stage_progress = match s.stage_section { + StageSection::Buildup => { + stage_time / s.static_data.buildup_duration.as_secs_f64() + }, + StageSection::Recover => { + stage_time / s.static_data.recover_duration.as_secs_f64() + }, + _ => 0.0, + }; + match s.static_data.poise_state { + PoiseState::Normal + | PoiseState::Stunned + | PoiseState::Interrupted => { + anim::quadruped_low::StunnedAnimation::update_skeleton( + &target_base, + ( + vel.0.magnitude(), + time, + Some(s.stage_section), + state.state_time, + ), + stage_progress, + &mut state_animation_rate, + skeleton_attr, + ) + }, + PoiseState::Dazed | PoiseState::KnockedDown => { + anim::quadruped_low::StunnedAnimation::update_skeleton( + &target_base, + ( + vel.0.magnitude(), + time, + Some(s.stage_section), + state.state_time, + ), + stage_progress, + &mut state_animation_rate, + skeleton_attr, + ) + }, + } + }, CharacterState::ComboMelee(s) => { let stage_index = (s.stage - 1) as usize; let stage_time = s.timer.as_secs_f64();