From aec866e5ec588d044d49941a98d45667d6475b5e Mon Sep 17 00:00:00 2001 From: Youssef Fahmy Date: Sat, 23 Apr 2022 14:54:01 +0000 Subject: [PATCH] Balance tweaks --- CHANGELOG.md | 3 + .../common/abilities/ability_set_manifest.ron | 43 +++++++----- .../antlion}/charge.ron | 16 ++--- .../arthropods/antlion/singlestrike.ron | 34 ++++++++++ .../blackwidow/ensnaringwebs.ron} | 6 +- .../blackwidow}/poisonball.ron | 14 ++-- .../blackwidow}/singlestrike.ron | 18 ++--- .../custom/arthropods/hornbeetle/harden.ron | 9 +++ .../hornbeetle}/leap.ron | 8 +-- .../arthropods/hornbeetle/singlestrike.ron | 28 ++++++++ .../tarantula/ensnaringwebs.ron} | 6 +- .../custom/arthropods/tarantula/leap.ron | 19 ++++++ .../tarantula}/singlestrike.ron | 16 ++--- .../custom/arthropods/weevil/harden.ron | 9 +++ .../weevil}/singlestrike.ron | 14 ++-- .../custom/arthropods/weevil/threadshot.ron | 19 ++++++ .../custom/harvester/explodingpumpkin.ron | 2 +- .../abilities/custom/harvester/firebreath.ron | 12 ++-- .../abilities/custom/harvester/scythe.ron | 4 +- .../custom/mindflayer/cursedflames.ron | 2 +- .../custom/minotaur/cripplingstrike.ron | 6 ++ .../entity/dungeon/gnarling/chieftain.ron | 2 +- .../entity/dungeon/gnarling/harvester.ron | 2 +- .../common/entity/wild/aggressive/antlion.ron | 2 +- .../entity/wild/aggressive/roshwalr.ron | 2 +- .../entity/wild/aggressive/tarantula.ron | 2 +- assets/common/items/armor/merchant/turban.ron | 9 ++- .../items/armor/misc/head/bamboo_twig.ron | 4 +- .../items/armor/misc/head/bandana/red.ron | 2 +- .../items/armor/misc/head/bandana/thief.ron | 2 +- assets/common/items/armor/misc/head/crown.ron | 3 +- .../common/items/armor/misc/head/hog_hood.ron | 2 +- assets/common/items/armor/misc/head/hood.ron | 5 +- .../items/armor/misc/head/hood_dark.ron | 5 +- assets/common/items/armor/misc/head/mitre.ron | 7 +- .../items/armor/misc/head/spikeguard.ron | 2 +- assets/common/items/armor/misc/head/straw.ron | 2 +- .../items/armor/misc/head/wanderers_hat.ron | 7 +- .../items/armor/misc/head/winged_coronet.ron | 7 +- assets/common/items/armor/pirate/hat.ron | 6 +- assets/common/items/armor/witch/hat.ron | 9 ++- assets/common/items/lantern/pumpkin.ron | 2 +- .../items/npc_armor/arthropod/generic.ron | 2 +- .../items/npc_armor/quadruped_low/shell.ron | 2 +- .../antlion.ron} | 6 +- .../blackwidow.ron} | 6 +- .../unique/arthropods/cavespider.ron | 21 ++++++ .../hornbeetle.ron} | 6 +- .../unique/arthropods/leafbeetle.ron | 21 ++++++ .../unique/arthropods/mosscrawler.ron | 21 ++++++ .../tarantula.ron} | 6 +- .../npc_weapons/unique/arthropods/weevil.ron | 21 ++++++ .../creature/arthropod/antlion.ron | 3 + .../creature/arthropod/tarantula.ron | 3 + .../loot_tables/creature/quad_medium/ice.ron | 4 +- .../creature/quad_medium/roshwalr.ron | 4 ++ .../tier-0/{boss.ron => chieftain.ron} | 0 .../loot_tables/dungeon/tier-0/harvester.ron | 9 +++ .../loot_tables/dungeon/tier-1/enemy.ron | 2 +- assets/common/npc_names.ron | 2 +- assets/voxygen/shaders/particle-vert.glsl | 11 ++++ .../wildlife/spawn/temperate/rainforest.ron | 1 + .../world/wildlife/spawn/temperate/wood.ron | 1 + assets/world/wildlife/spawn/tundra/snow.ron | 2 +- common/src/comp/beam.rs | 1 + common/src/comp/body.rs | 2 +- common/src/comp/inventory/loadout_builder.rs | 34 +++++++--- common/src/comp/projectile.rs | 2 +- server/src/sys/agent.rs | 19 ++---- server/src/sys/agent/attack.rs | 66 +++++-------------- server/src/sys/agent/data.rs | 5 +- voxygen/src/audio/sfx/mod.rs | 3 +- voxygen/src/render/pipelines/particle.rs | 1 + voxygen/src/scene/particle.rs | 11 ++++ world/src/layer/mod.rs | 3 +- 75 files changed, 449 insertions(+), 224 deletions(-) rename assets/common/abilities/custom/{arthropodcharge => arthropods/antlion}/charge.ron (71%) create mode 100644 assets/common/abilities/custom/arthropods/antlion/singlestrike.ron rename assets/common/abilities/custom/{arthropodranged/ensnaringweb.ron => arthropods/blackwidow/ensnaringwebs.ron} (53%) rename assets/common/abilities/custom/{arthropodranged => arthropods/blackwidow}/poisonball.ron (66%) rename assets/common/abilities/custom/{arthropodranged => arthropods/blackwidow}/singlestrike.ron (71%) create mode 100644 assets/common/abilities/custom/arthropods/hornbeetle/harden.ron rename assets/common/abilities/custom/{arthropodbasic => arthropods/hornbeetle}/leap.ron (79%) create mode 100644 assets/common/abilities/custom/arthropods/hornbeetle/singlestrike.ron rename assets/common/abilities/custom/{arthropodbasic/ensnaringweb.ron => arthropods/tarantula/ensnaringwebs.ron} (53%) create mode 100644 assets/common/abilities/custom/arthropods/tarantula/leap.ron rename assets/common/abilities/custom/{arthropodcharge => arthropods/tarantula}/singlestrike.ron (74%) create mode 100644 assets/common/abilities/custom/arthropods/weevil/harden.ron rename assets/common/abilities/custom/{arthropodbasic => arthropods/weevil}/singlestrike.ron (68%) create mode 100644 assets/common/abilities/custom/arthropods/weevil/threadshot.ron rename assets/common/items/npc_weapons/unique/{arthropodleap.ron => arthropods/antlion.ron} (80%) rename assets/common/items/npc_weapons/unique/{arthropodbasic.ron => arthropods/blackwidow.ron} (79%) create mode 100644 assets/common/items/npc_weapons/unique/arthropods/cavespider.ron rename assets/common/items/npc_weapons/unique/{arthropodcharge.ron => arthropods/hornbeetle.ron} (79%) create mode 100644 assets/common/items/npc_weapons/unique/arthropods/leafbeetle.ron create mode 100644 assets/common/items/npc_weapons/unique/arthropods/mosscrawler.ron rename assets/common/items/npc_weapons/unique/{arthropodranged.ron => arthropods/tarantula.ron} (79%) create mode 100644 assets/common/items/npc_weapons/unique/arthropods/weevil.ron create mode 100644 assets/common/loot_tables/creature/arthropod/antlion.ron create mode 100644 assets/common/loot_tables/creature/arthropod/tarantula.ron create mode 100644 assets/common/loot_tables/creature/quad_medium/roshwalr.ron rename assets/common/loot_tables/dungeon/tier-0/{boss.ron => chieftain.ron} (100%) create mode 100644 assets/common/loot_tables/dungeon/tier-0/harvester.ron diff --git a/CHANGELOG.md b/CHANGELOG.md index 5cfca637be..c000dca122 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -114,6 +114,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Creatures will now defend their pets - [WorldGen] Change path colors - Render item drops instead of placeholder textures +- Arthropods are rebalanced +- Slight hat item rebalance (hats are more specialized and befitting of their rarity rank) +- Harvester boss buffed in stats ### Removed diff --git a/assets/common/abilities/ability_set_manifest.ron b/assets/common/abilities/ability_set_manifest.ron index 355e6d9b17..98ab4eecb1 100644 --- a/assets/common/abilities/ability_set_manifest.ron +++ b/assets/common/abilities/ability_set_manifest.ron @@ -186,6 +186,8 @@ secondary: "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", @@ -279,30 +281,41 @@ secondary: "common.abilities.custom.theropodbasic.dash", abilities: [], ), - Custom("Arthropod Basic"): ( - primary: "common.abilities.custom.arthropodbasic.singlestrike", - secondary: "common.abilities.custom.arthropodbasic.ensnaringweb", + // Arthropods + Custom("Antlion"): ( + primary: "common.abilities.custom.arthropods.antlion.singlestrike", + secondary: "common.abilities.custom.arthropods.antlion.charge", abilities: [], ), - Custom("Arthropod Leap"): ( - primary: "common.abilities.custom.arthropodbasic.singlestrike", - secondary: "common.abilities.custom.arthropodbasic.ensnaringweb", + Custom("Black Widow"): ( + primary: "common.abilities.custom.arthropods.blackwidow.singlestrike", + secondary: "common.abilities.custom.arthropods.blackwidow.ensnaringwebs", abilities: [ - (None, "common.abilities.custom.arthropodbasic.leap"), + (None, "common.abilities.custom.arthropods.blackwidow.poisonball"), ], ), - Custom("Arthropod Ranged"): ( - primary: "common.abilities.custom.arthropodranged.singlestrike", - secondary: "common.abilities.custom.arthropodranged.ensnaringweb", + Custom("Horn Beetle"): ( + primary: "common.abilities.custom.arthropods.hornbeetle.singlestrike", + secondary: "common.abilities.custom.arthropods.hornbeetle.harden", abilities: [ - (None, "common.abilities.custom.arthropodranged.poisonball"), + (None, "common.abilities.custom.arthropods.hornbeetle.leap"), ], ), - Custom("Arthropod Charge"): ( - primary: "common.abilities.custom.arthropodcharge.singlestrike", - secondary: "common.abilities.custom.arthropodcharge.charge", - abilities: [], + Custom("Tarantula"): ( + primary: "common.abilities.custom.arthropods.tarantula.singlestrike", + secondary: "common.abilities.custom.arthropods.tarantula.ensnaringwebs", + abilities: [ + (None, "common.abilities.custom.arthropods.tarantula.leap"), + ], ), + Custom("Weevil"): ( + primary: "common.abilities.custom.arthropods.weevil.singlestrike", + secondary: "common.abilities.custom.arthropods.weevil.harden", + abilities: [ + (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", diff --git a/assets/common/abilities/custom/arthropodcharge/charge.ron b/assets/common/abilities/custom/arthropods/antlion/charge.ron similarity index 71% rename from assets/common/abilities/custom/arthropodcharge/charge.ron rename to assets/common/abilities/custom/arthropods/antlion/charge.ron index b024db8184..b30662dd84 100644 --- a/assets/common/abilities/custom/arthropodcharge/charge.ron +++ b/assets/common/abilities/custom/arthropods/antlion/charge.ron @@ -2,27 +2,27 @@ DashMelee( energy_cost: 0, melee_constructor: ( kind: Stab( - damage: 12.0, - poise: 25.0, + damage: 15.0, + poise: 20.0, knockback: 10.0, energy_regen: 0.0, ), scaled: Some(Stab( - damage: 50.0, - poise: 100.0, - knockback: 30.0, + damage: 60.0, + poise: 45.0, + knockback: 25.0, energy_regen: 0.0, )), range: 5.0, angle: 90.0, ), energy_drain: 0, - forward_speed: 5.0, + forward_speed: 3.0, buildup_duration: 0.3, charge_duration: 4.0, swing_duration: 0.1, recover_duration: 0.4, - ori_modifier: 0.3, + ori_modifier: 0.1, charge_through: false, is_interruptible: false, -) +) \ No newline at end of file diff --git a/assets/common/abilities/custom/arthropods/antlion/singlestrike.ron b/assets/common/abilities/custom/arthropods/antlion/singlestrike.ron new file mode 100644 index 0000000000..7a406cc784 --- /dev/null +++ b/assets/common/abilities/custom/arthropods/antlion/singlestrike.ron @@ -0,0 +1,34 @@ +ComboMelee( + stage_data: [ + ( + stage: 1, + base_damage: 37, + damage_increase: 0, + base_poise_damage: 27.5, + poise_damage_increase: 0, + knockback: 9.0, + range: 3.0, + angle: 60.0, + base_buildup_duration: 0.7, + base_swing_duration: 0.1, + hit_timing: 0.5, + base_recover_duration: 0.4, + forward_movement: 1.0, + damage_kind: Crushing, + damage_effect: Some(Buff(( + kind: Ensnared, + dur_secs: 6.0, + strength: DamageFraction(0.1), + chance: 0.6, + ))), + ), + ], + initial_energy_gain: 0, + max_energy_gain: 0, + energy_increase: 0, + speed_increase: 0.0, + max_speed_increase: 0.0, + scales_from_combo: 0, + is_interruptible: false, + ori_modifier: 0.8, +) \ No newline at end of file diff --git a/assets/common/abilities/custom/arthropodranged/ensnaringweb.ron b/assets/common/abilities/custom/arthropods/blackwidow/ensnaringwebs.ron similarity index 53% rename from assets/common/abilities/custom/arthropodranged/ensnaringweb.ron rename to assets/common/abilities/custom/arthropods/blackwidow/ensnaringwebs.ron index a9a598615a..a22afda2e7 100644 --- a/assets/common/abilities/custom/arthropodranged/ensnaringweb.ron +++ b/assets/common/abilities/custom/arthropods/blackwidow/ensnaringwebs.ron @@ -1,8 +1,8 @@ SpriteSummon( - buildup_duration: 0.6, + buildup_duration: 0.5, cast_duration: 0.4, recover_duration: 0.3, sprite: EnsnaringWeb, - summon_distance: (0, 8), - sparseness: 0.67, + summon_distance: (0, 10), + sparseness: 0.76, ) \ No newline at end of file diff --git a/assets/common/abilities/custom/arthropodranged/poisonball.ron b/assets/common/abilities/custom/arthropods/blackwidow/poisonball.ron similarity index 66% rename from assets/common/abilities/custom/arthropodranged/poisonball.ron rename to assets/common/abilities/custom/arthropods/blackwidow/poisonball.ron index d68d27a440..0cf8078f70 100644 --- a/assets/common/abilities/custom/arthropodranged/poisonball.ron +++ b/assets/common/abilities/custom/arthropods/blackwidow/poisonball.ron @@ -1,19 +1,19 @@ BasicRanged( energy_cost: 0, - buildup_duration: 0.8, + buildup_duration: 0.6, recover_duration: 0.35, projectile: Poisonball( - damage: 26.0, - radius: 5.0, + damage: 25.0, + radius: 3.0, energy_regen: 0, - min_falloff: 0.5, + min_falloff: 0.2, ), projectile_body: Object(SpitPoison), /*projectile_light: Some(LightEmitter { col: (1.0, 0.75, 0.11).into(), ..Default::default() }),*/ - projectile_speed: 70.0, + projectile_speed: 260.0, num_projectiles: 3, - projectile_spread: 0.2, -) + projectile_spread: 0.3, +) \ No newline at end of file diff --git a/assets/common/abilities/custom/arthropodranged/singlestrike.ron b/assets/common/abilities/custom/arthropods/blackwidow/singlestrike.ron similarity index 71% rename from assets/common/abilities/custom/arthropodranged/singlestrike.ron rename to assets/common/abilities/custom/arthropods/blackwidow/singlestrike.ron index 4c09fc092f..f93dc5f540 100644 --- a/assets/common/abilities/custom/arthropodranged/singlestrike.ron +++ b/assets/common/abilities/custom/arthropods/blackwidow/singlestrike.ron @@ -2,11 +2,11 @@ ComboMelee( stage_data: [ ( stage: 1, - base_damage: 60, + base_damage: 25, damage_increase: 0, - base_poise_damage: 28, + base_poise_damage: 16, poise_damage_increase: 0, - knockback: 3.0, + knockback: 2.0, range: 3.0, angle: 60.0, base_buildup_duration: 0.4, @@ -14,12 +14,12 @@ ComboMelee( hit_timing: 0.5, base_recover_duration: 0.4, forward_movement: 1.0, - damage_kind: Crushing, + damage_kind: Piercing, damage_effect: Some(Buff(( kind: Poisoned, - dur_secs: 10.0, - strength: DamageFraction(1.0), - chance: 1.0, + dur_secs: 7.0, + strength: DamageFraction(0.6), + chance: 0.4, ))), ), ], @@ -30,5 +30,5 @@ ComboMelee( max_speed_increase: 0.0, scales_from_combo: 0, is_interruptible: false, - ori_modifier: 0.7, -) + ori_modifier: 0.8, +) \ No newline at end of file diff --git a/assets/common/abilities/custom/arthropods/hornbeetle/harden.ron b/assets/common/abilities/custom/arthropods/hornbeetle/harden.ron new file mode 100644 index 0000000000..f3c4b944bf --- /dev/null +++ b/assets/common/abilities/custom/arthropods/hornbeetle/harden.ron @@ -0,0 +1,9 @@ +SelfBuff( + buildup_duration: 0.4, + cast_duration: 0.8, + recover_duration: 0.3, + buff_kind: ProtectingWard, + buff_strength: 1.5, + buff_duration: Some(10.0), + energy_cost: 0, +) \ No newline at end of file diff --git a/assets/common/abilities/custom/arthropodbasic/leap.ron b/assets/common/abilities/custom/arthropods/hornbeetle/leap.ron similarity index 79% rename from assets/common/abilities/custom/arthropodbasic/leap.ron rename to assets/common/abilities/custom/arthropods/hornbeetle/leap.ron index 8f30d570cd..fd676b982e 100644 --- a/assets/common/abilities/custom/arthropodbasic/leap.ron +++ b/assets/common/abilities/custom/arthropods/hornbeetle/leap.ron @@ -6,8 +6,8 @@ LeapMelee( recover_duration: 0.2, melee_constructor: ( kind: Bash( - damage: 120.0, - poise: 60.0, + damage: 30.0, + poise: 20.0, knockback: 4.0, energy_regen: 0.0, ), @@ -15,5 +15,5 @@ LeapMelee( angle: 180.0, ), forward_leap_strength: 40.0, - vertical_leap_strength: 10.0, -) + vertical_leap_strength: 7.5, +) \ No newline at end of file diff --git a/assets/common/abilities/custom/arthropods/hornbeetle/singlestrike.ron b/assets/common/abilities/custom/arthropods/hornbeetle/singlestrike.ron new file mode 100644 index 0000000000..06a049559b --- /dev/null +++ b/assets/common/abilities/custom/arthropods/hornbeetle/singlestrike.ron @@ -0,0 +1,28 @@ +ComboMelee( + stage_data: [ + ( + stage: 1, + base_damage: 27, + damage_increase: 0, + base_poise_damage: 20, + poise_damage_increase: 0, + knockback: 5.0, + range: 3.0, + angle: 60.0, + base_buildup_duration: 0.4, + base_swing_duration: 0.1, + hit_timing: 0.5, + base_recover_duration: 0.4, + 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, + is_interruptible: false, + ori_modifier: 0.5, +) \ No newline at end of file diff --git a/assets/common/abilities/custom/arthropodbasic/ensnaringweb.ron b/assets/common/abilities/custom/arthropods/tarantula/ensnaringwebs.ron similarity index 53% rename from assets/common/abilities/custom/arthropodbasic/ensnaringweb.ron rename to assets/common/abilities/custom/arthropods/tarantula/ensnaringwebs.ron index a9a598615a..ec486d6c19 100644 --- a/assets/common/abilities/custom/arthropodbasic/ensnaringweb.ron +++ b/assets/common/abilities/custom/arthropods/tarantula/ensnaringwebs.ron @@ -1,8 +1,8 @@ SpriteSummon( - buildup_duration: 0.6, + buildup_duration: 0.5, cast_duration: 0.4, recover_duration: 0.3, sprite: EnsnaringWeb, - summon_distance: (0, 8), - sparseness: 0.67, + summon_distance: (0, 9), + sparseness: 0.8, ) \ No newline at end of file diff --git a/assets/common/abilities/custom/arthropods/tarantula/leap.ron b/assets/common/abilities/custom/arthropods/tarantula/leap.ron new file mode 100644 index 0000000000..f556131d65 --- /dev/null +++ b/assets/common/abilities/custom/arthropods/tarantula/leap.ron @@ -0,0 +1,19 @@ +LeapMelee( + energy_cost: 0, + buildup_duration: 0.5, + movement_duration: 0.4, + swing_duration: 0.075, + recover_duration: 0.2, + melee_constructor: ( + kind: Bash( + damage: 35.0, + poise: 30.0, + knockback: 1.0, + energy_regen: 0.0, + ), + range: 4.5, + angle: 180.0, + ), + forward_leap_strength: 25.0, + vertical_leap_strength: 10.0, +) \ No newline at end of file diff --git a/assets/common/abilities/custom/arthropodcharge/singlestrike.ron b/assets/common/abilities/custom/arthropods/tarantula/singlestrike.ron similarity index 74% rename from assets/common/abilities/custom/arthropodcharge/singlestrike.ron rename to assets/common/abilities/custom/arthropods/tarantula/singlestrike.ron index 5923a753d5..e201771290 100644 --- a/assets/common/abilities/custom/arthropodcharge/singlestrike.ron +++ b/assets/common/abilities/custom/arthropods/tarantula/singlestrike.ron @@ -2,9 +2,9 @@ ComboMelee( stage_data: [ ( stage: 1, - base_damage: 70, + base_damage: 30, damage_increase: 0, - base_poise_damage: 28, + base_poise_damage: 21, poise_damage_increase: 0, knockback: 3.0, range: 3.0, @@ -14,12 +14,12 @@ ComboMelee( hit_timing: 0.5, base_recover_duration: 0.4, forward_movement: 1.0, - damage_kind: Crushing, + damage_kind: Piercing, damage_effect: Some(Buff(( kind: Poisoned, - dur_secs: 10.0, - strength: DamageFraction(1.0), - chance: 1.0, + dur_secs: 9.0, + strength: DamageFraction(0.7), + chance: 0.8, ))), ), ], @@ -30,5 +30,5 @@ ComboMelee( max_speed_increase: 0.0, scales_from_combo: 0, is_interruptible: false, - ori_modifier: 0.7, -) + ori_modifier: 0.8, +) \ No newline at end of file diff --git a/assets/common/abilities/custom/arthropods/weevil/harden.ron b/assets/common/abilities/custom/arthropods/weevil/harden.ron new file mode 100644 index 0000000000..0f75717333 --- /dev/null +++ b/assets/common/abilities/custom/arthropods/weevil/harden.ron @@ -0,0 +1,9 @@ +SelfBuff( + buildup_duration: 0.4, + cast_duration: 0.8, + recover_duration: 0.3, + buff_kind: ProtectingWard, + buff_strength: 1.2, + buff_duration: Some(10.0), + energy_cost: 0, +) \ No newline at end of file diff --git a/assets/common/abilities/custom/arthropodbasic/singlestrike.ron b/assets/common/abilities/custom/arthropods/weevil/singlestrike.ron similarity index 68% rename from assets/common/abilities/custom/arthropodbasic/singlestrike.ron rename to assets/common/abilities/custom/arthropods/weevil/singlestrike.ron index cac334d1a2..891fba2e05 100644 --- a/assets/common/abilities/custom/arthropodbasic/singlestrike.ron +++ b/assets/common/abilities/custom/arthropods/weevil/singlestrike.ron @@ -2,9 +2,9 @@ ComboMelee( stage_data: [ ( stage: 1, - base_damage: 40, + base_damage: 22, damage_increase: 0, - base_poise_damage: 15, + base_poise_damage: 14, poise_damage_increase: 0, knockback: 3.0, range: 3.0, @@ -15,12 +15,6 @@ ComboMelee( base_recover_duration: 0.4, forward_movement: 1.0, damage_kind: Crushing, - damage_effect: Some(Buff(( - kind: Poisoned, - dur_secs: 10.0, - strength: DamageFraction(1.0), - chance: 1.0, - ))), ), ], initial_energy_gain: 0, @@ -30,5 +24,5 @@ ComboMelee( max_speed_increase: 0.0, scales_from_combo: 0, is_interruptible: false, - ori_modifier: 0.7, -) + ori_modifier: 0.6, +) \ No newline at end of file diff --git a/assets/common/abilities/custom/arthropods/weevil/threadshot.ron b/assets/common/abilities/custom/arthropods/weevil/threadshot.ron new file mode 100644 index 0000000000..cc8938deb0 --- /dev/null +++ b/assets/common/abilities/custom/arthropods/weevil/threadshot.ron @@ -0,0 +1,19 @@ +BasicBeam( + buildup_duration: 0.2, + recover_duration: 0.2, + beam_duration: 1.0, + damage: 0.6, + tick_rate: 15.0, + range: 30.0, + max_angle: 1.0, + damage_effect: Some(Buff(( + kind: Frozen, + dur_secs: 4.0, + strength: DamageFraction(1.0), + chance: 1.0, + ))), + energy_regen: 0.0, + energy_drain: 0, + ori_rate: 0.95, + specifier: WebStrand, +) \ No newline at end of file diff --git a/assets/common/abilities/custom/harvester/explodingpumpkin.ron b/assets/common/abilities/custom/harvester/explodingpumpkin.ron index f302ab8c43..23800d70a6 100644 --- a/assets/common/abilities/custom/harvester/explodingpumpkin.ron +++ b/assets/common/abilities/custom/harvester/explodingpumpkin.ron @@ -3,7 +3,7 @@ BasicRanged( buildup_duration: 0.5, recover_duration: 0.8, projectile: ExplodingPumpkin( - damage: 20.0, + damage: 25.0, knockback: 25.0, radius: 5.0, min_falloff: 0.6, diff --git a/assets/common/abilities/custom/harvester/firebreath.ron b/assets/common/abilities/custom/harvester/firebreath.ron index 979b2d727c..8a95a1f296 100644 --- a/assets/common/abilities/custom/harvester/firebreath.ron +++ b/assets/common/abilities/custom/harvester/firebreath.ron @@ -1,19 +1,19 @@ BasicBeam( - buildup_duration: 0.5, - recover_duration: 0.5, + buildup_duration: 0.7, + recover_duration: 0.6, beam_duration: 1.0, - damage: 4.0, + damage: 6.0, tick_rate: 1.5, range: 20.0, max_angle: 15.0, damage_effect: Some(Buff(( kind: Burning, dur_secs: 10.0, - strength: DamageFraction(0.5), - chance: 0.25, + strength: DamageFraction(1.0), + chance: 1.0, ))), energy_regen: 0, energy_drain: 0, - ori_rate: 0.2, + ori_rate: 0.3, specifier: Flamethrower, ) diff --git a/assets/common/abilities/custom/harvester/scythe.ron b/assets/common/abilities/custom/harvester/scythe.ron index d47ee5c838..6beea854eb 100644 --- a/assets/common/abilities/custom/harvester/scythe.ron +++ b/assets/common/abilities/custom/harvester/scythe.ron @@ -1,11 +1,11 @@ BasicMelee( energy_cost: 0, - buildup_duration: 0.7, + buildup_duration: 0.6, swing_duration: 0.1, recover_duration: 0.6, melee_constructor: ( kind: Slash( - damage: 7.0, + damage: 14.0, poise: 10.0, knockback: 10.0, energy_regen: 0.0, diff --git a/assets/common/abilities/custom/mindflayer/cursedflames.ron b/assets/common/abilities/custom/mindflayer/cursedflames.ron index 423e29d139..122d85f834 100644 --- a/assets/common/abilities/custom/mindflayer/cursedflames.ron +++ b/assets/common/abilities/custom/mindflayer/cursedflames.ron @@ -14,6 +14,6 @@ BasicBeam( ))), energy_regen: 0, energy_drain: 0, - ori_rate: 0.2, + ori_rate: 0.5, specifier: Cultist, ) diff --git a/assets/common/abilities/custom/minotaur/cripplingstrike.ron b/assets/common/abilities/custom/minotaur/cripplingstrike.ron index 75889c0937..490be6f94f 100644 --- a/assets/common/abilities/custom/minotaur/cripplingstrike.ron +++ b/assets/common/abilities/custom/minotaur/cripplingstrike.ron @@ -12,6 +12,12 @@ BasicMelee( ), range: 5.0, angle: 60.0, + damage_effect: Some(Buff(( + kind: Crippled, + dur_secs: 10.0, + strength: Value(0.5), + chance: 1.0, + ))), ), ori_modifier: 1.0, ) diff --git a/assets/common/entity/dungeon/gnarling/chieftain.ron b/assets/common/entity/dungeon/gnarling/chieftain.ron index 5e1e086fb9..50572ed6c7 100644 --- a/assets/common/entity/dungeon/gnarling/chieftain.ron +++ b/assets/common/entity/dungeon/gnarling/chieftain.ron @@ -4,7 +4,7 @@ name: Name("Gnarling Chieftain"), body: RandomWith("gnarling"), alignment: Alignment(Enemy), - loot: LootTable("common.loot_tables.dungeon.tier-0.boss"), + loot: LootTable("common.loot_tables.dungeon.tier-0.chieftain"), inventory: ( loadout: Inline(( inherit: Asset("common.loadout.dungeon.gnarling.chieftain"), diff --git a/assets/common/entity/dungeon/gnarling/harvester.ron b/assets/common/entity/dungeon/gnarling/harvester.ron index def0ac5990..0fd0f58557 100644 --- a/assets/common/entity/dungeon/gnarling/harvester.ron +++ b/assets/common/entity/dungeon/gnarling/harvester.ron @@ -3,7 +3,7 @@ name: Name("Harvester"), body: RandomWith("harvester"), alignment: Alignment(Enemy), - loot: LootTable("common.loot_tables.dungeon.tier-0.boss"), + loot: LootTable("common.loot_tables.dungeon.tier-0.harvester"), inventory: ( loadout: FromBody, ), diff --git a/assets/common/entity/wild/aggressive/antlion.ron b/assets/common/entity/wild/aggressive/antlion.ron index 3ede82c9cb..6c1fecabf9 100644 --- a/assets/common/entity/wild/aggressive/antlion.ron +++ b/assets/common/entity/wild/aggressive/antlion.ron @@ -3,7 +3,7 @@ name: Automatic, body: RandomWith("antlion"), alignment: Alignment(Enemy), - loot: LootTable("common.loot_tables.creature.arthropod.carapace"), + loot: LootTable("common.loot_tables.creature.arthropod.antlion"), inventory: ( loadout: FromBody, ), diff --git a/assets/common/entity/wild/aggressive/roshwalr.ron b/assets/common/entity/wild/aggressive/roshwalr.ron index 4ea82f795f..0ae4306c8d 100644 --- a/assets/common/entity/wild/aggressive/roshwalr.ron +++ b/assets/common/entity/wild/aggressive/roshwalr.ron @@ -6,7 +6,7 @@ body_type: Male, ))), alignment: Alignment(Enemy), - loot: LootTable("common.loot_tables.creature.quad_medium.ice"), + loot: LootTable("common.loot_tables.creature.quad_medium.roshwalr"), inventory: ( loadout: FromBody, ), diff --git a/assets/common/entity/wild/aggressive/tarantula.ron b/assets/common/entity/wild/aggressive/tarantula.ron index 414c8d7198..7e1a3f65a5 100644 --- a/assets/common/entity/wild/aggressive/tarantula.ron +++ b/assets/common/entity/wild/aggressive/tarantula.ron @@ -3,7 +3,7 @@ name: Automatic, body: RandomWith("tarantula"), alignment: Alignment(Enemy), - loot: LootTable("common.loot_tables.creature.arthropod.web"), + loot: LootTable("common.loot_tables.creature.arthropod.tarantula"), inventory: ( loadout: FromBody, ), diff --git a/assets/common/items/armor/merchant/turban.ron b/assets/common/items/armor/merchant/turban.ron index ae5462b896..3fa30f3812 100644 --- a/assets/common/items/armor/merchant/turban.ron +++ b/assets/common/items/armor/merchant/turban.ron @@ -4,11 +4,10 @@ ItemDef( kind: Armor(( kind: Head("Merchant"), stats: ( - protection: Some(Normal(6.0)), - poise_resilience: Some(Normal(4.0)), - energy_max: Some(12.0), - energy_reward: Some(0.25), - crit_power: Some(0.015), + protection: Some(Normal(5.0)), + poise_resilience: Some(Normal(2.0)), + energy_max: Some(11.0), + energy_reward: Some(0.065), ), )), quality: Epic, diff --git a/assets/common/items/armor/misc/head/bamboo_twig.ron b/assets/common/items/armor/misc/head/bamboo_twig.ron index 7669a4a629..3d77c99542 100644 --- a/assets/common/items/armor/misc/head/bamboo_twig.ron +++ b/assets/common/items/armor/misc/head/bamboo_twig.ron @@ -4,9 +4,7 @@ ItemDef( kind: Armor(( kind: Head("BambooTwig"), stats: ( - poise_resilience: Some(Normal(2.0)), - energy_reward: Some(0.06), - crit_power: Some(0.005), + energy_reward: Some(0.033), ), )), quality: Common, diff --git a/assets/common/items/armor/misc/head/bandana/red.ron b/assets/common/items/armor/misc/head/bandana/red.ron index ae7803c0ce..6ae1e654ee 100644 --- a/assets/common/items/armor/misc/head/bandana/red.ron +++ b/assets/common/items/armor/misc/head/bandana/red.ron @@ -4,7 +4,7 @@ ItemDef( kind: Armor(( kind: Head("Red"), stats: ( - crit_power: Some(0.08), + crit_power: Some(0.008), stealth: Some(0.15), ), )), diff --git a/assets/common/items/armor/misc/head/bandana/thief.ron b/assets/common/items/armor/misc/head/bandana/thief.ron index 26703cf39c..7eedb47242 100644 --- a/assets/common/items/armor/misc/head/bandana/thief.ron +++ b/assets/common/items/armor/misc/head/bandana/thief.ron @@ -4,7 +4,7 @@ ItemDef( kind: Armor(( kind: Head("Thief"), stats: ( - crit_power: Some(0.07), + crit_power: Some(0.006), stealth: Some(0.18), ), )), diff --git a/assets/common/items/armor/misc/head/crown.ron b/assets/common/items/armor/misc/head/crown.ron index 71a7b951cf..999170c6fd 100644 --- a/assets/common/items/armor/misc/head/crown.ron +++ b/assets/common/items/armor/misc/head/crown.ron @@ -7,8 +7,7 @@ ItemDef( protection: Some(Normal(12.0)), poise_resilience: Some(Normal(2.0)), energy_max: Some(5.0), - energy_reward: Some(0.05), - crit_power: Some(0.01), + crit_power: Some(0.03), ), )), quality: Epic, diff --git a/assets/common/items/armor/misc/head/hog_hood.ron b/assets/common/items/armor/misc/head/hog_hood.ron index c58cbe52ac..d29853fb61 100644 --- a/assets/common/items/armor/misc/head/hog_hood.ron +++ b/assets/common/items/armor/misc/head/hog_hood.ron @@ -6,7 +6,7 @@ ItemDef( stats: ( protection: Some(Normal(5.0)), poise_resilience: Some(Normal(-1.0)), - crit_power: Some(0.007), + crit_power: Some(0.014), stealth: Some(0.35), ), )), diff --git a/assets/common/items/armor/misc/head/hood.ron b/assets/common/items/armor/misc/head/hood.ron index d29bdd1b28..aa2fb808ec 100644 --- a/assets/common/items/armor/misc/head/hood.ron +++ b/assets/common/items/armor/misc/head/hood.ron @@ -4,9 +4,8 @@ ItemDef( kind: Armor(( kind: Head("Hood"), stats: ( - protection: Some(Normal(6.0)), - poise_resilience: Some(Normal(1.0)), - crit_power: Some(0.01), + protection: Some(Normal(3.0)), + crit_power: Some(0.021), stealth: Some(0.22), ), )), diff --git a/assets/common/items/armor/misc/head/hood_dark.ron b/assets/common/items/armor/misc/head/hood_dark.ron index 7744594a32..cbc1d0f874 100644 --- a/assets/common/items/armor/misc/head/hood_dark.ron +++ b/assets/common/items/armor/misc/head/hood_dark.ron @@ -4,10 +4,9 @@ ItemDef( kind: Armor(( kind: Head("DarkHood"), stats: ( - protection: Some(Normal(7.0)), + protection: Some(Normal(6.0)), poise_resilience: Some(Normal(1.0)), - crit_power: Some(0.008), - stealth: Some(0.15), + stealth: Some(0.2), ), )), quality: Moderate, diff --git a/assets/common/items/armor/misc/head/mitre.ron b/assets/common/items/armor/misc/head/mitre.ron index ff05f03a7e..940c241149 100644 --- a/assets/common/items/armor/misc/head/mitre.ron +++ b/assets/common/items/armor/misc/head/mitre.ron @@ -4,10 +4,9 @@ ItemDef( kind: Armor(( kind: Head("Mitre"), stats: ( - protection: Some(Normal(4.0)), - energy_max: Some(8.0), - energy_reward: Some(0.1), - crit_power: Some(0.01), + poise_resilience: Some(Normal(1.5)), + energy_max: Some(7.0), + energy_reward: Some(0.06), ), )), quality: High, diff --git a/assets/common/items/armor/misc/head/spikeguard.ron b/assets/common/items/armor/misc/head/spikeguard.ron index 144749fc98..736729d542 100644 --- a/assets/common/items/armor/misc/head/spikeguard.ron +++ b/assets/common/items/armor/misc/head/spikeguard.ron @@ -6,7 +6,7 @@ ItemDef( stats: ( protection: Some(Normal(9.0)), poise_resilience: Some(Normal(3.0)), - crit_power: Some(0.01), + crit_power: Some(0.073), stealth: Some(-0.5), ), )), diff --git a/assets/common/items/armor/misc/head/straw.ron b/assets/common/items/armor/misc/head/straw.ron index 4f4fe04a36..6dc8760bf4 100644 --- a/assets/common/items/armor/misc/head/straw.ron +++ b/assets/common/items/armor/misc/head/straw.ron @@ -5,7 +5,7 @@ ItemDef( kind: Head("Straw"), stats: ( energy_max: Some(4.0), - energy_reward: Some(0.04), + energy_reward: Some(0.02), ), )), quality: Common, diff --git a/assets/common/items/armor/misc/head/wanderers_hat.ron b/assets/common/items/armor/misc/head/wanderers_hat.ron index 3f0469c7e4..3b1af5ffbf 100644 --- a/assets/common/items/armor/misc/head/wanderers_hat.ron +++ b/assets/common/items/armor/misc/head/wanderers_hat.ron @@ -4,12 +4,9 @@ ItemDef( kind: Armor(( kind: Head("WanderersHat"), stats: ( - protection: Some(Normal(3.0)), poise_resilience: Some(Normal(1.0)), - energy_max: Some(1.0), - energy_reward: Some(0.02), - crit_power: Some(0.01), - stealth: Some(0.05), + crit_power: Some(0.033), + stealth: Some(0.2), ), )), quality: High, diff --git a/assets/common/items/armor/misc/head/winged_coronet.ron b/assets/common/items/armor/misc/head/winged_coronet.ron index 5f0bd68a3b..648a756f7d 100644 --- a/assets/common/items/armor/misc/head/winged_coronet.ron +++ b/assets/common/items/armor/misc/head/winged_coronet.ron @@ -5,11 +5,10 @@ ItemDef( kind: Head("WingedCoronet"), stats: ( protection: Some(Normal(2.0)), - poise_resilience: Some(Normal(0.0)), - energy_max: Some(8.0), - energy_reward: Some(0.05), + energy_max: Some(4.0), + energy_reward: Some(0.037), crit_power: Some(0.015), - stealth: Some(0.5), + stealth: Some(0.18), ), )), quality: High, diff --git a/assets/common/items/armor/pirate/hat.ron b/assets/common/items/armor/pirate/hat.ron index b596baf456..cba6ec6d04 100644 --- a/assets/common/items/armor/pirate/hat.ron +++ b/assets/common/items/armor/pirate/hat.ron @@ -5,10 +5,8 @@ ItemDef( kind: Head("Pirate"), stats: ( protection: Some(Normal(4.0)), - poise_resilience: Some(Normal(1.0)), - energy_max: Some(1.0), - energy_reward: Some(0.015), - crit_power: Some(0.02), + energy_reward: Some(0.025), + crit_power: Some(0.1), ), )), quality: High, diff --git a/assets/common/items/armor/witch/hat.ron b/assets/common/items/armor/witch/hat.ron index 430301f26b..6d7032c5ba 100644 --- a/assets/common/items/armor/witch/hat.ron +++ b/assets/common/items/armor/witch/hat.ron @@ -4,11 +4,10 @@ ItemDef( kind: Armor(( kind: Head("Witch"), stats: ( - protection: Some(Normal(4.0)), - poise_resilience: Some(Normal(3.0)), - energy_max: Some(12.0), - energy_reward: Some(0.4), - crit_power: Some(0.01), + protection: Some(Normal(2.0)), + poise_resilience: Some(Normal(1.5)), + energy_max: Some(8.0), + energy_reward: Some(0.084), ), )), quality: Epic, diff --git a/assets/common/items/lantern/pumpkin.ron b/assets/common/items/lantern/pumpkin.ron index cd0fc4e1f2..8fdc8bd881 100644 --- a/assets/common/items/lantern/pumpkin.ron +++ b/assets/common/items/lantern/pumpkin.ron @@ -9,6 +9,6 @@ ItemDef( flicker_thousandths: 600, ), ), - quality: Legendary, + quality: High, tags: [Utility], ) diff --git a/assets/common/items/npc_armor/arthropod/generic.ron b/assets/common/items/npc_armor/arthropod/generic.ron index 1b1628492d..dc7cdba71b 100644 --- a/assets/common/items/npc_armor/arthropod/generic.ron +++ b/assets/common/items/npc_armor/arthropod/generic.ron @@ -4,7 +4,7 @@ ItemDef( kind: Armor(( kind: Chest("Arthropod"), stats: ( - protection: Some(Normal(100.0)), + protection: Some(Normal(60.0)), poise_resilience: Some(Normal(1.0)), ), )), diff --git a/assets/common/items/npc_armor/quadruped_low/shell.ron b/assets/common/items/npc_armor/quadruped_low/shell.ron index 1675c71dd4..2da9810784 100644 --- a/assets/common/items/npc_armor/quadruped_low/shell.ron +++ b/assets/common/items/npc_armor/quadruped_low/shell.ron @@ -4,7 +4,7 @@ ItemDef( kind: Armor(( kind: Chest("QuadrupedLowShell"), stats: ( - protection: Some(Normal(750.0)), + protection: Some(Normal(320.0)), poise_resilience: Some(Normal(0.0)), ), )), diff --git a/assets/common/items/npc_weapons/unique/arthropodleap.ron b/assets/common/items/npc_weapons/unique/arthropods/antlion.ron similarity index 80% rename from assets/common/items/npc_weapons/unique/arthropodleap.ron rename to assets/common/items/npc_weapons/unique/arthropods/antlion.ron index 243a455abd..64f3e1e551 100644 --- a/assets/common/items/npc_weapons/unique/arthropodleap.ron +++ b/assets/common/items/npc_weapons/unique/arthropods/antlion.ron @@ -1,5 +1,5 @@ ItemDef( - name: "Arthropod Leap", + name: "Antlion", description: "testing123", kind: Tool(( kind: Natural, @@ -15,7 +15,7 @@ ItemDef( buff_strength: 1.0, )), )), - quality: Low, + quality: Epic, tags: [], - ability_spec: Some(Custom("Arthropod Leap")), + ability_spec: Some(Custom("Antlion")), ) \ No newline at end of file diff --git a/assets/common/items/npc_weapons/unique/arthropodbasic.ron b/assets/common/items/npc_weapons/unique/arthropods/blackwidow.ron similarity index 79% rename from assets/common/items/npc_weapons/unique/arthropodbasic.ron rename to assets/common/items/npc_weapons/unique/arthropods/blackwidow.ron index d3626cbcbb..85a4e3e083 100644 --- a/assets/common/items/npc_weapons/unique/arthropodbasic.ron +++ b/assets/common/items/npc_weapons/unique/arthropods/blackwidow.ron @@ -1,5 +1,5 @@ ItemDef( - name: "Arthropod Basic", + name: "Black Widow", description: "testing123", kind: Tool(( kind: Natural, @@ -15,7 +15,7 @@ ItemDef( buff_strength: 1.0, )), )), - quality: Low, + quality: Epic, tags: [], - ability_spec: Some(Custom("Arthropod Basic")), + ability_spec: Some(Custom("Black Widow")), ) \ No newline at end of file diff --git a/assets/common/items/npc_weapons/unique/arthropods/cavespider.ron b/assets/common/items/npc_weapons/unique/arthropods/cavespider.ron new file mode 100644 index 0000000000..a8894000f3 --- /dev/null +++ b/assets/common/items/npc_weapons/unique/arthropods/cavespider.ron @@ -0,0 +1,21 @@ +ItemDef( + name: "Cave Spider", + description: "testing123", + kind: Tool(( + kind: Natural, + hands: Two, + stats: Direct(( + equip_time_secs: 0.01, + power: 0.6, + effect_power: 1.0, + speed: 0.6, + crit_chance: 0.1, + range: 0.8, + energy_efficiency: 1.0, + buff_strength: 0.9, + )), + )), + quality: Moderate, + tags: [], + ability_spec: Some(Custom("Black Widow")), +) \ No newline at end of file diff --git a/assets/common/items/npc_weapons/unique/arthropodcharge.ron b/assets/common/items/npc_weapons/unique/arthropods/hornbeetle.ron similarity index 79% rename from assets/common/items/npc_weapons/unique/arthropodcharge.ron rename to assets/common/items/npc_weapons/unique/arthropods/hornbeetle.ron index fdea93f1df..3bb53f481d 100644 --- a/assets/common/items/npc_weapons/unique/arthropodcharge.ron +++ b/assets/common/items/npc_weapons/unique/arthropods/hornbeetle.ron @@ -1,5 +1,5 @@ ItemDef( - name: "Arthropod Charge", + name: "Horn Beetle", description: "testing123", kind: Tool(( kind: Natural, @@ -15,7 +15,7 @@ ItemDef( buff_strength: 1.0, )), )), - quality: Low, + quality: High, tags: [], - ability_spec: Some(Custom("Arthropod Charge")), + ability_spec: Some(Custom("Horn Beetle")), ) \ No newline at end of file diff --git a/assets/common/items/npc_weapons/unique/arthropods/leafbeetle.ron b/assets/common/items/npc_weapons/unique/arthropods/leafbeetle.ron new file mode 100644 index 0000000000..29c660c11d --- /dev/null +++ b/assets/common/items/npc_weapons/unique/arthropods/leafbeetle.ron @@ -0,0 +1,21 @@ +ItemDef( + name: "Leaf Beetle", + description: "testing123", + kind: Tool(( + kind: Natural, + hands: Two, + stats: Direct(( + equip_time_secs: 0.01, + power: 0.86, + effect_power: 1.0, + speed: 0.86, + crit_chance: 0.1, + range: 1.0, + energy_efficiency: 1.0, + buff_strength: 0.875, + )), + )), + quality: High, + tags: [], + ability_spec: Some(Custom("Antlion")), +) \ No newline at end of file diff --git a/assets/common/items/npc_weapons/unique/arthropods/mosscrawler.ron b/assets/common/items/npc_weapons/unique/arthropods/mosscrawler.ron new file mode 100644 index 0000000000..a939e07c56 --- /dev/null +++ b/assets/common/items/npc_weapons/unique/arthropods/mosscrawler.ron @@ -0,0 +1,21 @@ +ItemDef( + name: "Moss Crawler", + description: "testing123", + kind: Tool(( + kind: Natural, + hands: Two, + stats: Direct(( + equip_time_secs: 0.01, + power: 0.72, + effect_power: 1.0, + speed: 0.72, + crit_chance: 0.1, + range: 0.8, + energy_efficiency: 1.0, + buff_strength: 0.6, + )), + )), + quality: Moderate, + tags: [], + ability_spec: Some(Custom("Weevil")), +) \ No newline at end of file diff --git a/assets/common/items/npc_weapons/unique/arthropodranged.ron b/assets/common/items/npc_weapons/unique/arthropods/tarantula.ron similarity index 79% rename from assets/common/items/npc_weapons/unique/arthropodranged.ron rename to assets/common/items/npc_weapons/unique/arthropods/tarantula.ron index 00e6cee476..48033f2ae2 100644 --- a/assets/common/items/npc_weapons/unique/arthropodranged.ron +++ b/assets/common/items/npc_weapons/unique/arthropods/tarantula.ron @@ -1,5 +1,5 @@ ItemDef( - name: "Arthropod Ranged", + name: "Tarantula", description: "testing123", kind: Tool(( kind: Natural, @@ -15,7 +15,7 @@ ItemDef( buff_strength: 1.0, )), )), - quality: Low, + quality: Epic, tags: [], - ability_spec: Some(Custom("Arthropod Ranged")), + ability_spec: Some(Custom("Tarantula")), ) \ No newline at end of file diff --git a/assets/common/items/npc_weapons/unique/arthropods/weevil.ron b/assets/common/items/npc_weapons/unique/arthropods/weevil.ron new file mode 100644 index 0000000000..09c167793d --- /dev/null +++ b/assets/common/items/npc_weapons/unique/arthropods/weevil.ron @@ -0,0 +1,21 @@ +ItemDef( + name: "Weevil", + description: "testing123", + kind: Tool(( + kind: Natural, + hands: Two, + stats: Direct(( + equip_time_secs: 0.01, + power: 1.0, + effect_power: 1.0, + speed: 1.0, + crit_chance: 0.1, + range: 1.0, + energy_efficiency: 1.0, + buff_strength: 1.0, + )), + )), + quality: High, + tags: [], + ability_spec: Some(Custom("Weevil")), +) \ No newline at end of file diff --git a/assets/common/loot_tables/creature/arthropod/antlion.ron b/assets/common/loot_tables/creature/arthropod/antlion.ron new file mode 100644 index 0000000000..6e8e468303 --- /dev/null +++ b/assets/common/loot_tables/creature/arthropod/antlion.ron @@ -0,0 +1,3 @@ +[ + (1.0, ItemQuantity("common.items.crafting_ing.hide.carapace", 2, 5)), +] \ No newline at end of file diff --git a/assets/common/loot_tables/creature/arthropod/tarantula.ron b/assets/common/loot_tables/creature/arthropod/tarantula.ron new file mode 100644 index 0000000000..bd6266a762 --- /dev/null +++ b/assets/common/loot_tables/creature/arthropod/tarantula.ron @@ -0,0 +1,3 @@ +[ + (1.0, ItemQuantity("common.items.crafting_ing.sticky_thread", 2, 5)), +] \ No newline at end of file diff --git a/assets/common/loot_tables/creature/quad_medium/ice.ron b/assets/common/loot_tables/creature/quad_medium/ice.ron index 8b7d65f8e0..c9caf8ca82 100644 --- a/assets/common/loot_tables/creature/quad_medium/ice.ron +++ b/assets/common/loot_tables/creature/quad_medium/ice.ron @@ -1,4 +1,4 @@ [ - (1.0, Item("common.items.crafting_ing.hide.rugged_hide")), - (1.0, Item("common.items.crafting_ing.animal_misc.icy_fang")), + (1.0, Item("common.items.crafting_ing.hide.animal_hide")), + (1.0, ItemQuantity("common.items.crafting_ing.animal_misc.icy_fang", 1, 2)), ] \ No newline at end of file diff --git a/assets/common/loot_tables/creature/quad_medium/roshwalr.ron b/assets/common/loot_tables/creature/quad_medium/roshwalr.ron new file mode 100644 index 0000000000..3486854af2 --- /dev/null +++ b/assets/common/loot_tables/creature/quad_medium/roshwalr.ron @@ -0,0 +1,4 @@ +[ + (1.0, Item("common.items.crafting_ing.hide.rugged_hide")), + (1.0, ItemQuantity("common.items.crafting_ing.animal_misc.icy_fang", 1, 2)), +] \ No newline at end of file diff --git a/assets/common/loot_tables/dungeon/tier-0/boss.ron b/assets/common/loot_tables/dungeon/tier-0/chieftain.ron similarity index 100% rename from assets/common/loot_tables/dungeon/tier-0/boss.ron rename to assets/common/loot_tables/dungeon/tier-0/chieftain.ron diff --git a/assets/common/loot_tables/dungeon/tier-0/harvester.ron b/assets/common/loot_tables/dungeon/tier-0/harvester.ron new file mode 100644 index 0000000000..f1821deb5c --- /dev/null +++ b/assets/common/loot_tables/dungeon/tier-0/harvester.ron @@ -0,0 +1,9 @@ +[ + // Weapons + (5.0, LootTable("common.loot_tables.weapons.tier-3")), + // Armor + (5.0, LootTable("common.loot_tables.armor.tier-3")), + // Misc + (3.0, Item("common.items.armor.misc.neck.scratched")), + (2.0, Item("common.items.lantern.pumpkin")), +] \ No newline at end of file diff --git a/assets/common/loot_tables/dungeon/tier-1/enemy.ron b/assets/common/loot_tables/dungeon/tier-1/enemy.ron index 3ea015efbf..7bda0c6cf5 100644 --- a/assets/common/loot_tables/dungeon/tier-1/enemy.ron +++ b/assets/common/loot_tables/dungeon/tier-1/enemy.ron @@ -6,5 +6,5 @@ // Nothing (2.0, Nothing), // Placeholder Drop Location - (1.0, Item("common.items.crafting_ing.sticky_thread")), + (1.0, Item("common.items.crafting_ing.leather.simple_leather")), ] diff --git a/assets/common/npc_names.ron b/assets/common/npc_names.ron index c8a4323465..249e546dd1 100644 --- a/assets/common/npc_names.ron +++ b/assets/common/npc_names.ron @@ -1233,7 +1233,7 @@ ), black_widow: ( keyword: "black_widow", - generic: "Blackwidow" + generic: "Black Widow" ), antlion: ( keyword: "antlion", diff --git a/assets/voxygen/shaders/particle-vert.glsl b/assets/voxygen/shaders/particle-vert.glsl index a84160a9b3..a850ca4294 100644 --- a/assets/voxygen/shaders/particle-vert.glsl +++ b/assets/voxygen/shaders/particle-vert.glsl @@ -74,6 +74,7 @@ const int DRIP = 32; const int TORNADO = 33; const int DEATH = 34; const int ENERGY_BUFFING = 35; +const int WEB_STRAND = 36; // meters per second squared (acceleration) const float earth_gravity = 9.807; @@ -579,6 +580,16 @@ void main() { spin_in_axis(vec3(rand6, rand7, rand8), rand9 * 3) ); break; + case WEB_STRAND: + f_reflect = 0.0; + perp_axis = normalize(cross(inst_dir, vec3(0.0, 0.0, 1.0))); + attr = Attr( + inst_dir * percent(), + vec3(1.0, 1.0, 50.0), + vec4(vec3(2.0), 1), + spin_in_axis(perp_axis, asin(inst_dir.z / length(inst_dir)) + PI / 2.0) + ); + break; default: attr = Attr( linear_motion( diff --git a/assets/world/wildlife/spawn/temperate/rainforest.ron b/assets/world/wildlife/spawn/temperate/rainforest.ron index 78d5790834..9f29254041 100644 --- a/assets/world/wildlife/spawn/temperate/rainforest.ron +++ b/assets/world/wildlife/spawn/temperate/rainforest.ron @@ -31,6 +31,7 @@ SpawnEntry ( (2, (1, 1, "common.entity.wild.peaceful.hirdrasil")), (2, (1, 1, "common.entity.wild.peaceful.truffler")), (2, (1, 1, "common.entity.wild.peaceful.leaf_beetle")), + (2, (1, 1, "common.entity.wild.aggressive.weevil")), ], is_underwater: false, day_period: [Morning, Noon, Evening], diff --git a/assets/world/wildlife/spawn/temperate/wood.ron b/assets/world/wildlife/spawn/temperate/wood.ron index e518574165..2ae2419103 100644 --- a/assets/world/wildlife/spawn/temperate/wood.ron +++ b/assets/world/wildlife/spawn/temperate/wood.ron @@ -10,6 +10,7 @@ SpawnEntry ( (1, (1, 1, "common.entity.wild.aggressive.deadwood")), (1, (1, 1, "common.entity.wild.aggressive.saber")), (1, (1, 1, "common.entity.wild.aggressive.weevil")), + (1, (1, 1, "common.entity.wild.peaceful.leaf_beetle")), ], is_underwater: false, day_period: [Night, Morning, Noon, Evening], diff --git a/assets/world/wildlife/spawn/tundra/snow.ron b/assets/world/wildlife/spawn/tundra/snow.ron index a19ca64284..cfeb9a8987 100644 --- a/assets/world/wildlife/spawn/tundra/snow.ron +++ b/assets/world/wildlife/spawn/tundra/snow.ron @@ -9,7 +9,7 @@ SpawnEntry ( (1, (1, 1, "common.entity.wild.aggressive.icedrake")), (1, (1, 3, "common.entity.wild.aggressive.snow_raptor")), (1, (1, 3, "common.entity.wild.aggressive.roshwalr")), - (5, (1, 5, "common.entity.wild.peaceful.penguin")), + (5, (5, 20, "common.entity.wild.peaceful.penguin")), ], is_underwater: false, day_period: [Night, Morning, Noon, Evening], diff --git a/common/src/comp/beam.rs b/common/src/comp/beam.rs index 3788cacf98..815e2685ea 100644 --- a/common/src/comp/beam.rs +++ b/common/src/comp/beam.rs @@ -54,4 +54,5 @@ pub enum FrontendSpecifier { ClayGolem, Bubbles, Frost, + WebStrand, } diff --git a/common/src/comp/body.rs b/common/src/comp/body.rs index 2fd9d4898c..184652993a 100644 --- a/common/src/comp/body.rs +++ b/common/src/comp/body.rs @@ -687,7 +687,7 @@ impl Body { biped_large::Species::Tidalwarrior => 1600, biped_large::Species::Yeti => 1200, biped_large::Species::Minotaur => 3000, - biped_large::Species::Harvester => 500, + biped_large::Species::Harvester => 1500, biped_large::Species::Blueoni => 240, biped_large::Species::Redoni => 240, biped_large::Species::Huskbrute => 800, diff --git a/common/src/comp/inventory/loadout_builder.rs b/common/src/comp/inventory/loadout_builder.rs index e25b62fa2f..9fc4554170 100644 --- a/common/src/comp/inventory/loadout_builder.rs +++ b/common/src/comp/inventory/loadout_builder.rs @@ -596,19 +596,33 @@ fn default_main_tool(body: &Body) -> Item { )), }, Body::Arthropod(arthropod) => match arthropod.species { - arthropod::Species::Hornbeetle - | arthropod::Species::Stagbeetle - | arthropod::Species::Antlion => Some(Item::new_from_asset_expect( - "common.items.npc_weapons.unique.arthropodcharge", + arthropod::Species::Hornbeetle | arthropod::Species::Stagbeetle => { + Some(Item::new_from_asset_expect( + "common.items.npc_weapons.unique.arthropods.hornbeetle", + )) + }, + arthropod::Species::Cavespider => Some(Item::new_from_asset_expect( + "common.items.npc_weapons.unique.arthropods.cavespider", )), - arthropod::Species::Cavespider | arthropod::Species::Blackwidow => Some( - Item::new_from_asset_expect("common.items.npc_weapons.unique.arthropodranged"), - ), - arthropod::Species::Weevil | arthropod::Species::Tarantula => Some( - Item::new_from_asset_expect("common.items.npc_weapons.unique.arthropodleap"), + arthropod::Species::Sandcrawler | arthropod::Species::Mosscrawler => { + Some(Item::new_from_asset_expect( + "common.items.npc_weapons.unique.arthropods.mosscrawler", + )) + }, + arthropod::Species::Moltencrawler | arthropod::Species::Weevil => Some( + Item::new_from_asset_expect("common.items.npc_weapons.unique.arthropods.weevil"), ), + arthropod::Species::Blackwidow => Some(Item::new_from_asset_expect( + "common.items.npc_weapons.unique.arthropods.blackwidow", + )), + arthropod::Species::Tarantula => Some(Item::new_from_asset_expect( + "common.items.npc_weapons.unique.arthropods.tarantula", + )), + arthropod::Species::Antlion => Some(Item::new_from_asset_expect( + "common.items.npc_weapons.unique.arthropods.antlion", + )), _ => Some(Item::new_from_asset_expect( - "common.items.npc_weapons.unique.arthropodbasic", + "common.items.npc_weapons.unique.arthropods.leafbeetle", )), }, Body::BipedLarge(biped_large) => match (biped_large.species, biped_large.body_type) { diff --git a/common/src/comp/projectile.rs b/common/src/comp/projectile.rs index ec43e0aaa1..1d8354e18c 100644 --- a/common/src/comp/projectile.rs +++ b/common/src/comp/projectile.rs @@ -238,7 +238,7 @@ impl ProjectileConstructor { CombatEffect::Buff(CombatBuff { kind: BuffKind::Poisoned, dur_secs: 5.0, - strength: CombatBuffStrength::DamageFraction(0.2 * buff_strength), + strength: CombatBuffStrength::DamageFraction(0.8 * buff_strength), chance: 1.0, }), ) diff --git a/server/src/sys/agent.rs b/server/src/sys/agent.rs index 152b64a4d4..d5da74ddad 100644 --- a/server/src/sys/agent.rs +++ b/server/src/sys/agent.rs @@ -1805,10 +1805,10 @@ impl<'a> AgentData<'a> { "Quad Low Quick" => Tactic::QuadLowQuick, "Quad Low Basic" => Tactic::QuadLowBasic, "Theropod Basic" | "Theropod Bird" => Tactic::Theropod, - "Arthropod Basic" => Tactic::ArthropodBasic, - "Arthropod Charge" => Tactic::ArthropodCharge, - "Arthropod Ranged" => Tactic::ArthropodRanged, - "Arthropod Leap" => Tactic::ArthropodLeap, + // Arthropods + "Antlion" => Tactic::ArthropodMelee, + "Tarantula" | "Horn Beetle" => Tactic::ArthropodAmbush, + "Weevil" | "Black Widow" => Tactic::ArthropodRanged, "Theropod Charge" => Tactic::CircleCharge { radius: 6, circle_time: 1, @@ -2102,21 +2102,14 @@ impl<'a> AgentData<'a> { Tactic::Theropod => { self.handle_theropod_attack(agent, controller, &attack_data, tgt_data, read_data) }, - Tactic::ArthropodBasic => self.handle_arthropod_basic_attack( + Tactic::ArthropodMelee => self.handle_arthropod_melee_attack( agent, controller, &attack_data, tgt_data, read_data, ), - Tactic::ArthropodCharge => self.handle_arthropod_charge_attack( - agent, - controller, - &attack_data, - tgt_data, - read_data, - ), - Tactic::ArthropodLeap => self.handle_arthropod_leap_attack( + Tactic::ArthropodAmbush => self.handle_arthropod_ambush_attack( agent, controller, &attack_data, diff --git a/server/src/sys/agent/attack.rs b/server/src/sys/agent/attack.rs index d0e86876e7..7e6ab6b142 100644 --- a/server/src/sys/agent/attack.rs +++ b/server/src/sys/agent/attack.rs @@ -10,7 +10,7 @@ use common::{ InputKind, }, path::TraversalConfig, - states::utils::StageSection, + states::{self_buff, sprite_summon, utils::StageSection}, terrain::Block, util::Dir, vol::ReadVol, @@ -1861,42 +1861,6 @@ impl<'a> AgentData<'a> { ); } - pub fn handle_arthropod_basic_attack( - &self, - agent: &mut Agent, - controller: &mut Controller, - attack_data: &AttackData, - tgt_data: &TargetData, - read_data: &ReadData, - ) { - agent.action_state.timer += read_data.dt.0; - if agent.action_state.timer > 7.0 - && attack_data.dist_sqrd < (2.0 * attack_data.min_attack_dist).powi(2) - { - controller.inputs.move_dir = Vec2::zero(); - controller.push_basic_input(InputKind::Secondary); - // Reset timer - if matches!(self.char_state, CharacterState::SpriteSummon(c) if matches!(c.stage_section, StageSection::Recover)) - { - agent.action_state.timer = 0.0; - } - } else if attack_data.angle < 90.0 - && attack_data.dist_sqrd < (1.5 * attack_data.min_attack_dist).powi(2) - { - controller.inputs.move_dir = Vec2::zero(); - controller.push_basic_input(InputKind::Primary); - } else { - self.path_toward_target( - agent, - controller, - tgt_data.pos.0, - read_data, - Path::Partial, - None, - ); - } - } - pub fn handle_arthropod_ranged_attack( &self, agent: &mut Agent, @@ -1907,16 +1871,19 @@ impl<'a> AgentData<'a> { ) { agent.action_state.timer += read_data.dt.0; if agent.action_state.timer > 6.0 - && attack_data.dist_sqrd < (2.0 * attack_data.min_attack_dist).powi(2) + && attack_data.dist_sqrd < (1.5 * attack_data.min_attack_dist).powi(2) { controller.inputs.move_dir = Vec2::zero(); controller.push_basic_input(InputKind::Secondary); // Reset timer - if matches!(self.char_state, CharacterState::SpriteSummon(c) if matches!(c.stage_section, StageSection::Recover)) + if matches!(self.char_state, + CharacterState::SpriteSummon(sprite_summon::Data { stage_section, .. }) + | CharacterState::SelfBuff(self_buff::Data { stage_section, .. }) + if matches!(stage_section, StageSection::Recover)) { agent.action_state.timer = 0.0; } - } else if attack_data.dist_sqrd < (3.0 * attack_data.min_attack_dist).powi(2) + } else if attack_data.dist_sqrd < (2.5 * attack_data.min_attack_dist).powi(2) && attack_data.angle < 90.0 { controller.inputs.move_dir = (tgt_data.pos.0 - self.pos.0) @@ -1986,7 +1953,7 @@ impl<'a> AgentData<'a> { } } - pub fn handle_arthropod_leap_attack( + pub fn handle_arthropod_ambush_attack( &self, agent: &mut Agent, controller: &mut Controller, @@ -2002,18 +1969,21 @@ impl<'a> AgentData<'a> { controller.inputs.move_dir = Vec2::zero(); controller.push_basic_input(InputKind::Secondary); // Reset timer - if matches!(self.char_state, CharacterState::SpriteSummon(c) if matches!(c.stage_section, StageSection::Recover)) + if matches!(self.char_state, + CharacterState::SpriteSummon(sprite_summon::Data { stage_section, .. }) + | CharacterState::SelfBuff(self_buff::Data { stage_section, .. }) + if matches!(stage_section, StageSection::Recover)) { agent.action_state.timer = 0.0; } } else if attack_data.angle < 90.0 - && attack_data.dist_sqrd < (1.5 * attack_data.min_attack_dist).powi(2) + && attack_data.dist_sqrd < attack_data.min_attack_dist.powi(2) { controller.inputs.move_dir = Vec2::zero(); controller.push_basic_input(InputKind::Primary); } else if rng.gen_bool(0.01) - && attack_data.angle < 15.0 - && attack_data.dist_sqrd < (6.0 * attack_data.min_attack_dist).powi(2) + && attack_data.angle < 60.0 + && attack_data.dist_sqrd > (2.0 * attack_data.min_attack_dist).powi(2) { controller.push_basic_input(InputKind::Ability(0)); } else { @@ -2028,7 +1998,7 @@ impl<'a> AgentData<'a> { } } - pub fn handle_arthropod_charge_attack( + pub fn handle_arthropod_melee_attack( &self, agent: &mut Agent, controller: &mut Controller, @@ -2041,13 +2011,13 @@ impl<'a> AgentData<'a> { { // If already charging, keep charging if not in recover controller.push_basic_input(InputKind::Secondary); - } else if attack_data.dist_sqrd > (5.0 * attack_data.min_attack_dist).powi(2) { + } else if attack_data.dist_sqrd > (2.5 * attack_data.min_attack_dist).powi(2) { // Charges at target if they are far enough away if attack_data.angle < 60.0 { controller.push_basic_input(InputKind::Secondary); } } else if attack_data.angle < 90.0 - && attack_data.dist_sqrd < (1.5 * attack_data.min_attack_dist).powi(2) + && attack_data.dist_sqrd < attack_data.min_attack_dist.powi(2) { controller.inputs.move_dir = Vec2::zero(); controller.push_basic_input(InputKind::Primary); diff --git a/server/src/sys/agent/data.rs b/server/src/sys/agent/data.rs index 68cd90d083..67a68fd7b5 100644 --- a/server/src/sys/agent/data.rs +++ b/server/src/sys/agent/data.rs @@ -101,10 +101,9 @@ pub enum Tactic { BirdLargeBreathe, BirdLargeFire, BirdLargeBasic, - ArthropodCharge, - ArthropodBasic, + ArthropodMelee, ArthropodRanged, - ArthropodLeap, + ArthropodAmbush, // Specific species tactics Mindflayer, diff --git a/voxygen/src/audio/sfx/mod.rs b/voxygen/src/audio/sfx/mod.rs index 983c6cb6c0..ef83982b9c 100644 --- a/voxygen/src/audio/sfx/mod.rs +++ b/voxygen/src/audio/sfx/mod.rs @@ -503,7 +503,8 @@ impl SfxMgr { }, beam::FrontendSpecifier::ClayGolem | beam::FrontendSpecifier::Bubbles - | beam::FrontendSpecifier::Frost => {}, + | beam::FrontendSpecifier::Frost + | beam::FrontendSpecifier::WebStrand => {}, }, Outcome::BreakBlock { pos, .. } => { let sfx_trigger_item = triggers.get_key_value(&SfxEvent::BreakBlock); diff --git a/voxygen/src/render/pipelines/particle.rs b/voxygen/src/render/pipelines/particle.rs index 05128b8834..c32a3e2503 100644 --- a/voxygen/src/render/pipelines/particle.rs +++ b/voxygen/src/render/pipelines/particle.rs @@ -86,6 +86,7 @@ pub enum ParticleMode { Tornado = 33, Death = 34, EnergyBuffing = 35, + WebStrand = 36, } impl ParticleMode { diff --git a/voxygen/src/scene/particle.rs b/voxygen/src/scene/particle.rs index c9123fdfa7..f6c4e8068a 100644 --- a/voxygen/src/scene/particle.rs +++ b/voxygen/src/scene/particle.rs @@ -842,6 +842,17 @@ impl ParticleMgr { ) }) }, + beam::FrontendSpecifier::WebStrand => { + self.particles.resize_with(self.particles.len() + 1, || { + Particle::new_directed( + beam.properties.duration, + time, + ParticleMode::WebStrand, + pos.0, + pos.0 + *ori.look_dir() * range, + ) + }) + }, beam::FrontendSpecifier::Bubbles => { let mut rng = thread_rng(); let (from, to) = (Vec3::::unit_z(), *ori.look_dir()); diff --git a/world/src/layer/mod.rs b/world/src/layer/mod.rs index e24c14b8aa..66b1528b8a 100644 --- a/world/src/layer/mod.rs +++ b/world/src/layer/mod.rs @@ -468,11 +468,10 @@ pub fn apply_caves_supplement<'a>( _ => "common.entity.wild.aggressive.batfox", } } else if cave_depth < 120.0 { - match dynamic_rng.gen_range(0..6) { + match dynamic_rng.gen_range(0..5) { 0 => "common.entity.wild.aggressive.rocksnapper", 1 => "common.entity.wild.aggressive.cave_salamander", 2 => "common.entity.wild.aggressive.cave_spider", - 3 => "common.entity.wild.aggressive.antlion", 4 => "common.entity.wild.peaceful.crawler_molten", _ => "common.entity.wild.aggressive.asp", }