mirror of
https://gitlab.com/veloren/veloren.git
synced 2024-08-30 18:12:32 +00:00
wyverns
This commit is contained in:
parent
6070bd6538
commit
5e1fd02095
@ -464,6 +464,46 @@
|
||||
Simple(None, "common.abilities.custom.birdlargefire.fireshockwave"),
|
||||
],
|
||||
),
|
||||
Custom("Flame Wyvern"): (
|
||||
primary: "common.abilities.custom.flamewyvern.firebomb",
|
||||
secondary: "common.abilities.custom.flamewyvern.fireshockwave",
|
||||
abilities: [
|
||||
Simple(None, "common.abilities.custom.flamewyvern.triplestrike"),
|
||||
Simple(None, "common.abilities.custom.flamewyvern.flamethrower"),
|
||||
],
|
||||
),
|
||||
Custom("Frost Wyvern"): (
|
||||
primary: "common.abilities.custom.frostwyvern.frostbomb",
|
||||
secondary: "common.abilities.custom.frostwyvern.iceshockwave",
|
||||
abilities: [
|
||||
Simple(None, "common.abilities.custom.frostwyvern.triplestrike"),
|
||||
Simple(None, "common.abilities.custom.frostwyvern.frostthrower"),
|
||||
],
|
||||
),
|
||||
Custom("Cloud Wyvern"): (
|
||||
primary: "common.abilities.custom.cloudwyvern.windbomb",
|
||||
secondary: "common.abilities.custom.cloudwyvern.windshockwave",
|
||||
abilities: [
|
||||
Simple(None, "common.abilities.custom.cloudwyvern.triplestrike"),
|
||||
Simple(None, "common.abilities.custom.cloudwyvern.windthrower"),
|
||||
],
|
||||
),
|
||||
Custom("Sea Wyvern"): (
|
||||
primary: "common.abilities.custom.seawyvern.seabomb",
|
||||
secondary: "common.abilities.custom.seawyvern.seashockwave",
|
||||
abilities: [
|
||||
Simple(None, "common.abilities.custom.seawyvern.triplestrike"),
|
||||
Simple(None, "common.abilities.custom.seawyvern.bubblethrower"),
|
||||
],
|
||||
),
|
||||
Custom("Weald Wyvern"): (
|
||||
primary: "common.abilities.custom.wealdwyvern.firebomb",
|
||||
secondary: "common.abilities.custom.wealdwyvern.fireshockwave",
|
||||
abilities: [
|
||||
Simple(None, "common.abilities.custom.wealdwyvern.triplestrike"),
|
||||
Simple(None, "common.abilities.custom.wealdwyvern.flamethrower"),
|
||||
],
|
||||
),
|
||||
Custom("Bird Large Basic"): (
|
||||
primary: "common.abilities.custom.birdlargebasic.triplestrike",
|
||||
secondary: "common.abilities.custom.birdlargebasic.summontornadoes",
|
||||
|
77
assets/common/abilities/custom/cloudwyvern/triplestrike.ron
Normal file
77
assets/common/abilities/custom/cloudwyvern/triplestrike.ron
Normal file
@ -0,0 +1,77 @@
|
||||
ComboMelee(
|
||||
stage_data: [
|
||||
(
|
||||
stage: 1,
|
||||
base_damage: 20.0,
|
||||
damage_increase: 0,
|
||||
base_poise_damage: 0,
|
||||
poise_damage_increase: 0,
|
||||
knockback: 5.0,
|
||||
range: 4.5,
|
||||
angle: 30.0,
|
||||
base_buildup_duration: 0.8,
|
||||
base_swing_duration: 0.1,
|
||||
hit_timing: 0.5,
|
||||
base_recover_duration: 0.6,
|
||||
forward_movement: 2.0,
|
||||
damage_kind: Slashing,
|
||||
damage_effect: Some(Buff((
|
||||
kind: Bleeding,
|
||||
dur_secs: 10.0,
|
||||
strength: DamageFraction(0.1),
|
||||
chance: 0.1,
|
||||
))),
|
||||
),
|
||||
(
|
||||
stage: 2,
|
||||
base_damage: 16.0,
|
||||
damage_increase: 0,
|
||||
base_poise_damage: 0,
|
||||
poise_damage_increase: 0,
|
||||
knockback: 5.0,
|
||||
range: 3.5,
|
||||
angle: 30.0,
|
||||
base_buildup_duration: 0.8,
|
||||
base_swing_duration: 0.1,
|
||||
hit_timing: 0.5,
|
||||
base_recover_duration: 0.6,
|
||||
forward_movement: 1.5,
|
||||
damage_kind: Slashing,
|
||||
damage_effect: Some(Buff((
|
||||
kind: Bleeding,
|
||||
dur_secs: 10.0,
|
||||
strength: DamageFraction(0.1),
|
||||
chance: 0.1,
|
||||
))),
|
||||
),
|
||||
(
|
||||
stage: 3,
|
||||
base_damage: 26.0,
|
||||
damage_increase: 0,
|
||||
base_poise_damage: 0,
|
||||
poise_damage_increase: 0,
|
||||
knockback: 10.0,
|
||||
range: 3.5,
|
||||
angle: 30.0,
|
||||
base_buildup_duration: 0.375,
|
||||
base_swing_duration: 0.1,
|
||||
hit_timing: 0.5,
|
||||
base_recover_duration: 0.6,
|
||||
forward_movement: 1.5,
|
||||
damage_kind: Slashing,
|
||||
damage_effect: Some(Buff((
|
||||
kind: Bleeding,
|
||||
dur_secs: 10.0,
|
||||
strength: DamageFraction(0.1),
|
||||
chance: 0.1,
|
||||
))),
|
||||
),
|
||||
],
|
||||
initial_energy_gain: 0,
|
||||
max_energy_gain: 0,
|
||||
energy_increase: 0,
|
||||
speed_increase: 0.0,
|
||||
max_speed_increase: 0.0,
|
||||
scales_from_combo: 0,
|
||||
ori_modifier: 0.7,
|
||||
)
|
19
assets/common/abilities/custom/cloudwyvern/windbomb.ron
Normal file
19
assets/common/abilities/custom/cloudwyvern/windbomb.ron
Normal file
@ -0,0 +1,19 @@
|
||||
BasicRanged(
|
||||
energy_cost: 0,
|
||||
buildup_duration: 1.0,
|
||||
recover_duration: 0.7,
|
||||
projectile: WindBomb(
|
||||
damage: 20.0,
|
||||
radius: 5.0,
|
||||
energy_regen: 5.0,
|
||||
min_falloff: 0.5,
|
||||
),
|
||||
projectile_body: Object(BoltFire),
|
||||
/*projectile_light: Some(LightEmitter {
|
||||
col: (1.0, 0.75, 0.11).into(),
|
||||
..Default::default()
|
||||
}),*/
|
||||
projectile_speed: 60.0,
|
||||
num_projectiles: 1,
|
||||
projectile_spread: 0.0,
|
||||
)
|
17
assets/common/abilities/custom/cloudwyvern/windshockwave.ron
Normal file
17
assets/common/abilities/custom/cloudwyvern/windshockwave.ron
Normal file
@ -0,0 +1,17 @@
|
||||
Shockwave(
|
||||
energy_cost: 60.0,
|
||||
buildup_duration: 1.4,
|
||||
swing_duration: 0.1,
|
||||
recover_duration: 0.4,
|
||||
damage: 40.0,
|
||||
poise_damage: 0,
|
||||
knockback: ( strength: 25.0, direction: Away),
|
||||
shockwave_angle: 360.0,
|
||||
shockwave_vertical_angle: 90.0,
|
||||
shockwave_speed: 20.0,
|
||||
shockwave_duration: 0.5,
|
||||
requires_ground: false,
|
||||
move_efficiency: 0.1,
|
||||
damage_kind: Energy,
|
||||
specifier: Water,
|
||||
)
|
19
assets/common/abilities/custom/cloudwyvern/windthrower.ron
Normal file
19
assets/common/abilities/custom/cloudwyvern/windthrower.ron
Normal file
@ -0,0 +1,19 @@
|
||||
BasicBeam(
|
||||
buildup_duration: 0.8,
|
||||
recover_duration: 0.5,
|
||||
beam_duration: 0.5,
|
||||
damage: 10.0,
|
||||
tick_rate: 3.0,
|
||||
range: 15.0,
|
||||
max_angle: 22.5,
|
||||
damage_effect: Some(Buff((
|
||||
kind: Burning,
|
||||
dur_secs: 10.0,
|
||||
strength: DamageFraction(0.5),
|
||||
chance: 0.25,
|
||||
))),
|
||||
energy_regen: 0,
|
||||
energy_drain: 0,
|
||||
ori_rate: 0.3,
|
||||
specifier: Bubbles,
|
||||
)
|
19
assets/common/abilities/custom/flamewyvern/firebomb.ron
Normal file
19
assets/common/abilities/custom/flamewyvern/firebomb.ron
Normal file
@ -0,0 +1,19 @@
|
||||
BasicRanged(
|
||||
energy_cost: 0,
|
||||
buildup_duration: 1.0,
|
||||
recover_duration: 0.7,
|
||||
projectile: Fireball(
|
||||
damage: 20.0,
|
||||
radius: 5.0,
|
||||
energy_regen: 5.0,
|
||||
min_falloff: 0.5,
|
||||
),
|
||||
projectile_body: Object(BoltFire),
|
||||
/*projectile_light: Some(LightEmitter {
|
||||
col: (1.0, 0.75, 0.11).into(),
|
||||
..Default::default()
|
||||
}),*/
|
||||
projectile_speed: 60.0,
|
||||
num_projectiles: 1,
|
||||
projectile_spread: 0.0,
|
||||
)
|
17
assets/common/abilities/custom/flamewyvern/fireshockwave.ron
Normal file
17
assets/common/abilities/custom/flamewyvern/fireshockwave.ron
Normal file
@ -0,0 +1,17 @@
|
||||
Shockwave(
|
||||
energy_cost: 60.0,
|
||||
buildup_duration: 1.4,
|
||||
swing_duration: 0.1,
|
||||
recover_duration: 0.4,
|
||||
damage: 40.0,
|
||||
poise_damage: 0,
|
||||
knockback: ( strength: 25.0, direction: Away),
|
||||
shockwave_angle: 360.0,
|
||||
shockwave_vertical_angle: 90.0,
|
||||
shockwave_speed: 20.0,
|
||||
shockwave_duration: 0.5,
|
||||
requires_ground: false,
|
||||
move_efficiency: 0.1,
|
||||
damage_kind: Energy,
|
||||
specifier: Fire,
|
||||
)
|
19
assets/common/abilities/custom/flamewyvern/flamethrower.ron
Normal file
19
assets/common/abilities/custom/flamewyvern/flamethrower.ron
Normal file
@ -0,0 +1,19 @@
|
||||
BasicBeam(
|
||||
buildup_duration: 0.8,
|
||||
recover_duration: 0.5,
|
||||
beam_duration: 0.5,
|
||||
damage: 10.0,
|
||||
tick_rate: 3.0,
|
||||
range: 15.0,
|
||||
max_angle: 22.5,
|
||||
damage_effect: Some(Buff((
|
||||
kind: Burning,
|
||||
dur_secs: 10.0,
|
||||
strength: DamageFraction(0.5),
|
||||
chance: 0.25,
|
||||
))),
|
||||
energy_regen: 0,
|
||||
energy_drain: 0,
|
||||
ori_rate: 0.3,
|
||||
specifier: Flamethrower,
|
||||
)
|
77
assets/common/abilities/custom/flamewyvern/triplestrike.ron
Normal file
77
assets/common/abilities/custom/flamewyvern/triplestrike.ron
Normal file
@ -0,0 +1,77 @@
|
||||
ComboMelee(
|
||||
stage_data: [
|
||||
(
|
||||
stage: 1,
|
||||
base_damage: 20.0,
|
||||
damage_increase: 0,
|
||||
base_poise_damage: 0,
|
||||
poise_damage_increase: 0,
|
||||
knockback: 5.0,
|
||||
range: 4.5,
|
||||
angle: 30.0,
|
||||
base_buildup_duration: 0.8,
|
||||
base_swing_duration: 0.1,
|
||||
hit_timing: 0.5,
|
||||
base_recover_duration: 0.6,
|
||||
forward_movement: 2.0,
|
||||
damage_kind: Slashing,
|
||||
damage_effect: Some(Buff((
|
||||
kind: Bleeding,
|
||||
dur_secs: 10.0,
|
||||
strength: DamageFraction(0.1),
|
||||
chance: 0.1,
|
||||
))),
|
||||
),
|
||||
(
|
||||
stage: 2,
|
||||
base_damage: 16.0,
|
||||
damage_increase: 0,
|
||||
base_poise_damage: 0,
|
||||
poise_damage_increase: 0,
|
||||
knockback: 5.0,
|
||||
range: 3.5,
|
||||
angle: 30.0,
|
||||
base_buildup_duration: 0.8,
|
||||
base_swing_duration: 0.1,
|
||||
hit_timing: 0.5,
|
||||
base_recover_duration: 0.6,
|
||||
forward_movement: 1.5,
|
||||
damage_kind: Slashing,
|
||||
damage_effect: Some(Buff((
|
||||
kind: Bleeding,
|
||||
dur_secs: 10.0,
|
||||
strength: DamageFraction(0.1),
|
||||
chance: 0.1,
|
||||
))),
|
||||
),
|
||||
(
|
||||
stage: 3,
|
||||
base_damage: 26.0,
|
||||
damage_increase: 0,
|
||||
base_poise_damage: 0,
|
||||
poise_damage_increase: 0,
|
||||
knockback: 10.0,
|
||||
range: 3.5,
|
||||
angle: 30.0,
|
||||
base_buildup_duration: 0.375,
|
||||
base_swing_duration: 0.1,
|
||||
hit_timing: 0.5,
|
||||
base_recover_duration: 0.6,
|
||||
forward_movement: 1.5,
|
||||
damage_kind: Slashing,
|
||||
damage_effect: Some(Buff((
|
||||
kind: Bleeding,
|
||||
dur_secs: 10.0,
|
||||
strength: DamageFraction(0.1),
|
||||
chance: 0.1,
|
||||
))),
|
||||
),
|
||||
],
|
||||
initial_energy_gain: 0,
|
||||
max_energy_gain: 0,
|
||||
energy_increase: 0,
|
||||
speed_increase: 0.0,
|
||||
max_speed_increase: 0.0,
|
||||
scales_from_combo: 0,
|
||||
ori_modifier: 0.7,
|
||||
)
|
19
assets/common/abilities/custom/frostwyvern/frostbomb.ron
Normal file
19
assets/common/abilities/custom/frostwyvern/frostbomb.ron
Normal file
@ -0,0 +1,19 @@
|
||||
BasicRanged(
|
||||
energy_cost: 0,
|
||||
buildup_duration: 1.0,
|
||||
recover_duration: 0.7,
|
||||
projectile: Frostball(
|
||||
damage: 20.0,
|
||||
radius: 5.0,
|
||||
energy_regen: 5.0,
|
||||
min_falloff: 0.5,
|
||||
),
|
||||
projectile_body: Object(BoltNature),
|
||||
/*projectile_light: Some(LightEmitter {
|
||||
col: (1.0, 0.75, 0.11).into(),
|
||||
..Default::default()
|
||||
}),*/
|
||||
projectile_speed: 60.0,
|
||||
num_projectiles: 1,
|
||||
projectile_spread: 0.0,
|
||||
)
|
19
assets/common/abilities/custom/frostwyvern/frostthrower.ron
Normal file
19
assets/common/abilities/custom/frostwyvern/frostthrower.ron
Normal file
@ -0,0 +1,19 @@
|
||||
BasicBeam(
|
||||
buildup_duration: 0.8,
|
||||
recover_duration: 0.5,
|
||||
beam_duration: 0.5,
|
||||
damage: 10.0,
|
||||
tick_rate: 3.0,
|
||||
range: 15.0,
|
||||
max_angle: 22.5,
|
||||
damage_effect: Some(Buff((
|
||||
kind: Burning,
|
||||
dur_secs: 10.0,
|
||||
strength: DamageFraction(0.5),
|
||||
chance: 0.25,
|
||||
))),
|
||||
energy_regen: 0,
|
||||
energy_drain: 0,
|
||||
ori_rate: 0.3,
|
||||
specifier: Frost,
|
||||
)
|
17
assets/common/abilities/custom/frostwyvern/iceshockwave.ron
Normal file
17
assets/common/abilities/custom/frostwyvern/iceshockwave.ron
Normal file
@ -0,0 +1,17 @@
|
||||
Shockwave(
|
||||
energy_cost: 60.0,
|
||||
buildup_duration: 1.4,
|
||||
swing_duration: 0.1,
|
||||
recover_duration: 0.4,
|
||||
damage: 40.0,
|
||||
poise_damage: 0,
|
||||
knockback: ( strength: 25.0, direction: Away),
|
||||
shockwave_angle: 360.0,
|
||||
shockwave_vertical_angle: 90.0,
|
||||
shockwave_speed: 20.0,
|
||||
shockwave_duration: 0.5,
|
||||
requires_ground: false,
|
||||
move_efficiency: 0.1,
|
||||
damage_kind: Energy,
|
||||
specifier: IceSpikes,
|
||||
)
|
77
assets/common/abilities/custom/frostwyvern/triplestrike.ron
Normal file
77
assets/common/abilities/custom/frostwyvern/triplestrike.ron
Normal file
@ -0,0 +1,77 @@
|
||||
ComboMelee(
|
||||
stage_data: [
|
||||
(
|
||||
stage: 1,
|
||||
base_damage: 20.0,
|
||||
damage_increase: 0,
|
||||
base_poise_damage: 0,
|
||||
poise_damage_increase: 0,
|
||||
knockback: 5.0,
|
||||
range: 4.5,
|
||||
angle: 30.0,
|
||||
base_buildup_duration: 0.8,
|
||||
base_swing_duration: 0.1,
|
||||
hit_timing: 0.5,
|
||||
base_recover_duration: 0.6,
|
||||
forward_movement: 2.0,
|
||||
damage_kind: Slashing,
|
||||
damage_effect: Some(Buff((
|
||||
kind: Bleeding,
|
||||
dur_secs: 10.0,
|
||||
strength: DamageFraction(0.1),
|
||||
chance: 0.1,
|
||||
))),
|
||||
),
|
||||
(
|
||||
stage: 2,
|
||||
base_damage: 16.0,
|
||||
damage_increase: 0,
|
||||
base_poise_damage: 0,
|
||||
poise_damage_increase: 0,
|
||||
knockback: 5.0,
|
||||
range: 3.5,
|
||||
angle: 30.0,
|
||||
base_buildup_duration: 0.8,
|
||||
base_swing_duration: 0.1,
|
||||
hit_timing: 0.5,
|
||||
base_recover_duration: 0.6,
|
||||
forward_movement: 1.5,
|
||||
damage_kind: Slashing,
|
||||
damage_effect: Some(Buff((
|
||||
kind: Bleeding,
|
||||
dur_secs: 10.0,
|
||||
strength: DamageFraction(0.1),
|
||||
chance: 0.1,
|
||||
))),
|
||||
),
|
||||
(
|
||||
stage: 3,
|
||||
base_damage: 26.0,
|
||||
damage_increase: 0,
|
||||
base_poise_damage: 0,
|
||||
poise_damage_increase: 0,
|
||||
knockback: 10.0,
|
||||
range: 3.5,
|
||||
angle: 30.0,
|
||||
base_buildup_duration: 0.375,
|
||||
base_swing_duration: 0.1,
|
||||
hit_timing: 0.5,
|
||||
base_recover_duration: 0.6,
|
||||
forward_movement: 1.5,
|
||||
damage_kind: Slashing,
|
||||
damage_effect: Some(Buff((
|
||||
kind: Bleeding,
|
||||
dur_secs: 10.0,
|
||||
strength: DamageFraction(0.1),
|
||||
chance: 0.1,
|
||||
))),
|
||||
),
|
||||
],
|
||||
initial_energy_gain: 0,
|
||||
max_energy_gain: 0,
|
||||
energy_increase: 0,
|
||||
speed_increase: 0.0,
|
||||
max_speed_increase: 0.0,
|
||||
scales_from_combo: 0,
|
||||
ori_modifier: 0.7,
|
||||
)
|
19
assets/common/abilities/custom/seawyvern/bubblethrower.ron
Normal file
19
assets/common/abilities/custom/seawyvern/bubblethrower.ron
Normal file
@ -0,0 +1,19 @@
|
||||
BasicBeam(
|
||||
buildup_duration: 0.8,
|
||||
recover_duration: 0.5,
|
||||
beam_duration: 0.5,
|
||||
damage: 10.0,
|
||||
tick_rate: 3.0,
|
||||
range: 15.0,
|
||||
max_angle: 22.5,
|
||||
damage_effect: Some(Buff((
|
||||
kind: Burning,
|
||||
dur_secs: 10.0,
|
||||
strength: DamageFraction(0.5),
|
||||
chance: 0.25,
|
||||
))),
|
||||
energy_regen: 0,
|
||||
energy_drain: 0,
|
||||
ori_rate: 0.3,
|
||||
specifier: Bubbles,
|
||||
)
|
19
assets/common/abilities/custom/seawyvern/seabomb.ron
Normal file
19
assets/common/abilities/custom/seawyvern/seabomb.ron
Normal file
@ -0,0 +1,19 @@
|
||||
BasicRanged(
|
||||
energy_cost: 0,
|
||||
buildup_duration: 1.0,
|
||||
recover_duration: 0.7,
|
||||
projectile: SeaBomb(
|
||||
damage: 20.0,
|
||||
radius: 5.0,
|
||||
energy_regen: 5.0,
|
||||
min_falloff: 0.5,
|
||||
),
|
||||
projectile_body: Object(BoltFire),
|
||||
/*projectile_light: Some(LightEmitter {
|
||||
col: (1.0, 0.75, 0.11).into(),
|
||||
..Default::default()
|
||||
}),*/
|
||||
projectile_speed: 60.0,
|
||||
num_projectiles: 1,
|
||||
projectile_spread: 0.0,
|
||||
)
|
17
assets/common/abilities/custom/seawyvern/seashockwave.ron
Normal file
17
assets/common/abilities/custom/seawyvern/seashockwave.ron
Normal file
@ -0,0 +1,17 @@
|
||||
Shockwave(
|
||||
energy_cost: 60.0,
|
||||
buildup_duration: 1.4,
|
||||
swing_duration: 0.1,
|
||||
recover_duration: 0.4,
|
||||
damage: 40.0,
|
||||
poise_damage: 0,
|
||||
knockback: ( strength: 25.0, direction: Away),
|
||||
shockwave_angle: 360.0,
|
||||
shockwave_vertical_angle: 90.0,
|
||||
shockwave_speed: 20.0,
|
||||
shockwave_duration: 0.5,
|
||||
requires_ground: false,
|
||||
move_efficiency: 0.1,
|
||||
damage_kind: Energy,
|
||||
specifier: Water,
|
||||
)
|
77
assets/common/abilities/custom/seawyvern/triplestrike.ron
Normal file
77
assets/common/abilities/custom/seawyvern/triplestrike.ron
Normal file
@ -0,0 +1,77 @@
|
||||
ComboMelee(
|
||||
stage_data: [
|
||||
(
|
||||
stage: 1,
|
||||
base_damage: 20.0,
|
||||
damage_increase: 0,
|
||||
base_poise_damage: 0,
|
||||
poise_damage_increase: 0,
|
||||
knockback: 5.0,
|
||||
range: 4.5,
|
||||
angle: 30.0,
|
||||
base_buildup_duration: 0.8,
|
||||
base_swing_duration: 0.1,
|
||||
hit_timing: 0.5,
|
||||
base_recover_duration: 0.6,
|
||||
forward_movement: 2.0,
|
||||
damage_kind: Slashing,
|
||||
damage_effect: Some(Buff((
|
||||
kind: Bleeding,
|
||||
dur_secs: 10.0,
|
||||
strength: DamageFraction(0.1),
|
||||
chance: 0.1,
|
||||
))),
|
||||
),
|
||||
(
|
||||
stage: 2,
|
||||
base_damage: 16.0,
|
||||
damage_increase: 0,
|
||||
base_poise_damage: 0,
|
||||
poise_damage_increase: 0,
|
||||
knockback: 5.0,
|
||||
range: 3.5,
|
||||
angle: 30.0,
|
||||
base_buildup_duration: 0.8,
|
||||
base_swing_duration: 0.1,
|
||||
hit_timing: 0.5,
|
||||
base_recover_duration: 0.6,
|
||||
forward_movement: 1.5,
|
||||
damage_kind: Slashing,
|
||||
damage_effect: Some(Buff((
|
||||
kind: Bleeding,
|
||||
dur_secs: 10.0,
|
||||
strength: DamageFraction(0.1),
|
||||
chance: 0.1,
|
||||
))),
|
||||
),
|
||||
(
|
||||
stage: 3,
|
||||
base_damage: 26.0,
|
||||
damage_increase: 0,
|
||||
base_poise_damage: 0,
|
||||
poise_damage_increase: 0,
|
||||
knockback: 10.0,
|
||||
range: 3.5,
|
||||
angle: 30.0,
|
||||
base_buildup_duration: 0.375,
|
||||
base_swing_duration: 0.1,
|
||||
hit_timing: 0.5,
|
||||
base_recover_duration: 0.6,
|
||||
forward_movement: 1.5,
|
||||
damage_kind: Slashing,
|
||||
damage_effect: Some(Buff((
|
||||
kind: Bleeding,
|
||||
dur_secs: 10.0,
|
||||
strength: DamageFraction(0.1),
|
||||
chance: 0.1,
|
||||
))),
|
||||
),
|
||||
],
|
||||
initial_energy_gain: 0,
|
||||
max_energy_gain: 0,
|
||||
energy_increase: 0,
|
||||
speed_increase: 0.0,
|
||||
max_speed_increase: 0.0,
|
||||
scales_from_combo: 0,
|
||||
ori_modifier: 0.7,
|
||||
)
|
19
assets/common/abilities/custom/wealdwyvern/firebomb.ron
Normal file
19
assets/common/abilities/custom/wealdwyvern/firebomb.ron
Normal file
@ -0,0 +1,19 @@
|
||||
BasicRanged(
|
||||
energy_cost: 0,
|
||||
buildup_duration: 1.0,
|
||||
recover_duration: 0.7,
|
||||
projectile: Fireball(
|
||||
damage: 20.0,
|
||||
radius: 5.0,
|
||||
energy_regen: 5.0,
|
||||
min_falloff: 0.5,
|
||||
),
|
||||
projectile_body: Object(BoltFire),
|
||||
/*projectile_light: Some(LightEmitter {
|
||||
col: (1.0, 0.75, 0.11).into(),
|
||||
..Default::default()
|
||||
}),*/
|
||||
projectile_speed: 60.0,
|
||||
num_projectiles: 1,
|
||||
projectile_spread: 0.0,
|
||||
)
|
17
assets/common/abilities/custom/wealdwyvern/fireshockwave.ron
Normal file
17
assets/common/abilities/custom/wealdwyvern/fireshockwave.ron
Normal file
@ -0,0 +1,17 @@
|
||||
Shockwave(
|
||||
energy_cost: 60.0,
|
||||
buildup_duration: 1.4,
|
||||
swing_duration: 0.1,
|
||||
recover_duration: 0.4,
|
||||
damage: 40.0,
|
||||
poise_damage: 0,
|
||||
knockback: ( strength: 25.0, direction: Away),
|
||||
shockwave_angle: 360.0,
|
||||
shockwave_vertical_angle: 90.0,
|
||||
shockwave_speed: 20.0,
|
||||
shockwave_duration: 0.5,
|
||||
requires_ground: false,
|
||||
move_efficiency: 0.1,
|
||||
damage_kind: Energy,
|
||||
specifier: Fire,
|
||||
)
|
19
assets/common/abilities/custom/wealdwyvern/flamethrower.ron
Normal file
19
assets/common/abilities/custom/wealdwyvern/flamethrower.ron
Normal file
@ -0,0 +1,19 @@
|
||||
BasicBeam(
|
||||
buildup_duration: 0.8,
|
||||
recover_duration: 0.5,
|
||||
beam_duration: 0.5,
|
||||
damage: 10.0,
|
||||
tick_rate: 3.0,
|
||||
range: 15.0,
|
||||
max_angle: 22.5,
|
||||
damage_effect: Some(Buff((
|
||||
kind: Burning,
|
||||
dur_secs: 10.0,
|
||||
strength: DamageFraction(0.5),
|
||||
chance: 0.25,
|
||||
))),
|
||||
energy_regen: 0,
|
||||
energy_drain: 0,
|
||||
ori_rate: 0.3,
|
||||
specifier: Flamethrower,
|
||||
)
|
77
assets/common/abilities/custom/wealdwyvern/triplestrike.ron
Normal file
77
assets/common/abilities/custom/wealdwyvern/triplestrike.ron
Normal file
@ -0,0 +1,77 @@
|
||||
ComboMelee(
|
||||
stage_data: [
|
||||
(
|
||||
stage: 1,
|
||||
base_damage: 20.0,
|
||||
damage_increase: 0,
|
||||
base_poise_damage: 0,
|
||||
poise_damage_increase: 0,
|
||||
knockback: 5.0,
|
||||
range: 4.5,
|
||||
angle: 30.0,
|
||||
base_buildup_duration: 0.8,
|
||||
base_swing_duration: 0.1,
|
||||
hit_timing: 0.5,
|
||||
base_recover_duration: 0.6,
|
||||
forward_movement: 2.0,
|
||||
damage_kind: Slashing,
|
||||
damage_effect: Some(Buff((
|
||||
kind: Bleeding,
|
||||
dur_secs: 10.0,
|
||||
strength: DamageFraction(0.1),
|
||||
chance: 0.1,
|
||||
))),
|
||||
),
|
||||
(
|
||||
stage: 2,
|
||||
base_damage: 16.0,
|
||||
damage_increase: 0,
|
||||
base_poise_damage: 0,
|
||||
poise_damage_increase: 0,
|
||||
knockback: 5.0,
|
||||
range: 3.5,
|
||||
angle: 30.0,
|
||||
base_buildup_duration: 0.8,
|
||||
base_swing_duration: 0.1,
|
||||
hit_timing: 0.5,
|
||||
base_recover_duration: 0.6,
|
||||
forward_movement: 1.5,
|
||||
damage_kind: Slashing,
|
||||
damage_effect: Some(Buff((
|
||||
kind: Bleeding,
|
||||
dur_secs: 10.0,
|
||||
strength: DamageFraction(0.1),
|
||||
chance: 0.1,
|
||||
))),
|
||||
),
|
||||
(
|
||||
stage: 3,
|
||||
base_damage: 26.0,
|
||||
damage_increase: 0,
|
||||
base_poise_damage: 0,
|
||||
poise_damage_increase: 0,
|
||||
knockback: 10.0,
|
||||
range: 3.5,
|
||||
angle: 30.0,
|
||||
base_buildup_duration: 0.375,
|
||||
base_swing_duration: 0.1,
|
||||
hit_timing: 0.5,
|
||||
base_recover_duration: 0.6,
|
||||
forward_movement: 1.5,
|
||||
damage_kind: Slashing,
|
||||
damage_effect: Some(Buff((
|
||||
kind: Bleeding,
|
||||
dur_secs: 10.0,
|
||||
strength: DamageFraction(0.1),
|
||||
chance: 0.1,
|
||||
))),
|
||||
),
|
||||
],
|
||||
initial_energy_gain: 0,
|
||||
max_energy_gain: 0,
|
||||
energy_increase: 0,
|
||||
speed_increase: 0.0,
|
||||
max_speed_increase: 0.0,
|
||||
scales_from_combo: 0,
|
||||
ori_modifier: 0.7,
|
||||
)
|
11
assets/common/entity/wild/aggressive/cloudwyvern.ron
Normal file
11
assets/common/entity/wild/aggressive/cloudwyvern.ron
Normal file
@ -0,0 +1,11 @@
|
||||
#![enable(implicit_some)]
|
||||
(
|
||||
name: Automatic,
|
||||
body: RandomWith("wyvern_cloud"),
|
||||
alignment: Alignment(Enemy),
|
||||
loot: LootTable("common.loot_tables.creature.bird_large.wyvern"),
|
||||
inventory: (
|
||||
loadout: FromBody,
|
||||
),
|
||||
meta: [],
|
||||
)
|
11
assets/common/entity/wild/aggressive/flamewyvern.ron
Normal file
11
assets/common/entity/wild/aggressive/flamewyvern.ron
Normal file
@ -0,0 +1,11 @@
|
||||
#![enable(implicit_some)]
|
||||
(
|
||||
name: Automatic,
|
||||
body: RandomWith("wyvern_flame"),
|
||||
alignment: Alignment(Enemy),
|
||||
loot: LootTable("common.loot_tables.creature.bird_large.wyvern"),
|
||||
inventory: (
|
||||
loadout: FromBody,
|
||||
),
|
||||
meta: [],
|
||||
)
|
11
assets/common/entity/wild/aggressive/frostwyvern.ron
Normal file
11
assets/common/entity/wild/aggressive/frostwyvern.ron
Normal file
@ -0,0 +1,11 @@
|
||||
#![enable(implicit_some)]
|
||||
(
|
||||
name: Automatic,
|
||||
body: RandomWith("wyvern_frost"),
|
||||
alignment: Alignment(Enemy),
|
||||
loot: LootTable("common.loot_tables.creature.bird_large.wyvern"),
|
||||
inventory: (
|
||||
loadout: FromBody,
|
||||
),
|
||||
meta: [],
|
||||
)
|
11
assets/common/entity/wild/aggressive/seawyvern.ron
Normal file
11
assets/common/entity/wild/aggressive/seawyvern.ron
Normal file
@ -0,0 +1,11 @@
|
||||
#![enable(implicit_some)]
|
||||
(
|
||||
name: Automatic,
|
||||
body: RandomWith("wyvern_sea"),
|
||||
alignment: Alignment(Enemy),
|
||||
loot: LootTable("common.loot_tables.creature.bird_large.wyvern"),
|
||||
inventory: (
|
||||
loadout: FromBody,
|
||||
),
|
||||
meta: [],
|
||||
)
|
11
assets/common/entity/wild/aggressive/wealdwyvern.ron
Normal file
11
assets/common/entity/wild/aggressive/wealdwyvern.ron
Normal file
@ -0,0 +1,11 @@
|
||||
#![enable(implicit_some)]
|
||||
(
|
||||
name: Automatic,
|
||||
body: RandomWith("wyvern_weald"),
|
||||
alignment: Alignment(Enemy),
|
||||
loot: LootTable("common.loot_tables.creature.bird_large.wyvern"),
|
||||
inventory: (
|
||||
loadout: FromBody,
|
||||
),
|
||||
meta: [],
|
||||
)
|
13
assets/common/items/npc_armor/bird_large/wyvern.ron
Normal file
13
assets/common/items/npc_armor/bird_large/wyvern.ron
Normal file
@ -0,0 +1,13 @@
|
||||
ItemDef(
|
||||
name: "Wyvern Armor",
|
||||
description: "Generic Protection.",
|
||||
kind: Armor((
|
||||
kind: Chest,
|
||||
stats: Direct((
|
||||
protection: Some(Normal(150.0)),
|
||||
poise_resilience: Some(Normal(5.0)),
|
||||
)),
|
||||
)),
|
||||
quality: Epic,
|
||||
tags: [],
|
||||
)
|
21
assets/common/items/npc_weapons/unique/cloudwyvern.ron
Normal file
21
assets/common/items/npc_weapons/unique/cloudwyvern.ron
Normal file
@ -0,0 +1,21 @@
|
||||
ItemDef(
|
||||
name: "Cloud Wyvern",
|
||||
description: "testing123",
|
||||
kind: Tool((
|
||||
kind: Natural,
|
||||
hands: Two,
|
||||
stats: (
|
||||
equip_time_secs: 0.01,
|
||||
power: 1.0,
|
||||
effect_power: 1.0,
|
||||
speed: 1.0,
|
||||
crit_chance: 0.0625,
|
||||
range: 1.0,
|
||||
energy_efficiency: 1.0,
|
||||
buff_strength: 1.0,
|
||||
),
|
||||
)),
|
||||
quality: Low,
|
||||
tags: [],
|
||||
ability_spec: Some(Custom("Cloud Wyvern")),
|
||||
)
|
21
assets/common/items/npc_weapons/unique/flamewyvern.ron
Normal file
21
assets/common/items/npc_weapons/unique/flamewyvern.ron
Normal file
@ -0,0 +1,21 @@
|
||||
ItemDef(
|
||||
name: "Flame Wyvern",
|
||||
description: "testing123",
|
||||
kind: Tool((
|
||||
kind: Natural,
|
||||
hands: Two,
|
||||
stats: (
|
||||
equip_time_secs: 0.01,
|
||||
power: 1.0,
|
||||
effect_power: 1.0,
|
||||
speed: 1.0,
|
||||
crit_chance: 0.0625,
|
||||
range: 1.0,
|
||||
energy_efficiency: 1.0,
|
||||
buff_strength: 1.0,
|
||||
),
|
||||
)),
|
||||
quality: Low,
|
||||
tags: [],
|
||||
ability_spec: Some(Custom("Flame Wyvern")),
|
||||
)
|
21
assets/common/items/npc_weapons/unique/frostwyvern.ron
Normal file
21
assets/common/items/npc_weapons/unique/frostwyvern.ron
Normal file
@ -0,0 +1,21 @@
|
||||
ItemDef(
|
||||
name: "Frost Wyvern",
|
||||
description: "testing123",
|
||||
kind: Tool((
|
||||
kind: Natural,
|
||||
hands: Two,
|
||||
stats: (
|
||||
equip_time_secs: 0.01,
|
||||
power: 1.0,
|
||||
effect_power: 1.0,
|
||||
speed: 1.0,
|
||||
crit_chance: 0.0625,
|
||||
range: 1.0,
|
||||
energy_efficiency: 1.0,
|
||||
buff_strength: 1.0,
|
||||
),
|
||||
)),
|
||||
quality: Low,
|
||||
tags: [],
|
||||
ability_spec: Some(Custom("Frost Wyvern")),
|
||||
)
|
21
assets/common/items/npc_weapons/unique/seawyvern.ron
Normal file
21
assets/common/items/npc_weapons/unique/seawyvern.ron
Normal file
@ -0,0 +1,21 @@
|
||||
ItemDef(
|
||||
name: "Sea Wyvern",
|
||||
description: "testing123",
|
||||
kind: Tool((
|
||||
kind: Natural,
|
||||
hands: Two,
|
||||
stats: (
|
||||
equip_time_secs: 0.01,
|
||||
power: 1.0,
|
||||
effect_power: 1.0,
|
||||
speed: 1.0,
|
||||
crit_chance: 0.0625,
|
||||
range: 1.0,
|
||||
energy_efficiency: 1.0,
|
||||
buff_strength: 1.0,
|
||||
),
|
||||
)),
|
||||
quality: Low,
|
||||
tags: [],
|
||||
ability_spec: Some(Custom("Sea Wyvern")),
|
||||
)
|
21
assets/common/items/npc_weapons/unique/wealdwyvern.ron
Normal file
21
assets/common/items/npc_weapons/unique/wealdwyvern.ron
Normal file
@ -0,0 +1,21 @@
|
||||
ItemDef(
|
||||
name: "Weald Wyvern",
|
||||
description: "testing123",
|
||||
kind: Tool((
|
||||
kind: Natural,
|
||||
hands: Two,
|
||||
stats: (
|
||||
equip_time_secs: 0.01,
|
||||
power: 1.0,
|
||||
effect_power: 1.0,
|
||||
speed: 1.0,
|
||||
crit_chance: 0.0625,
|
||||
range: 1.0,
|
||||
energy_efficiency: 1.0,
|
||||
buff_strength: 1.0,
|
||||
),
|
||||
)),
|
||||
quality: Low,
|
||||
tags: [],
|
||||
ability_spec: Some(Custom("Weald Wyvern")),
|
||||
)
|
6
assets/common/loot_tables/creature/bird_large/wyvern.ron
Normal file
6
assets/common/loot_tables/creature/bird_large/wyvern.ron
Normal file
@ -0,0 +1,6 @@
|
||||
[
|
||||
(1.0, ItemQuantity("common.items.food.meat.bird_large_raw", 1, 2)),
|
||||
(1.0, ItemQuantity("common.items.food.meat.beast_large_raw", 2, 2)),
|
||||
(2.0, ItemQuantity("common.items.crafting_ing.animal_misc.elegant_crest", 1, 3)),
|
||||
(1.0, ItemQuantity("common.items.crafting_ing.hide.scales", 2, 6)),
|
||||
]
|
@ -313,11 +313,11 @@
|
||||
),
|
||||
(SeaWyvern, Male): (
|
||||
head: (
|
||||
offset: (-3.5, -2.0, 4.0),
|
||||
offset: (-3.5, 1.0, 3.0),
|
||||
central: ("npc.wyvern_sea.male.head"),
|
||||
),
|
||||
beak: (
|
||||
offset: (-3.5, 3.0, -3.0),
|
||||
offset: (-3.5, 4.0, -4.0),
|
||||
central: ("npc.wyvern_sea.male.beak"),
|
||||
),
|
||||
neck: (
|
||||
@ -339,11 +339,11 @@
|
||||
),
|
||||
(SeaWyvern, Female): (
|
||||
head: (
|
||||
offset: (-3.5, -2.0, 4.0),
|
||||
offset: (-3.5, 1.0, 3.0),
|
||||
central: ("npc.wyvern_sea.male.head"),
|
||||
),
|
||||
beak: (
|
||||
offset: (-3.5, 3.0, -3.0),
|
||||
offset: (-3.5, 4.0, -4.0),
|
||||
central: ("npc.wyvern_sea.male.beak"),
|
||||
),
|
||||
neck: (
|
||||
|
@ -253,27 +253,27 @@
|
||||
),
|
||||
(FlameWyvern, Male): (
|
||||
wing_in_l: (
|
||||
offset: (-24.0, -9.0, -4.0),
|
||||
offset: (-24.0, -15.5, -4.5),
|
||||
lateral: ("npc.wyvern_flame.male.wing_in_r"),
|
||||
),
|
||||
wing_in_r: (
|
||||
offset: (0.0, -9.0, -4.0),
|
||||
offset: (0.0, -15.5, -4.5),
|
||||
lateral: ("npc.wyvern_flame.male.wing_in_r"),
|
||||
),
|
||||
wing_mid_l: (
|
||||
offset: (-17.0, -26.5, -2.0),
|
||||
offset: (-17.0, -30.0, -4.0),
|
||||
lateral: ("npc.wyvern_flame.male.wing_mid_r"),
|
||||
),
|
||||
wing_mid_r: (
|
||||
offset: (0.0, -26.5, -2.0),
|
||||
offset: (0.0, -30.0, -4.0),
|
||||
lateral: ("npc.wyvern_flame.male.wing_mid_r"),
|
||||
),
|
||||
wing_out_l: (
|
||||
offset: (-24.0, -26.5, -2.0),
|
||||
offset: (-22.0, -32.0, -4.0),
|
||||
lateral: ("npc.wyvern_flame.male.wing_out_r"),
|
||||
),
|
||||
wing_out_r: (
|
||||
offset: (-9.0, -26.5, -2.0),
|
||||
offset: (-3.0, -32.0, -4.0),
|
||||
lateral: ("npc.wyvern_flame.male.wing_out_r"),
|
||||
),
|
||||
leg_l: (
|
||||
@ -295,27 +295,27 @@
|
||||
),
|
||||
(FlameWyvern, Female): (
|
||||
wing_in_l: (
|
||||
offset: (-24.0, -9.0, -4.0),
|
||||
offset: (-24.0, -15.5, -4.5),
|
||||
lateral: ("npc.wyvern_flame.male.wing_in_r"),
|
||||
),
|
||||
wing_in_r: (
|
||||
offset: (0.0, -9.0, -4.0),
|
||||
offset: (0.0, -15.5, -4.5),
|
||||
lateral: ("npc.wyvern_flame.male.wing_in_r"),
|
||||
),
|
||||
wing_mid_l: (
|
||||
offset: (-17.0, -26.5, -2.0),
|
||||
offset: (-16.0, -30.0, -4.0),
|
||||
lateral: ("npc.wyvern_flame.male.wing_mid_r"),
|
||||
),
|
||||
wing_mid_r: (
|
||||
offset: (0.0, -26.5, -2.0),
|
||||
offset: (0.0, -30.0, -4.0),
|
||||
lateral: ("npc.wyvern_flame.male.wing_mid_r"),
|
||||
),
|
||||
wing_out_l: (
|
||||
offset: (-24.0, -26.5, -2.0),
|
||||
offset: (-22.0, -32.0, -4.0),
|
||||
lateral: ("npc.wyvern_flame.male.wing_out_r"),
|
||||
),
|
||||
wing_out_r: (
|
||||
offset: (-9.0, -26.5, -2.0),
|
||||
offset: (-3.0, -32.0, -4.0),
|
||||
lateral: ("npc.wyvern_flame.male.wing_out_r"),
|
||||
),
|
||||
leg_l: (
|
||||
@ -337,27 +337,27 @@
|
||||
),
|
||||
(CloudWyvern, Male): (
|
||||
wing_in_l: (
|
||||
offset: (-24.0, -9.0, -4.0),
|
||||
offset: (-24.0, -15.5, -4.5),
|
||||
lateral: ("npc.wyvern_cloud.male.wing_in_r"),
|
||||
),
|
||||
wing_in_r: (
|
||||
offset: (0.0, -9.0, -4.0),
|
||||
offset: (0.0, -15.5, -4.5),
|
||||
lateral: ("npc.wyvern_cloud.male.wing_in_r"),
|
||||
),
|
||||
wing_mid_l: (
|
||||
offset: (-17.0, -26.5, -2.0),
|
||||
offset: (-17.0, -29.0, -4.0),
|
||||
lateral: ("npc.wyvern_cloud.male.wing_mid_r"),
|
||||
),
|
||||
wing_mid_r: (
|
||||
offset: (0.0, -26.5, -2.0),
|
||||
offset: (0.0, -29.0, -4.0),
|
||||
lateral: ("npc.wyvern_cloud.male.wing_mid_r"),
|
||||
),
|
||||
wing_out_l: (
|
||||
offset: (-24.0, -26.5, -2.0),
|
||||
offset: (-23.0, -31.0, -3.0),
|
||||
lateral: ("npc.wyvern_cloud.male.wing_out_r"),
|
||||
),
|
||||
wing_out_r: (
|
||||
offset: (-9.0, -26.5, -2.0),
|
||||
offset: (0.0, -31.0, -3.0),
|
||||
lateral: ("npc.wyvern_cloud.male.wing_out_r"),
|
||||
),
|
||||
leg_l: (
|
||||
@ -379,27 +379,27 @@
|
||||
),
|
||||
(CloudWyvern, Female): (
|
||||
wing_in_l: (
|
||||
offset: (-24.0, -9.0, -4.0),
|
||||
offset: (-24.0, -15.5, -4.5),
|
||||
lateral: ("npc.wyvern_cloud.male.wing_in_r"),
|
||||
),
|
||||
wing_in_r: (
|
||||
offset: (0.0, -9.0, -4.0),
|
||||
offset: (0.0, -15.5, -4.5),
|
||||
lateral: ("npc.wyvern_cloud.male.wing_in_r"),
|
||||
),
|
||||
wing_mid_l: (
|
||||
offset: (-17.0, -26.5, -2.0),
|
||||
offset: (-17.0, -29.0, -4.0),
|
||||
lateral: ("npc.wyvern_cloud.male.wing_mid_r"),
|
||||
),
|
||||
wing_mid_r: (
|
||||
offset: (0.0, -26.5, -2.0),
|
||||
offset: (0.0, -29.0, -4.0),
|
||||
lateral: ("npc.wyvern_cloud.male.wing_mid_r"),
|
||||
),
|
||||
wing_out_l: (
|
||||
offset: (-24.0, -26.5, -2.0),
|
||||
offset: (-23.0, -31.0, -3.0),
|
||||
lateral: ("npc.wyvern_cloud.male.wing_out_r"),
|
||||
),
|
||||
wing_out_r: (
|
||||
offset: (-9.0, -26.5, -2.0),
|
||||
offset: (0.0, -31.0, -3.0),
|
||||
lateral: ("npc.wyvern_cloud.male.wing_out_r"),
|
||||
),
|
||||
leg_l: (
|
||||
@ -421,27 +421,27 @@
|
||||
),
|
||||
(FrostWyvern, Male): (
|
||||
wing_in_l: (
|
||||
offset: (-24.0, -9.0, -4.0),
|
||||
offset: (-24.0, -15.5, -4.5),
|
||||
lateral: ("npc.wyvern_frost.male.wing_in_r"),
|
||||
),
|
||||
wing_in_r: (
|
||||
offset: (0.0, -9.0, -4.0),
|
||||
offset: (0.0, -15.5, -4.5),
|
||||
lateral: ("npc.wyvern_frost.male.wing_in_r"),
|
||||
),
|
||||
wing_mid_l: (
|
||||
offset: (-17.0, -26.5, -2.0),
|
||||
offset: (-17.0, -30.0, -4.0),
|
||||
lateral: ("npc.wyvern_frost.male.wing_mid_r"),
|
||||
),
|
||||
wing_mid_r: (
|
||||
offset: (0.0, -26.5, -2.0),
|
||||
offset: (0.0, -30.0, -4.0),
|
||||
lateral: ("npc.wyvern_frost.male.wing_mid_r"),
|
||||
),
|
||||
wing_out_l: (
|
||||
offset: (-24.0, -26.5, -2.0),
|
||||
offset: (-24.0, -32.0, -4.0),
|
||||
lateral: ("npc.wyvern_frost.male.wing_out_r"),
|
||||
),
|
||||
wing_out_r: (
|
||||
offset: (-9.0, -26.5, -2.0),
|
||||
offset: (0.0, -32.0, -4.0),
|
||||
lateral: ("npc.wyvern_frost.male.wing_out_r"),
|
||||
),
|
||||
leg_l: (
|
||||
@ -463,27 +463,27 @@
|
||||
),
|
||||
(FrostWyvern, Female): (
|
||||
wing_in_l: (
|
||||
offset: (-24.0, -9.0, -4.0),
|
||||
offset: (-24.0, -15.5, -4.5),
|
||||
lateral: ("npc.wyvern_frost.male.wing_in_r"),
|
||||
),
|
||||
wing_in_r: (
|
||||
offset: (0.0, -9.0, -4.0),
|
||||
offset: (0.0, -15.5, -4.5),
|
||||
lateral: ("npc.wyvern_frost.male.wing_in_r"),
|
||||
),
|
||||
wing_mid_l: (
|
||||
offset: (-17.0, -26.5, -2.0),
|
||||
offset: (-17.0, -30.0, -4.0),
|
||||
lateral: ("npc.wyvern_frost.male.wing_mid_r"),
|
||||
),
|
||||
wing_mid_r: (
|
||||
offset: (0.0, -26.5, -2.0),
|
||||
offset: (0.0, -30.0, -4.0),
|
||||
lateral: ("npc.wyvern_frost.male.wing_mid_r"),
|
||||
),
|
||||
wing_out_l: (
|
||||
offset: (-24.0, -26.5, -2.0),
|
||||
offset: (-24.0, -32.0, -4.0),
|
||||
lateral: ("npc.wyvern_frost.male.wing_out_r"),
|
||||
),
|
||||
wing_out_r: (
|
||||
offset: (-9.0, -26.5, -2.0),
|
||||
offset: (0.0, -32.0, -4.0),
|
||||
lateral: ("npc.wyvern_frost.male.wing_out_r"),
|
||||
),
|
||||
leg_l: (
|
||||
@ -505,27 +505,27 @@
|
||||
),
|
||||
(SeaWyvern, Male): (
|
||||
wing_in_l: (
|
||||
offset: (-24.0, -9.0, -4.0),
|
||||
offset: (-24.0, -15.5, -4.5),
|
||||
lateral: ("npc.wyvern_sea.male.wing_in_r"),
|
||||
),
|
||||
wing_in_r: (
|
||||
offset: (0.0, -9.0, -4.0),
|
||||
offset: (0.0, -15.5, -4.5),
|
||||
lateral: ("npc.wyvern_sea.male.wing_in_r"),
|
||||
),
|
||||
wing_mid_l: (
|
||||
offset: (-17.0, -26.5, -2.0),
|
||||
offset: (-17.0, -30.0, -4.0),
|
||||
lateral: ("npc.wyvern_sea.male.wing_mid_r"),
|
||||
),
|
||||
wing_mid_r: (
|
||||
offset: (0.0, -26.5, -2.0),
|
||||
offset: (0.0, -30.0, -4.0),
|
||||
lateral: ("npc.wyvern_sea.male.wing_mid_r"),
|
||||
),
|
||||
wing_out_l: (
|
||||
offset: (-24.0, -26.5, -2.0),
|
||||
offset: (-21.0, -31.0, -4.0),
|
||||
lateral: ("npc.wyvern_sea.male.wing_out_r"),
|
||||
),
|
||||
wing_out_r: (
|
||||
offset: (-9.0, -26.5, -2.0),
|
||||
offset: (-3.0, -31.0, -4.0),
|
||||
lateral: ("npc.wyvern_sea.male.wing_out_r"),
|
||||
),
|
||||
leg_l: (
|
||||
@ -547,27 +547,27 @@
|
||||
),
|
||||
(SeaWyvern, Female): (
|
||||
wing_in_l: (
|
||||
offset: (-24.0, -9.0, -4.0),
|
||||
offset: (-24.0, -15.5, -4.5),
|
||||
lateral: ("npc.wyvern_sea.male.wing_in_r"),
|
||||
),
|
||||
wing_in_r: (
|
||||
offset: (0.0, -9.0, -4.0),
|
||||
offset: (0.0, -15.5, -4.5),
|
||||
lateral: ("npc.wyvern_sea.male.wing_in_r"),
|
||||
),
|
||||
wing_mid_l: (
|
||||
offset: (-17.0, -26.5, -2.0),
|
||||
offset: (-17.0, -30.0, -4.0),
|
||||
lateral: ("npc.wyvern_sea.male.wing_mid_r"),
|
||||
),
|
||||
wing_mid_r: (
|
||||
offset: (0.0, -26.5, -2.0),
|
||||
offset: (0.0, -30.0, -4.0),
|
||||
lateral: ("npc.wyvern_sea.male.wing_mid_r"),
|
||||
),
|
||||
wing_out_l: (
|
||||
offset: (-24.0, -26.5, -2.0),
|
||||
offset: (-21.0, -31.0, -4.0),
|
||||
lateral: ("npc.wyvern_sea.male.wing_out_r"),
|
||||
),
|
||||
wing_out_r: (
|
||||
offset: (-9.0, -26.5, -2.0),
|
||||
offset: (-3.0, -31.0, -4.0),
|
||||
lateral: ("npc.wyvern_sea.male.wing_out_r"),
|
||||
),
|
||||
leg_l: (
|
||||
@ -589,27 +589,27 @@
|
||||
),
|
||||
(WealdWyvern, Male): (
|
||||
wing_in_l: (
|
||||
offset: (-24.0, -9.0, -4.0),
|
||||
offset: (-24.0, -15.5, -4.5),
|
||||
lateral: ("npc.wyvern_weald.male.wing_in_r"),
|
||||
),
|
||||
wing_in_r: (
|
||||
offset: (0.0, -9.0, -4.0),
|
||||
offset: (0.0, -15.5, -4.5),
|
||||
lateral: ("npc.wyvern_weald.male.wing_in_r"),
|
||||
),
|
||||
wing_mid_l: (
|
||||
offset: (-17.0, -27.0, -2.0),
|
||||
offset: (-17.0, -34.0, -4.0),
|
||||
lateral: ("npc.wyvern_weald.male.wing_mid_r"),
|
||||
),
|
||||
wing_mid_r: (
|
||||
offset: (0.0, -27.0, -2.0),
|
||||
offset: (0.0, -34.0, -4.0),
|
||||
lateral: ("npc.wyvern_weald.male.wing_mid_r"),
|
||||
),
|
||||
wing_out_l: (
|
||||
offset: (-18.0, -23.0, -2.0),
|
||||
offset: (-18.0, -29.0, -3.0),
|
||||
lateral: ("npc.wyvern_weald.male.wing_out_r"),
|
||||
),
|
||||
wing_out_r: (
|
||||
offset: (0.0, -23.0, -2.0),
|
||||
offset: (0.0, -29.0, -3.0),
|
||||
lateral: ("npc.wyvern_weald.male.wing_out_r"),
|
||||
),
|
||||
leg_l: (
|
||||
@ -631,27 +631,27 @@
|
||||
),
|
||||
(WealdWyvern, Female): (
|
||||
wing_in_l: (
|
||||
offset: (-24.0, -9.0, -4.0),
|
||||
offset: (-24.0, -15.5, -4.5),
|
||||
lateral: ("npc.wyvern_weald.male.wing_in_r"),
|
||||
),
|
||||
wing_in_r: (
|
||||
offset: (0.0, -9.0, -4.0),
|
||||
offset: (0.0, -15.5, -4.5),
|
||||
lateral: ("npc.wyvern_weald.male.wing_in_r"),
|
||||
),
|
||||
wing_mid_l: (
|
||||
offset: (-17.0, -27.0, -2.0),
|
||||
offset: (-17.0, -34.0, -4.0),
|
||||
lateral: ("npc.wyvern_weald.male.wing_mid_r"),
|
||||
),
|
||||
wing_mid_r: (
|
||||
offset: (0.0, -27.0, -2.0),
|
||||
offset: (0.0, -34.0, -4.0),
|
||||
lateral: ("npc.wyvern_weald.male.wing_mid_r"),
|
||||
),
|
||||
wing_out_l: (
|
||||
offset: (-18.0, -23.0, -2.0),
|
||||
offset: (-18.0, -29.0, -3.0),
|
||||
lateral: ("npc.wyvern_weald.male.wing_out_r"),
|
||||
),
|
||||
wing_out_r: (
|
||||
offset: (0.0, -23.0, -2.0),
|
||||
offset: (0.0, -29.0, -3.0),
|
||||
lateral: ("npc.wyvern_weald.male.wing_out_r"),
|
||||
),
|
||||
leg_l: (
|
||||
|
BIN
assets/voxygen/voxel/npc/wyvern_cloud/male/wing_mid_r.vox
(Stored with Git LFS)
BIN
assets/voxygen/voxel/npc/wyvern_cloud/male/wing_mid_r.vox
(Stored with Git LFS)
Binary file not shown.
BIN
assets/voxygen/voxel/npc/wyvern_cloud/male/wing_out_r.vox
(Stored with Git LFS)
BIN
assets/voxygen/voxel/npc/wyvern_cloud/male/wing_out_r.vox
(Stored with Git LFS)
Binary file not shown.
BIN
assets/voxygen/voxel/npc/wyvern_flame/male/wing_in_r.vox
(Stored with Git LFS)
BIN
assets/voxygen/voxel/npc/wyvern_flame/male/wing_in_r.vox
(Stored with Git LFS)
Binary file not shown.
BIN
assets/voxygen/voxel/npc/wyvern_flame/male/wing_mid_r.vox
(Stored with Git LFS)
BIN
assets/voxygen/voxel/npc/wyvern_flame/male/wing_mid_r.vox
(Stored with Git LFS)
Binary file not shown.
BIN
assets/voxygen/voxel/npc/wyvern_flame/male/wing_out_r.vox
(Stored with Git LFS)
BIN
assets/voxygen/voxel/npc/wyvern_flame/male/wing_out_r.vox
(Stored with Git LFS)
Binary file not shown.
BIN
assets/voxygen/voxel/npc/wyvern_frost/male/wing_mid_r.vox
(Stored with Git LFS)
BIN
assets/voxygen/voxel/npc/wyvern_frost/male/wing_mid_r.vox
(Stored with Git LFS)
Binary file not shown.
BIN
assets/voxygen/voxel/npc/wyvern_frost/male/wing_out_r.vox
(Stored with Git LFS)
BIN
assets/voxygen/voxel/npc/wyvern_frost/male/wing_out_r.vox
(Stored with Git LFS)
Binary file not shown.
BIN
assets/voxygen/voxel/npc/wyvern_sea/male/wing_mid_r.vox
(Stored with Git LFS)
BIN
assets/voxygen/voxel/npc/wyvern_sea/male/wing_mid_r.vox
(Stored with Git LFS)
Binary file not shown.
BIN
assets/voxygen/voxel/npc/wyvern_sea/male/wing_out_r.vox
(Stored with Git LFS)
BIN
assets/voxygen/voxel/npc/wyvern_sea/male/wing_out_r.vox
(Stored with Git LFS)
Binary file not shown.
BIN
assets/voxygen/voxel/npc/wyvern_weald/male/wing_in_r.vox
(Stored with Git LFS)
BIN
assets/voxygen/voxel/npc/wyvern_weald/male/wing_in_r.vox
(Stored with Git LFS)
Binary file not shown.
@ -431,6 +431,11 @@ impl Body {
|
||||
Body::BirdLarge(body) => match body.species {
|
||||
bird_large::Species::Cockatrice => Vec3::new(2.5, 5.5, 3.5),
|
||||
bird_large::Species::Roc => Vec3::new(2.2, 7.5, 4.0),
|
||||
bird_large::Species::FlameWyvern
|
||||
| bird_large::Species::FrostWyvern
|
||||
| bird_large::Species::CloudWyvern
|
||||
| bird_large::Species::SeaWyvern
|
||||
| bird_large::Species::WealdWyvern => Vec3::new(4.0, 9.0, 4.5),
|
||||
_ => Vec3::new(2.0, 6.0, 3.5),
|
||||
},
|
||||
Body::Dragon(_) => Vec3::new(16.0, 10.0, 16.0),
|
||||
@ -724,6 +729,11 @@ impl Body {
|
||||
Body::Dragon(_) => 500,
|
||||
Body::BirdLarge(bird_large) => match bird_large.species {
|
||||
bird_large::Species::Roc => 280,
|
||||
bird_large::Species::FlameWyvern
|
||||
| bird_large::Species::CloudWyvern
|
||||
| bird_large::Species::FrostWyvern
|
||||
| bird_large::Species::SeaWyvern
|
||||
| bird_large::Species::WealdWyvern => 1000,
|
||||
_ => 300,
|
||||
},
|
||||
Body::FishSmall(_) => 3,
|
||||
|
@ -762,15 +762,7 @@ fn default_main_tool(body: &Body) -> Item {
|
||||
)),
|
||||
},
|
||||
Body::BirdLarge(bird_large) => match (bird_large.species, bird_large.body_type) {
|
||||
(
|
||||
bird_large::Species::Cockatrice
|
||||
| bird_large::Species::FlameWyvern
|
||||
| bird_large::Species::CloudWyvern
|
||||
| bird_large::Species::FrostWyvern
|
||||
| bird_large::Species::SeaWyvern
|
||||
| bird_large::Species::WealdWyvern,
|
||||
_,
|
||||
) => Some(Item::new_from_asset_expect(
|
||||
(bird_large::Species::Cockatrice, _) => Some(Item::new_from_asset_expect(
|
||||
"common.items.npc_weapons.unique.birdlargebreathe",
|
||||
)),
|
||||
(bird_large::Species::Phoenix, _) => Some(Item::new_from_asset_expect(
|
||||
@ -779,6 +771,21 @@ fn default_main_tool(body: &Body) -> Item {
|
||||
(bird_large::Species::Roc, _) => Some(Item::new_from_asset_expect(
|
||||
"common.items.npc_weapons.unique.birdlargebasic",
|
||||
)),
|
||||
(bird_large::Species::FlameWyvern, _) => Some(Item::new_from_asset_expect(
|
||||
"common.items.npc_weapons.unique.flamewyvern",
|
||||
)),
|
||||
(bird_large::Species::FrostWyvern, _) => Some(Item::new_from_asset_expect(
|
||||
"common.items.npc_weapons.unique.frostwyvern",
|
||||
)),
|
||||
(bird_large::Species::CloudWyvern, _) => Some(Item::new_from_asset_expect(
|
||||
"common.items.npc_weapons.unique.cloudwyvern",
|
||||
)),
|
||||
(bird_large::Species::SeaWyvern, _) => Some(Item::new_from_asset_expect(
|
||||
"common.items.npc_weapons.unique.seawyvern",
|
||||
)),
|
||||
(bird_large::Species::WealdWyvern, _) => Some(Item::new_from_asset_expect(
|
||||
"common.items.npc_weapons.unique.wealdwyvern",
|
||||
)),
|
||||
},
|
||||
Body::BirdMedium(bird_medium) => match bird_medium.species {
|
||||
bird_medium::Species::Bat => Some(Item::new_from_asset_expect(
|
||||
@ -901,6 +908,16 @@ impl LoadoutBuilder {
|
||||
},
|
||||
_ => None,
|
||||
},
|
||||
Body::BirdLarge(body) => match body.species {
|
||||
bird_large::Species::FlameWyvern
|
||||
| bird_large::Species::FrostWyvern
|
||||
| bird_large::Species::CloudWyvern
|
||||
| bird_large::Species::SeaWyvern
|
||||
| bird_large::Species::WealdWyvern => {
|
||||
Some("common.items.npc_armor.bird_large.wyvern")
|
||||
},
|
||||
_ => None,
|
||||
},
|
||||
Body::Golem(body) => match body.species {
|
||||
golem::Species::ClayGolem => Some("common.items.npc_armor.golem.claygolem"),
|
||||
golem::Species::WoodGolem => Some("common.items.npc_armor.golem.woodgolem"),
|
||||
|
@ -77,6 +77,16 @@ pub enum ProjectileConstructor {
|
||||
knockback: f32,
|
||||
min_falloff: f32,
|
||||
},
|
||||
SeaBomb {
|
||||
damage: f32,
|
||||
radius: f32,
|
||||
min_falloff: f32,
|
||||
},
|
||||
WindBomb {
|
||||
damage: f32,
|
||||
radius: f32,
|
||||
min_falloff: f32,
|
||||
},
|
||||
Snowball {
|
||||
damage: f32,
|
||||
radius: f32,
|
||||
@ -373,6 +383,74 @@ impl ProjectileConstructor {
|
||||
is_point: true,
|
||||
}
|
||||
},
|
||||
SeaBomb {
|
||||
damage,
|
||||
radius,
|
||||
min_falloff,
|
||||
} => {
|
||||
let damage = AttackDamage::new(
|
||||
Damage {
|
||||
source: DamageSource::Explosion,
|
||||
kind: DamageKind::Energy,
|
||||
value: damage,
|
||||
},
|
||||
Some(GroupTarget::OutOfGroup),
|
||||
instance,
|
||||
);
|
||||
let attack = Attack::default()
|
||||
.with_damage(damage)
|
||||
.with_crit(crit_chance, crit_mult)
|
||||
.with_combo_increment();
|
||||
let explosion = Explosion {
|
||||
effects: vec![RadiusEffect::Attack(attack)],
|
||||
radius,
|
||||
reagent: Some(Reagent::Blue),
|
||||
min_falloff,
|
||||
};
|
||||
Projectile {
|
||||
hit_solid: vec![Effect::Explode(explosion.clone()), Effect::Vanish],
|
||||
hit_entity: vec![Effect::Explode(explosion), Effect::Vanish],
|
||||
time_left: Duration::from_secs(10),
|
||||
owner,
|
||||
ignore_group: true,
|
||||
is_sticky: true,
|
||||
is_point: true,
|
||||
}
|
||||
},
|
||||
WindBomb {
|
||||
damage,
|
||||
radius,
|
||||
min_falloff,
|
||||
} => {
|
||||
let damage = AttackDamage::new(
|
||||
Damage {
|
||||
source: DamageSource::Explosion,
|
||||
kind: DamageKind::Energy,
|
||||
value: damage,
|
||||
},
|
||||
Some(GroupTarget::OutOfGroup),
|
||||
instance,
|
||||
);
|
||||
let attack = Attack::default()
|
||||
.with_damage(damage)
|
||||
.with_crit(crit_chance, crit_mult)
|
||||
.with_combo_increment();
|
||||
let explosion = Explosion {
|
||||
effects: vec![RadiusEffect::Attack(attack)],
|
||||
radius,
|
||||
reagent: Some(Reagent::White),
|
||||
min_falloff,
|
||||
};
|
||||
Projectile {
|
||||
hit_solid: vec![Effect::Explode(explosion.clone()), Effect::Vanish],
|
||||
hit_entity: vec![Effect::Explode(explosion), Effect::Vanish],
|
||||
time_left: Duration::from_secs(10),
|
||||
owner,
|
||||
ignore_group: true,
|
||||
is_sticky: true,
|
||||
is_point: true,
|
||||
}
|
||||
},
|
||||
Snowball {
|
||||
damage,
|
||||
radius,
|
||||
@ -579,6 +657,22 @@ impl ProjectileConstructor {
|
||||
*damage *= power;
|
||||
*radius *= range;
|
||||
},
|
||||
SeaBomb {
|
||||
ref mut damage,
|
||||
ref mut radius,
|
||||
..
|
||||
} => {
|
||||
*damage *= power;
|
||||
*radius *= range;
|
||||
},
|
||||
WindBomb {
|
||||
ref mut damage,
|
||||
ref mut radius,
|
||||
..
|
||||
} => {
|
||||
*damage *= power;
|
||||
*radius *= range;
|
||||
},
|
||||
Snowball {
|
||||
ref mut damage,
|
||||
ref mut radius,
|
||||
|
@ -340,7 +340,15 @@ impl<'a> AgentData<'a> {
|
||||
.map_or(false, |item| {
|
||||
item.ability_spec().map_or(false, |a_s| match &*a_s {
|
||||
AbilitySpec::Custom(spec) => {
|
||||
matches!(spec.as_str(), "Simple Flying Melee")
|
||||
matches!(
|
||||
spec.as_str(),
|
||||
"Simple Flying Melee"
|
||||
| "Flame Wyvern"
|
||||
| "Frost Wyvern"
|
||||
| "Cloud Wyvern"
|
||||
| "Sea Wyvern"
|
||||
| "Weald Wyvern"
|
||||
)
|
||||
},
|
||||
_ => false,
|
||||
})
|
||||
@ -850,6 +858,8 @@ impl<'a> AgentData<'a> {
|
||||
"Bird Large Breathe" => Tactic::BirdLargeBreathe,
|
||||
"Bird Large Fire" => Tactic::BirdLargeFire,
|
||||
"Bird Large Basic" => Tactic::BirdLargeBasic,
|
||||
"Flame Wyvern" | "Frost Wyvern" | "Cloud Wyvern" | "Sea Wyvern"
|
||||
| "Weald Wyvern" => Tactic::Wyvern,
|
||||
"Mindflayer" => Tactic::Mindflayer,
|
||||
"Minotaur" => Tactic::Minotaur,
|
||||
"Clay Golem" => Tactic::ClayGolem,
|
||||
@ -1224,6 +1234,9 @@ impl<'a> AgentData<'a> {
|
||||
tgt_data,
|
||||
read_data,
|
||||
),
|
||||
Tactic::Wyvern => {
|
||||
self.handle_wyvern_attack(agent, controller, &attack_data, tgt_data, read_data, rng)
|
||||
},
|
||||
Tactic::Minotaur => {
|
||||
self.handle_minotaur_attack(agent, controller, &attack_data, tgt_data, read_data)
|
||||
},
|
||||
|
@ -110,6 +110,68 @@ impl<'a> AgentData<'a> {
|
||||
}
|
||||
}
|
||||
|
||||
pub fn handle_wyvern_attack(
|
||||
&self,
|
||||
_agent: &mut Agent,
|
||||
controller: &mut Controller,
|
||||
attack_data: &AttackData,
|
||||
tgt_data: &TargetData,
|
||||
read_data: &ReadData,
|
||||
_rng: &mut impl Rng,
|
||||
) {
|
||||
// Fly to target
|
||||
let dir_to_target = ((tgt_data.pos.0 + Vec3::unit_z() * 1.5) - self.pos.0)
|
||||
.try_normalized()
|
||||
.unwrap_or_else(Vec3::zero);
|
||||
let speed = 1.0;
|
||||
controller.inputs.move_dir = dir_to_target.xy() * speed;
|
||||
|
||||
// Always fly! If the floor can't touch you, it can't hurt you...
|
||||
controller.push_basic_input(InputKind::Fly);
|
||||
// Flee from the ground! The internet told me it was lava!
|
||||
// If on the ground, jump with every last ounce of energy, holding onto all that
|
||||
// is dear in life and straining for the wide open skies.
|
||||
if self.physics_state.on_ground.is_some() {
|
||||
controller.push_basic_input(InputKind::Jump);
|
||||
} else {
|
||||
// Only fly down if close enough to target in the xy plane
|
||||
// Otherwise fly towards the target bouncing around a 5 block altitude
|
||||
let mut maintain_altitude = |altitude| {
|
||||
if read_data
|
||||
.terrain
|
||||
.ray(self.pos.0, self.pos.0 - (Vec3::unit_z() * altitude))
|
||||
.until(Block::is_solid)
|
||||
.cast()
|
||||
.1
|
||||
.map_or(true, |b| b.is_some())
|
||||
{
|
||||
// Fly up
|
||||
controller.inputs.move_z = 1.0;
|
||||
} else {
|
||||
// Fly down
|
||||
controller.inputs.move_z = -1.0;
|
||||
}
|
||||
};
|
||||
if (tgt_data.pos.0 - self.pos.0).xy().magnitude_squared() > (30.0_f32).powi(2) {
|
||||
// If above 30 blocks, fly down and attack
|
||||
maintain_altitude(30.0);
|
||||
// Shoot bombs
|
||||
controller.push_basic_input(InputKind::Primary);
|
||||
} else {
|
||||
maintain_altitude(2.0);
|
||||
|
||||
// Attack if in range
|
||||
if attack_data.dist_sqrd < 6.0_f32.powi(2) && attack_data.angle < 150.0 {
|
||||
controller.push_basic_input(InputKind::Ability(0));
|
||||
} else if attack_data.dist_sqrd < 8.0_f32.powi(2) && attack_data.angle < 150.0 {
|
||||
controller.push_basic_input(InputKind::Ability(1));
|
||||
} else if attack_data.dist_sqrd < 12.0_f32.powi(2) && attack_data.angle < 150.0 {
|
||||
controller.push_basic_input(InputKind::Secondary);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Intended for any agent that has one attack, that attack is a melee attack,
|
||||
// the agent is able to freely walk around, and the agent is trying to attack
|
||||
// from behind its target
|
||||
|
@ -119,6 +119,7 @@ pub enum Tactic {
|
||||
BirdLargeBreathe,
|
||||
BirdLargeFire,
|
||||
BirdLargeBasic,
|
||||
Wyvern,
|
||||
ArthropodMelee,
|
||||
ArthropodRanged,
|
||||
ArthropodAmbush,
|
||||
|
@ -48,7 +48,7 @@ const BIRD_MEDIUM_ROSTER: &[comp::bird_medium::Species] = &[
|
||||
];
|
||||
|
||||
const BIRD_LARGE_ROSTER: &[comp::bird_large::Species] = &[
|
||||
// Flame Wyvern not included until proper introduction
|
||||
// Wyverns not included until proper introduction
|
||||
comp::bird_large::Species::Phoenix,
|
||||
comp::bird_large::Species::Cockatrice,
|
||||
comp::bird_large::Species::Roc,
|
||||
|
@ -85,10 +85,15 @@ impl Animation for FlyAnimation {
|
||||
next.chest.orientation = Quaternion::rotation_x(
|
||||
(0.8 - 0.8 * velocity.xy().magnitude() / 5.0).max(-0.2) - flap1 * 0.2,
|
||||
) * Quaternion::rotation_y(tilt * 1.8 + fast * 0.01);
|
||||
|
||||
next.wing_in_l.position = Vec3::new(-s_a.wing_in.0, s_a.wing_in.1, s_a.wing_in.2);
|
||||
next.wing_in_r.position = Vec3::new(s_a.wing_in.0, s_a.wing_in.1, s_a.wing_in.2);
|
||||
|
||||
if s_a.wyvern {
|
||||
next.wing_in_l.position =
|
||||
Vec3::new(-s_a.wing_in.0, s_a.wing_in.1, s_a.wing_in.2 + 2.0);
|
||||
next.wing_in_r.position =
|
||||
Vec3::new(s_a.wing_in.0, s_a.wing_in.1, s_a.wing_in.2 + 2.0);
|
||||
} else {
|
||||
next.wing_in_l.position = Vec3::new(-s_a.wing_in.0, s_a.wing_in.1, s_a.wing_in.2);
|
||||
next.wing_in_r.position = Vec3::new(s_a.wing_in.0, s_a.wing_in.1, s_a.wing_in.2);
|
||||
}
|
||||
next.wing_in_l.orientation =
|
||||
Quaternion::rotation_y(-flap1 * 1.9 + 0.2) * Quaternion::rotation_x(0.4);
|
||||
next.wing_in_r.orientation =
|
||||
@ -135,9 +140,15 @@ impl Animation for FlyAnimation {
|
||||
next.chest.orientation =
|
||||
Quaternion::rotation_x(-0.2 + slow * 0.05 + (0.8 * velocity.z / 80.0).min(0.8))
|
||||
* Quaternion::rotation_y(tilt * 1.8 + fast * 0.01);
|
||||
|
||||
next.wing_in_l.position = Vec3::new(-s_a.wing_in.0, s_a.wing_in.1, s_a.wing_in.2);
|
||||
next.wing_in_r.position = Vec3::new(s_a.wing_in.0, s_a.wing_in.1, s_a.wing_in.2);
|
||||
if s_a.wyvern {
|
||||
next.wing_in_l.position =
|
||||
Vec3::new(-s_a.wing_in.0, s_a.wing_in.1, s_a.wing_in.2 + 2.0);
|
||||
next.wing_in_r.position =
|
||||
Vec3::new(s_a.wing_in.0, s_a.wing_in.1, s_a.wing_in.2 + 2.0);
|
||||
} else {
|
||||
next.wing_in_l.position = Vec3::new(-s_a.wing_in.0, s_a.wing_in.1, s_a.wing_in.2);
|
||||
next.wing_in_r.position = Vec3::new(s_a.wing_in.0, s_a.wing_in.1, s_a.wing_in.2);
|
||||
}
|
||||
|
||||
next.wing_in_l.orientation =
|
||||
Quaternion::rotation_y(0.1 + slow * 0.04 + (0.8 * velocity.z / 80.0).min(0.8))
|
||||
|
@ -230,31 +230,31 @@ impl<'a> From<&'a Body> for SkeletonAttr {
|
||||
(Phoenix, _) => (3.0, 2.5, 2.0),
|
||||
(Cockatrice, _) => (3.5, 7.0, 3.5),
|
||||
(Roc, _) => (5.5, 7.5, -1.0),
|
||||
(FlameWyvern, _) => (6.5, 5.0, -2.0),
|
||||
(CloudWyvern, _) => (4.5, 5.0, -4.0),
|
||||
(FrostWyvern, _) => (6.5, 5.0, -2.0),
|
||||
(SeaWyvern, _) => (6.5, 5.0, -2.0),
|
||||
(WealdWyvern, _) => (5.0, 5.0, -2.0),
|
||||
(FlameWyvern, _) => (6.5, 11.5, -2.0),
|
||||
(CloudWyvern, _) => (3.5, 11.5, -1.5),
|
||||
(FrostWyvern, _) => (5.0, 10.5, -1.5),
|
||||
(SeaWyvern, _) => (4.0, 11.5, -0.0),
|
||||
(WealdWyvern, _) => (5.0, 11.5, -1.0),
|
||||
},
|
||||
wing_mid: match (body.species, body.body_type) {
|
||||
(Phoenix, _) => (10.0, 1.0, 0.0),
|
||||
(Cockatrice, _) => (6.0, 0.0, 0.0),
|
||||
(Roc, _) => (12.0, 1.0, -0.5),
|
||||
(FlameWyvern, _) => (19.0, 15.0, -1.0),
|
||||
(CloudWyvern, _) => (19.0, 15.0, -1.0),
|
||||
(FrostWyvern, _) => (19.0, 15.0, -1.0),
|
||||
(SeaWyvern, _) => (19.0, 15.0, -1.0),
|
||||
(WealdWyvern, _) => (19.0, 15.0, -1.0),
|
||||
(FlameWyvern, _) => (19.0, 11.5, 1.0),
|
||||
(CloudWyvern, _) => (19.0, 10.5, 1.0),
|
||||
(FrostWyvern, _) => (18.5, 11.5, 0.5),
|
||||
(SeaWyvern, _) => (19.0, 11.5, 0.5),
|
||||
(WealdWyvern, _) => (19.0, 11.5, 0.0),
|
||||
},
|
||||
wing_out: match (body.species, body.body_type) {
|
||||
(Phoenix, _) => (7.0, 2.0, 1.5),
|
||||
(Cockatrice, _) => (4.0, -1.0, 1.0),
|
||||
(Roc, _) => (10.0, -2.0, 0.0),
|
||||
(FlameWyvern, _) => (10.0, -3.0, 0.0),
|
||||
(CloudWyvern, _) => (10.0, -3.0, 0.0),
|
||||
(FrostWyvern, _) => (10.0, -3.0, 0.0),
|
||||
(SeaWyvern, _) => (10.0, -3.0, 0.0),
|
||||
(WealdWyvern, _) => (16.0, -3.0, 0.0),
|
||||
(FlameWyvern, _) => (11.0, -1.0, 0.0),
|
||||
(CloudWyvern, _) => (11.0, -2.0, 0.0),
|
||||
(FrostWyvern, _) => (10.0, -1.5, 0.5),
|
||||
(SeaWyvern, _) => (12.0, -1.0, 0.0),
|
||||
(WealdWyvern, _) => (16.0, -4.0, -1.0),
|
||||
},
|
||||
leg: match (body.species, body.body_type) {
|
||||
(Phoenix, _) => (4.0, 1.5, 12.0),
|
||||
|
@ -126,18 +126,18 @@ impl Animation for RunAnimation {
|
||||
Quaternion::rotation_x(-0.1 + short * -0.1) * Quaternion::rotation_z(tilt * 0.8);
|
||||
|
||||
next.wing_in_l.position = Vec3::new(
|
||||
-s_a.wing_in.0,
|
||||
-s_a.wing_in.0 + 1.5,
|
||||
s_a.wing_in.1 + foot1a * 2.0,
|
||||
s_a.wing_in.2 + speednorm * 1.0 + foot1b * 1.0,
|
||||
s_a.wing_in.2 + speednorm * 1.0 + foot1b * 1.0 - 3.0,
|
||||
);
|
||||
next.wing_in_r.position = Vec3::new(
|
||||
s_a.wing_in.0,
|
||||
s_a.wing_in.0 - 1.5,
|
||||
s_a.wing_in.1 + foot2a * 2.0,
|
||||
s_a.wing_in.2 + speednorm * 1.0 + foot2b * 1.0,
|
||||
s_a.wing_in.2 + speednorm * 1.0 + foot2b * 1.0 - 3.0,
|
||||
);
|
||||
|
||||
next.wing_in_l.orientation = Quaternion::rotation_x(foot2a * -0.05 + speednorm * -0.3)
|
||||
* Quaternion::rotation_y(-0.8 + speednorm * 0.55 + foot2b * -0.2)
|
||||
* Quaternion::rotation_y(-0.8 + speednorm * 0.5 + foot2b * -0.2)
|
||||
* Quaternion::rotation_z(0.2 + foot2a * 0.6);
|
||||
next.wing_in_r.orientation = Quaternion::rotation_x(foot1a * -0.05 + speednorm * -0.3)
|
||||
* Quaternion::rotation_y(0.8 + speednorm * -0.55 + foot1b * 0.2)
|
||||
|
@ -51,10 +51,13 @@ impl Animation for StunnedAnimation {
|
||||
|
||||
next.tail_front.position = Vec3::new(0.0, s_a.tail_front.0, s_a.tail_front.1);
|
||||
next.tail_rear.position = Vec3::new(0.0, s_a.tail_rear.0, s_a.tail_rear.1);
|
||||
|
||||
next.wing_in_l.position = Vec3::new(-s_a.wing_in.0, s_a.wing_in.1, s_a.wing_in.2);
|
||||
next.wing_in_r.position = Vec3::new(s_a.wing_in.0, s_a.wing_in.1, s_a.wing_in.2);
|
||||
|
||||
if s_a.wyvern {
|
||||
next.wing_in_l.position = Vec3::new(-s_a.wing_in.0 + 3.5, s_a.wing_in.1, s_a.wing_in.2);
|
||||
next.wing_in_r.position = Vec3::new(s_a.wing_in.0 - 3.5, s_a.wing_in.1, s_a.wing_in.2);
|
||||
} else {
|
||||
next.wing_in_l.position = Vec3::new(-s_a.wing_in.0, s_a.wing_in.1, s_a.wing_in.2);
|
||||
next.wing_in_r.position = Vec3::new(s_a.wing_in.0, s_a.wing_in.1, s_a.wing_in.2);
|
||||
}
|
||||
next.wing_in_l.orientation = Quaternion::rotation_y(wave_slow_cos * 0.06 + twitch2 * 0.8)
|
||||
* Quaternion::rotation_z(0.2 - movement1abs);
|
||||
next.wing_in_r.orientation = Quaternion::rotation_y(wave_slow_cos * 0.06 - twitch2 * 0.8)
|
||||
|
Loading…
Reference in New Issue
Block a user