Merge branch veloren:master into jcoxeye/price-entries

This commit is contained in:
JCoxeye 2024-01-11 14:21:23 +00:00
commit be951e747c
167 changed files with 3661 additions and 3386 deletions

View File

@ -40,6 +40,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Added hit_timing to BasicMelee abilities - Added hit_timing to BasicMelee abilities
- A tavern building where npcs go to relax. - A tavern building where npcs go to relax.
- Toggle for walking instead of running (Default: `I`). - Toggle for walking instead of running (Default: `I`).
- Added day duration slider configuration on map creation UI.
- Potion of Agility
### Changed ### Changed
@ -73,6 +75,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Fixed offset of items carried on backs when wearing cloaks and backpacks - Fixed offset of items carried on backs when wearing cloaks and backpacks
- Linearize light colors on the CPU rather than in shaders on the GPU - Linearize light colors on the CPU rather than in shaders on the GPU
- You can no longer stack self buffs - You can no longer stack self buffs
- Renamed "Burning Potion" to "Potion of Combustion"
### Removed ### Removed
- Medium and large potions from all loot tables - Medium and large potions from all loot tables
@ -91,6 +94,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Fixed bug where airship captains would mass generate after using /reload_chunks - Fixed bug where airship captains would mass generate after using /reload_chunks
- Fixed french translation "Énergie Consommée" -> "Regain d'Énergie" - Fixed french translation "Énergie Consommée" -> "Regain d'Énergie"
- Fixed Perforate icon not displaying - Fixed Perforate icon not displaying
- Make cave entrances easier to follow
- Renamed Twiggy Shoulders to match the Twig Armor set
## [0.15.0] - 2023-07-01 ## [0.15.0] - 2023-07-01

93
Cargo.lock generated
View File

