diff --git a/CHANGELOG.md b/CHANGELOG.md index 51a077f3c0..53e5cecd06 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - First version of multisalvage that allows to obtain more than one piece of material from salvage - Axe - Combat music toggle +- Spawn rtsim wyverns that travel the world, providing dragon scale loot drops ### Changed diff --git a/assets/common/abilities/ability_set_manifest.ron b/assets/common/abilities/ability_set_manifest.ron index 2745673410..428d693bc1 100644 --- a/assets/common/abilities/ability_set_manifest.ron +++ b/assets/common/abilities/ability_set_manifest.ron @@ -724,42 +724,42 @@ ), Custom("Flame Wyvern"): ( primary: Simple(None, "common.abilities.custom.flamewyvern.firebomb"), - secondary: Simple(None, "common.abilities.custom.flamewyvern.fireshockwave"), + secondary: Simple(None, "common.abilities.custom.flamewyvern.triplestrike"), abilities: [ - Simple(None, "common.abilities.custom.flamewyvern.triplestrike"), + Simple(None, "common.abilities.custom.flamewyvern.fireshockwave"), Simple(None, "common.abilities.custom.flamewyvern.flamethrower"), ], ), Custom("Frost Wyvern"): ( primary: Simple(None, "common.abilities.custom.frostwyvern.frostbomb"), - secondary: Simple(None, "common.abilities.custom.frostwyvern.iceshockwave"), + secondary: Simple(None, "common.abilities.custom.frostwyvern.triplestrike"), abilities: [ - Simple(None, "common.abilities.custom.frostwyvern.triplestrike"), + Simple(None, "common.abilities.custom.frostwyvern.iceshockwave"), Simple(None, "common.abilities.custom.frostwyvern.frostthrower"), ], ), Custom("Cloud Wyvern"): ( - primary: Simple(None, "common.abilities.custom.cloudwyvern.windbomb"), - secondary: Simple(None, "common.abilities.custom.cloudwyvern.windshockwave"), + primary: Simple(None, "common.abilities.custom.cloudwyvern.lightningbomb"), + secondary: Simple(None, "common.abilities.custom.cloudwyvern.triplestrike"), abilities: [ - Simple(None, "common.abilities.custom.cloudwyvern.triplestrike"), - Simple(None, "common.abilities.custom.cloudwyvern.windthrower"), + Simple(None, "common.abilities.custom.cloudwyvern.lightningshockwave"), + Simple(None, "common.abilities.custom.cloudwyvern.lightningthrower"), ], ), Custom("Sea Wyvern"): ( - primary: Simple(None, "common.abilities.custom.seawyvern.seabomb"), - secondary: Simple(None, "common.abilities.custom.seawyvern.seashockwave"), + primary: Simple(None, "common.abilities.custom.seawyvern.inkbomb"), + secondary: Simple(None, "common.abilities.custom.seawyvern.triplestrike"), abilities: [ - Simple(None, "common.abilities.custom.seawyvern.triplestrike"), - Simple(None, "common.abilities.custom.seawyvern.bubblethrower"), + Simple(None, "common.abilities.custom.seawyvern.inkshockwave"), + Simple(None, "common.abilities.custom.seawyvern.inkthrower"), ], ), Custom("Weald Wyvern"): ( - primary: Simple(None, "common.abilities.custom.wealdwyvern.firebomb"), - secondary: Simple(None, "common.abilities.custom.wealdwyvern.fireshockwave"), + primary: Simple(None, "common.abilities.custom.wealdwyvern.poisonbomb"), + secondary: Simple(None, "common.abilities.custom.wealdwyvern.triplestrike"), abilities: [ - Simple(None, "common.abilities.custom.wealdwyvern.triplestrike"), - Simple(None, "common.abilities.custom.wealdwyvern.flamethrower"), + Simple(None, "common.abilities.custom.wealdwyvern.poisonshockwave"), + Simple(None, "common.abilities.custom.wealdwyvern.poisonthrower"), ], ), Custom("Bird Large Basic"): ( diff --git a/assets/common/abilities/custom/arthropods/blackwidow/poisonball.ron b/assets/common/abilities/custom/arthropods/blackwidow/poisonball.ron index d93ae0899d..65418ddfd1 100644 --- a/assets/common/abilities/custom/arthropods/blackwidow/poisonball.ron +++ b/assets/common/abilities/custom/arthropods/blackwidow/poisonball.ron @@ -13,7 +13,7 @@ BasicRanged( col: (1.0, 0.75, 0.11).into(), ..Default::default() }),*/ - projectile_speed: 260.0, + projectile_speed: 25.0, num_projectiles: 1, projectile_spread: 0.3, move_efficiency: 0.3, diff --git a/assets/common/abilities/custom/birdlargebasic/triplestrike.ron b/assets/common/abilities/custom/birdlargebasic/triplestrike.ron index 3f1cd81a55..ca0ffd6eec 100644 --- a/assets/common/abilities/custom/birdlargebasic/triplestrike.ron +++ b/assets/common/abilities/custom/birdlargebasic/triplestrike.ron @@ -1,59 +1,66 @@ -ComboMelee( - stage_data: [ +ComboMelee2( + strikes: [ ( - stage: 1, - base_damage: 22.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, + melee_constructor: ( + kind: Slash( + damage: 22, + poise: 0, + knockback: 5, + energy_regen: 0, + ), + range: 4.5, + angle: 30.0, + ), + buildup_duration: 0.8, + swing_duration: 0.1, hit_timing: 0.5, - base_recover_duration: 0.6, - forward_movement: 3.0, - damage_kind: Crushing, + recover_duration: 0.6, + movement: ( + swing: Some(Forward(3.0)), + ), + ori_modifier: 0.7, ), ( - stage: 2, - base_damage: 18.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, + melee_constructor: ( + kind: Slash( + damage: 18, + poise: 0, + knockback: 5, + energy_regen: 0, + ), + range: 3.5, + angle: 30.0, + ), + buildup_duration: 0.8, + swing_duration: 0.1, hit_timing: 0.5, - base_recover_duration: 0.6, - forward_movement: 3.0, - damage_kind: Crushing, + recover_duration: 0.6, + movement: ( + swing: Some(Forward(3.0)), + ), + ori_modifier: 0.7, ), ( - stage: 3, - base_damage: 28.0, - damage_increase: 0, - base_poise_damage: 0, - poise_damage_increase: 0, - knockback: 10.0, - range: 3.5, - angle: 30.0, - base_buildup_duration: 1.3, - base_swing_duration: 0.1, + melee_constructor: ( + kind: Slash( + damage: 28, + poise: 0, + knockback: 10, + energy_regen: 0, + ), + range: 3.5, + angle: 30.0, + ), + buildup_duration: 1.3, + swing_duration: 0.1, hit_timing: 0.5, - base_recover_duration: 0.6, - forward_movement: 3.5, - damage_kind: Crushing, + recover_duration: 0.6, + movement: ( + swing: Some(Forward(3.5)), + ), + ori_modifier: 0.7, ), ], - 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, -) + energy_cost_per_strike: 0, + auto_progress: true, +) \ No newline at end of file diff --git a/assets/common/abilities/custom/birdlargebreathe/triplestrike.ron b/assets/common/abilities/custom/birdlargebreathe/triplestrike.ron index 1ce016e577..03bf0f68b4 100644 --- a/assets/common/abilities/custom/birdlargebreathe/triplestrike.ron +++ b/assets/common/abilities/custom/birdlargebreathe/triplestrike.ron @@ -1,77 +1,66 @@ -ComboMelee( - stage_data: [ +ComboMelee2( + strikes: [ ( - 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, + melee_constructor: ( + kind: Slash( + damage: 20, + poise: 0, + knockback: 5, + energy_regen: 0, + ), + range: 4.5, + angle: 30.0, + ), + buildup_duration: 0.8, + 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, - ))), + recover_duration: 0.6, + movement: ( + swing: Some(Forward(2.0)), + ), + ori_modifier: 0.7, ), ( - 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, + melee_constructor: ( + kind: Slash( + damage: 16, + poise: 0, + knockback: 5, + energy_regen: 0, + ), + range: 3.5, + angle: 30.0, + ), + buildup_duration: 0.8, + 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, - ))), + recover_duration: 0.6, + movement: ( + swing: Some(Forward(2.0)), + ), + ori_modifier: 0.7, ), ( - 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: 1.3, - base_swing_duration: 0.1, + melee_constructor: ( + kind: Slash( + damage: 26, + poise: 0, + knockback: 10, + energy_regen: 0, + ), + range: 3.5, + angle: 30.0, + ), + buildup_duration: 0.4, + 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, - ))), + recover_duration: 0.6, + movement: ( + swing: Some(Forward(1.5)), + ), + ori_modifier: 0.7, ), ], - 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, -) + energy_cost_per_strike: 0, + auto_progress: true, +) \ No newline at end of file diff --git a/assets/common/abilities/custom/birdlargefire/triplestrike.ron b/assets/common/abilities/custom/birdlargefire/triplestrike.ron index 085622090a..03bf0f68b4 100644 --- a/assets/common/abilities/custom/birdlargefire/triplestrike.ron +++ b/assets/common/abilities/custom/birdlargefire/triplestrike.ron @@ -1,77 +1,66 @@ -ComboMelee( - stage_data: [ +ComboMelee2( + strikes: [ ( - 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, + melee_constructor: ( + kind: Slash( + damage: 20, + poise: 0, + knockback: 5, + energy_regen: 0, + ), + range: 4.5, + angle: 30.0, + ), + buildup_duration: 0.8, + 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, - ))), + recover_duration: 0.6, + movement: ( + swing: Some(Forward(2.0)), + ), + ori_modifier: 0.7, ), ( - 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, + melee_constructor: ( + kind: Slash( + damage: 16, + poise: 0, + knockback: 5, + energy_regen: 0, + ), + range: 3.5, + angle: 30.0, + ), + buildup_duration: 0.8, + 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, - ))), + recover_duration: 0.6, + movement: ( + swing: Some(Forward(2.0)), + ), + ori_modifier: 0.7, ), ( - 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, + melee_constructor: ( + kind: Slash( + damage: 26, + poise: 0, + knockback: 10, + energy_regen: 0, + ), + range: 3.5, + angle: 30.0, + ), + buildup_duration: 0.4, + 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, - ))), + recover_duration: 0.6, + movement: ( + swing: Some(Forward(1.5)), + ), + ori_modifier: 0.7, ), ], - 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, -) + energy_cost_per_strike: 0, + auto_progress: true, +) \ No newline at end of file diff --git a/assets/common/abilities/custom/cloudwyvern/lightningbomb.ron b/assets/common/abilities/custom/cloudwyvern/lightningbomb.ron new file mode 100644 index 0000000000..b5b6f9db50 --- /dev/null +++ b/assets/common/abilities/custom/cloudwyvern/lightningbomb.ron @@ -0,0 +1,18 @@ +BasicRanged( + energy_cost: 0, + buildup_duration: 0.5, + recover_duration: 1.5, + projectile: LaserBeam( + damage: 20.0, + radius: 5.0, + knockback: 5.0, + energy_regen: 20.0, + min_falloff: 0.1, + ), + projectile_body: Object(LightningBolt), + projectile_light: None, + projectile_speed: 100.0, + num_projectiles: 1, + projectile_spread: 0.0, + move_efficiency: 0.3, +) diff --git a/assets/common/abilities/custom/cloudwyvern/lightningshockwave.ron b/assets/common/abilities/custom/cloudwyvern/lightningshockwave.ron new file mode 100644 index 0000000000..52eaab4ac7 --- /dev/null +++ b/assets/common/abilities/custom/cloudwyvern/lightningshockwave.ron @@ -0,0 +1,24 @@ +Shockwave( + energy_cost: 0, + buildup_duration: 0.3, + swing_duration: 0.3, + recover_duration: 2.0, + damage: 20.0, + poise_damage: 10, + knockback: (strength: 18.0, direction: Away), + shockwave_angle: 360.0, + shockwave_vertical_angle: 90.0, + shockwave_speed: 15.0, + shockwave_duration: 2.0, + requires_ground: true, + move_efficiency: 0.0, + damage_kind: Crushing, + specifier: Lightning, + ori_rate: 1.0, + damage_effect: Some(Buff(( + kind: Crippled, + dur_secs: 2.0, + strength: Value(0.3), + chance: 1.0, + ))), +) diff --git a/assets/common/abilities/custom/cloudwyvern/lightningthrower.ron b/assets/common/abilities/custom/cloudwyvern/lightningthrower.ron new file mode 100644 index 0000000000..570e03461a --- /dev/null +++ b/assets/common/abilities/custom/cloudwyvern/lightningthrower.ron @@ -0,0 +1,19 @@ +BasicBeam( + buildup_duration: 0.3, + recover_duration: 1.5, + beam_duration: 2.0, + damage: 22.5, + tick_rate: 3.0, + range: 22.0, + max_angle: 22.5, + damage_effect: Some(Buff(( + kind: Crippled, + dur_secs: 3.0, + strength: Value(0.5), + chance: 1.0, + ))), + energy_regen: 2, + energy_drain: 0, + ori_rate: 0.5, + specifier: Lightning, +) \ No newline at end of file diff --git a/assets/common/abilities/custom/cloudwyvern/triplestrike.ron b/assets/common/abilities/custom/cloudwyvern/triplestrike.ron index 085622090a..03bf0f68b4 100644 --- a/assets/common/abilities/custom/cloudwyvern/triplestrike.ron +++ b/assets/common/abilities/custom/cloudwyvern/triplestrike.ron @@ -1,77 +1,66 @@ -ComboMelee( - stage_data: [ +ComboMelee2( + strikes: [ ( - 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, + melee_constructor: ( + kind: Slash( + damage: 20, + poise: 0, + knockback: 5, + energy_regen: 0, + ), + range: 4.5, + angle: 30.0, + ), + buildup_duration: 0.8, + 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, - ))), + recover_duration: 0.6, + movement: ( + swing: Some(Forward(2.0)), + ), + ori_modifier: 0.7, ), ( - 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, + melee_constructor: ( + kind: Slash( + damage: 16, + poise: 0, + knockback: 5, + energy_regen: 0, + ), + range: 3.5, + angle: 30.0, + ), + buildup_duration: 0.8, + 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, - ))), + recover_duration: 0.6, + movement: ( + swing: Some(Forward(2.0)), + ), + ori_modifier: 0.7, ), ( - 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, + melee_constructor: ( + kind: Slash( + damage: 26, + poise: 0, + knockback: 10, + energy_regen: 0, + ), + range: 3.5, + angle: 30.0, + ), + buildup_duration: 0.4, + 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, - ))), + recover_duration: 0.6, + movement: ( + swing: Some(Forward(1.5)), + ), + ori_modifier: 0.7, ), ], - 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, -) + energy_cost_per_strike: 0, + auto_progress: true, +) \ No newline at end of file diff --git a/assets/common/abilities/custom/cloudwyvern/windbomb.ron b/assets/common/abilities/custom/cloudwyvern/windbomb.ron deleted file mode 100644 index 544495ddf2..0000000000 --- a/assets/common/abilities/custom/cloudwyvern/windbomb.ron +++ /dev/null @@ -1,20 +0,0 @@ -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, - move_efficiency: 0.3, -) diff --git a/assets/common/abilities/custom/cloudwyvern/windshockwave.ron b/assets/common/abilities/custom/cloudwyvern/windshockwave.ron deleted file mode 100644 index d99f043161..0000000000 --- a/assets/common/abilities/custom/cloudwyvern/windshockwave.ron +++ /dev/null @@ -1,18 +0,0 @@ -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, - ori_rate: 1.0, -) diff --git a/assets/common/abilities/custom/cloudwyvern/windthrower.ron b/assets/common/abilities/custom/cloudwyvern/windthrower.ron deleted file mode 100644 index 5f37ff1a54..0000000000 --- a/assets/common/abilities/custom/cloudwyvern/windthrower.ron +++ /dev/null @@ -1,19 +0,0 @@ -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, -) diff --git a/assets/common/abilities/custom/flamewyvern/firebomb.ron b/assets/common/abilities/custom/flamewyvern/firebomb.ron index cb309e83ec..3864707904 100644 --- a/assets/common/abilities/custom/flamewyvern/firebomb.ron +++ b/assets/common/abilities/custom/flamewyvern/firebomb.ron @@ -1,20 +1,17 @@ BasicRanged( energy_cost: 0, - buildup_duration: 1.0, - recover_duration: 0.7, + buildup_duration: 0.5, + recover_duration: 1.5, projectile: Fireball( - damage: 20.0, + damage: 32.0, radius: 5.0, energy_regen: 5.0, - min_falloff: 0.5, + min_falloff: 0.1, ), projectile_body: Object(BoltFire), - /*projectile_light: Some(LightEmitter { - col: (1.0, 0.75, 0.11).into(), - ..Default::default() - }),*/ - projectile_speed: 60.0, + projectile_light: None, + projectile_speed: 100.0, num_projectiles: 1, projectile_spread: 0.0, move_efficiency: 0.3, -) +) \ No newline at end of file diff --git a/assets/common/abilities/custom/flamewyvern/fireshockwave.ron b/assets/common/abilities/custom/flamewyvern/fireshockwave.ron index 841c443ccb..bb4ad6fd3e 100644 --- a/assets/common/abilities/custom/flamewyvern/fireshockwave.ron +++ b/assets/common/abilities/custom/flamewyvern/fireshockwave.ron @@ -1,18 +1,24 @@ 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), + energy_cost: 0, + buildup_duration: 0.3, + swing_duration: 0.3, + recover_duration: 2.0, + damage: 20.0, + poise_damage: 10, + knockback: (strength: 18.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, + shockwave_speed: 15.0, + shockwave_duration: 2.0, + requires_ground: true, + move_efficiency: 0.0, + damage_kind: Crushing, specifier: Fire, ori_rate: 1.0, + damage_effect: Some(Buff(( + kind: Burning, + dur_secs: 2.0, + strength: DamageFraction(0.3), + chance: 1.0, + ))), ) diff --git a/assets/common/abilities/custom/flamewyvern/flamethrower.ron b/assets/common/abilities/custom/flamewyvern/flamethrower.ron index 50c9cec231..d5763bc613 100644 --- a/assets/common/abilities/custom/flamewyvern/flamethrower.ron +++ b/assets/common/abilities/custom/flamewyvern/flamethrower.ron @@ -1,19 +1,19 @@ BasicBeam( - buildup_duration: 0.8, - recover_duration: 0.5, - beam_duration: 0.5, - damage: 10.0, + buildup_duration: 0.3, + recover_duration: 1.5, + beam_duration: 2.0, + damage: 22.5, tick_rate: 3.0, - range: 15.0, + range: 22.0, max_angle: 22.5, damage_effect: Some(Buff(( kind: Burning, - dur_secs: 10.0, + dur_secs: 3.0, strength: DamageFraction(0.5), - chance: 0.25, + chance: 1.0, ))), - energy_regen: 0, + energy_regen: 2, energy_drain: 0, - ori_rate: 0.3, + ori_rate: 0.5, specifier: Flamethrower, ) diff --git a/assets/common/abilities/custom/flamewyvern/triplestrike.ron b/assets/common/abilities/custom/flamewyvern/triplestrike.ron index 085622090a..03bf0f68b4 100644 --- a/assets/common/abilities/custom/flamewyvern/triplestrike.ron +++ b/assets/common/abilities/custom/flamewyvern/triplestrike.ron @@ -1,77 +1,66 @@ -ComboMelee( - stage_data: [ +ComboMelee2( + strikes: [ ( - 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, + melee_constructor: ( + kind: Slash( + damage: 20, + poise: 0, + knockback: 5, + energy_regen: 0, + ), + range: 4.5, + angle: 30.0, + ), + buildup_duration: 0.8, + 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, - ))), + recover_duration: 0.6, + movement: ( + swing: Some(Forward(2.0)), + ), + ori_modifier: 0.7, ), ( - 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, + melee_constructor: ( + kind: Slash( + damage: 16, + poise: 0, + knockback: 5, + energy_regen: 0, + ), + range: 3.5, + angle: 30.0, + ), + buildup_duration: 0.8, + 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, - ))), + recover_duration: 0.6, + movement: ( + swing: Some(Forward(2.0)), + ), + ori_modifier: 0.7, ), ( - 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, + melee_constructor: ( + kind: Slash( + damage: 26, + poise: 0, + knockback: 10, + energy_regen: 0, + ), + range: 3.5, + angle: 30.0, + ), + buildup_duration: 0.4, + 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, - ))), + recover_duration: 0.6, + movement: ( + swing: Some(Forward(1.5)), + ), + ori_modifier: 0.7, ), ], - 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, -) + energy_cost_per_strike: 0, + auto_progress: true, +) \ No newline at end of file diff --git a/assets/common/abilities/custom/frostwyvern/frostbomb.ron b/assets/common/abilities/custom/frostwyvern/frostbomb.ron index 5660366118..87916a6fd1 100644 --- a/assets/common/abilities/custom/frostwyvern/frostbomb.ron +++ b/assets/common/abilities/custom/frostwyvern/frostbomb.ron @@ -1,19 +1,16 @@ BasicRanged( energy_cost: 0, - buildup_duration: 1.0, - recover_duration: 0.7, + buildup_duration: 0.5, + recover_duration: 1.5, projectile: Frostball( - damage: 20.0, + damage: 32.0, radius: 5.0, energy_regen: 5.0, - min_falloff: 0.5, + min_falloff: 0.1, ), - projectile_body: Object(BoltNature), - /*projectile_light: Some(LightEmitter { - col: (1.0, 0.75, 0.11).into(), - ..Default::default() - }),*/ - projectile_speed: 60.0, + projectile_body: Object(SpearIcicle), + projectile_light: None, + projectile_speed: 100.0, num_projectiles: 1, projectile_spread: 0.0, move_efficiency: 0.3, diff --git a/assets/common/abilities/custom/frostwyvern/frostthrower.ron b/assets/common/abilities/custom/frostwyvern/frostthrower.ron index 40a1536439..3bf5464562 100644 --- a/assets/common/abilities/custom/frostwyvern/frostthrower.ron +++ b/assets/common/abilities/custom/frostwyvern/frostthrower.ron @@ -1,19 +1,19 @@ BasicBeam( - buildup_duration: 0.8, - recover_duration: 0.5, - beam_duration: 0.5, - damage: 10.0, + buildup_duration: 0.3, + recover_duration: 1.5, + beam_duration: 2.0, + damage: 22.5, tick_rate: 3.0, - range: 15.0, + range: 22.0, max_angle: 22.5, damage_effect: Some(Buff(( - kind: Burning, - dur_secs: 10.0, - strength: DamageFraction(0.5), - chance: 0.25, + kind: Frigid, + dur_secs: 3.0, + strength: Value(0.5), + chance: 1.0, ))), - energy_regen: 0, + energy_regen: 2, energy_drain: 0, - ori_rate: 0.3, + ori_rate: 0.5, specifier: Frost, ) diff --git a/assets/common/abilities/custom/frostwyvern/iceshockwave.ron b/assets/common/abilities/custom/frostwyvern/iceshockwave.ron index 3b5a5f8433..a4c1f8162c 100644 --- a/assets/common/abilities/custom/frostwyvern/iceshockwave.ron +++ b/assets/common/abilities/custom/frostwyvern/iceshockwave.ron @@ -1,18 +1,24 @@ 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), + energy_cost: 0, + buildup_duration: 0.3, + swing_duration: 0.3, + recover_duration: 2.0, + damage: 20.0, + poise_damage: 10, + knockback: (strength: 18.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, + shockwave_speed: 15.0, + shockwave_duration: 2.0, + requires_ground: true, + move_efficiency: 0.0, + damage_kind: Crushing, + specifier: Ice, ori_rate: 1.0, + damage_effect: Some(Buff(( + kind: Frozen, + dur_secs: 2.0, + strength: Value(0.3), + chance: 1.0, + ))), ) diff --git a/assets/common/abilities/custom/frostwyvern/triplestrike.ron b/assets/common/abilities/custom/frostwyvern/triplestrike.ron index 085622090a..03bf0f68b4 100644 --- a/assets/common/abilities/custom/frostwyvern/triplestrike.ron +++ b/assets/common/abilities/custom/frostwyvern/triplestrike.ron @@ -1,77 +1,66 @@ -ComboMelee( - stage_data: [ +ComboMelee2( + strikes: [ ( - 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, + melee_constructor: ( + kind: Slash( + damage: 20, + poise: 0, + knockback: 5, + energy_regen: 0, + ), + range: 4.5, + angle: 30.0, + ), + buildup_duration: 0.8, + 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, - ))), + recover_duration: 0.6, + movement: ( + swing: Some(Forward(2.0)), + ), + ori_modifier: 0.7, ), ( - 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, + melee_constructor: ( + kind: Slash( + damage: 16, + poise: 0, + knockback: 5, + energy_regen: 0, + ), + range: 3.5, + angle: 30.0, + ), + buildup_duration: 0.8, + 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, - ))), + recover_duration: 0.6, + movement: ( + swing: Some(Forward(2.0)), + ), + ori_modifier: 0.7, ), ( - 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, + melee_constructor: ( + kind: Slash( + damage: 26, + poise: 0, + knockback: 10, + energy_regen: 0, + ), + range: 3.5, + angle: 30.0, + ), + buildup_duration: 0.4, + 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, - ))), + recover_duration: 0.6, + movement: ( + swing: Some(Forward(1.5)), + ), + ori_modifier: 0.7, ), ], - 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, -) + energy_cost_per_strike: 0, + auto_progress: true, +) \ No newline at end of file diff --git a/assets/common/abilities/custom/seawyvern/bubblethrower.ron b/assets/common/abilities/custom/seawyvern/bubblethrower.ron deleted file mode 100644 index 5f37ff1a54..0000000000 --- a/assets/common/abilities/custom/seawyvern/bubblethrower.ron +++ /dev/null @@ -1,19 +0,0 @@ -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, -) diff --git a/assets/common/abilities/custom/seawyvern/inkbomb.ron b/assets/common/abilities/custom/seawyvern/inkbomb.ron new file mode 100644 index 0000000000..a557d7d7ab --- /dev/null +++ b/assets/common/abilities/custom/seawyvern/inkbomb.ron @@ -0,0 +1,17 @@ +BasicRanged( + energy_cost: 0, + buildup_duration: 0.5, + recover_duration: 1.5, + projectile: InkBomb( + damage: 32.0, + radius: 5.0, + energy_regen: 5.0, + min_falloff: 0.1, + ), + projectile_body: Object(SpitPoison), + projectile_light: None, + projectile_speed: 100.0, + num_projectiles: 1, + projectile_spread: 0.0, + move_efficiency: 0.3, +) \ No newline at end of file diff --git a/assets/common/abilities/custom/seawyvern/inkshockwave.ron b/assets/common/abilities/custom/seawyvern/inkshockwave.ron new file mode 100644 index 0000000000..903c5e90c4 --- /dev/null +++ b/assets/common/abilities/custom/seawyvern/inkshockwave.ron @@ -0,0 +1,25 @@ +Shockwave( + energy_cost: 0, + buildup_duration: 0.3, + swing_duration: 0.3, + recover_duration: 2.0, + damage: 20.0, + poise_damage: 10, + knockback: (strength: 18.0, direction: Away), + shockwave_angle: 360.0, + shockwave_vertical_angle: 90.0, + shockwave_speed: 15.0, + shockwave_duration: 2.0, + requires_ground: true, + move_efficiency: 0.0, + damage_kind: Crushing, + specifier: Ink, + ori_rate: 1.0, + damage_effect: Some(Buff(( + kind: Wet, + dur_secs: 8.0, + strength: Value(0.3), + chance: 1.0, + ))), +) + diff --git a/assets/common/abilities/custom/seawyvern/inkthrower.ron b/assets/common/abilities/custom/seawyvern/inkthrower.ron new file mode 100644 index 0000000000..5cae603d7a --- /dev/null +++ b/assets/common/abilities/custom/seawyvern/inkthrower.ron @@ -0,0 +1,19 @@ +BasicBeam( + buildup_duration: 0.3, + recover_duration: 1.5, + beam_duration: 2.0, + damage: 22.5, + tick_rate: 3.0, + range: 22.0, + max_angle: 22.5, + damage_effect: Some(Buff(( + kind: Wet, + dur_secs: 8.0, + strength: Value(1.5), + chance: 1.0, + ))), + energy_regen: 2, + energy_drain: 0, + ori_rate: 0.5, + specifier: Ink, +) diff --git a/assets/common/abilities/custom/seawyvern/seabomb.ron b/assets/common/abilities/custom/seawyvern/seabomb.ron deleted file mode 100644 index 9bfb0a07ad..0000000000 --- a/assets/common/abilities/custom/seawyvern/seabomb.ron +++ /dev/null @@ -1,20 +0,0 @@ -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, - move_efficiency: 0.3, -) diff --git a/assets/common/abilities/custom/seawyvern/seashockwave.ron b/assets/common/abilities/custom/seawyvern/seashockwave.ron deleted file mode 100644 index d99f043161..0000000000 --- a/assets/common/abilities/custom/seawyvern/seashockwave.ron +++ /dev/null @@ -1,18 +0,0 @@ -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, - ori_rate: 1.0, -) diff --git a/assets/common/abilities/custom/seawyvern/triplestrike.ron b/assets/common/abilities/custom/seawyvern/triplestrike.ron index 085622090a..03bf0f68b4 100644 --- a/assets/common/abilities/custom/seawyvern/triplestrike.ron +++ b/assets/common/abilities/custom/seawyvern/triplestrike.ron @@ -1,77 +1,66 @@ -ComboMelee( - stage_data: [ +ComboMelee2( + strikes: [ ( - 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, + melee_constructor: ( + kind: Slash( + damage: 20, + poise: 0, + knockback: 5, + energy_regen: 0, + ), + range: 4.5, + angle: 30.0, + ), + buildup_duration: 0.8, + 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, - ))), + recover_duration: 0.6, + movement: ( + swing: Some(Forward(2.0)), + ), + ori_modifier: 0.7, ), ( - 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, + melee_constructor: ( + kind: Slash( + damage: 16, + poise: 0, + knockback: 5, + energy_regen: 0, + ), + range: 3.5, + angle: 30.0, + ), + buildup_duration: 0.8, + 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, - ))), + recover_duration: 0.6, + movement: ( + swing: Some(Forward(2.0)), + ), + ori_modifier: 0.7, ), ( - 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, + melee_constructor: ( + kind: Slash( + damage: 26, + poise: 0, + knockback: 10, + energy_regen: 0, + ), + range: 3.5, + angle: 30.0, + ), + buildup_duration: 0.4, + 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, - ))), + recover_duration: 0.6, + movement: ( + swing: Some(Forward(1.5)), + ), + ori_modifier: 0.7, ), ], - 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, -) + energy_cost_per_strike: 0, + auto_progress: true, +) \ No newline at end of file diff --git a/assets/common/abilities/custom/wealdwyvern/firebomb.ron b/assets/common/abilities/custom/wealdwyvern/firebomb.ron deleted file mode 100644 index cb309e83ec..0000000000 --- a/assets/common/abilities/custom/wealdwyvern/firebomb.ron +++ /dev/null @@ -1,20 +0,0 @@ -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, - move_efficiency: 0.3, -) diff --git a/assets/common/abilities/custom/wealdwyvern/fireshockwave.ron b/assets/common/abilities/custom/wealdwyvern/fireshockwave.ron deleted file mode 100644 index 841c443ccb..0000000000 --- a/assets/common/abilities/custom/wealdwyvern/fireshockwave.ron +++ /dev/null @@ -1,18 +0,0 @@ -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, - ori_rate: 1.0, -) diff --git a/assets/common/abilities/custom/wealdwyvern/flamethrower.ron b/assets/common/abilities/custom/wealdwyvern/flamethrower.ron deleted file mode 100644 index 50c9cec231..0000000000 --- a/assets/common/abilities/custom/wealdwyvern/flamethrower.ron +++ /dev/null @@ -1,19 +0,0 @@ -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, -) diff --git a/assets/common/abilities/custom/wealdwyvern/poisonbomb.ron b/assets/common/abilities/custom/wealdwyvern/poisonbomb.ron new file mode 100644 index 0000000000..40161e2bde --- /dev/null +++ b/assets/common/abilities/custom/wealdwyvern/poisonbomb.ron @@ -0,0 +1,17 @@ +BasicRanged( + energy_cost: 0, + buildup_duration: 0.5, + recover_duration: 1.5, + projectile: Poisonball( + damage: 32.0, + radius: 5.0, + energy_regen: 5.0, + min_falloff: 0.1, + ), + projectile_body: Object(SpitPoison), + projectile_light: None, + projectile_speed: 100.0, + num_projectiles: 1, + projectile_spread: 0.0, + move_efficiency: 0.3, +) diff --git a/assets/common/abilities/custom/wealdwyvern/poisonshockwave.ron b/assets/common/abilities/custom/wealdwyvern/poisonshockwave.ron new file mode 100644 index 0000000000..26a148df16 --- /dev/null +++ b/assets/common/abilities/custom/wealdwyvern/poisonshockwave.ron @@ -0,0 +1,25 @@ +Shockwave( + energy_cost: 0, + buildup_duration: 0.3, + swing_duration: 0.3, + recover_duration: 2.0, + damage: 20.0, + poise_damage: 10, + knockback: (strength: 18.0, direction: Away), + shockwave_angle: 360.0, + shockwave_vertical_angle: 90.0, + shockwave_speed: 15.0, + shockwave_duration: 2.0, + requires_ground: true, + move_efficiency: 0.0, + damage_kind: Crushing, + specifier: Poison, + ori_rate: 1.0, + damage_effect: Some(Buff(( + kind: Poisoned, + dur_secs: 8.0, + strength: DamageFraction(0.3), + chance: 1.0, + ))), +) + diff --git a/assets/common/abilities/custom/wealdwyvern/poisonthrower.ron b/assets/common/abilities/custom/wealdwyvern/poisonthrower.ron new file mode 100644 index 0000000000..e9061c99ca --- /dev/null +++ b/assets/common/abilities/custom/wealdwyvern/poisonthrower.ron @@ -0,0 +1,19 @@ +BasicBeam( + buildup_duration: 0.3, + recover_duration: 1.5, + beam_duration: 2.0, + damage: 22.5, + tick_rate: 3.0, + range: 22.0, + max_angle: 22.5, + damage_effect: Some(Buff(( + kind: Poisoned, + dur_secs: 3.0, + strength: DamageFraction(0.5), + chance: 1.0, + ))), + energy_regen: 2, + energy_drain: 0, + ori_rate: 0.5, + specifier: Poison, +) diff --git a/assets/common/abilities/custom/wealdwyvern/triplestrike.ron b/assets/common/abilities/custom/wealdwyvern/triplestrike.ron index 085622090a..03bf0f68b4 100644 --- a/assets/common/abilities/custom/wealdwyvern/triplestrike.ron +++ b/assets/common/abilities/custom/wealdwyvern/triplestrike.ron @@ -1,77 +1,66 @@ -ComboMelee( - stage_data: [ +ComboMelee2( + strikes: [ ( - 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, + melee_constructor: ( + kind: Slash( + damage: 20, + poise: 0, + knockback: 5, + energy_regen: 0, + ), + range: 4.5, + angle: 30.0, + ), + buildup_duration: 0.8, + 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, - ))), + recover_duration: 0.6, + movement: ( + swing: Some(Forward(2.0)), + ), + ori_modifier: 0.7, ), ( - 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, + melee_constructor: ( + kind: Slash( + damage: 16, + poise: 0, + knockback: 5, + energy_regen: 0, + ), + range: 3.5, + angle: 30.0, + ), + buildup_duration: 0.8, + 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, - ))), + recover_duration: 0.6, + movement: ( + swing: Some(Forward(2.0)), + ), + ori_modifier: 0.7, ), ( - 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, + melee_constructor: ( + kind: Slash( + damage: 26, + poise: 0, + knockback: 10, + energy_regen: 0, + ), + range: 3.5, + angle: 30.0, + ), + buildup_duration: 0.4, + 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, - ))), + recover_duration: 0.6, + movement: ( + swing: Some(Forward(1.5)), + ), + ori_modifier: 0.7, ), ], - 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, -) + energy_cost_per_strike: 0, + auto_progress: true, +) \ No newline at end of file diff --git a/assets/common/entity/wild/aggressive/cloudwyvern.ron b/assets/common/entity/wild/aggressive/cloudwyvern.ron index 3126f8e18f..9448cf04e7 100644 --- a/assets/common/entity/wild/aggressive/cloudwyvern.ron +++ b/assets/common/entity/wild/aggressive/cloudwyvern.ron @@ -3,7 +3,7 @@ name: Automatic, body: RandomWith("wyvern_cloud"), alignment: Alignment(Enemy), - loot: LootTable("common.loot_tables.creature.bird_large.wyvern"), + loot: LootTable("common.loot_tables.creature.bird_large.cloudwyvern"), inventory: ( loadout: FromBody, ), diff --git a/assets/common/entity/wild/aggressive/flamewyvern.ron b/assets/common/entity/wild/aggressive/flamewyvern.ron index 77502fdb89..d150b067b2 100644 --- a/assets/common/entity/wild/aggressive/flamewyvern.ron +++ b/assets/common/entity/wild/aggressive/flamewyvern.ron @@ -3,7 +3,7 @@ name: Automatic, body: RandomWith("wyvern_flame"), alignment: Alignment(Enemy), - loot: LootTable("common.loot_tables.creature.bird_large.wyvern"), + loot: LootTable("common.loot_tables.creature.bird_large.flamewyvern"), inventory: ( loadout: FromBody, ), diff --git a/assets/common/entity/wild/aggressive/frostwyvern.ron b/assets/common/entity/wild/aggressive/frostwyvern.ron index 628fae589c..66d556240b 100644 --- a/assets/common/entity/wild/aggressive/frostwyvern.ron +++ b/assets/common/entity/wild/aggressive/frostwyvern.ron @@ -3,7 +3,7 @@ name: Automatic, body: RandomWith("wyvern_frost"), alignment: Alignment(Enemy), - loot: LootTable("common.loot_tables.creature.bird_large.wyvern"), + loot: LootTable("common.loot_tables.creature.bird_large.frostwyvern"), inventory: ( loadout: FromBody, ), diff --git a/assets/common/entity/wild/aggressive/seawyvern.ron b/assets/common/entity/wild/aggressive/seawyvern.ron index d1a07640c4..d9ad3ede28 100644 --- a/assets/common/entity/wild/aggressive/seawyvern.ron +++ b/assets/common/entity/wild/aggressive/seawyvern.ron @@ -3,7 +3,7 @@ name: Automatic, body: RandomWith("wyvern_sea"), alignment: Alignment(Enemy), - loot: LootTable("common.loot_tables.creature.bird_large.wyvern"), + loot: LootTable("common.loot_tables.creature.bird_large.seawyvern"), inventory: ( loadout: FromBody, ), diff --git a/assets/common/entity/wild/aggressive/wealdwyvern.ron b/assets/common/entity/wild/aggressive/wealdwyvern.ron index 0c81bc8d61..6e9997bb9c 100644 --- a/assets/common/entity/wild/aggressive/wealdwyvern.ron +++ b/assets/common/entity/wild/aggressive/wealdwyvern.ron @@ -3,7 +3,7 @@ name: Automatic, body: RandomWith("wyvern_weald"), alignment: Alignment(Enemy), - loot: LootTable("common.loot_tables.creature.bird_large.wyvern"), + loot: LootTable("common.loot_tables.creature.bird_large.wealdwyvern"), inventory: ( loadout: FromBody, ), diff --git a/assets/common/loot_tables/creature/bird_large/cloudwyvern.ron b/assets/common/loot_tables/creature/bird_large/cloudwyvern.ron new file mode 100644 index 0000000000..665c53c54b --- /dev/null +++ b/assets/common/loot_tables/creature/bird_large/cloudwyvern.ron @@ -0,0 +1,7 @@ +[ + (1.0, MultiDrop(Item("common.items.mineral.gem.topaz"), 1, 3)), + (5.0, MultiDrop(Item("common.items.mineral.gem.amethyst"), 1, 3)), + (5.0, MultiDrop(Item("common.items.crafting_ing.animal_misc.elegant_crest"), 1, 3)), + (5.0, MultiDrop(Item("common.items.crafting_ing.animal_misc.claw"), 1, 3)), + (5.0, MultiDrop(Item("common.items.crafting_ing.hide.dragon_scale"), 2, 6)), +] \ No newline at end of file diff --git a/assets/common/loot_tables/creature/bird_large/flamewyvern.ron b/assets/common/loot_tables/creature/bird_large/flamewyvern.ron new file mode 100644 index 0000000000..8447f02b50 --- /dev/null +++ b/assets/common/loot_tables/creature/bird_large/flamewyvern.ron @@ -0,0 +1,7 @@ +[ + (1.0, MultiDrop(Item("common.items.mineral.gem.topaz"), 1, 3)), + (5.0, MultiDrop(Item("common.items.mineral.gem.ruby"), 1, 3)), + (5.0, MultiDrop(Item("common.items.crafting_ing.animal_misc.large_horn"), 1, 3)), + (5.0, MultiDrop(Item("common.items.crafting_ing.animal_misc.sharp_fang"), 1, 3)), + (5.0, MultiDrop(Item("common.items.crafting_ing.hide.dragon_scale"), 2, 6)), +] \ No newline at end of file diff --git a/assets/common/loot_tables/creature/bird_large/frostwyvern.ron b/assets/common/loot_tables/creature/bird_large/frostwyvern.ron new file mode 100644 index 0000000000..ebd59ef11b --- /dev/null +++ b/assets/common/loot_tables/creature/bird_large/frostwyvern.ron @@ -0,0 +1,7 @@ +[ + (1.0, MultiDrop(Item("common.items.mineral.gem.topaz"), 1, 3)), + (5.0, MultiDrop(Item("common.items.mineral.gem.diamond"), 1, 3)), + (5.0, MultiDrop(Item("common.items.crafting_ing.animal_misc.large_horn"), 1, 3)), + (5.0, MultiDrop(Item("common.items.crafting_ing.animal_misc.claw"), 1, 3)), + (5.0, MultiDrop(Item("common.items.crafting_ing.hide.dragon_scale"), 2, 6)), +] \ No newline at end of file diff --git a/assets/common/loot_tables/creature/bird_large/seawyvern.ron b/assets/common/loot_tables/creature/bird_large/seawyvern.ron new file mode 100644 index 0000000000..b1b6c1297e --- /dev/null +++ b/assets/common/loot_tables/creature/bird_large/seawyvern.ron @@ -0,0 +1,7 @@ +[ + (1.0, MultiDrop(Item("common.items.mineral.gem.topaz"), 1, 3)), + (5.0, MultiDrop(Item("common.items.mineral.gem.sapphire"), 1, 3)), + (5.0, MultiDrop(Item("common.items.crafting_ing.animal_misc.sharp_fang"), 1, 3)), + (5.0, MultiDrop(Item("common.items.crafting_ing.animal_misc.claw"), 1, 3)), + (5.0, MultiDrop(Item("common.items.crafting_ing.hide.dragon_scale"), 2, 6)), +] \ No newline at end of file diff --git a/assets/common/loot_tables/creature/bird_large/wealdwyvern.ron b/assets/common/loot_tables/creature/bird_large/wealdwyvern.ron new file mode 100644 index 0000000000..6d0866c5e9 --- /dev/null +++ b/assets/common/loot_tables/creature/bird_large/wealdwyvern.ron @@ -0,0 +1,7 @@ +[ + (1.0, MultiDrop(Item("common.items.mineral.gem.topaz"), 1, 3)), + (5.0, MultiDrop(Item("common.items.mineral.gem.emerald"), 1, 3)), + (5.0, MultiDrop(Item("common.items.crafting_ing.animal_misc.elegant_crest"), 1, 3)), + (1.0, MultiDrop(Item("common.items.crafting_ing.animal_misc.large_horn"), 1, 3)), + (5.0, MultiDrop(Item("common.items.crafting_ing.hide.dragon_scale"), 2, 6)), +] \ No newline at end of file diff --git a/assets/common/loot_tables/creature/bird_large/wyvern.ron b/assets/common/loot_tables/creature/bird_large/wyvern.ron deleted file mode 100644 index 636310cc1d..0000000000 --- a/assets/common/loot_tables/creature/bird_large/wyvern.ron +++ /dev/null @@ -1,6 +0,0 @@ -[ - (1.0, MultiDrop(Item("common.items.food.meat.bird_large_raw"), 1, 2)), - (1.0, MultiDrop(Item("common.items.food.meat.beast_large_raw"), 2, 2)), - (2.0, MultiDrop(Item("common.items.crafting_ing.animal_misc.elegant_crest"), 1, 3)), - (1.0, MultiDrop(Item("common.items.crafting_ing.hide.scales"), 2, 6)), -] \ No newline at end of file diff --git a/assets/common/loot_tables/dungeon/dwarven_quarry/t4-mats.ron b/assets/common/loot_tables/dungeon/dwarven_quarry/t4-mats.ron index 4f4ffd0c48..c0dcf37d93 100644 --- a/assets/common/loot_tables/dungeon/dwarven_quarry/t4-mats.ron +++ b/assets/common/loot_tables/dungeon/dwarven_quarry/t4-mats.ron @@ -1,6 +1,5 @@ [ (1.0, MultiDrop(Item("common.items.crafting_ing.cloth.sunsilk"), 1, 3)), - (1.0, MultiDrop(Item("common.items.crafting_ing.hide.dragon_scale"), 3, 8)), (1.0, MultiDrop(Item("common.items.mineral.ingot.orichalcum"), 1, 3)), (1.0, MultiDrop(Item("common.items.log.eldwood"), 2, 6)), ] \ No newline at end of file diff --git a/assets/common/loot_tables/dungeon/tier-4/boss.ron b/assets/common/loot_tables/dungeon/tier-4/boss.ron index ad862bc127..8418293685 100644 --- a/assets/common/loot_tables/dungeon/tier-4/boss.ron +++ b/assets/common/loot_tables/dungeon/tier-4/boss.ron @@ -8,6 +8,5 @@ (1.0, LootTable("common.loot_tables.weapons.legendary_melee")), // Crafting material // Allow for DS and Eldwood to drop till entity droppers are implemented - (1.0, MultiDrop(Item("common.items.crafting_ing.hide.dragon_scale"), 3, 8)), (1.0, MultiDrop(Item("common.items.log.eldwood"), 2, 6)), ] diff --git a/assets/common/loot_tables/dungeon/tier-5/boss.ron b/assets/common/loot_tables/dungeon/tier-5/boss.ron index 0e8ae80e69..66699c60bb 100644 --- a/assets/common/loot_tables/dungeon/tier-5/boss.ron +++ b/assets/common/loot_tables/dungeon/tier-5/boss.ron @@ -13,6 +13,5 @@ // Crafting material // Allow for DS and Eldwood to drop till entity droppers are implemented (1.0, Item("common.items.crafting_ing.mindflayer_bag_damaged")), - (1.0, MultiDrop(Item("common.items.crafting_ing.hide.dragon_scale"), 3, 8)), (1.0, MultiDrop(Item("common.items.log.eldwood"), 2, 6)), ] diff --git a/assets/voxygen/audio/sfx.ron b/assets/voxygen/audio/sfx.ron index ccc9aa132d..043c7c638f 100644 --- a/assets/voxygen/audio/sfx.ron +++ b/assets/voxygen/audio/sfx.ron @@ -1430,12 +1430,18 @@ threshold: 1.25, subtitle: "subtitle-attack-laser_beam", ), - Woosh: ( + Whoosh: ( files: [ - "voxygen.audio.sfx.abilities.woosh", + "voxygen.audio.sfx.abilities.whoosh", ], threshold: 0.4, ), + Swoosh: ( + files: [ + "voxygen.audio.sfx.abilities.swoosh", + ], + threshold: 1.3, + ), CyclopsCharge: ( files: [ "voxygen.audio.sfx.abilities.cyclops_charge", @@ -1518,6 +1524,13 @@ threshold: 1.0, subtitle: "subtitle-utterance-bird-angry", ), + Utterance(Angry, Wyvern): ( + files: [ + "voxygen.audio.sfx.utterance.wyvern_angry", + ], + threshold: 1.3, + subtitle: "subtitle-utterance-wyvern-angry", + ), Utterance(Angry, Adlet): ( files: [ "voxygen.audio.sfx.utterance.adlet_angry1", @@ -1719,6 +1732,13 @@ threshold: 1.0, subtitle: "subtitle-utterance-asp-hurt", ), + Utterance(Hurt, Wyvern): ( + files: [ + "voxygen.audio.sfx.utterance.wyvern_hurt", + ], + threshold: 1.2, + subtitle: "subtitle-utterance-wyvern-hurt", + ), Utterance(Angry, Wendigo): ( files: [ "voxygen.audio.sfx.utterance.wendigo_angry1", diff --git a/assets/voxygen/audio/sfx/abilities/swoosh.ogg b/assets/voxygen/audio/sfx/abilities/swoosh.ogg new file mode 100644 index 0000000000..c28fb7afd3 --- /dev/null +++ b/assets/voxygen/audio/sfx/abilities/swoosh.ogg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f9c05a669c27036748691d1bea2dc05e6f97bf0702c2151518e9e05c4ae98b7b +size 31263 diff --git a/assets/voxygen/audio/sfx/abilities/woosh.ogg b/assets/voxygen/audio/sfx/abilities/whoosh.ogg similarity index 100% rename from assets/voxygen/audio/sfx/abilities/woosh.ogg rename to assets/voxygen/audio/sfx/abilities/whoosh.ogg diff --git a/assets/voxygen/audio/sfx/utterance/wyvern_angry.ogg b/assets/voxygen/audio/sfx/utterance/wyvern_angry.ogg new file mode 100644 index 0000000000..4c90c9f4c4 --- /dev/null +++ b/assets/voxygen/audio/sfx/utterance/wyvern_angry.ogg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5f66952709c7f9c91c16519f85bf28fac68ddc3a14422a6450e3b25de29309b9 +size 18645 diff --git a/assets/voxygen/audio/sfx/utterance/wyvern_hurt.ogg b/assets/voxygen/audio/sfx/utterance/wyvern_hurt.ogg new file mode 100644 index 0000000000..9f9f331f61 --- /dev/null +++ b/assets/voxygen/audio/sfx/utterance/wyvern_hurt.ogg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b4689297e6c4e40186b49f5d1ea38340bda387e91b98e67d1e45ba4bcafe4faa +size 13063 diff --git a/assets/voxygen/i18n/en/hud/subtitles.ftl b/assets/voxygen/i18n/en/hud/subtitles.ftl index dbbeab8759..a48cb4031e 100644 --- a/assets/voxygen/i18n/en/hud/subtitles.ftl +++ b/assets/voxygen/i18n/en/hud/subtitles.ftl @@ -148,4 +148,6 @@ subtitle-utterance-asp-hurt = Asp hurting subtitle-utterance-wendigo-angry = Wendigo screaming subtitle-utterance-wendigo-calm = Wendigo mumbling subtitle-utterance-wolf-angry = Wolf growling -subtitle-utterance-wolf-hurt = Wolf whining \ No newline at end of file +subtitle-utterance-wolf-hurt = Wolf whining +subtitle-utterance-wyvern-angry = Wyvern roaring +subtitle-utterance-wyvern-hurt = Wyvern hurting \ No newline at end of file diff --git a/assets/voxygen/shaders/particle-vert.glsl b/assets/voxygen/shaders/particle-vert.glsl index 370945eca2..6352fde4b9 100644 --- a/assets/voxygen/shaders/particle-vert.glsl +++ b/assets/voxygen/shaders/particle-vert.glsl @@ -82,6 +82,7 @@ const int POTION_SICKNESS = 41; const int GIGA_SNOW = 42; const int CYCLOPS_CHARGE = 43; const int PORTAL_FIZZ = 45; +const int INK = 46; // meters per second squared (acceleration) const float earth_gravity = 9.807; @@ -691,6 +692,17 @@ void main() { spin_in_axis(vec3(rand6, rand7, rand8), rand9 * 3 + lifetime * 5) ); break; + case INK: + f_reflect = 0.0; // Magic water doesn't reflect light, it emits it + float black_color = 0.3 + 0.2 * rand3 + 0.3 * max(floor(rand4 + 0.3), 0.0); + float ink_size = 8.0 * (1 - slow_start(0.1)) * slow_end(0.15); + attr = Attr( + (inst_dir * slow_end(1.5)) + vec3(rand0, rand1, rand2) * (percent() + 2) * 0.1, + vec3(ink_size), + vec4(0.5 * black_color, 0.75 * black_color, black_color, 1), + spin_in_axis(vec3(rand6, rand7, rand8), percent() * 10 + 3 * rand9) + ); + break; default: attr = Attr( linear_motion( diff --git a/assets/voxygen/voxel/object_manifest.ron b/assets/voxygen/voxel/object_manifest.ron index 0b13403e8d..6b220d517d 100644 --- a/assets/voxygen/voxel/object_manifest.ron +++ b/assets/voxygen/voxel/object_manifest.ron @@ -939,6 +939,26 @@ central: ("armor.empty"), ) ), + LightningBolt: ( + bone0: ( + offset: (-4.5, -80.0, -3.0), + central: ("weapon.projectile.lightning_bolt"), + ), + bone1: ( + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), + ) + ), + SpearIcicle: ( + bone0: ( + offset: (-2.5, -30.0, -2.5), + central: ("weapon.projectile.icicle-spear"), + ), + bone1: ( + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), + ) + ), AdletSpear: ( bone0: ( offset: (5.0, -22.0, -2.0), diff --git a/assets/voxygen/voxel/weapon/projectile/icicle-spear.vox b/assets/voxygen/voxel/weapon/projectile/icicle-spear.vox new file mode 100644 index 0000000000..b39c4fc4bd --- /dev/null +++ b/assets/voxygen/voxel/weapon/projectile/icicle-spear.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8137c3873125651d65b0648f9444c8efa86b53cadb349ece08668a7dc56832f9 +size 1924 diff --git a/assets/voxygen/voxel/weapon/projectile/lightning_bolt.vox b/assets/voxygen/voxel/weapon/projectile/lightning_bolt.vox new file mode 100644 index 0000000000..b5ffd3e8d7 --- /dev/null +++ b/assets/voxygen/voxel/weapon/projectile/lightning_bolt.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b773a91b0f2a23f38eb51f02b09472ad31f44418c6f4617db8c28da41b58a318 +size 1528 diff --git a/common/src/comp/agent.rs b/common/src/comp/agent.rs index 9da6d71267..5643ba06fd 100644 --- a/common/src/comp/agent.rs +++ b/common/src/comp/agent.rs @@ -354,7 +354,7 @@ impl<'a> From<&'a Body> for Psyche { bird_medium::Species::Puffin => 0.8, bird_medium::Species::Toucan => 0.4, }, - Body::BirdLarge(_) => 0.1, + Body::BirdLarge(_) => 0.0, Body::FishSmall(_) => 1.0, Body::FishMedium(_) => 0.75, Body::BipedLarge(_) => 0.0, @@ -380,7 +380,10 @@ impl<'a> From<&'a Body> for Psyche { arthropod::Species::Emberfly => 0.1, }, }, - sight_dist: 40.0, + sight_dist: match body { + Body::BirdLarge(_) => 80.0, + _ => 40.0, + }, listen_dist: 30.0, aggro_dist: match body { Body::Humanoid(_) => Some(20.0), diff --git a/common/src/comp/beam.rs b/common/src/comp/beam.rs index e080b8f33d..701a4b9c84 100644 --- a/common/src/comp/beam.rs +++ b/common/src/comp/beam.rs @@ -55,4 +55,7 @@ pub enum FrontendSpecifier { Steam, Frost, WebStrand, + Poison, + Ink, + Lightning, } diff --git a/common/src/comp/body/object.rs b/common/src/comp/body/object.rs index 404b35d9bc..44735011e1 100644 --- a/common/src/comp/body/object.rs +++ b/common/src/comp/body/object.rs @@ -108,6 +108,8 @@ make_case_elim!( AdletTrap = 93, Flamethrower = 94, Mine = 95, + LightningBolt = 96, + SpearIcicle = 97, } ); @@ -118,7 +120,7 @@ impl Body { } } -pub const ALL_OBJECTS: [Body; 96] = [ +pub const ALL_OBJECTS: [Body; 98] = [ Body::Arrow, Body::Bomb, Body::Scarecrow, @@ -215,6 +217,8 @@ pub const ALL_OBJECTS: [Body; 96] = [ Body::AdletTrap, Body::Flamethrower, Body::Mine, + Body::LightningBolt, + Body::SpearIcicle, ]; impl From
for super::Body { @@ -320,6 +324,8 @@ impl Body { Body::AdletTrap => "adlet_trap", Body::Flamethrower => "flamethrower", Body::Mine => "mine", + Body::LightningBolt => "lightning_bolt", + Body::SpearIcicle => "spear_icicle", } } @@ -372,11 +378,8 @@ impl Body { Body::BedBlue => 50.0, Body::Bedroll => 3.0, Body::Bench => 100.0, - Body::BoltFire - | Body::BoltFireBig - | Body::BoltNature - | Body::BoltIcicle - | Body::SpitPoison => 1.0, + Body::BoltFire | Body::BoltFireBig | Body::BoltNature | Body::BoltIcicle => 1.0, + Body::SpitPoison => 100.0, Body::Bomb | Body::DagonBomb => { 0.5 * IRON_DENSITY * std::f32::consts::PI / 6.0 * self.dimensions().x.powi(3) }, @@ -446,6 +449,7 @@ impl Body { Body::AdletSpear => 1.5, Body::AdletTrap => 10.0, Body::Mine => 100.0, + Body::LightningBolt | Body::SpearIcicle => 20000.0, }; Mass(m) @@ -477,6 +481,7 @@ impl Body { Body::IceBomb => Vec3::broadcast(2.5), Body::LaserBeam => Vec3::new(8.0, 8.0, 8.0), Body::Mine => Vec3::new(0.8, 0.8, 0.5), + Body::LightningBolt | Body::SpearIcicle => Vec3::new(1.0, 1.0, 1.0), // FIXME: this *must* be exhaustive match _ => Vec3::broadcast(0.5), } diff --git a/common/src/comp/projectile.rs b/common/src/comp/projectile.rs index 016c7bc42f..c77843b8c5 100644 --- a/common/src/comp/projectile.rs +++ b/common/src/comp/projectile.rs @@ -91,12 +91,7 @@ pub enum ProjectileConstructor { knockback: f32, min_falloff: f32, }, - SeaBomb { - damage: f32, - radius: f32, - min_falloff: f32, - }, - WindBomb { + InkBomb { damage: f32, radius: f32, min_falloff: f32, @@ -527,7 +522,7 @@ impl ProjectileConstructor { is_point: true, } }, - SeaBomb { + InkBomb { damage, radius, min_falloff, @@ -541,12 +536,27 @@ impl ProjectileConstructor { Some(GroupTarget::OutOfGroup), instance, ); + let buff = AttackEffect::new( + Some(GroupTarget::OutOfGroup), + CombatEffect::Buff(CombatBuff { + kind: BuffKind::Wet, + dur_secs: 8.0, + strength: CombatBuffStrength::Value(0.5), + chance: 1.0, + }) + .adjusted_by_stats(tool_stats), + ) + .with_requirement(CombatRequirement::AnyDamage); let attack = Attack::default() .with_damage(damage) .with_crit(crit_chance, crit_mult) + .with_effect(buff) .with_combo_increment(); let explosion = Explosion { - effects: vec![RadiusEffect::Attack(attack)], + effects: vec![ + RadiusEffect::Attack(attack), + RadiusEffect::TerrainDestruction(18.0, Rgb::new(4.0, 7.0, 32.0)), + ], radius, reagent: Some(Reagent::Blue), min_falloff, @@ -561,40 +571,6 @@ impl ProjectileConstructor { 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, @@ -982,15 +958,7 @@ impl ProjectileConstructor { *damage *= power; *radius *= range; }, - SeaBomb { - ref mut damage, - ref mut radius, - .. - } => { - *damage *= power; - *radius *= range; - }, - WindBomb { + InkBomb { ref mut damage, ref mut radius, .. @@ -1068,8 +1036,7 @@ impl ProjectileConstructor { Snowball { .. } => true, ExplodingPumpkin { .. } => true, DagonBomb { .. } => true, - SeaBomb { .. } => true, - WindBomb { .. } => true, + InkBomb { .. } => true, IceBomb { .. } => true, LaserBeam { .. } => true, Trap { .. } => false, diff --git a/common/src/comp/shockwave.rs b/common/src/comp/shockwave.rs index 3d6fecce76..9b5bb0d228 100644 --- a/common/src/comp/shockwave.rs +++ b/common/src/comp/shockwave.rs @@ -49,6 +49,10 @@ pub enum FrontendSpecifier { Ground, Fire, Water, + Ice, IceSpikes, Steam, + Poison, + Ink, + Lightning, } diff --git a/common/src/outcome.rs b/common/src/outcome.rs index ff2f82f84c..e7762bd955 100644 --- a/common/src/outcome.rs +++ b/common/src/outcome.rs @@ -128,7 +128,10 @@ pub enum Outcome { FailedSpriteUnlock { pos: Vec3