Merge remote-tracking branch 'origin/master' into sharp/zoomy-worldgen

This commit is contained in:
Joshua Yanovski 2023-03-29 01:21:58 -07:00
commit 6d4113993c
3200 changed files with 102248 additions and 56325 deletions

View File

@ -14,6 +14,9 @@ rustflags = [
cmd-doc-gen = "run --features=bin_cmd_doc_gen --bin cmd_doc_gen"
csv-export = "run --manifest-path common/Cargo.toml --features=bin_csv --bin csv_export"
csv-import = "run --manifest-path common/Cargo.toml --features=bin_csv --bin csv_import"
dot-recipes = "run --manifest-path common/Cargo.toml --features=bin_graphviz --bin recipe_graphviz"
dot-skills = "run --manifest-path common/Cargo.toml --features=bin_graphviz --bin skill_graphviz"
img-export = "run --manifest-path voxygen/Cargo.toml --features=bin_img-export --bin img-export"
# server-cli
server = "run --bin veloren-server-cli"
test-server = "run --bin veloren-server-cli --no-default-features --features simd"
@ -28,4 +31,5 @@ tracy-voxygen-releasedebuginfo = "run --bin veloren-voxygen --no-default-feature
dbg-voxygen = "run --bin veloren-voxygen --profile debuginfo"
# misc
swarm = "run --bin swarm --features client/bin_bot,client/tick_network --"
ci-clippy = "clippy --all-targets --locked --features=bin_cmd_doc_gen,bin_compression,bin_csv,bin_graphviz,bin_bot,bin_asset_migrate,asset_tweak"
ci-clippy = "clippy --all-targets --locked --features=bin_cmd_doc_gen,bin_compression,bin_csv,bin_graphviz,bin_bot,bin_asset_migrate,asset_tweak,bin,stat"
ci-clippy2 = "clippy -p veloren-voxygen --locked --no-default-features --features=default-publish"

1
.gitattributes vendored
View File

@ -9,6 +9,7 @@
*.tar filter=lfs diff=lfs merge=lfs -text
*.obj filter=lfs diff=lfs merge=lfs -text
*.blend filter=lfs diff=lfs merge=lfs -text
*.canary filter=lfs diff=lfs merge=lfs -text
assets/world/map/*.bin filter=lfs diff=lfs merge=lfs -text
*.ron gitlab-language=rust

1
.gitignore vendored
View File

@ -52,6 +52,7 @@ wgpu-trace/
# Export data
*.csv
img-export/**/*.png
# Game data
*.sqlite

View File

@ -13,7 +13,7 @@ variables:
# https://docs.gitlab.com/ee/ci/yaml/#shallow-cloning
GIT_DEPTH: 3
GIT_CLEAN_FLAGS: -f
CACHE_IMAGE_TAG: c96aef21
CACHE_IMAGE_TAG: 8e8fe241
TAG_REGEX: '/^v[0-9]+\.[0-9]+\.[0-9]+$/'
default:

View File

@ -55,6 +55,7 @@ benchmarks:
# Coverage is needed on master for the README.md badge to work
# tmp remove simd as it doesnt work with tarpaulin: https://github.com/rust-lang/rust/issues/77529
coverage:
extends: .release
stage: build

View File

@ -4,7 +4,7 @@
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
# No '-' here is *very* important: https://docs.gitlab.com/ee/ci/yaml/#complex-rule-clauses
changes:
- "**/*.{glsl,png,rs,ron,toml,vox,yml,wav,sh}"
- "**/*.{glsl,png,rs,ron,ftl,toml,vox,yml,wav,sh}"
- "rust-toolchain"
- "Cargo.lock"
- ".gitlab-ci.yml"
@ -14,7 +14,7 @@
.recompile:
rules:
- changes:
- "**/*.{glsl,png,rs,ron,toml,vox,yml,wav,sh}"
- "**/*.{glsl,png,rs,ron,ftl,toml,vox,yml,wav,sh}"
- "rust-toolchain"
- "Cargo.lock"
- ".gitlab-ci.yml"

View File

@ -1,6 +1,16 @@
#!/bin/bash
# cargo clippy is a superset of cargo check, so we don't check manually
time cargo clippy --all-targets --locked --features="bin_cmd_doc_gen,bin_compression,bin_csv,bin_graphviz,bin_bot,bin_asset_migrate,asset_tweak" -- -D warnings &&
time cargo clippy \
--all-targets \
--locked \
--features="bin_cmd_doc_gen,bin_compression,bin_csv,bin_graphviz,bin_bot,bin_asset_migrate,asset_tweak,bin,stat" \
-- -D warnings &&
# Ensure that the veloren-voxygen default-publish feature builds as it excludes some default features
time cargo clippy -p veloren-voxygen --locked --no-default-features --features="default-publish" -- -D warnings &&
time cargo clippy -p \
veloren-voxygen --locked \
--no-default-features \
--features="default-publish" \
-- -D warnings &&
time cargo fmt --all -- --check

View File

@ -1,6 +1,5 @@
#!/bin/bash
echo "modifying files in 5s, ctrl+c to abort" && sleep 5
find ./* -name "Cargo.toml" -exec sed -i 's/, "simd"]/]/g' {} \;
find ./* -name "Cargo.toml" -exec sed -i 's/"simd"]/]/g' {} \;
find ./* -name "Cargo.toml" -exec sed -i -E 's/, *"simd"|"simd" *,|"simd"//g' {} \;
export VELOREN_ASSETS="$(pwd)/assets";
time cargo tarpaulin --skip-clean -v -- --test-threads=2;

View File

@ -1,3 +1,5 @@
#!/bin/bash
export VELOREN_ASSETS="$(pwd)/assets"
time cargo test --package veloren-voxygen-i18n --lib test_all_localizations -- --nocapture --ignored
VELOREN_ASSETS="$(pwd)/assets"
export VELOREN_ASSETS
time cargo run --bin i18n-csv --features="stat"

View File

@ -1,4 +1,8 @@
#!/bin/bash
export VELOREN_ASSETS="$(pwd)/assets"
time cargo test --package veloren-common-assets asset_tweak::tests --features asset_tweak --lib &&
VELOREN_ASSETS="$(pwd)/assets"
export VELOREN_ASSETS
time cargo test \
--package veloren-common-assets asset_tweak::tests \
--features asset_tweak --lib &&
time cargo test

View File

@ -1 +1 @@
Mckol <mckol363@gmail.com>
LunarEclipse <luna@lunareclipse.zone> <mckol363@gmail.com>

View File

@ -8,16 +8,125 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
### Added
- Command to toggle experimental shaders.
- Faster Energy Regeneration while sitting.
- Lantern glow for dropped lanterns.
- Suggests commands when an invalid one is entered in chat and added Client-side commands to /help.
- Moderator badge in the chat.
- More aggressive scene culling based on camera position to improve performance.
- Some chests requiring lockpicks or keys.
- Unlockable door blocks.
- Sprite rotation for Spots.
- Better entity placement options for spots.
- Camera zoom can now be locked, to prevent accidental zooming while rolling in combat. It comes
with a keybind to enable/disable the setting, and an Auto/Toggle behavior setting. Auto behavior
will only lock the camera zoom while movement and combat inputs are also being pressed.
- Custom spots can be added without recompilation (only ron and vox files)
- Setting in userdata/server/server_config/settings.ron that controls the length of each day/night cycle.
### Changed
- Bats move slower and use a simple proportional controller to maintain altitude
- Bats now have less health
- Climbing no longer requires having 10 energy
- Castles will now be placed close to towns
- Sword
### Removed
### Fixed
- Doors
- Debug hitboxes now scale with the `Scale` component
- Potion quaffing no longer makes characters practically immortal.
- Stat diff now displays correctly for armor
- Lamps, embers and campfires use glowing indices
- Non-potion drinks no longer heal as much as potions.
- Added SFX to the new sword abilities
- Fixed various issues with showing the correct text hint for interactable blocks.
- Intert entities like arrows no longer obstruct interacting with nearby entities/blocks.
## [0.14.0] - 2023-01-07
### Added
- Setting for disabling flashing lights
- Spectate mode for moderators.
- Currently playing music track and artist now shows in the debug menu.
- Added a setting to influence the gap between music track plays.
- Added a Craft All button.
- Server: Vacuum database on startup
- SeaChapel, greek/latin inspired dungeon for ocean biome coasts
- Entity view distance setting added (shown in graphics and network tabs). This setting controls
the distance at which entities are synced to the client and which entities are displayed in.
This is clamped to be no more than the current overall view distance setting.
- View distance settings that are lowered by the server limit (or other factors) now display an
extra ghost slider cursor when set above the limit (instead of snapping back to the limit).
Limits on the view distance by the server no longer affect the settings saved on the client.
- HQX upscaling shader for people playing on low internal resolutions
- Pets can now be traded with.
- Crafting recipe for black lantern
- Added redwood and dead trees
- Water will now move according to its apparent flow direction
- Added screen-space reflection and refraction shaders
- Added reflection quality setting
- UI: Added a poise indicator to the player's status bars
- FxUpscale AA mode for higher quality graphics at reduced internal resolutions
- Graphics presets
- Sword
- Doors now animate opening when entities are near them.
- Musical instruments can now be crafted, looted and played
- NPCs now move to their target's last known position.
- Experience bar below the hotbar
- Bridges.
- Tool for exporting PNG images of all in-game models (`cargo img-export`)
- Calendar event soundtracks.
### Changed
- Use fluent for translations
- First tab on Login screen triggers username focus
- Certain NPCs will now attack when alone with victim
- /kill_npcs no longer leaves drops behind and also has bug causing it to not destroy entities
fixed.
- Default present mode changed to Fifo (aka 'Vsync capped').
- Old "Entity View Distance" setting renamed to "Entity Detail Distance" (since this controls the
distance at which lower detail models are used for entities).
- Present mode options renamed for clarity: Fifo -> 'Vsync capped', Mailbox -> 'Vsync uncapped',
Immediate -> 'Vsync off'.
- Item pickup UI now displays items that members of your group pick up.
- Improved shiny water shaders
- Tweaked armor stats
- Move bag icon to skillbar
- Improved inventory sorting by Category
### Removed
### Fixed
- Fixed npc not handling interactions while fighting (especially merchants in trade)
- Fixed bug where you would still be burning after dying in lava.
- Workaround for rayon bug that caused lag spikes in slowjobs
- Fixed crash due to zooming out very far
- Client properly knows trade was cancelled when exiting to the character screen (and no longer
tries to display the trade window when rejoining)
- Cancel trades for an entity when it is deleted (note this doesn't effect trades between players
since their entities are not removed).
- Fixed bug where the view distance selection was not immediately applied to entity syncing when
first joining a server and when changing the view distance (previously this required moving to a
new chunk for the initial setting or subsequent change to apply).
- Moderators and admins are no longer blocked from logging in when there are too many players.
- FXAA now behaves correctly at non-1.0x internal resolutions
- Pets no longer aggro on pet owners after being healed
- Pets no longer lose their intrinsic weapons/armour when loaded on login.
- Fixed npcs using `/say` instead of `/tell`
- Camera jittering in third person has been significantly reduced
- Many water shader issues have been fixed
- Flee if attacked even if attacker is not close.
- `/time` command will never rewind time, only advance it to not break rtsim
## [0.13.0] - 2022-07-23
### Added
- Chat commands to mute and unmute players
- Waypoints saved between sessions and shared with group members.
- New rocks
@ -73,9 +182,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Overhauled caves: they're now a multi-layer network spanning the entire world
### Removed
- Removed the options for single and cumulated damage.
### Fixed
- Fixed bug that would sometimes cause taking a screenshot to panic because a buffer was mapped at the wrong time.
- Players can no longer push waypoints around
- Sites will now also be placed near the edge of the map
@ -765,7 +876,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- New attack animation
- Weapon control system
- Game pauses when in single player and pause menu
- Added authentication system (to play on the official server register on https://account.veloren.net)
- Added authentication system (to play on the official server register on <https://account.veloren.net>)
- Added gamepad/controller support
- Added player feedback when attempting to pickup an item with a full inventory
- Added free look
@ -1002,7 +1113,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
_0.1.0 was part of the legacy engine_
[unreleased]: https://gitlab.com/veloren/veloren/compare?from=v0.13.0&to=master
[unreleased]: https://gitlab.com/veloren/veloren/compare?from=v0.14.0&to=master
[0.14.0]: https://gitlab.com/veloren/veloren/compare?from=v0.13.0&to=v0.14.0
[0.13.0]: https://gitlab.com/veloren/veloren/compare?from=v0.12.0&to=v0.13.0
[0.12.0]: https://gitlab.com/veloren/veloren/compare?from=v0.11.0&to=v0.12.0
[0.11.0]: https://gitlab.com/veloren/veloren/compare?from=v0.10.0&to=v0.11.0

2593
Cargo.lock generated

File diff suppressed because it is too large Load Diff

View File

@ -5,24 +5,24 @@ members = [
"common",
"common/assets",
"common/base",
"common/dynlib",
"common/ecs",
"common/net",
"common/state",
"common/systems",
"common/frontend",
"client",
"client/i18n",
"plugin/api",
"plugin/derive",
"plugin/rt",
"server",
"server/agent",
"server-cli",
"voxygen",
"voxygen/anim",
"voxygen/anim/dyn",
"voxygen/i18n",
"voxygen/dynlib",
"voxygen/i18n-helpers",
"voxygen/egui",
"voxygen/egui/dyn",
"world",
"network",
"network/protocol",
@ -115,10 +115,6 @@ systems = ["x86_64-linux"]
name = "veloren-nix"
key = "veloren-nix.cachix.org-1:zokfKJqVsNV6kI/oJdLF6TYBdNPYGSb+diMVQPn/5Rc="
[workspace.metadata.nix.crateOverride.veloren-network]
buildInputs = ["openssl"]
nativeBuildInputs = ["pkg-config"]
[patch.crates-io]
vek = { git = "https://github.com/yoanlcq/vek.git", rev = "84d5cb65841d46599a986c5477341bea4456be26" }
# patch wgpu so we can use wgpu-profiler crate

12
LICENSE
View File

@ -1,7 +1,7 @@
GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
@ -632,7 +632,7 @@ state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
Veloren
Copyright (C) 2020 Project Veloren
Copyright (C) 2018-2023 Project Veloren
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@ -645,14 +645,14 @@ the "copyright" line and a pointer to where the full notice is found.
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
along with this program. If not, see <https://www.gnu.org/licenses/>.
Also add information on how to contact you by electronic and paper mail.
If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode:
Veloren Copyright (C) 2020 Project Veloren
Veloren Copyright (C) 2018-2023 Project Veloren
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
@ -664,11 +664,11 @@ might be different; for a GUI interface, you would use an "about box".
You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU GPL, see
<http://www.gnu.org/licenses/>.
<https://www.gnu.org/licenses/>.
The GNU General Public License does not permit incorporating your program
into proprietary programs. If your program is a subroutine library, you
may consider it more useful to permit linking proprietary applications with
the library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License. But first, please read
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
<https://www.gnu.org/licenses/why-not-lgpl.html>.

View File

@ -1,428 +1,709 @@
#![enable(implicit_some)]
// Maps a tool kind to a set of abilities
// A set of abilities is a primary, a secondary, and a vec of all extra abilities
({
Tool(Sword): (
primary: "common.abilities.sword.triplestrike",
secondary: "common.abilities.sword.dash",
primary: Contextualized(
pseudo_id: "veloren.core.pseudo_abilities.sword.double_slash",
abilities: {
None: (None, "common.abilities.sword.basic_double_slash"),
Stance(Sword(Heavy)): (None, "common.abilities.sword.heavy_double_slash"),
Stance(Sword(Agile)): (None, "common.abilities.sword.agile_double_slash"),
Stance(Sword(Defensive)): (None, "common.abilities.sword.defensive_double_slash"),
Stance(Sword(Crippling)): (None, "common.abilities.sword.crippling_double_slash"),
Stance(Sword(Cleaving)): (None, "common.abilities.sword.cleaving_double_slash"),
},
),
secondary: Contextualized(
pseudo_id: "veloren.core.pseudo_abilities.sword.secondary_ability",
abilities: {
None: (None, "common.abilities.sword.basic_thrust"),
Stance(Sword(Heavy)): (None, "common.abilities.sword.heavy_slam"),
Stance(Sword(Agile)): (None, "common.abilities.sword.agile_perforate"),
Stance(Sword(Defensive)): (None, "common.abilities.sword.defensive_parry"),
Stance(Sword(Crippling)): (None, "common.abilities.sword.crippling_deep_rend"),
Stance(Sword(Cleaving)): (None, "common.abilities.sword.cleaving_spiral_slash"),
},
),
abilities: [
(Some(Sword(UnlockSpin)), "common.abilities.sword.spin"),
Contextualized(
pseudo_id: "veloren.core.pseudo_abilities.sword.crescent_slash",
abilities: {
None: (Sword(CrescentSlash), "common.abilities.sword.basic_crescent_slash"),
Stance(Sword(Heavy)): (Sword(CrescentSlash), "common.abilities.sword.heavy_crescent_slash"),
Stance(Sword(Agile)): (Sword(CrescentSlash), "common.abilities.sword.agile_crescent_slash"),
Stance(Sword(Defensive)): (Sword(CrescentSlash), "common.abilities.sword.defensive_crescent_slash"),
Stance(Sword(Crippling)): (Sword(CrescentSlash), "common.abilities.sword.crippling_crescent_slash"),
Stance(Sword(Cleaving)): (Sword(CrescentSlash), "common.abilities.sword.cleaving_crescent_slash"),
},
),
Contextualized(
pseudo_id: "veloren.core.pseudo_abilities.sword.fell_strike",
abilities: {
None: (Sword(FellStrike), "common.abilities.sword.basic_fell_strike"),
Stance(Sword(Heavy)): (Sword(FellStrike), "common.abilities.sword.heavy_fell_strike"),
Stance(Sword(Agile)): (Sword(FellStrike), "common.abilities.sword.agile_fell_strike"),
Stance(Sword(Defensive)): (Sword(FellStrike), "common.abilities.sword.defensive_fell_strike"),
Stance(Sword(Crippling)): (Sword(FellStrike), "common.abilities.sword.crippling_fell_strike"),
Stance(Sword(Cleaving)): (Sword(FellStrike), "common.abilities.sword.cleaving_fell_strike"),
},
),
Contextualized(
pseudo_id: "veloren.core.pseudo_abilities.sword.skewer",
abilities: {
None: (Sword(Skewer), "common.abilities.sword.basic_skewer"),
Stance(Sword(Heavy)): (Sword(Skewer), "common.abilities.sword.heavy_skewer"),
Stance(Sword(Agile)): (Sword(Skewer), "common.abilities.sword.agile_skewer"),
Stance(Sword(Defensive)): (Sword(Skewer), "common.abilities.sword.defensive_skewer"),
Stance(Sword(Crippling)): (Sword(Skewer), "common.abilities.sword.crippling_skewer"),
Stance(Sword(Cleaving)): (Sword(Skewer), "common.abilities.sword.cleaving_skewer"),
},
),
Contextualized(
pseudo_id: "veloren.core.pseudo_abilities.sword.cascade",
abilities: {
None: (Sword(Cascade), "common.abilities.sword.basic_cascade"),
Stance(Sword(Heavy)): (Sword(Cascade), "common.abilities.sword.heavy_cascade"),
Stance(Sword(Agile)): (Sword(Cascade), "common.abilities.sword.agile_cascade"),
Stance(Sword(Defensive)): (Sword(Cascade), "common.abilities.sword.defensive_cascade"),
Stance(Sword(Crippling)): (Sword(Cascade), "common.abilities.sword.crippling_cascade"),
Stance(Sword(Cleaving)): (Sword(Cascade), "common.abilities.sword.cleaving_cascade"),
},
),
Contextualized(
pseudo_id: "veloren.core.pseudo_abilities.sword.cross_cut",
abilities: {
None: (Sword(CrossCut), "common.abilities.sword.basic_cross_cut"),
Stance(Sword(Heavy)): (Sword(CrossCut), "common.abilities.sword.heavy_cross_cut"),
Stance(Sword(Agile)): (Sword(CrossCut), "common.abilities.sword.agile_cross_cut"),
Stance(Sword(Defensive)): (Sword(CrossCut), "common.abilities.sword.defensive_cross_cut"),
Stance(Sword(Crippling)): (Sword(CrossCut), "common.abilities.sword.crippling_cross_cut"),
Stance(Sword(Cleaving)): (Sword(CrossCut), "common.abilities.sword.cleaving_cross_cut"),
},
),
Contextualized(
pseudo_id: "veloren.core.pseudo_abilities.sword.finisher",
abilities: {
None: (Sword(Finisher), "common.abilities.sword.basic_mighty_strike"),
Stance(Sword(Heavy)): (Sword(Finisher), "common.abilities.sword.heavy_guillotine"),
Stance(Sword(Agile)): (Sword(Finisher), "common.abilities.sword.agile_hundred_cuts"),
Stance(Sword(Defensive)): (Sword(Finisher), "common.abilities.sword.defensive_counter"),
Stance(Sword(Crippling)): (Sword(Finisher), "common.abilities.sword.crippling_mutilate"),
Stance(Sword(Cleaving)): (Sword(Finisher), "common.abilities.sword.cleaving_bladestorm"),
},
),
Simple(Sword(HeavyWindmillSlash), "common.abilities.sword.heavy_windmill_slash"),
Simple(Sword(HeavyPommelStrike), "common.abilities.sword.heavy_pommel_strike"),
Simple(Sword(AgileQuickDraw), "common.abilities.sword.agile_quick_draw"),
Simple(Sword(AgileFeint), "common.abilities.sword.agile_feint"),
Simple(Sword(DefensiveRiposte), "common.abilities.sword.defensive_riposte"),
Simple(Sword(DefensiveDisengage), "common.abilities.sword.defensive_disengage"),
Simple(Sword(CripplingGouge), "common.abilities.sword.crippling_gouge"),
Simple(Sword(CripplingHamstring), "common.abilities.sword.crippling_hamstring"),
Simple(Sword(CleavingWhirlwindSlice), "common.abilities.sword.cleaving_whirlwind_slice"),
Simple(Sword(CleavingEarthSplitter), "common.abilities.sword.cleaving_earth_splitter"),
Simple(Sword(HeavyFortitude), "common.abilities.sword.heavy_fortitude"),
Simple(Sword(HeavyPillarThrust), "common.abilities.sword.heavy_pillar_thrust"),
Simple(Sword(AgileDancingEdge), "common.abilities.sword.agile_dancing_edge"),
Simple(Sword(AgileFlurry), "common.abilities.sword.agile_flurry"),
Simple(Sword(DefensiveStalwartSword), "common.abilities.sword.defensive_stalwart_sword"),
Simple(Sword(DefensiveDeflect), "common.abilities.sword.defensive_deflect"),
Simple(Sword(CripplingEviscerate), "common.abilities.sword.crippling_eviscerate"),
Simple(Sword(CripplingBloodyGash), "common.abilities.sword.crippling_bloody_gash"),
Simple(Sword(CleavingBladeFever), "common.abilities.sword.cleaving_blade_fever"),
Simple(Sword(CleavingSkySplitter), "common.abilities.sword.cleaving_sky_splitter"),
],
),
Tool(Axe): (
primary: "common.abilities.axe.doublestrike",
secondary: "common.abilities.axe.spin",
primary: Simple(None, "common.abilities.axe.doublestrike"),
secondary: Simple(None, "common.abilities.axe.spin"),
abilities: [
(Some(Axe(UnlockLeap)), "common.abilities.axe.leap"),
Simple(Some(Axe(UnlockLeap)), "common.abilities.axe.leap"),
],
),
Tool(Hammer): (
primary: "common.abilities.hammer.singlestrike",
secondary: "common.abilities.hammer.charged",
primary: Simple(None, "common.abilities.hammer.singlestrike"),
secondary: Simple(None, "common.abilities.hammer.charged"),
abilities: [
(Some(Hammer(UnlockLeap)), "common.abilities.hammer.leap"),
Simple(Some(Hammer(UnlockLeap)), "common.abilities.hammer.leap"),
],
),
Tool(Bow): (
primary: "common.abilities.bow.charged",
secondary: "common.abilities.bow.repeater",
primary: Simple(None, "common.abilities.bow.charged"),
secondary: Simple(None, "common.abilities.bow.repeater"),
abilities: [
(Some(Bow(UnlockShotgun)), "common.abilities.bow.shotgun"),
Simple(Some(Bow(UnlockShotgun)), "common.abilities.bow.shotgun"),
],
),
Tool(Staff): (
primary: "common.abilities.staff.firebomb",
secondary: "common.abilities.staff.flamethrower",
primary: Simple(None, "common.abilities.staff.firebomb"),
secondary: Simple(None, "common.abilities.staff.flamethrower"),
abilities: [
(Some(Staff(UnlockShockwave)), "common.abilities.staff.fireshockwave"),
Simple(Some(Staff(UnlockShockwave)), "common.abilities.staff.fireshockwave"),
],
),
Tool(Sceptre): (
primary: "common.abilities.sceptre.lifestealbeam",
secondary: "common.abilities.sceptre.healingaura",
primary: Simple(None, "common.abilities.sceptre.lifestealbeam"),
secondary: Simple(None, "common.abilities.sceptre.healingaura"),
abilities: [
(Some(Sceptre(UnlockAura)), "common.abilities.sceptre.wardingaura"),
Simple(Some(Sceptre(UnlockAura)), "common.abilities.sceptre.wardingaura"),
],
),
Custom("Husk"): (
primary: "common.abilities.custom.husk.singlestrike",
secondary: "common.abilities.custom.husk.triplestrike",
primary: Simple(None, "common.abilities.custom.husk.singlestrike"),
secondary: Simple(None, "common.abilities.custom.husk.triplestrike"),
abilities: [],
),
Custom("Husk Brute"): (
primary: "common.abilities.custom.husk_brute.singlestrike",
secondary: "common.abilities.custom.husk_brute.chargedmelee",
primary: Simple(None, "common.abilities.custom.husk_brute.singlestrike"),
secondary: Simple(None, "common.abilities.custom.husk_brute.chargedmelee"),
abilities: [],
),
Tool(Spear): (
primary: "common.abilities.spear.doublestrike",
secondary: "common.abilities.spear.dash",
primary: Simple(None, "common.abilities.spear.doublestrike"),
secondary: Simple(None, "common.abilities.spear.dash"),
abilities: [],
),
Custom("Hammer Simple"): (
primary: "common.abilities.hammersimple.doublestrike",
secondary: "common.abilities.hammersimple.doublestrike",
primary: Simple(None, "common.abilities.hammersimple.doublestrike"),
secondary: Simple(None, "common.abilities.hammersimple.doublestrike"),
abilities: [],
),
// TODO: Later investigate if we want to make this back to a simple axe when more things need a simpler axe ability set
Custom("Gnarling Axe"): (
primary: "common.abilities.gnarling.axe.chop",
secondary: "common.abilities.gnarling.axe.chop",
primary: Simple(None, "common.abilities.gnarling.axe.chop"),
secondary: Simple(None, "common.abilities.gnarling.axe.chop"),
abilities: [],
),
Custom("Gnarling Dagger"): (
primary: "common.abilities.gnarling.dagger.stab",
secondary: "common.abilities.gnarling.dagger.stab",
primary: Simple(None, "common.abilities.gnarling.dagger.stab"),
secondary: Simple(None, "common.abilities.gnarling.dagger.stab"),
abilities: [],
),
Custom("Gnarling Blowgun"): (
primary: "common.abilities.gnarling.blowgun.dart",
secondary: "common.abilities.gnarling.blowgun.dart",
primary: Simple(None, "common.abilities.gnarling.blowgun.dart"),
secondary: Simple(None, "common.abilities.gnarling.blowgun.dart"),
abilities: [],
),
Custom("Gnarling Chieftain"): (
primary: "common.abilities.gnarling.chieftain.flamestrike",
secondary: "common.abilities.gnarling.chieftain.firebarrage",
primary: Simple(None, "common.abilities.gnarling.chieftain.flamestrike"),
secondary: Simple(None, "common.abilities.gnarling.chieftain.firebarrage"),
abilities: [
(None, "common.abilities.gnarling.chieftain.fireshockwave"),
(None, "common.abilities.gnarling.chieftain.redtotem"),
(None, "common.abilities.gnarling.chieftain.greentotem"),
(None, "common.abilities.gnarling.chieftain.whitetotem"),
Simple(None, "common.abilities.gnarling.chieftain.fireshockwave"),
Simple(None, "common.abilities.gnarling.chieftain.redtotem"),
Simple(None, "common.abilities.gnarling.chieftain.greentotem"),
Simple(None, "common.abilities.gnarling.chieftain.whitetotem"),
],
),
Custom("Gnarling Totem Red"): (
primary: "common.abilities.gnarling.totem.red",
secondary: "common.abilities.gnarling.totem.red",
primary: Simple(None, "common.abilities.gnarling.totem.red"),
secondary: Simple(None, "common.abilities.gnarling.totem.red"),
abilities: [],
),
Custom("Gnarling Totem Green"): (
primary: "common.abilities.gnarling.totem.green",
secondary: "common.abilities.gnarling.totem.green",
primary: Simple(None, "common.abilities.gnarling.totem.green"),
secondary: Simple(None, "common.abilities.gnarling.totem.green"),
abilities: [],
),
Custom("Gnarling Totem White"): (
primary: "common.abilities.gnarling.totem.white",
secondary: "common.abilities.gnarling.totem.white",
primary: Simple(None, "common.abilities.gnarling.totem.white"),
secondary: Simple(None, "common.abilities.gnarling.totem.white"),
abilities: [],
),
Custom("Deadwood"): (
primary: "common.abilities.custom.deadwood.lifestealbeam",
secondary: "common.abilities.custom.deadwood.dash",
primary: Simple(None, "common.abilities.custom.deadwood.lifestealbeam"),
secondary: Simple(None, "common.abilities.custom.deadwood.dash"),
abilities: [],
),
Custom("Mandragora"): (
primary: "common.abilities.custom.mandragora.basic",
secondary: "common.abilities.custom.mandragora.scream",
primary: Simple(None, "common.abilities.custom.mandragora.basic"),
secondary: Simple(None, "common.abilities.custom.mandragora.scream"),
abilities: [],
),
Custom("Wood Golem"): (
primary: "common.abilities.custom.woodgolem.strike",
secondary: "common.abilities.custom.woodgolem.spin",
primary: Simple(None, "common.abilities.custom.woodgolem.strike"),
secondary: Simple(None, "common.abilities.custom.woodgolem.spin"),
abilities: [
(None, "common.abilities.custom.woodgolem.shockwave")
Simple(None, "common.abilities.custom.woodgolem.shockwave")
],
),
Custom("Simple Flying Melee"): (
primary: Simple(None, "common.abilities.custom.simpleflyingmelee.singlestrike"),
secondary: Simple(None, "common.abilities.custom.simpleflyingmelee.singlestrike"),
abilities: [],
),
Custom("Sword Simple"): (
primary: "common.abilities.swordsimple.doublestrike",
secondary: "common.abilities.swordsimple.dash",
primary: Simple(None, "common.abilities.swordsimple.doublestrike"),
secondary: Simple(None, "common.abilities.swordsimple.dash"),
abilities: [],
),
Custom("Staff Simple"): (
primary: "common.abilities.staffsimple.firebomb",
secondary: "common.abilities.staffsimple.flamethrower",
primary: Simple(None, "common.abilities.staffsimple.firebomb"),
secondary: Simple(None, "common.abilities.staffsimple.flamethrower"),
abilities: [],
),
Custom("Bow Simple"): (
primary: "common.abilities.bowsimple.basic",
secondary: "common.abilities.bowsimple.basic",
primary: Simple(None, "common.abilities.bowsimple.basic"),
secondary: Simple(None, "common.abilities.bowsimple.basic"),
abilities: [],
),
Custom("Axe Simple"): (
primary: "common.abilities.axesimple.doublestrike",
secondary: "common.abilities.axesimple.doublestrike",
primary: Simple(None, "common.abilities.axesimple.doublestrike"),
secondary: Simple(None, "common.abilities.axesimple.doublestrike"),
abilities: [],
),
Custom("Dagger Simple"): (
primary: "common.abilities.daggersimple.singlestrike",
secondary: "common.abilities.daggersimple.singlestrike",
primary: Simple(None, "common.abilities.daggersimple.singlestrike"),
secondary: Simple(None, "common.abilities.daggersimple.singlestrike"),
abilities: [],
),
Tool(Dagger): (
primary: "common.abilities.dagger.tempbasic",
secondary: "common.abilities.dagger.tempbasic",
primary: Simple(None, "common.abilities.dagger.tempbasic"),
secondary: Simple(None, "common.abilities.dagger.tempbasic"),
abilities: [],
),
Tool(Shield): (
primary: "common.abilities.shield.tempbasic",
secondary: "common.abilities.shield.block",
primary: Simple(None, "common.abilities.shield.tempbasic"),
secondary: Simple(None, "common.abilities.shield.block"),
abilities: [],
),
Custom("Stone Golem"): (
primary: "common.abilities.custom.stonegolemfist.singlestrike",
secondary: "common.abilities.custom.stonegolemfist.shockwave",
primary: Simple(None, "common.abilities.custom.stonegolemfist.singlestrike"),
secondary: Simple(None, "common.abilities.custom.stonegolemfist.shockwave"),
abilities: [
(None, "common.abilities.custom.stonegolemfist.spin"),
Simple(None, "common.abilities.custom.stonegolemfist.spin"),
],
),
Custom("Beast Claws"): (
primary: "common.abilities.custom.beastclaws.basic",
secondary: "common.abilities.custom.beastclaws.basic",
primary: Simple(None, "common.abilities.custom.beastclaws.basic"),
secondary: Simple(None, "common.abilities.custom.beastclaws.basic"),
abilities: [],
),
Custom("Tursus Claws"): (
primary: Simple(None, "common.abilities.custom.tursus_claws.basic"),
secondary: Simple(None, "common.abilities.custom.tursus_claws.basic"),
abilities: [],
),
Custom("Wendigo Magic"): (
primary: "common.abilities.custom.wendigomagic.frostbomb",
secondary: "common.abilities.custom.wendigomagic.singlestrike",
primary: Simple(None, "common.abilities.custom.wendigomagic.frostbomb"),
secondary: Simple(None, "common.abilities.custom.wendigomagic.singlestrike"),
abilities: [],
),
Custom("Tidal Warrior"): (
primary: "common.abilities.custom.tidalwarrior.pincer",
secondary: "common.abilities.custom.tidalwarrior.scuttle",
primary: Simple(None, "common.abilities.custom.tidalwarrior.pincer"),
secondary: Simple(None, "common.abilities.custom.tidalwarrior.scuttle"),
abilities: [
(None, "common.abilities.custom.tidalwarrior.bubbles"),
(None, "common.abilities.custom.tidalwarrior.totem"),
Simple(None, "common.abilities.custom.tidalwarrior.bubbles"),
Simple(None, "common.abilities.custom.tidalwarrior.totem"),
],
),
Custom("Tidal Totem"): (
primary: "common.abilities.custom.tidalwarrior.totem_wave",
secondary: "common.abilities.custom.tidalwarrior.totem_wave",
primary: Simple(None, "common.abilities.custom.tidalwarrior.totem_wave"),
secondary: Simple(None, "common.abilities.custom.tidalwarrior.totem_wave"),
abilities: [],
),
// Note: Consider making a ranking system once we get more entities
// TODO: Make all purple item droppers have purple CR and a unique skillset
Custom("Quad Med Quick"): (
primary: "common.abilities.custom.quadmedquick.triplestrike",
secondary: "common.abilities.custom.quadmedquick.dash",
primary: Simple(None, "common.abilities.custom.quadmedquick.triplestrike"),
secondary: Simple(None, "common.abilities.custom.quadmedquick.dash"),
abilities: [],
),
Custom("Quad Med Jump"): (
primary: "common.abilities.custom.quadmedjump.leap",
secondary: "common.abilities.custom.quadmedjump.doublestrike",
primary: Simple(None, "common.abilities.custom.quadmedjump.leap"),
secondary: Simple(None, "common.abilities.custom.quadmedjump.doublestrike"),
abilities: [
(None, "common.abilities.custom.quadmedjump.quickleap"),
Simple(None, "common.abilities.custom.quadmedjump.quickleap"),
],
),
Custom("Quad Med Charge"): (
primary: "common.abilities.custom.quadmedcharge.doublestrike",
secondary: "common.abilities.custom.quadmedcharge.dash",
primary: Simple(None, "common.abilities.custom.quadmedcharge.doublestrike"),
secondary: Simple(None, "common.abilities.custom.quadmedcharge.dash"),
abilities: [],
),
Custom("Quad Med Hoof"): (
primary: "common.abilities.custom.quadmedhoof.basic",
secondary: "common.abilities.custom.quadmedhoof.basic",
primary: Simple(None, "common.abilities.custom.quadmedhoof.basic"),
secondary: Simple(None, "common.abilities.custom.quadmedhoof.basic"),
abilities: [],
),
Custom("Quad Med Basic"): (
primary: "common.abilities.custom.quadmedbasic.singlestrike",
secondary: "common.abilities.custom.quadmedbasic.triplestrike",
primary: Simple(None, "common.abilities.custom.quadmedbasic.singlestrike"),
secondary: Simple(None, "common.abilities.custom.quadmedbasic.triplestrike"),
abilities: [],
),
Custom("Basilisk"): (
primary: "common.abilities.custom.basilisk.petrify",
secondary: "common.abilities.custom.basilisk.triplestrike",
Custom("Roshwalr"): (
primary: Simple(None, "common.abilities.custom.roshwalr.doublehusk"),
secondary: Simple(None, "common.abilities.custom.roshwalr.slowcharge"),
abilities: [
(None, "common.abilities.custom.basilisk.dash"),
Simple(None, "common.abilities.custom.roshwalr.freezeshockwave"),
],
),
Custom("Basilisk"): (
primary: Simple(None, "common.abilities.custom.basilisk.petrify"),
secondary: Simple(None, "common.abilities.custom.basilisk.triplestrike"),
abilities: [
Simple(None, "common.abilities.custom.basilisk.dash"),
],
),
Custom("Asp"): (
primary: "common.abilities.custom.asp.singlestrike",
secondary: "common.abilities.custom.asp.firebomb",
primary: Simple(None, "common.abilities.custom.asp.singlestrike"),
secondary: Simple(None, "common.abilities.custom.asp.firebomb"),
abilities: [],
),
Custom("Maneater"): (
primary: "common.abilities.custom.maneater.singlestrike",
secondary: "common.abilities.custom.maneater.poisonball",
primary: Simple(None, "common.abilities.custom.maneater.singlestrike"),
secondary: Simple(None, "common.abilities.custom.maneater.poisonball"),
abilities: [],
),
Custom("Quad Low Breathe"): (
primary: "common.abilities.custom.quadlowbreathe.flamethrower",
secondary: "common.abilities.custom.quadlowbreathe.triplestrike",
primary: Simple(None, "common.abilities.custom.quadlowbreathe.flamethrower"),
secondary: Simple(None, "common.abilities.custom.quadlowbreathe.triplestrike"),
abilities: [
(None, "common.abilities.custom.quadlowbreathe.dash"),
Simple(None, "common.abilities.custom.quadlowbreathe.dash"),
],
),
Custom("Quad Low Tail"): (
primary: "common.abilities.custom.quadlowtail.charged",
secondary: "common.abilities.custom.quadlowtail.triplestrike",
primary: Simple(None, "common.abilities.custom.quadlowtail.charged"),
secondary: Simple(None, "common.abilities.custom.quadlowtail.triplestrike"),
abilities: [],
),
Custom("Quad Low Quick"): (
primary: "common.abilities.custom.quadlowquick.dash",
secondary: "common.abilities.custom.quadlowquick.quadstrike",
primary: Simple(None, "common.abilities.custom.quadlowquick.dash"),
secondary: Simple(None, "common.abilities.custom.quadlowquick.quadstrike"),
abilities: [],
),
Custom("Quad Low Basic"): (
primary: "common.abilities.custom.quadlowbasic.triplestrike",
secondary: "common.abilities.custom.quadlowbasic.singlestrike",
primary: Simple(None, "common.abilities.custom.quadlowbasic.triplestrike"),
secondary: Simple(None, "common.abilities.custom.quadlowbasic.singlestrike"),
abilities: [],
),
Custom("Quad Low Beam"): (
primary: "common.abilities.custom.quadlowbeam.lifestealbeam",
secondary: "common.abilities.custom.quadlowbreathe.triplestrike",
primary: Simple(None, "common.abilities.custom.quadlowbeam.lifestealbeam"),
secondary: Simple(None, "common.abilities.custom.quadlowbreathe.triplestrike"),
abilities: [
(None, "common.abilities.custom.quadlowbreathe.dash"),
Simple(None, "common.abilities.custom.quadlowbreathe.dash"),
],
),
Custom("Quad Small Basic"): (
primary: "common.abilities.custom.quadsmallbasic.singlestrike",
secondary: "common.abilities.custom.quadsmallbasic.singlestrike",
primary: Simple(None, "common.abilities.custom.quadsmallbasic.singlestrike"),
secondary: Simple(None, "common.abilities.custom.quadsmallbasic.singlestrike"),
abilities: [],
),
Custom("Theropod Basic"): (
primary: "common.abilities.custom.theropodbasic.triplestrike",
secondary: "common.abilities.custom.theropodbasic.triplestrike",
primary: Simple(None, "common.abilities.custom.theropodbasic.triplestrike"),
secondary: Simple(None, "common.abilities.custom.theropodbasic.triplestrike"),
abilities: [],
),
Custom("Theropod Small"): (
primary: Simple(None, "common.abilities.custom.theropodsmall.triplestrike"),
secondary: Simple(None, "common.abilities.custom.theropodsmall.triplestrike"),
abilities: [],
),
Custom("Theropod Bird"): (
primary: "common.abilities.custom.theropodbird.triplestrike",
secondary: "common.abilities.custom.theropodbird.triplestrike",
primary: Simple(None, "common.abilities.custom.theropodbird.triplestrike"),
secondary: Simple(None, "common.abilities.custom.theropodbird.triplestrike"),
abilities: [],
),
Custom("Theropod Charge"): (
primary: "common.abilities.custom.theropodbasic.triplestrike",
secondary: "common.abilities.custom.theropodbasic.dash",
primary: Simple(None, "common.abilities.custom.theropodbasic.triplestrike"),
secondary: Simple(None, "common.abilities.custom.theropodbasic.dash"),
abilities: [],
),
// Arthropods
Custom("Antlion"): (
primary: "common.abilities.custom.arthropods.antlion.singlestrike",
secondary: "common.abilities.custom.arthropods.antlion.charge",
primary: Simple(None, "common.abilities.custom.arthropods.antlion.singlestrike"),
secondary: Simple(None, "common.abilities.custom.arthropods.antlion.charge"),
abilities: [],
),
Custom("Black Widow"): (
primary: "common.abilities.custom.arthropods.blackwidow.singlestrike",
secondary: "common.abilities.custom.arthropods.blackwidow.ensnaringwebs",
primary: Simple(None, "common.abilities.custom.arthropods.blackwidow.singlestrike"),
secondary: Simple(None, "common.abilities.custom.arthropods.blackwidow.ensnaringwebs"),
abilities: [
(None, "common.abilities.custom.arthropods.blackwidow.poisonball"),
Simple(None, "common.abilities.custom.arthropods.blackwidow.poisonball"),
],
),
Custom("Horn Beetle"): (
primary: "common.abilities.custom.arthropods.hornbeetle.singlestrike",
secondary: "common.abilities.custom.arthropods.hornbeetle.harden",
primary: Simple(None, "common.abilities.custom.arthropods.hornbeetle.singlestrike"),
secondary: Simple(None, "common.abilities.custom.arthropods.hornbeetle.harden"),
abilities: [
(None, "common.abilities.custom.arthropods.hornbeetle.leap"),
Simple(None, "common.abilities.custom.arthropods.hornbeetle.leap"),
],
),
Custom("Tarantula"): (
primary: "common.abilities.custom.arthropods.tarantula.singlestrike",
secondary: "common.abilities.custom.arthropods.tarantula.ensnaringwebs",
primary: Simple(None, "common.abilities.custom.arthropods.tarantula.singlestrike"),
secondary: Simple(None, "common.abilities.custom.arthropods.tarantula.ensnaringwebs"),
abilities: [
(None, "common.abilities.custom.arthropods.tarantula.leap"),
Simple(None, "common.abilities.custom.arthropods.tarantula.leap"),
],
),
Custom("Weevil"): (
primary: "common.abilities.custom.arthropods.weevil.singlestrike",
secondary: "common.abilities.custom.arthropods.weevil.harden",
primary: Simple(None, "common.abilities.custom.arthropods.weevil.singlestrike"),
secondary: Simple(None, "common.abilities.custom.arthropods.weevil.harden"),
abilities: [
(None, "common.abilities.custom.arthropods.weevil.threadshot"),
Simple(None, "common.abilities.custom.arthropods.weevil.threadshot"),
],
),
/// TODO: Organize the rest into further catagories and give purple tier droppers+ custom skillsets
Custom("Turret"): (
primary: "common.abilities.custom.turret.arrows",
secondary: "common.abilities.custom.turret.arrows",
primary: Simple(None, "common.abilities.custom.turret.arrows"),
secondary: Simple(None, "common.abilities.custom.turret.arrows"),
abilities: [],
),
Custom("Organ"): (
primary: Simple(None, "common.abilities.custom.organ.organaura"),
secondary: Simple(None, "common.abilities.custom.organ.organaura"),
abilities: [],
),
Custom("Haniwa Sentry"): (
primary: "common.abilities.custom.turret.flamethrower",
secondary: "common.abilities.custom.turret.flamethrower",
primary: Simple(None, "common.abilities.custom.turret.flamethrower"),
secondary: Simple(None, "common.abilities.custom.turret.flamethrower"),
abilities: [],
),
Custom("Mindflayer"): (
primary: "common.abilities.custom.mindflayer.cursedflames",
secondary: "common.abilities.custom.mindflayer.necroticvortex",
primary: Simple(None, "common.abilities.custom.mindflayer.cursedflames"),
secondary: Simple(None, "common.abilities.custom.mindflayer.necroticvortex"),
abilities: [
(None, "common.abilities.custom.mindflayer.dimensionaldoor"),
(None, "common.abilities.custom.mindflayer.necroticsphere"),
(None, "common.abilities.custom.mindflayer.summonminions"),
Simple(None, "common.abilities.custom.mindflayer.dimensionaldoor"),
Simple(None, "common.abilities.custom.mindflayer.necroticsphere"),
Simple(None, "common.abilities.custom.mindflayer.summonminions"),
],
),
Custom("Minotaur"): (
primary: "common.abilities.custom.minotaur.cleave",
secondary: "common.abilities.custom.minotaur.cripplingstrike",
primary: Simple(None, "common.abilities.custom.minotaur.cleave"),
secondary: Simple(None, "common.abilities.custom.minotaur.cripplingstrike"),
abilities: [
(None, "common.abilities.custom.minotaur.charge"),
(None, "common.abilities.custom.minotaur.frenzy"),
Simple(None, "common.abilities.custom.minotaur.charge"),
Simple(None, "common.abilities.custom.minotaur.frenzy"),
],
),
Custom("Clay Golem"): (
primary: "common.abilities.custom.claygolem.strike",
secondary: "common.abilities.custom.claygolem.laser",
primary: Simple(None, "common.abilities.custom.claygolem.strike"),
secondary: Simple(None, "common.abilities.custom.claygolem.laser"),
abilities: [
(None, "common.abilities.custom.claygolem.shockwave"),
(None, "common.abilities.custom.claygolem.rocket"),
Simple(None, "common.abilities.custom.claygolem.shockwave"),
Simple(None, "common.abilities.custom.claygolem.rocket"),
],
),
Custom("Yeti"): (
primary: "common.abilities.custom.yeti.strike",
secondary: "common.abilities.custom.yeti.icespikes",
primary: Simple(None, "common.abilities.custom.yeti.strike"),
secondary: Simple(None, "common.abilities.custom.yeti.icespikes"),
abilities: [
(None, "common.abilities.custom.yeti.frostbreath"),
(None, "common.abilities.custom.yeti.snowball"),
Simple(None, "common.abilities.custom.yeti.frostbreath"),
Simple(None, "common.abilities.custom.yeti.snowball"),
],
),
Custom("Harvester"): (
primary: "common.abilities.custom.harvester.scythe",
secondary: "common.abilities.custom.harvester.firebreath",
primary: Simple(None, "common.abilities.custom.harvester.scythe"),
secondary: Simple(None, "common.abilities.custom.harvester.firebreath"),
abilities: [
(None, "common.abilities.custom.harvester.ensnaringvines"),
(None, "common.abilities.custom.harvester.explodingpumpkin"),
Simple(None, "common.abilities.custom.harvester.ensnaringvines"),
Simple(None, "common.abilities.custom.harvester.explodingpumpkin"),
],
),
// TODO: Allow ability sets to expand other ability sets
Custom("Dagon"): (
primary: Simple(None, "common.abilities.custom.dagon.dagonbombs"),
secondary: Simple(None, "common.abilities.custom.dagon.seaurchins"),
abilities: [
Simple(None, "common.abilities.custom.dagon.steamwave"),
Simple(None, "common.abilities.custom.cardinal.steambeam"),
Simple(None, "common.abilities.custom.dagon.steamheal"),
],
),
Custom("Cardinal"): (
primary: Simple(None, "common.abilities.sceptre.lifestealbeam"),
secondary: Simple(None, "common.abilities.sceptre.healingaura"),
abilities: [
Simple(None, "common.abilities.custom.cardinal.steambeam"),
Simple(None, "common.abilities.custom.cardinal.summonseacrocs"),
],
),
Custom("Oni"): (
primary: "common.abilities.custom.oni.dash",
secondary: "common.abilities.custom.oni.doublestrike",
primary: Simple(None, "common.abilities.custom.oni.dash"),
secondary: Simple(None, "common.abilities.custom.oni.doublestrike"),
abilities: [],
),
Custom("Bird Large Breathe"): (
primary: "common.abilities.custom.birdlargebreathe.firebomb",
secondary: "common.abilities.custom.birdlargebreathe.triplestrike",
primary: Simple(None, "common.abilities.custom.birdlargebreathe.firebomb"),
secondary: Simple(None, "common.abilities.custom.birdlargebreathe.triplestrike"),
abilities: [
(None, "common.abilities.custom.birdlargebreathe.flamethrower"),
Simple(None, "common.abilities.custom.birdlargebreathe.flamethrower"),
],
),
Custom("Bird Large Fire"): (
primary: "common.abilities.custom.birdlargefire.firebomb",
secondary: "common.abilities.custom.birdlargefire.triplestrike",
primary: Simple(None, "common.abilities.custom.birdlargefire.firebomb"),
secondary: Simple(None, "common.abilities.custom.birdlargefire.triplestrike"),
abilities: [
(None, "common.abilities.custom.birdlargefire.fireshockwave"),
Simple(None, "common.abilities.custom.birdlargefire.fireshockwave"),
],
),
Custom("Flame Wyvern"): (
primary: Simple(None, "common.abilities.custom.flamewyvern.firebomb"),
secondary: Simple(None, "common.abilities.custom.flamewyvern.fireshockwave"),
abilities: [
Simple(None, "common.abilities.custom.flamewyvern.triplestrike"),
Simple(None, "common.abilities.custom.flamewyvern.flamethrower"),
],
),
Custom("Frost Wyvern"): (
primary: Simple(None, "common.abilities.custom.frostwyvern.frostbomb"),
secondary: Simple(None, "common.abilities.custom.frostwyvern.iceshockwave"),
abilities: [
Simple(None, "common.abilities.custom.frostwyvern.triplestrike"),
Simple(None, "common.abilities.custom.frostwyvern.frostthrower"),
],
),
Custom("Cloud Wyvern"): (
primary: Simple(None, "common.abilities.custom.cloudwyvern.windbomb"),
secondary: Simple(None, "common.abilities.custom.cloudwyvern.windshockwave"),
abilities: [
Simple(None, "common.abilities.custom.cloudwyvern.triplestrike"),
Simple(None, "common.abilities.custom.cloudwyvern.windthrower"),
],
),
Custom("Sea Wyvern"): (
primary: Simple(None, "common.abilities.custom.seawyvern.seabomb"),
secondary: Simple(None, "common.abilities.custom.seawyvern.seashockwave"),
abilities: [
Simple(None, "common.abilities.custom.seawyvern.triplestrike"),
Simple(None, "common.abilities.custom.seawyvern.bubblethrower"),
],
),
Custom("Weald Wyvern"): (
primary: Simple(None, "common.abilities.custom.wealdwyvern.firebomb"),
secondary: Simple(None, "common.abilities.custom.wealdwyvern.fireshockwave"),
abilities: [
Simple(None, "common.abilities.custom.wealdwyvern.triplestrike"),
Simple(None, "common.abilities.custom.wealdwyvern.flamethrower"),
],
),
Custom("Bird Large Basic"): (
primary: "common.abilities.custom.birdlargebasic.triplestrike",
secondary: "common.abilities.custom.birdlargebasic.summontornadoes",
primary: Simple(None, "common.abilities.custom.birdlargebasic.triplestrike"),
secondary: Simple(None, "common.abilities.custom.birdlargebasic.summontornadoes"),
abilities: [
(None, "common.abilities.custom.birdlargebasic.dash"),
Simple(None, "common.abilities.custom.birdlargebasic.dash"),
],
),
Custom("Bird Medium Basic"): (
primary: Simple(None, "common.abilities.custom.birdmediumbasic.singlestrike"),
secondary: Simple(None, "common.abilities.custom.birdmediumbasic.singlestrike"),
abilities: [],
),
Custom("Frost Gigas"): (
primary: Simple(None, "common.abilities.custom.gigas_frost.cleave"),
secondary: Simple(None, "common.abilities.custom.gigas_frost.wide_cleave"),
abilities: [
Simple(None, "common.abilities.custom.gigas_frost.icespike_smash"),
Simple(None, "common.abilities.custom.gigas_frost.leapshockwave"),
Simple(None, "common.abilities.custom.gigas_frost.ice_volley"),
Simple(None, "common.abilities.custom.gigas_frost.frost_summons"),
Simple(None, "common.abilities.custom.gigas_frost.flashfreeze"),
],
),
Custom("Boreal Bow"): (
primary: Simple(None, "common.abilities.custom.boreal_warrior.bow.charged"),
secondary: Simple(None, "common.abilities.custom.boreal_warrior.bow.repeater"),
abilities: [
Simple(None, "common.abilities.custom.boreal_warrior.bow.shotgun")
],
),
Custom("Boreal Hammer"): (
primary: Simple(None, "common.abilities.custom.boreal_warrior.hammer.singlestrike"),
secondary: Simple(None, "common.abilities.custom.boreal_warrior.hammer.dash"),
abilities: [
Simple(None, "common.abilities.custom.boreal_warrior.hammer.leap")
],
),
Custom("Tornado"): (
primary: "common.abilities.custom.tornado.spin",
secondary: "common.abilities.empty.basic",
primary: Simple(None, "common.abilities.custom.tornado.spin"),
secondary: Simple(None, "common.abilities.empty.basic"),
abilities: [],
),
Custom("Golf Club"): (
primary: "common.abilities.hammer.singlestrike",
secondary: "common.abilities.tool.golf_club.charged",
primary: Simple(None, "common.abilities.hammer.singlestrike"),
secondary: Simple(None, "common.abilities.tool.golf_club.charged"),
abilities: [],
),
Custom("DoubleBass"): (
primary: Simple(None, "common.abilities.music.double_bass"),
secondary: Simple(None, "common.abilities.music.double_bass"),
abilities: [],
),
Custom("Flute"): (
primary: Simple(None, "common.abilities.music.flute"),
secondary: Simple(None, "common.abilities.music.flute"),
abilities: [],
),
Custom("GlassFlute"): (
primary: Simple(None, "common.abilities.music.glass_flute"),
secondary: Simple(None, "common.abilities.music.glass_flute"),
abilities: [],
),
Custom("Lyre"): (
primary: Simple(None, "common.abilities.music.lyre"),
secondary: Simple(None, "common.abilities.music.lyre"),
abilities: [],
),
Custom("IcyTalharpa"): (
primary: Simple(None, "common.abilities.music.icy_talharpa"),
secondary: Simple(None, "common.abilities.music.icy_talharpa"),
abilities: [],
),
Custom("Washboard"): (
primary: Simple(None, "common.abilities.music.washboard"),
secondary: Simple(None, "common.abilities.music.washboard"),
abilities: [],
),
Custom("Kalimba"): (
primary: Simple(None, "common.abilities.music.kalimba"),
secondary: Simple(None, "common.abilities.music.kalimba"),
abilities: [],
),
Custom("Melodica"): (
primary: Simple(None, "common.abilities.music.melodica"),
secondary: Simple(None, "common.abilities.music.melodica"),
abilities: [],
),
Custom("Lute"): (
primary: Simple(None, "common.abilities.music.lute"),
secondary: Simple(None, "common.abilities.music.lute"),
abilities: [],
),
Custom("Guitar"): (
primary: Simple(None, "common.abilities.music.guitar"),
secondary: Simple(None, "common.abilities.music.guitar"),
abilities: [],
),
Custom("DarkGuitar"): (
primary: Simple(None, "common.abilities.music.dark_guitar"),
secondary: Simple(None, "common.abilities.music.dark_guitar"),
abilities: [],
),
Custom("Sitar"): (
primary: Simple(None, "common.abilities.music.sitar"),
secondary: Simple(None, "common.abilities.music.sitar"),
abilities: [],
),
Tool(Debug): (
primary: "common.abilities.debug.forwardboost",
secondary: "common.abilities.debug.upboost",
primary: Simple(None, "common.abilities.debug.forwardboost"),
secondary: Simple(None, "common.abilities.debug.upboost"),
abilities: [
(None, "common.abilities.debug.possess"),
Simple(None, "common.abilities.debug.possess"),
],
),
Tool(Farming): (
primary: "common.abilities.farming.basic",
secondary: "common.abilities.farming.basic",
primary: Simple(None, "common.abilities.farming.basic"),
secondary: Simple(None, "common.abilities.farming.basic"),
abilities: [],
),
Tool(Pick): (
primary: "common.abilities.pick.swing",
secondary: "common.abilities.pick.swing",
primary: Simple(None, "common.abilities.pick.swing"),
secondary: Simple(None, "common.abilities.pick.swing"),
abilities: [],
),
Tool(Empty): (
primary: "common.abilities.empty.basic",
secondary: "common.abilities.empty.basic",
primary: Simple(None, "common.abilities.empty.basic"),
secondary: Simple(None, "common.abilities.empty.basic"),
abilities: [],
),
})

View File

@ -2,8 +2,8 @@ ComboMelee(
stage_data: [
(
stage: 1,
base_damage: 11.0,
damage_increase: 1.0,
base_damage: 12.0,
damage_increase: 0.5,
base_poise_damage: 0,
poise_damage_increase: 0,
knockback: 5.0,
@ -24,8 +24,8 @@ ComboMelee(
),
(
stage: 2,
base_damage: 13.0,
damage_increase: 1.5,
base_damage: 15.0,
damage_increase: 0.75,
base_poise_damage: 0,
poise_damage_increase: 0,
knockback: 6.0,
@ -46,11 +46,10 @@ ComboMelee(
),
],
initial_energy_gain: 2.5,
max_energy_gain: 17.5,
energy_increase: 3.0,
max_energy_gain: 12.5,
energy_increase: 2.5,
speed_increase: 0.1,
max_speed_increase: 0.6,
scales_from_combo: 2,
is_interruptible: false,
ori_modifier: 1.0,
)

View File

@ -1,18 +1,19 @@
LeapMelee(
energy_cost: 45.0,
buildup_duration: 0.2,
movement_duration: 0.2,
energy_cost: 30.0,
buildup_duration: 0.3,
movement_duration: 0.25,
swing_duration: 0.2,
recover_duration: 0.2,
melee_constructor: (
kind: Slash(
damage: 30.0,
damage: 25.0,
poise: 0.0,
knockback: 12.0,
energy_regen: 0.0,
),
range: 4.5,
angle: 30.0,
multi_target: Some(Normal),
),
forward_leap_strength: 20.0,
vertical_leap_strength: 8.0,

View File

@ -1,6 +1,6 @@
SpinMelee(
buildup_duration: 0.2,
swing_duration: 0.6,
swing_duration: 0.4,
recover_duration: 0.2,
melee_constructor: (
kind: Slash(
@ -11,11 +11,11 @@ SpinMelee(
),
range: 3.5,
angle: 360.0,
multi_target: Some(Normal),
),
energy_cost: 10.0,
is_infinite: true,
movement_behavior: AxeHover,
is_interruptible: false,
forward_speed: 0.0,
num_spins: 1,
specifier: None,

View File

@ -51,6 +51,5 @@ ComboMelee(
speed_increase: 0.0,
max_speed_increase: 0.0,
scales_from_combo: 0,
is_interruptible: false,
ori_modifier: 0.7,
)

View File

@ -1,18 +1,18 @@
ChargedRanged(
energy_cost: 0,
energy_drain: 0,
initial_regen: 0.5,
scaled_regen: 12.0,
initial_damage: 0.5,
scaled_damage: 12.0,
initial_knockback: 0.0,
scaled_knockback: 10.0,
buildup_duration: 0.2,
initial_regen: 2,
scaled_regen: 14,
initial_damage: 2,
scaled_damage: 12,
initial_knockback: 0,
scaled_knockback: 12,
buildup_duration: 0.25,
charge_duration: 1.0,
recover_duration: 0.3,
recover_duration: 0.4,
projectile_body: Object(Arrow),
projectile_light: None,
initial_projectile_speed: 100.0,
scaled_projectile_speed: 150.0,
initial_projectile_speed: 50.0,
scaled_projectile_speed: 200.0,
move_speed: 0.6,
)

View File

@ -1,13 +1,13 @@
RepeaterRanged(
energy_cost: 5.0,
energy_cost: 6.0,
buildup_duration: 0.2,
shoot_duration: 0.5,
recover_duration: 0.8,
max_speed: 2.0,
half_speed_at: 1,
shoot_duration: 0.3,
recover_duration: 0.5,
max_speed: 4.0,
half_speed_at: 3,
projectile: Arrow(
damage: 3.0,
knockback: 2.0,
damage: 5.0,
knockback: 0,
energy_regen: 0,
),
projectile_body: Object(Arrow),

View File

@ -1,15 +1,15 @@
BasicRanged(
energy_cost: 30.0,
buildup_duration: 0.4,
energy_cost: 25.0,
buildup_duration: 0.3,
recover_duration: 0.3,
projectile_spread: 0.05,
projectile: Arrow(
damage: 4.0,
knockback: 5.0,
damage: 6,
knockback: 5,
energy_regen: 0,
),
projectile_body: Object(Arrow),
projectile_light: None,
projectile_speed: 60.0,
num_projectiles: 4,
projectile_speed: 80.0,
num_projectiles: 5,
)

View File

@ -24,5 +24,4 @@ DashMelee(
recover_duration: 0.8,
ori_modifier: 0.1,
charge_through: false,
is_interruptible: false,
)

View File

@ -29,6 +29,5 @@ ComboMelee(
speed_increase: 0.0,
max_speed_increase: 0.0,
scales_from_combo: 0,
is_interruptible: false,
ori_modifier: 0.8,
)

View File

@ -3,6 +3,8 @@ SpriteSummon(
cast_duration: 0.4,
recover_duration: 0.3,
sprite: EnsnaringWeb,
del_timeout: None,
summon_distance: (0, 10),
sparseness: 0.76,
angle: 360,
)

View File

@ -29,6 +29,5 @@ ComboMelee(
speed_increase: 0.0,
max_speed_increase: 0.0,
scales_from_combo: 0,
is_interruptible: false,
ori_modifier: 0.8,
)

View File

@ -13,6 +13,7 @@ LeapMelee(
),
range: 4.5,
angle: 180.0,
multi_target: Some(Normal),
),
forward_leap_strength: 40.0,
vertical_leap_strength: 7.5,

View File

@ -23,6 +23,5 @@ ComboMelee(
speed_increase: 0.0,
max_speed_increase: 0.0,
scales_from_combo: 0,
is_interruptible: false,
ori_modifier: 0.5,
)

View File

@ -3,6 +3,8 @@ SpriteSummon(
cast_duration: 0.4,
recover_duration: 0.3,
sprite: EnsnaringWeb,
del_timeout: None,
summon_distance: (0, 9),
sparseness: 0.8,
angle: 360,
)

View File

@ -29,6 +29,5 @@ ComboMelee(
speed_increase: 0.0,
max_speed_increase: 0.0,
scales_from_combo: 0,
is_interruptible: false,
ori_modifier: 0.8,
)

View File

@ -23,6 +23,5 @@ ComboMelee(
speed_increase: 0.0,
max_speed_increase: 0.0,
scales_from_combo: 0,
is_interruptible: false,
ori_modifier: 0.6,
)

View File

@ -23,6 +23,5 @@ ComboMelee(
speed_increase: 0.0,
max_speed_increase: 0.0,
scales_from_combo: 0,
is_interruptible: false,
ori_modifier: 0.65,
)

View File

@ -24,5 +24,4 @@ DashMelee(
recover_duration: 2.0,
ori_modifier: 0.3,
charge_through: false,
is_interruptible: false,
)

View File

@ -55,6 +55,5 @@ ComboMelee(
speed_increase: 0.0,
max_speed_increase: 0.0,
scales_from_combo: 0,
is_interruptible: false,
ori_modifier: 0.65,
)

View File

@ -24,5 +24,4 @@ DashMelee(
recover_duration: 1.4,
ori_modifier: 0.3,
charge_through: false,
is_interruptible: false,
)

View File

@ -55,6 +55,5 @@ ComboMelee(
speed_increase: 0.0,
max_speed_increase: 0.0,
scales_from_combo: 0,
is_interruptible: false,
ori_modifier: 0.7,
)

View File

@ -13,7 +13,6 @@ BasicRanged(
col: (1.0, 0.75, 0.11).into(),
..Default::default()
}),*/
projectile_gravity: Some(Gravity(0.15)),
projectile_speed: 60.0,
num_projectiles: 1,
projectile_spread: 0.0,

View File

@ -73,6 +73,5 @@ ComboMelee(
speed_increase: 0.0,
max_speed_increase: 0.0,
scales_from_combo: 0,
is_interruptible: false,
ori_modifier: 0.7,
)

View File

@ -13,7 +13,6 @@ BasicRanged(
col: (1.0, 0.75, 0.11).into(),
..Default::default()
}),*/
projectile_gravity: Some(Gravity(0.15)),
projectile_speed: 60.0,
num_projectiles: 1,
projectile_spread: 0.0,

