From f6d7ba33efd7fa7e135121737f0174f7d8b47398 Mon Sep 17 00:00:00 2001 From: Snowram Date: Wed, 10 Nov 2021 22:41:44 +0100 Subject: [PATCH] Arthropods spawns and loots --- .../custom/arthropodranged/poisonball.ron | 5 +-- .../custom/wendigomagic/frostbomb.ron | 2 +- .../common/entity/wild/aggressive/antlion.ron | 11 +++++++ .../entity/wild/aggressive/black_widow.ron | 11 +++++++ .../entity/wild/aggressive/horn_beetle.ron | 11 +++++++ .../entity/wild/aggressive/stag_beetle.ron | 11 +++++++ .../entity/wild/aggressive/tarantula.ron | 11 +++++++ .../entity/wild/peaceful/leaf_beetle.ron | 11 +++++++ .../items/npc_armor/arthropod/generic.ron | 8 ++--- .../creature/arthropod/carapace.ron | 3 ++ .../loot_tables/creature/arthropod/leaf.ron | 4 +++ .../{arthropod.ron => arthropod/web.ron} | 0 assets/voxygen/voxel/object_manifest.ron | 20 ++++++++++++ .../voxel/weapon/projectile/icicle-bolt.vox | 3 ++ .../voxel/weapon/projectile/poison-spit.vox | 3 ++ .../world/wildlife/spawn/desert/wasteland.ron | 3 +- .../wildlife/spawn/taiga/core_forest.ron | 1 + .../wildlife/spawn/temperate/rainforest.ron | 1 + common/src/comp/body.rs | 2 +- common/src/comp/body/object.rs | 6 +++- common/src/comp/projectile.rs | 6 ++-- voxygen/anim/src/arthropod/leapmelee.rs | 31 +++++++++++++++++-- voxygen/anim/src/arthropod/shoot.rs | 9 +----- voxygen/anim/src/arthropod/stunned.rs | 12 +++++-- world/src/layer/mod.rs | 5 ++- 25 files changed, 160 insertions(+), 30 deletions(-) create mode 100644 assets/common/entity/wild/aggressive/antlion.ron create mode 100644 assets/common/entity/wild/aggressive/black_widow.ron create mode 100644 assets/common/entity/wild/aggressive/horn_beetle.ron create mode 100644 assets/common/entity/wild/aggressive/stag_beetle.ron create mode 100644 assets/common/entity/wild/aggressive/tarantula.ron create mode 100644 assets/common/entity/wild/peaceful/leaf_beetle.ron create mode 100644 assets/common/loot_tables/creature/arthropod/carapace.ron create mode 100644 assets/common/loot_tables/creature/arthropod/leaf.ron rename assets/common/loot_tables/creature/{arthropod.ron => arthropod/web.ron} (100%) create mode 100644 assets/voxygen/voxel/weapon/projectile/icicle-bolt.vox create mode 100644 assets/voxygen/voxel/weapon/projectile/poison-spit.vox diff --git a/assets/common/abilities/custom/arthropodranged/poisonball.ron b/assets/common/abilities/custom/arthropodranged/poisonball.ron index 232265080f..d68d27a440 100644 --- a/assets/common/abilities/custom/arthropodranged/poisonball.ron +++ b/assets/common/abilities/custom/arthropodranged/poisonball.ron @@ -2,12 +2,13 @@ BasicRanged( energy_cost: 0, buildup_duration: 0.8, recover_duration: 0.35, - projectile: PoisonBall( + projectile: Poisonball( damage: 26.0, radius: 5.0, energy_regen: 0, + min_falloff: 0.5, ), - projectile_body: Object(FireworkPurple), + projectile_body: Object(SpitPoison), /*projectile_light: Some(LightEmitter { col: (1.0, 0.75, 0.11).into(), ..Default::default() diff --git a/assets/common/abilities/custom/wendigomagic/frostbomb.ron b/assets/common/abilities/custom/wendigomagic/frostbomb.ron index 55e0e0f542..37f8295f9f 100644 --- a/assets/common/abilities/custom/wendigomagic/frostbomb.ron +++ b/assets/common/abilities/custom/wendigomagic/frostbomb.ron @@ -7,7 +7,7 @@ BasicRanged( radius: 5.0, min_falloff: 0.5, ), - projectile_body: Object(BoltFire), // TODO: Get ice projectile model + projectile_body: Object(BoltIcicle), /*projectile_light: Some(LightEmitter { col: (1.0, 0.75, 0.11).into(), ..Default::default() diff --git a/assets/common/entity/wild/aggressive/antlion.ron b/assets/common/entity/wild/aggressive/antlion.ron new file mode 100644 index 0000000000..92f86315e2 --- /dev/null +++ b/assets/common/entity/wild/aggressive/antlion.ron @@ -0,0 +1,11 @@ +EntityConfig ( + name: Automatic, + body: RandomWith("antlion"), + alignment: Alignment(Enemy), + + loot: LootTable("common.loot_tables.creature.arthropod.web"), + + hands: Uninit, + + meta: [], +) diff --git a/assets/common/entity/wild/aggressive/black_widow.ron b/assets/common/entity/wild/aggressive/black_widow.ron new file mode 100644 index 0000000000..87f0b7fb10 --- /dev/null +++ b/assets/common/entity/wild/aggressive/black_widow.ron @@ -0,0 +1,11 @@ +EntityConfig ( + name: Automatic, + body: RandomWith("black_window"), + alignment: Alignment(Enemy), + + loot: LootTable("common.loot_tables.creature.arthropod.web"), + + hands: Uninit, + + meta: [], +) diff --git a/assets/common/entity/wild/aggressive/horn_beetle.ron b/assets/common/entity/wild/aggressive/horn_beetle.ron new file mode 100644 index 0000000000..4c17803994 --- /dev/null +++ b/assets/common/entity/wild/aggressive/horn_beetle.ron @@ -0,0 +1,11 @@ +EntityConfig ( + name: Automatic, + body: RandomWith("horn_beetle"), + alignment: Alignment(Enemy), + + loot: LootTable("common.loot_tables.creature.arthropod.carapace"), + + hands: Uninit, + + meta: [], +) diff --git a/assets/common/entity/wild/aggressive/stag_beetle.ron b/assets/common/entity/wild/aggressive/stag_beetle.ron new file mode 100644 index 0000000000..9db9753cac --- /dev/null +++ b/assets/common/entity/wild/aggressive/stag_beetle.ron @@ -0,0 +1,11 @@ +EntityConfig ( + name: Automatic, + body: RandomWith("stag_beetle"), + alignment: Alignment(Enemy), + + loot: LootTable("common.loot_tables.creature.arthropod.carapace"), + + hands: Uninit, + + meta: [], +) diff --git a/assets/common/entity/wild/aggressive/tarantula.ron b/assets/common/entity/wild/aggressive/tarantula.ron new file mode 100644 index 0000000000..61675f6f9e --- /dev/null +++ b/assets/common/entity/wild/aggressive/tarantula.ron @@ -0,0 +1,11 @@ +EntityConfig ( + name: Automatic, + body: RandomWith("tarantula"), + alignment: Alignment(Enemy), + + loot: LootTable("common.loot_tables.creature.arthropod.web"), + + hands: Uninit, + + meta: [], +) diff --git a/assets/common/entity/wild/peaceful/leaf_beetle.ron b/assets/common/entity/wild/peaceful/leaf_beetle.ron new file mode 100644 index 0000000000..ec0f28c6c4 --- /dev/null +++ b/assets/common/entity/wild/peaceful/leaf_beetle.ron @@ -0,0 +1,11 @@ +EntityConfig ( + name: Automatic, + body: RandomWith("leaf_beetle"), + alignment: Alignment(Wild), + + loot: LootTable("common.loot_tables.creature.arthropod.leaf"), + + hands: Uninit, + + meta: [], +) diff --git a/assets/common/items/npc_armor/arthropod/generic.ron b/assets/common/items/npc_armor/arthropod/generic.ron index 7c863f8456..1b1628492d 100644 --- a/assets/common/items/npc_armor/arthropod/generic.ron +++ b/assets/common/items/npc_armor/arthropod/generic.ron @@ -4,12 +4,8 @@ ItemDef( kind: Armor(( kind: Chest("Arthropod"), stats: ( - protection: Normal(100.0), - poise_resilience: Normal(1.0), - energy_max: 0, - energy_reward: 0.0, - crit_power: 0.0, - stealth: 0.0, + protection: Some(Normal(100.0)), + poise_resilience: Some(Normal(1.0)), ), )), quality: Legendary, diff --git a/assets/common/loot_tables/creature/arthropod/carapace.ron b/assets/common/loot_tables/creature/arthropod/carapace.ron new file mode 100644 index 0000000000..e926817db9 --- /dev/null +++ b/assets/common/loot_tables/creature/arthropod/carapace.ron @@ -0,0 +1,3 @@ +[ + (1.0, ItemQuantity("common.items.crafting_ing.hide.carapace", 1, 3)), +] \ No newline at end of file diff --git a/assets/common/loot_tables/creature/arthropod/leaf.ron b/assets/common/loot_tables/creature/arthropod/leaf.ron new file mode 100644 index 0000000000..922341c091 --- /dev/null +++ b/assets/common/loot_tables/creature/arthropod/leaf.ron @@ -0,0 +1,4 @@ +[ + (1.0, ItemQuantity("common.items.crafting_ing.twigs", 1, 3)), + (1.0, ItemQuantity("common.items.flowers.plant_fiber", 1, 3)), +] \ No newline at end of file diff --git a/assets/common/loot_tables/creature/arthropod.ron b/assets/common/loot_tables/creature/arthropod/web.ron similarity index 100% rename from assets/common/loot_tables/creature/arthropod.ron rename to assets/common/loot_tables/creature/arthropod/web.ron diff --git a/assets/voxygen/voxel/object_manifest.ron b/assets/voxygen/voxel/object_manifest.ron index 9bb9166282..1eed2f2f8e 100644 --- a/assets/voxygen/voxel/object_manifest.ron +++ b/assets/voxygen/voxel/object_manifest.ron @@ -799,4 +799,24 @@ central: ("armor.empty"), ) ), + BoltIcicle: ( + bone0: ( + offset: (-2.5, -6.0, -2.5), + central: ("weapon.projectile.icicle-bolt"), + ), + bone1: ( + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), + ) + ), + SpitPoison: ( + bone0: ( + offset: (-3.0, -5.0, -3.0), + central: ("weapon.projectile.poison-spit"), + ), + bone1: ( + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), + ) + ), }) diff --git a/assets/voxygen/voxel/weapon/projectile/icicle-bolt.vox b/assets/voxygen/voxel/weapon/projectile/icicle-bolt.vox new file mode 100644 index 0000000000..6600a24517 --- /dev/null +++ b/assets/voxygen/voxel/weapon/projectile/icicle-bolt.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:487aa5c592f37d4dbc4fd705900ccbb6efcb3e08596ca8ac6a817b0c864f954e +size 1400 diff --git a/assets/voxygen/voxel/weapon/projectile/poison-spit.vox b/assets/voxygen/voxel/weapon/projectile/poison-spit.vox new file mode 100644 index 0000000000..d6e7193c7c --- /dev/null +++ b/assets/voxygen/voxel/weapon/projectile/poison-spit.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c2da2e885ab9725d18c20e513cae4d9d069a3cde4690fa860b0de1fb82f82b98 +size 1764 diff --git a/assets/world/wildlife/spawn/desert/wasteland.ron b/assets/world/wildlife/spawn/desert/wasteland.ron index 7d06c2d2a4..401d316076 100644 --- a/assets/world/wildlife/spawn/desert/wasteland.ron +++ b/assets/world/wildlife/spawn/desert/wasteland.ron @@ -5,9 +5,10 @@ SpawnEntry ( Pack( groups: [ // Casual - (100, (1, 1, "common.entity.wild.aggressive.bonerattler")), + (110, (1, 1, "common.entity.wild.aggressive.bonerattler")), (100, (1, 1, "common.entity.wild.aggressive.sand_raptor")), (100, (1, 1, "common.entity.wild.aggressive.sandshark")), + (100, (1, 1, "common.entity.wild.aggressive.stag_beetle")), // Rare (20, (1, 1, "common.entity.wild.aggressive.lavadrake")), (20, (1, 1, "common.entity.wild.aggressive.ntouka")), diff --git a/assets/world/wildlife/spawn/taiga/core_forest.ron b/assets/world/wildlife/spawn/taiga/core_forest.ron index 673d1579dc..ef398908c4 100644 --- a/assets/world/wildlife/spawn/taiga/core_forest.ron +++ b/assets/world/wildlife/spawn/taiga/core_forest.ron @@ -6,6 +6,7 @@ SpawnEntry ( groups: [ (1, (1, 1, "common.entity.wild.aggressive.wendigo")), (1, (1, 1, "common.entity.wild.aggressive.dreadhorn")), + (1, (1, 1, "common.entity.wild.aggressive.horn_beetle")), ], is_underwater: false, day_period: [Night, Morning, Noon, Evening], diff --git a/assets/world/wildlife/spawn/temperate/rainforest.ron b/assets/world/wildlife/spawn/temperate/rainforest.ron index c60b19cf5e..78d5790834 100644 --- a/assets/world/wildlife/spawn/temperate/rainforest.ron +++ b/assets/world/wildlife/spawn/temperate/rainforest.ron @@ -30,6 +30,7 @@ SpawnEntry ( (2, (1, 1, "common.entity.wild.peaceful.turtle")), (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")), ], is_underwater: false, day_period: [Morning, Noon, Evening], diff --git a/common/src/comp/body.rs b/common/src/comp/body.rs index 1833bcace2..a38b380667 100644 --- a/common/src/comp/body.rs +++ b/common/src/comp/body.rs @@ -659,7 +659,7 @@ impl Body { quadruped_low::Species::Deadwood => 120, _ => 70, }, - Body::Arthropod(_) => 100, + Body::Arthropod(_) => 10000, Body::Ship(_) => 1000, } } diff --git a/common/src/comp/body/object.rs b/common/src/comp/body/object.rs index 950aeab136..7daf79bf18 100644 --- a/common/src/comp/body/object.rs +++ b/common/src/comp/body/object.rs @@ -92,6 +92,8 @@ make_case_elim!( Apple = 77, Hive = 78, Coconut = 79, + SpitPoison = 80, + BoltIcicle = 81, } ); @@ -272,6 +274,8 @@ impl Body { Body::Apple => "apple", Body::Hive => "hive", Body::Coconut => "coconut", + Body::SpitPoison => "spit_poison", + Body::BoltIcicle => "bolt_icicle", } } @@ -310,7 +314,7 @@ impl Body { Body::BedBlue => 50.0, Body::Bedroll => 3.0, Body::Bench => 100.0, - Body::BoltFire | Body::BoltFireBig | Body::BoltNature => 1.0, + Body::BoltFire | Body::BoltFireBig | Body::BoltNature | Body::BoltIcicle | Body::SpitPoison => 1.0, Body::Bomb => { 0.5 * IRON_DENSITY * std::f32::consts::PI / 6.0 * self.dimensions().x.powi(3) }, diff --git a/common/src/comp/projectile.rs b/common/src/comp/projectile.rs index 74e3d15c2f..04aefdae48 100644 --- a/common/src/comp/projectile.rs +++ b/common/src/comp/projectile.rs @@ -61,7 +61,7 @@ pub enum ProjectileConstructor { radius: f32, min_falloff: f32, }, - PoisonBall { + Poisonball { damage: f32, radius: f32, min_falloff: f32, @@ -228,7 +228,7 @@ impl ProjectileConstructor { is_point: true, } }, - PoisonBall { + Poisonball { damage, radius, min_falloff, @@ -483,7 +483,7 @@ impl ProjectileConstructor { *damage *= power; *radius *= range; }, - PoisonBall { + Poisonball { ref mut damage, ref mut radius, .. diff --git a/voxygen/anim/src/arthropod/leapmelee.rs b/voxygen/anim/src/arthropod/leapmelee.rs index dc4f97454c..c05e2587dc 100644 --- a/voxygen/anim/src/arthropod/leapmelee.rs +++ b/voxygen/anim/src/arthropod/leapmelee.rs @@ -18,7 +18,7 @@ impl Animation for LeapMeleeAnimation { #[cfg_attr(feature = "be-dyn-lib", export_name = "arthropod_leapmelee")] fn update_skeleton_inner<'a>( skeleton: &Self::Skeleton, - (_velocity, _global_time, stage_section, _timer): Self::Dependency<'a>, + (_velocity, global_time, stage_section, _timer): Self::Dependency<'a>, anim_time: f32, _rate: &mut f32, s_a: &SkeletonAttr, @@ -34,6 +34,7 @@ impl Animation for LeapMeleeAnimation { _ => (0.0, 0.0, 0.0, 0.0), }; let pullback = 1.0 - movement4; + let early_pullback = 1.0 - movement3base; //let subtract = global_time - timer; //let check = subtract - subtract.trunc(); //let mirror = (check - 0.5).signum(); @@ -44,6 +45,8 @@ impl Animation for LeapMeleeAnimation { //let twitch1 = (movement1base * 10.0).sin() * (1.0 - movement2base); //let twitch3 = (movement3base * 5.0).sin() * mirror; //let twitch1abs = twitch1 * mirror; + let shortalt = (global_time * 80.0).sin() * movement2base * early_pullback; + dbg!(anim_time); next.chest.scale = Vec3::one() / s_a.scaler; @@ -74,10 +77,10 @@ impl Animation for LeapMeleeAnimation { next.leg_fl.position = Vec3::new(-s_a.leg_f.0, s_a.leg_f.1, s_a.leg_f.2); next.leg_fr.position = Vec3::new(s_a.leg_f.0, s_a.leg_f.1, s_a.leg_f.2); next.leg_fl.orientation = - Quaternion::rotation_x(movement1abs * 0.2 + movement2abs * -1.0 + movement3abs * 0.8) + Quaternion::rotation_x(movement1abs * 0.2 + movement2abs * 0.8 + movement3abs * -1.5) * Quaternion::rotation_z(s_a.leg_ori.0); next.leg_fr.orientation = - Quaternion::rotation_x(movement1abs * 0.2 + movement2abs * -1.0 + movement3abs * 0.8) + Quaternion::rotation_x(movement1abs * 0.2 + movement2abs * 0.8 + movement3abs * -1.5) * Quaternion::rotation_z(-s_a.leg_ori.0); next.leg_fcl.position = Vec3::new(-s_a.leg_fc.0, s_a.leg_fc.1, s_a.leg_fc.2); @@ -104,6 +107,28 @@ impl Animation for LeapMeleeAnimation { next.leg_br.orientation = Quaternion::rotation_y(movement1abs * -0.2 + movement2abs * 1.0) * Quaternion::rotation_z(-s_a.leg_ori.3); + next.wing_fl.position = Vec3::new(-s_a.wing_f.0, s_a.wing_f.1, s_a.wing_f.2); + next.wing_fr.position = Vec3::new(s_a.wing_f.0, s_a.wing_f.1, s_a.wing_f.2); + next.wing_fl.orientation = + Quaternion::rotation_x(movement1abs * -0.4 + movement2abs * -0.2) + * Quaternion::rotation_y(movement1abs * 0.5 + movement2abs * 0.1) + * Quaternion::rotation_z(movement1abs * -0.2); + next.wing_fr.orientation = + Quaternion::rotation_x(movement1abs * -0.4 + movement2abs * -0.2) + * Quaternion::rotation_y(movement1abs * -0.5 + movement2abs * -0.1) + * Quaternion::rotation_z(movement1abs * 0.2); + + next.wing_bl.position = Vec3::new(-s_a.wing_b.0, s_a.wing_b.1, s_a.wing_b.2); + next.wing_br.position = Vec3::new(s_a.wing_b.0, s_a.wing_b.1, s_a.wing_b.2); + next.wing_bl.orientation = + Quaternion::rotation_x((movement1abs * -0.2 + movement2abs * -0.6) * early_pullback) + * Quaternion::rotation_y(movement1abs * 0.4 + shortalt * 2.0 + movement2abs * 0.1) + * Quaternion::rotation_z(movement1abs * -1.4); + next.wing_br.orientation = + Quaternion::rotation_x((movement1abs * -0.2 + movement2abs * -0.6) * early_pullback) + * Quaternion::rotation_y(movement1abs * -0.4 + shortalt * 2.0 + movement2abs * -0.1) + * Quaternion::rotation_z(movement1abs * 1.4); + next } } diff --git a/voxygen/anim/src/arthropod/shoot.rs b/voxygen/anim/src/arthropod/shoot.rs index fd36b10a2a..23d7b92c61 100644 --- a/voxygen/anim/src/arthropod/shoot.rs +++ b/voxygen/anim/src/arthropod/shoot.rs @@ -1,5 +1,3 @@ -use std::f32::consts::PI; - use super::{ super::{vek::*, Animation}, ArthropodSkeleton, SkeletonAttr, @@ -18,7 +16,7 @@ impl Animation for ShootAnimation { #[cfg_attr(feature = "be-dyn-lib", export_name = "arthropod_shoot")] fn update_skeleton_inner<'a>( skeleton: &Self::Skeleton, - (_velocity, global_time, stage_section, timer): Self::Dependency<'a>, + (_velocity, _global_time, stage_section, _timer): Self::Dependency<'a>, anim_time: f32, _rate: &mut f32, s_a: &SkeletonAttr, @@ -31,11 +29,6 @@ impl Animation for ShootAnimation { _ => (0.0, 0.0, 0.0), }; let pullback = 1.0 - movement2; - let subtract = global_time - timer; - let check = subtract - subtract.trunc(); - let mirror = (check - 0.5).signum(); - //let movement1 = mirror * movement1base * pullback; - //let movement2 = mirror * movement2base * pullback; let movement1abs = movement1 * pullback; next.chest.scale = Vec3::one() / s_a.scaler; diff --git a/voxygen/anim/src/arthropod/stunned.rs b/voxygen/anim/src/arthropod/stunned.rs index 8faebd41bd..4407767f0d 100644 --- a/voxygen/anim/src/arthropod/stunned.rs +++ b/voxygen/anim/src/arthropod/stunned.rs @@ -17,27 +17,33 @@ impl Animation for StunnedAnimation { #[cfg_attr(feature = "be-dyn-lib", export_name = "arthropod_stunned")] fn update_skeleton_inner<'a>( skeleton: &Self::Skeleton, - (_velocity, _global_time, stage_section, _timer): Self::Dependency<'a>, + (_velocity, global_time, stage_section, timer): Self::Dependency<'a>, anim_time: f32, _rate: &mut f32, s_a: &SkeletonAttr, ) -> Self::Skeleton { let mut next = (*skeleton).clone(); - let (_movement1base, _movement2, _twitch) = match stage_section { + let (_movement1base, movement2, twitch) = match stage_section { Some(StageSection::Buildup) => (anim_time.powf(0.25), 0.0, 0.0), Some(StageSection::Recover) => { (1.0, anim_time.powf(3.0), ((1.0 - anim_time) * 10.0).sin()) }, _ => (0.0, 0.0, 0.0), }; - //let pullback = 1.0 - movement2; + + let pullback = 1.0 - movement2; //let subtract = global_time - timer; //let check = subtract - subtract.trunc(); //let mirror = (check - 0.5).signum(); //let movement1 = mirror * movement1base * pullback; //let movement1abs = movement1base * pullback; + let subtract = global_time - timer; + let check = subtract - subtract.trunc(); + let mirror = (check - 0.5).signum(); + let twitch2 = mirror * (twitch * 20.0).sin() * pullback; + next.chest.scale = Vec3::one() / s_a.scaler; next.head.position = Vec3::new(0.0, s_a.head.0, s_a.head.1); diff --git a/world/src/layer/mod.rs b/world/src/layer/mod.rs index 63c277e4c6..c8100065e8 100644 --- a/world/src/layer/mod.rs +++ b/world/src/layer/mod.rs @@ -466,9 +466,12 @@ pub fn apply_caves_supplement<'a>( _ => "common.entity.wild.aggressive.batfox", } } else if cave_depth < 120.0 { - match dynamic_rng.gen_range(0..3) { + match dynamic_rng.gen_range(0..6) { 0 => "common.entity.wild.aggressive.rocksnapper", 1 => "common.entity.wild.aggressive.cave_salamander", + 2 => "common.entity.wild.aggressive.tarantula", + 3 => "common.entity.wild.aggressive.antlion", + 4 => "common.entity.wild.aggressive.black_widow", _ => "common.entity.wild.aggressive.asp", } } else if cave_depth < 190.0 {