mirror of
https://gitlab.com/veloren/veloren.git
synced 2024-08-30 18:12:32 +00:00
Merge branch 'angryanimals' into 'master'
animal attacks See merge request veloren/veloren!1542
This commit is contained in:
commit
d1a9264a99
@ -56,6 +56,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||||||
- Variable dungeon difficulty
|
- Variable dungeon difficulty
|
||||||
- Aurora Borealis (localised entirely within the kitchen)
|
- Aurora Borealis (localised entirely within the kitchen)
|
||||||
- Block-based voxel lighting
|
- Block-based voxel lighting
|
||||||
|
- Animals now have customized attacks and AI
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
BasicRanged(
|
BasicRanged(
|
||||||
energy_cost: 0,
|
energy_cost: 0,
|
||||||
buildup_duration: 0,
|
buildup_duration: 1,
|
||||||
recover_duration: 10,
|
recover_duration: 10,
|
||||||
projectile: Possess,
|
projectile: Possess,
|
||||||
projectile_body: Object(ArrowSnake),
|
projectile_body: Object(ArrowSnake),
|
||||||
|
@ -10,5 +10,6 @@ ChargedMelee(
|
|||||||
speed: 1.0,
|
speed: 1.0,
|
||||||
charge_duration: 1200,
|
charge_duration: 1200,
|
||||||
swing_duration: 200,
|
swing_duration: 200,
|
||||||
|
hit_timing: 0.5,
|
||||||
recover_duration: 300,
|
recover_duration: 300,
|
||||||
)
|
)
|
||||||
|
@ -1,12 +1,12 @@
|
|||||||
ComboMelee(
|
ComboMelee(
|
||||||
stage_data: [(
|
stage_data: [(
|
||||||
stage: 1,
|
stage: 1,
|
||||||
base_damage: 120,
|
base_damage: 130,
|
||||||
max_damage: 150,
|
max_damage: 150,
|
||||||
damage_increase: 10,
|
damage_increase: 10,
|
||||||
knockback: 0.0,
|
knockback: 0.0,
|
||||||
range: 3.5,
|
range: 4.5,
|
||||||
angle: 20.0,
|
angle: 50.0,
|
||||||
base_buildup_duration: 600,
|
base_buildup_duration: 600,
|
||||||
base_swing_duration: 60,
|
base_swing_duration: 60,
|
||||||
base_recover_duration: 300,
|
base_recover_duration: 300,
|
||||||
|
@ -14,4 +14,4 @@ DashMelee(
|
|||||||
recover_duration: 500,
|
recover_duration: 500,
|
||||||
infinite_charge: true,
|
infinite_charge: true,
|
||||||
is_interruptible: true,
|
is_interruptible: true,
|
||||||
)
|
)
|
||||||
|
23
assets/common/abilities/unique/quadlowbasic/singlestrike.ron
Normal file
23
assets/common/abilities/unique/quadlowbasic/singlestrike.ron
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
ComboMelee(
|
||||||
|
stage_data: [
|
||||||
|
(
|
||||||
|
stage: 1,
|
||||||
|
base_damage: 100,
|
||||||
|
max_damage: 100,
|
||||||
|
damage_increase: 0,
|
||||||
|
knockback: 5.0,
|
||||||
|
range: 3.5,
|
||||||
|
angle: 60.0,
|
||||||
|
base_buildup_duration: 500,
|
||||||
|
base_swing_duration: 150,
|
||||||
|
base_recover_duration: 400,
|
||||||
|
forward_movement: 3.0,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
initial_energy_gain: 0,
|
||||||
|
max_energy_gain: 0,
|
||||||
|
energy_increase: 0,
|
||||||
|
speed_increase: 0.0,
|
||||||
|
max_speed_increase: 1.0,
|
||||||
|
is_interruptible: false,
|
||||||
|
)
|
49
assets/common/abilities/unique/quadlowbasic/triplestrike.ron
Normal file
49
assets/common/abilities/unique/quadlowbasic/triplestrike.ron
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
ComboMelee(
|
||||||
|
stage_data: [
|
||||||
|
(
|
||||||
|
stage: 1,
|
||||||
|
base_damage: 120,
|
||||||
|
max_damage: 120,
|
||||||
|
damage_increase: 0,
|
||||||
|
knockback: 10.0,
|
||||||
|
range: 3.5,
|
||||||
|
angle: 30.0,
|
||||||
|
base_buildup_duration: 900,
|
||||||
|
base_swing_duration: 100,
|
||||||
|
base_recover_duration: 300,
|
||||||
|
forward_movement: 2.0,
|
||||||
|
),
|
||||||
|
(
|
||||||
|
stage: 2,
|
||||||
|
base_damage: 80,
|
||||||
|
max_damage: 80,
|
||||||
|
damage_increase: 0,
|
||||||
|
knockback: 10.0,
|
||||||
|
range: 3.5,
|
||||||
|
angle: 30.0,
|
||||||
|
base_buildup_duration: 500,
|
||||||
|
base_swing_duration: 100,
|
||||||
|
base_recover_duration: 300,
|
||||||
|
forward_movement: 1.5,
|
||||||
|
),
|
||||||
|
(
|
||||||
|
stage: 3,
|
||||||
|
base_damage: 130,
|
||||||
|
max_damage: 130,
|
||||||
|
damage_increase: 0,
|
||||||
|
knockback: 10.0,
|
||||||
|
range: 3.5,
|
||||||
|
angle: 30.0,
|
||||||
|
base_buildup_duration: 500,
|
||||||
|
base_swing_duration: 100,
|
||||||
|
base_recover_duration: 300,
|
||||||
|
forward_movement: 1.5,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
initial_energy_gain: 0,
|
||||||
|
max_energy_gain: 0,
|
||||||
|
energy_increase: 0,
|
||||||
|
speed_increase: 0.0,
|
||||||
|
max_speed_increase: 1.0,
|
||||||
|
is_interruptible: false,
|
||||||
|
)
|
17
assets/common/abilities/unique/quadlowbreathe/dash.ron
Normal file
17
assets/common/abilities/unique/quadlowbreathe/dash.ron
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
DashMelee(
|
||||||
|
energy_cost: 0,
|
||||||
|
base_damage: 150,
|
||||||
|
max_damage: 260,
|
||||||
|
base_knockback: 8.0,
|
||||||
|
max_knockback: 25.0,
|
||||||
|
range: 5.0,
|
||||||
|
angle: 45.0,
|
||||||
|
energy_drain: 0,
|
||||||
|
forward_speed: 4.0,
|
||||||
|
buildup_duration: 500,
|
||||||
|
charge_duration: 1000,
|
||||||
|
swing_duration: 100,
|
||||||
|
recover_duration: 800,
|
||||||
|
infinite_charge: true,
|
||||||
|
is_interruptible: false,
|
||||||
|
)
|
@ -0,0 +1,14 @@
|
|||||||
|
BasicBeam(
|
||||||
|
buildup_duration: 400,
|
||||||
|
recover_duration: 250,
|
||||||
|
beam_duration: 500,
|
||||||
|
base_hps: 0,
|
||||||
|
base_dps: 150,
|
||||||
|
tick_rate: 3.0,
|
||||||
|
range: 15.0,
|
||||||
|
max_angle: 22.5,
|
||||||
|
lifesteal_eff: 0.0,
|
||||||
|
energy_regen: 0,
|
||||||
|
energy_cost: 0,
|
||||||
|
energy_drain: 0,
|
||||||
|
)
|
@ -0,0 +1,49 @@
|
|||||||
|
ComboMelee(
|
||||||
|
stage_data: [
|
||||||
|
(
|
||||||
|
stage: 1,
|
||||||
|
base_damage: 100,
|
||||||
|
max_damage: 100,
|
||||||
|
damage_increase: 0,
|
||||||
|
knockback: 10.0,
|
||||||
|
range: 4.5,
|
||||||
|
angle: 30.0,
|
||||||
|
base_buildup_duration: 900,
|
||||||
|
base_swing_duration: 100,
|
||||||
|
base_recover_duration: 300,
|
||||||
|
forward_movement: 2.0,
|
||||||
|
),
|
||||||
|
(
|
||||||
|
stage: 2,
|
||||||
|
base_damage: 80,
|
||||||
|
max_damage: 80,
|
||||||
|
damage_increase: 0,
|
||||||
|
knockback: 10.0,
|
||||||
|
range: 3.5,
|
||||||
|
angle: 30.0,
|
||||||
|
base_buildup_duration: 500,
|
||||||
|
base_swing_duration: 100,
|
||||||
|
base_recover_duration: 300,
|
||||||
|
forward_movement: 1.5,
|
||||||
|
),
|
||||||
|
(
|
||||||
|
stage: 3,
|
||||||
|
base_damage: 130,
|
||||||
|
max_damage: 130,
|
||||||
|
damage_increase: 0,
|
||||||
|
knockback: 10.0,
|
||||||
|
range: 3.5,
|
||||||
|
angle: 30.0,
|
||||||
|
base_buildup_duration: 500,
|
||||||
|
base_swing_duration: 100,
|
||||||
|
base_recover_duration: 300,
|
||||||
|
forward_movement: 1.5,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
initial_energy_gain: 0,
|
||||||
|
max_energy_gain: 0,
|
||||||
|
energy_increase: 0,
|
||||||
|
speed_increase: 0.0,
|
||||||
|
max_speed_increase: 1.0,
|
||||||
|
is_interruptible: false,
|
||||||
|
)
|
17
assets/common/abilities/unique/quadlowquick/dash.ron
Normal file
17
assets/common/abilities/unique/quadlowquick/dash.ron
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
DashMelee(
|
||||||
|
energy_cost: 0,
|
||||||
|
base_damage: 30,
|
||||||
|
max_damage: 40,
|
||||||
|
base_knockback: 8.0,
|
||||||
|
max_knockback: 15.0,
|
||||||
|
range: 2.0,
|
||||||
|
angle: 45.0,
|
||||||
|
energy_drain: 0,
|
||||||
|
forward_speed: 2.0,
|
||||||
|
buildup_duration: 500,
|
||||||
|
charge_duration: 300,
|
||||||
|
swing_duration: 100,
|
||||||
|
recover_duration: 500,
|
||||||
|
infinite_charge: true,
|
||||||
|
is_interruptible: false,
|
||||||
|
)
|
62
assets/common/abilities/unique/quadlowquick/quadstrike.ron
Normal file
62
assets/common/abilities/unique/quadlowquick/quadstrike.ron
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
ComboMelee(
|
||||||
|
stage_data: [
|
||||||
|
(
|
||||||
|
stage: 1,
|
||||||
|
base_damage: 100,
|
||||||
|
max_damage: 100,
|
||||||
|
damage_increase: 0,
|
||||||
|
knockback: 2.0,
|
||||||
|
range: 3.5,
|
||||||
|
angle: 30.0,
|
||||||
|
base_buildup_duration: 600,
|
||||||
|
base_swing_duration: 100,
|
||||||
|
base_recover_duration: 100,
|
||||||
|
forward_movement: 1.5,
|
||||||
|
),
|
||||||
|
(
|
||||||
|
stage: 2,
|
||||||
|
base_damage: 130,
|
||||||
|
max_damage: 130,
|
||||||
|
damage_increase: 0,
|
||||||
|
knockback: 2.0,
|
||||||
|
range: 3.5,
|
||||||
|
angle: 30.0,
|
||||||
|
base_buildup_duration: 200,
|
||||||
|
base_swing_duration: 100,
|
||||||
|
base_recover_duration: 100,
|
||||||
|
forward_movement: 0.8,
|
||||||
|
),
|
||||||
|
(
|
||||||
|
stage: 3,
|
||||||
|
base_damage: 130,
|
||||||
|
max_damage: 130,
|
||||||
|
damage_increase: 0,
|
||||||
|
knockback: 2.0,
|
||||||
|
range: 3.5,
|
||||||
|
angle: 30.0,
|
||||||
|
base_buildup_duration: 200,
|
||||||
|
base_swing_duration: 100,
|
||||||
|
base_recover_duration: 100,
|
||||||
|
forward_movement: 0.8,
|
||||||
|
),
|
||||||
|
(
|
||||||
|
stage: 4,
|
||||||
|
base_damage: 130,
|
||||||
|
max_damage: 130,
|
||||||
|
damage_increase: 0,
|
||||||
|
knockback: 8.0,
|
||||||
|
range: 3.5,
|
||||||
|
angle: 30.0,
|
||||||
|
base_buildup_duration: 200,
|
||||||
|
base_swing_duration: 100,
|
||||||
|
base_recover_duration: 100,
|
||||||
|
forward_movement: 0.8,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
initial_energy_gain: 0,
|
||||||
|
max_energy_gain: 0,
|
||||||
|
energy_increase: 0,
|
||||||
|
speed_increase: 0.0,
|
||||||
|
max_speed_increase: 1.0,
|
||||||
|
is_interruptible: false,
|
||||||
|
)
|
18
assets/common/abilities/unique/quadlowranged/firebomb.ron
Normal file
18
assets/common/abilities/unique/quadlowranged/firebomb.ron
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
BasicRanged(
|
||||||
|
energy_cost: 0,
|
||||||
|
buildup_duration: 800,
|
||||||
|
recover_duration: 350,
|
||||||
|
projectile: Fireball(
|
||||||
|
damage: 100.0,
|
||||||
|
radius: 5.0,
|
||||||
|
energy_regen: 0,
|
||||||
|
),
|
||||||
|
projectile_body: Object(BoltFire),
|
||||||
|
/*projectile_light: Some(LightEmitter {
|
||||||
|
col: (1.0, 0.75, 0.11).into(),
|
||||||
|
..Default::default()
|
||||||
|
}),*/
|
||||||
|
projectile_gravity: Some(Gravity(5.0)),
|
||||||
|
projectile_speed: 70.0,
|
||||||
|
can_continue: true,
|
||||||
|
)
|
@ -0,0 +1,23 @@
|
|||||||
|
ComboMelee(
|
||||||
|
stage_data: [
|
||||||
|
(
|
||||||
|
stage: 1,
|
||||||
|
base_damage: 60,
|
||||||
|
max_damage: 60,
|
||||||
|
damage_increase: 0,
|
||||||
|
knockback: 5.0,
|
||||||
|
range: 3.5,
|
||||||
|
angle: 60.0,
|
||||||
|
base_buildup_duration: 500,
|
||||||
|
base_swing_duration: 150,
|
||||||
|
base_recover_duration: 400,
|
||||||
|
forward_movement: 3.0,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
initial_energy_gain: 0,
|
||||||
|
max_energy_gain: 0,
|
||||||
|
energy_increase: 0,
|
||||||
|
speed_increase: 0.0,
|
||||||
|
max_speed_increase: 1.0,
|
||||||
|
is_interruptible: false,
|
||||||
|
)
|
15
assets/common/abilities/unique/quadlowtail/charged.ron
Normal file
15
assets/common/abilities/unique/quadlowtail/charged.ron
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
ChargedMelee(
|
||||||
|
energy_cost: 0,
|
||||||
|
energy_drain: 0,
|
||||||
|
initial_damage: 160,
|
||||||
|
max_damage: 200,
|
||||||
|
initial_knockback: 10.0,
|
||||||
|
max_knockback: 30.0,
|
||||||
|
range: 6.0,
|
||||||
|
max_angle: 90.0,
|
||||||
|
speed: 1.0,
|
||||||
|
charge_duration: 1200,
|
||||||
|
swing_duration: 700,
|
||||||
|
hit_timing: 0.9,
|
||||||
|
recover_duration: 1200,
|
||||||
|
)
|
49
assets/common/abilities/unique/quadlowtail/triplestrike.ron
Normal file
49
assets/common/abilities/unique/quadlowtail/triplestrike.ron
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
ComboMelee(
|
||||||
|
stage_data: [
|
||||||
|
(
|
||||||
|
stage: 1,
|
||||||
|
base_damage: 100,
|
||||||
|
max_damage: 100,
|
||||||
|
damage_increase: 0,
|
||||||
|
knockback: 10.0,
|
||||||
|
range: 3.5,
|
||||||
|
angle: 30.0,
|
||||||
|
base_buildup_duration: 900,
|
||||||
|
base_swing_duration: 100,
|
||||||
|
base_recover_duration: 200,
|
||||||
|
forward_movement: 2.0,
|
||||||
|
),
|
||||||
|
(
|
||||||
|
stage: 2,
|
||||||
|
base_damage: 120,
|
||||||
|
max_damage: 120,
|
||||||
|
damage_increase: 0,
|
||||||
|
knockback: 10.0,
|
||||||
|
range: 3.5,
|
||||||
|
angle: 30.0,
|
||||||
|
base_buildup_duration: 200,
|
||||||
|
base_swing_duration: 100,
|
||||||
|
base_recover_duration: 200,
|
||||||
|
forward_movement: 1.0,
|
||||||
|
),
|
||||||
|
(
|
||||||
|
stage: 3,
|
||||||
|
base_damage: 130,
|
||||||
|
max_damage: 130,
|
||||||
|
damage_increase: 0,
|
||||||
|
knockback: 10.0,
|
||||||
|
range: 3.5,
|
||||||
|
angle: 30.0,
|
||||||
|
base_buildup_duration: 200,
|
||||||
|
base_swing_duration: 100,
|
||||||
|
base_recover_duration: 200,
|
||||||
|
forward_movement: 1.0,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
initial_energy_gain: 0,
|
||||||
|
max_energy_gain: 0,
|
||||||
|
energy_increase: 0,
|
||||||
|
speed_increase: 0.0,
|
||||||
|
max_speed_increase: 1.0,
|
||||||
|
is_interruptible: false,
|
||||||
|
)
|
23
assets/common/abilities/unique/quadmedbasic/singlestrike.ron
Normal file
23
assets/common/abilities/unique/quadmedbasic/singlestrike.ron
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
ComboMelee(
|
||||||
|
stage_data: [
|
||||||
|
(
|
||||||
|
stage: 1,
|
||||||
|
base_damage: 120,
|
||||||
|
max_damage: 120,
|
||||||
|
damage_increase: 0,
|
||||||
|
knockback: 5.0,
|
||||||
|
range: 3.5,
|
||||||
|
angle: 60.0,
|
||||||
|
base_buildup_duration: 650,
|
||||||
|
base_swing_duration: 150,
|
||||||
|
base_recover_duration: 400,
|
||||||
|
forward_movement: 1.0,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
initial_energy_gain: 0,
|
||||||
|
max_energy_gain: 0,
|
||||||
|
energy_increase: 0,
|
||||||
|
speed_increase: 0.0,
|
||||||
|
max_speed_increase: 1.0,
|
||||||
|
is_interruptible: false,
|
||||||
|
)
|
49
assets/common/abilities/unique/quadmedbasic/triplestrike.ron
Normal file
49
assets/common/abilities/unique/quadmedbasic/triplestrike.ron
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
ComboMelee(
|
||||||
|
stage_data: [
|
||||||
|
(
|
||||||
|
stage: 1,
|
||||||
|
base_damage: 120,
|
||||||
|
max_damage: 120,
|
||||||
|
damage_increase: 0,
|
||||||
|
knockback: 10.0,
|
||||||
|
range: 3.5,
|
||||||
|
angle: 30.0,
|
||||||
|
base_buildup_duration: 900,
|
||||||
|
base_swing_duration: 100,
|
||||||
|
base_recover_duration: 400,
|
||||||
|
forward_movement: 1.0,
|
||||||
|
),
|
||||||
|
(
|
||||||
|
stage: 2,
|
||||||
|
base_damage: 120,
|
||||||
|
max_damage: 120,
|
||||||
|
damage_increase: 0,
|
||||||
|
knockback: 10.0,
|
||||||
|
range: 3.5,
|
||||||
|
angle: 30.0,
|
||||||
|
base_buildup_duration: 300,
|
||||||
|
base_swing_duration: 100,
|
||||||
|
base_recover_duration: 200,
|
||||||
|
forward_movement: 0.0,
|
||||||
|
),
|
||||||
|
(
|
||||||
|
stage: 3,
|
||||||
|
base_damage: 120,
|
||||||
|
max_damage: 120,
|
||||||
|
damage_increase: 0,
|
||||||
|
knockback: 10.0,
|
||||||
|
range: 3.5,
|
||||||
|
angle: 30.0,
|
||||||
|
base_buildup_duration: 300,
|
||||||
|
base_swing_duration: 100,
|
||||||
|
base_recover_duration: 200,
|
||||||
|
forward_movement: 1.0,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
initial_energy_gain: 0,
|
||||||
|
max_energy_gain: 0,
|
||||||
|
energy_increase: 0,
|
||||||
|
speed_increase: 0.0,
|
||||||
|
max_speed_increase: 1.0,
|
||||||
|
is_interruptible: false,
|
||||||
|
)
|
17
assets/common/abilities/unique/quadmedcharge/dash.ron
Normal file
17
assets/common/abilities/unique/quadmedcharge/dash.ron
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
DashMelee(
|
||||||
|
energy_cost: 0,
|
||||||
|
base_damage: 150,
|
||||||
|
max_damage: 190,
|
||||||
|
base_knockback: 8.0,
|
||||||
|
max_knockback: 25.0,
|
||||||
|
range: 4.0,
|
||||||
|
angle: 45.0,
|
||||||
|
energy_drain: 0,
|
||||||
|
forward_speed: 2.0,
|
||||||
|
buildup_duration: 500,
|
||||||
|
charge_duration: 1200,
|
||||||
|
swing_duration: 100,
|
||||||
|
recover_duration: 1100,
|
||||||
|
infinite_charge: true,
|
||||||
|
is_interruptible: false,
|
||||||
|
)
|
@ -0,0 +1,36 @@
|
|||||||
|
ComboMelee(
|
||||||
|
stage_data: [
|
||||||
|
(
|
||||||
|
stage: 1,
|
||||||
|
base_damage: 100,
|
||||||
|
max_damage: 100,
|
||||||
|
damage_increase: 0,
|
||||||
|
knockback: 10.0,
|
||||||
|
range: 3.5,
|
||||||
|
angle: 30.0,
|
||||||
|
base_buildup_duration: 900,
|
||||||
|
base_swing_duration: 100,
|
||||||
|
base_recover_duration: 300,
|
||||||
|
forward_movement: 1.0,
|
||||||
|
),
|
||||||
|
(
|
||||||
|
stage: 2,
|
||||||
|
base_damage: 80,
|
||||||
|
max_damage: 80,
|
||||||
|
damage_increase: 0,
|
||||||
|
knockback: 10.0,
|
||||||
|
range: 3.5,
|
||||||
|
angle: 30.0,
|
||||||
|
base_buildup_duration: 500,
|
||||||
|
base_swing_duration: 100,
|
||||||
|
base_recover_duration: 300,
|
||||||
|
forward_movement: 0.5,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
initial_energy_gain: 0,
|
||||||
|
max_energy_gain: 0,
|
||||||
|
energy_increase: 0,
|
||||||
|
speed_increase: 0.0,
|
||||||
|
max_speed_increase: 1.0,
|
||||||
|
is_interruptible: false,
|
||||||
|
)
|
10
assets/common/abilities/unique/quadmedhoof/basic.ron
Normal file
10
assets/common/abilities/unique/quadmedhoof/basic.ron
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
BasicMelee(
|
||||||
|
energy_cost: 0,
|
||||||
|
buildup_duration: 600,
|
||||||
|
swing_duration: 500,
|
||||||
|
recover_duration: 350,
|
||||||
|
base_damage: 130,
|
||||||
|
knockback: 25.0,
|
||||||
|
range: 3.0,
|
||||||
|
max_angle: 120.0,
|
||||||
|
)
|
36
assets/common/abilities/unique/quadmedjump/doublestrike.ron
Normal file
36
assets/common/abilities/unique/quadmedjump/doublestrike.ron
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
ComboMelee(
|
||||||
|
stage_data: [
|
||||||
|
(
|
||||||
|
stage: 1,
|
||||||
|
base_damage: 100,
|
||||||
|
max_damage: 100,
|
||||||
|
damage_increase: 0,
|
||||||
|
knockback: 8.0,
|
||||||
|
range: 3.5,
|
||||||
|
angle: 30.0,
|
||||||
|
base_buildup_duration: 900,
|
||||||
|
base_swing_duration: 100,
|
||||||
|
base_recover_duration: 300,
|
||||||
|
forward_movement: 1.0,
|
||||||
|
),
|
||||||
|
(
|
||||||
|
stage: 2,
|
||||||
|
base_damage: 80,
|
||||||
|
max_damage: 80,
|
||||||
|
damage_increase: 0,
|
||||||
|
knockback: 8.0,
|
||||||
|
range: 3.5,
|
||||||
|
angle: 30.0,
|
||||||
|
base_buildup_duration: 500,
|
||||||
|
base_swing_duration: 100,
|
||||||
|
base_recover_duration: 300,
|
||||||
|
forward_movement: 1.5,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
initial_energy_gain: 0,
|
||||||
|
max_energy_gain: 0,
|
||||||
|
energy_increase: 0,
|
||||||
|
speed_increase: 0.0,
|
||||||
|
max_speed_increase: 1.0,
|
||||||
|
is_interruptible: false,
|
||||||
|
)
|
13
assets/common/abilities/unique/quadmedjump/leap.ron
Normal file
13
assets/common/abilities/unique/quadmedjump/leap.ron
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
LeapMelee(
|
||||||
|
energy_cost: 0,
|
||||||
|
buildup_duration: 500,
|
||||||
|
movement_duration: 400,
|
||||||
|
swing_duration: 75,
|
||||||
|
recover_duration: 200,
|
||||||
|
base_damage: 240,
|
||||||
|
knockback: 12.0,
|
||||||
|
range: 4.5,
|
||||||
|
max_angle: 180.0,
|
||||||
|
forward_leap_strength: 40.0,
|
||||||
|
vertical_leap_strength: 10.0,
|
||||||
|
)
|
13
assets/common/abilities/unique/quadmedjump/quickleap.ron
Normal file
13
assets/common/abilities/unique/quadmedjump/quickleap.ron
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
LeapMelee(
|
||||||
|
energy_cost: 0,
|
||||||
|
buildup_duration: 200,
|
||||||
|
movement_duration: 300,
|
||||||
|
swing_duration: 75,
|
||||||
|
recover_duration: 125,
|
||||||
|
base_damage: 120,
|
||||||
|
knockback: 7.0,
|
||||||
|
range: 4.5,
|
||||||
|
max_angle: 180.0,
|
||||||
|
forward_leap_strength: 20.0,
|
||||||
|
vertical_leap_strength: 5.0,
|
||||||
|
)
|
17
assets/common/abilities/unique/quadmedquick/dash.ron
Normal file
17
assets/common/abilities/unique/quadmedquick/dash.ron
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
DashMelee(
|
||||||
|
energy_cost: 0,
|
||||||
|
base_damage: 130,
|
||||||
|
max_damage: 150,
|
||||||
|
base_knockback: 8.0,
|
||||||
|
max_knockback: 15.0,
|
||||||
|
range: 2.0,
|
||||||
|
angle: 45.0,
|
||||||
|
energy_drain: 0,
|
||||||
|
forward_speed: 2.0,
|
||||||
|
buildup_duration: 1200,
|
||||||
|
charge_duration: 300,
|
||||||
|
swing_duration: 100,
|
||||||
|
recover_duration: 500,
|
||||||
|
infinite_charge: true,
|
||||||
|
is_interruptible: false,
|
||||||
|
)
|
49
assets/common/abilities/unique/quadmedquick/triplestrike.ron
Normal file
49
assets/common/abilities/unique/quadmedquick/triplestrike.ron
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
ComboMelee(
|
||||||
|
stage_data: [
|
||||||
|
(
|
||||||
|
stage: 1,
|
||||||
|
base_damage: 150,
|
||||||
|
max_damage: 150,
|
||||||
|
damage_increase: 0,
|
||||||
|
knockback: 5.0,
|
||||||
|
range: 3.5,
|
||||||
|
angle: 60.0,
|
||||||
|
base_buildup_duration: 800,
|
||||||
|
base_swing_duration: 150,
|
||||||
|
base_recover_duration: 400,
|
||||||
|
forward_movement: 0.3,
|
||||||
|
),
|
||||||
|
(
|
||||||
|
stage: 2,
|
||||||
|
base_damage: 150,
|
||||||
|
max_damage: 150,
|
||||||
|
damage_increase: 0,
|
||||||
|
knockback: 5.0,
|
||||||
|
range: 3.5,
|
||||||
|
angle: 60.0,
|
||||||
|
base_buildup_duration: 600,
|
||||||
|
base_swing_duration: 150,
|
||||||
|
base_recover_duration: 300,
|
||||||
|
forward_movement: 0.5,
|
||||||
|
),
|
||||||
|
(
|
||||||
|
stage: 3,
|
||||||
|
base_damage: 150,
|
||||||
|
max_damage: 150,
|
||||||
|
damage_increase: 0,
|
||||||
|
knockback: 5.0,
|
||||||
|
range: 3.5,
|
||||||
|
angle: 60.0,
|
||||||
|
base_buildup_duration: 600,
|
||||||
|
base_swing_duration: 150,
|
||||||
|
base_recover_duration: 300,
|
||||||
|
forward_movement: 0.5,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
initial_energy_gain: 0,
|
||||||
|
max_energy_gain: 0,
|
||||||
|
energy_increase: 0,
|
||||||
|
speed_increase: 0.0,
|
||||||
|
max_speed_increase: 1.0,
|
||||||
|
is_interruptible: false,
|
||||||
|
)
|
@ -0,0 +1,23 @@
|
|||||||
|
ComboMelee(
|
||||||
|
stage_data: [
|
||||||
|
(
|
||||||
|
stage: 1,
|
||||||
|
base_damage: 30,
|
||||||
|
max_damage: 30,
|
||||||
|
damage_increase: 0,
|
||||||
|
knockback: 5.0,
|
||||||
|
range: 3.5,
|
||||||
|
angle: 60.0,
|
||||||
|
base_buildup_duration: 300,
|
||||||
|
base_swing_duration: 150,
|
||||||
|
base_recover_duration: 300,
|
||||||
|
forward_movement: 1.0,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
initial_energy_gain: 0,
|
||||||
|
max_energy_gain: 0,
|
||||||
|
energy_increase: 0,
|
||||||
|
speed_increase: 0.0,
|
||||||
|
max_speed_increase: 1.0,
|
||||||
|
is_interruptible: false,
|
||||||
|
)
|
@ -0,0 +1,23 @@
|
|||||||
|
ComboMelee(
|
||||||
|
stage_data: [
|
||||||
|
(
|
||||||
|
stage: 1,
|
||||||
|
base_damage: 150,
|
||||||
|
max_damage: 150,
|
||||||
|
damage_increase: 0,
|
||||||
|
knockback: 5.0,
|
||||||
|
range: 7.5,
|
||||||
|
angle: 60.0,
|
||||||
|
base_buildup_duration: 500,
|
||||||
|
base_swing_duration: 150,
|
||||||
|
base_recover_duration: 400,
|
||||||
|
forward_movement: 3.0,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
initial_energy_gain: 0,
|
||||||
|
max_energy_gain: 0,
|
||||||
|
energy_increase: 0,
|
||||||
|
speed_increase: 0.0,
|
||||||
|
max_speed_increase: 1.0,
|
||||||
|
is_interruptible: false,
|
||||||
|
)
|
@ -0,0 +1,49 @@
|
|||||||
|
ComboMelee(
|
||||||
|
stage_data: [
|
||||||
|
(
|
||||||
|
stage: 1,
|
||||||
|
base_damage: 170,
|
||||||
|
max_damage: 170,
|
||||||
|
damage_increase: 0,
|
||||||
|
knockback: 10.0,
|
||||||
|
range: 7.5,
|
||||||
|
angle: 30.0,
|
||||||
|
base_buildup_duration: 900,
|
||||||
|
base_swing_duration: 150,
|
||||||
|
base_recover_duration: 300,
|
||||||
|
forward_movement: 1.0,
|
||||||
|
),
|
||||||
|
(
|
||||||
|
stage: 2,
|
||||||
|
base_damage: 190,
|
||||||
|
max_damage: 190,
|
||||||
|
damage_increase: 0,
|
||||||
|
knockback: 10.0,
|
||||||
|
range: 5.5,
|
||||||
|
angle: 30.0,
|
||||||
|
base_buildup_duration: 500,
|
||||||
|
base_swing_duration: 150,
|
||||||
|
base_recover_duration: 150,
|
||||||
|
forward_movement: 1.0,
|
||||||
|
),
|
||||||
|
(
|
||||||
|
stage: 3,
|
||||||
|
base_damage: 230,
|
||||||
|
max_damage: 230,
|
||||||
|
damage_increase: 0,
|
||||||
|
knockback: 10.0,
|
||||||
|
range: 5.5,
|
||||||
|
angle: 30.0,
|
||||||
|
base_buildup_duration: 350,
|
||||||
|
base_swing_duration: 125,
|
||||||
|
base_recover_duration: 900,
|
||||||
|
forward_movement: 1.0,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
initial_energy_gain: 0,
|
||||||
|
max_energy_gain: 0,
|
||||||
|
energy_increase: 0,
|
||||||
|
speed_increase: 0.0,
|
||||||
|
max_speed_increase: 1.0,
|
||||||
|
is_interruptible: false,
|
||||||
|
)
|
23
assets/common/abilities/unique/theropodbird/singlestrike.ron
Normal file
23
assets/common/abilities/unique/theropodbird/singlestrike.ron
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
ComboMelee(
|
||||||
|
stage_data: [
|
||||||
|
(
|
||||||
|
stage: 1,
|
||||||
|
base_damage: 150,
|
||||||
|
max_damage: 150,
|
||||||
|
damage_increase: 0,
|
||||||
|
knockback: 5.0,
|
||||||
|
range: 5.5,
|
||||||
|
angle: 5.0,
|
||||||
|
base_buildup_duration: 500,
|
||||||
|
base_swing_duration: 150,
|
||||||
|
base_recover_duration: 400,
|
||||||
|
forward_movement: 3.0,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
initial_energy_gain: 0,
|
||||||
|
max_energy_gain: 0,
|
||||||
|
energy_increase: 0,
|
||||||
|
speed_increase: 0.0,
|
||||||
|
max_speed_increase: 1.0,
|
||||||
|
is_interruptible: false,
|
||||||
|
)
|
49
assets/common/abilities/unique/theropodbird/triplestrike.ron
Normal file
49
assets/common/abilities/unique/theropodbird/triplestrike.ron
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
ComboMelee(
|
||||||
|
stage_data: [
|
||||||
|
(
|
||||||
|
stage: 1,
|
||||||
|
base_damage: 170,
|
||||||
|
max_damage: 170,
|
||||||
|
damage_increase: 0,
|
||||||
|
knockback: 10.0,
|
||||||
|
range: 4.5,
|
||||||
|
angle: 5.0,
|
||||||
|
base_buildup_duration: 900,
|
||||||
|
base_swing_duration: 150,
|
||||||
|
base_recover_duration: 300,
|
||||||
|
forward_movement: 1.0,
|
||||||
|
),
|
||||||
|
(
|
||||||
|
stage: 2,
|
||||||
|
base_damage: 190,
|
||||||
|
max_damage: 190,
|
||||||
|
damage_increase: 0,
|
||||||
|
knockback: 10.0,
|
||||||
|
range: 4.0,
|
||||||
|
angle: 10.0,
|
||||||
|
base_buildup_duration: 500,
|
||||||
|
base_swing_duration: 150,
|
||||||
|
base_recover_duration: 150,
|
||||||
|
forward_movement: 1.0,
|
||||||
|
),
|
||||||
|
(
|
||||||
|
stage: 3,
|
||||||
|
base_damage: 230,
|
||||||
|
max_damage: 230,
|
||||||
|
damage_increase: 0,
|
||||||
|
knockback: 10.0,
|
||||||
|
range: 4.0,
|
||||||
|
angle: 10.0,
|
||||||
|
base_buildup_duration: 350,
|
||||||
|
base_swing_duration: 125,
|
||||||
|
base_recover_duration: 900,
|
||||||
|
forward_movement: 1.0,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
initial_energy_gain: 0,
|
||||||
|
max_energy_gain: 0,
|
||||||
|
energy_increase: 0,
|
||||||
|
speed_increase: 0.0,
|
||||||
|
max_speed_increase: 1.0,
|
||||||
|
is_interruptible: false,
|
||||||
|
)
|
@ -61,6 +61,75 @@
|
|||||||
secondary: "common.abilities.unique.beastclaws.basic",
|
secondary: "common.abilities.unique.beastclaws.basic",
|
||||||
skills: [],
|
skills: [],
|
||||||
),
|
),
|
||||||
|
Unique(QuadMedQuick): (
|
||||||
|
primary: "common.abilities.unique.quadmedquick.triplestrike",
|
||||||
|
secondary: "common.abilities.unique.quadmedquick.dash",
|
||||||
|
skills: [],
|
||||||
|
),
|
||||||
|
Unique(QuadMedJump): (
|
||||||
|
primary: "common.abilities.unique.quadmedjump.leap",
|
||||||
|
secondary: "common.abilities.unique.quadmedjump.doublestrike",
|
||||||
|
skills: [
|
||||||
|
"common.abilities.unique.quadmedjump.quickleap"
|
||||||
|
],
|
||||||
|
),
|
||||||
|
Unique(QuadMedCharge): (
|
||||||
|
primary: "common.abilities.unique.quadmedcharge.doublestrike",
|
||||||
|
secondary: "common.abilities.unique.quadmedcharge.dash",
|
||||||
|
skills: [],
|
||||||
|
),
|
||||||
|
Unique(QuadMedHoof): (
|
||||||
|
primary: "common.abilities.unique.quadmedhoof.basic",
|
||||||
|
secondary: "common.abilities.unique.quadmedhoof.basic",
|
||||||
|
skills: [],
|
||||||
|
),
|
||||||
|
Unique(QuadMedBasic): (
|
||||||
|
primary: "common.abilities.unique.quadmedbasic.singlestrike",
|
||||||
|
secondary: "common.abilities.unique.quadmedbasic.triplestrike",
|
||||||
|
skills: [],
|
||||||
|
),
|
||||||
|
Unique(QuadLowRanged): (
|
||||||
|
primary: "common.abilities.unique.quadlowranged.singlestrike",
|
||||||
|
secondary: "common.abilities.unique.quadlowranged.firebomb",
|
||||||
|
skills: [],
|
||||||
|
),
|
||||||
|
Unique(QuadLowBreathe): (
|
||||||
|
primary: "common.abilities.unique.quadlowbreathe.flamethrower",
|
||||||
|
secondary: "common.abilities.unique.quadlowbreathe.triplestrike",
|
||||||
|
skills: [
|
||||||
|
"common.abilities.unique.quadlowbreathe.dash",
|
||||||
|
],
|
||||||
|
),
|
||||||
|
Unique(QuadLowTail): (
|
||||||
|
primary: "common.abilities.unique.quadlowtail.charged",
|
||||||
|
secondary: "common.abilities.unique.quadlowtail.triplestrike",
|
||||||
|
skills: [],
|
||||||
|
),
|
||||||
|
Unique(QuadLowQuick): (
|
||||||
|
primary: "common.abilities.unique.quadlowquick.dash",
|
||||||
|
secondary: "common.abilities.unique.quadlowquick.quadstrike",
|
||||||
|
skills: [],
|
||||||
|
),
|
||||||
|
Unique(QuadLowBasic): (
|
||||||
|
primary: "common.abilities.unique.quadlowbasic.triplestrike",
|
||||||
|
secondary: "common.abilities.unique.quadlowbasic.singlestrike",
|
||||||
|
skills: [],
|
||||||
|
),
|
||||||
|
Unique(QuadSmallBasic): (
|
||||||
|
primary: "common.abilities.unique.quadsmallbasic.singlestrike",
|
||||||
|
secondary: "common.abilities.unique.quadsmallbasic.singlestrike",
|
||||||
|
skills: [],
|
||||||
|
),
|
||||||
|
Unique(TheropodBasic): (
|
||||||
|
primary: "common.abilities.unique.theropodbasic.triplestrike",
|
||||||
|
secondary: "common.abilities.unique.theropodbasic.triplestrike",
|
||||||
|
skills: [],
|
||||||
|
),
|
||||||
|
Unique(TheropodBird): (
|
||||||
|
primary: "common.abilities.unique.theropodbird.triplestrike",
|
||||||
|
secondary: "common.abilities.unique.theropodbird.triplestrike",
|
||||||
|
skills: [],
|
||||||
|
),
|
||||||
Debug: (
|
Debug: (
|
||||||
primary: "common.abilities.debug.forwardboost",
|
primary: "common.abilities.debug.forwardboost",
|
||||||
secondary: "common.abilities.debug.upboost",
|
secondary: "common.abilities.debug.upboost",
|
||||||
@ -78,4 +147,4 @@
|
|||||||
secondary: "common.abilities.empty.basic",
|
secondary: "common.abilities.empty.basic",
|
||||||
skills: [],
|
skills: [],
|
||||||
),
|
),
|
||||||
})
|
})
|
||||||
|
@ -7,7 +7,7 @@ ItemDef(
|
|||||||
stats: (
|
stats: (
|
||||||
equip_time_millis: 500,
|
equip_time_millis: 500,
|
||||||
power: 1.00,
|
power: 1.00,
|
||||||
speed: 1.0
|
speed: 1.0,
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
),
|
),
|
||||||
|
15
assets/common/items/npc_weapons/unique/quadlowbasic.ron
Normal file
15
assets/common/items/npc_weapons/unique/quadlowbasic.ron
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
ItemDef(
|
||||||
|
name: "Quad Low Basic",
|
||||||
|
description: "testing123",
|
||||||
|
kind: Tool(
|
||||||
|
(
|
||||||
|
kind: Unique(QuadLowBasic),
|
||||||
|
stats: (
|
||||||
|
equip_time_millis: 10,
|
||||||
|
power: 1.00,
|
||||||
|
speed: 1.00,
|
||||||
|
),
|
||||||
|
)
|
||||||
|
),
|
||||||
|
quality: Low,
|
||||||
|
)
|
15
assets/common/items/npc_weapons/unique/quadlowbreathe.ron
Normal file
15
assets/common/items/npc_weapons/unique/quadlowbreathe.ron
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
ItemDef(
|
||||||
|
name: "Quad Low Breathe",
|
||||||
|
description: "testing123",
|
||||||
|
kind: Tool(
|
||||||
|
(
|
||||||
|
kind: Unique(QuadLowBreathe),
|
||||||
|
stats: (
|
||||||
|
equip_time_millis: 10,
|
||||||
|
power: 1.00,
|
||||||
|
speed: 1.00,
|
||||||
|
),
|
||||||
|
)
|
||||||
|
),
|
||||||
|
quality: Low,
|
||||||
|
)
|
15
assets/common/items/npc_weapons/unique/quadlowquick.ron
Normal file
15
assets/common/items/npc_weapons/unique/quadlowquick.ron
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
ItemDef(
|
||||||
|
name: "Quad Low Quick",
|
||||||
|
description: "testing123",
|
||||||
|
kind: Tool(
|
||||||
|
(
|
||||||
|
kind: Unique(QuadLowQuick),
|
||||||
|
stats: (
|
||||||
|
equip_time_millis: 10,
|
||||||
|
power: 1.00,
|
||||||
|
speed: 1.00,
|
||||||
|
),
|
||||||
|
)
|
||||||
|
),
|
||||||
|
quality: Low,
|
||||||
|
)
|
15
assets/common/items/npc_weapons/unique/quadlowranged.ron
Normal file
15
assets/common/items/npc_weapons/unique/quadlowranged.ron
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
ItemDef(
|
||||||
|
name: "Quad Low Ranged",
|
||||||
|
description: "testing123",
|
||||||
|
kind: Tool(
|
||||||
|
(
|
||||||
|
kind: Unique(QuadLowRanged),
|
||||||
|
stats: (
|
||||||
|
equip_time_millis: 10,
|
||||||
|
power: 1.00,
|
||||||
|
speed: 1.00,
|
||||||
|
),
|
||||||
|
)
|
||||||
|
),
|
||||||
|
quality: Low,
|
||||||
|
)
|
15
assets/common/items/npc_weapons/unique/quadlowtail.ron
Normal file
15
assets/common/items/npc_weapons/unique/quadlowtail.ron
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
ItemDef(
|
||||||
|
name: "Quad Low Tail",
|
||||||
|
description: "testing123",
|
||||||
|
kind: Tool(
|
||||||
|
(
|
||||||
|
kind: Unique(QuadLowTail),
|
||||||
|
stats: (
|
||||||
|
equip_time_millis: 10,
|
||||||
|
power: 1.00,
|
||||||
|
speed: 1.00,
|
||||||
|
),
|
||||||
|
)
|
||||||
|
),
|
||||||
|
quality: Low,
|
||||||
|
)
|
15
assets/common/items/npc_weapons/unique/quadmedbasic.ron
Normal file
15
assets/common/items/npc_weapons/unique/quadmedbasic.ron
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
ItemDef(
|
||||||
|
name: "Quad Med Basic",
|
||||||
|
description: "testing123",
|
||||||
|
kind: Tool(
|
||||||
|
(
|
||||||
|
kind: Unique(QuadMedBasic),
|
||||||
|
stats: (
|
||||||
|
equip_time_millis: 10,
|
||||||
|
power: 1.00,
|
||||||
|
speed: 1.00,
|
||||||
|
),
|
||||||
|
)
|
||||||
|
),
|
||||||
|
quality: Low,
|
||||||
|
)
|
15
assets/common/items/npc_weapons/unique/quadmedcharge.ron
Normal file
15
assets/common/items/npc_weapons/unique/quadmedcharge.ron
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
ItemDef(
|
||||||
|
name: "Quad Med Charge",
|
||||||
|
description: "testing123",
|
||||||
|
kind: Tool(
|
||||||
|
(
|
||||||
|
kind: Unique(QuadMedCharge),
|
||||||
|
stats: (
|
||||||
|
equip_time_millis: 10,
|
||||||
|
power: 1.00,
|
||||||
|
speed: 1.00,
|
||||||
|
),
|
||||||
|
)
|
||||||
|
),
|
||||||
|
quality: Low,
|
||||||
|
)
|
15
assets/common/items/npc_weapons/unique/quadmedhoof.ron
Normal file
15
assets/common/items/npc_weapons/unique/quadmedhoof.ron
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
ItemDef(
|
||||||
|
name: "Quad Med Hoof",
|
||||||
|
description: "testing123",
|
||||||
|
kind: Tool(
|
||||||
|
(
|
||||||
|
kind: Unique(QuadMedHoof),
|
||||||
|
stats: (
|
||||||
|
equip_time_millis: 10,
|
||||||
|
power: 1.00,
|
||||||
|
speed: 1.00,
|
||||||
|
),
|
||||||
|
)
|
||||||
|
),
|
||||||
|
quality: Low,
|
||||||
|
)
|
15
assets/common/items/npc_weapons/unique/quadmedjump.ron
Normal file
15
assets/common/items/npc_weapons/unique/quadmedjump.ron
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
ItemDef(
|
||||||
|
name: "Quad Med Jump",
|
||||||
|
description: "testing123",
|
||||||
|
kind: Tool(
|
||||||
|
(
|
||||||
|
kind: Unique(QuadMedJump),
|
||||||
|
stats: (
|
||||||
|
equip_time_millis: 10,
|
||||||
|
power: 1.00,
|
||||||
|
speed: 1.0,
|
||||||
|
),
|
||||||
|
)
|
||||||
|
),
|
||||||
|
quality: Low,
|
||||||
|
)
|
15
assets/common/items/npc_weapons/unique/quadmedquick.ron
Normal file
15
assets/common/items/npc_weapons/unique/quadmedquick.ron
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
ItemDef(
|
||||||
|
name: "Quad Med Quick",
|
||||||
|
description: "testing123",
|
||||||
|
kind: Tool(
|
||||||
|
(
|
||||||
|
kind: Unique(QuadMedQuick),
|
||||||
|
stats: (
|
||||||
|
equip_time_millis: 10,
|
||||||
|
power: 1.00,
|
||||||
|
speed: 1.0,
|
||||||
|
),
|
||||||
|
)
|
||||||
|
),
|
||||||
|
quality: Low,
|
||||||
|
)
|
15
assets/common/items/npc_weapons/unique/quadsmallbasic.ron
Normal file
15
assets/common/items/npc_weapons/unique/quadsmallbasic.ron
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
ItemDef(
|
||||||
|
name: "Quad Small Basic",
|
||||||
|
description: "testing123",
|
||||||
|
kind: Tool(
|
||||||
|
(
|
||||||
|
kind: Unique(QuadSmallBasic),
|
||||||
|
stats: (
|
||||||
|
equip_time_millis: 10,
|
||||||
|
power: 1.00,
|
||||||
|
speed: 1.00,
|
||||||
|
),
|
||||||
|
)
|
||||||
|
),
|
||||||
|
quality: Low,
|
||||||
|
)
|
15
assets/common/items/npc_weapons/unique/theropodbasic.ron
Normal file
15
assets/common/items/npc_weapons/unique/theropodbasic.ron
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
ItemDef(
|
||||||
|
name: "Theropod Basic",
|
||||||
|
description: "testing123",
|
||||||
|
kind: Tool(
|
||||||
|
(
|
||||||
|
kind: Unique(TheropodBasic),
|
||||||
|
stats: (
|
||||||
|
equip_time_millis: 10,
|
||||||
|
power: 1.00,
|
||||||
|
speed: 1.00,
|
||||||
|
),
|
||||||
|
)
|
||||||
|
),
|
||||||
|
quality: Low,
|
||||||
|
)
|
15
assets/common/items/npc_weapons/unique/theropodbird.ron
Normal file
15
assets/common/items/npc_weapons/unique/theropodbird.ron
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
ItemDef(
|
||||||
|
name: "Theropod Bird",
|
||||||
|
description: "testing123",
|
||||||
|
kind: Tool(
|
||||||
|
(
|
||||||
|
kind: Unique(TheropodBird),
|
||||||
|
stats: (
|
||||||
|
equip_time_millis: 10,
|
||||||
|
power: 1.00,
|
||||||
|
speed: 1.00,
|
||||||
|
),
|
||||||
|
)
|
||||||
|
),
|
||||||
|
quality: Low,
|
||||||
|
)
|
@ -769,6 +769,10 @@
|
|||||||
"hakulaq": {
|
"hakulaq": {
|
||||||
"keyword": "hakulaq",
|
"keyword": "hakulaq",
|
||||||
"generic": "Hakulaq"
|
"generic": "Hakulaq"
|
||||||
|
},
|
||||||
|
"lavadrake": {
|
||||||
|
"keyword": "lavadrake",
|
||||||
|
"generic": "Lava Drake"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
BIN
assets/voxygen/voxel/npc/lavadrake/male/chest.vox
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/voxel/npc/lavadrake/male/chest.vox
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/voxygen/voxel/npc/lavadrake/male/foot_bl.vox
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/voxel/npc/lavadrake/male/foot_bl.vox
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/voxygen/voxel/npc/lavadrake/male/foot_br.vox
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/voxel/npc/lavadrake/male/foot_br.vox
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/voxygen/voxel/npc/lavadrake/male/foot_fl.vox
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/voxel/npc/lavadrake/male/foot_fl.vox
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/voxygen/voxel/npc/lavadrake/male/foot_fr.vox
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/voxel/npc/lavadrake/male/foot_fr.vox
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/voxygen/voxel/npc/lavadrake/male/head_lower.vox
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/voxel/npc/lavadrake/male/head_lower.vox
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/voxygen/voxel/npc/lavadrake/male/head_upper.vox
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/voxel/npc/lavadrake/male/head_upper.vox
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/voxygen/voxel/npc/lavadrake/male/jaw.vox
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/voxel/npc/lavadrake/male/jaw.vox
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/voxygen/voxel/npc/lavadrake/male/tail_front.vox
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/voxel/npc/lavadrake/male/tail_front.vox
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/voxygen/voxel/npc/lavadrake/male/tail_rear.vox
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/voxel/npc/lavadrake/male/tail_rear.vox
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/voxygen/voxel/npc/monitor/male/head_upper.vox
(Stored with Git LFS)
BIN
assets/voxygen/voxel/npc/monitor/male/head_upper.vox
(Stored with Git LFS)
Binary file not shown.
BIN
assets/voxygen/voxel/npc/roshwalr/male/vacation.vox
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/voxel/npc/roshwalr/male/vacation.vox
(Stored with Git LFS)
Normal file
Binary file not shown.
@ -157,11 +157,11 @@
|
|||||||
),
|
),
|
||||||
(Monitor, Male): (
|
(Monitor, Male): (
|
||||||
upper: (
|
upper: (
|
||||||
offset: (-3.0, -5.5, -3.0),
|
offset: (-3.0, 0.0, -3.0),
|
||||||
central: ("npc.monitor.male.head_upper"),
|
central: ("npc.monitor.male.head_upper"),
|
||||||
),
|
),
|
||||||
lower: (
|
lower: (
|
||||||
offset: (-3.0, -3.5, -3.5),
|
offset: (-3.0, 0.0, -2.0),
|
||||||
central: ("npc.monitor.male.head_lower"),
|
central: ("npc.monitor.male.head_lower"),
|
||||||
),
|
),
|
||||||
jaw: (
|
jaw: (
|
||||||
@ -184,11 +184,11 @@
|
|||||||
),
|
),
|
||||||
(Monitor, Female): (
|
(Monitor, Female): (
|
||||||
upper: (
|
upper: (
|
||||||
offset: (-3.0, -5.5, -3.0),
|
offset: (-3.0, 0.0, -3.0),
|
||||||
central: ("npc.monitor.male.head_upper"),
|
central: ("npc.monitor.male.head_upper"),
|
||||||
),
|
),
|
||||||
lower: (
|
lower: (
|
||||||
offset: (-3.0, -3.5, -3.5),
|
offset: (-3.0, 0.0, -2.0),
|
||||||
central: ("npc.monitor.male.head_lower"),
|
central: ("npc.monitor.male.head_lower"),
|
||||||
),
|
),
|
||||||
jaw: (
|
jaw: (
|
||||||
@ -210,11 +210,11 @@
|
|||||||
),
|
),
|
||||||
(Asp, Male): (
|
(Asp, Male): (
|
||||||
upper: (
|
upper: (
|
||||||
offset: (-5.0, -5.0, -5.0),
|
offset: (-5.0, 0.0, -5.0),
|
||||||
central: ("npc.asp.male.head_upper"),
|
central: ("npc.asp.male.head_upper"),
|
||||||
),
|
),
|
||||||
lower: (
|
lower: (
|
||||||
offset: (-6.0, -3.0, -7.5),
|
offset: (-6.0, -0.0, -2.0),
|
||||||
central: ("npc.asp.male.head_lower"),
|
central: ("npc.asp.male.head_lower"),
|
||||||
),
|
),
|
||||||
jaw: (
|
jaw: (
|
||||||
@ -236,11 +236,11 @@
|
|||||||
),
|
),
|
||||||
(Asp, Female): (
|
(Asp, Female): (
|
||||||
upper: (
|
upper: (
|
||||||
offset: (-5.0, -5.0, -5.0),
|
offset: (-5.0, 0.0, -5.0),
|
||||||
central: ("npc.asp.male.head_upper"),
|
central: ("npc.asp.male.head_upper"),
|
||||||
),
|
),
|
||||||
lower: (
|
lower: (
|
||||||
offset: (-6.0, -3.0, -7.5),
|
offset: (-6.0, -0.0, -2.0),
|
||||||
central: ("npc.asp.male.head_lower"),
|
central: ("npc.asp.male.head_lower"),
|
||||||
),
|
),
|
||||||
jaw: (
|
jaw: (
|
||||||
@ -572,4 +572,56 @@
|
|||||||
central: ("npc.sandshark.male.tail_front"),
|
central: ("npc.sandshark.male.tail_front"),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
(Lavadrake, Male): (
|
||||||
|
upper: (
|
||||||
|
offset: (-6.5, -2.0, -6.0),
|
||||||
|
central: ("npc.lavadrake.male.head_upper"),
|
||||||
|
),
|
||||||
|
lower: (
|
||||||
|
offset: (-6.5, -1.0, -3.0),
|
||||||
|
central: ("npc.lavadrake.male.head_lower"),
|
||||||
|
),
|
||||||
|
jaw: (
|
||||||
|
offset: (-3.5, 0.0, -5.0),
|
||||||
|
central: ("npc.lavadrake.male.jaw"),
|
||||||
|
),
|
||||||
|
chest: (
|
||||||
|
offset: (-9.5, -11.5, -11.5),
|
||||||
|
central: ("npc.lavadrake.male.chest"),
|
||||||
|
),
|
||||||
|
tail_rear: (
|
||||||
|
offset: (-6.5, -24.0, -3.5),
|
||||||
|
central: ("npc.lavadrake.male.tail_rear"),
|
||||||
|
),
|
||||||
|
tail_front: (
|
||||||
|
offset: (-5.5, -12.0, -6.5),
|
||||||
|
central: ("npc.lavadrake.male.tail_front"),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
(Lavadrake, Female): (
|
||||||
|
upper: (
|
||||||
|
offset: (-6.5, -2.0, -6.0),
|
||||||
|
central: ("npc.lavadrake.male.head_upper"),
|
||||||
|
),
|
||||||
|
lower: (
|
||||||
|
offset: (-6.5, -1.0, -3.0),
|
||||||
|
central: ("npc.lavadrake.male.head_lower"),
|
||||||
|
),
|
||||||
|
jaw: (
|
||||||
|
offset: (-3.5, 0.0, -5.0),
|
||||||
|
central: ("npc.lavadrake.male.jaw"),
|
||||||
|
),
|
||||||
|
chest: (
|
||||||
|
offset: (-9.5, -11.5, -11.5),
|
||||||
|
central: ("npc.lavadrake.male.chest"),
|
||||||
|
),
|
||||||
|
tail_rear: (
|
||||||
|
offset: (-6.5, -24.0, -3.5),
|
||||||
|
central: ("npc.lavadrake.male.tail_rear"),
|
||||||
|
),
|
||||||
|
tail_front: (
|
||||||
|
offset: (-5.5, -12.0, -6.5),
|
||||||
|
central: ("npc.lavadrake.male.tail_front"),
|
||||||
|
),
|
||||||
|
),
|
||||||
})
|
})
|
||||||
|
@ -395,4 +395,40 @@
|
|||||||
lateral: ("npc.sandshark.male.foot_br"),
|
lateral: ("npc.sandshark.male.foot_br"),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
(Lavadrake, Male): (
|
||||||
|
front_left: (
|
||||||
|
offset: (-14.0, -4.0, -10.0),
|
||||||
|
lateral: ("npc.lavadrake.male.foot_fl"),
|
||||||
|
),
|
||||||
|
front_right: (
|
||||||
|
offset: (0.0, -4.0, -10.0),
|
||||||
|
lateral: ("npc.lavadrake.male.foot_fr"),
|
||||||
|
),
|
||||||
|
back_left: (
|
||||||
|
offset: (-14.0, -7.5, -10.0),
|
||||||
|
lateral: ("npc.lavadrake.male.foot_bl"),
|
||||||
|
),
|
||||||
|
back_right: (
|
||||||
|
offset: (0.0, -7.5, -10.0),
|
||||||
|
lateral: ("npc.lavadrake.male.foot_br"),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
(Lavadrake, Female): (
|
||||||
|
front_left: (
|
||||||
|
offset: (-14.0, -4.0, -10.0),
|
||||||
|
lateral: ("npc.lavadrake.male.foot_fl"),
|
||||||
|
),
|
||||||
|
front_right: (
|
||||||
|
offset: (0.0, -4.0, -10.0),
|
||||||
|
lateral: ("npc.lavadrake.male.foot_fr"),
|
||||||
|
),
|
||||||
|
back_left: (
|
||||||
|
offset: (-14.0, -7.5, -10.0),
|
||||||
|
lateral: ("npc.lavadrake.male.foot_bl"),
|
||||||
|
),
|
||||||
|
back_right: (
|
||||||
|
offset: (0.0, -7.5, -10.0),
|
||||||
|
lateral: ("npc.lavadrake.male.foot_br"),
|
||||||
|
),
|
||||||
|
),
|
||||||
})
|
})
|
||||||
|
@ -65,7 +65,7 @@
|
|||||||
central: ("npc.saber.male.head"),
|
central: ("npc.saber.male.head"),
|
||||||
),
|
),
|
||||||
neck: (
|
neck: (
|
||||||
offset: (-4.0, -5.5, -4.0),
|
offset: (-4.0, -2.0, -4.0),
|
||||||
central: ("npc.saber.male.neck"),
|
central: ("npc.saber.male.neck"),
|
||||||
),
|
),
|
||||||
jaw: (
|
jaw: (
|
||||||
@ -95,7 +95,7 @@
|
|||||||
central: ("npc.saber.male.head"),
|
central: ("npc.saber.male.head"),
|
||||||
),
|
),
|
||||||
neck: (
|
neck: (
|
||||||
offset: (-4.0, -5.5, -4.0),
|
offset: (-4.0, -2.0, -4.0),
|
||||||
central: ("npc.saber.male.neck"),
|
central: ("npc.saber.male.neck"),
|
||||||
),
|
),
|
||||||
jaw: (
|
jaw: (
|
||||||
@ -121,11 +121,11 @@
|
|||||||
),
|
),
|
||||||
(Tuskram, Male): (
|
(Tuskram, Male): (
|
||||||
head: (
|
head: (
|
||||||
offset: (-10.0, -6.0, -6.5),
|
offset: (-10.0, -2.0, -6.5),
|
||||||
central: ("npc.tuskram.male.head"),
|
central: ("npc.tuskram.male.head"),
|
||||||
),
|
),
|
||||||
neck: (
|
neck: (
|
||||||
offset: (-4.0, -5.0, -3.5),
|
offset: (-4.0, -2.0, -3.5),
|
||||||
central: ("npc.tuskram.male.neck"),
|
central: ("npc.tuskram.male.neck"),
|
||||||
),
|
),
|
||||||
jaw: (
|
jaw: (
|
||||||
@ -151,11 +151,11 @@
|
|||||||
),
|
),
|
||||||
(Tuskram, Female): (
|
(Tuskram, Female): (
|
||||||
head: (
|
head: (
|
||||||
offset: (-10.0, -6.0, -6.5),
|
offset: (-10.0, -2.0, -6.5),
|
||||||
central: ("npc.tuskram.male.head"),
|
central: ("npc.tuskram.male.head"),
|
||||||
),
|
),
|
||||||
neck: (
|
neck: (
|
||||||
offset: (-4.0, -5.0, -3.5),
|
offset: (-4.0, -2.0, -3.5),
|
||||||
central: ("npc.tuskram.male.neck"),
|
central: ("npc.tuskram.male.neck"),
|
||||||
),
|
),
|
||||||
jaw: (
|
jaw: (
|
||||||
@ -185,7 +185,7 @@
|
|||||||
central: ("npc.lion.male.head"),
|
central: ("npc.lion.male.head"),
|
||||||
),
|
),
|
||||||
neck: (
|
neck: (
|
||||||
offset: (-7.5, -5.5, -8.5),
|
offset: (-7.5, -3.0, -8.5),
|
||||||
central: ("npc.lion.male.neck"),
|
central: ("npc.lion.male.neck"),
|
||||||
),
|
),
|
||||||
jaw: (
|
jaw: (
|
||||||
@ -215,7 +215,7 @@
|
|||||||
central: ("npc.lion.male.head"),
|
central: ("npc.lion.male.head"),
|
||||||
),
|
),
|
||||||
neck: (
|
neck: (
|
||||||
offset: (-7.5, -5.5, -8.5),
|
offset: (-7.5, -3.0, -8.5),
|
||||||
central: ("npc.lion.male.neck"),
|
central: ("npc.lion.male.neck"),
|
||||||
),
|
),
|
||||||
jaw: (
|
jaw: (
|
||||||
@ -245,7 +245,7 @@
|
|||||||
central: ("npc.tarasque.male.head"),
|
central: ("npc.tarasque.male.head"),
|
||||||
),
|
),
|
||||||
neck: (
|
neck: (
|
||||||
offset: (-5.0, -3.0, -4.5),
|
offset: (-5.0, -2.0, -4.5),
|
||||||
central: ("npc.tarasque.male.neck"),
|
central: ("npc.tarasque.male.neck"),
|
||||||
),
|
),
|
||||||
jaw: (
|
jaw: (
|
||||||
@ -275,7 +275,7 @@
|
|||||||
central: ("npc.tarasque.male.head"),
|
central: ("npc.tarasque.male.head"),
|
||||||
),
|
),
|
||||||
neck: (
|
neck: (
|
||||||
offset: (-5.0, -3.0, -4.5),
|
offset: (-5.0, -2.0, -4.5),
|
||||||
central: ("npc.tarasque.male.neck"),
|
central: ("npc.tarasque.male.neck"),
|
||||||
),
|
),
|
||||||
jaw: (
|
jaw: (
|
||||||
@ -365,7 +365,7 @@
|
|||||||
central: ("npc.wolf.male.head"),
|
central: ("npc.wolf.male.head"),
|
||||||
),
|
),
|
||||||
neck: (
|
neck: (
|
||||||
offset: (-5.0, -4.5, -5.0),
|
offset: (-5.0, -2.0, -5.0),
|
||||||
central: ("npc.wolf.male.neck"),
|
central: ("npc.wolf.male.neck"),
|
||||||
),
|
),
|
||||||
jaw: (
|
jaw: (
|
||||||
@ -395,7 +395,7 @@
|
|||||||
central: ("npc.wolf.male.head"),
|
central: ("npc.wolf.male.head"),
|
||||||
),
|
),
|
||||||
neck: (
|
neck: (
|
||||||
offset: (-5.0, -4.5, -5.0),
|
offset: (-5.0, -2.0, -5.0),
|
||||||
central: ("npc.wolf.male.neck"),
|
central: ("npc.wolf.male.neck"),
|
||||||
),
|
),
|
||||||
jaw: (
|
jaw: (
|
||||||
@ -425,7 +425,7 @@
|
|||||||
central: ("npc.frostfang.male.head"),
|
central: ("npc.frostfang.male.head"),
|
||||||
),
|
),
|
||||||
neck: (
|
neck: (
|
||||||
offset: (-3.0, -2.0, -4.0),
|
offset: (-3.0, -1.0, -4.0),
|
||||||
central: ("npc.frostfang.male.neck"),
|
central: ("npc.frostfang.male.neck"),
|
||||||
),
|
),
|
||||||
jaw: (
|
jaw: (
|
||||||
@ -455,7 +455,7 @@
|
|||||||
central: ("npc.frostfang.male.head"),
|
central: ("npc.frostfang.male.head"),
|
||||||
),
|
),
|
||||||
neck: (
|
neck: (
|
||||||
offset: (-3.0, -2.0, -4.0),
|
offset: (-3.0, -1.0, -4.0),
|
||||||
central: ("npc.frostfang.male.neck"),
|
central: ("npc.frostfang.male.neck"),
|
||||||
),
|
),
|
||||||
jaw: (
|
jaw: (
|
||||||
@ -485,7 +485,7 @@
|
|||||||
central: ("npc.mouflon.male.head"),
|
central: ("npc.mouflon.male.head"),
|
||||||
),
|
),
|
||||||
neck: (
|
neck: (
|
||||||
offset: (-4.0, -4.0, -4.5),
|
offset: (-4.0, -2.0, -4.5),
|
||||||
central: ("npc.mouflon.male.neck"),
|
central: ("npc.mouflon.male.neck"),
|
||||||
),
|
),
|
||||||
jaw: (
|
jaw: (
|
||||||
@ -515,7 +515,7 @@
|
|||||||
central: ("npc.mouflon.male.head"),
|
central: ("npc.mouflon.male.head"),
|
||||||
),
|
),
|
||||||
neck: (
|
neck: (
|
||||||
offset: (-4.0, -4.0, -4.5),
|
offset: (-4.0, -2.0, -4.5),
|
||||||
central: ("npc.mouflon.male.neck"),
|
central: ("npc.mouflon.male.neck"),
|
||||||
),
|
),
|
||||||
jaw: (
|
jaw: (
|
||||||
@ -605,7 +605,7 @@
|
|||||||
central: ("npc.bonerattler.male.head"),
|
central: ("npc.bonerattler.male.head"),
|
||||||
),
|
),
|
||||||
neck: (
|
neck: (
|
||||||
offset: (-4.5, -2.0, -5.0),
|
offset: (-4.5, -1.0, -5.0),
|
||||||
central: ("npc.bonerattler.male.neck"),
|
central: ("npc.bonerattler.male.neck"),
|
||||||
),
|
),
|
||||||
jaw: (
|
jaw: (
|
||||||
@ -635,7 +635,7 @@
|
|||||||
central: ("npc.bonerattler.male.head"),
|
central: ("npc.bonerattler.male.head"),
|
||||||
),
|
),
|
||||||
neck: (
|
neck: (
|
||||||
offset: (-4.5, -2.0, -5.0),
|
offset: (-4.5, -1.0, -5.0),
|
||||||
central: ("npc.bonerattler.male.neck"),
|
central: ("npc.bonerattler.male.neck"),
|
||||||
),
|
),
|
||||||
jaw: (
|
jaw: (
|
||||||
@ -665,7 +665,7 @@
|
|||||||
central: ("npc.deer.male.head"),
|
central: ("npc.deer.male.head"),
|
||||||
),
|
),
|
||||||
neck: (
|
neck: (
|
||||||
offset: (-3.0, -3.5, -4.0),
|
offset: (-3.0, -2.0, -4.0),
|
||||||
central: ("npc.deer.male.neck"),
|
central: ("npc.deer.male.neck"),
|
||||||
),
|
),
|
||||||
jaw: (
|
jaw: (
|
||||||
@ -695,7 +695,7 @@
|
|||||||
central: ("npc.deer.female.head"),
|
central: ("npc.deer.female.head"),
|
||||||
),
|
),
|
||||||
neck: (
|
neck: (
|
||||||
offset: (-3.0, -3.5, -4.0),
|
offset: (-3.0, -2.0, -4.0),
|
||||||
central: ("npc.deer.female.neck"),
|
central: ("npc.deer.female.neck"),
|
||||||
),
|
),
|
||||||
jaw: (
|
jaw: (
|
||||||
@ -725,7 +725,7 @@
|
|||||||
central: ("npc.hirdrasil.male.head"),
|
central: ("npc.hirdrasil.male.head"),
|
||||||
),
|
),
|
||||||
neck: (
|
neck: (
|
||||||
offset: (-4.0, -4.0, -6.0),
|
offset: (-4.0, -2.0, -6.0),
|
||||||
central: ("npc.hirdrasil.male.neck"),
|
central: ("npc.hirdrasil.male.neck"),
|
||||||
),
|
),
|
||||||
jaw: (
|
jaw: (
|
||||||
@ -755,7 +755,7 @@
|
|||||||
central: ("npc.hirdrasil.male.head"),
|
central: ("npc.hirdrasil.male.head"),
|
||||||
),
|
),
|
||||||
neck: (
|
neck: (
|
||||||
offset: (-4.0, -4.0, -6.0),
|
offset: (-4.0, -2.0, -6.0),
|
||||||
central: ("npc.hirdrasil.male.neck"),
|
central: ("npc.hirdrasil.male.neck"),
|
||||||
),
|
),
|
||||||
jaw: (
|
jaw: (
|
||||||
@ -785,7 +785,7 @@
|
|||||||
central: ("npc.roshwalr.male.head"),
|
central: ("npc.roshwalr.male.head"),
|
||||||
),
|
),
|
||||||
neck: (
|
neck: (
|
||||||
offset: (-7.0, -3.0, -11.5),
|
offset: (-7.0, -2.0, -11.5),
|
||||||
central: ("npc.roshwalr.male.neck"),
|
central: ("npc.roshwalr.male.neck"),
|
||||||
),
|
),
|
||||||
jaw: (
|
jaw: (
|
||||||
@ -815,7 +815,7 @@
|
|||||||
central: ("npc.roshwalr.male.head"),
|
central: ("npc.roshwalr.male.head"),
|
||||||
),
|
),
|
||||||
neck: (
|
neck: (
|
||||||
offset: (-7.0, -3.0, -11.5),
|
offset: (-7.0, -2.0, -11.5),
|
||||||
central: ("npc.roshwalr.male.neck"),
|
central: ("npc.roshwalr.male.neck"),
|
||||||
),
|
),
|
||||||
jaw: (
|
jaw: (
|
||||||
|
@ -171,6 +171,7 @@ pub enum CharacterAbility {
|
|||||||
speed: f32,
|
speed: f32,
|
||||||
charge_duration: u64,
|
charge_duration: u64,
|
||||||
swing_duration: u64,
|
swing_duration: u64,
|
||||||
|
hit_timing: f32,
|
||||||
recover_duration: u64,
|
recover_duration: u64,
|
||||||
},
|
},
|
||||||
ChargedRanged {
|
ChargedRanged {
|
||||||
@ -792,6 +793,7 @@ impl From<(&CharacterAbility, AbilityKey)> for CharacterState {
|
|||||||
speed,
|
speed,
|
||||||
charge_duration,
|
charge_duration,
|
||||||
swing_duration,
|
swing_duration,
|
||||||
|
hit_timing,
|
||||||
recover_duration,
|
recover_duration,
|
||||||
range,
|
range,
|
||||||
max_angle,
|
max_angle,
|
||||||
@ -808,6 +810,7 @@ impl From<(&CharacterAbility, AbilityKey)> for CharacterState {
|
|||||||
max_angle: *max_angle,
|
max_angle: *max_angle,
|
||||||
charge_duration: Duration::from_millis(*charge_duration),
|
charge_duration: Duration::from_millis(*charge_duration),
|
||||||
swing_duration: Duration::from_millis(*swing_duration),
|
swing_duration: Duration::from_millis(*swing_duration),
|
||||||
|
hit_timing: *hit_timing,
|
||||||
recover_duration: Duration::from_millis(*recover_duration),
|
recover_duration: Duration::from_millis(*recover_duration),
|
||||||
ability_key: key,
|
ability_key: key,
|
||||||
},
|
},
|
||||||
|
@ -76,36 +76,36 @@ impl<'a> From<&'a Body> for Psyche {
|
|||||||
aggro: match body {
|
aggro: match body {
|
||||||
Body::Humanoid(humanoid) => match humanoid.species {
|
Body::Humanoid(humanoid) => match humanoid.species {
|
||||||
humanoid::Species::Danari => 0.9,
|
humanoid::Species::Danari => 0.9,
|
||||||
humanoid::Species::Dwarf => 0.9,
|
humanoid::Species::Dwarf => 0.8,
|
||||||
humanoid::Species::Elf => 0.95,
|
humanoid::Species::Elf => 0.7,
|
||||||
humanoid::Species::Human => 0.95,
|
humanoid::Species::Human => 0.6,
|
||||||
humanoid::Species::Orc => 1.0,
|
humanoid::Species::Orc => 0.9,
|
||||||
humanoid::Species::Undead => 1.0,
|
humanoid::Species::Undead => 0.9,
|
||||||
},
|
},
|
||||||
Body::QuadrupedSmall(quadruped_small) => match quadruped_small.species {
|
Body::QuadrupedSmall(quadruped_small) => match quadruped_small.species {
|
||||||
quadruped_small::Species::Pig => 0.5,
|
quadruped_small::Species::Pig => 0.5,
|
||||||
quadruped_small::Species::Fox => 0.4,
|
quadruped_small::Species::Fox => 0.3,
|
||||||
quadruped_small::Species::Sheep => 0.5,
|
quadruped_small::Species::Sheep => 0.5,
|
||||||
quadruped_small::Species::Boar => 1.0,
|
quadruped_small::Species::Boar => 0.8,
|
||||||
quadruped_small::Species::Jackalope => 0.4,
|
quadruped_small::Species::Jackalope => 0.4,
|
||||||
quadruped_small::Species::Skunk => 0.8,
|
quadruped_small::Species::Skunk => 0.6,
|
||||||
quadruped_small::Species::Cat => 0.2,
|
quadruped_small::Species::Cat => 0.2,
|
||||||
quadruped_small::Species::Batfox => 0.7,
|
quadruped_small::Species::Batfox => 0.6,
|
||||||
quadruped_small::Species::Raccoon => 0.4,
|
quadruped_small::Species::Raccoon => 0.4,
|
||||||
quadruped_small::Species::Quokka => 0.7,
|
quadruped_small::Species::Quokka => 0.4,
|
||||||
quadruped_small::Species::Dodarock => 0.9,
|
quadruped_small::Species::Dodarock => 0.9,
|
||||||
quadruped_small::Species::Holladon => 1.0,
|
quadruped_small::Species::Holladon => 1.0,
|
||||||
quadruped_small::Species::Hyena => 0.4,
|
quadruped_small::Species::Hyena => 0.4,
|
||||||
quadruped_small::Species::Rabbit => 0.1,
|
quadruped_small::Species::Rabbit => 0.1,
|
||||||
quadruped_small::Species::Truffler => 0.8,
|
quadruped_small::Species::Truffler => 0.8,
|
||||||
quadruped_small::Species::Frog => 0.6,
|
quadruped_small::Species::Frog => 0.4,
|
||||||
quadruped_small::Species::Hare => 0.2,
|
quadruped_small::Species::Hare => 0.2,
|
||||||
_ => 1.0,
|
_ => 0.0,
|
||||||
},
|
},
|
||||||
Body::QuadrupedMedium(quadruped_medium) => match quadruped_medium.species {
|
Body::QuadrupedMedium(quadruped_medium) => match quadruped_medium.species {
|
||||||
quadruped_medium::Species::Tuskram => 0.8,
|
quadruped_medium::Species::Tuskram => 0.7,
|
||||||
quadruped_medium::Species::Frostfang => 0.9,
|
quadruped_medium::Species::Frostfang => 0.9,
|
||||||
quadruped_medium::Species::Mouflon => 0.8,
|
quadruped_medium::Species::Mouflon => 0.7,
|
||||||
quadruped_medium::Species::Catoblepas => 0.8,
|
quadruped_medium::Species::Catoblepas => 0.8,
|
||||||
quadruped_medium::Species::Deer => 0.6,
|
quadruped_medium::Species::Deer => 0.6,
|
||||||
quadruped_medium::Species::Hirdrasil => 0.7,
|
quadruped_medium::Species::Hirdrasil => 0.7,
|
||||||
@ -113,17 +113,17 @@ impl<'a> From<&'a Body> for Psyche {
|
|||||||
quadruped_medium::Species::Camel => 0.7,
|
quadruped_medium::Species::Camel => 0.7,
|
||||||
quadruped_medium::Species::Zebra => 0.7,
|
quadruped_medium::Species::Zebra => 0.7,
|
||||||
quadruped_medium::Species::Antelope => 0.6,
|
quadruped_medium::Species::Antelope => 0.6,
|
||||||
quadruped_medium::Species::Horse => 0.8,
|
quadruped_medium::Species::Horse => 0.7,
|
||||||
_ => 1.0,
|
_ => 0.5,
|
||||||
},
|
},
|
||||||
Body::QuadrupedLow(quadruped_low) => match quadruped_low.species {
|
Body::QuadrupedLow(quadruped_low) => match quadruped_low.species {
|
||||||
quadruped_low::Species::Salamander => 0.8,
|
quadruped_low::Species::Salamander => 0.7,
|
||||||
quadruped_low::Species::Monitor => 0.9,
|
quadruped_low::Species::Monitor => 0.7,
|
||||||
quadruped_low::Species::Asp => 0.9,
|
quadruped_low::Species::Asp => 0.9,
|
||||||
quadruped_low::Species::Pangolin => 0.6,
|
quadruped_low::Species::Pangolin => 0.4,
|
||||||
_ => 1.0,
|
_ => 0.6,
|
||||||
},
|
},
|
||||||
Body::BirdMedium(_) => 1.0,
|
Body::BirdMedium(_) => 0.5,
|
||||||
Body::BirdSmall(_) => 0.4,
|
Body::BirdSmall(_) => 0.4,
|
||||||
Body::FishMedium(_) => 0.15,
|
Body::FishMedium(_) => 0.15,
|
||||||
Body::FishSmall(_) => 0.0,
|
Body::FishSmall(_) => 0.0,
|
||||||
|
@ -173,7 +173,12 @@ impl Body {
|
|||||||
quadruped_low::Species::Pangolin => 1.3,
|
quadruped_low::Species::Pangolin => 1.3,
|
||||||
_ => 1.6,
|
_ => 1.6,
|
||||||
},
|
},
|
||||||
Body::Theropod(_) => 0.3,
|
Body::Theropod(body) => match body.species {
|
||||||
|
theropod::Species::Snowraptor => 0.5,
|
||||||
|
theropod::Species::Sandraptor => 0.5,
|
||||||
|
theropod::Species::Woodraptor => 0.5,
|
||||||
|
_ => 0.9,
|
||||||
|
},
|
||||||
Body::BirdMedium(_) => 0.35,
|
Body::BirdMedium(_) => 0.35,
|
||||||
Body::FishMedium(_) => 0.35,
|
Body::FishMedium(_) => 0.35,
|
||||||
Body::Dragon(_) => 8.0,
|
Body::Dragon(_) => 8.0,
|
||||||
@ -312,7 +317,11 @@ impl Body {
|
|||||||
},
|
},
|
||||||
Body::Object(_) => 10000,
|
Body::Object(_) => 10000,
|
||||||
Body::Golem(_) => 2740,
|
Body::Golem(_) => 2740,
|
||||||
Body::Theropod(_) => 1000,
|
Body::Theropod(theropod) => match theropod.species {
|
||||||
|
theropod::Species::Archaeos => 3000,
|
||||||
|
theropod::Species::Odonto => 2700,
|
||||||
|
_ => 1100,
|
||||||
|
},
|
||||||
Body::QuadrupedLow(quadruped_low) => match quadruped_low.species {
|
Body::QuadrupedLow(quadruped_low) => match quadruped_low.species {
|
||||||
quadruped_low::Species::Crocodile => 600,
|
quadruped_low::Species::Crocodile => 600,
|
||||||
quadruped_low::Species::Alligator => 600,
|
quadruped_low::Species::Alligator => 600,
|
||||||
@ -325,6 +334,8 @@ impl Body {
|
|||||||
quadruped_low::Species::Maneater => 400,
|
quadruped_low::Species::Maneater => 400,
|
||||||
quadruped_low::Species::Sandshark => 600,
|
quadruped_low::Species::Sandshark => 600,
|
||||||
quadruped_low::Species::Hakulaq => 400,
|
quadruped_low::Species::Hakulaq => 400,
|
||||||
|
quadruped_low::Species::Lavadrake => 900,
|
||||||
|
|
||||||
_ => 200,
|
_ => 200,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
@ -481,6 +492,7 @@ impl Body {
|
|||||||
quadruped_low::Species::Maneater => 14,
|
quadruped_low::Species::Maneater => 14,
|
||||||
quadruped_low::Species::Sandshark => 12,
|
quadruped_low::Species::Sandshark => 12,
|
||||||
quadruped_low::Species::Hakulaq => 10,
|
quadruped_low::Species::Hakulaq => 10,
|
||||||
|
quadruped_low::Species::Lavadrake => 20,
|
||||||
_ => 10,
|
_ => 10,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
@ -512,6 +524,7 @@ impl Body {
|
|||||||
Body::QuadrupedSmall(quadruped_small) => match quadruped_small.species {
|
Body::QuadrupedSmall(quadruped_small) => match quadruped_small.species {
|
||||||
quadruped_small::Species::Dodarock => 30,
|
quadruped_small::Species::Dodarock => 30,
|
||||||
quadruped_small::Species::Hyena => 40,
|
quadruped_small::Species::Hyena => 40,
|
||||||
|
quadruped_small::Species::Holladon => 40,
|
||||||
quadruped_small::Species::Porcupine => 30,
|
quadruped_small::Species::Porcupine => 30,
|
||||||
_ => 20,
|
_ => 20,
|
||||||
},
|
},
|
||||||
@ -558,11 +571,15 @@ impl Body {
|
|||||||
},
|
},
|
||||||
Body::Object(_) => 0,
|
Body::Object(_) => 0,
|
||||||
Body::Golem(_) => 250,
|
Body::Golem(_) => 250,
|
||||||
Body::Theropod(_) => 10,
|
Body::Theropod(theropod) => match theropod.species {
|
||||||
|
theropod::Species::Archaeos => 150,
|
||||||
|
theropod::Species::Odonto => 130,
|
||||||
|
_ => 70,
|
||||||
|
},
|
||||||
Body::QuadrupedLow(quadruped_low) => match quadruped_low.species {
|
Body::QuadrupedLow(quadruped_low) => match quadruped_low.species {
|
||||||
quadruped_low::Species::Crocodile => 50,
|
quadruped_low::Species::Crocodile => 50,
|
||||||
quadruped_low::Species::Alligator => 50,
|
quadruped_low::Species::Alligator => 50,
|
||||||
quadruped_low::Species::Salamander => 30,
|
quadruped_low::Species::Salamander => 50,
|
||||||
quadruped_low::Species::Monitor => 30,
|
quadruped_low::Species::Monitor => 30,
|
||||||
quadruped_low::Species::Asp => 35,
|
quadruped_low::Species::Asp => 35,
|
||||||
quadruped_low::Species::Tortoise => 10,
|
quadruped_low::Species::Tortoise => 10,
|
||||||
@ -604,6 +621,8 @@ impl Body {
|
|||||||
_ => Vec3::unit_z(),
|
_ => Vec3::unit_z(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn can_strafe(&self) -> bool { matches!(self, Body::Humanoid(_)) }
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Component for Body {
|
impl Component for Body {
|
||||||
|
@ -45,6 +45,7 @@ make_case_elim!(
|
|||||||
Maneater = 8,
|
Maneater = 8,
|
||||||
Sandshark = 9,
|
Sandshark = 9,
|
||||||
Hakulaq = 10,
|
Hakulaq = 10,
|
||||||
|
Lavadrake = 11,
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -64,6 +65,7 @@ pub struct AllSpecies<SpeciesMeta> {
|
|||||||
pub maneater: SpeciesMeta,
|
pub maneater: SpeciesMeta,
|
||||||
pub sandshark: SpeciesMeta,
|
pub sandshark: SpeciesMeta,
|
||||||
pub hakulaq: SpeciesMeta,
|
pub hakulaq: SpeciesMeta,
|
||||||
|
pub lavadrake: SpeciesMeta,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies<SpeciesMeta> {
|
impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies<SpeciesMeta> {
|
||||||
@ -83,11 +85,12 @@ impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies<SpeciesMeta>
|
|||||||
Species::Maneater => &self.maneater,
|
Species::Maneater => &self.maneater,
|
||||||
Species::Sandshark => &self.sandshark,
|
Species::Sandshark => &self.sandshark,
|
||||||
Species::Hakulaq => &self.hakulaq,
|
Species::Hakulaq => &self.hakulaq,
|
||||||
|
Species::Lavadrake => &self.lavadrake,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub const ALL_SPECIES: [Species; 11] = [
|
pub const ALL_SPECIES: [Species; 12] = [
|
||||||
Species::Crocodile,
|
Species::Crocodile,
|
||||||
Species::Alligator,
|
Species::Alligator,
|
||||||
Species::Salamander,
|
Species::Salamander,
|
||||||
@ -99,6 +102,7 @@ pub const ALL_SPECIES: [Species; 11] = [
|
|||||||
Species::Maneater,
|
Species::Maneater,
|
||||||
Species::Sandshark,
|
Species::Sandshark,
|
||||||
Species::Hakulaq,
|
Species::Hakulaq,
|
||||||
|
Species::Lavadrake,
|
||||||
];
|
];
|
||||||
|
|
||||||
impl<'a, SpeciesMeta: 'a> IntoIterator for &'a AllSpecies<SpeciesMeta> {
|
impl<'a, SpeciesMeta: 'a> IntoIterator for &'a AllSpecies<SpeciesMeta> {
|
||||||
|
@ -172,4 +172,17 @@ impl Asset for AbilityMap {
|
|||||||
pub enum UniqueKind {
|
pub enum UniqueKind {
|
||||||
StoneGolemFist,
|
StoneGolemFist,
|
||||||
BeastClaws,
|
BeastClaws,
|
||||||
|
QuadMedQuick,
|
||||||
|
QuadMedJump,
|
||||||
|
QuadMedHoof,
|
||||||
|
QuadMedBasic,
|
||||||
|
QuadMedCharge,
|
||||||
|
QuadLowRanged,
|
||||||
|
QuadLowBreathe,
|
||||||
|
QuadLowTail,
|
||||||
|
QuadLowQuick,
|
||||||
|
QuadLowBasic,
|
||||||
|
QuadSmallBasic,
|
||||||
|
TheropodBasic,
|
||||||
|
TheropodBird,
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
use crate::comp::{
|
use crate::comp::{
|
||||||
biped_large, golem,
|
biped_large, golem,
|
||||||
item::{tool::AbilityMap, Item, ItemKind},
|
item::{tool::AbilityMap, Item, ItemKind},
|
||||||
Body, CharacterAbility, ItemConfig, Loadout,
|
quadruped_low, quadruped_medium, theropod, Body, CharacterAbility, ItemConfig, Loadout,
|
||||||
};
|
};
|
||||||
use rand::Rng;
|
use rand::Rng;
|
||||||
|
|
||||||
@ -103,6 +103,90 @@ impl LoadoutBuilder {
|
|||||||
},
|
},
|
||||||
_ => {},
|
_ => {},
|
||||||
},
|
},
|
||||||
|
Body::QuadrupedMedium(quadruped_medium) => match quadruped_medium.species {
|
||||||
|
quadruped_medium::Species::Wolf
|
||||||
|
| quadruped_medium::Species::Grolgar
|
||||||
|
| quadruped_medium::Species::Lion
|
||||||
|
| quadruped_medium::Species::Bonerattler => {
|
||||||
|
main_tool = Some(Item::new_from_asset_expect(
|
||||||
|
"common.items.npc_weapons.unique.quadmedquick",
|
||||||
|
));
|
||||||
|
},
|
||||||
|
quadruped_medium::Species::Donkey
|
||||||
|
| quadruped_medium::Species::Horse
|
||||||
|
| quadruped_medium::Species::Zebra
|
||||||
|
| quadruped_medium::Species::Kelpie
|
||||||
|
| quadruped_medium::Species::Hirdrasil
|
||||||
|
| quadruped_medium::Species::Deer
|
||||||
|
| quadruped_medium::Species::Antelope => {
|
||||||
|
main_tool = Some(Item::new_from_asset_expect(
|
||||||
|
"common.items.npc_weapons.unique.quadmedhoof",
|
||||||
|
));
|
||||||
|
},
|
||||||
|
quadruped_medium::Species::Saber => {
|
||||||
|
main_tool = Some(Item::new_from_asset_expect(
|
||||||
|
"common.items.npc_weapons.unique.quadmedjump",
|
||||||
|
));
|
||||||
|
},
|
||||||
|
quadruped_medium::Species::Tuskram | quadruped_medium::Species::Roshwalr => {
|
||||||
|
main_tool = Some(Item::new_from_asset_expect(
|
||||||
|
"common.items.npc_weapons.unique.quadmedcharge",
|
||||||
|
));
|
||||||
|
},
|
||||||
|
_ => {
|
||||||
|
main_tool = Some(Item::new_from_asset_expect(
|
||||||
|
"common.items.npc_weapons.unique.quadmedbasic",
|
||||||
|
));
|
||||||
|
},
|
||||||
|
},
|
||||||
|
Body::QuadrupedLow(quadruped_low) => match quadruped_low.species {
|
||||||
|
quadruped_low::Species::Maneater | quadruped_low::Species::Asp => {
|
||||||
|
main_tool = Some(Item::new_from_asset_expect(
|
||||||
|
"common.items.npc_weapons.unique.quadlowranged",
|
||||||
|
));
|
||||||
|
},
|
||||||
|
quadruped_low::Species::Crocodile
|
||||||
|
| quadruped_low::Species::Alligator
|
||||||
|
| quadruped_low::Species::Salamander => {
|
||||||
|
main_tool = Some(Item::new_from_asset_expect(
|
||||||
|
"common.items.npc_weapons.unique.quadlowtail",
|
||||||
|
));
|
||||||
|
},
|
||||||
|
quadruped_low::Species::Monitor | quadruped_low::Species::Pangolin => {
|
||||||
|
main_tool = Some(Item::new_from_asset_expect(
|
||||||
|
"common.items.npc_weapons.unique.quadlowquick",
|
||||||
|
));
|
||||||
|
},
|
||||||
|
quadruped_low::Species::Lavadrake => {
|
||||||
|
main_tool = Some(Item::new_from_asset_expect(
|
||||||
|
"common.items.npc_weapons.unique.quadlowbreathe",
|
||||||
|
));
|
||||||
|
},
|
||||||
|
_ => {
|
||||||
|
main_tool = Some(Item::new_from_asset_expect(
|
||||||
|
"common.items.npc_weapons.unique.quadlowbasic",
|
||||||
|
));
|
||||||
|
},
|
||||||
|
},
|
||||||
|
Body::QuadrupedSmall(_) => {
|
||||||
|
main_tool = Some(Item::new_from_asset_expect(
|
||||||
|
"common.items.npc_weapons.unique.quadsmallbasic",
|
||||||
|
));
|
||||||
|
},
|
||||||
|
Body::Theropod(theropod) => match theropod.species {
|
||||||
|
theropod::Species::Sandraptor
|
||||||
|
| theropod::Species::Snowraptor
|
||||||
|
| theropod::Species::Woodraptor => {
|
||||||
|
main_tool = Some(Item::new_from_asset_expect(
|
||||||
|
"common.items.npc_weapons.unique.theropodbird",
|
||||||
|
));
|
||||||
|
},
|
||||||
|
_ => {
|
||||||
|
main_tool = Some(Item::new_from_asset_expect(
|
||||||
|
"common.items.npc_weapons.unique.theropodbasic",
|
||||||
|
));
|
||||||
|
},
|
||||||
|
},
|
||||||
Body::BipedLarge(biped_large) => match (biped_large.species, biped_large.body_type)
|
Body::BipedLarge(biped_large) => match (biped_large.species, biped_large.body_type)
|
||||||
{
|
{
|
||||||
(biped_large::Species::Occultsaurok, _) => {
|
(biped_large::Species::Occultsaurok, _) => {
|
||||||
|
@ -131,7 +131,7 @@ impl Route {
|
|||||||
// Determine whether we're close enough to the next to to consider it completed
|
// Determine whether we're close enough to the next to to consider it completed
|
||||||
let dist_sqrd = pos.xy().distance_squared(closest_tgt.xy());
|
let dist_sqrd = pos.xy().distance_squared(closest_tgt.xy());
|
||||||
if dist_sqrd
|
if dist_sqrd
|
||||||
< traversal_cfg.node_tolerance.powf(2.0) * if be_precise { 0.25 } else { 1.0 }
|
< traversal_cfg.node_tolerance.powi(2) * if be_precise { 0.25 } else { 1.0 }
|
||||||
&& (((pos.z - closest_tgt.z > 1.2 || (pos.z - closest_tgt.z > -0.2 && traversal_cfg.on_ground))
|
&& (((pos.z - closest_tgt.z > 1.2 || (pos.z - closest_tgt.z > -0.2 && traversal_cfg.on_ground))
|
||||||
&& (pos.z - closest_tgt.z < 1.2 || (pos.z - closest_tgt.z < 2.9 && vel.z < -0.05))
|
&& (pos.z - closest_tgt.z < 1.2 || (pos.z - closest_tgt.z < 2.9 && vel.z < -0.05))
|
||||||
&& vel.z <= 0.0
|
&& vel.z <= 0.0
|
||||||
@ -272,7 +272,7 @@ impl Route {
|
|||||||
let straight_factor = next_dir
|
let straight_factor = next_dir
|
||||||
.dot(vel.xy().try_normalized().unwrap_or(next_dir))
|
.dot(vel.xy().try_normalized().unwrap_or(next_dir))
|
||||||
.max(0.0)
|
.max(0.0)
|
||||||
.powf(2.0);
|
.powi(2);
|
||||||
|
|
||||||
let bez = CubicBezier2 {
|
let bez = CubicBezier2 {
|
||||||
start: pos.xy(),
|
start: pos.xy(),
|
||||||
@ -347,7 +347,7 @@ impl Chaser {
|
|||||||
.map(|e| e.map(|e| e as f32 + 0.5))
|
.map(|e| e.map(|e| e as f32 + 0.5))
|
||||||
.unwrap_or(tgt);
|
.unwrap_or(tgt);
|
||||||
if ((pos - end) * Vec3::new(1.0, 1.0, 2.0)).magnitude_squared()
|
if ((pos - end) * Vec3::new(1.0, 1.0, 2.0)).magnitude_squared()
|
||||||
< traversal_cfg.min_tgt_dist.powf(2.0)
|
< traversal_cfg.min_tgt_dist.powi(2)
|
||||||
{
|
{
|
||||||
self.route = None;
|
self.route = None;
|
||||||
return None;
|
return None;
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
use crate::{
|
use crate::{
|
||||||
comp::{beam, CharacterState, EnergyChange, EnergySource, Ori, Pos, StateUpdate},
|
comp::{beam, Body, CharacterState, EnergyChange, EnergySource, Ori, Pos, StateUpdate},
|
||||||
event::ServerEvent,
|
event::ServerEvent,
|
||||||
states::utils::*,
|
states::utils::*,
|
||||||
sync::Uid,
|
sync::Uid,
|
||||||
@ -99,8 +99,8 @@ impl CharacterBehavior for Data {
|
|||||||
});
|
});
|
||||||
// Gets offsets
|
// Gets offsets
|
||||||
let body_offsets = Vec3::new(
|
let body_offsets = Vec3::new(
|
||||||
data.body.radius() * 3.0 * data.inputs.look_dir.x,
|
(data.body.radius() + 1.0) * data.inputs.look_dir.x,
|
||||||
data.body.radius() * 3.0 * data.inputs.look_dir.y,
|
(data.body.radius() + 1.0) * data.inputs.look_dir.y,
|
||||||
data.body.eye_height(),
|
data.body.eye_height(),
|
||||||
) * 0.55;
|
) * 0.55;
|
||||||
// Build up
|
// Build up
|
||||||
@ -145,11 +145,22 @@ impl CharacterBehavior for Data {
|
|||||||
owner: Some(*data.uid),
|
owner: Some(*data.uid),
|
||||||
};
|
};
|
||||||
// Gets offsets
|
// Gets offsets
|
||||||
let body_offsets = Vec3::new(
|
let body_offsets = match data.body {
|
||||||
data.body.radius() + 2.0 * data.inputs.look_dir.x,
|
Body::Humanoid(_) => {
|
||||||
data.body.radius() + 2.0 * data.inputs.look_dir.y,
|
Vec3::new(
|
||||||
data.body.eye_height(),
|
data.body.radius() + 2.0 * data.inputs.look_dir.x,
|
||||||
) * 0.55;
|
data.body.radius() + 2.0 * data.inputs.look_dir.y,
|
||||||
|
data.body.eye_height(),
|
||||||
|
) * 0.55
|
||||||
|
},
|
||||||
|
_ => {
|
||||||
|
Vec3::new(
|
||||||
|
data.body.radius() * 3.0 * data.inputs.look_dir.x,
|
||||||
|
data.body.radius() * 3.0 * data.inputs.look_dir.y,
|
||||||
|
data.body.eye_height(),
|
||||||
|
) * 0.55
|
||||||
|
},
|
||||||
|
};
|
||||||
let pos = Pos(data.pos.0 + body_offsets);
|
let pos = Pos(data.pos.0 + body_offsets);
|
||||||
// Create beam segment
|
// Create beam segment
|
||||||
update.server_events.push_front(ServerEvent::BeamSegment {
|
update.server_events.push_front(ServerEvent::BeamSegment {
|
||||||
|
@ -32,6 +32,8 @@ pub struct StaticData {
|
|||||||
pub charge_duration: Duration,
|
pub charge_duration: Duration,
|
||||||
/// How long the weapon is swinging for
|
/// How long the weapon is swinging for
|
||||||
pub swing_duration: Duration,
|
pub swing_duration: Duration,
|
||||||
|
/// At what fraction of the swing duration to apply the melee "hit"
|
||||||
|
pub hit_timing: f32,
|
||||||
/// How long the state has until exiting
|
/// How long the state has until exiting
|
||||||
pub recover_duration: Duration,
|
pub recover_duration: Duration,
|
||||||
/// What key is used to press ability
|
/// What key is used to press ability
|
||||||
@ -130,7 +132,20 @@ impl CharacterBehavior for Data {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
StageSection::Swing => {
|
StageSection::Swing => {
|
||||||
if !self.exhausted {
|
if self.timer.as_millis() as f32
|
||||||
|
> self.static_data.hit_timing
|
||||||
|
* self.static_data.swing_duration.as_millis() as f32
|
||||||
|
&& !self.exhausted
|
||||||
|
{
|
||||||
|
// Swing
|
||||||
|
update.character = CharacterState::ChargedMelee(Data {
|
||||||
|
timer: self
|
||||||
|
.timer
|
||||||
|
.checked_add(Duration::from_secs_f32(data.dt.0))
|
||||||
|
.unwrap_or_default(),
|
||||||
|
exhausted: true,
|
||||||
|
..*self
|
||||||
|
});
|
||||||
let mut damage = Damage {
|
let mut damage = Damage {
|
||||||
source: DamageSource::Melee,
|
source: DamageSource::Melee,
|
||||||
value: self.static_data.max_damage as f32,
|
value: self.static_data.max_damage as f32,
|
||||||
@ -152,16 +167,6 @@ impl CharacterBehavior for Data {
|
|||||||
hit_count: 0,
|
hit_count: 0,
|
||||||
knockback: Knockback::Away(knockback),
|
knockback: Knockback::Away(knockback),
|
||||||
});
|
});
|
||||||
|
|
||||||
// Starts swinging
|
|
||||||
update.character = CharacterState::ChargedMelee(Data {
|
|
||||||
timer: self
|
|
||||||
.timer
|
|
||||||
.checked_add(Duration::from_secs_f32(data.dt.0))
|
|
||||||
.unwrap_or_default(),
|
|
||||||
exhausted: true,
|
|
||||||
..*self
|
|
||||||
});
|
|
||||||
} else if self.timer < self.static_data.swing_duration {
|
} else if self.timer < self.static_data.swing_duration {
|
||||||
// Swings
|
// Swings
|
||||||
update.character = CharacterState::ChargedMelee(Data {
|
update.character = CharacterState::ChargedMelee(Data {
|
||||||
|
@ -44,7 +44,7 @@ impl CharacterBehavior for Data {
|
|||||||
// Move player
|
// Move player
|
||||||
update.vel.0 += Vec2::broadcast(data.dt.0)
|
update.vel.0 += Vec2::broadcast(data.dt.0)
|
||||||
* data.inputs.move_dir
|
* data.inputs.move_dir
|
||||||
* if update.vel.0.magnitude_squared() < CLIMB_SPEED.powf(2.0) {
|
* if update.vel.0.magnitude_squared() < CLIMB_SPEED.powi(2) {
|
||||||
HUMANOID_CLIMB_ACCEL
|
HUMANOID_CLIMB_ACCEL
|
||||||
} else {
|
} else {
|
||||||
0.0
|
0.0
|
||||||
|
@ -41,7 +41,7 @@ impl CharacterBehavior for Data {
|
|||||||
// Move player according to movement direction vector
|
// Move player according to movement direction vector
|
||||||
update.vel.0 += Vec2::broadcast(data.dt.0)
|
update.vel.0 += Vec2::broadcast(data.dt.0)
|
||||||
* data.inputs.move_dir
|
* data.inputs.move_dir
|
||||||
* if data.vel.0.magnitude_squared() < GLIDE_SPEED.powf(2.0) {
|
* if data.vel.0.magnitude_squared() < GLIDE_SPEED.powi(2) {
|
||||||
GLIDE_ACCEL
|
GLIDE_ACCEL
|
||||||
} else {
|
} else {
|
||||||
0.0
|
0.0
|
||||||
@ -52,10 +52,10 @@ impl CharacterBehavior for Data {
|
|||||||
update.ori.0 = Dir::slerp_to_vec3(update.ori.0, ori_dir.into(), 2.0 * data.dt.0);
|
update.ori.0 = Dir::slerp_to_vec3(update.ori.0, ori_dir.into(), 2.0 * data.dt.0);
|
||||||
|
|
||||||
// Apply Glide antigrav lift
|
// Apply Glide antigrav lift
|
||||||
if Vec2::<f32>::from(update.vel.0).magnitude_squared() < GLIDE_SPEED.powf(2.0)
|
if Vec2::<f32>::from(update.vel.0).magnitude_squared() < GLIDE_SPEED.powi(2)
|
||||||
&& update.vel.0.z < 0.0
|
&& update.vel.0.z < 0.0
|
||||||
{
|
{
|
||||||
let lift = GLIDE_ANTIGRAV + update.vel.0.z.abs().powf(2.0) * 0.15;
|
let lift = GLIDE_ANTIGRAV + update.vel.0.z.abs().powi(2) * 0.15;
|
||||||
update.vel.0.z += data.dt.0
|
update.vel.0.z += data.dt.0
|
||||||
* lift
|
* lift
|
||||||
* (Vec2::<f32>::from(update.vel.0).magnitude() * 0.075)
|
* (Vec2::<f32>::from(update.vel.0).magnitude() * 0.075)
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
use crate::{
|
use crate::{
|
||||||
comp::{
|
comp::{
|
||||||
item::{Hands, ItemKind, Tool},
|
item::{Hands, ItemKind, Tool},
|
||||||
Body, CharacterState, StateUpdate,
|
quadruped_low, quadruped_medium, theropod, Body, CharacterState, StateUpdate,
|
||||||
},
|
},
|
||||||
event::LocalEvent,
|
event::LocalEvent,
|
||||||
states::*,
|
states::*,
|
||||||
@ -38,7 +38,28 @@ impl Body {
|
|||||||
match self {
|
match self {
|
||||||
Body::Humanoid(_) => 100.0,
|
Body::Humanoid(_) => 100.0,
|
||||||
Body::QuadrupedSmall(_) => 125.0,
|
Body::QuadrupedSmall(_) => 125.0,
|
||||||
Body::QuadrupedMedium(_) => 180.0,
|
Body::QuadrupedMedium(quadruped_medium) => match quadruped_medium.species {
|
||||||
|
quadruped_medium::Species::Grolgar => 110.0,
|
||||||
|
quadruped_medium::Species::Saber => 180.0,
|
||||||
|
quadruped_medium::Species::Tiger => 150.0,
|
||||||
|
quadruped_medium::Species::Tuskram => 160.0,
|
||||||
|
quadruped_medium::Species::Lion => 170.0,
|
||||||
|
quadruped_medium::Species::Tarasque => 100.0,
|
||||||
|
quadruped_medium::Species::Wolf => 180.0,
|
||||||
|
quadruped_medium::Species::Frostfang => 180.0,
|
||||||
|
quadruped_medium::Species::Mouflon => 100.0,
|
||||||
|
quadruped_medium::Species::Catoblepas => 70.0,
|
||||||
|
quadruped_medium::Species::Bonerattler => 130.0,
|
||||||
|
quadruped_medium::Species::Deer => 150.0,
|
||||||
|
quadruped_medium::Species::Hirdrasil => 160.0,
|
||||||
|
quadruped_medium::Species::Roshwalr => 160.0,
|
||||||
|
quadruped_medium::Species::Donkey => 110.0,
|
||||||
|
quadruped_medium::Species::Camel => 75.0,
|
||||||
|
quadruped_medium::Species::Zebra => 150.0,
|
||||||
|
quadruped_medium::Species::Antelope => 185.0,
|
||||||
|
quadruped_medium::Species::Kelpie => 180.0,
|
||||||
|
quadruped_medium::Species::Horse => 180.0,
|
||||||
|
},
|
||||||
Body::BirdMedium(_) => 80.0,
|
Body::BirdMedium(_) => 80.0,
|
||||||
Body::FishMedium(_) => 50.0,
|
Body::FishMedium(_) => 50.0,
|
||||||
Body::Dragon(_) => 250.0,
|
Body::Dragon(_) => 250.0,
|
||||||
@ -48,7 +69,20 @@ impl Body {
|
|||||||
Body::Object(_) => 40.0,
|
Body::Object(_) => 40.0,
|
||||||
Body::Golem(_) => 60.0,
|
Body::Golem(_) => 60.0,
|
||||||
Body::Theropod(_) => 135.0,
|
Body::Theropod(_) => 135.0,
|
||||||
Body::QuadrupedLow(_) => 120.0,
|
Body::QuadrupedLow(quadruped_low) => match quadruped_low.species {
|
||||||
|
quadruped_low::Species::Crocodile => 130.0,
|
||||||
|
quadruped_low::Species::Alligator => 110.0,
|
||||||
|
quadruped_low::Species::Salamander => 85.0,
|
||||||
|
quadruped_low::Species::Monitor => 160.0,
|
||||||
|
quadruped_low::Species::Asp => 130.0,
|
||||||
|
quadruped_low::Species::Tortoise => 60.0,
|
||||||
|
quadruped_low::Species::Rocksnapper => 70.0,
|
||||||
|
quadruped_low::Species::Pangolin => 120.0,
|
||||||
|
quadruped_low::Species::Maneater => 80.0,
|
||||||
|
quadruped_low::Species::Sandshark => 160.0,
|
||||||
|
quadruped_low::Species::Hakulaq => 140.0,
|
||||||
|
quadruped_low::Species::Lavadrake => 100.0,
|
||||||
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -60,13 +94,13 @@ impl Body {
|
|||||||
// Note: we assume no air (this is fine, current physics
|
// Note: we assume no air (this is fine, current physics
|
||||||
// uses max(air_drag, ground_drag)).
|
// uses max(air_drag, ground_drag)).
|
||||||
// Derived via...
|
// Derived via...
|
||||||
// v = (v + dv / 30) * (1 - drag).powf(2) (accel cancels drag)
|
// v = (v + dv / 30) * (1 - drag).powi(2) (accel cancels drag)
|
||||||
// => 1 = (1 + (dv / 30) / v) * (1 - drag).powf(2)
|
// => 1 = (1 + (dv / 30) / v) * (1 - drag).powi(2)
|
||||||
// => 1 / (1 - drag).powf(2) = 1 + (dv / 30) / v
|
// => 1 / (1 - drag).powi(2) = 1 + (dv / 30) / v
|
||||||
// => 1 / (1 - drag).powf(2) - 1 = (dv / 30) / v
|
// => 1 / (1 - drag).powi(2) - 1 = (dv / 30) / v
|
||||||
// => 1 / (1 / (1 - drag).powf(2) - 1) = v / (dv / 30)
|
// => 1 / (1 / (1 - drag).powi(2) - 1) = v / (dv / 30)
|
||||||
// => (dv / 30) / (1 / (1 - drag).powf(2) - 1) = v
|
// => (dv / 30) / (1 / (1 - drag).powi(2) - 1) = v
|
||||||
let v = (-self.base_accel() / 30.0) / ((1.0 - FRIC_GROUND).powf(2.0) - 1.0);
|
let v = (-self.base_accel() / 30.0) / ((1.0 - FRIC_GROUND).powi(2) - 1.0);
|
||||||
debug_assert!(v >= 0.0, "Speed must be positive!");
|
debug_assert!(v >= 0.0, "Speed must be positive!");
|
||||||
v
|
v
|
||||||
}
|
}
|
||||||
@ -75,7 +109,7 @@ impl Body {
|
|||||||
match self {
|
match self {
|
||||||
Body::Humanoid(_) => 20.0,
|
Body::Humanoid(_) => 20.0,
|
||||||
Body::QuadrupedSmall(_) => 15.0,
|
Body::QuadrupedSmall(_) => 15.0,
|
||||||
Body::QuadrupedMedium(_) => 10.0,
|
Body::QuadrupedMedium(_) => 8.0,
|
||||||
Body::BirdMedium(_) => 30.0,
|
Body::BirdMedium(_) => 30.0,
|
||||||
Body::FishMedium(_) => 5.0,
|
Body::FishMedium(_) => 5.0,
|
||||||
Body::Dragon(_) => 5.0,
|
Body::Dragon(_) => 5.0,
|
||||||
@ -84,8 +118,20 @@ impl Body {
|
|||||||
Body::BipedLarge(_) => 12.0,
|
Body::BipedLarge(_) => 12.0,
|
||||||
Body::Object(_) => 5.0,
|
Body::Object(_) => 5.0,
|
||||||
Body::Golem(_) => 8.0,
|
Body::Golem(_) => 8.0,
|
||||||
Body::Theropod(_) => 35.0,
|
Body::Theropod(theropod) => match theropod.species {
|
||||||
Body::QuadrupedLow(_) => 12.0,
|
theropod::Species::Archaeos => 2.5,
|
||||||
|
theropod::Species::Odonto => 2.5,
|
||||||
|
_ => 7.0,
|
||||||
|
},
|
||||||
|
Body::QuadrupedLow(quadruped_low) => match quadruped_low.species {
|
||||||
|
quadruped_low::Species::Monitor => 9.0,
|
||||||
|
quadruped_low::Species::Asp => 8.0,
|
||||||
|
quadruped_low::Species::Tortoise => 3.0,
|
||||||
|
quadruped_low::Species::Rocksnapper => 4.0,
|
||||||
|
quadruped_low::Species::Maneater => 5.0,
|
||||||
|
quadruped_low::Species::Lavadrake => 4.0,
|
||||||
|
_ => 6.0,
|
||||||
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -166,7 +212,7 @@ pub fn handle_forced_movement(
|
|||||||
// Multiply decreasing amount linearly over time (with average of 1)
|
// Multiply decreasing amount linearly over time (with average of 1)
|
||||||
* 2.0 * progress
|
* 2.0 * progress
|
||||||
// Apply inputted movement directions with some efficiency
|
// Apply inputted movement directions with some efficiency
|
||||||
+ (data.inputs.move_dir.try_normalized().unwrap_or_default() + update.vel.0.xy())
|
+ (data.inputs.look_dir.try_normalized().unwrap_or_default())
|
||||||
.try_normalized()
|
.try_normalized()
|
||||||
.unwrap_or_default()
|
.unwrap_or_default()
|
||||||
// Multiply by forward leap strength
|
// Multiply by forward leap strength
|
||||||
@ -186,7 +232,9 @@ pub fn handle_forced_movement(
|
|||||||
|
|
||||||
pub fn handle_orientation(data: &JoinData, update: &mut StateUpdate, rate: f32) {
|
pub fn handle_orientation(data: &JoinData, update: &mut StateUpdate, rate: f32) {
|
||||||
// Set direction based on move direction
|
// Set direction based on move direction
|
||||||
let ori_dir = if update.character.is_aimed() {
|
let ori_dir = if (update.character.is_aimed() && data.body.can_strafe())
|
||||||
|
|| update.character.is_attack()
|
||||||
|
{
|
||||||
data.inputs.look_dir.xy()
|
data.inputs.look_dir.xy()
|
||||||
} else if !data.inputs.move_dir.is_approx_zero() {
|
} else if !data.inputs.move_dir.is_approx_zero() {
|
||||||
data.inputs.move_dir
|
data.inputs.move_dir
|
||||||
@ -203,7 +251,7 @@ fn swim_move(data: &JoinData, update: &mut StateUpdate, efficiency: f32, depth:
|
|||||||
// Update velocity
|
// Update velocity
|
||||||
update.vel.0 += Vec2::broadcast(data.dt.0)
|
update.vel.0 += Vec2::broadcast(data.dt.0)
|
||||||
* data.inputs.move_dir
|
* data.inputs.move_dir
|
||||||
* if update.vel.0.magnitude_squared() < BASE_HUMANOID_WATER_SPEED.powf(2.0) {
|
* if update.vel.0.magnitude_squared() < BASE_HUMANOID_WATER_SPEED.powi(2) {
|
||||||
BASE_HUMANOID_WATER_ACCEL
|
BASE_HUMANOID_WATER_ACCEL
|
||||||
} else {
|
} else {
|
||||||
0.0
|
0.0
|
||||||
@ -220,7 +268,7 @@ fn swim_move(data: &JoinData, update: &mut StateUpdate, efficiency: f32, depth:
|
|||||||
* data
|
* data
|
||||||
.inputs
|
.inputs
|
||||||
.move_z
|
.move_z
|
||||||
.clamped(-1.0, depth.clamped(0.0, 1.0).powf(3.0)))
|
.clamped(-1.0, depth.clamped(0.0, 1.0).powi(3)))
|
||||||
.min(BASE_HUMANOID_WATER_SPEED);
|
.min(BASE_HUMANOID_WATER_SPEED);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -417,7 +465,7 @@ pub fn handle_ability3_input(data: &JoinData, update: &mut StateUpdate) {
|
|||||||
/// Checks that player can perform a dodge, then
|
/// Checks that player can perform a dodge, then
|
||||||
/// attempts to go into `loadout.active_item.dodge_ability`
|
/// attempts to go into `loadout.active_item.dodge_ability`
|
||||||
pub fn handle_dodge_input(data: &JoinData, update: &mut StateUpdate) {
|
pub fn handle_dodge_input(data: &JoinData, update: &mut StateUpdate) {
|
||||||
if data.inputs.roll.is_pressed() {
|
if data.inputs.roll.is_pressed() && data.body.is_humanoid() {
|
||||||
if let Some(ability) = data
|
if let Some(ability) = data
|
||||||
.loadout
|
.loadout
|
||||||
.active_item
|
.active_item
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -115,7 +115,7 @@ impl<'a> System<'a> for Sys {
|
|||||||
// Have to account for Calc I differential equations due to acceleration
|
// Have to account for Calc I differential equations due to acceleration
|
||||||
energy.change_by(EnergyChange {
|
energy.change_by(EnergyChange {
|
||||||
amount: (energy.regen_rate * dt.0
|
amount: (energy.regen_rate * dt.0
|
||||||
+ ENERGY_REGEN_ACCEL * dt.0.powf(2.0) / 2.0)
|
+ ENERGY_REGEN_ACCEL * dt.0.powi(2) / 2.0)
|
||||||
as i32,
|
as i32,
|
||||||
source: EnergySource::Regen,
|
source: EnergySource::Regen,
|
||||||
});
|
});
|
||||||
|
@ -286,8 +286,7 @@ pub fn handle_inventory(server: &mut Server, entity: EcsEntity, manip: comp::Inv
|
|||||||
)
|
)
|
||||||
.join()
|
.join()
|
||||||
.filter(|(_, wild_pos, _)| {
|
.filter(|(_, wild_pos, _)| {
|
||||||
wild_pos.0.distance_squared(pos.0)
|
wild_pos.0.distance_squared(pos.0) < 5.0f32.powi(2)
|
||||||
< 5.0f32.powf(2.0)
|
|
||||||
})
|
})
|
||||||
.filter(|(_, _, alignment)| {
|
.filter(|(_, _, alignment)| {
|
||||||
alignment == &&comp::Alignment::Wild
|
alignment == &&comp::Alignment::Wild
|
||||||
|
@ -32,7 +32,7 @@ impl Entity {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_level(&self) -> u32 {
|
pub fn get_level(&self) -> u32 {
|
||||||
(self.rng(PERM_LEVEL).gen::<f32>().powf(2.0) * 15.0).ceil() as u32
|
(self.rng(PERM_LEVEL).gen::<f32>().powi(2) * 15.0).ceil() as u32
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_loadout(&self, ability_map: &AbilityMap) -> comp::Loadout {
|
pub fn get_loadout(&self, ability_map: &AbilityMap) -> comp::Loadout {
|
||||||
|
@ -352,7 +352,7 @@ impl<'a> System<'a> for Sys {
|
|||||||
pos.zip_with(presence, |pos, presence| {
|
pos.zip_with(presence, |pos, presence| {
|
||||||
pos.0.xy().distance_squared(o_pos.xy())
|
pos.0.xy().distance_squared(o_pos.xy())
|
||||||
< (presence.view_distance as f32 * TerrainChunkSize::RECT_SIZE.x as f32)
|
< (presence.view_distance as f32 * TerrainChunkSize::RECT_SIZE.x as f32)
|
||||||
.powf(2.0)
|
.powi(2)
|
||||||
})
|
})
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -37,19 +37,17 @@ impl Animation for AlphaAnimation {
|
|||||||
let (movement1, movement2, movement3) = match stage_section {
|
let (movement1, movement2, movement3) = match stage_section {
|
||||||
Some(StageSection::Buildup) => ((anim_time as f32).powf(0.25), 0.0, 0.0),
|
Some(StageSection::Buildup) => ((anim_time as f32).powf(0.25), 0.0, 0.0),
|
||||||
Some(StageSection::Swing) => (1.0, anim_time as f32, 0.0),
|
Some(StageSection::Swing) => (1.0, anim_time as f32, 0.0),
|
||||||
Some(StageSection::Recover) => (1.0, 1.0, (anim_time as f32).powf(4.0)),
|
Some(StageSection::Recover) => (1.0, 1.0, (anim_time as f32).powi(4)),
|
||||||
_ => (0.0, 0.0, 0.0),
|
_ => (0.0, 0.0, 0.0),
|
||||||
};
|
};
|
||||||
|
|
||||||
let foot = (((1.0)
|
let foot = (((1.0)
|
||||||
/ (0.2
|
/ (0.2 + 0.8 * ((anim_time as f32 * lab as f32 * 2.0 * velocity).sin()).powi(2)))
|
||||||
+ 0.8
|
|
||||||
* ((anim_time as f32 * lab as f32 * 2.0 * velocity).sin()).powf(2.0 as f32)))
|
|
||||||
.sqrt())
|
.sqrt())
|
||||||
* ((anim_time as f32 * lab as f32 * 2.0 * velocity).sin());
|
* ((anim_time as f32 * lab as f32 * 2.0 * velocity).sin());
|
||||||
let slowersmooth = (anim_time as f32 * lab as f32 * 4.0).sin();
|
let slowersmooth = (anim_time as f32 * lab as f32 * 4.0).sin();
|
||||||
let slower = (((1.0)
|
let slower = (((1.0)
|
||||||
/ (0.0001 + 0.999 * ((anim_time as f32 * lab as f32 * 4.0).sin()).powf(2.0 as f32)))
|
/ (0.0001 + 0.999 * ((anim_time as f32 * lab as f32 * 4.0).sin()).powi(2)))
|
||||||
.sqrt())
|
.sqrt())
|
||||||
* ((anim_time as f32 * lab as f32 * 4.0).sin());
|
* ((anim_time as f32 * lab as f32 * 4.0).sin());
|
||||||
|
|
||||||
|
@ -33,7 +33,7 @@ impl Animation for BetaAnimation {
|
|||||||
let (movement1, movement2, movement3) = match stage_section {
|
let (movement1, movement2, movement3) = match stage_section {
|
||||||
Some(StageSection::Buildup) => ((anim_time as f32).powf(0.25), 0.0, 0.0),
|
Some(StageSection::Buildup) => ((anim_time as f32).powf(0.25), 0.0, 0.0),
|
||||||
Some(StageSection::Swing) => (1.0, anim_time as f32, 0.0),
|
Some(StageSection::Swing) => (1.0, anim_time as f32, 0.0),
|
||||||
Some(StageSection::Recover) => (1.0, 1.0, (anim_time as f32).powf(4.0)),
|
Some(StageSection::Recover) => (1.0, 1.0, (anim_time as f32).powi(4)),
|
||||||
_ => (0.0, 0.0, 0.0),
|
_ => (0.0, 0.0, 0.0),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -32,24 +32,21 @@ impl Animation for ChargeAnimation {
|
|||||||
|
|
||||||
let lab = 1.0;
|
let lab = 1.0;
|
||||||
|
|
||||||
let foot = (((5.0)
|
let foot = (((5.0) / (0.2 + 4.8 * ((anim_time as f32 * lab as f32 * 8.0).sin()).powi(2)))
|
||||||
/ (0.2 + 4.8 * ((anim_time as f32 * lab as f32 * 8.0).sin()).powf(2.0 as f32)))
|
.sqrt())
|
||||||
.sqrt())
|
|
||||||
* ((anim_time as f32 * lab as f32 * 8.0).sin());
|
* ((anim_time as f32 * lab as f32 * 8.0).sin());
|
||||||
let foote = (((5.0)
|
let foote = (((5.0)
|
||||||
/ (0.5 + 4.5 * ((anim_time as f32 * lab as f32 * 8.0 + 1.57).sin()).powf(2.0 as f32)))
|
/ (0.5 + 4.5 * ((anim_time as f32 * lab as f32 * 8.0 + 1.57).sin()).powi(2)))
|
||||||
.sqrt())
|
.sqrt())
|
||||||
* ((anim_time as f32 * lab as f32 * 8.0).sin());
|
* ((anim_time as f32 * lab as f32 * 8.0).sin());
|
||||||
let stress = (((5.0)
|
let stress =
|
||||||
/ (0.5 + 4.5 * ((anim_time as f32 * lab as f32 * 20.0).cos()).powf(2.0 as f32)))
|
(((5.0) / (0.5 + 4.5 * ((anim_time as f32 * lab as f32 * 20.0).cos()).powi(2))).sqrt())
|
||||||
.sqrt())
|
* ((anim_time as f32 * lab as f32 * 20.0).cos());
|
||||||
* ((anim_time as f32 * lab as f32 * 20.0).cos());
|
let quick = (((5.0) / (3.5 + 1.5 * ((anim_time as f32 * lab as f32 * 8.0).sin()).powi(2)))
|
||||||
let quick = (((5.0)
|
.sqrt())
|
||||||
/ (3.5 + 1.5 * ((anim_time as f32 * lab as f32 * 8.0).sin()).powf(2.0 as f32)))
|
|
||||||
.sqrt())
|
|
||||||
* ((anim_time as f32 * lab as f32 * 8.0).sin());
|
* ((anim_time as f32 * lab as f32 * 8.0).sin());
|
||||||
let stop = ((anim_time as f32).powf(0.3 as f32)).min(1.2);
|
let stop = ((anim_time as f32).powf(0.3)).min(1.2);
|
||||||
let stopa = ((anim_time as f32).powf(0.9 as f32)).min(5.0);
|
let stopa = ((anim_time as f32).powf(0.9)).min(5.0);
|
||||||
|
|
||||||
let ori: Vec2<f32> = Vec2::from(orientation);
|
let ori: Vec2<f32> = Vec2::from(orientation);
|
||||||
let last_ori = Vec2::from(last_ori);
|
let last_ori = Vec2::from(last_ori);
|
||||||
|
@ -40,7 +40,7 @@ impl Animation for DashAnimation {
|
|||||||
};
|
};
|
||||||
|
|
||||||
fn short(x: f32) -> f32 {
|
fn short(x: f32) -> f32 {
|
||||||
(((5.0) / (1.5 + 3.5 * ((x * 5.0).sin()).powf(2.0 as f32))).sqrt()) * ((x * 5.0).sin())
|
(((5.0) / (1.5 + 3.5 * ((x * 5.0).sin()).powi(2))).sqrt()) * ((x * 5.0).sin())
|
||||||
}
|
}
|
||||||
fn foothoril(x: f32) -> f32 { (x * 5.0 + PI * 1.45).sin() }
|
fn foothoril(x: f32) -> f32 { (x * 5.0 + PI * 1.45).sin() }
|
||||||
fn foothorir(x: f32) -> f32 { (x * 5.0 + PI * (0.45)).sin() }
|
fn foothorir(x: f32) -> f32 { (x * 5.0 + PI * (0.45)).sin() }
|
||||||
@ -49,12 +49,12 @@ impl Animation for DashAnimation {
|
|||||||
fn footvertr(x: f32) -> f32 { (x * 5.0 + PI).sin() }
|
fn footvertr(x: f32) -> f32 { (x * 5.0 + PI).sin() }
|
||||||
|
|
||||||
fn footrotl(x: f32) -> f32 {
|
fn footrotl(x: f32) -> f32 {
|
||||||
(((1.0) / (0.05 + (0.95) * ((x * 5.0 + PI * 1.4).sin()).powf(2.0 as f32))).sqrt())
|
(((1.0) / (0.05 + (0.95) * ((x * 5.0 + PI * 1.4).sin()).powi(2))).sqrt())
|
||||||
* ((x * 5.0 + PI * 1.4).sin())
|
* ((x * 5.0 + PI * 1.4).sin())
|
||||||
}
|
}
|
||||||
|
|
||||||
fn footrotr(x: f32) -> f32 {
|
fn footrotr(x: f32) -> f32 {
|
||||||
(((1.0) / (0.05 + (0.95) * ((x * 5.0 + PI * 0.4).sin()).powf(2.0 as f32))).sqrt())
|
(((1.0) / (0.05 + (0.95) * ((x * 5.0 + PI * 0.4).sin()).powi(2))).sqrt())
|
||||||
* ((x * 5.0 + PI * 0.4).sin())
|
* ((x * 5.0 + PI * 0.4).sin())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -47,15 +47,11 @@ impl Animation for RunAnimation {
|
|||||||
|
|
||||||
let lab = 0.65; //.65
|
let lab = 0.65; //.65
|
||||||
let foothoril = (((1.0)
|
let foothoril = (((1.0)
|
||||||
/ (0.4
|
/ (0.4 + (0.6) * ((anim_time as f32 * 16.0 * lab as f32 + PI * 1.4).sin()).powi(2)))
|
||||||
+ (0.6)
|
|
||||||
* ((anim_time as f32 * 16.0 * lab as f32 + PI * 1.4).sin()).powf(2.0 as f32)))
|
|
||||||
.sqrt())
|
.sqrt())
|
||||||
* ((anim_time as f32 * 16.0 * lab as f32 + PI * 1.4).sin());
|
* ((anim_time as f32 * 16.0 * lab as f32 + PI * 1.4).sin());
|
||||||
let foothorir = (((1.0)
|
let foothorir = (((1.0)
|
||||||
/ (0.4
|
/ (0.4 + (0.6) * ((anim_time as f32 * 16.0 * lab as f32 + PI * 0.4).sin()).powi(2)))
|
||||||
+ (0.6)
|
|
||||||
* ((anim_time as f32 * 16.0 * lab as f32 + PI * 0.4).sin()).powf(2.0 as f32)))
|
|
||||||
.sqrt())
|
.sqrt())
|
||||||
* ((anim_time as f32 * 16.0 * lab as f32 + PI * 0.4).sin());
|
* ((anim_time as f32 * 16.0 * lab as f32 + PI * 0.4).sin());
|
||||||
|
|
||||||
@ -65,24 +61,20 @@ impl Animation for RunAnimation {
|
|||||||
let handhorir = (anim_time as f32 * 16.0 * lab as f32 + PI * 0.4).sin();
|
let handhorir = (anim_time as f32 * 16.0 * lab as f32 + PI * 0.4).sin();
|
||||||
|
|
||||||
let footrotl = (((5.0)
|
let footrotl = (((5.0)
|
||||||
/ (2.5
|
/ (2.5 + (2.5) * ((anim_time as f32 * 16.0 * lab as f32 + PI * 1.4).sin()).powi(2)))
|
||||||
+ (2.5)
|
|
||||||
* ((anim_time as f32 * 16.0 * lab as f32 + PI * 1.4).sin()).powf(2.0 as f32)))
|
|
||||||
.sqrt())
|
.sqrt())
|
||||||
* ((anim_time as f32 * 16.0 * lab as f32 + PI * 1.4).sin());
|
* ((anim_time as f32 * 16.0 * lab as f32 + PI * 1.4).sin());
|
||||||
|
|
||||||
let footrotr = (((5.0)
|
let footrotr = (((5.0)
|
||||||
/ (1.0
|
/ (1.0 + (4.0) * ((anim_time as f32 * 16.0 * lab as f32 + PI * 0.4).sin()).powi(2)))
|
||||||
+ (4.0)
|
|
||||||
* ((anim_time as f32 * 16.0 * lab as f32 + PI * 0.4).sin()).powf(2.0 as f32)))
|
|
||||||
.sqrt())
|
.sqrt())
|
||||||
* ((anim_time as f32 * 16.0 * lab as f32 + PI * 0.4).sin());
|
* ((anim_time as f32 * 16.0 * lab as f32 + PI * 0.4).sin());
|
||||||
|
|
||||||
let amplitude = (speed / 21.0).max(0.25);
|
let amplitude = (speed / 21.0).max(0.25);
|
||||||
let amplitude2 = (speed * 1.4 / 21.0).powf(0.5).max(0.6);
|
let amplitude2 = (speed * 1.4 / 21.0).sqrt().max(0.6);
|
||||||
let amplitude3 = (speed / 21.0).powf(0.5).max(0.35);
|
let amplitude3 = (speed / 21.0).sqrt().max(0.35);
|
||||||
let speedmult = 1.0;
|
let speedmult = 1.0;
|
||||||
let canceler = (speed / 21.0).powf(0.5);
|
let canceler = (speed / 21.0).sqrt();
|
||||||
|
|
||||||
let short = (anim_time as f32 * (16.0) * lab as f32 * speedmult + PI * -0.15).sin();
|
let short = (anim_time as f32 * (16.0) * lab as f32 * speedmult + PI * -0.15).sin();
|
||||||
//
|
//
|
||||||
|
@ -126,7 +126,7 @@ impl Animation for ShootAnimation {
|
|||||||
let (movement1, movement2, movement3) = match stage_section {
|
let (movement1, movement2, movement3) = match stage_section {
|
||||||
Some(StageSection::Buildup) => ((anim_time as f32).powf(0.25), 0.0, 0.0),
|
Some(StageSection::Buildup) => ((anim_time as f32).powf(0.25), 0.0, 0.0),
|
||||||
Some(StageSection::Swing) => (1.0, anim_time as f32, 0.0),
|
Some(StageSection::Swing) => (1.0, anim_time as f32, 0.0),
|
||||||
Some(StageSection::Recover) => (1.0, 1.0, (anim_time as f32).powf(4.0)),
|
Some(StageSection::Recover) => (1.0, 1.0, (anim_time as f32).powi(4)),
|
||||||
_ => (0.0, 0.0, 0.0),
|
_ => (0.0, 0.0, 0.0),
|
||||||
};
|
};
|
||||||
next.main.position = Vec3::new(0.0, 0.0, 0.0);
|
next.main.position = Vec3::new(0.0, 0.0, 0.0);
|
||||||
|
@ -35,12 +35,12 @@ impl Animation for SpinAnimation {
|
|||||||
let (movement1, movement2, movement3) = match stage_section {
|
let (movement1, movement2, movement3) = match stage_section {
|
||||||
Some(StageSection::Buildup) => ((anim_time as f32).powf(0.25), 0.0, 0.0),
|
Some(StageSection::Buildup) => ((anim_time as f32).powf(0.25), 0.0, 0.0),
|
||||||
Some(StageSection::Swing) => (1.0, (anim_time as f32).powf(1.8), 0.0),
|
Some(StageSection::Swing) => (1.0, (anim_time as f32).powf(1.8), 0.0),
|
||||||
Some(StageSection::Recover) => (1.0, 1.0, (anim_time as f32).powf(4.0)),
|
Some(StageSection::Recover) => (1.0, 1.0, (anim_time as f32).powi(4)),
|
||||||
_ => (0.0, 0.0, 0.0),
|
_ => (0.0, 0.0, 0.0),
|
||||||
};
|
};
|
||||||
|
|
||||||
let foot = (((5.0)
|
let foot = (((5.0)
|
||||||
/ (1.1 + 3.9 * ((anim_time as f32 * lab as f32 * 10.32).sin()).powf(2.0 as f32)))
|
/ (1.1 + 3.9 * ((anim_time as f32 * lab as f32 * 10.32).sin()).powi(2)))
|
||||||
.sqrt())
|
.sqrt())
|
||||||
* ((anim_time as f32 * lab as f32 * 10.32).sin());
|
* ((anim_time as f32 * lab as f32 * 10.32).sin());
|
||||||
|
|
||||||
|
@ -52,7 +52,7 @@ impl Animation for SpinMeleeAnimation {
|
|||||||
};
|
};
|
||||||
|
|
||||||
let spin = if anim_time < 1.1 && velocity.z.abs() < 0.1 {
|
let spin = if anim_time < 1.1 && velocity.z.abs() < 0.1 {
|
||||||
0.5 * ((anim_time as f32).powf(2.0))
|
0.5 * ((anim_time as f32).powi(2))
|
||||||
} else {
|
} else {
|
||||||
lab as f32 * anim_time as f32 * 0.9
|
lab as f32 * anim_time as f32 * 0.9
|
||||||
};
|
};
|
||||||
|
@ -75,15 +75,11 @@ impl Animation for WieldAnimation {
|
|||||||
};
|
};
|
||||||
|
|
||||||
let foothoril = (((1.0)
|
let foothoril = (((1.0)
|
||||||
/ (0.4
|
/ (0.4 + (0.6) * ((anim_time as f32 * 16.0 * lab as f32 + PI * 1.4).sin()).powi(2)))
|
||||||
+ (0.6)
|
|
||||||
* ((anim_time as f32 * 16.0 * lab as f32 + PI * 1.4).sin()).powf(2.0 as f32)))
|
|
||||||
.sqrt())
|
.sqrt())
|
||||||
* ((anim_time as f32 * 16.0 * lab as f32 + PI * 1.4).sin());
|
* ((anim_time as f32 * 16.0 * lab as f32 + PI * 1.4).sin());
|
||||||
let foothorir = (((1.0)
|
let foothorir = (((1.0)
|
||||||
/ (0.4
|
/ (0.4 + (0.6) * ((anim_time as f32 * 16.0 * lab as f32 + PI * 0.4).sin()).powi(2)))
|
||||||
+ (0.6)
|
|
||||||
* ((anim_time as f32 * 16.0 * lab as f32 + PI * 0.4).sin()).powf(2.0 as f32)))
|
|
||||||
.sqrt())
|
.sqrt())
|
||||||
* ((anim_time as f32 * 16.0 * lab as f32 + PI * 0.4).sin());
|
* ((anim_time as f32 * 16.0 * lab as f32 + PI * 0.4).sin());
|
||||||
|
|
||||||
@ -93,16 +89,12 @@ impl Animation for WieldAnimation {
|
|||||||
let handhorir = (anim_time as f32 * 16.0 * lab as f32 + PI * 0.4).sin();
|
let handhorir = (anim_time as f32 * 16.0 * lab as f32 + PI * 0.4).sin();
|
||||||
|
|
||||||
let footrotl = (((5.0)
|
let footrotl = (((5.0)
|
||||||
/ (2.5
|
/ (2.5 + (2.5) * ((anim_time as f32 * 16.0 * lab as f32 + PI * 1.4).sin()).powi(2)))
|
||||||
+ (2.5)
|
|
||||||
* ((anim_time as f32 * 16.0 * lab as f32 + PI * 1.4).sin()).powf(2.0 as f32)))
|
|
||||||
.sqrt())
|
.sqrt())
|
||||||
* ((anim_time as f32 * 16.0 * lab as f32 + PI * 1.4).sin());
|
* ((anim_time as f32 * 16.0 * lab as f32 + PI * 1.4).sin());
|
||||||
|
|
||||||
let footrotr = (((5.0)
|
let footrotr = (((5.0)
|
||||||
/ (1.0
|
/ (1.0 + (4.0) * ((anim_time as f32 * 16.0 * lab as f32 + PI * 0.4).sin()).powi(2)))
|
||||||
+ (4.0)
|
|
||||||
* ((anim_time as f32 * 16.0 * lab as f32 + PI * 0.4).sin()).powf(2.0 as f32)))
|
|
||||||
.sqrt())
|
.sqrt())
|
||||||
* ((anim_time as f32 * 16.0 * lab as f32 + PI * 0.4).sin());
|
* ((anim_time as f32 * 16.0 * lab as f32 + PI * 0.4).sin());
|
||||||
|
|
||||||
|
@ -37,23 +37,20 @@ impl Animation for AlphaAnimation {
|
|||||||
let (movement1, movement2, movement3) = match stage_section {
|
let (movement1, movement2, movement3) = match stage_section {
|
||||||
Some(StageSection::Buildup) => ((anim_time as f32).powf(0.25), 0.0, 0.0),
|
Some(StageSection::Buildup) => ((anim_time as f32).powf(0.25), 0.0, 0.0),
|
||||||
Some(StageSection::Swing) => (1.0, anim_time as f32, 0.0),
|
Some(StageSection::Swing) => (1.0, anim_time as f32, 0.0),
|
||||||
Some(StageSection::Recover) => (1.0, 1.0, (anim_time as f32).powf(4.0)),
|
Some(StageSection::Recover) => (1.0, 1.0, (anim_time as f32).powi(4)),
|
||||||
_ => (0.0, 0.0, 0.0),
|
_ => (0.0, 0.0, 0.0),
|
||||||
};
|
};
|
||||||
|
|
||||||
let foot = (((1.0)
|
let foot = (((1.0)
|
||||||
/ (0.2
|
/ (0.2 + 0.8 * ((anim_time as f32 * lab as f32 * 2.0 * velocity).sin()).powi(2)))
|
||||||
+ 0.8
|
|
||||||
* ((anim_time as f32 * lab as f32 * 2.0 * velocity).sin()).powf(2.0 as f32)))
|
|
||||||
.sqrt())
|
.sqrt())
|
||||||
* ((anim_time as f32 * lab as f32 * 2.0 * velocity).sin());
|
* ((anim_time as f32 * lab as f32 * 2.0 * velocity).sin());
|
||||||
let push = anim_time as f32 * lab as f32 * 4.0;
|
let push = anim_time as f32 * lab as f32 * 4.0;
|
||||||
let slow = (((5.0)
|
let slow = (((5.0) / (0.4 + 4.6 * ((anim_time as f32 * lab as f32 * 9.0).sin()).powi(2)))
|
||||||
/ (0.4 + 4.6 * ((anim_time as f32 * lab as f32 * 9.0).sin()).powf(2.0 as f32)))
|
.sqrt())
|
||||||
.sqrt())
|
|
||||||
* ((anim_time as f32 * lab as f32 * 9.0).sin());
|
* ((anim_time as f32 * lab as f32 * 9.0).sin());
|
||||||
let slower = (((1.0)
|
let slower = (((1.0)
|
||||||
/ (0.0001 + 0.999 * ((anim_time as f32 * lab as f32 * 4.0).sin()).powf(2.0 as f32)))
|
/ (0.0001 + 0.999 * ((anim_time as f32 * lab as f32 * 4.0).sin()).powi(2)))
|
||||||
.sqrt())
|
.sqrt())
|
||||||
* ((anim_time as f32 * lab as f32 * 4.0).sin());
|
* ((anim_time as f32 * lab as f32 * 4.0).sin());
|
||||||
|
|
||||||
@ -116,7 +113,7 @@ impl Animation for AlphaAnimation {
|
|||||||
let (movement1, movement2, movement3) = match stage_section {
|
let (movement1, movement2, movement3) = match stage_section {
|
||||||
Some(StageSection::Buildup) => ((anim_time as f32).powf(0.25), 0.0, 0.0),
|
Some(StageSection::Buildup) => ((anim_time as f32).powf(0.25), 0.0, 0.0),
|
||||||
Some(StageSection::Swing) => (1.0, anim_time as f32, 0.0),
|
Some(StageSection::Swing) => (1.0, anim_time as f32, 0.0),
|
||||||
Some(StageSection::Recover) => (1.0, 1.0, (anim_time as f32).powf(4.0)),
|
Some(StageSection::Recover) => (1.0, 1.0, (anim_time as f32).powi(4)),
|
||||||
_ => (0.0, 0.0, 0.0),
|
_ => (0.0, 0.0, 0.0),
|
||||||
};
|
};
|
||||||
next.control.position = Vec3::new(
|
next.control.position = Vec3::new(
|
||||||
@ -148,7 +145,7 @@ impl Animation for AlphaAnimation {
|
|||||||
let (movement1, movement2, movement3) = match stage_section {
|
let (movement1, movement2, movement3) = match stage_section {
|
||||||
Some(StageSection::Buildup) => ((anim_time as f32).powf(0.25), 0.0, 0.0),
|
Some(StageSection::Buildup) => ((anim_time as f32).powf(0.25), 0.0, 0.0),
|
||||||
Some(StageSection::Swing) => (1.0, anim_time as f32, 0.0),
|
Some(StageSection::Swing) => (1.0, anim_time as f32, 0.0),
|
||||||
Some(StageSection::Recover) => (1.0, 1.0, (anim_time as f32).powf(4.0)),
|
Some(StageSection::Recover) => (1.0, 1.0, (anim_time as f32).powi(4)),
|
||||||
_ => (0.0, 0.0, 0.0),
|
_ => (0.0, 0.0, 0.0),
|
||||||
};
|
};
|
||||||
next.main.position = Vec3::new(0.0, 0.0, 0.0);
|
next.main.position = Vec3::new(0.0, 0.0, 0.0);
|
||||||
|
@ -33,7 +33,7 @@ impl Animation for BetaAnimation {
|
|||||||
let (movement1, movement2, movement3) = match stage_section {
|
let (movement1, movement2, movement3) = match stage_section {
|
||||||
Some(StageSection::Buildup) => ((anim_time as f32).powf(0.25), 0.0, 0.0),
|
Some(StageSection::Buildup) => ((anim_time as f32).powf(0.25), 0.0, 0.0),
|
||||||
Some(StageSection::Swing) => (1.0, anim_time as f32, 0.0),
|
Some(StageSection::Swing) => (1.0, anim_time as f32, 0.0),
|
||||||
Some(StageSection::Recover) => (1.0, 1.0, (anim_time as f32).powf(4.0)),
|
Some(StageSection::Recover) => (1.0, 1.0, (anim_time as f32).powi(4)),
|
||||||
_ => (0.0, 0.0, 0.0),
|
_ => (0.0, 0.0, 0.0),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -36,24 +36,21 @@ impl Animation for ChargeAnimation {
|
|||||||
|
|
||||||
let lab = 1.0;
|
let lab = 1.0;
|
||||||
|
|
||||||
let foot = (((5.0)
|
let foot = (((5.0) / (0.2 + 4.8 * ((anim_time as f32 * lab as f32 * 8.0).sin()).powi(2)))
|
||||||
/ (0.2 + 4.8 * ((anim_time as f32 * lab as f32 * 8.0).sin()).powf(2.0 as f32)))
|
.sqrt())
|
||||||
.sqrt())
|
|
||||||
* ((anim_time as f32 * lab as f32 * 8.0).sin());
|
* ((anim_time as f32 * lab as f32 * 8.0).sin());
|
||||||
let foote = (((5.0)
|
let foote = (((5.0)
|
||||||
/ (0.5 + 4.5 * ((anim_time as f32 * lab as f32 * 8.0 + 1.57).sin()).powf(2.0 as f32)))
|
/ (0.5 + 4.5 * ((anim_time as f32 * lab as f32 * 8.0 + 1.57).sin()).powi(2)))
|
||||||
.sqrt())
|
.sqrt())
|
||||||
* ((anim_time as f32 * lab as f32 * 8.0).sin());
|
* ((anim_time as f32 * lab as f32 * 8.0).sin());
|
||||||
let stress = (((5.0)
|
let stress =
|
||||||
/ (0.5 + 4.5 * ((anim_time as f32 * lab as f32 * 20.0).cos()).powf(2.0 as f32)))
|
(((5.0) / (0.5 + 4.5 * ((anim_time as f32 * lab as f32 * 20.0).cos()).powi(2))).sqrt())
|
||||||
.sqrt())
|
* ((anim_time as f32 * lab as f32 * 20.0).cos());
|
||||||
* ((anim_time as f32 * lab as f32 * 20.0).cos());
|
let quick = (((5.0) / (3.5 + 1.5 * ((anim_time as f32 * lab as f32 * 8.0).sin()).powi(2)))
|
||||||
let quick = (((5.0)
|
.sqrt())
|
||||||
/ (3.5 + 1.5 * ((anim_time as f32 * lab as f32 * 8.0).sin()).powf(2.0 as f32)))
|
|
||||||
.sqrt())
|
|
||||||
* ((anim_time as f32 * lab as f32 * 8.0).sin());
|
* ((anim_time as f32 * lab as f32 * 8.0).sin());
|
||||||
let stop = ((anim_time as f32).powf(0.3 as f32)).min(1.2);
|
let stop = ((anim_time as f32).powf(0.3)).min(1.2);
|
||||||
let stopa = ((anim_time as f32).powf(0.9 as f32)).min(5.0);
|
let stopa = ((anim_time as f32).powf(0.9)).min(5.0);
|
||||||
|
|
||||||
let ori: Vec2<f32> = Vec2::from(orientation);
|
let ori: Vec2<f32> = Vec2::from(orientation);
|
||||||
let last_ori = Vec2::from(last_ori);
|
let last_ori = Vec2::from(last_ori);
|
||||||
|
@ -32,9 +32,8 @@ impl Animation for ChargeswingAnimation {
|
|||||||
|
|
||||||
let lab = 1.0;
|
let lab = 1.0;
|
||||||
|
|
||||||
let short = (((5.0)
|
let short = (((5.0) / (1.5 + 3.5 * ((anim_time as f32 * lab as f32 * 8.0).sin()).powi(2)))
|
||||||
/ (1.5 + 3.5 * ((anim_time as f32 * lab as f32 * 8.0).sin()).powf(2.0 as f32)))
|
.sqrt())
|
||||||
.sqrt())
|
|
||||||
* ((anim_time as f32 * lab as f32 * 8.0).sin());
|
* ((anim_time as f32 * lab as f32 * 8.0).sin());
|
||||||
// end spin stuff
|
// end spin stuff
|
||||||
|
|
||||||
@ -46,7 +45,7 @@ impl Animation for ChargeswingAnimation {
|
|||||||
(anim_time as f32 * 18.0 * lab as f32).sin(),
|
(anim_time as f32 * 18.0 * lab as f32).sin(),
|
||||||
),
|
),
|
||||||
Some(StageSection::Swing) => (1.0, anim_time as f32, 0.0, 0.0),
|
Some(StageSection::Swing) => (1.0, anim_time as f32, 0.0, 0.0),
|
||||||
Some(StageSection::Recover) => (1.0, 1.0, (anim_time as f32).powf(4.0), 0.0),
|
Some(StageSection::Recover) => (1.0, 1.0, (anim_time as f32).powi(4), 0.0),
|
||||||
_ => (0.0, 0.0, 0.0, 0.0),
|
_ => (0.0, 0.0, 0.0, 0.0),
|
||||||
};
|
};
|
||||||
if let Some(ToolKind::Hammer) = active_tool_kind {
|
if let Some(ToolKind::Hammer) = active_tool_kind {
|
||||||
|
@ -39,14 +39,11 @@ impl Animation for ClimbAnimation {
|
|||||||
let dropa = (anim_time as f32 * constant as f32 * 4.0).sin();
|
let dropa = (anim_time as f32 * constant as f32 * 4.0).sin();
|
||||||
|
|
||||||
let quick = (((5.0)
|
let quick = (((5.0)
|
||||||
/ (0.6 + 4.0 * ((anim_time as f32 * constant as f32 * 1.5).sin()).powf(2.0 as f32)))
|
/ (0.6 + 4.0 * ((anim_time as f32 * constant as f32 * 1.5).sin()).powi(2)))
|
||||||
.sqrt())
|
.sqrt())
|
||||||
* ((anim_time as f32 * constant as f32 * 1.5).sin());
|
* ((anim_time as f32 * constant as f32 * 1.5).sin());
|
||||||
let quicka = (((5.0)
|
let quicka = (((5.0)
|
||||||
/ (0.6
|
/ (0.6 + 4.0 * ((anim_time as f32 * constant as f32 * 1.5 + PI / 2.0).sin()).powi(2)))
|
||||||
+ 4.0
|
|
||||||
* ((anim_time as f32 * constant as f32 * 1.5 + PI / 2.0).sin())
|
|
||||||
.powf(2.0 as f32)))
|
|
||||||
.sqrt())
|
.sqrt())
|
||||||
* ((anim_time as f32 * constant as f32 * 1.5 + PI / 2.0).sin());
|
* ((anim_time as f32 * constant as f32 * 1.5 + PI / 2.0).sin());
|
||||||
let head_look = Vec2::new(
|
let head_look = Vec2::new(
|
||||||
|
@ -27,9 +27,8 @@ impl Animation for DanceAnimation {
|
|||||||
*rate = 1.0;
|
*rate = 1.0;
|
||||||
|
|
||||||
let lab = 1.0;
|
let lab = 1.0;
|
||||||
let short = (((5.0)
|
let short = (((5.0) / (3.0 + 2.0 * ((anim_time as f32 * lab as f32 * 6.0).sin()).powi(2)))
|
||||||
/ (3.0 + 2.0 * ((anim_time as f32 * lab as f32 * 6.0).sin()).powf(2.0 as f32)))
|
.sqrt())
|
||||||
.sqrt())
|
|
||||||
* ((anim_time as f32 * lab as f32 * 6.0).sin());
|
* ((anim_time as f32 * lab as f32 * 6.0).sin());
|
||||||
let noisea = (anim_time as f32 * 11.0 + PI / 6.0).sin();
|
let noisea = (anim_time as f32 * 11.0 + PI / 6.0).sin();
|
||||||
let noiseb = (anim_time as f32 * 19.0 + PI / 4.0).sin();
|
let noiseb = (anim_time as f32 * 19.0 + PI / 4.0).sin();
|
||||||
@ -39,7 +38,7 @@ impl Animation for DanceAnimation {
|
|||||||
let shortealt = (anim_time as f32 * lab as f32 * 6.0 + PI / 2.0).sin();
|
let shortealt = (anim_time as f32 * lab as f32 * 6.0 + PI / 2.0).sin();
|
||||||
|
|
||||||
let foot = (((5.0)
|
let foot = (((5.0)
|
||||||
/ (1.0 + (4.0) * ((anim_time as f32 * lab as f32 * 8.0).sin()).powf(2.0 as f32)))
|
/ (1.0 + (4.0) * ((anim_time as f32 * lab as f32 * 8.0).sin()).powi(2)))
|
||||||
.sqrt())
|
.sqrt())
|
||||||
* ((anim_time as f32 * lab as f32 * 8.0).sin());
|
* ((anim_time as f32 * lab as f32 * 8.0).sin());
|
||||||
|
|
||||||
|
@ -35,17 +35,16 @@ impl Animation for DashAnimation {
|
|||||||
Some(StageSection::Buildup) => ((anim_time as f32).powf(0.25), 0.0, 0.0, 0.0),
|
Some(StageSection::Buildup) => ((anim_time as f32).powf(0.25), 0.0, 0.0, 0.0),
|
||||||
Some(StageSection::Charge) => (1.0, anim_time as f32, 0.0, 0.0),
|
Some(StageSection::Charge) => (1.0, anim_time as f32, 0.0, 0.0),
|
||||||
Some(StageSection::Swing) => (1.0, 1.0, anim_time as f32, 0.0),
|
Some(StageSection::Swing) => (1.0, 1.0, anim_time as f32, 0.0),
|
||||||
Some(StageSection::Recover) => (1.1, 1.0, 1.0, (anim_time as f32).powf(4.0)),
|
Some(StageSection::Recover) => (1.1, 1.0, 1.0, (anim_time as f32).powi(4)),
|
||||||
_ => (0.0, 0.0, 0.0, 0.0),
|
_ => (0.0, 0.0, 0.0, 0.0),
|
||||||
};
|
};
|
||||||
|
|
||||||
fn slow(x: f32) -> f32 {
|
fn slow(x: f32) -> f32 {
|
||||||
(((5.0) / (1.1 + 3.9 * ((x * 12.4).sin()).powf(2.0 as f32))).sqrt())
|
(((5.0) / (1.1 + 3.9 * ((x * 12.4).sin()).powi(2))).sqrt()) * ((x * 12.4).sin())
|
||||||
* ((x * 12.4).sin())
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn short(x: f32) -> f32 {
|
fn short(x: f32) -> f32 {
|
||||||
(((5.0) / (1.5 + 3.5 * ((x * 5.0).sin()).powf(2.0 as f32))).sqrt()) * ((x * 5.0).sin())
|
(((5.0) / (1.5 + 3.5 * ((x * 5.0).sin()).powi(2))).sqrt()) * ((x * 5.0).sin())
|
||||||
}
|
}
|
||||||
fn foothoril(x: f32) -> f32 { (x * 5.0 + PI * 1.45).sin() }
|
fn foothoril(x: f32) -> f32 { (x * 5.0 + PI * 1.45).sin() }
|
||||||
fn foothorir(x: f32) -> f32 { (x * 5.0 + PI * (0.45)).sin() }
|
fn foothorir(x: f32) -> f32 { (x * 5.0 + PI * (0.45)).sin() }
|
||||||
@ -54,12 +53,12 @@ impl Animation for DashAnimation {
|
|||||||
fn footvertr(x: f32) -> f32 { (x * 5.0 + PI).sin() }
|
fn footvertr(x: f32) -> f32 { (x * 5.0 + PI).sin() }
|
||||||
|
|
||||||
fn footrotl(x: f32) -> f32 {
|
fn footrotl(x: f32) -> f32 {
|
||||||
(((1.0) / (0.05 + (0.95) * ((x * 5.0 + PI * 1.4).sin()).powf(2.0 as f32))).sqrt())
|
(((1.0) / (0.05 + (0.95) * ((x * 5.0 + PI * 1.4).sin()).powi(2))).sqrt())
|
||||||
* ((x * 5.0 + PI * 1.4).sin())
|
* ((x * 5.0 + PI * 1.4).sin())
|
||||||
}
|
}
|
||||||
|
|
||||||
fn footrotr(x: f32) -> f32 {
|
fn footrotr(x: f32) -> f32 {
|
||||||
(((1.0) / (0.05 + (0.95) * ((x * 5.0 + PI * 0.4).sin()).powf(2.0 as f32))).sqrt())
|
(((1.0) / (0.05 + (0.95) * ((x * 5.0 + PI * 0.4).sin()).powi(2))).sqrt())
|
||||||
* ((x * 5.0 + PI * 0.4).sin())
|
* ((x * 5.0 + PI * 0.4).sin())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -53,30 +53,26 @@ impl Animation for RunAnimation {
|
|||||||
let footrotl = (((1.0)
|
let footrotl = (((1.0)
|
||||||
/ (0.5
|
/ (0.5
|
||||||
+ (0.5)
|
+ (0.5)
|
||||||
* ((anim_time as f32 * 16.0 * walk * lab as f32 + PI * 1.4).sin())
|
* ((anim_time as f32 * 16.0 * walk * lab as f32 + PI * 1.4).sin()).powi(2)))
|
||||||
.powf(2.0 as f32)))
|
|
||||||
.sqrt())
|
.sqrt())
|
||||||
* ((anim_time as f32 * 16.0 * walk * lab as f32 + PI * 1.4).sin());
|
* ((anim_time as f32 * 16.0 * walk * lab as f32 + PI * 1.4).sin());
|
||||||
|
|
||||||
let footrotr = (((1.0)
|
let footrotr = (((1.0)
|
||||||
/ (0.5
|
/ (0.5
|
||||||
+ (0.5)
|
+ (0.5)
|
||||||
* ((anim_time as f32 * 16.0 * walk * lab as f32 + PI * 0.4).sin())
|
* ((anim_time as f32 * 16.0 * walk * lab as f32 + PI * 0.4).sin()).powi(2)))
|
||||||
.powf(2.0 as f32)))
|
|
||||||
.sqrt())
|
.sqrt())
|
||||||
* ((anim_time as f32 * 16.0 * walk * lab as f32 + PI * 0.4).sin());
|
* ((anim_time as f32 * 16.0 * walk * lab as f32 + PI * 0.4).sin());
|
||||||
|
|
||||||
let short = (((5.0)
|
let short = (((5.0)
|
||||||
/ (1.5
|
/ (1.5 + 3.5 * ((anim_time as f32 * lab as f32 * 16.0 * walk).sin()).powi(2)))
|
||||||
+ 3.5 * ((anim_time as f32 * lab as f32 * 16.0 * walk).sin()).powf(2.0 as f32)))
|
|
||||||
.sqrt())
|
.sqrt())
|
||||||
* ((anim_time as f32 * lab as f32 * 16.0 * walk).sin());
|
* ((anim_time as f32 * lab as f32 * 16.0 * walk).sin());
|
||||||
let noisea = (anim_time as f32 * 11.0 + PI / 6.0).sin();
|
let noisea = (anim_time as f32 * 11.0 + PI / 6.0).sin();
|
||||||
let noiseb = (anim_time as f32 * 19.0 + PI / 4.0).sin();
|
let noiseb = (anim_time as f32 * 19.0 + PI / 4.0).sin();
|
||||||
|
|
||||||
let shorte = (((5.0)
|
let shorte = (((5.0)
|
||||||
/ (4.0
|
/ (4.0 + 1.0 * ((anim_time as f32 * lab as f32 * 16.0 * walk).sin()).powi(2)))
|
||||||
+ 1.0 * ((anim_time as f32 * lab as f32 * 16.0 * walk).sin()).powf(2.0 as f32)))
|
|
||||||
.sqrt())
|
.sqrt())
|
||||||
* ((anim_time as f32 * lab as f32 * 16.0 * walk).sin());
|
* ((anim_time as f32 * lab as f32 * 16.0 * walk).sin());
|
||||||
|
|
||||||
|
@ -118,7 +118,7 @@ impl Animation for ShootAnimation {
|
|||||||
let (_movement1, movement2, _movement3) = match stage_section {
|
let (_movement1, movement2, _movement3) = match stage_section {
|
||||||
Some(StageSection::Buildup) => ((anim_time as f32).powf(0.25), 0.0, 0.0),
|
Some(StageSection::Buildup) => ((anim_time as f32).powf(0.25), 0.0, 0.0),
|
||||||
Some(StageSection::Swing) => (1.0, anim_time as f32, 0.0),
|
Some(StageSection::Swing) => (1.0, anim_time as f32, 0.0),
|
||||||
Some(StageSection::Recover) => (1.0, 1.0, (anim_time as f32).powf(4.0)),
|
Some(StageSection::Recover) => (1.0, 1.0, (anim_time as f32).powi(4)),
|
||||||
_ => (0.0, 0.0, 0.0),
|
_ => (0.0, 0.0, 0.0),
|
||||||
};
|
};
|
||||||
next.main.position = Vec3::new(0.0, 0.0, 0.0);
|
next.main.position = Vec3::new(0.0, 0.0, 0.0);
|
||||||
|
@ -39,16 +39,12 @@ impl Animation for SneakAnimation {
|
|||||||
let footvertr = (anim_time as f32 * 7.0 * lab as f32 + PI).sin();
|
let footvertr = (anim_time as f32 * 7.0 * lab as f32 + PI).sin();
|
||||||
|
|
||||||
let footrotl = (((5.0)
|
let footrotl = (((5.0)
|
||||||
/ (2.5
|
/ (2.5 + (2.5) * ((anim_time as f32 * 7.0 * lab as f32 + PI * 1.4).sin()).powi(2)))
|
||||||
+ (2.5)
|
|
||||||
* ((anim_time as f32 * 7.0 * lab as f32 + PI * 1.4).sin()).powf(2.0 as f32)))
|
|
||||||
.sqrt())
|
.sqrt())
|
||||||
* ((anim_time as f32 * 7.0 * lab as f32 + PI * 1.4).sin());
|
* ((anim_time as f32 * 7.0 * lab as f32 + PI * 1.4).sin());
|
||||||
|
|
||||||
let footrotr = (((5.0)
|
let footrotr = (((5.0)
|
||||||
/ (1.0
|
/ (1.0 + (4.0) * ((anim_time as f32 * 7.0 * lab as f32 + PI * 0.4).sin()).powi(2)))
|
||||||
+ (4.0)
|
|
||||||
* ((anim_time as f32 * 7.0 * lab as f32 + PI * 0.4).sin()).powf(2.0 as f32)))
|
|
||||||
.sqrt())
|
.sqrt())
|
||||||
* ((anim_time as f32 * 7.0 * lab as f32 + PI * 0.4).sin());
|
* ((anim_time as f32 * 7.0 * lab as f32 + PI * 0.4).sin());
|
||||||
|
|
||||||
@ -56,10 +52,9 @@ impl Animation for SneakAnimation {
|
|||||||
let noisea = (anim_time as f32 * 11.0 + PI / 6.0).sin();
|
let noisea = (anim_time as f32 * 11.0 + PI / 6.0).sin();
|
||||||
let noiseb = (anim_time as f32 * 19.0 + PI / 4.0).sin();
|
let noiseb = (anim_time as f32 * 19.0 + PI / 4.0).sin();
|
||||||
|
|
||||||
let shorte = (((5.0)
|
let shorte =
|
||||||
/ (4.0 + 1.0 * ((anim_time as f32 * lab as f32 * 7.0).sin()).powf(2.0 as f32)))
|
(((5.0) / (4.0 + 1.0 * ((anim_time as f32 * lab as f32 * 7.0).sin()).powi(2))).sqrt())
|
||||||
.sqrt())
|
* ((anim_time as f32 * lab as f32 * 7.0).sin());
|
||||||
* ((anim_time as f32 * lab as f32 * 7.0).sin());
|
|
||||||
|
|
||||||
let shortalt = (anim_time as f32 * lab as f32 * 7.0 + PI / 2.0).sin();
|
let shortalt = (anim_time as f32 * lab as f32 * 7.0 + PI / 2.0).sin();
|
||||||
|
|
||||||
|
@ -35,12 +35,12 @@ impl Animation for SpinAnimation {
|
|||||||
let (movement1, movement2, movement3) = match stage_section {
|
let (movement1, movement2, movement3) = match stage_section {
|
||||||
Some(StageSection::Buildup) => ((anim_time as f32).powf(0.25), 0.0, 0.0),
|
Some(StageSection::Buildup) => ((anim_time as f32).powf(0.25), 0.0, 0.0),
|
||||||
Some(StageSection::Swing) => (1.0, (anim_time as f32).powf(1.8), 0.0),
|
Some(StageSection::Swing) => (1.0, (anim_time as f32).powf(1.8), 0.0),
|
||||||
Some(StageSection::Recover) => (1.0, 1.0, (anim_time as f32).powf(4.0)),
|
Some(StageSection::Recover) => (1.0, 1.0, (anim_time as f32).powi(4)),
|
||||||
_ => (0.0, 0.0, 0.0),
|
_ => (0.0, 0.0, 0.0),
|
||||||
};
|
};
|
||||||
|
|
||||||
let foot = (((5.0)
|
let foot = (((5.0)
|
||||||
/ (1.1 + 3.9 * ((anim_time as f32 * lab as f32 * 10.32).sin()).powf(2.0 as f32)))
|
/ (1.1 + 3.9 * ((anim_time as f32 * lab as f32 * 10.32).sin()).powi(2)))
|
||||||
.sqrt())
|
.sqrt())
|
||||||
* ((anim_time as f32 * lab as f32 * 10.32).sin());
|
* ((anim_time as f32 * lab as f32 * 10.32).sin());
|
||||||
|
|
||||||
@ -110,7 +110,7 @@ impl Animation for SpinAnimation {
|
|||||||
let (movement1, movement2, movement3) = match stage_section {
|
let (movement1, movement2, movement3) = match stage_section {
|
||||||
Some(StageSection::Buildup) => ((anim_time as f32).powf(0.25), 0.0, 0.0),
|
Some(StageSection::Buildup) => ((anim_time as f32).powf(0.25), 0.0, 0.0),
|
||||||
Some(StageSection::Swing) => (1.0, anim_time as f32, 0.0),
|
Some(StageSection::Swing) => (1.0, anim_time as f32, 0.0),
|
||||||
Some(StageSection::Recover) => (1.0, 1.0, (anim_time as f32).powf(4.0)),
|
Some(StageSection::Recover) => (1.0, 1.0, (anim_time as f32).powi(4)),
|
||||||
_ => (0.0, 0.0, 0.0),
|
_ => (0.0, 0.0, 0.0),
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -156,7 +156,7 @@ impl Animation for SpinAnimation {
|
|||||||
* (1.0 - movement3),
|
* (1.0 - movement3),
|
||||||
);
|
);
|
||||||
next.torso.orientation = Quaternion::rotation_z(
|
next.torso.orientation = Quaternion::rotation_z(
|
||||||
movement1.powf(2.0) * -6.0 + movement2 * -1.7 + movement3 * 1.4,
|
movement1.powi(2) * -6.0 + movement2 * -1.7 + movement3 * 1.4,
|
||||||
);
|
);
|
||||||
|
|
||||||
next.foot_l.position = Vec3::new(
|
next.foot_l.position = Vec3::new(
|
||||||
|
@ -52,7 +52,7 @@ impl Animation for SpinMeleeAnimation {
|
|||||||
};
|
};
|
||||||
|
|
||||||
let spin = if anim_time < 1.1 && velocity.z.abs() < 0.1 {
|
let spin = if anim_time < 1.1 && velocity.z.abs() < 0.1 {
|
||||||
0.5 * ((anim_time as f32).powf(2.0))
|
0.5 * ((anim_time as f32).powi(2))
|
||||||
} else {
|
} else {
|
||||||
lab as f32 * anim_time as f32 * 0.9
|
lab as f32 * anim_time as f32 * 0.9
|
||||||
};
|
};
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user