View File

@ -14,4 +14,5 @@ Shockwave(
move_efficiency: 0.1,
damage_kind: Energy,
specifier: Fire,
ori_rate: 1.0,
)

View File

@ -73,6 +73,5 @@ ComboMelee(
speed_increase: 0.0,
max_speed_increase: 0.0,
scales_from_combo: 0,
is_interruptible: false,
ori_modifier: 0.7,
)

View File

@ -0,0 +1,27 @@
ComboMelee(
stage_data: [
(
stage: 1,
base_damage: 1.0,
damage_increase: 0,
base_poise_damage: 0,
poise_damage_increase: 0,
knockback: 0.0,
range: 2.5,
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,
)

View File

@ -0,0 +1,24 @@
ChargedRanged(
energy_cost: 0,
energy_drain: 0,
initial_regen: 2,
scaled_regen: 14,
initial_damage: 2,
scaled_damage: 12,
initial_knockback: 0,
scaled_knockback: 12,
buildup_duration: 0.25,
charge_duration: 1.0,
recover_duration: 0.4,
projectile_body: Object(Arrow),
projectile_light: None,
initial_projectile_speed: 50.0,
scaled_projectile_speed: 200.0,
damage_effect: Some(Buff((
kind: Frozen,
dur_secs: 2.0,
strength: DamageFraction(0.1),
chance: 1.0,
))),
move_speed: 0.6,
)

View File

@ -0,0 +1,22 @@
RepeaterRanged(
energy_cost: 6.0,
buildup_duration: 0.2,
shoot_duration: 0.3,
recover_duration: 0.5,
max_speed: 4.0,
half_speed_at: 3,
projectile: Arrow(
damage: 5.0,
knockback: 0,
energy_regen: 0,
),
projectile_body: Object(Arrow),
projectile_light: None,
projectile_speed: 100.0,
damage_effect: Some(Buff((
kind: Frozen,
dur_secs: 2.0,
strength: DamageFraction(0.1),
chance: 1.0,
))),
)

View File

@ -0,0 +1,21 @@
BasicRanged(
energy_cost: 25.0,
buildup_duration: 0.3,
recover_duration: 0.3,
projectile_spread: 0.05,
projectile: Arrow(
damage: 6,
knockback: 5,
energy_regen: 0,
),
projectile_body: Object(Arrow),
projectile_light: None,
projectile_speed: 80.0,
num_projectiles: 5,
damage_effect: Some(Buff((
kind: Frozen,
dur_secs: 2.0,
strength: DamageFraction(0.1),
chance: 1.0,
))),
)

View File

@ -0,0 +1,33 @@
DashMelee(
energy_cost: 3.0,
melee_constructor: (
kind: Bash(
damage: 9.0,
poise: 40.0,
knockback: 16.0,
energy_regen: 0.0,
),
scaled: Some(Bash(
damage: 10.0,
poise: 0.0,
knockback: 20.0,
energy_regen: 0.0,
)),
range: 5.0,
angle: 45.0,
damage_effect: Some(Buff((
kind: Frozen,
dur_secs: 2.0,
strength: DamageFraction(0.1),
chance: 1.0,
))),
),
energy_drain: 0,
forward_speed: 12.0,
buildup_duration: 0.6,
charge_duration: 0.2,
swing_duration: 0.1,
recover_duration: 0.9,
ori_modifier: 0.3,
charge_through: false,
)

View File

@ -0,0 +1,26 @@
LeapMelee(
energy_cost: 35.0,
buildup_duration: 0.1,
movement_duration: 0.6,
swing_duration: 0.15,
recover_duration: 0.2,
melee_constructor: (
kind: Bash(
damage: 25.0,
poise: 40.0,
knockback: 25.0,
energy_regen: 0.0,
),
range: 4.5,
angle: 360.0,
multi_target: Some(Normal),
damage_effect: Some(Buff((
kind: Frozen,
dur_secs: 2.0,
strength: DamageFraction(0.1),
chance: 1.0,
))),
),
forward_leap_strength: 20.0,
vertical_leap_strength: 8.0,
)

View File

@ -0,0 +1,31 @@
ComboMelee(
stage_data: [(
stage: 1,
base_damage: 15.0,
damage_increase: 0.75,
base_poise_damage: 0,
poise_damage_increase: 0,
knockback: 3.5,
range: 4.5,
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((
kind: Frozen,
dur_secs: 2.0,
strength: DamageFraction(0.1),
chance: 1.0,
))),
)],
initial_energy_gain: 5.0,
max_energy_gain: 12.5,
energy_increase: 2.5,
speed_increase: 0.1,
max_speed_increase: 0.4,
scales_from_combo: 2,
ori_modifier: 1.0,
)

View File

@ -0,0 +1,19 @@
BasicBeam(
buildup_duration: 0.3,
recover_duration: 1.0,
beam_duration: 1.0,
damage: 22.5,
tick_rate: 5.0,
range: 8.0,
max_angle: 15.0,
damage_effect: Some(Buff((
kind: Burning,
dur_secs: 3.0,
strength: Value(0.5),
chance: 1.0,
))),
energy_regen: 2,
energy_drain: 0,
ori_rate: 0.5,
specifier: Steam,
)

View File

@ -0,0 +1,18 @@
BasicSummon(
buildup_duration: 0.2,
cast_duration: 0.3,
recover_duration: 0.3,
summon_amount: 4,
summon_distance: (4, 4),
summon_info: (
body: QuadrupedLow((
species: SeaCrocodile,
body_type: Male,
)),
scale: None,
has_health: true,
loadout_config: None,
skillset_config: Some(Rank5),
),
duration: None,
)

View File

@ -14,4 +14,5 @@ Shockwave(
move_efficiency: 0.0,
damage_kind: Crushing,
specifier: Ground,
ori_rate: 1.0,
)

View File

@ -12,6 +12,7 @@ BasicMelee(
),
range: 4.0,
angle: 45.0,
multi_target: Some(Normal),
),
ori_modifier: 1.0,
)

