- bigger yetipit mob rooms

- tweaks
This commit is contained in:
flo666 2023-04-15 12:39:34 +02:00 committed by Sam
parent f0e0034fb0
commit c2cf88da3d
2 changed files with 96 additions and 14 deletions

View File

@ -4395,7 +4395,7 @@ GlowIceCrystal: Some((
), ),
( (
model: "voxygen.voxel.sprite.crystal.glow_ice_crystal_2", model: "voxygen.voxel.sprite.crystal.glow_ice_crystal_2",
offset: (-11.5, -22.5, 0.0), offset: (-11.5, -12.5, 0.0),
lod_axes: (0.0, 0.0, 0.0), lod_axes: (0.0, 0.0, 0.0),
), ),
( (
@ -4410,7 +4410,7 @@ GlowIceCrystal: Some((
), ),
( (
model: "voxygen.voxel.sprite.crystal.glow_ice_crystal_5", model: "voxygen.voxel.sprite.crystal.glow_ice_crystal_5",
offset: (-11.5, -22.5, 0.0), offset: (-11.5, -12.5, 0.0),
lod_axes: (0.0, 0.0, 0.0), lod_axes: (0.0, 0.0, 0.0),
), ),
], ],

View File

@ -60,7 +60,7 @@ impl AdletStructure {
Self::CookFire => 3, Self::CookFire => 3,
Self::RockHut => 4, Self::RockHut => 4,
Self::BoneHut => 11, Self::BoneHut => 11,
Self::BossBoneHut => 13, Self::BossBoneHut => 14,
Self::Bonfire => 10, Self::Bonfire => 10,
}; };
@ -468,11 +468,10 @@ impl Structure for AdletStronghold {
}) })
})); }));
let yeti_sprites_fill = Fill::Sampling(Arc::new(|wpos| { let yeti_sprites_fill = Fill::Sampling(Arc::new(|wpos| {
Some(match (RandomField::new(0).get(wpos)) % 80 { Some(match (RandomField::new(0).get(wpos)) % 60 {
0..=2 => Block::air(SpriteKind::Bones), 0..=2 => Block::air(SpriteKind::Bones),
4..=5 => Block::air(SpriteKind::GlowIceCrystal), 4..=5 => Block::air(SpriteKind::GlowIceCrystal),
6..=8 => Block::air(SpriteKind::IceCrystal), 6..=8 => Block::air(SpriteKind::IceCrystal),
9..=15 => Block::new(BlockKind::ArtSnow, Rgb::new(255, 255, 255)),
_ => Block::new(BlockKind::Air, Rgb::new(0, 0, 0)), _ => Block::new(BlockKind::Air, Rgb::new(0, 0, 0)),
}) })
})); }));
@ -1218,11 +1217,11 @@ impl Structure for AdletStronghold {
level - (3 * down) - 4 - (cone_height / 8), level - (3 * down) - 4 - (cone_height / 8),
), ),
cone_radius as f32, cone_radius as f32,
cone_height as f32, (cone_height - 1) as f32,
) )
.rotate_about( .rotate_about(
Mat3::rotation_x(PI).as_(), Mat3::rotation_x(PI).as_(),
yetipit_center.with_z(level - (2 * down)), yetipit_center.with_z(level - (2 * down) - 1),
) )
.fill(snow_ice_fill.clone()); .fill(snow_ice_fill.clone());
// small cone tops // small cone tops
@ -1273,10 +1272,34 @@ impl Structure for AdletStronghold {
painter painter
.cylinder_with_radius( .cylinder_with_radius(
yetipit_center.with_z(level - (3 * down) - 5), yetipit_center.with_z(level - (3 * down) - 5),
(room_size / 2) as f32, room_size as f32,
((room_size / 3) + 5) as f32, ((room_size / 3) + 5) as f32,
) )
.clear(); .clear();
// sprites: icecrystals, bones
for r in 0..4 {
painter
.cylinder_with_radius(
yetipit_center.with_z(level - (3 * down) - 2 - r),
(room_size + 2 - r) as f32,
1.0,
)
.fill(snow_ice_fill.clone());
painter
.cylinder_with_radius(
yetipit_center.with_z(level - (3 * down) - 1 - r),
(room_size - r) as f32,
1.0,
)
.fill(yeti_sprites_fill.clone());
painter
.cylinder_with_radius(
yetipit_center.with_z(level - (3 * down) - 2 - r),
(room_size - 1 - r) as f32,
2.0,
)
.clear();
}
let yetipit_mobs = 2 let yetipit_mobs = 2
+ (RandomField::new(0) + (RandomField::new(0)
.get(yetipit_center.with_z(level - (3 * down) - 3)) .get(yetipit_center.with_z(level - (3 * down) - 3))
@ -1290,13 +1313,13 @@ impl Structure for AdletStronghold {
painter painter
.cone_with_radius( .cone_with_radius(
yetipit_center.with_z(level - (3 * down) + (room_size / 3) - 2), yetipit_center.with_z(level - (3 * down) + (room_size / 3) - 2),
(room_size / 2) as f32, room_size as f32,
(room_size / 3) as f32, (room_size / 3) as f32,
) )
.clear(); .clear();
// snow covered speleothem cluster // snow covered speleothem cluster
for dir in NEIGHBORS { for dir in NEIGHBORS {
let cluster_pos = yetipit_center + dir * (room_size / 2); let cluster_pos = yetipit_center + dir * room_size;
for dir in NEIGHBORS { for dir in NEIGHBORS {
let cone_radius = 3 let cone_radius = 3
+ (RandomField::new(0) + (RandomField::new(0)
@ -1338,6 +1361,65 @@ impl Structure for AdletStronghold {
.fill(snow_ice_fill.clone()); .fill(snow_ice_fill.clone());
} }
} }
// ceiling snow covered speleothem cluster
for dir in NEIGHBORS {
for c in 0..5 {
let cluster_pos = yetipit_center + dir * (c * (room_size / 3));
for dir in NEIGHBORS {
let cone_radius = 3
+ (RandomField::new(0)
.get((cluster_pos + dir).with_z(alt as i32))
% 3)
as i32;
let cone_offset = 3
+ (RandomField::new(0)
.get((cluster_pos + 1 + dir).with_z(alt as i32))
% 4)
as i32;
let cone_height = 15
+ (RandomField::new(0)
.get((cluster_pos + 2 + dir).with_z(alt as i32))
% 10)
as i32;
// cones
painter
.cone_with_radius(
(cluster_pos + (dir * cone_offset)).with_z(
level - (3 * down) - 4 - (cone_height / 8),
),
cone_radius as f32,
(cone_height - 1) as f32,
)
.rotate_about(
Mat3::rotation_x(PI).as_(),
yetipit_center.with_z(level - (2 * down) - 1),
)
.fill(snow_ice_fill.clone());
// small cone tops
let top_pos = (RandomField::new(0)
.get((cluster_pos + 3 + dir).with_z(level))
% 2)
as i32;
painter
.aabb(Aabb {
min: (cluster_pos + (dir * cone_offset) - top_pos)
.with_z(level - (3 * down) - 3),
max: (cluster_pos + (dir * cone_offset) + 1
- top_pos)
.with_z(
(level - (3 * down) - 2) + cone_height
- (cone_height / 6)
- 2,
),
})
.rotate_about(
Mat3::rotation_x(PI).as_(),
yetipit_center.with_z(level - (2 * down)),
)
.fill(snow_ice_fill.clone());
}
}
}
// frozen pond // frozen pond
painter painter
.cylinder_with_radius( .cylinder_with_radius(
@ -1898,17 +1980,17 @@ impl Structure for AdletStronghold {
.clear(); .clear();
let entry_start = Vec2::new( let entry_start = Vec2::new(
bosshut_pos.x - hut_radius + 3, bosshut_pos.x - hut_radius + 3,
bosshut_pos.y - hut_radius - 3 + (n * ((2 * hut_radius) + 6)), bosshut_pos.y - hut_radius - 2 + (n * ((2 * hut_radius) + 4)),
) )
.with_z(alt as i32); .with_z(alt as i32);
let entry_peak = Vec2::new( let entry_peak = Vec2::new(
bosshut_pos.x, bosshut_pos.x,
bosshut_pos.y - hut_radius - 1 + (n * (2 * hut_radius)), bosshut_pos.y - hut_radius + (n * (2 * hut_radius)),
) )
.with_z(alt as i32 + hut_radius); .with_z(alt as i32 + hut_radius + 2);
let entry_end = Vec2::new( let entry_end = Vec2::new(
bosshut_pos.x + hut_radius - 3, bosshut_pos.x + hut_radius - 3,
bosshut_pos.y - hut_radius - 3 + (n * ((2 * hut_radius) + 6)), bosshut_pos.y - hut_radius - 2 + (n * ((2 * hut_radius) + 4)),
) )
.with_z(alt as i32); .with_z(alt as i32);
painter painter