diff --git a/assets/common/abilities/adlet/tracker/trap.ron b/assets/common/abilities/adlet/tracker/trap.ron index 36da8154cd..8a7b92f7ad 100644 --- a/assets/common/abilities/adlet/tracker/trap.ron +++ b/assets/common/abilities/adlet/tracker/trap.ron @@ -5,7 +5,7 @@ BasicRanged( projectile: Trap( damage: 25, ), - projectile_body: Object(Snowball), + projectile_body: Object(AdletTrap), projectile_speed: 10.0, num_projectiles: 1, projectile_spread: 0.0, diff --git a/assets/voxygen/voxel/object_manifest.ron b/assets/voxygen/voxel/object_manifest.ron index 3d8545b2f6..2ac3753d9c 100644 --- a/assets/voxygen/voxel/object_manifest.ron +++ b/assets/voxygen/voxel/object_manifest.ron @@ -929,4 +929,14 @@ central: ("armor.empty"), ) ), + AdletTrap: ( + bone0: ( + offset: (-4.5, -2.5, 0.0), + central: ("weapon.projectile.adlet-trap"), + ), + bone1: ( + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), + ) + ), }) diff --git a/assets/voxygen/voxel/weapon/projectile/adlet-trap.vox b/assets/voxygen/voxel/weapon/projectile/adlet-trap.vox new file mode 100644 index 0000000000..b7358b7709 --- /dev/null +++ b/assets/voxygen/voxel/weapon/projectile/adlet-trap.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4e0170b9cb61b349d9a64e38ec43f0e36645bb14ee39bb0c33307ed87803a2ab +size 1204 diff --git a/common/src/comp/body/object.rs b/common/src/comp/body/object.rs index 1e410b2c26..848503f890 100644 --- a/common/src/comp/body/object.rs +++ b/common/src/comp/body/object.rs @@ -105,6 +105,7 @@ make_case_elim!( SpectralSwordLarge = 90, LaserBeam = 91, AdletSpear = 92, + AdletTrap = 93, } ); @@ -115,7 +116,7 @@ impl Body { } } -pub const ALL_OBJECTS: [Body; 93] = [ +pub const ALL_OBJECTS: [Body; 94] = [ Body::Arrow, Body::Bomb, Body::Scarecrow, @@ -209,6 +210,7 @@ pub const ALL_OBJECTS: [Body; 93] = [ Body::IceBomb, Body::LaserBeam, Body::AdletSpear, + Body::AdletTrap, ]; impl From for super::Body { @@ -311,6 +313,7 @@ impl Body { Body::SpectralSwordLarge => "spectral_sword_large", Body::LaserBeam => "laser_beam", Body::AdletSpear => "adlet_spear", + Body::AdletTrap => "adlet_trap", } } @@ -336,7 +339,8 @@ impl Body { | Body::DagonBomb | Body::SpectralSwordSmall | Body::SpectralSwordLarge - | Body::AdletSpear => 500.0, + | Body::AdletSpear + | Body::AdletTrap => 500.0, Body::Bomb => 2000.0, // I have no idea what it's supposed to be Body::Crate => 300.0, // let's say it's a lot of wood and maybe some contents Body::Scarecrow => 900.0, @@ -432,6 +436,7 @@ impl Body { Body::IceBomb => 12298.0, // 2.5 m diamter but ice Body::LaserBeam => 80000.0, Body::AdletSpear => 1.5, + Body::AdletTrap => 1.2, }; Mass(m) @@ -445,6 +450,7 @@ impl Body { | Body::ArrowTurret | Body::Dart | Body::AdletSpear => Vec3::new(0.01, 0.8, 0.01), + Body::AdletTrap => Vec3::new(1.0, 0.6, 0.3), Body::BoltFire => Vec3::new(0.1, 0.1, 0.1), Body::SpectralSwordSmall => Vec3::new(0.2, 0.9, 0.1), Body::SpectralSwordLarge => Vec3::new(0.2, 1.5, 0.1), diff --git a/world/src/site2/plot/adlet.rs b/world/src/site2/plot/adlet.rs index 9c307d639c..5663e03c37 100644 --- a/world/src/site2/plot/adlet.rs +++ b/world/src/site2/plot/adlet.rs @@ -276,7 +276,7 @@ impl AdletStronghold { if let Some(rpos) = attempt(50, || { let rpos = { let theta = rng.gen_range(0.0..TAU); - let radius = (cavern_radius - 5) as f32; + let radius = cavern_radius as f32; Vec2::new(theta.cos() * radius, theta.sin() * radius).as_() }; valid_cavern_struct_pos(&cavern_structures, AdletStructure::YetiPit, rpos) @@ -1204,11 +1204,18 @@ impl Structure for AdletStronghold { } } // yetipit entrance - // dome + // rocks painter .sphere(Aabb { - min: (yetipit_entrance_pos - 20).with_z(alt as i32 - 25), - max: (yetipit_entrance_pos + 20).with_z(alt as i32 + 15), + min: (yetipit_entrance_pos - 8).with_z(alt as i32 - 8), + max: (yetipit_entrance_pos + 8).with_z(alt as i32 + 8), + }) + .fill(rock_fill.clone()); + // repaint ground + painter + .cylinder(Aabb { + min: (yetipit_entrance_pos - 8).with_z(alt as i32 - 20), + max: (yetipit_entrance_pos + 8).with_z(alt as i32), }) .fill(snow_ice_fill.clone()); // tunnel @@ -1217,34 +1224,28 @@ impl Structure for AdletStronghold { / Vec2::new((door_dist.x).pow(2).sqrt(), (door_dist.y).pow(2).sqrt()); painter .cubic_bezier( - (yetipit_entrance_pos + door_dir * 20).with_z(alt as i32 + 2), + (yetipit_entrance_pos + door_dir * 10).with_z(alt as i32 + 2), (yetipit_entrance_pos - door_dir * 20).with_z(alt as i32 - 10), - (yetipit_entrance_pos + door_dir * 30).with_z((alt as i32) - 30), + (yetipit_entrance_pos + door_dir * 20).with_z((alt as i32) - 30), self.cavern_center.with_z((alt as i32) - 50), 4.0, ) .clear(); - let door_pos = yetipit_entrance_pos + door_dir * 8; + // bone door painter - .line( - (door_pos + door_dir * 1).with_z(alt as i32), - (door_pos + door_dir * 2).with_z(alt as i32 - 3), + .sphere_with_radius( + (yetipit_entrance_pos + door_dir).with_z(alt as i32 - 4), 4.0, ) .fill(Fill::Block(Block::air(SpriteKind::BoneKeyDoor))); painter - .line( - (door_pos + door_dir * 3).with_z(alt as i32 - 1), - (door_pos + door_dir * 4).with_z(alt as i32 - 4), - 0.5, + .sphere_with_radius( + (yetipit_entrance_pos + door_dir * 2).with_z(alt as i32 - 2), + 1.0, ) .fill(Fill::Block(Block::air(SpriteKind::BoneKeyhole))); painter - .line( - door_pos.with_z(alt as i32), - (door_pos + door_dir * 1).with_z(alt as i32 - 3), - 4.0, - ) + .sphere_with_radius(yetipit_entrance_pos.with_z(alt as i32 - 4), 4.0) .clear(); }, AdletStructure::Tannery => {