View File

@ -0,0 +1,77 @@
ComboMelee(
stage_data: [
(
stage: 1,
base_damage: 20.0,
damage_increase: 0,
base_poise_damage: 0,
poise_damage_increase: 0,
knockback: 5.0,
range: 4.5,
angle: 30.0,
base_buildup_duration: 0.8,
base_swing_duration: 0.1,
hit_timing: 0.5,
base_recover_duration: 0.6,
forward_movement: 2.0,
damage_kind: Slashing,
damage_effect: Some(Buff((
kind: Bleeding,
dur_secs: 10.0,
strength: DamageFraction(0.1),
chance: 0.1,
))),
),
(
stage: 2,
base_damage: 16.0,
damage_increase: 0,
base_poise_damage: 0,
poise_damage_increase: 0,
knockback: 5.0,
range: 3.5,
angle: 30.0,
base_buildup_duration: 0.8,
base_swing_duration: 0.1,
hit_timing: 0.5,
base_recover_duration: 0.6,
forward_movement: 1.5,
damage_kind: Slashing,
damage_effect: Some(Buff((
kind: Bleeding,
dur_secs: 10.0,
strength: DamageFraction(0.1),
chance: 0.1,
))),
),
(
stage: 3,
base_damage: 26.0,
damage_increase: 0,
base_poise_damage: 0,
poise_damage_increase: 0,
knockback: 10.0,
range: 3.5,
angle: 30.0,
base_buildup_duration: 0.375,
base_swing_duration: 0.1,
hit_timing: 0.5,
base_recover_duration: 0.6,
forward_movement: 1.5,
damage_kind: Slashing,
damage_effect: Some(Buff((
kind: Bleeding,
dur_secs: 10.0,
strength: DamageFraction(0.1),
chance: 0.1,
))),
),
],
initial_energy_gain: 0,
max_energy_gain: 0,
energy_increase: 0,
speed_increase: 0.0,
max_speed_increase: 0.0,
scales_from_combo: 0,
ori_modifier: 0.7,
)

