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(
damage: 25,
),
projectile_body: Object(Snowball),
projectile_body: Object(AdletTrap),
projectile_speed: 10.0,
num_projectiles: 1,
projectile_spread: 0.0,

View File

@ -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"),
)
),
})

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,
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<Body> 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),

View File

@ -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 => {