diff --git a/assets/common/abilities/axe/doublestrike.ron b/assets/common/abilities/axe/doublestrike.ron index 08f6d33346..1f1bde93a8 100644 --- a/assets/common/abilities/axe/doublestrike.ron +++ b/assets/common/abilities/axe/doublestrike.ron @@ -3,7 +3,6 @@ ComboMelee( ( stage: 1, base_damage: 90, - max_damage: 110, damage_increase: 10, knockback: 8.0, range: 3.5, @@ -16,7 +15,6 @@ ComboMelee( ( stage: 2, base_damage: 130, - max_damage: 160, damage_increase: 15, knockback: 12.0, range: 3.5, @@ -32,5 +30,6 @@ ComboMelee( energy_increase: 30, speed_increase: 0.075, max_speed_increase: 1.6, + scales_from_combo: 2, is_interruptible: false, ) \ No newline at end of file diff --git a/assets/common/abilities/bow/charged.ron b/assets/common/abilities/bow/charged.ron index f54e499c60..3162c4631e 100644 --- a/assets/common/abilities/bow/charged.ron +++ b/assets/common/abilities/bow/charged.ron @@ -1,10 +1,10 @@ ChargedRanged( energy_cost: 1, energy_drain: 300, - initial_damage: 50, - max_damage: 250, + initial_damage: 10, + scaled_damage: 240, initial_knockback: 10.0, - max_knockback: 20.0, + scaled_knockback: 10.0, speed: 1.0, buildup_duration: 100, charge_duration: 1500, @@ -13,5 +13,5 @@ ChargedRanged( projectile_light: None, projectile_gravity: Some(Gravity(0.2)), initial_projectile_speed: 100.0, - max_projectile_speed: 500.0, + scaled_projectile_speed: 400.0, ) diff --git a/assets/common/abilities/hammer/charged.ron b/assets/common/abilities/hammer/charged.ron index dd488f1df8..916ad9ce4e 100644 --- a/assets/common/abilities/hammer/charged.ron +++ b/assets/common/abilities/hammer/charged.ron @@ -2,9 +2,9 @@ ChargedMelee( energy_cost: 1, energy_drain: 300, initial_damage: 10, - max_damage: 170, + scaled_damage: 160, initial_knockback: 10.0, - max_knockback: 60.0, + scaled_knockback: 50.0, range: 3.5, max_angle: 30.0, speed: 1.0, diff --git a/assets/common/abilities/hammer/singlestrike.ron b/assets/common/abilities/hammer/singlestrike.ron index 75769c5d39..dde197a35c 100644 --- a/assets/common/abilities/hammer/singlestrike.ron +++ b/assets/common/abilities/hammer/singlestrike.ron @@ -2,7 +2,6 @@ ComboMelee( stage_data: [( stage: 1, base_damage: 130, - max_damage: 150, damage_increase: 10, knockback: 0.0, range: 4.5, @@ -17,5 +16,6 @@ ComboMelee( energy_increase: 50, speed_increase: 0.05, max_speed_increase: 1.4, + scales_from_combo: 2, is_interruptible: false, ) \ No newline at end of file diff --git a/assets/common/abilities/sword/dash.ron b/assets/common/abilities/sword/dash.ron index 6c167ef5f0..6ca2de60b7 100644 --- a/assets/common/abilities/sword/dash.ron +++ b/assets/common/abilities/sword/dash.ron @@ -1,9 +1,9 @@ DashMelee( energy_cost: 100, base_damage: 80, - max_damage: 240, + scaled_damage: 160, base_knockback: 8.0, - max_knockback: 15.0, + scaled_knockback: 7.0, range: 5.0, angle: 45.0, energy_drain: 600, diff --git a/assets/common/abilities/sword/triplestrike.ron b/assets/common/abilities/sword/triplestrike.ron index 23bd0864f9..979368ac47 100644 --- a/assets/common/abilities/sword/triplestrike.ron +++ b/assets/common/abilities/sword/triplestrike.ron @@ -3,7 +3,6 @@ ComboMelee( ( stage: 1, base_damage: 100, - max_damage: 120, damage_increase: 10, knockback: 10.0, range: 4.0, @@ -16,7 +15,6 @@ ComboMelee( ( stage: 2, base_damage: 80, - max_damage: 110, damage_increase: 15, knockback: 12.0, range: 3.5, @@ -29,7 +27,6 @@ ComboMelee( ( stage: 3, base_damage: 130, - max_damage: 170, damage_increase: 20, knockback: 14.0, range: 6.0, @@ -45,5 +42,6 @@ ComboMelee( energy_increase: 25, speed_increase: 0.1, max_speed_increase: 1.8, + scales_from_combo: 2, is_interruptible: true, ) \ 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 cbef5c4335..fe7b3efaae 100644 --- a/assets/common/abilities/unique/quadlowbasic/singlestrike.ron +++ b/assets/common/abilities/unique/quadlowbasic/singlestrike.ron @@ -3,7 +3,6 @@ ComboMelee( ( stage: 1, base_damage: 100, - max_damage: 100, damage_increase: 0, knockback: 5.0, range: 3.5, @@ -19,5 +18,6 @@ ComboMelee( energy_increase: 0, speed_increase: 0.0, max_speed_increase: 1.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 4cf7afcd01..792ac133e0 100644 --- a/assets/common/abilities/unique/quadlowbasic/triplestrike.ron +++ b/assets/common/abilities/unique/quadlowbasic/triplestrike.ron @@ -3,7 +3,6 @@ ComboMelee( ( stage: 1, base_damage: 120, - max_damage: 120, damage_increase: 0, knockback: 10.0, range: 3.5, @@ -16,7 +15,6 @@ ComboMelee( ( stage: 2, base_damage: 80, - max_damage: 80, damage_increase: 0, knockback: 10.0, range: 3.5, @@ -29,7 +27,6 @@ ComboMelee( ( stage: 3, base_damage: 130, - max_damage: 130, damage_increase: 0, knockback: 10.0, range: 3.5, @@ -45,5 +42,6 @@ ComboMelee( energy_increase: 0, speed_increase: 0.0, max_speed_increase: 1.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 ea49ea8921..e5081de2ac 100644 --- a/assets/common/abilities/unique/quadlowbreathe/dash.ron +++ b/assets/common/abilities/unique/quadlowbreathe/dash.ron @@ -1,9 +1,9 @@ DashMelee( energy_cost: 0, base_damage: 150, - max_damage: 260, + scaled_damage: 110, base_knockback: 8.0, - max_knockback: 25.0, + scaled_knockback: 17.0, range: 5.0, angle: 45.0, energy_drain: 0, diff --git a/assets/common/abilities/unique/quadlowbreathe/triplestrike.ron b/assets/common/abilities/unique/quadlowbreathe/triplestrike.ron index 89c653db45..f74929c154 100644 --- a/assets/common/abilities/unique/quadlowbreathe/triplestrike.ron +++ b/assets/common/abilities/unique/quadlowbreathe/triplestrike.ron @@ -3,7 +3,6 @@ ComboMelee( ( stage: 1, base_damage: 100, - max_damage: 100, damage_increase: 0, knockback: 10.0, range: 4.5, @@ -16,7 +15,6 @@ ComboMelee( ( stage: 2, base_damage: 80, - max_damage: 80, damage_increase: 0, knockback: 10.0, range: 3.5, @@ -29,7 +27,6 @@ ComboMelee( ( stage: 3, base_damage: 130, - max_damage: 130, damage_increase: 0, knockback: 10.0, range: 3.5, @@ -45,5 +42,6 @@ ComboMelee( energy_increase: 0, speed_increase: 0.0, max_speed_increase: 1.0, + scales_from_combo: 0, is_interruptible: false, ) diff --git a/assets/common/abilities/unique/quadlowquick/dash.ron b/assets/common/abilities/unique/quadlowquick/dash.ron index 2b051e0455..21b070b83e 100644 --- a/assets/common/abilities/unique/quadlowquick/dash.ron +++ b/assets/common/abilities/unique/quadlowquick/dash.ron @@ -1,9 +1,9 @@ DashMelee( energy_cost: 0, base_damage: 30, - max_damage: 40, + scaled_damage: 10, base_knockback: 8.0, - max_knockback: 15.0, + scaled_knockback: 7.0, range: 2.0, angle: 45.0, energy_drain: 0, diff --git a/assets/common/abilities/unique/quadlowquick/quadstrike.ron b/assets/common/abilities/unique/quadlowquick/quadstrike.ron index 1a35c2e7a6..896ebfb479 100644 --- a/assets/common/abilities/unique/quadlowquick/quadstrike.ron +++ b/assets/common/abilities/unique/quadlowquick/quadstrike.ron @@ -3,7 +3,6 @@ ComboMelee( ( stage: 1, base_damage: 100, - max_damage: 100, damage_increase: 0, knockback: 2.0, range: 3.5, @@ -16,7 +15,6 @@ ComboMelee( ( stage: 2, base_damage: 130, - max_damage: 130, damage_increase: 0, knockback: 2.0, range: 3.5, @@ -29,7 +27,6 @@ ComboMelee( ( stage: 3, base_damage: 130, - max_damage: 130, damage_increase: 0, knockback: 2.0, range: 3.5, @@ -42,7 +39,6 @@ ComboMelee( ( stage: 4, base_damage: 130, - max_damage: 130, damage_increase: 0, knockback: 8.0, range: 3.5, @@ -58,5 +54,6 @@ ComboMelee( energy_increase: 0, speed_increase: 0.0, max_speed_increase: 1.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 237deb4a92..19ce8936a7 100644 --- a/assets/common/abilities/unique/quadlowranged/singlestrike.ron +++ b/assets/common/abilities/unique/quadlowranged/singlestrike.ron @@ -3,7 +3,6 @@ ComboMelee( ( stage: 1, base_damage: 60, - max_damage: 60, damage_increase: 0, knockback: 5.0, range: 3.5, @@ -19,5 +18,6 @@ ComboMelee( energy_increase: 0, speed_increase: 0.0, max_speed_increase: 1.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 53116a542d..a5f1890962 100644 --- a/assets/common/abilities/unique/quadlowtail/charged.ron +++ b/assets/common/abilities/unique/quadlowtail/charged.ron @@ -2,9 +2,9 @@ ChargedMelee( energy_cost: 0, energy_drain: 0, initial_damage: 160, - max_damage: 200, + scaled_damage: 40, initial_knockback: 10.0, - max_knockback: 30.0, + scaled_knockback: 20.0, range: 6.0, max_angle: 90.0, speed: 1.0, diff --git a/assets/common/abilities/unique/quadlowtail/triplestrike.ron b/assets/common/abilities/unique/quadlowtail/triplestrike.ron index 2022e1a22b..432ad28bf5 100644 --- a/assets/common/abilities/unique/quadlowtail/triplestrike.ron +++ b/assets/common/abilities/unique/quadlowtail/triplestrike.ron @@ -3,7 +3,6 @@ ComboMelee( ( stage: 1, base_damage: 100, - max_damage: 100, damage_increase: 0, knockback: 10.0, range: 3.5, @@ -16,7 +15,6 @@ ComboMelee( ( stage: 2, base_damage: 120, - max_damage: 120, damage_increase: 0, knockback: 10.0, range: 3.5, @@ -29,7 +27,6 @@ ComboMelee( ( stage: 3, base_damage: 130, - max_damage: 130, damage_increase: 0, knockback: 10.0, range: 3.5, @@ -45,5 +42,6 @@ ComboMelee( energy_increase: 0, speed_increase: 0.0, max_speed_increase: 1.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 00c1a0306d..e1e6214838 100644 --- a/assets/common/abilities/unique/quadmedbasic/singlestrike.ron +++ b/assets/common/abilities/unique/quadmedbasic/singlestrike.ron @@ -3,7 +3,6 @@ ComboMelee( ( stage: 1, base_damage: 120, - max_damage: 120, damage_increase: 0, knockback: 5.0, range: 3.5, @@ -19,5 +18,6 @@ ComboMelee( energy_increase: 0, speed_increase: 0.0, max_speed_increase: 1.0, + scales_from_combo: 0, is_interruptible: false, ) diff --git a/assets/common/abilities/unique/quadmedbasic/triplestrike.ron b/assets/common/abilities/unique/quadmedbasic/triplestrike.ron index cc2091727b..2a5d562996 100644 --- a/assets/common/abilities/unique/quadmedbasic/triplestrike.ron +++ b/assets/common/abilities/unique/quadmedbasic/triplestrike.ron @@ -3,7 +3,6 @@ ComboMelee( ( stage: 1, base_damage: 120, - max_damage: 120, damage_increase: 0, knockback: 10.0, range: 3.5, @@ -16,7 +15,6 @@ ComboMelee( ( stage: 2, base_damage: 120, - max_damage: 120, damage_increase: 0, knockback: 10.0, range: 3.5, @@ -29,7 +27,6 @@ ComboMelee( ( stage: 3, base_damage: 120, - max_damage: 120, damage_increase: 0, knockback: 10.0, range: 3.5, @@ -45,5 +42,6 @@ ComboMelee( energy_increase: 0, speed_increase: 0.0, max_speed_increase: 1.0, + scales_from_combo: 0, is_interruptible: false, ) diff --git a/assets/common/abilities/unique/quadmedcharge/dash.ron b/assets/common/abilities/unique/quadmedcharge/dash.ron index 6e21bcaca6..2e258451b7 100644 --- a/assets/common/abilities/unique/quadmedcharge/dash.ron +++ b/assets/common/abilities/unique/quadmedcharge/dash.ron @@ -1,9 +1,9 @@ DashMelee( energy_cost: 0, base_damage: 150, - max_damage: 190, + scaled_damage: 40, base_knockback: 8.0, - max_knockback: 25.0, + scaled_knockback: 17.0, range: 4.0, angle: 45.0, energy_drain: 0, diff --git a/assets/common/abilities/unique/quadmedcharge/doublestrike.ron b/assets/common/abilities/unique/quadmedcharge/doublestrike.ron index 0b4797e6c8..cdb2cced95 100644 --- a/assets/common/abilities/unique/quadmedcharge/doublestrike.ron +++ b/assets/common/abilities/unique/quadmedcharge/doublestrike.ron @@ -3,7 +3,6 @@ ComboMelee( ( stage: 1, base_damage: 100, - max_damage: 100, damage_increase: 0, knockback: 10.0, range: 3.5, @@ -16,7 +15,6 @@ ComboMelee( ( stage: 2, base_damage: 80, - max_damage: 80, damage_increase: 0, knockback: 10.0, range: 3.5, @@ -32,5 +30,6 @@ ComboMelee( energy_increase: 0, speed_increase: 0.0, max_speed_increase: 1.0, + scales_from_combo: 0, is_interruptible: false, ) diff --git a/assets/common/abilities/unique/quadmedjump/doublestrike.ron b/assets/common/abilities/unique/quadmedjump/doublestrike.ron index 80828b5f9c..e4aabd1196 100644 --- a/assets/common/abilities/unique/quadmedjump/doublestrike.ron +++ b/assets/common/abilities/unique/quadmedjump/doublestrike.ron @@ -3,7 +3,6 @@ ComboMelee( ( stage: 1, base_damage: 100, - max_damage: 100, damage_increase: 0, knockback: 8.0, range: 3.5, @@ -16,7 +15,6 @@ ComboMelee( ( stage: 2, base_damage: 80, - max_damage: 80, damage_increase: 0, knockback: 8.0, range: 3.5, @@ -32,5 +30,6 @@ ComboMelee( energy_increase: 0, speed_increase: 0.0, max_speed_increase: 1.0, + scales_from_combo: 0, is_interruptible: false, ) diff --git a/assets/common/abilities/unique/quadmedquick/dash.ron b/assets/common/abilities/unique/quadmedquick/dash.ron index f59f12f563..325088f2c7 100644 --- a/assets/common/abilities/unique/quadmedquick/dash.ron +++ b/assets/common/abilities/unique/quadmedquick/dash.ron @@ -1,9 +1,9 @@ DashMelee( energy_cost: 0, base_damage: 130, - max_damage: 150, + scaled_damage: 20, base_knockback: 8.0, - max_knockback: 15.0, + scaled_knockback: 7.0, range: 2.0, angle: 45.0, energy_drain: 0, diff --git a/assets/common/abilities/unique/quadmedquick/triplestrike.ron b/assets/common/abilities/unique/quadmedquick/triplestrike.ron index bf7b8aed7e..1e1ed5b0a6 100644 --- a/assets/common/abilities/unique/quadmedquick/triplestrike.ron +++ b/assets/common/abilities/unique/quadmedquick/triplestrike.ron @@ -3,7 +3,6 @@ ComboMelee( ( stage: 1, base_damage: 150, - max_damage: 150, damage_increase: 0, knockback: 5.0, range: 3.5, @@ -16,7 +15,6 @@ ComboMelee( ( stage: 2, base_damage: 150, - max_damage: 150, damage_increase: 0, knockback: 5.0, range: 3.5, @@ -29,7 +27,6 @@ ComboMelee( ( stage: 3, base_damage: 150, - max_damage: 150, damage_increase: 0, knockback: 5.0, range: 3.5, @@ -45,5 +42,6 @@ ComboMelee( energy_increase: 0, speed_increase: 0.0, max_speed_increase: 1.0, + scales_from_combo: 0, is_interruptible: false, ) diff --git a/assets/common/abilities/unique/quadsmallbasic/singlestrike.ron b/assets/common/abilities/unique/quadsmallbasic/singlestrike.ron index 9f0b0f4c9c..7ad486426f 100644 --- a/assets/common/abilities/unique/quadsmallbasic/singlestrike.ron +++ b/assets/common/abilities/unique/quadsmallbasic/singlestrike.ron @@ -3,7 +3,6 @@ ComboMelee( ( stage: 1, base_damage: 30, - max_damage: 30, damage_increase: 0, knockback: 5.0, range: 3.5, @@ -19,5 +18,6 @@ ComboMelee( energy_increase: 0, speed_increase: 0.0, max_speed_increase: 1.0, + scales_from_combo: 0, is_interruptible: false, ) \ 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 1418f2ac85..9ee86add3c 100644 --- a/assets/common/abilities/unique/theropodbasic/singlestrike.ron +++ b/assets/common/abilities/unique/theropodbasic/singlestrike.ron @@ -3,7 +3,6 @@ ComboMelee( ( stage: 1, base_damage: 150, - max_damage: 150, damage_increase: 0, knockback: 5.0, range: 7.5, @@ -19,5 +18,6 @@ ComboMelee( energy_increase: 0, speed_increase: 0.0, max_speed_increase: 1.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 a6d0f4f076..21bdbbf300 100644 --- a/assets/common/abilities/unique/theropodbasic/triplestrike.ron +++ b/assets/common/abilities/unique/theropodbasic/triplestrike.ron @@ -3,7 +3,6 @@ ComboMelee( ( stage: 1, base_damage: 170, - max_damage: 170, damage_increase: 0, knockback: 10.0, range: 7.5, @@ -16,7 +15,6 @@ ComboMelee( ( stage: 2, base_damage: 190, - max_damage: 190, damage_increase: 0, knockback: 10.0, range: 5.5, @@ -29,7 +27,6 @@ ComboMelee( ( stage: 3, base_damage: 230, - max_damage: 230, damage_increase: 0, knockback: 10.0, range: 5.5, @@ -45,5 +42,6 @@ ComboMelee( energy_increase: 0, speed_increase: 0.0, max_speed_increase: 1.0, + scales_from_combo: 0, is_interruptible: false, ) diff --git a/assets/common/abilities/unique/theropodbird/singlestrike.ron b/assets/common/abilities/unique/theropodbird/singlestrike.ron index 6a80240dfd..e5b0ce3380 100644 --- a/assets/common/abilities/unique/theropodbird/singlestrike.ron +++ b/assets/common/abilities/unique/theropodbird/singlestrike.ron @@ -3,7 +3,6 @@ ComboMelee( ( stage: 1, base_damage: 150, - max_damage: 150, damage_increase: 0, knockback: 5.0, range: 5.5, @@ -19,5 +18,6 @@ ComboMelee( energy_increase: 0, speed_increase: 0.0, max_speed_increase: 1.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 dc19a3128c..edb93af186 100644 --- a/assets/common/abilities/unique/theropodbird/triplestrike.ron +++ b/assets/common/abilities/unique/theropodbird/triplestrike.ron @@ -3,7 +3,6 @@ ComboMelee( ( stage: 1, base_damage: 170, - max_damage: 170, damage_increase: 0, knockback: 10.0, range: 4.5, @@ -16,7 +15,6 @@ ComboMelee( ( stage: 2, base_damage: 190, - max_damage: 190, damage_increase: 0, knockback: 10.0, range: 4.0, @@ -29,7 +27,6 @@ ComboMelee( ( stage: 3, base_damage: 230, - max_damage: 230, damage_increase: 0, knockback: 10.0, range: 4.0, @@ -45,5 +42,6 @@ ComboMelee( energy_increase: 0, speed_increase: 0.0, max_speed_increase: 1.0, + scales_from_combo: 0, is_interruptible: false, ) diff --git a/common/src/comp/ability.rs b/common/src/comp/ability.rs index 4eef8dde99..9294bb08d8 100644 --- a/common/src/comp/ability.rs +++ b/common/src/comp/ability.rs @@ -49,7 +49,7 @@ impl From<&CharacterState> for CharacterAbilityType { CharacterState::SpinMelee(data) => Self::SpinMelee(data.stage_section), CharacterState::ChargedMelee(data) => Self::ChargedMelee(data.stage_section), CharacterState::ChargedRanged(_) => Self::ChargedRanged, - CharacterState::Shockwave(_) => Self::ChargedRanged, + CharacterState::Shockwave(_) => Self::Shockwave, CharacterState::BasicBeam(_) => Self::BasicBeam, CharacterState::RepeaterRanged(_) => Self::RepeaterRanged, _ => Self::BasicMelee, @@ -101,9 +101,9 @@ pub enum CharacterAbility { DashMelee { energy_cost: u32, base_damage: u32, - max_damage: u32, + scaled_damage: u32, base_knockback: f32, - max_knockback: f32, + scaled_knockback: f32, range: f32, angle: f32, energy_drain: u32, @@ -130,6 +130,7 @@ pub enum CharacterAbility { energy_increase: u32, speed_increase: f32, max_speed_increase: f32, + scales_from_combo: u32, is_interruptible: bool, }, LeapMelee { @@ -163,9 +164,9 @@ pub enum CharacterAbility { energy_cost: u32, energy_drain: u32, initial_damage: u32, - max_damage: u32, + scaled_damage: u32, initial_knockback: f32, - max_knockback: f32, + scaled_knockback: f32, range: f32, max_angle: f32, speed: f32, @@ -178,9 +179,9 @@ pub enum CharacterAbility { energy_cost: u32, energy_drain: u32, initial_damage: u32, - max_damage: u32, + scaled_damage: u32, initial_knockback: f32, - max_knockback: f32, + scaled_knockback: f32, speed: f32, buildup_duration: u64, charge_duration: u64, @@ -189,7 +190,7 @@ pub enum CharacterAbility { projectile_light: Option, projectile_gravity: Option, initial_projectile_speed: f32, - max_projectile_speed: f32, + scaled_projectile_speed: f32, }, Shockwave { energy_cost: u32, @@ -362,14 +363,14 @@ impl CharacterAbility { }, DashMelee { ref mut base_damage, - ref mut max_damage, + ref mut scaled_damage, ref mut buildup_duration, ref mut swing_duration, ref mut recover_duration, .. } => { *base_damage = (*base_damage as f32 * power) as u32; - *max_damage = (*max_damage as f32 * power) as u32; + *scaled_damage = (*scaled_damage as f32 * power) 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; @@ -421,7 +422,7 @@ impl CharacterAbility { }, ChargedMelee { ref mut initial_damage, - ref mut max_damage, + ref mut scaled_damage, speed: ref mut ability_speed, ref mut charge_duration, ref mut swing_duration, @@ -429,7 +430,7 @@ impl CharacterAbility { .. } => { *initial_damage = (*initial_damage as f32 * power) as u32; - *max_damage = (*max_damage as f32 * power) as u32; + *scaled_damage = (*scaled_damage as f32 * power) as u32; *ability_speed *= speed; *charge_duration = (*charge_duration as f32 / speed) as u64; *swing_duration = (*swing_duration as f32 / speed) as u64; @@ -437,7 +438,7 @@ impl CharacterAbility { }, ChargedRanged { ref mut initial_damage, - ref mut max_damage, + ref mut scaled_damage, speed: ref mut ability_speed, ref mut buildup_duration, ref mut charge_duration, @@ -445,7 +446,7 @@ impl CharacterAbility { .. } => { *initial_damage = (*initial_damage as f32 * power) as u32; - *max_damage = (*max_damage as f32 * power) as u32; + *scaled_damage = (*scaled_damage as f32 * power) as u32; *ability_speed *= speed; *buildup_duration = (*buildup_duration as f32 / speed) as u64; *charge_duration = (*charge_duration as f32 / speed) as u64; @@ -654,9 +655,9 @@ impl From<(&CharacterAbility, AbilityKey)> for CharacterState { CharacterAbility::DashMelee { energy_cost: _, base_damage, - max_damage, + scaled_damage, base_knockback, - max_knockback, + scaled_knockback, range, angle, energy_drain, @@ -670,9 +671,9 @@ impl From<(&CharacterAbility, AbilityKey)> for CharacterState { } => CharacterState::DashMelee(dash_melee::Data { static_data: dash_melee::StaticData { base_damage: *base_damage, - max_damage: *max_damage, + scaled_damage: *scaled_damage, base_knockback: *base_knockback, - max_knockback: *max_knockback, + scaled_knockback: *scaled_knockback, range: *range, angle: *angle, energy_drain: *energy_drain, @@ -718,6 +719,7 @@ impl From<(&CharacterAbility, AbilityKey)> for CharacterState { energy_increase, speed_increase, max_speed_increase, + scales_from_combo, is_interruptible, } => CharacterState::ComboMelee(combo_melee::Data { static_data: combo_melee::StaticData { @@ -728,6 +730,7 @@ impl From<(&CharacterAbility, AbilityKey)> for CharacterState { energy_increase: *energy_increase, speed_increase: 1.0 - *speed_increase, max_speed_increase: *max_speed_increase - 1.0, + scales_from_combo: *scales_from_combo, is_interruptible: *is_interruptible, ability_key: key, }, @@ -805,9 +808,9 @@ impl From<(&CharacterAbility, AbilityKey)> for CharacterState { energy_cost, energy_drain, initial_damage, - max_damage, + scaled_damage, initial_knockback, - max_knockback, + scaled_knockback, speed, charge_duration, swing_duration, @@ -820,9 +823,9 @@ impl From<(&CharacterAbility, AbilityKey)> for CharacterState { energy_cost: *energy_cost, energy_drain: *energy_drain, initial_damage: *initial_damage, - max_damage: *max_damage, + scaled_damage: *scaled_damage, initial_knockback: *initial_knockback, - max_knockback: *max_knockback, + scaled_knockback: *scaled_knockback, speed: *speed, range: *range, max_angle: *max_angle, @@ -841,9 +844,9 @@ impl From<(&CharacterAbility, AbilityKey)> for CharacterState { energy_cost: _, energy_drain, initial_damage, - max_damage, + scaled_damage, initial_knockback, - max_knockback, + scaled_knockback, speed, buildup_duration, charge_duration, @@ -852,7 +855,7 @@ impl From<(&CharacterAbility, AbilityKey)> for CharacterState { projectile_light, projectile_gravity, initial_projectile_speed, - max_projectile_speed, + scaled_projectile_speed, } => CharacterState::ChargedRanged(charged_ranged::Data { static_data: charged_ranged::StaticData { buildup_duration: Duration::from_millis(*buildup_duration), @@ -860,15 +863,15 @@ impl From<(&CharacterAbility, AbilityKey)> for CharacterState { recover_duration: Duration::from_millis(*recover_duration), energy_drain: *energy_drain, initial_damage: *initial_damage, - max_damage: *max_damage, + scaled_damage: *scaled_damage, speed: *speed, initial_knockback: *initial_knockback, - max_knockback: *max_knockback, + scaled_knockback: *scaled_knockback, projectile_body: *projectile_body, projectile_light: *projectile_light, projectile_gravity: *projectile_gravity, initial_projectile_speed: *initial_projectile_speed, - max_projectile_speed: *max_projectile_speed, + scaled_projectile_speed: *scaled_projectile_speed, ability_key: key, }, timer: Duration::default(), diff --git a/common/src/states/charged_melee.rs b/common/src/states/charged_melee.rs index 66c08d0369..21821d3a0c 100644 --- a/common/src/states/charged_melee.rs +++ b/common/src/states/charged_melee.rs @@ -18,12 +18,12 @@ pub struct StaticData { pub energy_cost: u32, /// How much damage is dealt with no charge pub initial_damage: u32, - /// How much damage is dealt with max charge - pub max_damage: u32, + /// How much the damage is scaled by + pub scaled_damage: u32, /// How much knockback there is with no charge pub initial_knockback: f32, - /// How much knockback there is at max charge - pub max_knockback: f32, + /// How much the knockback is scaled by + pub scaled_knockback: f32, /// Max range pub range: f32, /// Max angle (45.0 will give you a 90.0 angle window) @@ -148,17 +148,13 @@ impl CharacterBehavior for Data { exhausted: true, ..*self }); - let mut damage = Damage { + let damage = Damage { source: DamageSource::Melee, - value: self.static_data.max_damage as f32, + value: self.static_data.initial_damage as f32 + + self.charge_amount * self.static_data.scaled_damage as f32, }; - damage.interpolate_damage( - self.charge_amount, - self.static_data.initial_damage as f32, - ); let knockback = self.static_data.initial_knockback - + (self.static_data.max_knockback - self.static_data.initial_knockback) - * self.charge_amount; + + self.charge_amount * self.static_data.scaled_knockback; // Hit attempt data.updater.insert(data.entity, Attacking { diff --git a/common/src/states/charged_ranged.rs b/common/src/states/charged_ranged.rs index faf689a5eb..b48c5a26a2 100644 --- a/common/src/states/charged_ranged.rs +++ b/common/src/states/charged_ranged.rs @@ -28,12 +28,12 @@ pub struct StaticData { pub energy_drain: u32, /// How much damage is dealt with no charge pub initial_damage: u32, - /// How much damage is dealt with max charge - pub max_damage: u32, + /// How much the damage scales as it is charged + pub scaled_damage: u32, /// How much knockback there is with no charge pub initial_knockback: f32, - /// How much knockback there is at max charge - pub max_knockback: f32, + /// How much the knockback scales as it is charged + pub scaled_knockback: f32, /// Speed stat of the weapon pub speed: f32, /// Projectile information @@ -41,7 +41,7 @@ pub struct StaticData { pub projectile_light: Option, pub projectile_gravity: Option, pub initial_projectile_speed: f32, - pub max_projectile_speed: f32, + pub scaled_projectile_speed: f32, /// What key is used to press ability pub ability_key: AbilityKey, } @@ -100,15 +100,13 @@ impl CharacterBehavior for Data { let charge_frac = (self.timer.as_secs_f32() / self.static_data.charge_duration.as_secs_f32()) .min(1.0); - let mut damage = Damage { + let damage = Damage { source: DamageSource::Projectile, - value: self.static_data.max_damage as f32, + value: self.static_data.initial_damage as f32 + + charge_frac * self.static_data.scaled_damage as f32, }; - damage.interpolate_damage(charge_frac, self.static_data.initial_damage as f32); - let knockback = self.static_data.initial_knockback as f32 - + (charge_frac - * (self.static_data.max_knockback - self.static_data.initial_knockback) - as f32); + let knockback = self.static_data.initial_knockback + + charge_frac * self.static_data.scaled_knockback; // Fire let projectile = Projectile { hit_solid: vec![projectile::Effect::Stick], @@ -140,9 +138,7 @@ impl CharacterBehavior for Data { light: self.static_data.projectile_light, gravity: self.static_data.projectile_gravity, speed: self.static_data.initial_projectile_speed - + charge_frac - * (self.static_data.max_projectile_speed - - self.static_data.initial_projectile_speed), + + charge_frac * self.static_data.scaled_projectile_speed, }); update.character = CharacterState::ChargedRanged(Data { diff --git a/common/src/states/combo_melee.rs b/common/src/states/combo_melee.rs index c9ee836688..1410226cfd 100644 --- a/common/src/states/combo_melee.rs +++ b/common/src/states/combo_melee.rs @@ -15,8 +15,6 @@ pub struct Stage { pub stage: u32, /// Initial damage of stage pub base_damage: u32, - /// Max damage of stage - pub max_damage: u32, /// Damage scaling per combo pub damage_increase: u32, /// Knockback of stage @@ -41,7 +39,6 @@ impl Stage { Stage:: { stage: self.stage, base_damage: self.base_damage, - max_damage: self.max_damage, damage_increase: self.damage_increase, knockback: self.knockback, range: self.range, @@ -55,7 +52,6 @@ impl Stage { pub fn adjusted_by_stats(mut self, power: f32, speed: f32) -> Self { self.base_damage = (self.base_damage as f32 * power) as u32; - self.max_damage = (self.max_damage as f32 * power) as u32; self.damage_increase = (self.damage_increase as f32 * power) 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; @@ -82,6 +78,8 @@ pub struct StaticData { pub speed_increase: f32, /// (100% + max_speed_increase) is the max attack speed pub max_speed_increase: f32, + /// Number of times damage scales with combo + pub scales_from_combo: u32, /// Whether the state can be interrupted by other abilities pub is_interruptible: bool, /// What key is used to press ability @@ -153,11 +151,12 @@ impl CharacterBehavior for Data { }); // Hit attempt - let damage = self.static_data.stage_data[stage_index].max_damage.min( - self.static_data.stage_data[stage_index].base_damage - + self.combo / self.static_data.num_stages - * self.static_data.stage_data[stage_index].damage_increase, - ); + let damage = self.static_data.stage_data[stage_index].base_damage + + self + .static_data + .scales_from_combo + .min(self.combo / self.static_data.num_stages) + * self.static_data.stage_data[stage_index].damage_increase; data.updater.insert(data.entity, Attacking { damages: vec![(Some(GroupTarget::OutOfGroup), Damage { source: DamageSource::Melee, diff --git a/common/src/states/dash_melee.rs b/common/src/states/dash_melee.rs index 4d1fc98884..57b7437419 100644 --- a/common/src/states/dash_melee.rs +++ b/common/src/states/dash_melee.rs @@ -15,12 +15,12 @@ use vek::Vec3; pub struct StaticData { /// How much damage the attack initially does pub base_damage: u32, - /// How much damage the attack does at max charge distance - pub max_damage: u32, + /// How much the attack scales in damage + pub scaled_damage: u32, /// How much the attack knocks the target back initially pub base_knockback: f32, - /// How much knockback happens at max charge distance - pub max_knockback: f32, + /// How much the attack scales in knockback + pub scaled_knockback: f32, /// Range of the attack pub range: f32, /// Angle of the attack @@ -125,18 +125,13 @@ impl CharacterBehavior for Data { if !self.exhausted { // Hit attempt (also checks if player is moving) if update.vel.0.distance_squared(Vec3::zero()) > 1.0 { - let mut damage = Damage { + let damage = Damage { source: DamageSource::Melee, - value: self.static_data.max_damage as f32, + value: self.static_data.base_damage as f32 + + charge_frac * self.static_data.scaled_damage as f32, }; - damage.interpolate_damage( - charge_frac, - self.static_data.base_damage as f32, - ); - let knockback = (self.static_data.max_knockback - - self.static_data.base_knockback) - * charge_frac - + self.static_data.base_knockback; + 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)], range: self.static_data.range, diff --git a/voxygen/src/audio/sfx/event_mapper/combat/tests.rs b/voxygen/src/audio/sfx/event_mapper/combat/tests.rs index 5adf3d8b93..8793381422 100644 --- a/voxygen/src/audio/sfx/event_mapper/combat/tests.rs +++ b/voxygen/src/audio/sfx/event_mapper/combat/tests.rs @@ -126,7 +126,6 @@ fn matches_ability_stage() { stage_data: vec![states::combo_melee::Stage { stage: 1, base_damage: 100, - max_damage: 120, damage_increase: 10, knockback: 10.0, range: 4.0, @@ -141,6 +140,7 @@ fn matches_ability_stage() { energy_increase: 20, speed_increase: 0.05, max_speed_increase: 1.8, + scales_from_combo: 2, is_interruptible: true, ability_key: states::utils::AbilityKey::Mouse1, }, @@ -187,7 +187,6 @@ fn ignores_different_ability_stage() { stage_data: vec![states::combo_melee::Stage { stage: 1, base_damage: 100, - max_damage: 120, damage_increase: 10, knockback: 10.0, range: 4.0, @@ -202,6 +201,7 @@ fn ignores_different_ability_stage() { energy_increase: 20, speed_increase: 0.05, max_speed_increase: 1.8, + scales_from_combo: 2, is_interruptible: true, ability_key: states::utils::AbilityKey::Mouse1, },