View File

@ -0,0 +1,19 @@
BasicRanged(
energy_cost: 0,
buildup_duration: 1.0,
recover_duration: 0.7,
projectile: WindBomb(
damage: 20.0,
radius: 5.0,
energy_regen: 5.0,
min_falloff: 0.5,
),
projectile_body: Object(BoltFire),
/*projectile_light: Some(LightEmitter {
col: (1.0, 0.75, 0.11).into(),
..Default::default()
}),*/
projectile_speed: 60.0,
num_projectiles: 1,
projectile_spread: 0.0,
)

View File

@ -0,0 +1,18 @@
Shockwave(
energy_cost: 60.0,
buildup_duration: 1.4,
swing_duration: 0.1,
recover_duration: 0.4,
damage: 40.0,
poise_damage: 0,
knockback: ( strength: 25.0, direction: Away),
shockwave_angle: 360.0,
shockwave_vertical_angle: 90.0,
shockwave_speed: 20.0,
shockwave_duration: 0.5,
requires_ground: false,
move_efficiency: 0.1,
damage_kind: Energy,
specifier: Water,
ori_rate: 1.0,
)

View File

@ -0,0 +1,19 @@
BasicBeam(
buildup_duration: 0.8,
recover_duration: 0.5,
beam_duration: 0.5,
damage: 10.0,
tick_rate: 3.0,
range: 15.0,
max_angle: 22.5,
damage_effect: Some(Buff((
kind: Burning,
dur_secs: 10.0,
strength: DamageFraction(0.5),
chance: 0.25,
))),
energy_regen: 0,
energy_drain: 0,
ori_rate: 0.3,
specifier: Bubbles,
)

