mirror of
https://gitlab.com/veloren/veloren.git
synced 2024-08-30 18:12:32 +00:00
rocky yetipit entrance & AdletTrap object
This commit is contained in:
parent
95347e8a60
commit
f936c2f00e
@ -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,
|
||||||
|
@ -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
BIN
assets/voxygen/voxel/weapon/projectile/adlet-trap.vox
(Stored with Git LFS)
Normal file
Binary file not shown.
@ -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),
|
||||||
|
@ -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 => {
|
||||||
|
Loading…
Reference in New Issue
Block a user