@ -58,14 +58,15 @@ dependencies = [
[[package]] [[package]]
name = "ahash" name = "ahash"
version = "0.8.3" version = "0.8.7"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2c99f64d1e06488f620f932677e24bc6e2897582980441ae90a671415bd7ec2f" checksum = "77c3a9648d43b9cd48db467b3f87fdd6e146bcc88ab0180006cef2179fe11d01"
dependencies = [ dependencies = [
"cfg-if 1.0.0", "cfg-if 1.0.0",
"getrandom 0.2.10", "getrandom 0.2.10",
"once_cell", "once_cell",
"version_check", "version_check",
"zerocopy",
] ]
[[package]] [[package]]
@ -320,7 +321,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f00425f4c1f3349b35daf0a73477249f6574fe89f4b9d76aca0b2a1356886b3b" checksum = "f00425f4c1f3349b35daf0a73477249f6574fe89f4b9d76aca0b2a1356886b3b"
dependencies = [ dependencies = [
"ab_glyph", "ab_glyph",
"ahash 0.8.3", "ahash 0.8.7",
"bincode", "bincode",
"crossbeam-channel", "crossbeam-channel",
"log", "log",
@ -350,7 +351,7 @@ checksum = "bc00ceb34980c03614e35a3a4e218276a0a824e911d07651cd0d858a51e8c0f0"
dependencies = [ dependencies = [
"proc-macro2 1.0.66", "proc-macro2 1.0.66",
"quote 1.0.33", "quote 1.0.33",
"syn 2.0.29", "syn 2.0.32",
] ]
[[package]] [[package]]
@ -655,7 +656,7 @@ checksum = "fdde5c9cd29ebd706ce1b35600920a33550e402fc998a2e53ad3b42c3c47a192"
dependencies = [ dependencies = [
"proc-macro2 1.0.66", "proc-macro2 1.0.66",
"quote 1.0.33", "quote 1.0.33",
"syn 2.0.29", "syn 2.0.32",
] ]
[[package]] [[package]]
@ -872,7 +873,7 @@ dependencies = [
"heck 0.4.1", "heck 0.4.1",
"proc-macro2 1.0.66", "proc-macro2 1.0.66",
"quote 1.0.33", "quote 1.0.33",
"syn 2.0.29", "syn 2.0.32",
] ]
[[package]] [[package]]
@ -1572,7 +1573,7 @@ dependencies = [
"ident_case", "ident_case",
"proc-macro2 1.0.66", "proc-macro2 1.0.66",
"quote 1.0.33", "quote 1.0.33",
"syn 2.0.29", "syn 2.0.32",
] ]
[[package]] [[package]]
@ -1594,7 +1595,7 @@ checksum = "836a9bbc7ad63342d6d6e7b815ccab164bc77a2d95d84bc3117a8c0d5c98e2d5"
dependencies = [ dependencies = [
"darling_core 0.20.3", "darling_core 0.20.3",
"quote 1.0.33", "quote 1.0.33",
"syn 2.0.29", "syn 2.0.32",
] ]
[[package]] [[package]]
@ -1755,7 +1756,7 @@ checksum = "487585f4d0c6655fe74905e2504d8ad6908e4db67f744eb140876906c2f3175d"
dependencies = [ dependencies = [
"proc-macro2 1.0.66", "proc-macro2 1.0.66",
"quote 1.0.33", "quote 1.0.33",
"syn 2.0.29", "syn 2.0.32",
] ]
[[package]] [[package]]
@ -1773,7 +1774,7 @@ version = "5.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dd05cab02d6074145c6f92ddf1b57357e4bc1424f87c790c044de62bdc94c13a" checksum = "dd05cab02d6074145c6f92ddf1b57357e4bc1424f87c790c044de62bdc94c13a"
dependencies = [ dependencies = [
"ahash 0.8.3", "ahash 0.8.7",
"lazy_static", "lazy_static",
"log", "log",
"nom", "nom",
@ -1875,7 +1876,7 @@ checksum = "ccb14d927583dd5c2eac0f2cf264fc4762aefe1ae14c47a8a20fc1939d3a5fc0"
dependencies = [ dependencies = [
"proc-macro2 1.0.66", "proc-macro2 1.0.66",
"quote 1.0.33", "quote 1.0.33",
"syn 2.0.29", "syn 2.0.32",
] ]
[[package]] [[package]]
@ -1896,7 +1897,7 @@ dependencies = [
"darling 0.20.3", "darling 0.20.3",
"proc-macro2 1.0.66", "proc-macro2 1.0.66",
"quote 1.0.33", "quote 1.0.33",
"syn 2.0.29", "syn 2.0.32",
] ]
[[package]] [[package]]
@ -2238,7 +2239,7 @@ checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72"
dependencies = [ dependencies = [
"proc-macro2 1.0.66", "proc-macro2 1.0.66",
"quote 1.0.33", "quote 1.0.33",
"syn 2.0.29", "syn 2.0.32",
] ]
[[package]] [[package]]
@ -2703,7 +2704,7 @@ version = "0.13.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e"
dependencies = [ dependencies = [
"ahash 0.8.3", "ahash 0.8.7",
"rayon", "rayon",
"serde", "serde",
] ]
@ -2714,7 +2715,7 @@ version = "0.14.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2c6201b9ff9fd90a5a3bac2e56a830d0caa509576f0e503818ee82c181b3437a" checksum = "2c6201b9ff9fd90a5a3bac2e56a830d0caa509576f0e503818ee82c181b3437a"
dependencies = [ dependencies = [
"ahash 0.8.3", "ahash 0.8.7",
"allocator-api2", "allocator-api2",
] ]
@ -4005,7 +4006,7 @@ checksum = "9e6a0fd4f737c707bd9086cc16c925f294943eb62eb71499e9fd4cf71f8b9f4e"
dependencies = [ dependencies = [
"proc-macro2 1.0.66", "proc-macro2 1.0.66",
"quote 1.0.33", "quote 1.0.33",
"syn 2.0.29", "syn 2.0.32",
] ]
[[package]] [[package]]
@ -4112,7 +4113,7 @@ dependencies = [
"proc-macro-crate", "proc-macro-crate",
"proc-macro2 1.0.66", "proc-macro2 1.0.66",
"quote 1.0.33", "quote 1.0.33",
"syn 2.0.29", "syn 2.0.32",
] ]
[[package]] [[package]]
@ -4511,7 +4512,7 @@ checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405"
dependencies = [ dependencies = [
"proc-macro2 1.0.66", "proc-macro2 1.0.66",
"quote 1.0.33", "quote 1.0.33",
"syn 2.0.29", "syn 2.0.32",
] ]
[[package]] [[package]]
@ -4667,7 +4668,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "097bf8b99121dfb8c75eed54dfbdbdb1d53e372c53d2353e8a15aad2a479249d" checksum = "097bf8b99121dfb8c75eed54dfbdbdb1d53e372c53d2353e8a15aad2a479249d"
dependencies = [ dependencies = [
"quote 1.0.33", "quote 1.0.33",
"syn 2.0.29", "syn 2.0.32",
] ]
[[package]] [[package]]
@ -5047,7 +5048,7 @@ dependencies = [
"quote 1.0.33", "quote 1.0.33",
"refinery-core", "refinery-core",
"regex", "regex",
"syn 2.0.29", "syn 2.0.32",
] ]
[[package]] [[package]]
@ -5486,7 +5487,7 @@ version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "772575a524feeb803e5b0fcbc6dd9f367e579488197c94c6e4023aad2305774d" checksum = "772575a524feeb803e5b0fcbc6dd9f367e579488197c94c6e4023aad2305774d"
dependencies = [ dependencies = [
"ahash 0.8.3", "ahash 0.8.7",
"cfg-if 1.0.0", "cfg-if 1.0.0",
"hashbrown 0.13.2", "hashbrown 0.13.2",
] ]
@ -5633,7 +5634,7 @@ checksum = "4eca7ac642d82aa35b60049a6eccb4be6be75e599bd2e9adb5f875a737654af2"
dependencies = [ dependencies = [
"proc-macro2 1.0.66", "proc-macro2 1.0.66",
"quote 1.0.33", "quote 1.0.33",
"syn 2.0.29", "syn 2.0.32",
] ]
[[package]] [[package]]
@ -5665,7 +5666,7 @@ checksum = "8725e1dfadb3a50f7e5ce0b1a540466f6ed3fe7a0fca2ac2b8b831d31316bd00"
dependencies = [ dependencies = [
"proc-macro2 1.0.66", "proc-macro2 1.0.66",
"quote 1.0.33", "quote 1.0.33",
"syn 2.0.29", "syn 2.0.32",
] ]
[[package]] [[package]]
@ -5767,10 +5768,9 @@ checksum = "43b2853a4d09f215c24cc5489c992ce46052d359b5109343cbafbf26bc62f8a3"
[[package]] [[package]]
name = "shred" name = "shred"
version = "0.15.0" version = "0.15.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "git+https://github.com/amethyst/shred.git?rev=5d52c6fc390dd04c12158633e77591f6523d1f85#5d52c6fc390dd04c12158633e77591f6523d1f85"
checksum = "dc6b2cd1ccb08cf2b25d75c936e0cc9c8cb93c39a83814956da32653236338c0"
dependencies = [ dependencies = [
"ahash 0.7.6", "ahash 0.8.7",
"arrayvec 0.7.4", "arrayvec 0.7.4",
"atomic_refcell", "atomic_refcell",
"rayon", "rayon",
@ -5782,8 +5782,7 @@ dependencies = [
[[package]] [[package]]
name = "shred-derive" name = "shred-derive"
version = "0.6.3" version = "0.6.3"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "git+https://github.com/amethyst/shred.git?rev=5d52c6fc390dd04c12158633e77591f6523d1f85#5d52c6fc390dd04c12158633e77591f6523d1f85"
checksum = "d5404c36bd155e41a54276ab6aafedad2fb627e5e5849d36ec439c9ddc044a2f"
dependencies = [ dependencies = [
"proc-macro2 1.0.66", "proc-macro2 1.0.66",
"quote 1.0.33", "quote 1.0.33",
@ -6200,9 +6199,9 @@ dependencies = [
[[package]] [[package]]
name = "syn" name = "syn"
version = "2.0.29" version = "2.0.32"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c324c494eba9d92503e6f1ef2e6df781e78f6a7705a0202d9801b198807d518a" checksum = "239814284fd6f1a4ffe4ca893952cdd93c224b6a1571c9a9eadd670295c0c9e2"
dependencies = [ dependencies = [
"proc-macro2 1.0.66", "proc-macro2 1.0.66",
"quote 1.0.33", "quote 1.0.33",
@ -6277,7 +6276,7 @@ checksum = "6bb623b56e39ab7dcd4b1b98bb6c8f8d907ed255b18de254088016b27a8ee19b"
dependencies = [ dependencies = [
"proc-macro2 1.0.66", "proc-macro2 1.0.66",
"quote 1.0.33", "quote 1.0.33",
"syn 2.0.29", "syn 2.0.32",
] ]
[[package]] [[package]]
@ -6456,7 +6455,7 @@ checksum = "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e"
dependencies = [ dependencies = [
"proc-macro2 1.0.66", "proc-macro2 1.0.66",
"quote 1.0.33", "quote 1.0.33",
"syn 2.0.29", "syn 2.0.32",
] ]
[[package]] [[package]]
@ -6597,7 +6596,7 @@ checksum = "5f4f31f56159e98206da9efd823404b79b6ef3143b4a7ab76e67b1751b25a4ab"
dependencies = [ dependencies = [
"proc-macro2 1.0.66", "proc-macro2 1.0.66",
"quote 1.0.33", "quote 1.0.33",
"syn 2.0.29", "syn 2.0.32",
] ]
[[package]] [[package]]
@ -6723,7 +6722,7 @@ version = "1.6.3"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "97fee6b57c6a41524a810daee9286c02d7752c4253064d0b05472833a438f675" checksum = "97fee6b57c6a41524a810daee9286c02d7752c4253064d0b05472833a438f675"
dependencies = [ dependencies = [
"cfg-if 1.0.0", "cfg-if 0.1.10",
"rand 0.8.5", "rand 0.8.5",
"static_assertions", "static_assertions",
] ]
@ -7176,7 +7175,7 @@ version = "0.1.0"
dependencies = [ dependencies = [
"proc-macro2 1.0.66", "proc-macro2 1.0.66",
"quote 1.0.33", "quote 1.0.33",
"syn 2.0.29", "syn 2.0.32",
] ]
[[package]] [[package]]
@ -7596,7 +7595,7 @@ dependencies = [
"once_cell", "once_cell",
"proc-macro2 1.0.66", "proc-macro2 1.0.66",
"quote 1.0.33", "quote 1.0.33",
"syn 2.0.29", "syn 2.0.32",
"wasm-bindgen-shared", "wasm-bindgen-shared",
] ]
@ -7653,7 +7652,7 @@ checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b"
dependencies = [ dependencies = [
"proc-macro2 1.0.66", "proc-macro2 1.0.66",
"quote 1.0.33", "quote 1.0.33",
"syn 2.0.29", "syn 2.0.32",
"wasm-bindgen-backend", "wasm-bindgen-backend",
"wasm-bindgen-shared", "wasm-bindgen-shared",
] ]
@ -8499,3 +8498,23 @@ checksum = "e17bb3549cc1321ae1296b9cdc2698e2b6cb1992adfa19a8c72e5b7a738f44cd"
dependencies = [ dependencies = [
"time 0.3.28", "time 0.3.28",
] ]
[[package]]
name = "zerocopy"
version = "0.7.32"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "74d4d3961e53fa4c9a25a8637fc2bfaf2595b3d3ae34875568a5cf64787716be"
dependencies = [
"zerocopy-derive",
]
[[package]]
name = "zerocopy-derive"
version = "0.7.32"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6"
dependencies = [
"proc-macro2 1.0.66",
"quote 1.0.33",
"syn 2.0.32",
]

View File

@ -165,6 +165,7 @@ winit = { git = "https://github.com/Imberflur/winit.git", tag = "raw-window-hand
wgpu = { git = "https://github.com/pythonesque/wgpu.git", rev = "179ea209374a92837cde252f1d9ee01f628cae08" } wgpu = { git = "https://github.com/pythonesque/wgpu.git", rev = "179ea209374a92837cde252f1d9ee01f628cae08" }
# ntapi 3.7 fails to compile under windows due to the bug https://github.com/MSxDOS/ntapi/pull/12 # ntapi 3.7 fails to compile under windows due to the bug https://github.com/MSxDOS/ntapi/pull/12
ntapi = { git = "https://github.com/MSxDOS/ntapi.git", rev = "9f56b149c9e25796739157c0fce3e0007a7de6eb" } ntapi = { git = "https://github.com/MSxDOS/ntapi.git", rev = "9f56b149c9e25796739157c0fce3e0007a7de6eb" }
shred = { git = "https://github.com/amethyst/shred.git", rev = "5d52c6fc390dd04c12158633e77591f6523d1f85" }
[patch."https://github.com/gfx-rs/gfx"] [patch."https://github.com/gfx-rs/gfx"]
gfx-hal = { git = "https://github.com/Imberflur/gfx.git", tag = "veloren-fixes-v1" } gfx-hal = { git = "https://github.com/Imberflur/gfx.git", tag = "veloren-fixes-v1" }

View File

@ -1,20 +1,15 @@
ComboMelee( ComboMelee2(
stage_data: [ strikes: [
( (
stage: 1, melee_constructor: (
base_damage: 8.0, kind: Slash(
damage_increase: 1.0, damage: 8,
base_poise_damage: 15, poise: 15,
poise_damage_increase: 0, knockback: 8,
knockback: 8.0, energy_regen: 0,
),
range: 3.5, range: 3.5,
angle: 50.0, angle: 50.0,
base_buildup_duration: 0.4,
base_swing_duration: 0.08,
hit_timing: 0.5,
base_recover_duration: 0.5,
forward_movement: 2.5,
damage_kind: Slashing,
damage_effect: Some(Buff(( damage_effect: Some(Buff((
kind: Bleeding, kind: Bleeding,
dur_secs: 10.0, dur_secs: 10.0,
@ -22,21 +17,25 @@ ComboMelee(
chance: 0.1, chance: 0.1,
))), ))),
), ),
buildup_duration: 0.4,
swing_duration: 0.08,
hit_timing: 0.5,
recover_duration: 0.5,
movement: (
swing: Some(Forward(2.5)),
),
ori_modifier: 0.7,
),
( (
stage: 2, melee_constructor: (
base_damage: 10.0, kind: Slash(
damage_increase: 1.5, damage: 10,
base_poise_damage: 20, poise: 20,
poise_damage_increase: 0, knockback: 12,
knockback: 12.0, energy_regen: 0,
),
range: 3.5, range: 3.5,
angle: 30.0, angle: 30.0,
base_buildup_duration: 0.7,
base_swing_duration: 0.1,
hit_timing: 0.5,
base_recover_duration: 0.7,
forward_movement: 2.0,
damage_kind: Slashing,
damage_effect: Some(Buff(( damage_effect: Some(Buff((
kind: Bleeding, kind: Bleeding,
dur_secs: 10.0, dur_secs: 10.0,
@ -44,12 +43,15 @@ ComboMelee(
chance: 0.1, chance: 0.1,
))), ))),
), ),
], buildup_duration: 0.7,
initial_energy_gain: 0, swing_duration: 0.1,
max_energy_gain: 0, hit_timing: 0.5,
energy_increase: 0, recover_duration: 0.7,
speed_increase: 0.0, movement: (
max_speed_increase: 0.0, swing: Some(Forward(2.0)),
scales_from_combo: 0, ),
ori_modifier: 0.7, ori_modifier: 0.7,
),
],
energy_cost_per_strike: 0,
) )

View File

@ -1,33 +1,31 @@
ComboMelee( ComboMelee2(
stage_data: [ strikes: [
( (
stage: 1, melee_constructor: (
base_damage: 74, kind: Bash(
damage_increase: 0, damage: 74,
base_poise_damage: 27.5, poise: 27.5,
poise_damage_increase: 0, knockback: 9,
knockback: 9.0, energy_regen: 0,
),
range: 3.0, range: 3.0,
angle: 60.0, angle: 60.0,
base_buildup_duration: 1.4,
base_swing_duration: 0.1,
hit_timing: 0.5,
base_recover_duration: 0.8,
forward_movement: 1.0,
damage_kind: Crushing,
damage_effect: Some(Buff(( damage_effect: Some(Buff((
kind: Ensnared, kind: Ensnared,
dur_secs: 6.0, dur_secs: 6.0,
strength: DamageFraction(0.1), strength: Value(0.5),
chance: 0.6, chance: 0.6,
))), ))),
), ),
], buildup_duration: 1.4,
initial_energy_gain: 0, swing_duration: 0.1,
max_energy_gain: 0, hit_timing: 0.5,
energy_increase: 0, recover_duration: 0.8,
speed_increase: 0.0, movement: (
max_speed_increase: 0.0, swing: Some(Forward(1.0)),
scales_from_combo: 0, ),
ori_modifier: 0.8, ori_modifier: 0.8,
),
],
energy_cost_per_strike: 0,
) )

View File

@ -1,20 +1,15 @@
ComboMelee( ComboMelee2(
stage_data: [ strikes: [
( (
stage: 1, melee_constructor: (
base_damage: 50, kind: Stab(
damage_increase: 0, damage: 50,
base_poise_damage: 16, poise: 16,
poise_damage_increase: 0, knockback: 2,
knockback: 2.0, energy_regen: 0,
),
range: 3.0, range: 3.0,
angle: 60.0, angle: 60.0,
base_buildup_duration: 0.8,
base_swing_duration: 0.1,
hit_timing: 0.5,
base_recover_duration: 0.8,
forward_movement: 1.0,
damage_kind: Piercing,
damage_effect: Some(Buff(( damage_effect: Some(Buff((
kind: Poisoned, kind: Poisoned,
dur_secs: 7.0, dur_secs: 7.0,
@ -22,12 +17,15 @@ ComboMelee(
chance: 0.4, chance: 0.4,
))), ))),
), ),
], buildup_duration: 0.8,
initial_energy_gain: 0, swing_duration: 0.1,
max_energy_gain: 0, hit_timing: 0.5,
energy_increase: 0, recover_duration: 0.8,
speed_increase: 0.0, movement: (
max_speed_increase: 0.0, swing: Some(Forward(1.0)),
scales_from_combo: 0, ),
ori_modifier: 0.8, ori_modifier: 0.8,
),
],
energy_cost_per_strike: 0,
) )

View File

@ -1,27 +1,25 @@
ComboMelee( ComboMelee2(
stage_data: [ strikes: [
( (
stage: 1, melee_constructor: (
base_damage: 54, kind: Bash(
damage_increase: 0, damage: 54,
base_poise_damage: 20, poise: 20,
poise_damage_increase: 0, knockback: 5,
knockback: 5.0, energy_regen: 0,
),
range: 3.0, range: 3.0,
angle: 60.0, angle: 60.0,
base_buildup_duration: 0.8, ),
base_swing_duration: 0.1, buildup_duration: 0.8,
swing_duration: 0.1,
hit_timing: 0.5, hit_timing: 0.5,
base_recover_duration: 0.8, recover_duration: 0.8,
forward_movement: 1.0, movement: (
damage_kind: Crushing, swing: Some(Forward(1.0)),
),
ori_modifier: 0.5,
), ),
], ],
initial_energy_gain: 0, energy_cost_per_strike: 0,
max_energy_gain: 0,
energy_increase: 0,
speed_increase: 0.0,
max_speed_increase: 0.0,
scales_from_combo: 0,
ori_modifier: 0.5,
) )

View File

@ -1,20 +1,15 @@
ComboMelee( ComboMelee2(
stage_data: [ strikes: [
( (
stage: 1, melee_constructor: (
base_damage: 60, kind: Stab(
damage_increase: 0, damage: 60,
base_poise_damage: 21, poise: 21,
poise_damage_increase: 0, knockback: 3,
knockback: 3.0, energy_regen: 0,
),
range: 3.0, range: 3.0,
angle: 60.0, angle: 60.0,
base_buildup_duration: 0.8,
base_swing_duration: 0.1,
hit_timing: 0.5,
base_recover_duration: 0.8,
forward_movement: 1.0,
damage_kind: Piercing,
damage_effect: Some(Buff(( damage_effect: Some(Buff((
kind: Poisoned, kind: Poisoned,
dur_secs: 9.0, dur_secs: 9.0,
@ -22,12 +17,15 @@ ComboMelee(
chance: 0.8, chance: 0.8,
))), ))),
), ),
], buildup_duration: 0.8,
initial_energy_gain: 0, swing_duration: 0.1,
max_energy_gain: 0, hit_timing: 0.5,
energy_increase: 0, recover_duration: 0.8,
speed_increase: 0.0, movement: (
max_speed_increase: 0.0, swing: Some(Forward(1.0)),
scales_from_combo: 0, ),
ori_modifier: 0.8, ori_modifier: 0.8,
),
],
energy_cost_per_strike: 0,
) )

View File

@ -1,27 +1,25 @@
ComboMelee( ComboMelee2(
stage_data: [ strikes: [
( (
stage: 1, melee_constructor: (
base_damage: 44, kind: Bash(
damage_increase: 0, damage: 44,
base_poise_damage: 14, poise: 14,
poise_damage_increase: 0, knockback: 3,
knockback: 3.0, energy_regen: 0,
),
range: 3.0, range: 3.0,
angle: 60.0, angle: 60.0,
base_buildup_duration: 0.8, ),
base_swing_duration: 0.1, buildup_duration: 0.8,
swing_duration: 0.1,
hit_timing: 0.5, hit_timing: 0.5,
base_recover_duration: 0.8, recover_duration: 0.8,
forward_movement: 1.0, movement: (
damage_kind: Crushing, swing: Some(Forward(1.0)),
),
ori_modifier: 0.6,
), ),
], ],
initial_energy_gain: 0, energy_cost_per_strike: 0,
max_energy_gain: 0,
energy_increase: 0,
speed_increase: 0.0,
max_speed_increase: 0.0,
scales_from_combo: 0,
ori_modifier: 0.6,
) )

View File

@ -1,27 +1,25 @@
ComboMelee( ComboMelee2(
stage_data: [ strikes: [
( (
stage: 1, melee_constructor: (
base_damage: 28.0, kind: Bash(
damage_increase: 0, damage: 28,
base_poise_damage: 28, poise: 28,
poise_damage_increase: 0, knockback: 3,
knockback: 3.0, energy_regen: 0,
),
range: 3.5, range: 3.5,
angle: 60.0, angle: 60.0,
base_buildup_duration: 1.2, ),
base_swing_duration: 0.1, buildup_duration: 1.2,
swing_duration: 0.1,
hit_timing: 0.5, hit_timing: 0.5,
base_recover_duration: 0.4, recover_duration: 0.4,
forward_movement: 2.0, movement: (
damage_kind: Crushing, swing: Some(Forward(2.0)),
),
ori_modifier: 0.65,
), ),
], ],
initial_energy_gain: 0, energy_cost_per_strike: 0,
max_energy_gain: 0,
energy_increase: 0,
speed_increase: 0.0,
max_speed_increase: 0.0,
scales_from_combo: 0,
ori_modifier: 0.65,
) )

View File

@ -1,59 +1,65 @@
ComboMelee( ComboMelee2(
stage_data: [ strikes: [
( (
stage: 1, melee_constructor: (
base_damage: 36.0, kind: Bash(
damage_increase: 0, damage: 36,
base_poise_damage: 15, poise: 15,
poise_damage_increase: 0, knockback: 3,
knockback: 3.0, energy_regen: 0,
),
range: 2.8, range: 2.8,
angle: 30.0, angle: 30.0,
base_buildup_duration: 1.4, ),
base_swing_duration: 0.07, buildup_duration: 1.4,
swing_duration: 0.07,
hit_timing: 0.5, hit_timing: 0.5,
base_recover_duration: 0.3, recover_duration: 0.3,
forward_movement: 2.0, movement: (
damage_kind: Crushing, swing: Some(Forward(2.0)),
),
ori_modifier: 0.65,
), ),
( (
stage: 2, melee_constructor: (
base_damage: 36.0, kind: Bash(
damage_increase: 0, damage: 36,
base_poise_damage: 18, poise: 18,
poise_damage_increase: 0, knockback: 3,
knockback: 3.0, energy_regen: 0,
),
range: 2.8, range: 2.8,
angle: 30.0, angle: 30.0,
base_buildup_duration: 0.8, ),
base_swing_duration: 0.07, buildup_duration: 0.8,
swing_duration: 0.07,
hit_timing: 0.5, hit_timing: 0.5,
base_recover_duration: 0.3, recover_duration: 0.3,
forward_movement: 1.5, movement: (
damage_kind: Crushing, swing: Some(Forward(1.5)),
),
ori_modifier: 0.65,
), ),
( (
stage: 3, melee_constructor: (
base_damage: 36.0, kind: Bash(
damage_increase: 0, damage: 36,
base_poise_damage: 20, poise: 20,
poise_damage_increase: 0, knockback: 3,
knockback: 3.0, energy_regen: 0,
),
range: 2.8, range: 2.8,
angle: 30.0, angle: 30.0,
base_buildup_duration: 0.8, ),
base_swing_duration: 0.07, buildup_duration: 0.8,
swing_duration: 0.07,
hit_timing: 0.5, hit_timing: 0.5,
base_recover_duration: 0.3, recover_duration: 0.3,
forward_movement: 1.5, movement: (
damage_kind: Crushing, swing: Some(Forward(1.5)),
),
ori_modifier: 0.65,
), ),
], ],
initial_energy_gain: 0, energy_cost_per_strike: 0,
max_energy_gain: 0,
energy_increase: 0,
speed_increase: 0.0,
max_speed_increase: 0.0,
scales_from_combo: 0,
ori_modifier: 0.65,
) )

View File

@ -1,27 +1,18 @@
ComboMelee( BasicMelee(
stage_data: [ energy_cost: 0,
( buildup_duration: 0.1,
stage: 1, swing_duration: 0.07,
base_damage: 1.0, hit_timing: 0.5,
damage_increase: 0, recover_duration: 0.2,
base_poise_damage: 0, melee_constructor: (
poise_damage_increase: 0, kind: Stab(
knockback: 0.0, damage: 1,
poise: 0,
knockback: 0,
energy_regen: 0,
),
range: 2.5, range: 2.5,
angle: 150.0, angle: 150.0,
base_buildup_duration: 0.1,
base_swing_duration: 0.07,
hit_timing: 0.5,
base_recover_duration: 0.2,
forward_movement: 0.0,
damage_kind: Piercing,
), ),
],
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.6, ori_modifier: 0.6,
) )

View File

@ -1,31 +1,28 @@
ComboMelee( ComboMelee2(
stage_data: [( strikes: [
stage: 1, (
base_damage: 15.0, melee_constructor: (
damage_increase: 0.75, kind: Bash(
base_poise_damage: 0, damage: 15,
poise_damage_increase: 0, poise: 0,
knockback: 3.5, knockback: 3.5,
energy_regen: 5,
),
range: 4.5, range: 4.5,
angle: 50.0, angle: 50.0,
base_buildup_duration: 0.7,
base_swing_duration: 0.1,
hit_timing: 0.5,
base_recover_duration: 0.45,
forward_movement: 0.0,
damage_kind: Crushing,
damage_effect: Some(Buff(( damage_effect: Some(Buff((
kind: Frozen, kind: Frozen,
dur_secs: 2.0, dur_secs: 2.0,
strength: Value(0.3), strength: Value(0.3),
chance: 0.4, chance: 0.4,
))), ))),
)], ),
initial_energy_gain: 5.0, buildup_duration: 0.7,
max_energy_gain: 12.5, swing_duration: 0.1,
energy_increase: 2.5, hit_timing: 0.5,
speed_increase: 0.1, recover_duration: 0.45,
max_speed_increase: 0.4,
scales_from_combo: 2,
ori_modifier: 1.0, ori_modifier: 1.0,
),
],
energy_cost_per_strike: 0,
) )

View File

@ -1,36 +1,35 @@
ComboMelee( ComboMelee2(
stage_data: [ strikes: [
( (
stage: 1, melee_constructor: (
base_damage: 32.0, kind: Bash(
damage_increase: 0.0, damage: 32,
base_poise_damage: 20, poise: 20,
poise_damage_increase: 0.0, knockback: 5,
knockback: 5.0, energy_regen: 0,
range: 6, ),
range: 6.0,
angle: 90.0, angle: 90.0,
base_buildup_duration: 0.5, ),
base_swing_duration: 0.4, buildup_duration: 0.5,
swing_duration: 0.4,
hit_timing: 0.4, hit_timing: 0.4,
base_recover_duration: 0.4, recover_duration: 0.4,
forward_movement: 0.3, movement: (
damage_kind: Crushing, swing: Some(Forward(0.3)),
),
ori_modifier: 0.65,
), ),
( (
stage: 2, melee_constructor: (
base_damage: 36.0, kind: Bash(
damage_increase: 0.0, damage: 36,
base_poise_damage: 40.0, poise: 40,
poise_damage_increase: 0.0, knockback: 10,
knockback: 10.0, energy_regen: 0,
range: 8, ),
range: 8.0,
angle: 45.0, angle: 45.0,
base_buildup_duration: 0.6,
base_swing_duration: 0.6,
hit_timing: 0.3,
base_recover_duration: 1.2,
forward_movement: 0.2,
damage_kind: Crushing,
damage_effect: Some(Buff(( damage_effect: Some(Buff((
kind: Crippled, kind: Crippled,
dur_secs: 3.0, dur_secs: 3.0,
@ -38,12 +37,15 @@ ComboMelee(
chance: 1.0, chance: 1.0,
))), ))),
), ),
], buildup_duration: 0.6,
initial_energy_gain: 0, swing_duration: 0.6,
max_energy_gain: 0, hit_timing: 0.3,
energy_increase: 0, recover_duration: 1.2,
speed_increase: 0.0, movement: (
max_speed_increase: 0.0, swing: Some(Forward(0.2)),
scales_from_combo: 0, ),
ori_modifier: 0.65, ori_modifier: 0.65,
),
],
energy_cost_per_strike: 0,
) )

View File

@ -1,20 +1,15 @@
ComboMelee( ComboMelee2(
stage_data: [ strikes: [
( (
stage: 1, melee_constructor: (
base_damage: 35.5, kind: Slash(
damage_increase: 0.0, damage: 35,
base_poise_damage: 15.0, poise: 15,
poise_damage_increase: 0.0, knockback: 2,
knockback: 2.0, energy_regen: 0,
),
range: 6.0, range: 6.0,
angle: 60.0, angle: 60.0,
base_buildup_duration: 0.8,
base_swing_duration: 0.1,
hit_timing: 0.4,
base_recover_duration: 0.3,
forward_movement: 0.8,
damage_kind: Slashing,
damage_effect: Some(Buff(( damage_effect: Some(Buff((
kind: Bleeding, kind: Bleeding,
dur_secs: 3.0, dur_secs: 3.0,
@ -22,21 +17,25 @@ ComboMelee(
chance: 0.3, chance: 0.3,
))), ))),
), ),
buildup_duration: 0.8,
swing_duration: 0.1,
hit_timing: 0.4,
recover_duration: 0.3,
movement: (
swing: Some(Forward(0.8)),
),
ori_modifier: 0.6,
),
( (
stage: 2, melee_constructor: (
base_damage: 38.5, kind: Slash(
damage_increase: 0.0, damage: 38.5,
base_poise_damage: 20.0, poise: 20,
poise_damage_increase: 0.0, knockback: 8,
knockback: 8.0, energy_regen: 0,
),
range: 6.0, range: 6.0,
angle: 60.0, angle: 60.0,
base_buildup_duration: 0.7,
base_swing_duration: 0.1,
hit_timing: 0.4,
base_recover_duration: 1.3,
forward_movement: 0.2,
damage_kind: Slashing,
damage_effect: Some(Buff(( damage_effect: Some(Buff((
kind: Bleeding, kind: Bleeding,
dur_secs: 3.0, dur_secs: 3.0,
@ -44,12 +43,15 @@ ComboMelee(
chance: 0.15, chance: 0.15,
))), ))),
), ),
], buildup_duration: 0.7,
initial_energy_gain: 0, swing_duration: 0.1,
max_energy_gain: 0, hit_timing: 0.4,
energy_increase: 0, recover_duration: 1.3,
speed_increase: 0.0, movement: (
max_speed_increase: 0.0, swing: Some(Forward(0.2)),
scales_from_combo: 0, ),
ori_modifier: 0.6, ori_modifier: 0.6,
),
],
energy_cost_per_strike: 0,
) )

View File

@ -1,27 +1,18 @@
ComboMelee( BasicMelee(
stage_data: [ energy_cost: 0,
( buildup_duration: 1.0,
stage: 1, swing_duration: 0.2,
base_damage: 40.0, hit_timing: 0.5,
damage_increase: 0, recover_duration: 1.0,
base_poise_damage: 12, melee_constructor: (
poise_damage_increase: 0, kind: Bash(
knockback: 5.0, damage: 40,
poise: 12,
knockback: 5,
energy_regen: 0,
),
range: 3.5, range: 3.5,
angle: 60.0, angle: 60.0,
base_buildup_duration: 1.0,
base_swing_duration: 0.2,
hit_timing: 0.5,
base_recover_duration: 1.0,
forward_movement: 0.5,
damage_kind: Crushing,
), ),
],
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.6, ori_modifier: 0.6,
) )

View File

@ -1,27 +1,25 @@
ComboMelee( ComboMelee2(
stage_data: [ strikes: [
( (
stage: 1, melee_constructor: (
base_damage: 40.0, kind: Bash(
damage_increase: 0, damage: 40,
base_poise_damage: 28, poise: 28,
poise_damage_increase: 0, knockback: 3,
knockback: 3.0, energy_regen: 0,
),
range: 3.5, range: 3.5,
angle: 60.0, angle: 60.0,
base_buildup_duration: 1.0, ),
base_swing_duration: 0.075, buildup_duration: 1.0,
swing_duration: 0.075,
hit_timing: 0.5, hit_timing: 0.5,
base_recover_duration: 0.4, recover_duration: 0.4,
forward_movement: 2.0, movement: (
damage_kind: Crushing, swing: Some(Forward(2.0)),
),
ori_modifier: 0.65,
), ),
], ],
initial_energy_gain: 0, energy_cost_per_strike: 0,
max_energy_gain: 0,
energy_increase: 0,
speed_increase: 0.0,
max_speed_increase: 0.0,
scales_from_combo: 0,
ori_modifier: 0.65,
) )

View File

@ -1,20 +1,15 @@
ComboMelee( ComboMelee2(
stage_data: [ strikes: [
( (
stage: 1, melee_constructor: (
base_damage: 18.0, kind: Slash(
damage_increase: 1.0, damage: 18,
base_poise_damage: 0, poise: 0,
poise_damage_increase: 0, knockback: 4,
knockback: 4.0, energy_regen: 0,
),
range: 3.5, range: 3.5,
angle: 50.0, angle: 50.0,
base_buildup_duration: 1.2,
base_swing_duration: 0.12,
hit_timing: 0.5,
base_recover_duration: 1.2,
forward_movement: 3.5,
damage_kind: Slashing,
damage_effect: Some(Buff(( damage_effect: Some(Buff((
kind: Bleeding, kind: Bleeding,
dur_secs: 10.0, dur_secs: 10.0,
@ -22,21 +17,25 @@ ComboMelee(
chance: 0.1, chance: 0.1,
))), ))),
), ),
buildup_duration: 1.2,
swing_duration: 0.12,
hit_timing: 0.5,
recover_duration: 1.2,
movement: (
swing: Some(Forward(3.5)),
),
ori_modifier: 0.6,
),
( (
stage: 2, melee_constructor: (
base_damage: 26.0, kind: Slash(
damage_increase: 1.5, damage: 26,
base_poise_damage: 0, poise: 0,
poise_damage_increase: 0, knockback: 16,
knockback: 16.0, energy_regen: 0,
),
range: 5.5, range: 5.5,
angle: 15.0, angle: 15.0,
base_buildup_duration: 1.0,
base_swing_duration: 0.15,
hit_timing: 0.5,
base_recover_duration: 2.4,
forward_movement: 4.5,
damage_kind: Slashing,
damage_effect: Some(Buff(( damage_effect: Some(Buff((
kind: Bleeding, kind: Bleeding,
dur_secs: 10.0, dur_secs: 10.0,
@ -44,12 +43,15 @@ ComboMelee(
chance: 0.1, chance: 0.1,
))), ))),
), ),
], buildup_duration: 1.0,
initial_energy_gain: 0, swing_duration: 0.15,
max_energy_gain: 0, hit_timing: 0.5,
energy_increase: 0, recover_duration: 2.4,
speed_increase: 0.0, movement: (
max_speed_increase: 0.0, swing: Some(Forward(4.5)),
scales_from_combo: 0, ),
ori_modifier: 0.6, ori_modifier: 0.6,
),
],
energy_cost_per_strike: 0,
) )

View File

@ -1,27 +1,25 @@
ComboMelee( ComboMelee2(
stage_data: [ strikes: [
( (
stage: 1, melee_constructor: (
base_damage: 40.0, kind: Bash(
damage_increase: 0, damage: 40,
base_poise_damage: 28, poise: 28,
poise_damage_increase: 0, knockback: 3,
knockback: 3.0, energy_regen: 0,
),
range: 2.0, range: 2.0,
angle: 60.0, angle: 60.0,
base_buildup_duration: 1.2, ),
base_swing_duration: 0.07, buildup_duration: 1.2,
swing_duration: 0.07,
hit_timing: 0.5, hit_timing: 0.5,
base_recover_duration: 0.8, recover_duration: 0.8,
forward_movement: 3.0, movement: (
damage_kind: Crushing, swing: Some(Forward(3.0)),
),
ori_modifier: 0.6,
), ),
], ],
initial_energy_gain: 0, energy_cost_per_strike: 0,
max_energy_gain: 0,
energy_increase: 0,
speed_increase: 0.0,
max_speed_increase: 0.0,
scales_from_combo: 0,
ori_modifier: 0.6,
) )

View File

@ -1,59 +1,65 @@
ComboMelee( ComboMelee2(
stage_data: [ strikes: [
( (
stage: 1, melee_constructor: (
base_damage: 28.0, kind: Bash(
damage_increase: 0, damage: 28,
base_poise_damage: 15, poise: 15,
poise_damage_increase: 0, knockback: 3,
knockback: 3.0, energy_regen: 0,
),
range: 2.2, range: 2.2,
angle: 30.0, angle: 30.0,
base_buildup_duration: 1.3, ),
base_swing_duration: 0.07, buildup_duration: 1.3,
swing_duration: 0.07,
hit_timing: 0.5, hit_timing: 0.5,
base_recover_duration: 0.6, recover_duration: 0.6,
forward_movement: 2.0, movement: (
damage_kind: Crushing, swing: Some(Forward(2.0)),
),
ori_modifier: 0.65,
), ),
( (
stage: 2, melee_constructor: (
base_damage: 28.0, kind: Bash(
damage_increase: 0, damage: 28,
base_poise_damage: 18, poise: 18,
poise_damage_increase: 0, knockback: 3,
knockback: 3.0, energy_regen: 0,
),
range: 2.2, range: 2.2,
angle: 30.0, angle: 30.0,
base_buildup_duration: 0.8, ),
base_swing_duration: 0.07, buildup_duration: 0.8,
swing_duration: 0.07,
hit_timing: 0.5, hit_timing: 0.5,
base_recover_duration: 0.6, recover_duration: 0.6,
forward_movement: 1.5, movement: (
damage_kind: Crushing, swing: Some(Forward(1.5)),
),
ori_modifier: 0.65,
), ),
( (
stage: 3, melee_constructor: (
base_damage: 28.0, kind: Bash(
damage_increase: 0, damage: 28,
base_poise_damage: 20, poise: 20,
poise_damage_increase: 0, knockback: 3,
knockback: 3.0, energy_regen: 0,
),
range: 2.2, range: 2.2,
angle: 30.0, angle: 30.0,
base_buildup_duration: 0.8, ),
base_swing_duration: 0.07, buildup_duration: 0.8,
swing_duration: 0.07,
hit_timing: 0.5, hit_timing: 0.5,
base_recover_duration: 0.6, recover_duration: 0.6,
forward_movement: 1.5, movement: (
damage_kind: Crushing, swing: Some(Forward(1.5)),
),
ori_modifier: 0.65,
), ),
], ],
initial_energy_gain: 0, energy_cost_per_strike: 0,
max_energy_gain: 0,
energy_increase: 0,
speed_increase: 0.0,
max_speed_increase: 0.0,
scales_from_combo: 0,
ori_modifier: 0.65,
) )

View File

@ -1,59 +1,65 @@
ComboMelee( ComboMelee2(
stage_data: [ strikes: [
( (
stage: 1, melee_constructor: (
base_damage: 44.0, kind: Bash(
damage_increase: 0, damage: 44,
base_poise_damage: 20, poise: 20,
poise_damage_increase: 0, knockback: 3,
knockback: 3.0, energy_regen: 0,
),
range: 2.5, range: 2.5,
angle: 30.0, angle: 30.0,
base_buildup_duration: 1.3, ),
base_swing_duration: 0.1, buildup_duration: 1.3,
swing_duration: 0.1,
hit_timing: 0.5, hit_timing: 0.5,
base_recover_duration: 0.6, recover_duration: 0.6,
forward_movement: 2.0, movement: (
damage_kind: Crushing, swing: Some(Forward(2.0)),
),
ori_modifier: 0.7,
), ),
( (
stage: 2, melee_constructor: (
base_damage: 44.0, kind: Bash(
damage_increase: 0, damage: 44,
base_poise_damage: 20, poise: 20,
poise_damage_increase: 0, knockback: 3,
knockback: 3.0, energy_regen: 0,
),
range: 2.5, range: 2.5,
angle: 30.0, angle: 30.0,
base_buildup_duration: 0.8, ),
base_swing_duration: 0.1, buildup_duration: 0.8,
swing_duration: 0.1,
hit_timing: 0.5, hit_timing: 0.5,
base_recover_duration: 0.6, recover_duration: 0.6,
forward_movement: 1.5, movement: (
damage_kind: Crushing, swing: Some(Forward(1.5)),
),
ori_modifier: 0.7,
), ),
( (
stage: 3, melee_constructor: (
base_damage: 44.0, kind: Bash(
damage_increase: 0, damage: 44,
base_poise_damage: 20, poise: 20,
poise_damage_increase: 0, knockback: 3,
knockback: 3.0, energy_regen: 0,
),
range: 2.5, range: 2.5,
angle: 30.0, angle: 30.0,
base_buildup_duration: 0.8, ),
base_swing_duration: 0.1, buildup_duration: 0.8,
swing_duration: 0.1,
hit_timing: 0.5, hit_timing: 0.5,
base_recover_duration: 0.6, recover_duration: 0.6,
forward_movement: 1.5, movement: (
damage_kind: Crushing, swing: Some(Forward(1.5)),
),
ori_modifier: 0.7,
), ),
], ],
initial_energy_gain: 0, energy_cost_per_strike: 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,
) )

View File

@ -1,75 +1,85 @@
ComboMelee( ComboMelee2(
stage_data: [ strikes: [
( (
stage: 1, melee_constructor: (
base_damage: 12.0, kind: Bash(
damage_increase: 0, damage: 12,
base_poise_damage: 15, poise: 15,
poise_damage_increase: 0, knockback: 1,
knockback: 1.0, energy_regen: 0,
),
range: 2.5, range: 2.5,
angle: 30.0, angle: 30.0,
base_buildup_duration: 1.2, ),
base_swing_duration: 0.1, buildup_duration: 1.2,
swing_duration: 0.1,
hit_timing: 0.5, hit_timing: 0.5,
base_recover_duration: 0.2, recover_duration: 0.2,
forward_movement: 1.5, movement: (
damage_kind: Crushing, swing: Some(Forward(1.5)),
),
ori_modifier: 0.8,
), ),
( (
stage: 2, melee_constructor: (
base_damage: 12.0, kind: Bash(
damage_increase: 0, damage: 12,
base_poise_damage: 15, poise: 15,
poise_damage_increase: 0, knockback: 1,
knockback: 1.0, energy_regen: 0,
),
range: 2.5, range: 2.5,
angle: 30.0, angle: 30.0,
base_buildup_duration: 0.3, ),
base_swing_duration: 0.07, buildup_duration: 0.3,
swing_duration: 0.07,
hit_timing: 0.5, hit_timing: 0.5,
base_recover_duration: 0.2, recover_duration: 0.2,
forward_movement: 0.8, movement: (
damage_kind: Crushing, swing: Some(Forward(0.8)),
),
ori_modifier: 0.8,
), ),
( (
stage: 3, melee_constructor: (
base_damage: 12.0, kind: Bash(
damage_increase: 0, damage: 12,
base_poise_damage: 15, poise: 15,
poise_damage_increase: 0, knockback: 1,
knockback: 1.0, energy_regen: 0,
),
range: 2.5, range: 2.5,
angle: 30.0, angle: 30.0,
base_buildup_duration: 0.4, ),
base_swing_duration: 0.07, buildup_duration: 0.4,
swing_duration: 0.07,
hit_timing: 0.5, hit_timing: 0.5,
base_recover_duration: 0.2, recover_duration: 0.2,
forward_movement: 0.8, movement: (
damage_kind: Crushing, swing: Some(Forward(0.8)),
),
ori_modifier: 0.8,
), ),
( (
stage: 4, melee_constructor: (
base_damage: 12.0, kind: Bash(
damage_increase: 0, damage: 12,
base_poise_damage: 15, poise: 15,
poise_damage_increase: 0, knockback: 8,
knockback: 8.0, energy_regen: 0,
),
range: 2.5, range: 2.5,
angle: 30.0, angle: 30.0,
base_buildup_duration: 0.4, ),
base_swing_duration: 0.07, buildup_duration: 0.4,
swing_duration: 0.07,
hit_timing: 0.5, hit_timing: 0.5,
base_recover_duration: 0.2, recover_duration: 0.2,
forward_movement: 0.8, movement: (
damage_kind: Crushing, swing: Some(Forward(0.8)),
),
ori_modifier: 0.8,
), ),
], ],
initial_energy_gain: 0, energy_cost_per_strike: 0,
max_energy_gain: 0,
energy_increase: 0,
speed_increase: 0.0,
max_speed_increase: 0.0,
scales_from_combo: 0,
ori_modifier: 0.8,
) )

View File

@ -1,59 +1,65 @@
ComboMelee( ComboMelee2(
stage_data: [ strikes: [
( (
stage: 1, melee_constructor: (
base_damage: 16.0, kind: Bash(
damage_increase: 0, damage: 16,
base_poise_damage: 0, poise: 22,
poise_damage_increase: 22, knockback: 10,
knockback: 10.0, energy_regen: 0,
),
range: 2.2, range: 2.2,
angle: 30.0, angle: 30.0,
base_buildup_duration: 1.3, ),
base_swing_duration: 0.1, buildup_duration: 1.3,
swing_duration: 0.1,
hit_timing: 0.5, hit_timing: 0.5,
base_recover_duration: 0.4, recover_duration: 0.4,
forward_movement: 2.0, movement: (
damage_kind: Crushing, swing: Some(Forward(2.0)),
),
ori_modifier: 0.7,
), ),
( (
stage: 2, melee_constructor: (
base_damage: 16.0, kind: Bash(
damage_increase: 0, damage: 16,
base_poise_damage: 22, poise: 22,
poise_damage_increase: 0, knockback: 10,
knockback: 10.0, energy_regen: 0,
),
range: 2.2, range: 2.2,
angle: 30.0, angle: 30.0,
base_buildup_duration: 0.4, ),
base_swing_duration: 0.1, buildup_duration: 0.4,
swing_duration: 0.1,
hit_timing: 0.5, hit_timing: 0.5,
base_recover_duration: 0.4, recover_duration: 0.4,
forward_movement: 1.0, movement: (
damage_kind: Crushing, swing: Some(Forward(1.0)),
),
ori_modifier: 0.7,
), ),
( (
stage: 3, melee_constructor: (
base_damage: 16.0, kind: Bash(
damage_increase: 0, damage: 16,
base_poise_damage: 22, poise: 22,
poise_damage_increase: 0, knockback: 10,
knockback: 10.0, energy_regen: 0,
),
range: 2.2, range: 2.2,
angle: 30.0, angle: 30.0,
base_buildup_duration: 0.2, ),
base_swing_duration: 0.1, buildup_duration: 0.2,
swing_duration: 0.1,
hit_timing: 0.5, hit_timing: 0.5,
base_recover_duration: 0.4, recover_duration: 0.4,
forward_movement: 1.0, movement: (
damage_kind: Crushing, swing: Some(Forward(1.0)),
),
ori_modifier: 0.7,
), ),
], ],
initial_energy_gain: 0, energy_cost_per_strike: 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,
) )

View File

@ -1,27 +1,25 @@
ComboMelee( ComboMelee2(
stage_data: [ strikes: [
( (
stage: 1, melee_constructor: (
base_damage: 20.0, kind: Bash(
damage_increase: 0, damage: 20,
base_poise_damage: 28, poise: 28,
poise_damage_increase: 0, knockback: 3,
knockback: 3.0, energy_regen: 0,
),
range: 2.7, range: 2.7,
angle: 60.0, angle: 60.0,
base_buildup_duration: 0.8, ),
base_swing_duration: 0.1, buildup_duration: 0.8,
swing_duration: 0.1,
hit_timing: 0.5, hit_timing: 0.5,
base_recover_duration: 0.8, recover_duration: 0.8,
forward_movement: 1.0, movement: (
damage_kind: Crushing, swing: Some(Forward(1.0)),
),
ori_modifier: 0.7,
), ),
], ],
initial_energy_gain: 0, energy_cost_per_strike: 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,
) )

View File

@ -1,59 +1,62 @@
ComboMelee( ComboMelee2(
stage_data: [ strikes: [
( (
stage: 1, melee_constructor: (
base_damage: 10.0, kind: Bash(
damage_increase: 0, damage: 10,
base_poise_damage: 15, poise: 15,
poise_damage_increase: 0, knockback: 5,
knockback: 5.0, energy_regen: 0,
),
range: 2.5, range: 2.5,
angle: 30.0, angle: 30.0,
base_buildup_duration: 0.9, ),
base_swing_duration: 0.07, buildup_duration: 0.9,
swing_duration: 0.07,
hit_timing: 0.5, hit_timing: 0.5,
base_recover_duration: 0.4, recover_duration: 0.4,
forward_movement: 1.0, movement: (
damage_kind: Crushing, swing: Some(Forward(1.0)),
),
ori_modifier: 0.7,
), ),
( (
stage: 2, melee_constructor: (
base_damage: 10.0, kind: Bash(
damage_increase: 0, damage: 10,
base_poise_damage: 18, poise: 18,
poise_damage_increase: 0, knockback: 5,
knockback: 5.0, energy_regen: 0,
),
range: 2.5, range: 2.5,
angle: 30.0, angle: 30.0,
base_buildup_duration: 0.8, ),
base_swing_duration: 0.07, buildup_duration: 0.8,
swing_duration: 0.07,
hit_timing: 0.5, hit_timing: 0.5,
base_recover_duration: 0.4, recover_duration: 0.4,
forward_movement: 0.0, ori_modifier: 0.7,
damage_kind: Crushing,
), ),
( (
stage: 3, melee_constructor: (
base_damage: 10.0, kind: Bash(
damage_increase: 0, damage: 10,
base_poise_damage: 20, poise: 20,
poise_damage_increase: 0, knockback: 5,
knockback: 5.0, energy_regen: 0,
),
range: 2.5, range: 2.5,
angle: 30.0, angle: 30.0,
base_buildup_duration: 0.8, ),
base_swing_duration: 0.07, buildup_duration: 0.8,
swing_duration: 0.07,
hit_timing: 0.5, hit_timing: 0.5,
base_recover_duration: 0.4, recover_duration: 0.4,
forward_movement: 1.0, movement: (
damage_kind: Crushing, swing: Some(Forward(1.0)),
),
ori_modifier: 0.7,
), ),
], ],
initial_energy_gain: 0, energy_cost_per_strike: 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,
) )

View File

@ -1,43 +1,45 @@
ComboMelee( ComboMelee2(
stage_data: [ strikes: [
( (
stage: 1, melee_constructor: (
base_damage: 50.0, kind: Bash(
damage_increase: 0, damage: 50,
base_poise_damage: 22, poise: 22,
poise_damage_increase: 0, knockback: 4,
knockback: 4.0, energy_regen: 0,
),
range: 2.5, range: 2.5,
angle: 30.0, angle: 30.0,
base_buildup_duration: 1.3, ),
base_swing_duration: 0.1, buildup_duration: 1.3,
swing_duration: 0.1,
hit_timing: 0.5, hit_timing: 0.5,
base_recover_duration: 0.6, recover_duration: 0.6,
forward_movement: 1.0, movement: (
damage_kind: Crushing, swing: Some(Forward(1.0)),
),
ori_modifier: 0.7,
), ),
( (
stage: 2, melee_constructor: (
base_damage: 74.0, kind: Bash(
damage_increase: 0, damage: 74,
base_poise_damage: 0, poise: 22,
poise_damage_increase: 22, knockback: 4,
knockback: 4.0, energy_regen: 0,
),
range: 2.5, range: 2.5,
angle: 30.0, angle: 30.0,
base_buildup_duration: 0.8, ),
base_swing_duration: 0.1, buildup_duration: 0.8,
swing_duration: 0.1,
hit_timing: 0.5, hit_timing: 0.5,
base_recover_duration: 0.6, recover_duration: 0.6,
forward_movement: 0.5, movement: (
damage_kind: Crushing, swing: Some(Forward(0.5)),
),
ori_modifier: 0.7,
), ),
], ],
initial_energy_gain: 0, energy_cost_per_strike: 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,
) )

View File

@ -1,43 +1,45 @@
ComboMelee( ComboMelee2(
stage_data: [ strikes: [
( (
stage: 1, melee_constructor: (
base_damage: 16.0, kind: Bash(
damage_increase: 0, damage: 16,
base_poise_damage: 30, poise: 30,
poise_damage_increase: 0, knockback: 4,
knockback: 4.0, energy_regen: 0,
),
range: 2.2, range: 2.2,
angle: 30.0, angle: 30.0,
base_buildup_duration: 1.3, ),
base_swing_duration: 0.1, buildup_duration: 1.3,
swing_duration: 0.1,
hit_timing: 0.5, hit_timing: 0.5,
base_recover_duration: 0.6, recover_duration: 0.6,
forward_movement: 1.0, movement: (
damage_kind: Crushing, swing: Some(Forward(1.0)),
),
ori_modifier: 0.8,
), ),
( (
stage: 2, melee_constructor: (
base_damage: 16.0, kind: Bash(
damage_increase: 0, damage: 16,
base_poise_damage: 30, poise: 30,
poise_damage_increase: 0, knockback: 4,
knockback: 4.0, energy_regen: 0,
),
range: 2.2, range: 2.2,
angle: 30.0, angle: 30.0,
base_buildup_duration: 0.8, ),
base_swing_duration: 0.1, buildup_duration: 0.8,
swing_duration: 0.1,
hit_timing: 0.5, hit_timing: 0.5,
base_recover_duration: 0.6, recover_duration: 0.6,
forward_movement: 1.5, movement: (
damage_kind: Crushing, swing: Some(Forward(1.5)),
),
ori_modifier: 0.8,
), ),
], ],
initial_energy_gain: 0, energy_cost_per_strike: 0,
max_energy_gain: 0,
energy_increase: 0,
speed_increase: 0.0,
max_speed_increase: 0.0,
scales_from_combo: 0,
ori_modifier: 0.8,
) )

View File

@ -1,59 +1,65 @@
ComboMelee( ComboMelee2(
stage_data: [ strikes: [
( (
stage: 1, melee_constructor: (
base_damage: 20.0, kind: Bash(
damage_increase: 0, damage: 20,
base_poise_damage: 15, poise: 15,
poise_damage_increase: 0, knockback: 5,
knockback: 5.0, energy_regen: 0,
),
range: 2.2, range: 2.2,
angle: 40.0, angle: 40.0,
base_buildup_duration: 1.2, ),
base_swing_duration: 0.15, buildup_duration: 1.2,
swing_duration: 0.15,
hit_timing: 0.5, hit_timing: 0.5,
base_recover_duration: 0.8, recover_duration: 0.8,
forward_movement: 0.3, movement: (
damage_kind: Crushing, swing: Some(Forward(0.3)),
),
ori_modifier: 0.8,
), ),
( (
stage: 2, melee_constructor: (
base_damage: 20.0, kind: Bash(
damage_increase: 0, damage: 20,
base_poise_damage: 17, poise: 17,
poise_damage_increase: 0, knockback: 5,
knockback: 5.0, energy_regen: 0,
),
range: 2.2, range: 2.2,
angle: 40.0, angle: 40.0,
base_buildup_duration: 0.8, ),
base_swing_duration: 0.15, buildup_duration: 0.8,
swing_duration: 0.15,
hit_timing: 0.5, hit_timing: 0.5,
base_recover_duration: 0.6, recover_duration: 0.6,
forward_movement: 0.5, movement: (
damage_kind: Crushing, swing: Some(Forward(0.5)),
),
ori_modifier: 0.8,
), ),
( (
stage: 3, melee_constructor: (
base_damage: 20.0, kind: Bash(
damage_increase: 0, damage: 20,
base_poise_damage: 20, poise: 20,
poise_damage_increase: 0, knockback: 5,
knockback: 5.0, energy_regen: 0,
),
range: 2.2, range: 2.2,
angle: 40.0, angle: 40.0,
base_buildup_duration: 0.8, ),
base_swing_duration: 0.15, buildup_duration: 0.8,
swing_duration: 0.15,
hit_timing: 0.5, hit_timing: 0.5,
base_recover_duration: 0.6, recover_duration: 0.6,
forward_movement: 0.5, movement: (
damage_kind: Crushing, swing: Some(Forward(0.5)),
),
ori_modifier: 0.8,
), ),
], ],
initial_energy_gain: 0, energy_cost_per_strike: 0,
max_energy_gain: 0,
energy_increase: 0,
speed_increase: 0.0,
max_speed_increase: 0.0,
scales_from_combo: 0,
ori_modifier: 0.8,
) )

View File

@ -1,27 +1,18 @@
ComboMelee( BasicMelee(
stage_data: [ energy_cost: 0,
( buildup_duration: 0.6,
stage: 1, swing_duration: 0.15,
base_damage: 6.0, hit_timing: 0.5,
damage_increase: 0, recover_duration: 0.6,
base_poise_damage: 10, melee_constructor: (
poise_damage_increase: 0, kind: Bash(
knockback: 1.0, damage: 6,
poise: 10,
knockback: 1,
energy_regen: 0,
),
range: 1.5, range: 1.5,
angle: 50.0, angle: 50.0,
base_buildup_duration: 0.6,
base_swing_duration: 0.15,
hit_timing: 0.5,
base_recover_duration: 0.6,
forward_movement: 1.0,
damage_kind: Crushing,
), ),
],
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, ori_modifier: 0.7,
) )

View File

@ -1,43 +1,45 @@
ComboMelee( ComboMelee2(
stage_data: [ strikes: [
( (
stage: 1, melee_constructor: (
base_damage: 28.0, kind: Stab(
damage_increase: 0, damage: 28,
base_poise_damage: 7.5, poise: 7.5,
poise_damage_increase: 0, knockback: 3,
knockback: 3.0, energy_regen: 5,
range: 3, ),
range: 3.0,
angle: 75.0, angle: 75.0,
base_buildup_duration: 1.2, ),
base_swing_duration: 0.07, buildup_duration: 1.2,
swing_duration: 0.07,
hit_timing: 0.5, hit_timing: 0.5,
base_recover_duration: 0.3, recover_duration: 0.3,
forward_movement: 0.25, movement: (
damage_kind: Piercing, swing: Some(Forward(0.25)),
),
ori_modifier: 0.5,
), ),
( (
stage: 2, melee_constructor: (
base_damage: 28.0, kind: Stab(
damage_increase: 0, damage: 28,
base_poise_damage: 7.5, poise: 7.5,
poise_damage_increase: 0, knockback: 3,
knockback: 3.0, energy_regen: 5,
range: 3, ),
range: 3.0,
angle: 75.0, angle: 75.0,
base_buildup_duration: 0.2, ),
base_swing_duration: 0.07, buildup_duration: 0.2,
swing_duration: 0.07,
hit_timing: 0.5, hit_timing: 0.5,
base_recover_duration: 0.6, recover_duration: 0.6,
forward_movement: 0.25, movement: (
damage_kind: Piercing, swing: Some(Forward(0.25)),
),
ori_modifier: 0.5,
), ),
], ],
initial_energy_gain: 5, energy_cost_per_strike: 0,
max_energy_gain: 5,
energy_increase: 0,
speed_increase: 0.0,
max_speed_increase: 0.0,
scales_from_combo: 0,
ori_modifier: 0.65,
) )

View File

@ -1,27 +1,18 @@
ComboMelee( BasicMelee(
stage_data: [ energy_cost: 0,
( buildup_duration: 0.1,
stage: 1, swing_duration: 0.07,
base_damage: 1.0, hit_timing: 0.5,
damage_increase: 0, recover_duration: 0.2,
base_poise_damage: 0, melee_constructor: (
poise_damage_increase: 0, kind: Stab(
knockback: 0.0, damage: 1,
poise: 0,
knockback: 0,
energy_regen: 0,
),
range: 2.5, range: 2.5,
angle: 150.0, angle: 150.0,
base_buildup_duration: 0.1,
base_swing_duration: 0.07,
hit_timing: 0.5,
base_recover_duration: 0.2,
forward_movement: 0.0,
damage_kind: Piercing,
), ),
],
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.6, ori_modifier: 0.6,
) )

View File

@ -1,27 +1,18 @@
ComboMelee( BasicMelee(
stage_data: [ energy_cost: 0,
( buildup_duration: 1.8,
stage: 1, swing_duration: 0.1,
base_damage: 60.0, hit_timing: 0.5,
damage_increase: 0, recover_duration: 1.8,
base_poise_damage: 40, melee_constructor: (
poise_damage_increase: 0, kind: Bash(
knockback: 3.0, damage: 60,
poise: 40,
knockback: 3,
energy_regen: 0,
),
range: 3.5, range: 3.5,
angle: 60.0, angle: 60.0,
base_buildup_duration: 1.8,
base_swing_duration: 0.1,
hit_timing: 0.5,
base_recover_duration: 1.8,
forward_movement: 3.0,
damage_kind: Crushing,
), ),
],
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, ori_modifier: 0.7,
) )

View File

@ -1,27 +1,25 @@
ComboMelee( ComboMelee2(
stage_data: [ strikes: [
( (
stage: 1, melee_constructor: (
base_damage: 54.0, kind: Bash(
damage_increase: 0, damage: 54,
base_poise_damage: 40, poise: 40,
poise_damage_increase: 0, knockback: 4,
knockback: 4.0, energy_regen: 0,
),
range: 7.5, range: 7.5,
angle: 60.0, angle: 60.0,
base_buildup_duration: 0.8, ),
base_swing_duration: 0.15, buildup_duration: 0.8,
swing_duration: 0.15,
hit_timing: 0.5, hit_timing: 0.5,
base_recover_duration: 0.8, recover_duration: 0.8,
forward_movement: 3.0, movement: (
damage_kind: Crushing, swing: Some(Forward(3.0)),
),
ori_modifier: 0.7,
), ),
], ],
initial_energy_gain: 0, energy_cost_per_strike: 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,
) )

View File

@ -1,59 +1,65 @@
ComboMelee( ComboMelee2(
stage_data: [ strikes: [
( (
stage: 1, melee_constructor: (
base_damage: 40.0, kind: Bash(
damage_increase: 0, damage: 40,
base_poise_damage: 32.5, poise: 32.5,
poise_damage_increase: 0, knockback: 3,
knockback: 3.0, energy_regen: 0,
),
range: 7.5, range: 7.5,
angle: 30.0, angle: 30.0,
base_buildup_duration: 1.3, ),
base_swing_duration: 0.15, buildup_duration: 1.3,
swing_duration: 0.15,
hit_timing: 0.5, hit_timing: 0.5,
base_recover_duration: 0.5, recover_duration: 0.5,
forward_movement: 1.0, movement: (
damage_kind: Crushing, swing: Some(Forward(1.0)),
),
ori_modifier: 0.7,
), ),
( (
stage: 2, melee_constructor: (
base_damage: 50.0, kind: Bash(
damage_increase: 0, damage: 50,
base_poise_damage: 32.5, poise: 32.5,
poise_damage_increase: 0, knockback: 3,
knockback: 3.0, energy_regen: 0,
),
range: 5.5, range: 5.5,
angle: 30.0, angle: 30.0,
base_buildup_duration: 0.2, ),
base_swing_duration: 0.15, buildup_duration: 0.2,
swing_duration: 0.15,
hit_timing: 0.5, hit_timing: 0.5,
base_recover_duration: 0.3, recover_duration: 0.3,
forward_movement: 1.0, movement: (
damage_kind: Crushing, swing: Some(Forward(1.0)),
),
ori_modifier: 0.7,
), ),
( (
stage: 3, melee_constructor: (
base_damage: 60.0, kind: Bash(
damage_increase: 0, damage: 60,
base_poise_damage: 32.5, poise: 32.5,
poise_damage_increase: 0, knockback: 25,
knockback: 25.0, energy_regen: 0,
),
range: 5.5, range: 5.5,
angle: 30.0, angle: 30.0,
base_buildup_duration: 0.4, ),
base_swing_duration: 0.125, buildup_duration: 0.4,
swing_duration: 0.125,
hit_timing: 0.5, hit_timing: 0.5,
base_recover_duration: 1.6, recover_duration: 1.6,
forward_movement: 1.0, movement: (
damage_kind: Crushing, swing: Some(Forward(1.0)),
),
ori_modifier: 0.7,
), ),
], ],
initial_energy_gain: 0, energy_cost_per_strike: 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,
) )

View File

@ -1,27 +1,25 @@
ComboMelee( ComboMelee2(
stage_data: [ strikes: [
( (
stage: 1, melee_constructor: (
base_damage: 22.0, kind: Bash(
damage_increase: 0, damage: 22,
base_poise_damage: 28, poise: 28,
poise_damage_increase: 0, knockback: 2,
knockback: 2.0, energy_regen: 0,
),
range: 3.0, range: 3.0,
angle: 15.0, angle: 15.0,
base_buildup_duration: 0.8, ),
base_swing_duration: 0.15, buildup_duration: 0.8,
swing_duration: 0.15,
hit_timing: 0.5, hit_timing: 0.5,
base_recover_duration: 0.8, recover_duration: 0.8,
forward_movement: 3.0, movement: (
damage_kind: Crushing, swing: Some(Forward(3.0)),
),
ori_modifier: 0.7,
), ),
], ],
initial_energy_gain: 0, energy_cost_per_strike: 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,
) )

View File

@ -1,59 +1,65 @@
ComboMelee( ComboMelee2(
stage_data: [ strikes: [
( (
stage: 1, melee_constructor: (
base_damage: 16.5, kind: Bash(
damage_increase: 0, damage: 16.5,
base_poise_damage: 20, poise: 20,
poise_damage_increase: 0, knockback: 3,
knockback: 3.0, energy_regen: 0,
),
range: 3.0, range: 3.0,
angle: 15.0, angle: 15.0,
base_buildup_duration: 0.95, ),
base_swing_duration: 0.15, buildup_duration: 0.95,
swing_duration: 0.15,
hit_timing: 0.5, hit_timing: 0.5,
base_recover_duration: 0.50, recover_duration: 0.5,
forward_movement: 1.0, movement: (
damage_kind: Crushing, swing: Some(Forward(1.0)),
),
ori_modifier: 0.6,
), ),
( (
stage: 2, melee_constructor: (
base_damage: 30.0, kind: Bash(
damage_increase: 0, damage: 30,
base_poise_damage: 20, poise: 20,
poise_damage_increase: 0, knockback: 3,
knockback: 3.0, energy_regen: 0,
),
range: 3.0, range: 3.0,
angle: 15.0, angle: 15.0,
base_buildup_duration: 0.65, ),
base_swing_duration: 0.15, buildup_duration: 0.65,
swing_duration: 0.15,
hit_timing: 0.5, hit_timing: 0.5,
base_recover_duration: 0.50, recover_duration: 0.5,
forward_movement: 1.0, movement: (
damage_kind: Crushing, swing: Some(Forward(1.0)),
),
ori_modifier: 0.6,
), ),
( (
stage: 3, melee_constructor: (
base_damage: 36.0, kind: Bash(
damage_increase: 0, damage: 36,
base_poise_damage: 20, poise: 20,
poise_damage_increase: 0, knockback: 3,
knockback: 3.0, energy_regen: 0,
),
range: 3.0, range: 3.0,
angle: 15.0, angle: 15.0,
base_buildup_duration: 0.525, ),
base_swing_duration: 0.125, buildup_duration: 0.525,
swing_duration: 0.125,
hit_timing: 0.5, hit_timing: 0.5,
base_recover_duration: 1.25, recover_duration: 1.25,
forward_movement: 1.0, movement: (
damage_kind: Crushing, swing: Some(Forward(1.0)),
),
ori_modifier: 0.6,
), ),
], ],
initial_energy_gain: 0, energy_cost_per_strike: 0,
max_energy_gain: 0,
energy_increase: 0,
speed_increase: 0.0,
max_speed_increase: 0.0,
scales_from_combo: 0,
ori_modifier: 0.6,
) )

View File

@ -1,59 +1,65 @@
ComboMelee( ComboMelee2(
stage_data: [ strikes: [
( (
stage: 1, melee_constructor: (
base_damage: 30.0, kind: Bash(
damage_increase: 0, damage: 30,
base_poise_damage: 17.5, poise: 17.5,
poise_damage_increase: 0, knockback: 3,
knockback: 3.0, energy_regen: 0,
),
range: 4.5, range: 4.5,
angle: 30.0, angle: 30.0,
base_buildup_duration: 1.3, ),
base_swing_duration: 0.15, buildup_duration: 1.3,
swing_duration: 0.15,
hit_timing: 0.5, hit_timing: 0.5,
base_recover_duration: 0.5, recover_duration: 0.5,
forward_movement: 1.0, movement: (
damage_kind: Crushing, swing: Some(Forward(1.0)),
),
ori_modifier: 0.7,
), ),
( (
stage: 2, melee_constructor: (
base_damage: 30.0, kind: Bash(
damage_increase: 0, damage: 30,
base_poise_damage: 20.5, poise: 20.5,
poise_damage_increase: 0, knockback: 3,
knockback: 3.0, energy_regen: 0,
),
range: 4.5, range: 4.5,
angle: 30.0, angle: 30.0,
base_buildup_duration: 0.2, ),
base_swing_duration: 0.15, buildup_duration: 0.2,
swing_duration: 0.15,
hit_timing: 0.5, hit_timing: 0.5,
base_recover_duration: 0.3, recover_duration: 0.3,
forward_movement: 1.0, movement: (
damage_kind: Crushing, swing: Some(Forward(1.0)),
),
ori_modifier: 0.7,
), ),
( (
stage: 3, melee_constructor: (
base_damage: 30.0, kind: Bash(
damage_increase: 0, damage: 30,
base_poise_damage: 22.5, poise: 22.5,
poise_damage_increase: 0, knockback: 25,
knockback: 25.0, energy_regen: 0,
),
range: 5.5, range: 5.5,
angle: 30.0, angle: 30.0,
base_buildup_duration: 0.4, ),
base_swing_duration: 0.125, buildup_duration: 0.4,
swing_duration: 0.125,
hit_timing: 0.5, hit_timing: 0.5,
base_recover_duration: 1.6, recover_duration: 1.6,
forward_movement: 1.0, movement: (
damage_kind: Crushing, swing: Some(Forward(1.0)),
),
ori_modifier: 0.7,
), ),
], ],
initial_energy_gain: 0, energy_cost_per_strike: 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,
) )

View File

@ -1,27 +1,18 @@
ComboMelee( BasicMelee(
stage_data: [ energy_cost: 0,
( buildup_duration: 1.2,
stage: 1, swing_duration: 0.4,
base_damage: 36.0, hit_timing: 0.5,
damage_increase: 0, recover_duration: 0.8,
base_poise_damage: 40, melee_constructor: (
poise_damage_increase: 0, kind: Bash(
knockback: 3.0, damage: 36,
poise: 40,
knockback: 3,
energy_regen: 0,
),
range: 2.5, range: 2.5,
angle: 30.0, angle: 30.0,
base_buildup_duration: 1.2,
base_swing_duration: 0.4,
hit_timing: 0.5,
base_recover_duration: 0.8,
forward_movement: 5.0,
damage_kind: Crushing,
), ),
],
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, ori_modifier: 0.7,
) )

View File

@ -1,33 +1,25 @@
ComboMelee( ComboMelee2(
stage_data: [ strikes: [
( (
stage: 1, melee_constructor: (
base_damage: 2.0, kind: Slash(
damage_increase: 1.0, damage: 2,
base_poise_damage: 8, poise: 8,
poise_damage_increase: 0, knockback: 8,
knockback: 8.0, energy_regen: 0,
),
range: 3.5, range: 3.5,
angle: 50.0, angle: 50.0,
base_buildup_duration: 0.1, ),
base_swing_duration: 0.05, buildup_duration: 0.1,
swing_duration: 0.05,
hit_timing: 0.5, hit_timing: 0.5,
base_recover_duration: 0.05, recover_duration: 0.05,
forward_movement: 1.0, movement: (
damage_kind: Slashing, swing: Some(Forward(1.0)),
damage_effect: Some(Buff(( ),
kind: Bleeding, ori_modifier: 0.7,
dur_secs: 10.0,
strength: DamageFraction(0.1),
chance: 0.1,
))),
), ),
], ],
initial_energy_gain: 0, energy_cost_per_strike: 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,
) )

View File

@ -1,4 +1,4 @@
ComboMelee( ComboMeleeDeprecated(
stage_data: [( stage_data: [(
stage: 1, stage: 1,
base_damage: 15.0, base_damage: 15.0,

View File

@ -1,43 +1,45 @@
ComboMelee( ComboMelee2(
stage_data: [ strikes: [
( (
stage: 1, melee_constructor: (
base_damage: 24.0, kind: Bash(
damage_increase: 1.0, damage: 24,
base_poise_damage: 40, poise: 40,
poise_damage_increase: 0, knockback: 4,
knockback: 4.0, energy_regen: 0,
),
range: 4.5, range: 4.5,
angle: 50.0, angle: 50.0,
base_buildup_duration: 0.6, ),
base_swing_duration: 0.08, buildup_duration: 0.6,
swing_duration: 0.08,
hit_timing: 0.5, hit_timing: 0.5,
base_recover_duration: 0.6, recover_duration: 0.6,
forward_movement: 3.5, movement: (
damage_kind: Crushing, swing: Some(Forward(3.5)),
),
ori_modifier: 0.65,
), ),
( (
stage: 2, melee_constructor: (
base_damage: 32.0, kind: Bash(
damage_increase: 1.5, damage: 32,
base_poise_damage: 40, poise: 40,
poise_damage_increase: 0, knockback: 16,
knockback: 16.0, energy_regen: 0,
),
range: 2.5, range: 2.5,
angle: 30.0, angle: 30.0,
base_buildup_duration: 0.6, ),
base_swing_duration: 0.25, buildup_duration: 0.6,
swing_duration: 0.25,
hit_timing: 0.5, hit_timing: 0.5,
base_recover_duration: 1.2, recover_duration: 1.2,
forward_movement: 2.0, movement: (
damage_kind: Crushing, swing: Some(Forward(2.0)),
),
ori_modifier: 0.65,
), ),
], ],
initial_energy_gain: 0, energy_cost_per_strike: 0,
max_energy_gain: 0,
energy_increase: 0,
speed_increase: 0.0,
max_speed_increase: 0.0,
scales_from_combo: 0,
ori_modifier: 0.65,
) )

View File

@ -1,20 +1,15 @@
ComboMelee( ComboMelee2(
stage_data: [ strikes: [
( (
stage: 1, melee_constructor: (
base_damage: 6.5, kind: Stab(
damage_increase: 0, damage: 6.5,
base_poise_damage: 18, poise: 18,
poise_damage_increase: 0, knockback: 4,
knockback: 4.0, energy_regen: 0,
),
range: 2.5, range: 2.5,
angle: 15.0, angle: 15.0,
base_buildup_duration: 0.35,
base_swing_duration: 0.075,
hit_timing: 0.5,
base_recover_duration: 0.4,
forward_movement: 0.7,
damage_kind: Piercing,
damage_effect: Some(Buff(( damage_effect: Some(Buff((
kind: Bleeding, kind: Bleeding,
dur_secs: 10.0, dur_secs: 10.0,
@ -22,21 +17,25 @@ ComboMelee(
chance: 0.1, chance: 0.1,
))), ))),
), ),
buildup_duration: 0.35,
swing_duration: 0.075,
hit_timing: 0.5,
recover_duration: 0.4,
movement: (
swing: Some(Forward(0.7)),
),
ori_modifier: 0.75,
),
( (
stage: 2, melee_constructor: (
base_damage: 8.0, kind: Stab(
damage_increase: 0, damage: 8,
base_poise_damage: 18, poise: 18,
poise_damage_increase: 0, knockback: 7,
knockback: 7.0, energy_regen: 0,
),
range: 2.5, range: 2.5,
angle: 15.0, angle: 15.0,
base_buildup_duration: 0.5,
base_swing_duration: 0.1,
hit_timing: 0.5,
base_recover_duration: 0.5,
forward_movement: 0.7,
damage_kind: Piercing,
damage_effect: Some(Buff(( damage_effect: Some(Buff((
kind: Bleeding, kind: Bleeding,
dur_secs: 10.0, dur_secs: 10.0,
@ -44,12 +43,15 @@ ComboMelee(
chance: 0.1, chance: 0.1,
))), ))),
), ),
buildup_duration: 0.5,
swing_duration: 0.1,
hit_timing: 0.5,
recover_duration: 0.5,
movement: (
swing: Some(Forward(0.7)),
),
ori_modifier: 0.75,
),
], ],
initial_energy_gain: 0, energy_cost_per_strike: 0,
max_energy_gain: 0,
energy_increase: 3.0,
speed_increase: 0.0,
max_speed_increase: 0.0,
scales_from_combo: 2,
ori_modifier: 0.75,
) )

View File

@ -1,20 +1,15 @@
ComboMelee( ComboMelee2(
stage_data: [ strikes: [
( (
stage: 1, melee_constructor: (
base_damage: 8.0, kind: Slash(
damage_increase: 1.0, damage: 8,
base_poise_damage: 15, poise: 15,
poise_damage_increase: 0, knockback: 8,
knockback: 8.0, energy_regen: 0,
),
range: 3.5, range: 3.5,
angle: 50.0, angle: 50.0,
base_buildup_duration: 0.4,
base_swing_duration: 0.08,
hit_timing: 0.5,
base_recover_duration: 0.5,
forward_movement: 2.5,
damage_kind: Slashing,
damage_effect: Some(Buff(( damage_effect: Some(Buff((
kind: Bleeding, kind: Bleeding,
dur_secs: 10.0, dur_secs: 10.0,
@ -22,21 +17,25 @@ ComboMelee(
chance: 0.1, chance: 0.1,
))), ))),
), ),
buildup_duration: 0.4,
swing_duration: 0.08,
hit_timing: 0.5,
recover_duration: 0.5,
movement: (
swing: Some(Forward(2.5)),
),
ori_modifier: 0.7,
),
( (
stage: 2, melee_constructor: (
base_damage: 10.0, kind: Slash(
damage_increase: 1.5, damage: 10,
base_poise_damage: 20, poise: 20,
poise_damage_increase: 0, knockback: 12,
knockback: 12.0, energy_regen: 0,
),
range: 3.5, range: 3.5,
angle: 30.0, angle: 30.0,
base_buildup_duration: 0.7,
base_swing_duration: 0.1,
hit_timing: 0.5,
base_recover_duration: 0.7,
forward_movement: 2.0,
damage_kind: Slashing,
damage_effect: Some(Buff(( damage_effect: Some(Buff((
kind: Bleeding, kind: Bleeding,
dur_secs: 10.0, dur_secs: 10.0,
@ -44,12 +43,15 @@ ComboMelee(
chance: 0.1, chance: 0.1,
))), ))),
), ),
], buildup_duration: 0.7,
initial_energy_gain: 0, swing_duration: 0.1,
max_energy_gain: 0, hit_timing: 0.5,
energy_increase: 0, recover_duration: 0.7,
speed_increase: 0.0, movement: (
max_speed_increase: 0.0, swing: Some(Forward(2.0)),
scales_from_combo: 0, ),
ori_modifier: 0.7, ori_modifier: 0.7,
),
],
energy_cost_per_strike: 0,
) )

View File

@ -1,11 +1,11 @@
ItemDef( ItemDef(
name: "Twiggy Shoulders", name: "Twig Shoulders",
description: "Spaulders made from tightly tied twigs.", description: "Spaulders made from tightly tied twigs.",
kind: Armor(( kind: Armor((
kind: Shoulder, kind: Shoulder,
stats: FromSet("Twigs"), stats: FromSet("Twigs"),
)), )),
quality: Common, quality: Moderate,
tags: [ tags: [
SalvageInto(Twig, 1), SalvageInto(Twig, 1),
], ],

View File

@ -0,0 +1,27 @@
ItemDef(
name: "Potion of Agility",
description: "Fly, you fools!",
kind: Consumable(
kind: Drink,
effects: All([
Buff((
kind: Agility,
data: (
strength: 0.55,
duration: Some(25),
),
cat_ids: [Natural],
)),
Buff((
kind: PotionSickness,
data: (
strength: 0.5,
duration: Some(60),
),
cat_ids: [Natural],
)),
])
),
quality: Moderate,
tags: [Potion],
)

View File

@ -1,5 +1,5 @@
ItemDef( ItemDef(
name: "Burning Potion", name: "Potion of Combustion",
description: "Sets the user ablaze", description: "Sets the user ablaze",
kind: Consumable( kind: Consumable(
kind: Drink, kind: Drink,

View File

@ -31,8 +31,8 @@
], ],
craft_sprite: Some(Anvil), craft_sprite: Some(Anvil),
), ),
"potion_burning": ( "potion_combustion": (
output: ("common.items.consumable.potion_burning", 1), output: ("common.items.consumable.potion_combustion", 1),
inputs: [ inputs: [
(Item("common.items.crafting_ing.empty_vial"), 1, false), (Item("common.items.crafting_ing.empty_vial"), 1, false),
(Item("common.items.crafting_ing.living_embers"), 3, false), (Item("common.items.crafting_ing.living_embers"), 3, false),
@ -40,6 +40,16 @@
], ],
craft_sprite: Some(Cauldron), craft_sprite: Some(Cauldron),
), ),
"potion_agility": (
output: ("common.items.consumable.potion_agility", 1),
inputs: [
(Item("common.items.crafting_ing.empty_vial"), 1, false),
(Item("common.items.mineral.ore.veloritefrag"), 2, false),
(Item("common.items.crafting_ing.animal_misc.raptor_feather"), 2, false),
(Item("common.items.crafting_ing.animal_misc.viscous_ooze"), 3, false),
],
craft_sprite: Some(Cauldron),
),
"potion_s": ( "potion_s": (
output: ("common.items.consumable.potion_minor", 1), output: ("common.items.consumable.potion_minor", 1),
inputs: [ inputs: [

View File

@ -307,6 +307,19 @@
// Dungeon music // Dungeon music
Individual((
title: "A Heart's Ice-Cold Protection",
path: "voxygen.audio.soundtrack.dungeon.a_hearts_ice-cold_protection",
length: 205.0,
timing: None,
weather: None,
biomes:[],
sites: [
Dungeon(Adlet),
],
music_state: Activity(Explore),
artist: ("GeekyGami", "https://geekygami.newgrounds.com/audio/"),
)),
Individual(( Individual((
title: "Mysty Temple", title: "Mysty Temple",
path: "voxygen.audio.soundtrack.dungeon.mysty_temple", path: "voxygen.audio.soundtrack.dungeon.mysty_temple",
@ -316,6 +329,7 @@
biomes:[], biomes:[],
sites: [ sites: [
Dungeon(Old), Dungeon(Old),
Dungeon(Adlet),
], ],
music_state: Activity(Explore), music_state: Activity(Explore),
artist: ("Tiny", None), artist: ("Tiny", None),
@ -342,6 +356,7 @@
biomes: [], biomes: [],
sites: [ sites: [
Dungeon(Old), Dungeon(Old),
Dungeon(Adlet),
], ],
music_state: Activity(Explore), music_state: Activity(Explore),
artist: ("Aeronic", "https://soundcloud.com/aeronic"), artist: ("Aeronic", "https://soundcloud.com/aeronic"),
@ -355,6 +370,7 @@
biomes: [], biomes: [],
sites: [ sites: [
Dungeon(Old), Dungeon(Old),
Dungeon(Adlet),
], ],
music_state: Activity(Explore), music_state: Activity(Explore),
artist: ("Aeronic", "https://soundcloud.com/aeronic"), artist: ("Aeronic", "https://soundcloud.com/aeronic"),
@ -436,8 +452,8 @@
Dungeon(Old), Dungeon(Old),
], ],
segments: [ segments: [
("voxygen.audio.soundtrack.combat.barred_paths.barred_paths-start", 56.0, Transition(Explore, Combat(High)), Some(Combat(High))), ("voxygen.audio.soundtrack.combat.barred_paths.barred_paths-start", 61.818, Transition(Explore, Combat(High)), Some(Combat(High))),
("voxygen.audio.soundtrack.combat.barred_paths.barred_paths-loop", 54.0, Activity(Combat(High)), None), ("voxygen.audio.soundtrack.combat.barred_paths.barred_paths-loop", 54.545, Activity(Combat(High)), None),
("voxygen.audio.soundtrack.combat.barred_paths.barred_paths-end", 6.0, Transition(Combat(High), Explore), None), ("voxygen.audio.soundtrack.combat.barred_paths.barred_paths-end", 6.0, Transition(Combat(High), Explore), None),
], ],
artist: ("DaforLynx", "https://daforlynx.neocities.org/"), artist: ("DaforLynx", "https://daforlynx.neocities.org/"),
@ -451,14 +467,14 @@
Dungeon(Old), Dungeon(Old),
], ],
segments: [ segments: [
("voxygen.audio.soundtrack.combat.reversal.reversal-start", 60.0, Transition(Explore, Combat(High)), Some(Combat(High))), ("voxygen.audio.soundtrack.combat.reversal.reversal-start", 61.666, Transition(Explore, Combat(High)), Some(Combat(High))),
("voxygen.audio.soundtrack.combat.reversal.reversal-loop", 60.0, Activity(Combat(High)), None), ("voxygen.audio.soundtrack.combat.reversal.reversal-loop", 60.0, Activity(Combat(High)), None),
("voxygen.audio.soundtrack.combat.reversal.reversal-end", 4.0, Transition(Combat(High), Explore), None), ("voxygen.audio.soundtrack.combat.reversal.reversal-end", 3.666, Transition(Combat(High), Explore), None),
], ],
artist: ("DaforLynx", "https://daforlynx.neocities.org/"), artist: ("DaforLynx", "https://daforlynx.neocities.org/"),
), ),
Segmented( Segmented(
title: "Valiant Voxels", title: "Clash",
timing: None, timing: None,
weather: None, weather: None,
biomes: [], biomes: [],
@ -466,11 +482,11 @@
Dungeon(Old), Dungeon(Old),
], ],
segments: [ segments: [
("voxygen.audio.soundtrack.combat.valiant_voxels.valiant_voxels-start", 7.846, Transition(Explore, Combat(High)), Some(Combat(High))), ("voxygen.audio.soundtrack.combat.clash.clash-start", 121.5, Transition(Explore, Combat(High)), Some(Combat(High))),
("voxygen.audio.soundtrack.combat.valiant_voxels.valiant_voxels-loop", 59.126, Activity(Combat(High)), None), ("voxygen.audio.soundtrack.combat.clash.clash-loop", 81.0, Activity(Combat(High)), None),
("voxygen.audio.soundtrack.combat.valiant_voxels.valiant_voxels-end", 5.49, Transition(Combat(High), Explore), None), ("voxygen.audio.soundtrack.combat.clash.clash-end", 1.5, Transition(Combat(High), Explore), None),
], ],
artist: ("Seventh Sam", "https://seventhsam.com/"), artist: ("Alfredo Pompa D & Rodriogo Plata", None),
), ),
] ]
) )

View File

@ -165,6 +165,19 @@
// Dungeon music // Dungeon music
Individual((
title: "A Heart's Ice-Cold Protection",
path: "voxygen.audio.soundtrack.dungeon.a_hearts_ice-cold_protection",
length: 205.0,
timing: None,
weather: None,
biomes:[],
sites: [
Dungeon(Adlet),
],
music_state: Activity(Explore),
artist: ("GeekyGami", "https://geekygami.newgrounds.com/audio/"),
)),
Individual(( Individual((
title: "Mysty Temple", title: "Mysty Temple",
path: "voxygen.audio.soundtrack.dungeon.mysty_temple", path: "voxygen.audio.soundtrack.dungeon.mysty_temple",
@ -174,6 +187,7 @@
biomes:[], biomes:[],
sites: [ sites: [
Dungeon(Old), Dungeon(Old),
Dungeon(Adlet),
], ],
music_state: Activity(Explore), music_state: Activity(Explore),
artist: ("Tiny", None), artist: ("Tiny", None),
@ -200,6 +214,7 @@
biomes: [], biomes: [],
sites: [ sites: [
Dungeon(Old), Dungeon(Old),
Dungeon(Adlet),
], ],
music_state: Activity(Explore), music_state: Activity(Explore),
artist: ("Aeronic", "https://soundcloud.com/aeronic"), artist: ("Aeronic", "https://soundcloud.com/aeronic"),
@ -213,6 +228,7 @@
biomes: [], biomes: [],
sites: [ sites: [
Dungeon(Old), Dungeon(Old),
Dungeon(Adlet),
], ],
music_state: Activity(Explore), music_state: Activity(Explore),
artist: ("Aeronic", "https://soundcloud.com/aeronic"), artist: ("Aeronic", "https://soundcloud.com/aeronic"),
@ -294,8 +310,8 @@
Dungeon(Old), Dungeon(Old),
], ],
segments: [ segments: [
("voxygen.audio.soundtrack.combat.barred_paths.barred_paths-start", 56.0, Transition(Explore, Combat(High)), Some(Combat(High))), ("voxygen.audio.soundtrack.combat.barred_paths.barred_paths-start", 61.818, Transition(Explore, Combat(High)), Some(Combat(High))),
("voxygen.audio.soundtrack.combat.barred_paths.barred_paths-loop", 54.0, Activity(Combat(High)), None), ("voxygen.audio.soundtrack.combat.barred_paths.barred_paths-loop", 54.545, Activity(Combat(High)), None),
("voxygen.audio.soundtrack.combat.barred_paths.barred_paths-end", 6.0, Transition(Combat(High), Explore), None), ("voxygen.audio.soundtrack.combat.barred_paths.barred_paths-end", 6.0, Transition(Combat(High), Explore), None),
], ],
artist: ("DaforLynx", "https://daforlynx.neocities.org/"), artist: ("DaforLynx", "https://daforlynx.neocities.org/"),
@ -309,11 +325,26 @@
Dungeon(Old), Dungeon(Old),
], ],
segments: [ segments: [
("voxygen.audio.soundtrack.combat.reversal.reversal-start", 60.0, Transition(Explore, Combat(High)), Some(Combat(High))), ("voxygen.audio.soundtrack.combat.reversal.reversal-start", 61.666, Transition(Explore, Combat(High)), Some(Combat(High))),
("voxygen.audio.soundtrack.combat.reversal.reversal-loop", 60.0, Activity(Combat(High)), None), ("voxygen.audio.soundtrack.combat.reversal.reversal-loop", 60.0, Activity(Combat(High)), None),
("voxygen.audio.soundtrack.combat.reversal.reversal-end", 4.0, Transition(Combat(High), Explore), None), ("voxygen.audio.soundtrack.combat.reversal.reversal-end", 3.666, Transition(Combat(High), Explore), None),
], ],
artist: ("DaforLynx", "https://daforlynx.neocities.org/"), artist: ("DaforLynx", "https://daforlynx.neocities.org/"),
), ),
Segmented(
title: "Clash",
timing: None,
weather: None,
biomes: [],
sites: [
Dungeon(Old),
],
segments: [
("voxygen.audio.soundtrack.combat.clash.clash-start", 121.5, Transition(Explore, Combat(High)), Some(Combat(High))),
("voxygen.audio.soundtrack.combat.clash.clash-loop", 81.0, Activity(Combat(High)), None),
("voxygen.audio.soundtrack.combat.clash.clash-end", 1.5, Transition(Combat(High), Explore), None),
],
artist: ("Alfredo Pompa D & Rodriogo Plata", None),
),
] ]
) )

View File

@ -397,27 +397,6 @@
threshold: 0.7, threshold: 0.7,
subtitle: "subtitle-hammer-attack", subtitle: "subtitle-hammer-attack",
), ),
Attack(ComboMelee(Action, 1), Sword): (
files: [
"voxygen.audio.sfx.abilities.swing_sword",
],
threshold: 0.7,
subtitle: "subtitle-sword_attack",
),
Attack(ComboMelee(Action, 2), Sword): (
files: [
"voxygen.audio.sfx.abilities.separated_second_swing",
],
threshold: 0.7,
subtitle: "subtitle-sword_attack",
),
Attack(ComboMelee(Action, 3), Sword): (
files: [
"voxygen.audio.sfx.abilities.separated_third_swing",
],
threshold: 0.7,
subtitle: "subtitle-sword_attack",
),
Inventory(CollectedTool(Sword)): ( Inventory(CollectedTool(Sword)): (
files: [ files: [
"voxygen.audio.sfx.inventory.pickup_sword", "voxygen.audio.sfx.inventory.pickup_sword",
@ -443,7 +422,7 @@
threshold: 0.5, threshold: 0.5,
subtitle: "subtitle-unwield_hammer", subtitle: "subtitle-unwield_hammer",
), ),
Attack(ComboMelee(Action, 1), Hammer): ( Attack(ComboMeleeDeprecated(Action, 1), Hammer): (
files: [ files: [
"voxygen.audio.sfx.abilities.swing", "voxygen.audio.sfx.abilities.swing",
], ],
@ -489,20 +468,6 @@
threshold: 0.5, threshold: 0.5,
subtitle: "subtitle-unwield_axe", subtitle: "subtitle-unwield_axe",
), ),
Attack(ComboMelee(Action, 1), Axe): (
files: [
"voxygen.audio.sfx.abilities.swing",
],
threshold: 0.7,
subtitle: "subtitle-axe_attack",
),
Attack(ComboMelee(Action, 2), Axe): (
files: [
"voxygen.audio.sfx.abilities.swing",
],
threshold: 0.7,
subtitle: "subtitle-axe_attack",
),
Attack(RapidMelee(Action), Axe): ( Attack(RapidMelee(Action), Axe): (
files: [ files: [
"voxygen.audio.sfx.abilities.swing", "voxygen.audio.sfx.abilities.swing",
@ -549,13 +514,6 @@
threshold: 0.5, threshold: 0.5,
subtitle: "subtitle-unwield_staff", subtitle: "subtitle-unwield_staff",
), ),
Attack(BasicBeam, Staff): (
files: [
"voxygen.audio.sfx.abilities.flame_thrower",
],
threshold: 0.2,
subtitle: "subtitle-staff_attack",
),
//Attack(BasicRanged, Staff): ( //Attack(BasicRanged, Staff): (
// files: [ // files: [
// "voxygen.audio.sfx.abilities.staff_channeling", // "voxygen.audio.sfx.abilities.staff_channeling",

View File

@ -16,6 +16,20 @@
// Overworld exploration tracks // Overworld exploration tracks
Individual((
title: "Graceful Journey",
path: "voxygen.audio.soundtrack.overworld.graceful_journey",
length: 240.0,
timing: Day,
weather: None,
biomes: [
(Lake, 1),
(Grassland, 1),
],
sites: [Void],
music_state: Activity(Explore),
artist: ("Tobias Thy - (Thy SFX)", "https://soundcloud.com/thyofficial"),
)),
Individual(( Individual((
title: "A Cold Breeze Blows", title: "A Cold Breeze Blows",
path: "voxygen.audio.soundtrack.overworld.a_cold_breeze_blows", path: "voxygen.audio.soundtrack.overworld.a_cold_breeze_blows",
@ -744,6 +758,19 @@
// Dungeon music // Dungeon music
Individual((
title: "A Heart's Ice-Cold Protection",
path: "voxygen.audio.soundtrack.dungeon.a_hearts_ice-cold_protection",
length: 205.0,
timing: None,
weather: None,
biomes:[],
sites: [
Dungeon(Adlet),
],
music_state: Activity(Explore),
artist: ("GeekyGami", "https://geekygami.newgrounds.com/audio/"),
)),
Individual(( Individual((
title: "Mysty Temple", title: "Mysty Temple",
path: "voxygen.audio.soundtrack.dungeon.mysty_temple", path: "voxygen.audio.soundtrack.dungeon.mysty_temple",
@ -753,6 +780,7 @@
biomes:[], biomes:[],
sites: [ sites: [
Dungeon(Old), Dungeon(Old),
Dungeon(Adlet),
], ],
music_state: Activity(Explore), music_state: Activity(Explore),
artist: ("Tiny", None), artist: ("Tiny", None),
@ -779,6 +807,7 @@
biomes: [], biomes: [],
sites: [ sites: [
Dungeon(Old), Dungeon(Old),
Dungeon(Adlet),
], ],
music_state: Activity(Explore), music_state: Activity(Explore),
artist: ("Aeronic", "https://soundcloud.com/aeronic"), artist: ("Aeronic", "https://soundcloud.com/aeronic"),
@ -792,6 +821,7 @@
biomes: [], biomes: [],
sites: [ sites: [
Dungeon(Old), Dungeon(Old),
Dungeon(Adlet),
], ],
music_state: Activity(Explore), music_state: Activity(Explore),
artist: ("Aeronic", "https://soundcloud.com/aeronic"), artist: ("Aeronic", "https://soundcloud.com/aeronic"),
@ -873,8 +903,8 @@
Dungeon(Old), Dungeon(Old),
], ],
segments: [ segments: [
("voxygen.audio.soundtrack.combat.barred_paths.barred_paths-start", 56.0, Transition(Explore, Combat(High)), Some(Combat(High))), ("voxygen.audio.soundtrack.combat.barred_paths.barred_paths-start", 61.818, Transition(Explore, Combat(High)), Some(Combat(High))),
("voxygen.audio.soundtrack.combat.barred_paths.barred_paths-loop", 54.0, Activity(Combat(High)), None), ("voxygen.audio.soundtrack.combat.barred_paths.barred_paths-loop", 54.545, Activity(Combat(High)), None),
("voxygen.audio.soundtrack.combat.barred_paths.barred_paths-end", 6.0, Transition(Combat(High), Explore), None), ("voxygen.audio.soundtrack.combat.barred_paths.barred_paths-end", 6.0, Transition(Combat(High), Explore), None),
], ],
artist: ("DaforLynx", "https://daforlynx.neocities.org/"), artist: ("DaforLynx", "https://daforlynx.neocities.org/"),
@ -888,11 +918,26 @@
Dungeon(Old), Dungeon(Old),
], ],
segments: [ segments: [
("voxygen.audio.soundtrack.combat.reversal.reversal-start", 60.0, Transition(Explore, Combat(High)), Some(Combat(High))), ("voxygen.audio.soundtrack.combat.reversal.reversal-start", 61.666, Transition(Explore, Combat(High)), Some(Combat(High))),
("voxygen.audio.soundtrack.combat.reversal.reversal-loop", 60.0, Activity(Combat(High)), None), ("voxygen.audio.soundtrack.combat.reversal.reversal-loop", 60.0, Activity(Combat(High)), None),
("voxygen.audio.soundtrack.combat.reversal.reversal-end", 4.0, Transition(Combat(High), Explore), None), ("voxygen.audio.soundtrack.combat.reversal.reversal-end", 3.666, Transition(Combat(High), Explore), None),
], ],
artist: ("DaforLynx", "https://daforlynx.neocities.org/"), artist: ("DaforLynx", "https://daforlynx.neocities.org/"),
), ),
Segmented(
title: "Clash",
timing: None,
weather: None,
biomes: [],
sites: [
Dungeon(Old),
],
segments: [
("voxygen.audio.soundtrack.combat.clash.clash-start", 121.5, Transition(Explore, Combat(High)), Some(Combat(High))),
("voxygen.audio.soundtrack.combat.clash.clash-loop", 81.0, Activity(Combat(High)), None),
("voxygen.audio.soundtrack.combat.clash.clash-end", 1.5, Transition(Combat(High), Explore), None),
],
artist: ("Alfredo Pompa D & Rodriogo Plata", None),
),
] ]
) )

BIN
assets/voxygen/audio/soundtrack/combat/clash/clash-end.ogg (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/audio/soundtrack/combat/clash/clash-loop.ogg (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/audio/soundtrack/combat/clash/clash-start.ogg (Stored with Git LFS) Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -5,6 +5,14 @@ buff-stat-health = Restores { $str_total } Health
## Potion ## Potion
buff-title-potion = Potion buff-title-potion = Potion
buff-desc-potion = Drinking... buff-desc-potion = Drinking...
## Agility
buff-title-agility = Agility
buff-desc-agility = Your movement is faster, but you deal less damage, and take more damage.
buff-stat-agility =
Increases movement speed by { $strength }%.
but decreases your damage by 100%,
and increases your damage vulnerability
by 100%.
## Saturation ## Saturation
buff-title-saturation = Saturation buff-title-saturation = Saturation
buff-desc-saturation = Gain health over time from consumables. buff-desc-saturation = Gain health over time from consumables.
@ -69,9 +77,9 @@ buff-title-parried = Parried
buff-desc-parried = You were parried and now are slow to recover. buff-desc-parried = You were parried and now are slow to recover.
## Potion sickness ## Potion sickness
buff-title-potionsickness = Potion sickness buff-title-potionsickness = Potion sickness
buff-desc-potionsickness = Potions heal you less after recently consuming a potion. buff-desc-potionsickness = Potions have less positive effect on you after recently consuming a potion.
buff-stat-potionsickness = buff-stat-potionsickness =
Decreases the amount you heal from Decreases the positive effects of
subsequent potions by { $strength }%. subsequent potions by { $strength }%.
## Reckless ## Reckless
buff-title-reckless = Reckless buff-title-reckless = Reckless

View File

@ -38,6 +38,7 @@ main-singleplayer-regenerate = Regenerate
main-singleplayer-create_custom = Create Custom main-singleplayer-create_custom = Create Custom
main-singleplayer-invalid_name = Error: Invalid name main-singleplayer-invalid_name = Error: Invalid name
main-singleplayer-seed = Seed main-singleplayer-seed = Seed
main-singleplayer-day_length = Day duration
main-singleplayer-random_seed = Random main-singleplayer-random_seed = Random
main-singleplayer-size_lg = Logarithmic size main-singleplayer-size_lg = Logarithmic size
main-singleplayer-map_large_warning = Warning: Large worlds will take a long time to start for the first time main-singleplayer-map_large_warning = Warning: Large worlds will take a long time to start for the first time

View File

@ -94,6 +94,10 @@ buff-desc-wet = Земля плутає ваші ноги ускладнючи
buff-title-ensnared = Пастка buff-title-ensnared = Пастка
buff-desc-ensnared = Ліани опутують ваші ноги, перешкоджаючи ходьбі. buff-desc-ensnared = Ліани опутують ваші ноги, перешкоджаючи ходьбі.
## Fortitude
buff-title-fortitude = Стійкість
buff-desc-fortitude = Ви протистоїте дезорієнтації. Коли отримуєте ушкодження вам легше дезорієнтувати інших.
## Util ## Util
buff-text-for_seconds = протягом { $dur_secs } сек. buff-text-for_seconds = протягом { $dur_secs } сек.
@ -143,6 +147,9 @@ buff-desc-bloodfeast = Атаки по ворогам, які кровоточа
## Berserk ## Berserk
buff-title-berserk = Берсерк buff-title-berserk = Берсерк
buff-desc-berserk = Ви перебуваєте в шаленій люті, через що ваші атаки стають сильнішими та стрімкішими, а ваша швидкість збільшується. Однак у результаті ваші захисні можливості зменшуються buff-desc-berserk = Ви перебуваєте в шаленій люті, через що ваші атаки стають сильнішими та стрімкішими, а ваша швидкість збільшується. Однак у результаті ваші захисні можливості зменшуються
## Heatstroke
buff-title-heatstroke = Тепловий Удар
buff-desc-heatstroke = Вам було спекотно і тепер ви страждаєте від теплового удару. Ваші енергетичні винагороди і швидкість руху зменшені. Охолоньте.
## Util ## Util
buff-mysterious = Таємничий ефект buff-mysterious = Таємничий ефект
buff-remove = Натисніть, щоб видалити buff-remove = Натисніть, щоб видалити

View File

@ -0,0 +1,96 @@
command-no-permission = Ви не маєте прав використовувати '/{ $command_name }'
command-position-unavailable = Неможливо отримати позицію для { $target }
command-player-role-unavailable = Неможливо отримати ролі адміністратора для { $target }
command-uid-unavailable = Неможливо отримати uid для { $target }
command-area-not-found = Неможливо знайти область '{ $area }'
command-player-not-found = Гравець '{ $player }' не знайдений!
command-player-uuid-not-found = Гравець з UUID '{ $uuid }' не знайдений!
command-username-uuid-unavailable = Неможливо визначити UUID для логіну { $username }
command-uuid-username-unavailable = Неможливо визначити логін для UUID { $uuid }
command-no-sudo = Вдавати інших гравців неввічливо
command-entity-dead = Сутність '{ $entity }' мертва!
command-error-while-evaluating-request = При валідації запиту сталася помилка: { $error }
command-give-inventory-full = Інвентар гравця повний. Видано { $given ->
[1] лише один
*[other] { $given }
} з { $total } предметів.
command-invalid-item = Неправильний предмет: { $item }
command-invalid-block-kind = Неправильний тип блока: { $kind }
command-nof-entities-at-least = Сутностей має бути щонайменше 1
command-nof-entities-less-than = Сутностей має бути менше 50
command-entity-load-failed = Не вдалося завантажити конфігурацію сутності: { $config }
command-spawned-entities-config = Створено { $n } сутностей з конфігурації: { $config }
command-invalid-sprite = Неправильний тип спрайта: { $kind }
command-time-parse-too-large = { $n } невалідний, не може мати більше 16 цифр.
command-time-parse-negative = { $n } невалідний, не може бути від'ємний.
command-time-backwards = { $t } в минулому, час не може йти навпаки.
command-time-invalid = { $t } невалідний час.
command-rtsim-purge-perms = Ви маєте бути адміністратором (не тимчасовим) щоб видаляти дані rtsim.
command-chunk-not-loaded = Чанк { $x }, { $y } не завантажений
command-chunk-out-of-bounds = Чанк { $x }, { $y } за межами карти
command-spawned-entity = Створено сутність з ID: { $id }
command-spawned-dummy = Створено тренувальний манекен
command-spawned-airship = Створено повітряний корабель
command-spawned-campfire = Створено багаття
command-spawned-safezone = Створено безпечну зону
command-volume-size-incorrect = Розмір повинен бути від 1 до 127.
command-volume-created = Створено об'єм
command-permit-build-given = Ви не можете будувати в '{ $area }'
command-permit-build-granted = Надано дозвіл на будування в '{ $area }'
command-revoke-build-recv = Дозвіл на будування в '{ $area }' відкликано
command-revoke-build = Дозвіл будувати в '{ $area }' відкликано
command-revoke-build-all = Ваші дозволи на будування відкликано
command-revoked-all-build = Всі дозволи на будування відкликано
command-no-buid-perms = Ви не маєте дозволу будувати.
command-set-build-mode-off = Режим будівництва вимкнено.
command-set-build-mode-on-persistent = Режим будівництва увімкнуто. Ввімкнено експериментальне збереження змін ландшафту. Сервер намагатиметься зберегти зміни, але збереження не гарантується.
command-set-build-mode-on-unpersistent = Режим будівництва увімкнуто. Зміни пропадуть після перезавантаження чанка.
command-invalid-alignment = Неправильне вирівнювання: { $alignment }
command-kit-not-enough-slots = Недостатньо слотів в інвентарі
command-lantern-unequiped = Будь ласка, спочатку візьміть ліхтар
command-lantern-adjusted-strength = Ви змінили силу полум'я.
command-lantern-adjusted-strength-color = Ви змінили силу та колір полум'я..
command-explosion-power-too-high = Сила вибуху не може перевищувати { $power }
command-explosion-power-too-low = Сила вибуху повинна бути більше за { $power }
# Note: Do not translate "confirm" here
command-disconnectall-confirm = Виконайте, будь ласка, команду ще раз вказавши "confirm" як другий аргумент, щоб відключити всіх гравців.
command-invalid-skill-group = { $group } не група вмінь!
command-unknown = Невідома команда
command-disabled-by-settings = Команда вимкнена в налаштуваннях
command-battlemode-intown = Ви повинні бути в місті, щоб змінити бойовий режим!
command-battlemode-cooldown = Період очікування активний. Спробуйте ще раз через { $cooldown } секунд.
command-battlemode-available-modes = Доступні режими: pvp, pve
command-battlemode-same = Спроба встановити той самий бойовий режим.
command-battlemode-updated = Новий бойовий режим: { $battlemode }
command-buff-unknown = Невідомий баф: { $buff }
command-skillpreset-load-error = Помилка при завантаженні пресетів
command-skillpreset-broken = Пресет вмінь пошкоджений
command-skillpreset-missing = Пресет не існує: { $preset }
command-location-invalid = Назва локації '{ $location }' невалідна. Назви можуть містити тільки малі літери ASCII та підкреслення.
command-location-duplicate = Локація '{ $location }' вже існує.
command-location-not-found = Локація '{ $location }' не існує
command-location-created = Свторено локацію '{ $location }'
command-location-deleted = Видалено локацію '{ $location }'
command-locations-empty = Зараз не має локацій
command-locations-list = Доступні локації: { $locations }
# Note: Do not translate these weather names
command-weather-valid-values = Допустимі значення: 'clear', 'rain', 'wind', 'storm'
command-scale-set = Встановити масштаб в { $scale }
command-repaired-items = Всі одягнути речі відремонтовано
command-message-group-missing = Ви використовуєте чат групи, до якої не належите. Використовуйте /world чи
/region щоб змінити чат.
command-tell-request = { $sender } хоче говорити з вами.
# Unreachable/untestable but added for consistency
command-player-info-unavailable = Неможливо отримати інформацію про гравця для { $target }
command-unimplemented-waypoint-spawn = Створення точки шляху не реалізовано
command-unimplemented-teleporter-spawn = Створення телепорта не реалізовано
command-kit-inventory-unavailable = Неможливо отримати інвентар
command-inventory-cant-fit-item = Предмет не вміщується в інвентар
# Emitted by /disconnect_all when you dont exist (?)
command-you-dont-exist = Ви не існуєте, отже не можете використовувати цю команду
command-destroyed-tethers = Всі пута знищено! Тепер ви вільні
command-destroyed-no-tethers = Ви не підключені до пут
command-dismounted = Ви спішилися
command-no-dismount = Ви не їдете верхи і ніхто не їде верхи на вас

View File

@ -115,3 +115,4 @@ common-sprite-chest = Скриня
common-sprite-chair = Стілець common-sprite-chair = Стілець
common-sprite-mud = Грязь common-sprite-mud = Грязь
common-sprite-grave = Могила common-sprite-grave = Могила
common-sprite-crate = Ящик

View File

@ -75,3 +75,4 @@ gameinput-muteinactivemaster = Вимкнути всі звуки (В неакт
gameinput-mutemusic = Вимкнути музику gameinput-mutemusic = Вимкнути музику
gameinput-mutesfx = Вимкнути звуки спец. ефектів gameinput-mutesfx = Вимкнути звуки спец. ефектів
gameinput-muteambience = Вимкнути довколишню музику gameinput-muteambience = Вимкнути довколишню музику
gameinput-togglewalk = Перемкнути режим ходьби

View File

@ -14,6 +14,7 @@ hud-bag-glider = Дельтаплан
hud-bag-belt = Пояс hud-bag-belt = Пояс
hud-bag-ring = Кільце hud-bag-ring = Кільце
hud-bag-back = Спина hud-bag-back = Спина
hud-bag-backpack = Наплічник
hud-bag-legs = Ноги hud-bag-legs = Ноги
hud-bag-feet = Ступні hud-bag-feet = Ступні
hud-bag-mainhand = Основна рука hud-bag-mainhand = Основна рука

View File

@ -38,6 +38,7 @@ hud-auto_walk_indicator = Авто Рух
hud-zoom_lock_indicator-remind = Зум зафіксовано hud-zoom_lock_indicator-remind = Зум зафіксовано
hud-zoom_lock_indicator-enable = Зум камери зафіксовано hud-zoom_lock_indicator-enable = Зум камери зафіксовано
hud-zoom_lock_indicator-disable = Фіксацію зума скасовано hud-zoom_lock_indicator-disable = Фіксацію зума скасовано
hud-activate = Активувати
hud-collect = Зібрати hud-collect = Зібрати
hud-pick_up = Підібрати hud-pick_up = Підібрати
hud-open = Відкрити hud-open = Відкрити
@ -57,3 +58,24 @@ hud-follow = Слідувати
hud-stay = Чекати hud-stay = Чекати
hud-sit = Сидіти hud-sit = Сидіти
hud-steer = Керувати hud-steer = Керувати
hud-lay = Лежати
hud-portal = Портал
-server = Server
-client = Client
hud-init-stage-singleplayer = Старт сервера одиночної гри...
hud-init-stage-server-db-migrations = [{ -server }]: Міграція бази даних...
hud-init-stage-server-db-vacuum = [{ -server }]: Очистка бази даних...
hud-init-stage-server-worldsim-erosion = [{ -server }]: Ерозія { $percentage }%
hud-init-stage-server-worldciv-civcreate = [{ -server }]: Згенеровано { $generated } з { $total } цивілізацій
hud-init-stage-server-worldciv-site = [{ -server }]: Генерую місця...
hud-init-stage-server-economysim = [{ -server }]: Симулюю економіку...
hud-init-stage-server-spotgen = [{ -server }]: Генерація точок...
hud-init-stage-server-starting = [{ -server }]: Запуск сервера...
hud-init-stage-multiplayer = Запуск мультиплеєра
hud-init-stage-client-connection-establish = [{ -client }]: Підключення до сервера...
hud-init-stage-client-request-server-version = [{ -client }]: Очікування версії сервера...
hud-init-stage-client-authentication = [{ -client }]: Автентифікація...
hud-init-stage-client-load-init-data = [{ -client }]: Завантаження ініціалізаційних даних...
hud-init-stage-client-starting-client = [{ -client }]: Підготовка клієнта...
hud-init-stage-render-pipeline = Створення render pipeline ({ $done }/{ $total })

View File

@ -16,9 +16,12 @@ hud-settings-custom_scaling = Ручне
hud-settings-crosshair = Приціл hud-settings-crosshair = Приціл
hud-settings-opacity = Прозорість hud-settings-opacity = Прозорість
hud-settings-hotbar = Панель швидкого доступу hud-settings-hotbar = Панель швидкого доступу
hud-settings-slots = Слоти
hud-settings-toggle_shortcuts = Гарячі клавіші hud-settings-toggle_shortcuts = Гарячі клавіші
hud-settings-buffs_skillbar = Бафи біля Панелі Швидкого Доступу hud-settings-buffs_skillbar = Бафи біля Панелі Швидкого Доступу
hud-settings-buffs_mmap = Бафи біля Мінімапи hud-settings-buffs_mmap = Бафи біля Мінімапи
hud-settings-use_prefixes = Показувати позначки SI для кількостей
hud-settings-prefix_switch_point = Максимальна кількість цифр для переключення позначок SI
hud-settings-toggle_bar_experience = Панель досвіду hud-settings-toggle_bar_experience = Панель досвіду
hud-settings-scrolling_combat_text = Відображення Пошкоджень/Зцілень hud-settings-scrolling_combat_text = Відображення Пошкоджень/Зцілень
hud-settings-damage_accumulation_duration = Тривалість Аккумулювання Шкоди hud-settings-damage_accumulation_duration = Тривалість Аккумулювання Шкоди
@ -54,6 +57,8 @@ hud-settings-enable_mouse_smoothing =
камери камери
hud-settings-free_look_behavior = Вмикання вільного перегляду hud-settings-free_look_behavior = Вмикання вільного перегляду
hud-settings-auto_walk_behavior = Вмикання авто-ходи hud-settings-auto_walk_behavior = Вмикання авто-ходи
hud-settings-walking_speed_behavior = Налаштування швидкості ходи
hud-settings-walking_speed = Швидкість ходи
hud-settings-camera_clamp_behavior = Поведінка закріпленої камери hud-settings-camera_clamp_behavior = Поведінка закріпленої камери
hud-settings-zoom_lock_behavior = Функція фіксації віддаленості камери hud-settings-zoom_lock_behavior = Функція фіксації віддаленості камери
hud-settings-player_physics_behavior = Фізика гравця (експериментальнe) hud-settings-player_physics_behavior = Фізика гравця (експериментальнe)

View File

@ -4,6 +4,8 @@ subtitle-bees = Дзижчання бджіл
subtitle-owl = Укання сови subtitle-owl = Укання сови
subtitle-running_water = Булькання води subtitle-running_water = Булькання води
subtitle-lightning = Грім subtitle-lightning = Грім
subtitle-portal-activated = Портал активовано
subtitle-portal-teleported = Телепортовано
subtitle-footsteps_grass = Ходьба по траві subtitle-footsteps_grass = Ходьба по траві
subtitle-footsteps_earth = Ходьба по землі subtitle-footsteps_earth = Ходьба по землі
@ -107,8 +109,9 @@ subtitle-deep_laugh = Глибокий сміх
subtitle-attack-flash_freeze = Миттєве заморожування subtitle-attack-flash_freeze = Миттєве заморожування
subtitle-attack-icy_spikes = Крижані шипи subtitle-attack-icy_spikes = Крижані шипи
subtitle-attack-ice_crack = Крижана тріщина subtitle-attack-ice_crack = Крижана тріщина
subtitle-attack-steam = Пар subtitle-attack-steam = Пара
subtitle-attack-shovel = Копання Лопатою subtitle-attack-shovel = Копання Лопатою
subtitle-attack-from-the-ashes = Звук зцілення
subtitle-consume_potion = Пиття зілля subtitle-consume_potion = Пиття зілля
subtitle-consume_apple = Споживання яблука subtitle-consume_apple = Споживання яблука
@ -152,3 +155,5 @@ subtitle-utterance-wolf-angry = Вовк гарчить
subtitle-utterance-wolf-hurt = Вовк скиглить subtitle-utterance-wolf-hurt = Вовк скиглить
subtitle-utterance-wyvern-angry = Рев Виверни subtitle-utterance-wyvern-angry = Рев Виверни
subtitle-utterance-wyvern-hurt = Виверні боляче subtitle-utterance-wyvern-hurt = Виверні боляче
subtitle-utterance-phoenix-angry = Крик Фенікса
subtitle-utterance-phoenix-hurt = Феніксу боляче

View File

@ -1,4 +1,4 @@
main-username = Ім'я користовуча main-username = Ім'я користувача
main-server = Сервер main-server = Сервер
main-password = Пароль main-password = Пароль
main-connecting = З'єднання main-connecting = З'єднання
@ -32,9 +32,26 @@ main-login_process =
Створити обліковий запис можна тут: Створити обліковий запис можна тут:
https://veloren.net/account/. https://veloren.net/account/.
main-singleplayer-new = Нова
main-singleplayer-delete = Видалити
main-singleplayer-regenerate = Перегенерувати
main-singleplayer-create_custom = Налаштувати
main-singleplayer-invalid_name = Помилка: неприпустиме ім'я
main-singleplayer-seed = Зерно
main-singleplayer-random_seed = Випадкова
main-singleplayer-size_lg = Логарифмічний розмір
main-singleplayer-map_large_warning = Увага: Перший запуск великих світів може зайняти багато часу
main-singleplayer-world_name = Назва світу
main-singleplayer-map_scale = Вертикальне масштабування
main-singleplayer-map_erosion_quality = Якість ерозії
main-singleplayer-map_shape = Форма
main-singleplayer-play = Грати
main-singleplayer-generate_and_play = Згенерувати і Грати
menu-singleplayer-confirm_delete = Ви дійсно хочте видалити "{ $world_name }"
menu-singleplayer-confirm_regenerate = Ви дійсно хочете перегенерувати "{ $world_name }"
main-login-server_not_found = Сервер не знайдено main-login-server_not_found = Сервер не знайдено
main-login-authentication_error = Помилка авторизації на сервері main-login-authentication_error = Помилка авторизації на сервері
main-login-internal_error = Внутріння помилка у кліента (скоріше за все, персонаж був видалений) main-login-internal_error = Внутрішня помилка у кліента (скоріше за все, персонаж був видалений)
main-login-failed_auth_server_url_invalid = Не вдалося з'єднатися з сервером аутентифікації main-login-failed_auth_server_url_invalid = Не вдалося з'єднатися з сервером аутентифікації
main-login-insecure_auth_scheme = HTTP схема аутентифікації НЕ підтримується. Це небезпечно! Для розробки це дозволено для 'localhost' або дебажних збірок main-login-insecure_auth_scheme = HTTP схема аутентифікації НЕ підтримується. Це небезпечно! Для розробки це дозволено для 'localhost' або дебажних збірок
main-login-server_full = Сервер переповнено main-login-server_full = Сервер переповнено
@ -58,11 +75,11 @@ main-login-username_bad_characters = Ім'я персонажа містить
main-login-username_too_long = Ім'я персонажа занадто довге! Максимальна довжина: { $max_len } main-login-username_too_long = Ім'я персонажа занадто довге! Максимальна довжина: { $max_len }
main-servers-select_server = Виберіть сервер main-servers-select_server = Виберіть сервер
main-servers-singleplayer_error = Помилка підключення до внутрішьного серверу: { $sp_error } main-servers-singleplayer_error = Помилка підключення до внутрішьного серверу: { $sp_error }
main-servers-network_error = Помилка сокету/мережі серверов: { $raw_error } main-servers-network_error = Помилка сокету/мережі серверів: { $raw_error }
main-servers-participant_error = Від'єднання учасника/помилка протоколу: { $raw_error } main-servers-participant_error = Від'єднання учасника/помилка протоколу: { $raw_error }
main-servers-stream_error = Помилка данних клієнто під час підключення: { $raw_error } main-servers-stream_error = Помилка данних клієнто під час підключення: { $raw_error }
main-servers-database_error = Помилка данних серверу: { $raw_error } main-servers-database_error = Помилка данних серверу: { $raw_error }
main-servers-persistence_error = Помилка постійності сервера (Можливо, пов'язано з ресурсами гри або данними про персонажа): { $raw_error } main-servers-persistence_error = Помилка зберігання (Можливо, пов'язано з ресурсами гри або данними про персонажа): { $raw_error }
main-servers-other_error = Помилка сервера: { $raw_error } main-servers-other_error = Помилка сервера: { $raw_error }
main-credits = Подяки main-credits = Подяки
main-credits-created_by = зроблено main-credits-created_by = зроблено

View File

@ -287,3 +287,4 @@ npc-speech-dist_far = далеко
npc-speech-dist_ahead = трохи подалі npc-speech-dist_ahead = трохи подалі
npc-speech-dist_near = поблизу npc-speech-dist_near = поблизу
npc-speech-dist_near_to = дуже близько npc-speech-dist_near_to = дуже близько
npc-speech-arena = Давайте присядемо тут!

View File

@ -3199,8 +3199,12 @@
"voxel.object.curious_potion", "voxel.object.curious_potion",
(0.0, 0.0, 0.0), (-50.0, 30.0, 20.0), 0.7, (0.0, 0.0, 0.0), (-50.0, 30.0, 20.0), 0.7,
), ),
Simple("common.items.consumable.potion_burning"): VoxTrans( Simple("common.items.consumable.potion_combustion"): VoxTrans(
"voxel.object.potion_burning", "voxel.object.potion_combustion",
(0.0, 0.0, 0.0), (-50.0, 30.0, 20.0), 0.7,
),
Simple("common.items.consumable.potion_agility"): VoxTrans(
"voxel.object.potion_agility",
(0.0, 0.0, 0.0), (-50.0, 30.0, 20.0), 0.7, (0.0, 0.0, 0.0), (-50.0, 30.0, 20.0), 0.7,
), ),
Simple("common.items.charms.burning_charm"): VoxTrans( Simple("common.items.charms.burning_charm"): VoxTrans(

View File

@ -13,17 +13,14 @@ layout(push_constant) uniform Params {
layout(location = 0) out vec2 source_coords; layout(location = 0) out vec2 source_coords;
uvec2 unpack(uint xy) { vec2 unpack(uint xy) {
return uvec2( return vec2(xy & 0xFFFF, (xy >> 16) & 0xFFFF);
bitfieldExtract(xy, 0, 16),
bitfieldExtract(xy, 16, 16)
);
} }
void main() { void main() {
vec2 source_size = vec2(unpack(source_size_xy)); vec2 source_size = unpack(source_size_xy);
vec2 target_offset = vec2(unpack(target_offset_xy)); vec2 target_offset = unpack(target_offset_xy);
vec2 target_size = vec2(unpack(target_size_xy)); vec2 target_size = unpack(target_size_xy);
// Generate rectangle (counter clockwise triangles) // Generate rectangle (counter clockwise triangles)
// //

View File

@ -809,7 +809,8 @@
Simple("common.items.consumable.potion_minor"): "voxel.object.potion_red", Simple("common.items.consumable.potion_minor"): "voxel.object.potion_red",
Simple("common.items.consumable.potion_big"): "voxel.object.potion_red", Simple("common.items.consumable.potion_big"): "voxel.object.potion_red",
Simple("common.items.consumable.curious_potion"): "voxel.object.curious_potion", Simple("common.items.consumable.curious_potion"): "voxel.object.curious_potion",
Simple("common.items.consumable.potion_burning"): "voxel.object.potion_burning", Simple("common.items.consumable.potion_combustion"): "voxel.object.potion_combustion",
Simple("common.items.consumable.potion_agility"): "voxel.object.potion_agility",
Simple("common.items.charms.burning_charm"): "voxel.object.burning_charm", Simple("common.items.charms.burning_charm"): "voxel.object.burning_charm",
Simple("common.items.charms.frozen_charm"): "voxel.object.frozen_charm", Simple("common.items.charms.frozen_charm"): "voxel.object.frozen_charm",
Simple("common.items.charms.lifesteal_charm"): "voxel.object.lifesteal_charm", Simple("common.items.charms.lifesteal_charm"): "voxel.object.lifesteal_charm",

BIN
assets/voxygen/voxel/object/potion_agility.vox (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -65,6 +65,7 @@ fn main() {
&password, &password,
|provider| provider == "https://auth.veloren.net", |provider| provider == "https://auth.veloren.net",
&|_| {}, &|_| {},
|_| {},
)) ))
.expect("Failed to create client instance"); .expect("Failed to create client instance");
@ -85,7 +86,7 @@ fn main() {
client.send_chat(msg) client.send_chat(msg)
} }
let events = match client.tick(comp::ControllerInputs::default(), clock.dt(), |_| {}) { let events = match client.tick(comp::ControllerInputs::default(), clock.dt()) {
Ok(events) => events, Ok(events) => events,
Err(err) => { Err(err) => {
error!("Error: {:?}", err); error!("Error: {:?}", err);

View File

@ -73,6 +73,7 @@ pub fn make_client(
password, password,
|_| true, |_| true,
&|_| {}, &|_| {},
|_| {},
)) ))
.ok() .ok()
} }
@ -99,7 +100,7 @@ impl BotClient {
for (username, client) in self.bot_clients.iter_mut() { for (username, client) in self.bot_clients.iter_mut() {
trace!(?username, "tick"); trace!(?username, "tick");
let _msgs: Result<Vec<veloren_client::Event>, veloren_client::Error> = let _msgs: Result<Vec<veloren_client::Event>, veloren_client::Error> =
client.tick(comp::ControllerInputs::default(), self.clock.dt(), |_| {}); client.tick(comp::ControllerInputs::default(), self.clock.dt());
} }
} }

View File

@ -123,6 +123,7 @@ fn run_client(
&username, &username,
"", "",
|_| false, |_| false,
|_| {},
)) { )) {
Err(e) => tracing::warn!(?e, "Client {} disconnected", index), Err(e) => tracing::warn!(?e, "Client {} disconnected", index),
Ok(client) => break client, Ok(client) => break client,

View File

@ -307,6 +307,7 @@ impl Client {
password: &str, password: &str,
auth_trusted: impl FnMut(&str) -> bool, auth_trusted: impl FnMut(&str) -> bool,
init_stage_update: &(dyn Fn(ClientInitStage) + Send + Sync), init_stage_update: &(dyn Fn(ClientInitStage) + Send + Sync),
add_foreign_systems: impl Fn(&mut DispatcherBuilder) + Send + 'static,
) -> Result<Self, Error> { ) -> Result<Self, Error> {
let network = Network::new(Pid::new(), &runtime); let network = Network::new(Pid::new(), &runtime);
@ -409,7 +410,16 @@ impl Client {
// Initialize `State` // Initialize `State`
let pools = State::pools(GameMode::Client); let pools = State::pools(GameMode::Client);
let mut state = State::client(pools, map_size_lg, world_map.default_chunk); let mut state = State::client(
pools,
map_size_lg,
world_map.default_chunk,
// TODO: Add frontend systems
|dispatch_builder| {
add_local_systems(dispatch_builder);
add_foreign_systems(dispatch_builder);
},
);
// Client-only components // Client-only components
state.ecs_mut().register::<comp::Last<CharacterState>>(); state.ecs_mut().register::<comp::Last<CharacterState>>();
let entity = state.ecs_mut().apply_entity_package(entity_package); let entity = state.ecs_mut().apply_entity_package(entity_package);
@ -1796,12 +1806,7 @@ impl Client {
/// Execute a single client tick, handle input and update the game state by /// Execute a single client tick, handle input and update the game state by
/// the given duration. /// the given duration.
pub fn tick( pub fn tick(&mut self, inputs: ControllerInputs, dt: Duration) -> Result<Vec<Event>, Error> {
&mut self,
inputs: ControllerInputs,
dt: Duration,
add_foreign_systems: impl Fn(&mut DispatcherBuilder),
) -> Result<Vec<Event>, Error> {
span!(_guard, "tick", "Client::tick"); span!(_guard, "tick", "Client::tick");
// This tick function is the centre of the Veloren universe. Most client-side // This tick function is the centre of the Veloren universe. Most client-side
// things are managed from here, and as such it's important that it // things are managed from here, and as such it's important that it
@ -1902,10 +1907,6 @@ impl Client {
// 4) Tick the client's LocalState // 4) Tick the client's LocalState
self.state.tick( self.state.tick(
Duration::from_secs_f64(dt.as_secs_f64() * self.dt_adjustment), Duration::from_secs_f64(dt.as_secs_f64() * self.dt_adjustment),
|dispatch_builder| {
add_local_systems(dispatch_builder);
add_foreign_systems(dispatch_builder);
},
true, true,
None, None,
&self.connected_server_constants, &self.connected_server_constants,
@ -3011,6 +3012,7 @@ mod tests {
password, password,
|suggestion: &str| suggestion == auth_server, |suggestion: &str| suggestion == auth_server,
&|_| {}, &|_| {},
|_| {},
)); ));
let localisation = LocalizationHandle::load_expect("en"); let localisation = LocalizationHandle::load_expect("en");
@ -3020,7 +3022,7 @@ mod tests {
//tick //tick
let events_result: Result<Vec<Event>, Error> = let events_result: Result<Vec<Event>, Error> =
client.tick(ControllerInputs::default(), clock.dt(), |_| {}); client.tick(ControllerInputs::default(), clock.dt());
//chat functionality //chat functionality
client.send_chat("foobar".to_string()); client.send_chat("foobar".to_string());

View File

@ -155,6 +155,7 @@ lazy_static! {
BuffKind::Bleeding => "bleeding", BuffKind::Bleeding => "bleeding",
BuffKind::Cursed => "cursed", BuffKind::Cursed => "cursed",
BuffKind::Potion => "potion", BuffKind::Potion => "potion",
BuffKind::Agility => "agility",
BuffKind::CampfireHeal => "campfire_heal", BuffKind::CampfireHeal => "campfire_heal",
BuffKind::EnergyRegen => "energy_regen", BuffKind::EnergyRegen => "energy_regen",
BuffKind::IncreaseMaxEnergy => "increase_max_energy", BuffKind::IncreaseMaxEnergy => "increase_max_energy",

View File

@ -615,7 +615,7 @@ pub enum CharacterAbilityType {
ChargedRanged, ChargedRanged,
DashMelee(StageSection), DashMelee(StageSection),
BasicBlock, BasicBlock,
ComboMelee(StageSection, u32), ComboMeleeDeprecated(StageSection, u32),
ComboMelee2(StageSection), ComboMelee2(StageSection),
FinisherMelee(StageSection), FinisherMelee(StageSection),
DiveMelee(StageSection), DiveMelee(StageSection),
@ -642,7 +642,9 @@ impl From<&CharacterState> for CharacterAbilityType {
CharacterState::BasicBlock(_) => Self::BasicBlock, CharacterState::BasicBlock(_) => Self::BasicBlock,
CharacterState::LeapMelee(data) => Self::LeapMelee(data.stage_section), CharacterState::LeapMelee(data) => Self::LeapMelee(data.stage_section),
CharacterState::LeapShockwave(data) => Self::LeapShockwave(data.stage_section), CharacterState::LeapShockwave(data) => Self::LeapShockwave(data.stage_section),
CharacterState::ComboMelee(data) => Self::ComboMelee(data.stage_section, data.stage), CharacterState::ComboMeleeDeprecated(data) => {
Self::ComboMeleeDeprecated(data.stage_section, data.stage)
},
CharacterState::ComboMelee2(data) => Self::ComboMelee2(data.stage_section), CharacterState::ComboMelee2(data) => Self::ComboMelee2(data.stage_section),
CharacterState::FinisherMelee(data) => Self::FinisherMelee(data.stage_section), CharacterState::FinisherMelee(data) => Self::FinisherMelee(data.stage_section),
CharacterState::DiveMelee(data) => Self::DiveMelee(data.stage_section), CharacterState::DiveMelee(data) => Self::DiveMelee(data.stage_section),
@ -771,7 +773,7 @@ pub enum CharacterAbility {
#[serde(default)] #[serde(default)]
meta: AbilityMeta, meta: AbilityMeta,
}, },
ComboMelee { ComboMeleeDeprecated {
stage_data: Vec<combo_melee::Stage<f32>>, stage_data: Vec<combo_melee::Stage<f32>>,
initial_energy_gain: f32, initial_energy_gain: f32,
max_energy_gain: f32, max_energy_gain: f32,
@ -1134,7 +1136,7 @@ impl CharacterAbility {
(data.physics.on_ground.is_none() || buildup_duration.is_some()) (data.physics.on_ground.is_none() || buildup_duration.is_some())
&& update.energy.try_change_by(-*energy_cost).is_ok() && update.energy.try_change_by(-*energy_cost).is_ok()
}, },
CharacterAbility::ComboMelee { .. } CharacterAbility::ComboMeleeDeprecated { .. }
| CharacterAbility::Boost { .. } | CharacterAbility::Boost { .. }
| CharacterAbility::BasicBeam { .. } | CharacterAbility::BasicBeam { .. }
| CharacterAbility::Blink { .. } | CharacterAbility::Blink { .. }
@ -1303,7 +1305,7 @@ impl CharacterAbility {
*recover_duration /= stats.speed; *recover_duration /= stats.speed;
*energy_cost /= stats.energy_efficiency; *energy_cost /= stats.energy_efficiency;
}, },
ComboMelee { ComboMeleeDeprecated {
ref mut stage_data, ref mut stage_data,
initial_energy_gain: _, initial_energy_gain: _,
max_energy_gain: _, max_energy_gain: _,
@ -1720,7 +1722,7 @@ impl CharacterAbility {
} }
}, },
Boost { .. } Boost { .. }
| ComboMelee { .. } | ComboMeleeDeprecated { .. }
| Blink { .. } | Blink { .. }
| Music { .. } | Music { .. }
| BasicSummon { .. } | BasicSummon { .. }
@ -1768,7 +1770,7 @@ impl CharacterAbility {
| RiposteMelee { .. } | RiposteMelee { .. }
| BasicBeam { .. } | BasicBeam { .. }
| Boost { .. } | Boost { .. }
| ComboMelee { .. } | ComboMeleeDeprecated { .. }
| Blink { .. } | Blink { .. }
| Music { .. } | Music { .. }
| BasicSummon { .. } | BasicSummon { .. }
@ -1795,7 +1797,7 @@ impl CharacterAbility {
| SelfBuff { meta, .. } | SelfBuff { meta, .. }
| BasicBeam { meta, .. } | BasicBeam { meta, .. }
| Boost { meta, .. } | Boost { meta, .. }
| ComboMelee { meta, .. } | ComboMeleeDeprecated { meta, .. }
| ComboMelee2 { meta, .. } | ComboMelee2 { meta, .. }
| Blink { meta, .. } | Blink { meta, .. }
| BasicSummon { meta, .. } | BasicSummon { meta, .. }
@ -1872,7 +1874,7 @@ impl CharacterAbility {
use skills::{HammerSkill::*, Skill::Hammer}; use skills::{HammerSkill::*, Skill::Hammer};
match self { match self {
CharacterAbility::ComboMelee { CharacterAbility::ComboMeleeDeprecated {
ref mut speed_increase, ref mut speed_increase,
ref mut max_speed_increase, ref mut max_speed_increase,
ref mut stage_data, ref mut stage_data,
@ -2385,9 +2387,8 @@ impl From<(&CharacterAbility, AbilityInfo, &JoinData<'_>)> for CharacterState {
was_wielded: false, // false by default. utils might set it to true was_wielded: false, // false by default. utils might set it to true
prev_aimed_dir: None, prev_aimed_dir: None,
is_sneaking: false, is_sneaking: false,
was_combo: None,
}), }),
CharacterAbility::ComboMelee { CharacterAbility::ComboMeleeDeprecated {
stage_data, stage_data,
initial_energy_gain, initial_energy_gain,
max_energy_gain, max_energy_gain,
@ -2397,7 +2398,7 @@ impl From<(&CharacterAbility, AbilityInfo, &JoinData<'_>)> for CharacterState {
scales_from_combo, scales_from_combo,
ori_modifier, ori_modifier,
meta: _, meta: _,
} => CharacterState::ComboMelee(combo_melee::Data { } => CharacterState::ComboMeleeDeprecated(combo_melee::Data {
static_data: combo_melee::StaticData { static_data: combo_melee::StaticData {
num_stages: stage_data.len() as u32, num_stages: stage_data.len() as u32,
stage_data: stage_data.iter().map(|stage| stage.to_duration()).collect(), stage_data: stage_data.iter().map(|stage| stage.to_duration()).collect(),

View File

@ -37,6 +37,11 @@ pub enum BuffKind {
/// Applied when drinking a potion. /// Applied when drinking a potion.
/// Strength should be the healing per second. /// Strength should be the healing per second.
Potion, Potion,
/// Increases movement speed and vulnerability to damage as well as
/// decreases the amount of damage dealt.
/// Movement speed increases linearly with strength 1.0 is an 100% increase
/// Damage vulnerability and damage reduction are both hard set to 100%
Agility,
/// Applied when sitting at a campfire. /// Applied when sitting at a campfire.
/// Strength is fraction of health restored per second. /// Strength is fraction of health restored per second.
CampfireHeal, CampfireHeal,
@ -177,6 +182,7 @@ impl BuffKind {
BuffKind::Regeneration BuffKind::Regeneration
| BuffKind::Saturation | BuffKind::Saturation
| BuffKind::Potion | BuffKind::Potion
| BuffKind::Agility
| BuffKind::CampfireHeal | BuffKind::CampfireHeal
| BuffKind::Frenzied | BuffKind::Frenzied
| BuffKind::EnergyRegen | BuffKind::EnergyRegen
@ -264,6 +270,13 @@ impl BuffKind {
tick_dur: Secs(0.1), tick_dur: Secs(0.1),
}] }]
}, },
BuffKind::Agility => vec![
BuffEffect::MovementSpeed(
1.0 + data.strength * stats.map_or(1.0, |s| s.move_speed_multiplier),
),
BuffEffect::DamageReduction(-1.0),
BuffEffect::AttackDamage(0.0),
],
BuffKind::CampfireHeal => vec![BuffEffect::HealthChangeOverTime { BuffKind::CampfireHeal => vec![BuffEffect::HealthChangeOverTime {
rate: data.strength, rate: data.strength,
kind: ModifierKind::Multiplicative, kind: ModifierKind::Multiplicative,
@ -351,7 +364,11 @@ impl BuffKind {
}, },
], ],
BuffKind::Parried => vec![BuffEffect::AttackSpeed(0.5)], BuffKind::Parried => vec![BuffEffect::AttackSpeed(0.5)],
BuffKind::PotionSickness => vec![BuffEffect::HealReduction(data.strength)], //TODO: Handle potion sickness in a more general way.
BuffKind::PotionSickness => vec![
BuffEffect::HealReduction(data.strength),
BuffEffect::MoveSpeedReduction(data.strength),
],
BuffKind::Reckless => vec![ BuffKind::Reckless => vec![
BuffEffect::DamageReduction(-data.strength), BuffEffect::DamageReduction(-data.strength),
BuffEffect::AttackDamage(1.0 + data.strength), BuffEffect::AttackDamage(1.0 + data.strength),
@ -557,6 +574,8 @@ pub enum BuffEffect {
PoiseReduction(f32), PoiseReduction(f32),
/// Reduces amount healed by consumables /// Reduces amount healed by consumables
HealReduction(f32), HealReduction(f32),
/// Reduces amount of speed increase by consumables
MoveSpeedReduction(f32),
/// Increases poise damage dealt when health is lost /// Increases poise damage dealt when health is lost
PoiseDamageFromLostHealth { PoiseDamageFromLostHealth {
initial_health: f32, initial_health: f32,

View File

@ -95,7 +95,7 @@ pub enum CharacterState {
DashMelee(dash_melee::Data), DashMelee(dash_melee::Data),
/// A three-stage attack where each attack pushes player forward /// A three-stage attack where each attack pushes player forward
/// and successive attacks increase in damage, while player holds button. /// and successive attacks increase in damage, while player holds button.
ComboMelee(combo_melee::Data), ComboMeleeDeprecated(combo_melee::Data),
/// A state where you progress through multiple melee attacks /// A state where you progress through multiple melee attacks
ComboMelee2(combo_melee2::Data), ComboMelee2(combo_melee2::Data),
/// A leap followed by a small aoe ground attack /// A leap followed by a small aoe ground attack
@ -154,7 +154,7 @@ impl CharacterState {
| CharacterState::BasicMelee(_) | CharacterState::BasicMelee(_)
| CharacterState::BasicRanged(_) | CharacterState::BasicRanged(_)
| CharacterState::DashMelee(_) | CharacterState::DashMelee(_)
| CharacterState::ComboMelee(_) | CharacterState::ComboMeleeDeprecated(_)
| CharacterState::ComboMelee2(_) | CharacterState::ComboMelee2(_)
| CharacterState::BasicBlock(_) | CharacterState::BasicBlock(_)
| CharacterState::LeapMelee(_) | CharacterState::LeapMelee(_)
@ -220,7 +220,7 @@ impl CharacterState {
CharacterState::BasicMelee(_) CharacterState::BasicMelee(_)
| CharacterState::BasicRanged(_) | CharacterState::BasicRanged(_)
| CharacterState::DashMelee(_) | CharacterState::DashMelee(_)
| CharacterState::ComboMelee(_) | CharacterState::ComboMeleeDeprecated(_)
| CharacterState::ComboMelee2(_) | CharacterState::ComboMelee2(_)
| CharacterState::LeapMelee(_) | CharacterState::LeapMelee(_)
| CharacterState::LeapShockwave(_) | CharacterState::LeapShockwave(_)
@ -247,7 +247,7 @@ impl CharacterState {
CharacterState::BasicMelee(_) CharacterState::BasicMelee(_)
| CharacterState::BasicRanged(_) | CharacterState::BasicRanged(_)
| CharacterState::DashMelee(_) | CharacterState::DashMelee(_)
| CharacterState::ComboMelee(_) | CharacterState::ComboMeleeDeprecated(_)
| CharacterState::ComboMelee2(_) | CharacterState::ComboMelee2(_)
| CharacterState::BasicBlock(_) | CharacterState::BasicBlock(_)
| CharacterState::LeapMelee(_) | CharacterState::LeapMelee(_)
@ -377,7 +377,7 @@ impl CharacterState {
pub fn is_forced_movement(&self) -> bool { pub fn is_forced_movement(&self) -> bool {
matches!(self, matches!(self,
CharacterState::ComboMelee(s) if s.stage_section == StageSection::Action) CharacterState::ComboMeleeDeprecated(s) if s.stage_section == StageSection::Action)
|| matches!(self, CharacterState::ComboMelee2(s) if s.stage_section == StageSection::Action) || matches!(self, CharacterState::ComboMelee2(s) if s.stage_section == StageSection::Action)
|| matches!(self, CharacterState::DashMelee(s) if s.stage_section == StageSection::Charge) || matches!(self, CharacterState::DashMelee(s) if s.stage_section == StageSection::Charge)
|| matches!(self, CharacterState::LeapMelee(s) if s.stage_section == StageSection::Movement) || matches!(self, CharacterState::LeapMelee(s) if s.stage_section == StageSection::Movement)
@ -403,7 +403,7 @@ impl CharacterState {
| CharacterState::Wielding(_) | CharacterState::Wielding(_)
| CharacterState::BasicMelee(_) | CharacterState::BasicMelee(_)
| CharacterState::BasicRanged(_) | CharacterState::BasicRanged(_)
| CharacterState::ComboMelee(_) | CharacterState::ComboMeleeDeprecated(_)
| CharacterState::ComboMelee2(_) | CharacterState::ComboMelee2(_)
| CharacterState::ChargedRanged(_) | CharacterState::ChargedRanged(_)
| CharacterState::RepeaterRanged(_) | CharacterState::RepeaterRanged(_)
@ -458,7 +458,7 @@ impl CharacterState {
CharacterState::Roll(data) => data.behavior(j, output_events), CharacterState::Roll(data) => data.behavior(j, output_events),
CharacterState::Wielding(data) => data.behavior(j, output_events), CharacterState::Wielding(data) => data.behavior(j, output_events),
CharacterState::Equipping(data) => data.behavior(j, output_events), CharacterState::Equipping(data) => data.behavior(j, output_events),
CharacterState::ComboMelee(data) => data.behavior(j, output_events), CharacterState::ComboMeleeDeprecated(data) => data.behavior(j, output_events),
CharacterState::ComboMelee2(data) => data.behavior(j, output_events), CharacterState::ComboMelee2(data) => data.behavior(j, output_events),
CharacterState::BasicMelee(data) => data.behavior(j, output_events), CharacterState::BasicMelee(data) => data.behavior(j, output_events),
CharacterState::BasicRanged(data) => data.behavior(j, output_events), CharacterState::BasicRanged(data) => data.behavior(j, output_events),
@ -511,7 +511,9 @@ impl CharacterState {
CharacterState::Roll(data) => data.handle_event(j, output_events, action), CharacterState::Roll(data) => data.handle_event(j, output_events, action),
CharacterState::Wielding(data) => data.handle_event(j, output_events, action), CharacterState::Wielding(data) => data.handle_event(j, output_events, action),
CharacterState::Equipping(data) => data.handle_event(j, output_events, action), CharacterState::Equipping(data) => data.handle_event(j, output_events, action),
CharacterState::ComboMelee(data) => data.handle_event(j, output_events, action), CharacterState::ComboMeleeDeprecated(data) => {
data.handle_event(j, output_events, action)
},
CharacterState::ComboMelee2(data) => data.handle_event(j, output_events, action), CharacterState::ComboMelee2(data) => data.handle_event(j, output_events, action),
CharacterState::BasicMelee(data) => data.handle_event(j, output_events, action), CharacterState::BasicMelee(data) => data.handle_event(j, output_events, action),
CharacterState::BasicRanged(data) => data.handle_event(j, output_events, action), CharacterState::BasicRanged(data) => data.handle_event(j, output_events, action),
@ -564,7 +566,7 @@ impl CharacterState {
CharacterState::Roll(data) => Some(data.static_data.ability_info), CharacterState::Roll(data) => Some(data.static_data.ability_info),
CharacterState::Wielding(_) => None, CharacterState::Wielding(_) => None,
CharacterState::Equipping(_) => None, CharacterState::Equipping(_) => None,
CharacterState::ComboMelee(data) => Some(data.static_data.ability_info), CharacterState::ComboMeleeDeprecated(data) => Some(data.static_data.ability_info),
CharacterState::ComboMelee2(data) => Some(data.static_data.ability_info), CharacterState::ComboMelee2(data) => Some(data.static_data.ability_info),
CharacterState::BasicMelee(data) => Some(data.static_data.ability_info), CharacterState::BasicMelee(data) => Some(data.static_data.ability_info),
CharacterState::BasicRanged(data) => Some(data.static_data.ability_info), CharacterState::BasicRanged(data) => Some(data.static_data.ability_info),
@ -608,7 +610,7 @@ impl CharacterState {
CharacterState::Roll(data) => Some(data.stage_section), CharacterState::Roll(data) => Some(data.stage_section),
CharacterState::Equipping(_) => Some(StageSection::Buildup), CharacterState::Equipping(_) => Some(StageSection::Buildup),
CharacterState::Wielding(_) => None, CharacterState::Wielding(_) => None,
CharacterState::ComboMelee(data) => Some(data.stage_section), CharacterState::ComboMeleeDeprecated(data) => Some(data.stage_section),
CharacterState::ComboMelee2(data) => Some(data.stage_section), CharacterState::ComboMelee2(data) => Some(data.stage_section),
CharacterState::BasicMelee(data) => Some(data.stage_section), CharacterState::BasicMelee(data) => Some(data.stage_section),
CharacterState::BasicRanged(data) => Some(data.stage_section), CharacterState::BasicRanged(data) => Some(data.stage_section),
@ -668,7 +670,7 @@ impl CharacterState {
buildup: Some(data.static_data.buildup_duration), buildup: Some(data.static_data.buildup_duration),
..Default::default() ..Default::default()
}), }),
CharacterState::ComboMelee(data) => { CharacterState::ComboMeleeDeprecated(data) => {
let stage_index = data.stage_index(); let stage_index = data.stage_index();
let stage = data.static_data.stage_data[stage_index]; let stage = data.static_data.stage_data[stage_index];
Some(DurationsInfo { Some(DurationsInfo {
@ -840,7 +842,7 @@ impl CharacterState {
CharacterState::Roll(data) => Some(data.timer), CharacterState::Roll(data) => Some(data.timer),
CharacterState::Wielding(_) => None, CharacterState::Wielding(_) => None,
CharacterState::Equipping(data) => Some(data.timer), CharacterState::Equipping(data) => Some(data.timer),
CharacterState::ComboMelee(data) => Some(data.timer), CharacterState::ComboMeleeDeprecated(data) => Some(data.timer),
CharacterState::ComboMelee2(data) => Some(data.timer), CharacterState::ComboMelee2(data) => Some(data.timer),
CharacterState::BasicMelee(data) => Some(data.timer), CharacterState::BasicMelee(data) => Some(data.timer),
CharacterState::BasicRanged(data) => Some(data.timer), CharacterState::BasicRanged(data) => Some(data.timer),
@ -884,7 +886,7 @@ impl CharacterState {
CharacterState::Roll(_) => None, CharacterState::Roll(_) => None,
CharacterState::Wielding(_) => None, CharacterState::Wielding(_) => None,
CharacterState::Equipping(_) => None, CharacterState::Equipping(_) => None,
CharacterState::ComboMelee(_) => Some(AttackSource::Melee), CharacterState::ComboMeleeDeprecated(_) => Some(AttackSource::Melee),
CharacterState::ComboMelee2(_) => Some(AttackSource::Melee), CharacterState::ComboMelee2(_) => Some(AttackSource::Melee),
CharacterState::BasicMelee(_) => Some(AttackSource::Melee), CharacterState::BasicMelee(_) => Some(AttackSource::Melee),
CharacterState::BasicRanged(data) => { CharacterState::BasicRanged(data) => {

View File

@ -705,7 +705,7 @@ fn default_main_tool(body: &Body) -> Item {
arthropod::Species::Dagonite => Some(Item::new_from_asset_expect( arthropod::Species::Dagonite => Some(Item::new_from_asset_expect(
"common.items.npc_weapons.unique.arthropods.dagonite", "common.items.npc_weapons.unique.arthropods.dagonite",
)), )),
_ => Some(Item::new_from_asset_expect( arthropod::Species::Leafbeetle => Some(Item::new_from_asset_expect(
"common.items.npc_weapons.unique.arthropods.leafbeetle", "common.items.npc_weapons.unique.arthropods.leafbeetle",
)), )),
}, },

View File

@ -56,8 +56,10 @@ pub struct Stats {
pub damage_reduction: f32, pub damage_reduction: f32,
pub poise_reduction: f32, pub poise_reduction: f32,
pub heal_multiplier: f32, pub heal_multiplier: f32,
pub move_speed_multiplier: f32,
pub max_health_modifiers: StatsModifier, pub max_health_modifiers: StatsModifier,
pub move_speed_modifier: f32, pub move_speed_modifier: f32,
pub jump_modifier: f32,
pub attack_speed_modifier: f32, pub attack_speed_modifier: f32,
pub friction_modifier: f32, pub friction_modifier: f32,
pub max_energy_modifiers: StatsModifier, pub max_energy_modifiers: StatsModifier,
@ -83,8 +85,10 @@ impl Stats {
damage_reduction: 0.0, damage_reduction: 0.0,
poise_reduction: 0.0, poise_reduction: 0.0,
heal_multiplier: 1.0, heal_multiplier: 1.0,
move_speed_multiplier: 1.0,
max_health_modifiers: StatsModifier::default(), max_health_modifiers: StatsModifier::default(),
move_speed_modifier: 1.0, move_speed_modifier: 1.0,
jump_modifier: 1.0,
attack_speed_modifier: 1.0, attack_speed_modifier: 1.0,
friction_modifier: 1.0, friction_modifier: 1.0,
max_energy_modifiers: StatsModifier::default(), max_energy_modifiers: StatsModifier::default(),

View File

@ -35,3 +35,6 @@ pub const ENERGY_PER_LEVEL: u16 = 5;
pub const HP_PER_LEVEL: u16 = 5; pub const HP_PER_LEVEL: u16 = 5;
pub const TELEPORTER_RADIUS: f32 = 3.; pub const TELEPORTER_RADIUS: f32 = 3.;
// Map settings
pub const DAY_LENGTH_DEFAULT: f64 = 30.0;

View File

@ -170,14 +170,14 @@ impl CharacterBehavior for Data {
); );
// Build up // Build up
update.character = CharacterState::ComboMelee(Data { update.character = CharacterState::ComboMeleeDeprecated(Data {
static_data: self.static_data.clone(), static_data: self.static_data.clone(),
timer: tick_attack_or_default(data, self.timer, Some(speed_modifier)), timer: tick_attack_or_default(data, self.timer, Some(speed_modifier)),
..*self ..*self
}); });
} else { } else {
// Transitions to swing section of stage // Transitions to swing section of stage
update.character = CharacterState::ComboMelee(Data { update.character = CharacterState::ComboMeleeDeprecated(Data {
static_data: self.static_data.clone(), static_data: self.static_data.clone(),
timer: Duration::default(), timer: Duration::default(),
stage_section: StageSection::Action, stage_section: StageSection::Action,
@ -194,7 +194,7 @@ impl CharacterBehavior for Data {
&& !self.exhausted && !self.exhausted
{ {
// Swing // Swing
update.character = CharacterState::ComboMelee(Data { update.character = CharacterState::ComboMeleeDeprecated(Data {
static_data: self.static_data.clone(), static_data: self.static_data.clone(),
timer: tick_attack_or_default(data, self.timer, None), timer: tick_attack_or_default(data, self.timer, None),
exhausted: true, exhausted: true,
@ -304,14 +304,14 @@ impl CharacterBehavior for Data {
); );
// Swings // Swings
update.character = CharacterState::ComboMelee(Data { update.character = CharacterState::ComboMeleeDeprecated(Data {
static_data: self.static_data.clone(), static_data: self.static_data.clone(),
timer: tick_attack_or_default(data, self.timer, Some(speed_modifier)), timer: tick_attack_or_default(data, self.timer, Some(speed_modifier)),
..*self ..*self
}); });
} else { } else {
// Transitions to recover section of stage // Transitions to recover section of stage
update.character = CharacterState::ComboMelee(Data { update.character = CharacterState::ComboMeleeDeprecated(Data {
static_data: self.static_data.clone(), static_data: self.static_data.clone(),
timer: Duration::default(), timer: Duration::default(),
stage_section: StageSection::Recover, stage_section: StageSection::Recover,
@ -328,7 +328,7 @@ impl CharacterBehavior for Data {
None, None,
); );
// Recovers // Recovers
update.character = CharacterState::ComboMelee(Data { update.character = CharacterState::ComboMeleeDeprecated(Data {
static_data: self.static_data.clone(), static_data: self.static_data.clone(),
timer: tick_attack_or_default(data, self.timer, Some(speed_modifier)), timer: tick_attack_or_default(data, self.timer, Some(speed_modifier)),
..*self ..*self
@ -380,7 +380,7 @@ fn reset_state(
data.static_data.ability_info.input, data.static_data.ability_info.input,
); );
if let CharacterState::ComboMelee(c) = &mut update.character { if let CharacterState::ComboMeleeDeprecated(c) = &mut update.character {
c.stage = (data.stage % data.static_data.num_stages) + 1; c.stage = (data.stage % data.static_data.num_stages) + 1;
} }
} }

View File

@ -2,7 +2,7 @@ use crate::{
comp::{ comp::{
buff::{BuffChange, BuffKind}, buff::{BuffChange, BuffKind},
character_state::{AttackFilters, OutputEvents}, character_state::{AttackFilters, OutputEvents},
CharacterState, InputKind, StateUpdate, CharacterState, StateUpdate,
}, },
event::ServerEvent, event::ServerEvent,
states::{ states::{
@ -46,8 +46,6 @@ pub struct Data {
pub prev_aimed_dir: Option<Dir>, pub prev_aimed_dir: Option<Dir>,
/// Is sneaking, true if previous state was also considered sneaking /// Is sneaking, true if previous state was also considered sneaking
pub is_sneaking: bool, pub is_sneaking: bool,
/// Was in state with combo
pub was_combo: Option<(InputKind, u32)>,
} }
impl CharacterBehavior for Data { impl CharacterBehavior for Data {
@ -126,21 +124,8 @@ impl CharacterBehavior for Data {
}); });
} else { } else {
// Done // Done
if let Some((input, stage)) = self.was_combo {
if input_is_pressed(data, input) {
handle_input(data, output_events, &mut update, input);
// If other states are introduced that progress through stages, add them
// here
if let CharacterState::ComboMelee(c) = &mut update.character {
c.stage = stage;
}
} else {
end_ability(data, &mut update); end_ability(data, &mut update);
} }
} else {
end_ability(data, &mut update);
}
}
}, },
_ => { _ => {
// If it somehow ends up in an incorrect stage section // If it somehow ends up in an incorrect stage section

View File

@ -1193,7 +1193,7 @@ pub fn handle_jump(
data.entity, data.entity,
strength * impulse / data.mass.0 strength * impulse / data.mass.0
* data.scale.map_or(1.0, |s| s.0.powf(13.0).powf(0.25)) * data.scale.map_or(1.0, |s| s.0.powf(13.0).powf(0.25))
* data.stats.move_speed_modifier, * data.stats.jump_modifier,
)); ));
}) })
.is_some() .is_some()
@ -1243,17 +1243,12 @@ fn handle_ability(
} }
} }
if let CharacterState::Roll(roll) = &mut update.character { if let CharacterState::Roll(roll) = &mut update.character {
if let CharacterState::ComboMelee(c) = data.character {
roll.was_combo = Some((c.static_data.ability_info.input, c.stage));
roll.was_wielded = true;
} else {
if data.character.is_wield() || data.character.was_wielded() { if data.character.is_wield() || data.character.was_wielded() {
roll.was_wielded = true; roll.was_wielded = true;
} }
if data.character.is_stealthy() { if data.character.is_stealthy() {
roll.is_sneaking = true; roll.is_sneaking = true;
} }
}
if data.character.is_aimed() { if data.character.is_aimed() {
roll.prev_aimed_dir = Some(data.controller.inputs.look_dir); roll.prev_aimed_dir = Some(data.controller.inputs.look_dir);
} }

View File

@ -14,6 +14,7 @@ pub enum SiteKindMeta {
pub enum DungeonKindMeta { pub enum DungeonKindMeta {
Old, Old,
Gnarling, Gnarling,
Adlet,
} }
#[derive(Debug, Copy, Clone, Serialize, Deserialize, PartialEq, Eq)] #[derive(Debug, Copy, Clone, Serialize, Deserialize, PartialEq, Eq)]

View File

@ -33,7 +33,7 @@ use hashbrown::{HashMap, HashSet};
use rayon::{ThreadPool, ThreadPoolBuilder}; use rayon::{ThreadPool, ThreadPoolBuilder};
use specs::{ use specs::{
prelude::Resource, prelude::Resource,
shred::{Fetch, FetchMut}, shred::{Fetch, FetchMut, SendDispatcher},
storage::{MaskedStorage as EcsMaskedStorage, Storage as EcsStorage}, storage::{MaskedStorage as EcsMaskedStorage, Storage as EcsStorage},
Component, DispatcherBuilder, Entity as EcsEntity, WorldExt, Component, DispatcherBuilder, Entity as EcsEntity, WorldExt,
}; };
@ -128,6 +128,7 @@ pub struct State {
ecs: specs::World, ecs: specs::World,
// Avoid lifetime annotation by storing a thread pool instead of the whole dispatcher // Avoid lifetime annotation by storing a thread pool instead of the whole dispatcher
thread_pool: Arc<ThreadPool>, thread_pool: Arc<ThreadPool>,
dispatcher: SendDispatcher<'static>,
} }
pub type Pools = Arc<ThreadPool>; pub type Pools = Arc<ThreadPool>;
@ -150,13 +151,35 @@ impl State {
} }
/// Create a new `State` in client mode. /// Create a new `State` in client mode.
pub fn client(pools: Pools, map_size_lg: MapSizeLg, default_chunk: Arc<TerrainChunk>) -> Self { pub fn client(
Self::new(GameMode::Client, pools, map_size_lg, default_chunk) pools: Pools,
map_size_lg: MapSizeLg,
default_chunk: Arc<TerrainChunk>,
add_systems: impl Fn(&mut DispatcherBuilder),
) -> Self {
Self::new(
GameMode::Client,
pools,
map_size_lg,
default_chunk,
add_systems,
)
} }
/// Create a new `State` in server mode. /// Create a new `State` in server mode.
pub fn server(pools: Pools, map_size_lg: MapSizeLg, default_chunk: Arc<TerrainChunk>) -> Self { pub fn server(
Self::new(GameMode::Server, pools, map_size_lg, default_chunk) pools: Pools,
map_size_lg: MapSizeLg,
default_chunk: Arc<TerrainChunk>,
add_systems: impl Fn(&mut DispatcherBuilder),
) -> Self {
Self::new(
GameMode::Server,
pools,
map_size_lg,
default_chunk,
add_systems,
)
} }
pub fn new( pub fn new(
@ -164,10 +187,23 @@ impl State {
pools: Pools, pools: Pools,
map_size_lg: MapSizeLg, map_size_lg: MapSizeLg,
default_chunk: Arc<TerrainChunk>, default_chunk: Arc<TerrainChunk>,
add_systems: impl Fn(&mut DispatcherBuilder),
) -> Self { ) -> Self {
prof_span!(guard, "create dispatcher");
let mut dispatch_builder =
DispatcherBuilder::<'static, 'static>::new().with_pool(Arc::clone(&pools));
// TODO: Consider alternative ways to do this
add_systems(&mut dispatch_builder);
let dispatcher = dispatch_builder
.build()
.try_into_sendable()
.unwrap_or_else(|_| panic!("Thread local systems not allowed"));
drop(guard);
Self { Self {
ecs: Self::setup_ecs_world(game_mode, Arc::clone(&pools), map_size_lg, default_chunk), ecs: Self::setup_ecs_world(game_mode, Arc::clone(&pools), map_size_lg, default_chunk),
thread_pool: pools, thread_pool: pools,
dispatcher,
} }
} }
@ -615,7 +651,6 @@ impl State {
pub fn tick( pub fn tick(
&mut self, &mut self,
dt: Duration, dt: Duration,
add_systems: impl Fn(&mut DispatcherBuilder),
update_terrain: bool, update_terrain: bool,
mut metrics: Option<&mut StateTickMetrics>, mut metrics: Option<&mut StateTickMetrics>,
server_constants: &ServerConstants, server_constants: &ServerConstants,
@ -645,19 +680,9 @@ impl State {
self.ecs.write_resource::<DeltaTime>().0 = self.ecs.write_resource::<DeltaTime>().0 =
(dt.as_secs_f32() * time_scale as f32).min(MAX_DELTA_TIME); (dt.as_secs_f32() * time_scale as f32).min(MAX_DELTA_TIME);
section_span!(guard, "create dispatcher");
// Run systems to update the world.
// Create and run a dispatcher for ecs systems.
let mut dispatch_builder =
DispatcherBuilder::new().with_pool(Arc::clone(&self.thread_pool));
// TODO: Consider alternative ways to do this
add_systems(&mut dispatch_builder);
// This dispatches all the systems in parallel.
let mut dispatcher = dispatch_builder.build();
drop(guard);
section_span!(guard, "run systems"); section_span!(guard, "run systems");
dispatcher.dispatch(&self.ecs); // This dispatches all the systems in parallel.
self.dispatcher.dispatch(&self.ecs);
drop(guard); drop(guard);
section_span!(guard, "maintain ecs"); section_span!(guard, "maintain ecs");

View File

@ -11,9 +11,7 @@ use common::{
uid::{IdMaps, Uid}, uid::{IdMaps, Uid},
}; };
use common_ecs::{Job, Origin, Phase, System}; use common_ecs::{Job, Origin, Phase, System};
use specs::{ use specs::{shred, Entities, Entity as EcsEntity, Join, Read, ReadStorage, SystemData};
shred::ResourceId, Entities, Entity as EcsEntity, Join, Read, ReadStorage, SystemData, World,
};
#[derive(SystemData)] #[derive(SystemData)]
pub struct ReadData<'a> { pub struct ReadData<'a> {

View File

@ -17,8 +17,7 @@ use common_ecs::{Job, Origin, ParMode, Phase, System};
use rand::Rng; use rand::Rng;
use rayon::iter::ParallelIterator; use rayon::iter::ParallelIterator;
use specs::{ use specs::{
shred::ResourceId, Entities, LendJoin, ParJoin, Read, ReadExpect, ReadStorage, SystemData, shred, Entities, LendJoin, ParJoin, Read, ReadExpect, ReadStorage, SystemData, WriteStorage,
World, WriteStorage,
}; };
use vek::*; use vek::*;
@ -121,6 +120,10 @@ impl<'a> System<'a> for Sys {
sound: Sound::new(SoundKind::Beam, pos.0, 13.0, read_data.time.0), sound: Sound::new(SoundKind::Beam, pos.0, 13.0, read_data.time.0),
}); });
} }
outcomes.push(Outcome::Beam {
pos: pos.0,
specifier: beam.specifier,
});
// Group to ignore collisions with // Group to ignore collisions with
// Might make this more nuanced if beams are used for non damage effects // Might make this more nuanced if beams are used for non damage effects

View File

@ -22,8 +22,8 @@ use common_base::prof_span;
use common_ecs::{Job, Origin, ParMode, Phase, System}; use common_ecs::{Job, Origin, ParMode, Phase, System};
use rayon::iter::ParallelIterator; use rayon::iter::ParallelIterator;
use specs::{ use specs::{
shred::ResourceId, Entities, Entity, LendJoin, ParJoin, Read, ReadExpect, ReadStorage, shred, Entities, Entity, LendJoin, ParJoin, Read, ReadExpect, ReadStorage, SystemData,
SystemData, World, WriteStorage, WriteStorage,
}; };
#[derive(SystemData)] #[derive(SystemData)]
@ -664,6 +664,9 @@ fn execute_effect(
BuffEffect::HealReduction(red) => { BuffEffect::HealReduction(red) => {
stat.heal_multiplier *= 1.0 - *red; stat.heal_multiplier *= 1.0 - *red;
}, },
BuffEffect::MoveSpeedReduction(red) => {
stat.move_speed_multiplier *= 1.0 - *red;
},
BuffEffect::PoiseDamageFromLostHealth { BuffEffect::PoiseDamageFromLostHealth {
initial_health, initial_health,
strength, strength,

View File

@ -1,6 +1,5 @@
use specs::{ use specs::{
shred::ResourceId, Entities, LazyUpdate, LendJoin, Read, ReadExpect, ReadStorage, SystemData, shred, Entities, LazyUpdate, LendJoin, Read, ReadExpect, ReadStorage, SystemData, WriteStorage,
World, WriteStorage,
}; };
use common::{ use common::{

View File

@ -9,10 +9,7 @@ use common::{
uid::IdMaps, uid::IdMaps,
}; };
use common_ecs::{Job, Origin, Phase, System}; use common_ecs::{Job, Origin, Phase, System};
use specs::{ use specs::{shred, Entities, Join, Read, ReadExpect, ReadStorage, SystemData, WriteStorage};
shred::ResourceId, Entities, Join, Read, ReadExpect, ReadStorage, SystemData, World,
WriteStorage,
};
use vek::*; use vek::*;
#[derive(SystemData)] #[derive(SystemData)]

Some files were not shown because too many files have changed in this diff Show More