View File

@ -0,0 +1,16 @@
BasicRanged(
energy_cost: 0,
buildup_duration: 0.5,
recover_duration: 1.5,
projectile: DagonBomb(
damage: 32.0,
knockback: 15.0,
radius: 5.0,
min_falloff: 0.1,
),
projectile_body: Object(DagonBomb),
projectile_light: None,
projectile_speed: 20.0,
num_projectiles: 1,
projectile_spread: 0.0,
)

View File

@ -0,0 +1,10 @@
SpriteSummon(
buildup_duration: 0.1,
cast_duration: 0.1,
recover_duration: 0.9,
sprite: SeaUrchin,
del_timeout: Some((4, 5)),
summon_distance: (5, 3.1),
sparseness: 0.2,
angle: 360,
)

View File

@ -0,0 +1,19 @@
BasicAura(
buildup_duration: 0.2,
cast_duration: 0.4,
recover_duration: 5.0,
targets: InGroup,
auras: [
(
kind: Regeneration,
strength: 10.0,
duration: Some(5),
category: Magical,
),
],
aura_duration: 2.0,
range: 10.0,
energy_cost: 0.0,
scales_with_combo: false,
specifier: Some(HealingAura),
)

View File

@ -0,0 +1,18 @@
Shockwave(
energy_cost: 0,
buildup_duration: 0.3,
swing_duration: 0.3,
recover_duration: 0.5,
damage: 20.0,
poise_damage: 10,
knockback: (strength: 18.0, direction: Away),
shockwave_angle: 360.0,
shockwave_vertical_angle: 90.0,
shockwave_speed: 15.0,
shockwave_duration: 2.0,
requires_ground: true,
move_efficiency: 0.0,
damage_kind: Crushing,
specifier: Steam,
ori_rate: 1.0,
)

