Modified how most abilites that could scale were scaled.

This commit is contained in:
Sam 2020-12-07 22:00:24 -06:00
parent 96b4c67419
commit 490915d384
33 changed files with 106 additions and 139 deletions

View File

@ -3,7 +3,6 @@ ComboMelee(
( (
stage: 1, stage: 1,
base_damage: 90, base_damage: 90,
max_damage: 110,
damage_increase: 10, damage_increase: 10,
knockback: 8.0, knockback: 8.0,
range: 3.5, range: 3.5,
@ -16,7 +15,6 @@ ComboMelee(
( (
stage: 2, stage: 2,
base_damage: 130, base_damage: 130,
max_damage: 160,
damage_increase: 15, damage_increase: 15,
knockback: 12.0, knockback: 12.0,
range: 3.5, range: 3.5,
@ -32,5 +30,6 @@ ComboMelee(
energy_increase: 30, energy_increase: 30,
speed_increase: 0.075, speed_increase: 0.075,
max_speed_increase: 1.6, max_speed_increase: 1.6,
scales_from_combo: 2,
is_interruptible: false, is_interruptible: false,
) )

View File

@ -1,10 +1,10 @@
ChargedRanged( ChargedRanged(
energy_cost: 1, energy_cost: 1,
energy_drain: 300, energy_drain: 300,
initial_damage: 50, initial_damage: 10,
max_damage: 250, scaled_damage: 240,
initial_knockback: 10.0, initial_knockback: 10.0,
max_knockback: 20.0, scaled_knockback: 10.0,
speed: 1.0, speed: 1.0,
buildup_duration: 100, buildup_duration: 100,
charge_duration: 1500, charge_duration: 1500,
@ -13,5 +13,5 @@ ChargedRanged(
projectile_light: None, projectile_light: None,
projectile_gravity: Some(Gravity(0.2)), projectile_gravity: Some(Gravity(0.2)),
initial_projectile_speed: 100.0, initial_projectile_speed: 100.0,
max_projectile_speed: 500.0, scaled_projectile_speed: 400.0,
) )

View File

@ -2,9 +2,9 @@ ChargedMelee(
energy_cost: 1, energy_cost: 1,
energy_drain: 300, energy_drain: 300,
initial_damage: 10, initial_damage: 10,
max_damage: 170, scaled_damage: 160,
initial_knockback: 10.0, initial_knockback: 10.0,
max_knockback: 60.0, scaled_knockback: 50.0,
range: 3.5, range: 3.5,
max_angle: 30.0, max_angle: 30.0,
speed: 1.0, speed: 1.0,

View File

@ -2,7 +2,6 @@ ComboMelee(
stage_data: [( stage_data: [(
stage: 1, stage: 1,
base_damage: 130, base_damage: 130,
max_damage: 150,
damage_increase: 10, damage_increase: 10,
knockback: 0.0, knockback: 0.0,
range: 4.5, range: 4.5,
@ -17,5 +16,6 @@ ComboMelee(
energy_increase: 50, energy_increase: 50,
speed_increase: 0.05, speed_increase: 0.05,
max_speed_increase: 1.4, max_speed_increase: 1.4,
scales_from_combo: 2,
is_interruptible: false, is_interruptible: false,
) )

View File

@ -1,9 +1,9 @@
DashMelee( DashMelee(
energy_cost: 100, energy_cost: 100,
base_damage: 80, base_damage: 80,
max_damage: 240, scaled_damage: 160,
base_knockback: 8.0, base_knockback: 8.0,
max_knockback: 15.0, scaled_knockback: 7.0,
range: 5.0, range: 5.0,
angle: 45.0, angle: 45.0,
energy_drain: 600, energy_drain: 600,

View File

@ -3,7 +3,6 @@ ComboMelee(
( (
stage: 1, stage: 1,
base_damage: 100, base_damage: 100,
max_damage: 120,
damage_increase: 10, damage_increase: 10,
knockback: 10.0, knockback: 10.0,
range: 4.0, range: 4.0,
@ -16,7 +15,6 @@ ComboMelee(
( (
stage: 2, stage: 2,
base_damage: 80, base_damage: 80,
max_damage: 110,
damage_increase: 15, damage_increase: 15,
knockback: 12.0, knockback: 12.0,
range: 3.5, range: 3.5,
@ -29,7 +27,6 @@ ComboMelee(
( (
stage: 3, stage: 3,
base_damage: 130, base_damage: 130,
max_damage: 170,
damage_increase: 20, damage_increase: 20,
knockback: 14.0, knockback: 14.0,
range: 6.0, range: 6.0,
@ -45,5 +42,6 @@ ComboMelee(
energy_increase: 25, energy_increase: 25,
speed_increase: 0.1, speed_increase: 0.1,
max_speed_increase: 1.8, max_speed_increase: 1.8,
scales_from_combo: 2,
is_interruptible: true, is_interruptible: true,
) )

View File

@ -3,7 +3,6 @@ ComboMelee(
( (
stage: 1, stage: 1,
base_damage: 100, base_damage: 100,
max_damage: 100,
damage_increase: 0, damage_increase: 0,
knockback: 5.0, knockback: 5.0,
range: 3.5, range: 3.5,
@ -19,5 +18,6 @@ ComboMelee(
energy_increase: 0, energy_increase: 0,
speed_increase: 0.0, speed_increase: 0.0,
max_speed_increase: 1.0, max_speed_increase: 1.0,
scales_from_combo: 0,
is_interruptible: false, is_interruptible: false,
) )

View File

@ -3,7 +3,6 @@ ComboMelee(
( (
stage: 1, stage: 1,
base_damage: 120, base_damage: 120,
max_damage: 120,
damage_increase: 0, damage_increase: 0,
knockback: 10.0, knockback: 10.0,
range: 3.5, range: 3.5,
@ -16,7 +15,6 @@ ComboMelee(
( (
stage: 2, stage: 2,
base_damage: 80, base_damage: 80,
max_damage: 80,
damage_increase: 0, damage_increase: 0,
knockback: 10.0, knockback: 10.0,
range: 3.5, range: 3.5,
@ -29,7 +27,6 @@ ComboMelee(
( (
stage: 3, stage: 3,
base_damage: 130, base_damage: 130,
max_damage: 130,
damage_increase: 0, damage_increase: 0,
knockback: 10.0, knockback: 10.0,
range: 3.5, range: 3.5,
@ -45,5 +42,6 @@ ComboMelee(
energy_increase: 0, energy_increase: 0,
speed_increase: 0.0, speed_increase: 0.0,
max_speed_increase: 1.0, max_speed_increase: 1.0,
scales_from_combo: 0,
is_interruptible: false, is_interruptible: false,
) )

View File

@ -1,9 +1,9 @@
DashMelee( DashMelee(
energy_cost: 0, energy_cost: 0,
base_damage: 150, base_damage: 150,
max_damage: 260, scaled_damage: 110,
base_knockback: 8.0, base_knockback: 8.0,
max_knockback: 25.0, scaled_knockback: 17.0,
range: 5.0, range: 5.0,
angle: 45.0, angle: 45.0,
energy_drain: 0, energy_drain: 0,

View File

@ -3,7 +3,6 @@ ComboMelee(
( (
stage: 1, stage: 1,
base_damage: 100, base_damage: 100,
max_damage: 100,
damage_increase: 0, damage_increase: 0,
knockback: 10.0, knockback: 10.0,
range: 4.5, range: 4.5,
@ -16,7 +15,6 @@ ComboMelee(
( (
stage: 2, stage: 2,
base_damage: 80, base_damage: 80,
max_damage: 80,
damage_increase: 0, damage_increase: 0,
knockback: 10.0, knockback: 10.0,
range: 3.5, range: 3.5,
@ -29,7 +27,6 @@ ComboMelee(
( (
stage: 3, stage: 3,
base_damage: 130, base_damage: 130,
max_damage: 130,
damage_increase: 0, damage_increase: 0,
knockback: 10.0, knockback: 10.0,
range: 3.5, range: 3.5,
@ -45,5 +42,6 @@ ComboMelee(
energy_increase: 0, energy_increase: 0,
speed_increase: 0.0, speed_increase: 0.0,
max_speed_increase: 1.0, max_speed_increase: 1.0,
scales_from_combo: 0,
is_interruptible: false, is_interruptible: false,
) )

View File

@ -1,9 +1,9 @@
DashMelee( DashMelee(
energy_cost: 0, energy_cost: 0,
base_damage: 30, base_damage: 30,
max_damage: 40, scaled_damage: 10,
base_knockback: 8.0, base_knockback: 8.0,
max_knockback: 15.0, scaled_knockback: 7.0,
range: 2.0, range: 2.0,
angle: 45.0, angle: 45.0,
energy_drain: 0, energy_drain: 0,

View File

@ -3,7 +3,6 @@ ComboMelee(
( (
stage: 1, stage: 1,
base_damage: 100, base_damage: 100,
max_damage: 100,
damage_increase: 0, damage_increase: 0,
knockback: 2.0, knockback: 2.0,
range: 3.5, range: 3.5,
@ -16,7 +15,6 @@ ComboMelee(
( (
stage: 2, stage: 2,
base_damage: 130, base_damage: 130,
max_damage: 130,
damage_increase: 0, damage_increase: 0,
knockback: 2.0, knockback: 2.0,
range: 3.5, range: 3.5,
@ -29,7 +27,6 @@ ComboMelee(
( (
stage: 3, stage: 3,
base_damage: 130, base_damage: 130,
max_damage: 130,
damage_increase: 0, damage_increase: 0,
knockback: 2.0, knockback: 2.0,
range: 3.5, range: 3.5,
@ -42,7 +39,6 @@ ComboMelee(
( (
stage: 4, stage: 4,
base_damage: 130, base_damage: 130,
max_damage: 130,
damage_increase: 0, damage_increase: 0,
knockback: 8.0, knockback: 8.0,
range: 3.5, range: 3.5,
@ -58,5 +54,6 @@ ComboMelee(
energy_increase: 0, energy_increase: 0,
speed_increase: 0.0, speed_increase: 0.0,
max_speed_increase: 1.0, max_speed_increase: 1.0,
scales_from_combo: 0,
is_interruptible: false, is_interruptible: false,
) )

View File

@ -3,7 +3,6 @@ ComboMelee(
( (
stage: 1, stage: 1,
base_damage: 60, base_damage: 60,
max_damage: 60,
damage_increase: 0, damage_increase: 0,
knockback: 5.0, knockback: 5.0,
range: 3.5, range: 3.5,
@ -19,5 +18,6 @@ ComboMelee(
energy_increase: 0, energy_increase: 0,
speed_increase: 0.0, speed_increase: 0.0,
max_speed_increase: 1.0, max_speed_increase: 1.0,
scales_from_combo: 0,
is_interruptible: false, is_interruptible: false,
) )

View File

@ -2,9 +2,9 @@ ChargedMelee(
energy_cost: 0, energy_cost: 0,
energy_drain: 0, energy_drain: 0,
initial_damage: 160, initial_damage: 160,
max_damage: 200, scaled_damage: 40,
initial_knockback: 10.0, initial_knockback: 10.0,
max_knockback: 30.0, scaled_knockback: 20.0,
range: 6.0, range: 6.0,
max_angle: 90.0, max_angle: 90.0,
speed: 1.0, speed: 1.0,

View File

@ -3,7 +3,6 @@ ComboMelee(
( (
stage: 1, stage: 1,
base_damage: 100, base_damage: 100,
max_damage: 100,
damage_increase: 0, damage_increase: 0,
knockback: 10.0, knockback: 10.0,
range: 3.5, range: 3.5,
@ -16,7 +15,6 @@ ComboMelee(
( (
stage: 2, stage: 2,
base_damage: 120, base_damage: 120,
max_damage: 120,
damage_increase: 0, damage_increase: 0,
knockback: 10.0, knockback: 10.0,
range: 3.5, range: 3.5,
@ -29,7 +27,6 @@ ComboMelee(
( (
stage: 3, stage: 3,
base_damage: 130, base_damage: 130,
max_damage: 130,
damage_increase: 0, damage_increase: 0,
knockback: 10.0, knockback: 10.0,
range: 3.5, range: 3.5,
@ -45,5 +42,6 @@ ComboMelee(
energy_increase: 0, energy_increase: 0,
speed_increase: 0.0, speed_increase: 0.0,
max_speed_increase: 1.0, max_speed_increase: 1.0,
scales_from_combo: 0,
is_interruptible: false, is_interruptible: false,
) )

View File

@ -3,7 +3,6 @@ ComboMelee(
( (
stage: 1, stage: 1,
base_damage: 120, base_damage: 120,
max_damage: 120,
damage_increase: 0, damage_increase: 0,
knockback: 5.0, knockback: 5.0,
range: 3.5, range: 3.5,
@ -19,5 +18,6 @@ ComboMelee(
energy_increase: 0, energy_increase: 0,
speed_increase: 0.0, speed_increase: 0.0,
max_speed_increase: 1.0, max_speed_increase: 1.0,
scales_from_combo: 0,
is_interruptible: false, is_interruptible: false,
) )

View File

@ -3,7 +3,6 @@ ComboMelee(
( (
stage: 1, stage: 1,
base_damage: 120, base_damage: 120,
max_damage: 120,
damage_increase: 0, damage_increase: 0,
knockback: 10.0, knockback: 10.0,
range: 3.5, range: 3.5,
@ -16,7 +15,6 @@ ComboMelee(
( (
stage: 2, stage: 2,
base_damage: 120, base_damage: 120,
max_damage: 120,
damage_increase: 0, damage_increase: 0,
knockback: 10.0, knockback: 10.0,
range: 3.5, range: 3.5,
@ -29,7 +27,6 @@ ComboMelee(
( (
stage: 3, stage: 3,
base_damage: 120, base_damage: 120,
max_damage: 120,
damage_increase: 0, damage_increase: 0,
knockback: 10.0, knockback: 10.0,
range: 3.5, range: 3.5,
@ -45,5 +42,6 @@ ComboMelee(
energy_increase: 0, energy_increase: 0,
speed_increase: 0.0, speed_increase: 0.0,
max_speed_increase: 1.0, max_speed_increase: 1.0,
scales_from_combo: 0,
is_interruptible: false, is_interruptible: false,
) )

View File

@ -1,9 +1,9 @@
DashMelee( DashMelee(
energy_cost: 0, energy_cost: 0,
base_damage: 150, base_damage: 150,
max_damage: 190, scaled_damage: 40,
base_knockback: 8.0, base_knockback: 8.0,
max_knockback: 25.0, scaled_knockback: 17.0,
range: 4.0, range: 4.0,
angle: 45.0, angle: 45.0,
energy_drain: 0, energy_drain: 0,

View File

@ -3,7 +3,6 @@ ComboMelee(
( (
stage: 1, stage: 1,
base_damage: 100, base_damage: 100,
max_damage: 100,
damage_increase: 0, damage_increase: 0,
knockback: 10.0, knockback: 10.0,
range: 3.5, range: 3.5,
@ -16,7 +15,6 @@ ComboMelee(
( (
stage: 2, stage: 2,
base_damage: 80, base_damage: 80,
max_damage: 80,
damage_increase: 0, damage_increase: 0,
knockback: 10.0, knockback: 10.0,
range: 3.5, range: 3.5,
@ -32,5 +30,6 @@ ComboMelee(
energy_increase: 0, energy_increase: 0,
speed_increase: 0.0, speed_increase: 0.0,
max_speed_increase: 1.0, max_speed_increase: 1.0,
scales_from_combo: 0,
is_interruptible: false, is_interruptible: false,
) )

View File

@ -3,7 +3,6 @@ ComboMelee(
( (
stage: 1, stage: 1,
base_damage: 100, base_damage: 100,
max_damage: 100,
damage_increase: 0, damage_increase: 0,
knockback: 8.0, knockback: 8.0,
range: 3.5, range: 3.5,
@ -16,7 +15,6 @@ ComboMelee(
( (
stage: 2, stage: 2,
base_damage: 80, base_damage: 80,
max_damage: 80,
damage_increase: 0, damage_increase: 0,
knockback: 8.0, knockback: 8.0,
range: 3.5, range: 3.5,
@ -32,5 +30,6 @@ ComboMelee(
energy_increase: 0, energy_increase: 0,
speed_increase: 0.0, speed_increase: 0.0,
max_speed_increase: 1.0, max_speed_increase: 1.0,
scales_from_combo: 0,
is_interruptible: false, is_interruptible: false,
) )

View File

@ -1,9 +1,9 @@
DashMelee( DashMelee(
energy_cost: 0, energy_cost: 0,
base_damage: 130, base_damage: 130,
max_damage: 150, scaled_damage: 20,
base_knockback: 8.0, base_knockback: 8.0,
max_knockback: 15.0, scaled_knockback: 7.0,
range: 2.0, range: 2.0,
angle: 45.0, angle: 45.0,
energy_drain: 0, energy_drain: 0,

View File

@ -3,7 +3,6 @@ ComboMelee(
( (
stage: 1, stage: 1,
base_damage: 150, base_damage: 150,
max_damage: 150,
damage_increase: 0, damage_increase: 0,
knockback: 5.0, knockback: 5.0,
range: 3.5, range: 3.5,
@ -16,7 +15,6 @@ ComboMelee(
( (
stage: 2, stage: 2,
base_damage: 150, base_damage: 150,
max_damage: 150,
damage_increase: 0, damage_increase: 0,
knockback: 5.0, knockback: 5.0,
range: 3.5, range: 3.5,
@ -29,7 +27,6 @@ ComboMelee(
( (
stage: 3, stage: 3,
base_damage: 150, base_damage: 150,
max_damage: 150,
damage_increase: 0, damage_increase: 0,
knockback: 5.0, knockback: 5.0,
range: 3.5, range: 3.5,
@ -45,5 +42,6 @@ ComboMelee(
energy_increase: 0, energy_increase: 0,
speed_increase: 0.0, speed_increase: 0.0,
max_speed_increase: 1.0, max_speed_increase: 1.0,
scales_from_combo: 0,
is_interruptible: false, is_interruptible: false,
) )

View File

@ -3,7 +3,6 @@ ComboMelee(
( (
stage: 1, stage: 1,
base_damage: 30, base_damage: 30,
max_damage: 30,
damage_increase: 0, damage_increase: 0,
knockback: 5.0, knockback: 5.0,
range: 3.5, range: 3.5,
@ -19,5 +18,6 @@ ComboMelee(
energy_increase: 0, energy_increase: 0,
speed_increase: 0.0, speed_increase: 0.0,
max_speed_increase: 1.0, max_speed_increase: 1.0,
scales_from_combo: 0,
is_interruptible: false, is_interruptible: false,
) )

View File

@ -3,7 +3,6 @@ ComboMelee(
( (
stage: 1, stage: 1,
base_damage: 150, base_damage: 150,
max_damage: 150,
damage_increase: 0, damage_increase: 0,
knockback: 5.0, knockback: 5.0,
range: 7.5, range: 7.5,
@ -19,5 +18,6 @@ ComboMelee(
energy_increase: 0, energy_increase: 0,
speed_increase: 0.0, speed_increase: 0.0,
max_speed_increase: 1.0, max_speed_increase: 1.0,
scales_from_combo: 0,
is_interruptible: false, is_interruptible: false,
) )

View File

@ -3,7 +3,6 @@ ComboMelee(
( (
stage: 1, stage: 1,
base_damage: 170, base_damage: 170,
max_damage: 170,
damage_increase: 0, damage_increase: 0,
knockback: 10.0, knockback: 10.0,
range: 7.5, range: 7.5,
@ -16,7 +15,6 @@ ComboMelee(
( (
stage: 2, stage: 2,
base_damage: 190, base_damage: 190,
max_damage: 190,
damage_increase: 0, damage_increase: 0,
knockback: 10.0, knockback: 10.0,
range: 5.5, range: 5.5,
@ -29,7 +27,6 @@ ComboMelee(
( (
stage: 3, stage: 3,
base_damage: 230, base_damage: 230,
max_damage: 230,
damage_increase: 0, damage_increase: 0,
knockback: 10.0, knockback: 10.0,
range: 5.5, range: 5.5,
@ -45,5 +42,6 @@ ComboMelee(
energy_increase: 0, energy_increase: 0,
speed_increase: 0.0, speed_increase: 0.0,
max_speed_increase: 1.0, max_speed_increase: 1.0,
scales_from_combo: 0,
is_interruptible: false, is_interruptible: false,
) )

View File

@ -3,7 +3,6 @@ ComboMelee(
( (
stage: 1, stage: 1,
base_damage: 150, base_damage: 150,
max_damage: 150,
damage_increase: 0, damage_increase: 0,
knockback: 5.0, knockback: 5.0,
range: 5.5, range: 5.5,
@ -19,5 +18,6 @@ ComboMelee(
energy_increase: 0, energy_increase: 0,
speed_increase: 0.0, speed_increase: 0.0,
max_speed_increase: 1.0, max_speed_increase: 1.0,
scales_from_combo: 0,
is_interruptible: false, is_interruptible: false,
) )

View File

@ -3,7 +3,6 @@ ComboMelee(
( (
stage: 1, stage: 1,
base_damage: 170, base_damage: 170,
max_damage: 170,
damage_increase: 0, damage_increase: 0,
knockback: 10.0, knockback: 10.0,
range: 4.5, range: 4.5,
@ -16,7 +15,6 @@ ComboMelee(
( (
stage: 2, stage: 2,
base_damage: 190, base_damage: 190,
max_damage: 190,
damage_increase: 0, damage_increase: 0,
knockback: 10.0, knockback: 10.0,
range: 4.0, range: 4.0,
@ -29,7 +27,6 @@ ComboMelee(
( (
stage: 3, stage: 3,
base_damage: 230, base_damage: 230,
max_damage: 230,
damage_increase: 0, damage_increase: 0,
knockback: 10.0, knockback: 10.0,
range: 4.0, range: 4.0,
@ -45,5 +42,6 @@ ComboMelee(
energy_increase: 0, energy_increase: 0,
speed_increase: 0.0, speed_increase: 0.0,
max_speed_increase: 1.0, max_speed_increase: 1.0,
scales_from_combo: 0,
is_interruptible: false, is_interruptible: false,
) )

View File

@ -49,7 +49,7 @@ impl From<&CharacterState> for CharacterAbilityType {
CharacterState::SpinMelee(data) => Self::SpinMelee(data.stage_section), CharacterState::SpinMelee(data) => Self::SpinMelee(data.stage_section),
CharacterState::ChargedMelee(data) => Self::ChargedMelee(data.stage_section), CharacterState::ChargedMelee(data) => Self::ChargedMelee(data.stage_section),
CharacterState::ChargedRanged(_) => Self::ChargedRanged, CharacterState::ChargedRanged(_) => Self::ChargedRanged,
CharacterState::Shockwave(_) => Self::ChargedRanged, CharacterState::Shockwave(_) => Self::Shockwave,
CharacterState::BasicBeam(_) => Self::BasicBeam, CharacterState::BasicBeam(_) => Self::BasicBeam,
CharacterState::RepeaterRanged(_) => Self::RepeaterRanged, CharacterState::RepeaterRanged(_) => Self::RepeaterRanged,
_ => Self::BasicMelee, _ => Self::BasicMelee,
@ -101,9 +101,9 @@ pub enum CharacterAbility {
DashMelee { DashMelee {
energy_cost: u32, energy_cost: u32,
base_damage: u32, base_damage: u32,
max_damage: u32, scaled_damage: u32,
base_knockback: f32, base_knockback: f32,
max_knockback: f32, scaled_knockback: f32,
range: f32, range: f32,
angle: f32, angle: f32,
energy_drain: u32, energy_drain: u32,
@ -130,6 +130,7 @@ pub enum CharacterAbility {
energy_increase: u32, energy_increase: u32,
speed_increase: f32, speed_increase: f32,
max_speed_increase: f32, max_speed_increase: f32,
scales_from_combo: u32,
is_interruptible: bool, is_interruptible: bool,
}, },
LeapMelee { LeapMelee {
@ -163,9 +164,9 @@ pub enum CharacterAbility {
energy_cost: u32, energy_cost: u32,
energy_drain: u32, energy_drain: u32,
initial_damage: u32, initial_damage: u32,
max_damage: u32, scaled_damage: u32,
initial_knockback: f32, initial_knockback: f32,
max_knockback: f32, scaled_knockback: f32,
range: f32, range: f32,
max_angle: f32, max_angle: f32,
speed: f32, speed: f32,
@ -178,9 +179,9 @@ pub enum CharacterAbility {
energy_cost: u32, energy_cost: u32,
energy_drain: u32, energy_drain: u32,
initial_damage: u32, initial_damage: u32,
max_damage: u32, scaled_damage: u32,
initial_knockback: f32, initial_knockback: f32,
max_knockback: f32, scaled_knockback: f32,
speed: f32, speed: f32,
buildup_duration: u64, buildup_duration: u64,
charge_duration: u64, charge_duration: u64,
@ -189,7 +190,7 @@ pub enum CharacterAbility {
projectile_light: Option<LightEmitter>, projectile_light: Option<LightEmitter>,
projectile_gravity: Option<Gravity>, projectile_gravity: Option<Gravity>,
initial_projectile_speed: f32, initial_projectile_speed: f32,
max_projectile_speed: f32, scaled_projectile_speed: f32,
}, },
Shockwave { Shockwave {
energy_cost: u32, energy_cost: u32,
@ -362,14 +363,14 @@ impl CharacterAbility {
}, },
DashMelee { DashMelee {
ref mut base_damage, ref mut base_damage,
ref mut max_damage, ref mut scaled_damage,
ref mut buildup_duration, ref mut buildup_duration,
ref mut swing_duration, ref mut swing_duration,
ref mut recover_duration, ref mut recover_duration,
.. ..
} => { } => {
*base_damage = (*base_damage as f32 * power) as u32; *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; *buildup_duration = (*buildup_duration as f32 / speed) as u64;
*swing_duration = (*swing_duration as f32 / speed) as u64; *swing_duration = (*swing_duration as f32 / speed) as u64;
*recover_duration = (*recover_duration as f32 / speed) as u64; *recover_duration = (*recover_duration as f32 / speed) as u64;
@ -421,7 +422,7 @@ impl CharacterAbility {
}, },
ChargedMelee { ChargedMelee {
ref mut initial_damage, ref mut initial_damage,
ref mut max_damage, ref mut scaled_damage,
speed: ref mut ability_speed, speed: ref mut ability_speed,
ref mut charge_duration, ref mut charge_duration,
ref mut swing_duration, ref mut swing_duration,
@ -429,7 +430,7 @@ impl CharacterAbility {
.. ..
} => { } => {
*initial_damage = (*initial_damage as f32 * power) as u32; *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; *ability_speed *= speed;
*charge_duration = (*charge_duration as f32 / speed) as u64; *charge_duration = (*charge_duration as f32 / speed) as u64;
*swing_duration = (*swing_duration as f32 / speed) as u64; *swing_duration = (*swing_duration as f32 / speed) as u64;
@ -437,7 +438,7 @@ impl CharacterAbility {
}, },
ChargedRanged { ChargedRanged {
ref mut initial_damage, ref mut initial_damage,
ref mut max_damage, ref mut scaled_damage,
speed: ref mut ability_speed, speed: ref mut ability_speed,
ref mut buildup_duration, ref mut buildup_duration,
ref mut charge_duration, ref mut charge_duration,
@ -445,7 +446,7 @@ impl CharacterAbility {
.. ..
} => { } => {
*initial_damage = (*initial_damage as f32 * power) as u32; *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; *ability_speed *= speed;
*buildup_duration = (*buildup_duration as f32 / speed) as u64; *buildup_duration = (*buildup_duration as f32 / speed) as u64;
*charge_duration = (*charge_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 { CharacterAbility::DashMelee {
energy_cost: _, energy_cost: _,
base_damage, base_damage,
max_damage, scaled_damage,
base_knockback, base_knockback,
max_knockback, scaled_knockback,
range, range,
angle, angle,
energy_drain, energy_drain,
@ -670,9 +671,9 @@ impl From<(&CharacterAbility, AbilityKey)> for CharacterState {
} => CharacterState::DashMelee(dash_melee::Data { } => CharacterState::DashMelee(dash_melee::Data {
static_data: dash_melee::StaticData { static_data: dash_melee::StaticData {
base_damage: *base_damage, base_damage: *base_damage,
max_damage: *max_damage, scaled_damage: *scaled_damage,
base_knockback: *base_knockback, base_knockback: *base_knockback,
max_knockback: *max_knockback, scaled_knockback: *scaled_knockback,
range: *range, range: *range,
angle: *angle, angle: *angle,
energy_drain: *energy_drain, energy_drain: *energy_drain,
@ -718,6 +719,7 @@ impl From<(&CharacterAbility, AbilityKey)> for CharacterState {
energy_increase, energy_increase,
speed_increase, speed_increase,
max_speed_increase, max_speed_increase,
scales_from_combo,
is_interruptible, is_interruptible,
} => CharacterState::ComboMelee(combo_melee::Data { } => CharacterState::ComboMelee(combo_melee::Data {
static_data: combo_melee::StaticData { static_data: combo_melee::StaticData {
@ -728,6 +730,7 @@ impl From<(&CharacterAbility, AbilityKey)> for CharacterState {
energy_increase: *energy_increase, energy_increase: *energy_increase,
speed_increase: 1.0 - *speed_increase, speed_increase: 1.0 - *speed_increase,
max_speed_increase: *max_speed_increase - 1.0, max_speed_increase: *max_speed_increase - 1.0,
scales_from_combo: *scales_from_combo,
is_interruptible: *is_interruptible, is_interruptible: *is_interruptible,
ability_key: key, ability_key: key,
}, },
@ -805,9 +808,9 @@ impl From<(&CharacterAbility, AbilityKey)> for CharacterState {
energy_cost, energy_cost,
energy_drain, energy_drain,
initial_damage, initial_damage,
max_damage, scaled_damage,
initial_knockback, initial_knockback,
max_knockback, scaled_knockback,
speed, speed,
charge_duration, charge_duration,
swing_duration, swing_duration,
@ -820,9 +823,9 @@ impl From<(&CharacterAbility, AbilityKey)> for CharacterState {
energy_cost: *energy_cost, energy_cost: *energy_cost,
energy_drain: *energy_drain, energy_drain: *energy_drain,
initial_damage: *initial_damage, initial_damage: *initial_damage,
max_damage: *max_damage, scaled_damage: *scaled_damage,
initial_knockback: *initial_knockback, initial_knockback: *initial_knockback,
max_knockback: *max_knockback, scaled_knockback: *scaled_knockback,
speed: *speed, speed: *speed,
range: *range, range: *range,
max_angle: *max_angle, max_angle: *max_angle,
@ -841,9 +844,9 @@ impl From<(&CharacterAbility, AbilityKey)> for CharacterState {
energy_cost: _, energy_cost: _,
energy_drain, energy_drain,
initial_damage, initial_damage,
max_damage, scaled_damage,
initial_knockback, initial_knockback,
max_knockback, scaled_knockback,
speed, speed,
buildup_duration, buildup_duration,
charge_duration, charge_duration,
@ -852,7 +855,7 @@ impl From<(&CharacterAbility, AbilityKey)> for CharacterState {
projectile_light, projectile_light,
projectile_gravity, projectile_gravity,
initial_projectile_speed, initial_projectile_speed,
max_projectile_speed, scaled_projectile_speed,
} => CharacterState::ChargedRanged(charged_ranged::Data { } => CharacterState::ChargedRanged(charged_ranged::Data {
static_data: charged_ranged::StaticData { static_data: charged_ranged::StaticData {
buildup_duration: Duration::from_millis(*buildup_duration), buildup_duration: Duration::from_millis(*buildup_duration),
@ -860,15 +863,15 @@ impl From<(&CharacterAbility, AbilityKey)> for CharacterState {
recover_duration: Duration::from_millis(*recover_duration), recover_duration: Duration::from_millis(*recover_duration),
energy_drain: *energy_drain, energy_drain: *energy_drain,
initial_damage: *initial_damage, initial_damage: *initial_damage,
max_damage: *max_damage, scaled_damage: *scaled_damage,
speed: *speed, speed: *speed,
initial_knockback: *initial_knockback, initial_knockback: *initial_knockback,
max_knockback: *max_knockback, scaled_knockback: *scaled_knockback,
projectile_body: *projectile_body, projectile_body: *projectile_body,
projectile_light: *projectile_light, projectile_light: *projectile_light,
projectile_gravity: *projectile_gravity, projectile_gravity: *projectile_gravity,
initial_projectile_speed: *initial_projectile_speed, initial_projectile_speed: *initial_projectile_speed,
max_projectile_speed: *max_projectile_speed, scaled_projectile_speed: *scaled_projectile_speed,
ability_key: key, ability_key: key,
}, },
timer: Duration::default(), timer: Duration::default(),

View File

@ -18,12 +18,12 @@ pub struct StaticData {
pub energy_cost: u32, pub energy_cost: u32,
/// How much damage is dealt with no charge /// How much damage is dealt with no charge
pub initial_damage: u32, pub initial_damage: u32,
/// How much damage is dealt with max charge /// How much the damage is scaled by
pub max_damage: u32, pub scaled_damage: u32,
/// How much knockback there is with no charge /// How much knockback there is with no charge
pub initial_knockback: f32, pub initial_knockback: f32,
/// How much knockback there is at max charge /// How much the knockback is scaled by
pub max_knockback: f32, pub scaled_knockback: f32,
/// Max range /// Max range
pub range: f32, pub range: f32,
/// Max angle (45.0 will give you a 90.0 angle window) /// Max angle (45.0 will give you a 90.0 angle window)
@ -148,17 +148,13 @@ impl CharacterBehavior for Data {
exhausted: true, exhausted: true,
..*self ..*self
}); });
let mut damage = Damage { let damage = Damage {
source: DamageSource::Melee, 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 let knockback = self.static_data.initial_knockback
+ (self.static_data.max_knockback - self.static_data.initial_knockback) + self.charge_amount * self.static_data.scaled_knockback;
* self.charge_amount;
// Hit attempt // Hit attempt
data.updater.insert(data.entity, Attacking { data.updater.insert(data.entity, Attacking {

View File

@ -28,12 +28,12 @@ pub struct StaticData {
pub energy_drain: u32, pub energy_drain: u32,
/// How much damage is dealt with no charge /// How much damage is dealt with no charge
pub initial_damage: u32, pub initial_damage: u32,
/// How much damage is dealt with max charge /// How much the damage scales as it is charged
pub max_damage: u32, pub scaled_damage: u32,
/// How much knockback there is with no charge /// How much knockback there is with no charge
pub initial_knockback: f32, pub initial_knockback: f32,
/// How much knockback there is at max charge /// How much the knockback scales as it is charged
pub max_knockback: f32, pub scaled_knockback: f32,
/// Speed stat of the weapon /// Speed stat of the weapon
pub speed: f32, pub speed: f32,
/// Projectile information /// Projectile information
@ -41,7 +41,7 @@ pub struct StaticData {
pub projectile_light: Option<LightEmitter>, pub projectile_light: Option<LightEmitter>,
pub projectile_gravity: Option<Gravity>, pub projectile_gravity: Option<Gravity>,
pub initial_projectile_speed: f32, pub initial_projectile_speed: f32,
pub max_projectile_speed: f32, pub scaled_projectile_speed: f32,
/// What key is used to press ability /// What key is used to press ability
pub ability_key: AbilityKey, pub ability_key: AbilityKey,
} }
@ -100,15 +100,13 @@ impl CharacterBehavior for Data {
let charge_frac = (self.timer.as_secs_f32() let charge_frac = (self.timer.as_secs_f32()
/ self.static_data.charge_duration.as_secs_f32()) / self.static_data.charge_duration.as_secs_f32())
.min(1.0); .min(1.0);
let mut damage = Damage { let damage = Damage {
source: DamageSource::Projectile, 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
let knockback = self.static_data.initial_knockback as f32 + charge_frac * self.static_data.scaled_knockback;
+ (charge_frac
* (self.static_data.max_knockback - self.static_data.initial_knockback)
as f32);
// Fire // Fire
let projectile = Projectile { let projectile = Projectile {
hit_solid: vec![projectile::Effect::Stick], hit_solid: vec![projectile::Effect::Stick],
@ -140,9 +138,7 @@ impl CharacterBehavior for Data {
light: self.static_data.projectile_light, light: self.static_data.projectile_light,
gravity: self.static_data.projectile_gravity, gravity: self.static_data.projectile_gravity,
speed: self.static_data.initial_projectile_speed speed: self.static_data.initial_projectile_speed
+ charge_frac + charge_frac * self.static_data.scaled_projectile_speed,
* (self.static_data.max_projectile_speed
- self.static_data.initial_projectile_speed),
}); });
update.character = CharacterState::ChargedRanged(Data { update.character = CharacterState::ChargedRanged(Data {

View File

@ -15,8 +15,6 @@ pub struct Stage<T> {
pub stage: u32, pub stage: u32,
/// Initial damage of stage /// Initial damage of stage
pub base_damage: u32, pub base_damage: u32,
/// Max damage of stage
pub max_damage: u32,
/// Damage scaling per combo /// Damage scaling per combo
pub damage_increase: u32, pub damage_increase: u32,
/// Knockback of stage /// Knockback of stage
@ -41,7 +39,6 @@ impl Stage<u64> {
Stage::<Duration> { Stage::<Duration> {
stage: self.stage, stage: self.stage,
base_damage: self.base_damage, base_damage: self.base_damage,
max_damage: self.max_damage,
damage_increase: self.damage_increase, damage_increase: self.damage_increase,
knockback: self.knockback, knockback: self.knockback,
range: self.range, range: self.range,
@ -55,7 +52,6 @@ impl Stage<u64> {
pub fn adjusted_by_stats(mut self, power: f32, speed: f32) -> Self { pub fn adjusted_by_stats(mut self, power: f32, speed: f32) -> Self {
self.base_damage = (self.base_damage as f32 * power) as u32; 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.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_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_swing_duration = (self.base_swing_duration as f32 / speed) as u64;
@ -82,6 +78,8 @@ pub struct StaticData {
pub speed_increase: f32, pub speed_increase: f32,
/// (100% + max_speed_increase) is the max attack speed /// (100% + max_speed_increase) is the max attack speed
pub max_speed_increase: f32, 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 /// Whether the state can be interrupted by other abilities
pub is_interruptible: bool, pub is_interruptible: bool,
/// What key is used to press ability /// What key is used to press ability
@ -153,11 +151,12 @@ impl CharacterBehavior for Data {
}); });
// Hit attempt // Hit attempt
let damage = self.static_data.stage_data[stage_index].max_damage.min( let damage = self.static_data.stage_data[stage_index].base_damage
self.static_data.stage_data[stage_index].base_damage + self
+ self.combo / self.static_data.num_stages .static_data
* self.static_data.stage_data[stage_index].damage_increase, .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 { data.updater.insert(data.entity, Attacking {
damages: vec![(Some(GroupTarget::OutOfGroup), Damage { damages: vec![(Some(GroupTarget::OutOfGroup), Damage {
source: DamageSource::Melee, source: DamageSource::Melee,

View File

@ -15,12 +15,12 @@ use vek::Vec3;
pub struct StaticData { pub struct StaticData {
/// How much damage the attack initially does /// How much damage the attack initially does
pub base_damage: u32, pub base_damage: u32,
/// How much damage the attack does at max charge distance /// How much the attack scales in damage
pub max_damage: u32, pub scaled_damage: u32,
/// How much the attack knocks the target back initially /// How much the attack knocks the target back initially
pub base_knockback: f32, pub base_knockback: f32,
/// How much knockback happens at max charge distance /// How much the attack scales in knockback
pub max_knockback: f32, pub scaled_knockback: f32,
/// Range of the attack /// Range of the attack
pub range: f32, pub range: f32,
/// Angle of the attack /// Angle of the attack
@ -125,18 +125,13 @@ impl CharacterBehavior for Data {
if !self.exhausted { if !self.exhausted {
// Hit attempt (also checks if player is moving) // Hit attempt (also checks if player is moving)
if update.vel.0.distance_squared(Vec3::zero()) > 1.0 { if update.vel.0.distance_squared(Vec3::zero()) > 1.0 {
let mut damage = Damage { let damage = Damage {
source: DamageSource::Melee, 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( let knockback = self.static_data.base_knockback
charge_frac, + charge_frac * self.static_data.scaled_knockback;
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;
data.updater.insert(data.entity, Attacking { data.updater.insert(data.entity, Attacking {
damages: vec![(Some(GroupTarget::OutOfGroup), damage)], damages: vec![(Some(GroupTarget::OutOfGroup), damage)],
range: self.static_data.range, range: self.static_data.range,

View File

@ -126,7 +126,6 @@ fn matches_ability_stage() {
stage_data: vec![states::combo_melee::Stage { stage_data: vec![states::combo_melee::Stage {
stage: 1, stage: 1,
base_damage: 100, base_damage: 100,
max_damage: 120,
damage_increase: 10, damage_increase: 10,
knockback: 10.0, knockback: 10.0,
range: 4.0, range: 4.0,
@ -141,6 +140,7 @@ fn matches_ability_stage() {
energy_increase: 20, energy_increase: 20,
speed_increase: 0.05, speed_increase: 0.05,
max_speed_increase: 1.8, max_speed_increase: 1.8,
scales_from_combo: 2,
is_interruptible: true, is_interruptible: true,
ability_key: states::utils::AbilityKey::Mouse1, ability_key: states::utils::AbilityKey::Mouse1,
}, },
@ -187,7 +187,6 @@ fn ignores_different_ability_stage() {
stage_data: vec![states::combo_melee::Stage { stage_data: vec![states::combo_melee::Stage {
stage: 1, stage: 1,
base_damage: 100, base_damage: 100,
max_damage: 120,
damage_increase: 10, damage_increase: 10,
knockback: 10.0, knockback: 10.0,
range: 4.0, range: 4.0,
@ -202,6 +201,7 @@ fn ignores_different_ability_stage() {
energy_increase: 20, energy_increase: 20,
speed_increase: 0.05, speed_increase: 0.05,
max_speed_increase: 1.8, max_speed_increase: 1.8,
scales_from_combo: 2,
is_interruptible: true, is_interruptible: true,
ability_key: states::utils::AbilityKey::Mouse1, ability_key: states::utils::AbilityKey::Mouse1,
}, },