rocky yetipit entrance & AdletTrap object

This commit is contained in:
flo666 2023-03-25 21:54:14 +01:00 committed by Sam
parent 95347e8a60
commit f936c2f00e
5 changed files with 42 additions and 22 deletions

View File

@ -5,7 +5,7 @@ BasicRanged(
projectile: Trap( projectile: Trap(
damage: 25, damage: 25,
), ),
projectile_body: Object(Snowball), projectile_body: Object(AdletTrap),
projectile_speed: 10.0, projectile_speed: 10.0,
num_projectiles: 1, num_projectiles: 1,
projectile_spread: 0.0, projectile_spread: 0.0,

View File

@ -929,4 +929,14 @@
central: ("armor.empty"), 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"),
)
),
}) })

BIN
assets/voxygen/voxel/weapon/projectile/adlet-trap.vox (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -105,6 +105,7 @@ make_case_elim!(
SpectralSwordLarge = 90, SpectralSwordLarge = 90,
LaserBeam = 91, LaserBeam = 91,
AdletSpear = 92, 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::Arrow,
Body::Bomb, Body::Bomb,
Body::Scarecrow, Body::Scarecrow,
@ -209,6 +210,7 @@ pub const ALL_OBJECTS: [Body; 93] = [
Body::IceBomb, Body::IceBomb,
Body::LaserBeam, Body::LaserBeam,
Body::AdletSpear, Body::AdletSpear,
Body::AdletTrap,
]; ];
impl From<Body> for super::Body { impl From<Body> for super::Body {
@ -311,6 +313,7 @@ impl Body {
Body::SpectralSwordLarge => "spectral_sword_large", Body::SpectralSwordLarge => "spectral_sword_large",
Body::LaserBeam => "laser_beam", Body::LaserBeam => "laser_beam",
Body::AdletSpear => "adlet_spear", Body::AdletSpear => "adlet_spear",
Body::AdletTrap => "adlet_trap",
} }
} }
@ -336,7 +339,8 @@ impl Body {
| Body::DagonBomb | Body::DagonBomb
| Body::SpectralSwordSmall | Body::SpectralSwordSmall
| Body::SpectralSwordLarge | 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::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::Crate => 300.0, // let's say it's a lot of wood and maybe some contents
Body::Scarecrow => 900.0, Body::Scarecrow => 900.0,
@ -432,6 +436,7 @@ impl Body {
Body::IceBomb => 12298.0, // 2.5 m diamter but ice Body::IceBomb => 12298.0, // 2.5 m diamter but ice
Body::LaserBeam => 80000.0, Body::LaserBeam => 80000.0,
Body::AdletSpear => 1.5, Body::AdletSpear => 1.5,
Body::AdletTrap => 1.2,
}; };
Mass(m) Mass(m)
@ -445,6 +450,7 @@ impl Body {
| Body::ArrowTurret | Body::ArrowTurret
| Body::Dart | Body::Dart
| Body::AdletSpear => Vec3::new(0.01, 0.8, 0.01), | 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::BoltFire => Vec3::new(0.1, 0.1, 0.1),
Body::SpectralSwordSmall => Vec3::new(0.2, 0.9, 0.1), Body::SpectralSwordSmall => Vec3::new(0.2, 0.9, 0.1),
Body::SpectralSwordLarge => Vec3::new(0.2, 1.5, 0.1), Body::SpectralSwordLarge => Vec3::new(0.2, 1.5, 0.1),

View File

@ -276,7 +276,7 @@ impl AdletStronghold {
if let Some(rpos) = attempt(50, || { if let Some(rpos) = attempt(50, || {
let rpos = { let rpos = {
let theta = rng.gen_range(0.0..TAU); 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_() Vec2::new(theta.cos() * radius, theta.sin() * radius).as_()
}; };
valid_cavern_struct_pos(&cavern_structures, AdletStructure::YetiPit, rpos) valid_cavern_struct_pos(&cavern_structures, AdletStructure::YetiPit, rpos)
@ -1204,11 +1204,18 @@ impl Structure for AdletStronghold {
} }
} }
// yetipit entrance // yetipit entrance
// dome // rocks
painter painter
.sphere(Aabb { .sphere(Aabb {
min: (yetipit_entrance_pos - 20).with_z(alt as i32 - 25), min: (yetipit_entrance_pos - 8).with_z(alt as i32 - 8),
max: (yetipit_entrance_pos + 20).with_z(alt as i32 + 15), 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()); .fill(snow_ice_fill.clone());
// tunnel // tunnel
@ -1217,34 +1224,28 @@ impl Structure for AdletStronghold {
/ Vec2::new((door_dist.x).pow(2).sqrt(), (door_dist.y).pow(2).sqrt()); / Vec2::new((door_dist.x).pow(2).sqrt(), (door_dist.y).pow(2).sqrt());
painter painter
.cubic_bezier( .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 * 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), self.cavern_center.with_z((alt as i32) - 50),
4.0, 4.0,
) )
.clear(); .clear();
let door_pos = yetipit_entrance_pos + door_dir * 8; // bone door
painter painter
.line( .sphere_with_radius(
(door_pos + door_dir * 1).with_z(alt as i32), (yetipit_entrance_pos + door_dir).with_z(alt as i32 - 4),
(door_pos + door_dir * 2).with_z(alt as i32 - 3),
4.0, 4.0,
) )
.fill(Fill::Block(Block::air(SpriteKind::BoneKeyDoor))); .fill(Fill::Block(Block::air(SpriteKind::BoneKeyDoor)));
painter painter
.line( .sphere_with_radius(
(door_pos + door_dir * 3).with_z(alt as i32 - 1), (yetipit_entrance_pos + door_dir * 2).with_z(alt as i32 - 2),
(door_pos + door_dir * 4).with_z(alt as i32 - 4), 1.0,
0.5,
) )
.fill(Fill::Block(Block::air(SpriteKind::BoneKeyhole))); .fill(Fill::Block(Block::air(SpriteKind::BoneKeyhole)));
painter painter
.line( .sphere_with_radius(yetipit_entrance_pos.with_z(alt as i32 - 4), 4.0)
door_pos.with_z(alt as i32),
(door_pos + door_dir * 1).with_z(alt as i32 - 3),
4.0,
)
.clear(); .clear();
}, },
AdletStructure::Tannery => { AdletStructure::Tannery => {