View File

@ -24,5 +24,4 @@ DashMelee(
recover_duration: 2.0,
ori_modifier: 0.1,
charge_through: true,
is_interruptible: false,
)

View File

@ -0,0 +1,19 @@
BasicRanged(
energy_cost: 0,
buildup_duration: 1.0,
recover_duration: 0.7,
projectile: Fireball(
damage: 20.0,
radius: 5.0,
energy_regen: 5.0,
min_falloff: 0.5,
),
projectile_body: Object(BoltFire),
/*projectile_light: Some(LightEmitter {
col: (1.0, 0.75, 0.11).into(),
..Default::default()
}),*/
projectile_speed: 60.0,
num_projectiles: 1,
projectile_spread: 0.0,
)

View File

@ -0,0 +1,18 @@
Shockwave(
energy_cost: 60.0,
buildup_duration: 1.4,
swing_duration: 0.1,
recover_duration: 0.4,
damage: 40.0,
poise_damage: 0,
knockback: ( strength: 25.0, direction: Away),
shockwave_angle: 360.0,
shockwave_vertical_angle: 90.0,
shockwave_speed: 20.0,
shockwave_duration: 0.5,
requires_ground: false,
move_efficiency: 0.1,
damage_kind: Energy,
specifier: Fire,
ori_rate: 1.0,
)

View File

@ -0,0 +1,19 @@
BasicBeam(
buildup_duration: 0.8,
recover_duration: 0.5,
beam_duration: 0.5,
damage: 10.0,
tick_rate: 3.0,
range: 15.0,
max_angle: 22.5,
damage_effect: Some(Buff((
kind: Burning,
dur_secs: 10.0,
strength: DamageFraction(0.5),
chance: 0.25,
))),
energy_regen: 0,
energy_drain: 0,
ori_rate: 0.3,
specifier: Flamethrower,
)

View File

@ -0,0 +1,77 @@
ComboMelee(
stage_data: [
(
stage: 1,
base_damage: 20.0,
damage_increase: 0,
base_poise_damage: 0,
poise_damage_increase: 0,
knockback: 5.0,
range: 4.5,
angle: 30.0,
base_buildup_duration: 0.8,
base_swing_duration: 0.1,
hit_timing: 0.5,
base_recover_duration: 0.6,
forward_movement: 2.0,
damage_kind: Slashing,
damage_effect: Some(Buff((
kind: Bleeding,
dur_secs: 10.0,
strength: DamageFraction(0.1),
chance: 0.1,
))),
),
(
stage: 2,
base_damage: 16.0,
damage_increase: 0,
base_poise_damage: 0,
poise_damage_increase: 0,
knockback: 5.0,
range: 3.5,
angle: 30.0,
base_buildup_duration: 0.8,
base_swing_duration: 0.1,
hit_timing: 0.5,
base_recover_duration: 0.6,
forward_movement: 1.5,
damage_kind: Slashing,
damage_effect: Some(Buff((
kind: Bleeding,
dur_secs: 10.0,
strength: DamageFraction(0.1),
chance: 0.1,
))),
),
(
stage: 3,
base_damage: 26.0,
damage_increase: 0,
base_poise_damage: 0,
poise_damage_increase: 0,
knockback: 10.0,
range: 3.5,
angle: 30.0,
base_buildup_duration: 0.375,
base_swing_duration: 0.1,
hit_timing: 0.5,
base_recover_duration: 0.6,
forward_movement: 1.5,
damage_kind: Slashing,
damage_effect: Some(Buff((
kind: Bleeding,
dur_secs: 10.0,
strength: DamageFraction(0.1),
chance: 0.1,
))),
),
],
initial_energy_gain: 0,
max_energy_gain: 0,
energy_increase: 0,
speed_increase: 0.0,
max_speed_increase: 0.0,
scales_from_combo: 0,
ori_modifier: 0.7,
)

View File

@ -0,0 +1,19 @@
BasicRanged(
energy_cost: 0,
buildup_duration: 1.0,
recover_duration: 0.7,
projectile: Frostball(
damage: 20.0,
radius: 5.0,
energy_regen: 5.0,
min_falloff: 0.5,
),
projectile_body: Object(BoltNature),
/*projectile_light: Some(LightEmitter {
col: (1.0, 0.75, 0.11).into(),
..Default::default()
}),*/
projectile_speed: 60.0,
num_projectiles: 1,
projectile_spread: 0.0,
)

View File

@ -0,0 +1,19 @@
BasicBeam(
buildup_duration: 0.8,
recover_duration: 0.5,
beam_duration: 0.5,
damage: 10.0,
tick_rate: 3.0,
range: 15.0,
max_angle: 22.5,
damage_effect: Some(Buff((
kind: Burning,
dur_secs: 10.0,
strength: DamageFraction(0.5),
chance: 0.25,
))),
energy_regen: 0,
energy_drain: 0,
ori_rate: 0.3,
specifier: Frost,
)

View File

@ -0,0 +1,18 @@
Shockwave(
energy_cost: 60.0,
buildup_duration: 1.4,
swing_duration: 0.1,
recover_duration: 0.4,
damage: 40.0,
poise_damage: 0,
knockback: ( strength: 25.0, direction: Away),
shockwave_angle: 360.0,
shockwave_vertical_angle: 90.0,
shockwave_speed: 20.0,
shockwave_duration: 0.5,
requires_ground: false,
move_efficiency: 0.1,
damage_kind: Energy,
specifier: IceSpikes,
ori_rate: 1.0,
)

View File

@ -0,0 +1,77 @@
ComboMelee(
stage_data: [
(
stage: 1,
base_damage: 20.0,
damage_increase: 0,
base_poise_damage: 0,
poise_damage_increase: 0,
knockback: 5.0,
range: 4.5,
angle: 30.0,
base_buildup_duration: 0.8,
base_swing_duration: 0.1,
hit_timing: 0.5,
base_recover_duration: 0.6,
forward_movement: 2.0,
damage_kind: Slashing,
damage_effect: Some(Buff((
kind: Bleeding,
dur_secs: 10.0,
strength: DamageFraction(0.1),
chance: 0.1,
))),
),
(
stage: 2,
base_damage: 16.0,
damage_increase: 0,
base_poise_damage: 0,
poise_damage_increase: 0,
knockback: 5.0,
range: 3.5,
angle: 30.0,
base_buildup_duration: 0.8,
base_swing_duration: 0.1,
hit_timing: 0.5,
base_recover_duration: 0.6,
forward_movement: 1.5,
damage_kind: Slashing,
damage_effect: Some(Buff((
kind: Bleeding,
dur_secs: 10.0,
strength: DamageFraction(0.1),
chance: 0.1,
))),
),
(
stage: 3,
base_damage: 26.0,
damage_increase: 0,
base_poise_damage: 0,
poise_damage_increase: 0,
knockback: 10.0,
range: 3.5,
angle: 30.0,
base_buildup_duration: 0.375,
base_swing_duration: 0.1,
hit_timing: 0.5,
base_recover_duration: 0.6,
forward_movement: 1.5,
damage_kind: Slashing,
damage_effect: Some(Buff((
kind: Bleeding,
dur_secs: 10.0,
strength: DamageFraction(0.1),
chance: 0.1,
))),
),
],
initial_energy_gain: 0,
max_energy_gain: 0,
energy_increase: 0,
speed_increase: 0.0,
max_speed_increase: 0.0,
scales_from_combo: 0,
ori_modifier: 0.7,
)

View File

@ -0,0 +1,24 @@
BasicMelee(
energy_cost: 0,
buildup_duration: 0.9,
swing_duration: 0.1,
recover_duration: 0.7,
melee_constructor: (
kind: Slash(
damage: 85.0,
poise: 5.0,
knockback: 5.0,
energy_regen: 10.0,
),
range: 5.0,
angle: 75.0,
damage_effect: Some(Buff((
kind: Frozen,
dur_secs: 1.0,
strength: DamageFraction(0.1),
chance: 0.3,
))),
multi_target: Some(Normal),
),
ori_modifier: 0.2,
)

View File

@ -0,0 +1,24 @@
Shockwave(
energy_cost: 0,
buildup_duration: 2.0,
swing_duration: 0.12,
recover_duration: 1.5,
damage: 45.0,
poise_damage: 30,
knockback: (strength: 0.0, direction: TowardsUp),
shockwave_angle: 240.0,
shockwave_vertical_angle: 360.0,
shockwave_speed: 200.0,
shockwave_duration: 0.15,
requires_ground: false,
move_efficiency: 0.0,
damage_kind: Piercing,
specifier: IceSpikes,
ori_rate: 0.0,
damage_effect: Some(Buff((
kind: Frozen,
dur_secs: 2.0,
strength: DamageFraction(0.3),
chance: 1.0,
))),
)

View File

@ -0,0 +1,18 @@
BasicSummon(
buildup_duration: 1.75,
cast_duration: 1.5,
recover_duration: 0.75,
summon_amount: 12,
summon_distance: (10, 15),
summon_info: (
body: BipedSmall((
species: Boreal,
body_type: Male,
)),
scale: None,
has_health: true,
loadout_config: Some(BorealSummon),
skillset_config: None,
),
duration: None,
)

View File

@ -0,0 +1,15 @@
BasicRanged(
energy_cost: 0,
buildup_duration: 0.5,
recover_duration: 0.9,
projectile: IceBomb(
damage: 30.0,
radius: 3.0,
knockback: 12.0,
min_falloff: 0.1,
),
projectile_body: Object(IceBomb),
projectile_speed: 25.0,
num_projectiles: 5,
projectile_spread: 0.07,
)

View File

@ -0,0 +1,10 @@
SpriteSummon(
buildup_duration: 1.3,
cast_duration: 0.1,
recover_duration: 1.1,
sprite: IceSpike,
del_timeout: Some((2, 5)),
summon_distance: (2, 12),
sparseness: 0.95,
angle: 360,
)

View File

@ -0,0 +1,26 @@
LeapShockwave(
energy_cost: 0,
buildup_duration: 1.4,
movement_duration: 0.8,
swing_duration: 0.15,
recover_duration: 0.9,
damage: 45.0,
poise_damage: 10,
knockback: (strength: 3.0, direction: Up),
shockwave_angle: 360.0,
shockwave_vertical_angle: 15.0,
shockwave_speed: 20.0,
shockwave_duration: 0.8,
requires_ground: true,
move_efficiency: 0.2,
damage_kind: Piercing,
specifier: IceSpikes,
damage_effect: Some(Buff((
kind: Frozen,
dur_secs: 1.0,
strength: DamageFraction(0.1),
chance: 1.0,
))),
forward_leap_strength: 45.0,
vertical_leap_strength: 10.0,
)

View File

@ -0,0 +1,24 @@
BasicMelee(
energy_cost: 0,
buildup_duration: 0.4,
swing_duration: 0.1,
recover_duration: 0.8,
melee_constructor: (
kind: Slash(
damage: 90.0,
poise: 20.0,
knockback: 5.0,
energy_regen: 5.0,
),
range: 5.0,
angle: 120.0,
damage_effect: Some(Buff((
kind: Frozen,
dur_secs: 1.0,
strength: DamageFraction(0.1),
chance: 0.5,
))),
multi_target: Some(Normal),
),
ori_modifier: 1.0,
)

View File

@ -3,6 +3,8 @@ SpriteSummon(
cast_duration: 0.4,
recover_duration: 0.3,
sprite: EnsnaringVines,
del_timeout: None,
summon_distance: (0, 25),
sparseness: 0.67,
angle: 360,
)

View File

@ -12,6 +12,7 @@ BasicMelee(
),
range: 4.0,
angle: 60.0,
multi_target: Some(Normal),
),
ori_modifier: 1.0,
)

View File

@ -23,6 +23,5 @@ ComboMelee(
speed_increase: 0.0,
max_speed_increase: 0.0,
scales_from_combo: 0,
is_interruptible: false,
ori_modifier: 0.6,
)

View File

@ -55,6 +55,5 @@ ComboMelee(
speed_increase: 0.0,
max_speed_increase: 0.0,
scales_from_combo: 0,
is_interruptible: false,
ori_modifier: 0.6,
)

View File

@ -23,6 +23,5 @@ ComboMelee(
speed_increase: 0.0,
max_speed_increase: 0.0,
scales_from_combo: 0,
is_interruptible: false,
ori_modifier: 0.6,
)

View File

@ -14,7 +14,6 @@ SpinMelee(
energy_cost: 0.0,
is_infinite: false,
movement_behavior: Stationary,
is_interruptible: false,
forward_speed: 0.0,
num_spins: 1,
specifier: None,

View File

@ -23,6 +23,5 @@ ComboMelee(
speed_increase: 0.0,
max_speed_increase: 0.0,
scales_from_combo: 0,
is_interruptible: false,
ori_modifier: 0.65,
)

View File

@ -10,11 +10,11 @@ SpinMelee(
),
range: 16.0,
angle: 360.0,
multi_target: Some(Normal),
),
energy_cost: 0.0,
is_infinite: true,
movement_behavior: Stationary,
is_interruptible: false,
forward_speed: 0.0,
num_spins: 1,
specifier: Some(CultistVortex),

View File

@ -21,6 +21,7 @@ DashMelee(
strength: DamageFraction(0.3),
chance: 0.25,
))),
multi_target: Some(Normal),
),
energy_drain: 0,
forward_speed: 5.0,
@ -30,5 +31,4 @@ DashMelee(
recover_duration: 3.4,
ori_modifier: 0.1,
charge_through: false,
is_interruptible: false,
)

View File

@ -16,6 +16,7 @@ ChargedMelee(
)),
range: 5.0,
angle: 45.0,
multi_target: Some(Normal),
),
charge_duration: 4.5,
swing_duration: 0.1,

View File

@ -18,6 +18,7 @@ BasicMelee(
strength: Value(0.5),
chance: 1.0,
))),
multi_target: Some(Normal),
),
ori_modifier: 1.0,
)

View File

@ -24,5 +24,4 @@ DashMelee(
recover_duration: 2.4,
ori_modifier: 0.3,
charge_through: false,
is_interruptible: true,
)

View File

@ -51,6 +51,5 @@ ComboMelee(
speed_increase: 0.0,
max_speed_increase: 0.0,
scales_from_combo: 0,
is_interruptible: false,
ori_modifier: 0.6,
)

View File

@ -0,0 +1,19 @@
BasicAura(
buildup_duration: 0.0,
cast_duration: 0.0,
recover_duration: 2.0,
targets: InGroup,
auras: [
(
kind: ProtectingWard,
strength: 0.20,
duration: Some(10.0),
category: Magical,
),
],
aura_duration: 34.75,
range: 18.0,
energy_cost: 0.0,
scales_with_combo: false,
specifier: Some(WardingAura),
)

View File

@ -23,6 +23,5 @@ ComboMelee(
speed_increase: 0.0,
max_speed_increase: 0.0,
scales_from_combo: 0,
is_interruptible: false,
ori_modifier: 0.6,
)

View File

@ -55,6 +55,5 @@ ComboMelee(
speed_increase: 0.0,
max_speed_increase: 0.0,
scales_from_combo: 0,
is_interruptible: false,
ori_modifier: 0.65,
)

View File

@ -24,5 +24,4 @@ DashMelee(
recover_duration: 2.0,
ori_modifier: 0.3,
charge_through: false,
is_interruptible: false,
)

View File

@ -55,6 +55,5 @@ ComboMelee(
speed_increase: 0.0,
max_speed_increase: 0.0,
scales_from_combo: 0,
is_interruptible: false,
ori_modifier: 0.7,
)

View File

@ -24,5 +24,4 @@ DashMelee(
recover_duration: 2.0,
ori_modifier: 0.3,
charge_through: false,
is_interruptible: false,
)

View File

@ -71,6 +71,5 @@ ComboMelee(
speed_increase: 0.0,
max_speed_increase: 0.0,
scales_from_combo: 0,
is_interruptible: false,
ori_modifier: 0.8,
)

View File

@ -16,6 +16,7 @@ ChargedMelee(
)),
range: 6.0,
angle: 90.0,
multi_target: Some(Normal),
),
charge_duration: 3.2,
swing_duration: 0.7,

View File

@ -55,6 +55,5 @@ ComboMelee(
speed_increase: 0.0,
max_speed_increase: 0.0,
scales_from_combo: 0,
is_interruptible: false,
ori_modifier: 0.7,
)

View File

@ -23,6 +23,5 @@ ComboMelee(
speed_increase: 0.0,
max_speed_increase: 0.0,
scales_from_combo: 0,
is_interruptible: false,
ori_modifier: 0.7,
)

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