Merge branch 'SeaCrocodile' into 'master'

Sea crocodile

See merge request veloren/veloren!3146
This commit is contained in:
Dominik Broński 2022-01-26 01:26:38 +00:00
commit ca7b048184
23 changed files with 184 additions and 1 deletions

View File

@ -0,0 +1,11 @@
EntityConfig (
name: Automatic,
body: RandomWith("sea_crocodile"),
alignment: Alignment(Enemy),
loot: LootTable("common.loot_tables.creature.quad_low.generic"),
hands: Uninit,
meta: [],
)

View File

@ -1150,6 +1150,10 @@
keyword: "crocodile",
generic: "Crocodile"
),
sea_crocodile: (
keyword: "sea_crocodile",
generic: "SeaCrocodile"
),
alligator: (
keyword: "alligator",
generic: "Alligator"

View File

@ -999,6 +999,13 @@
],
threshold: 1.0,
),
Utterance(Angry, SeaCrocodile): (
files: [
"voxygen.audio.sfx.utterance.sea_crocodile_angry1",
"voxygen.audio.sfx.utterance.sea_crocodile_angry2",
],
threshold: 1.0,
),
Utterance(Angry, Saurok): (
files: [
"voxygen.audio.sfx.utterance.saurok_angry1",

BIN
assets/voxygen/audio/sfx/utterance/sea_crocodile_angry1.ogg (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/audio/sfx/utterance/sea_crocodile_angry2.ogg (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/voxel/npc/sea_crocodile/male/chest.vox (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/voxel/npc/sea_crocodile/male/foot_br.vox (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/voxel/npc/sea_crocodile/male/foot_fr.vox (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/voxel/npc/sea_crocodile/male/head_lower.vox (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/voxel/npc/sea_crocodile/male/head_upper.vox (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/voxel/npc/sea_crocodile/male/jaw.vox (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/voxel/npc/sea_crocodile/male/tail_front.vox (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/voxel/npc/sea_crocodile/male/tail_rear.vox (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -51,6 +51,58 @@
central: ("npc.crocodile.male.tail_front"),
),
),
(SeaCrocodile, Male): (
upper: (
offset: (-3.0, 5.0, -1.0),
central: ("npc.sea_crocodile.male.head_upper"),
),
lower: (
offset: (-4.0, 1.5, -3.0),
central: ("npc.sea_crocodile.male.head_lower"),
),
jaw: (
offset: (-4.0, 2.5, -1.5),
central: ("npc.sea_crocodile.male.jaw"),
),
chest: (
offset: (-6.0, -7.5, -3.0),
central: ("npc.sea_crocodile.male.chest"),
),
tail_rear: (
offset: (-1.0, -14.0, -1.0),
central: ("npc.sea_crocodile.male.tail_rear"),
),
tail_front: (
offset: (-2.0, -11.0, -3.0),
central: ("npc.sea_crocodile.male.tail_front"),
),
),
(SeaCrocodile, Female): (
upper: (
offset: (-3.0, 5.0, -1.0),
central: ("npc.sea_crocodile.male.head_upper"),
),
lower: (
offset: (-4.0, 1.5, -3.0),
central: ("npc.sea_crocodile.male.head_lower"),
),
jaw: (
offset: (-4.0, 2.5, -1.5),
central: ("npc.sea_crocodile.male.jaw"),
),
chest: (
offset: (-6.0, -7.5, -3.0),
central: ("npc.sea_crocodile.male.chest"),
),
tail_rear: (
offset: (-1.0, -14.0, -1.0),//full length of y dimension
central: ("npc.sea_crocodile.male.tail_rear"),
),
tail_front: (
offset: (-2.0, -11.0, -3.0),//full length of y dimension
central: ("npc.sea_crocodile.male.tail_front"),
),
),
(Alligator, Male): (
upper: (
offset: (-4.0, -0.0, -2.5),

View File

@ -35,6 +35,42 @@
lateral: ("npc.crocodile.male.foot_br", false),
),
),
(SeaCrocodile, Male): (
front_left: (
offset: (-7.0, -0.0, -4.0),//full x dimension, 0 y dimension, full z dimension
lateral: ("npc.sea_crocodile.male.foot_fr", false),
),
front_right: (
offset: (0.0, -0.0, -4.0),//0 x dimension, 0 y dimension, full z dimension
lateral: ("npc.sea_crocodile.male.foot_fr", false),
),
back_left: (
offset: (-8.0, -0.0, -4.0),//full x dimension, 0 y dimension, full z dimension
lateral: ("npc.sea_crocodile.male.foot_br", false),
),
back_right: (
offset: (0.0, -0.0, -4.0),//0 x dimension, 0 y dimension, full z dimension
lateral: ("npc.sea_crocodile.male.foot_br", false),
),
),
(SeaCrocodile, Female): (
front_left: (
offset: (-7.0, -0.0, -4.0),
lateral: ("npc.sea_crocodile.male.foot_fr", false),
),
front_right: (
offset: (0.0, -0.0, -4.0),
lateral: ("npc.sea_crocodile.male.foot_fr", false),
),
back_left: (
offset: (-8.0, -0.0, -4.0),
lateral: ("npc.sea_crocodile.male.foot_br", false),
),
back_right: (
offset: (0.0, -0.0, -4.0),
lateral: ("npc.sea_crocodile.male.foot_br", false),
),
),
(Alligator, Male): (
front_left: (
offset: (-7.0, 0.0, -4.0),

View File

@ -0,0 +1,13 @@
SpawnEntry (
name: "Ocean water wildlife.",
note: "Ocean inhabitants",
rules: [
Pack(
groups: [
(1, (1, 3, "common.entity.wild.aggressive.sea_crocodile")),
],
is_underwater: true,
day_period: [Night, Morning, Noon, Evening],
),
],
)

View File

@ -230,6 +230,7 @@ impl Body {
// saltwater crocodiles can weigh around 1 ton, but our version is the size of an
// alligator or smaller, so whatever
quadruped_low::Species::Crocodile => 360.0,
quadruped_low::Species::SeaCrocodile => 410.0,
quadruped_low::Species::Deadwood => 400.0,
quadruped_low::Species::Lavadrake => 500.0,
quadruped_low::Species::Monitor => 100.0,
@ -645,6 +646,7 @@ impl Body {
},
Body::QuadrupedLow(quadruped_low) => match quadruped_low.species {
quadruped_low::Species::Crocodile => 80,
quadruped_low::Species::SeaCrocodile => 110,
quadruped_low::Species::Alligator => 90,
quadruped_low::Species::Monitor => 60,
quadruped_low::Species::Asp => 75,

View File

@ -54,6 +54,7 @@ make_case_elim!(
Basilisk = 12,
Deadwood = 13,
Icedrake = 14,
SeaCrocodile = 15,
}
);
@ -63,6 +64,7 @@ make_case_elim!(
#[derive(Clone, Debug, Deserialize)]
pub struct AllSpecies<SpeciesMeta> {
pub crocodile: SpeciesMeta,
pub sea_crocodile: SpeciesMeta,
pub alligator: SpeciesMeta,
pub salamander: SpeciesMeta,
pub monitor: SpeciesMeta,
@ -86,6 +88,7 @@ impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies<SpeciesMeta>
fn index(&self, &index: &'a Species) -> &Self::Output {
match index {
Species::Crocodile => &self.crocodile,
Species::SeaCrocodile => &self.sea_crocodile,
Species::Alligator => &self.alligator,
Species::Salamander => &self.salamander,
Species::Monitor => &self.monitor,
@ -104,8 +107,9 @@ impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies<SpeciesMeta>
}
}
pub const ALL_SPECIES: [Species; 15] = [
pub const ALL_SPECIES: [Species; 16] = [
Species::Crocodile,
Species::SeaCrocodile,
Species::Alligator,
Species::Salamander,
Species::Monitor,

View File

@ -229,6 +229,7 @@ fn default_main_tool(body: &Body) -> Item {
"common.items.npc_weapons.unique.asp",
)),
quadruped_low::Species::Crocodile
| quadruped_low::Species::SeaCrocodile
| quadruped_low::Species::Alligator
| quadruped_low::Species::Salamander => Some(Item::new_from_asset_expect(
"common.items.npc_weapons.unique.quadlowtail",

View File

@ -113,6 +113,7 @@ impl Body {
Body::Theropod(_) => 135.0,
Body::QuadrupedLow(quadruped_low) => match quadruped_low.species {
quadruped_low::Species::Crocodile => 130.0,
quadruped_low::Species::SeaCrocodile => 120.0,
quadruped_low::Species::Alligator => 110.0,
quadruped_low::Species::Salamander => 85.0,
quadruped_low::Species::Monitor => 160.0,

View File

@ -150,6 +150,7 @@ impl<'a> From<&'a Body> for SkeletonAttr {
Self {
head_upper: match (body.species, body.body_type) {
(Crocodile, _) => (1.5, 2.0),
(SeaCrocodile, _) => (1.5, 2.0),
(Alligator, _) => (0.5, 2.0),
(Salamander, Male) => (0.5, 2.5),
(Salamander, Female) => (0.5, 1.0),
@ -168,6 +169,7 @@ impl<'a> From<&'a Body> for SkeletonAttr {
},
head_lower: match (body.species, body.body_type) {
(Crocodile, _) => (8.0, 0.0),
(SeaCrocodile, _) => (8.0, 0.0),
(Alligator, _) => (9.0, 0.25),
(Salamander, Male) => (9.0, 0.0),
(Salamander, Female) => (9.0, 0.0),
@ -186,6 +188,7 @@ impl<'a> From<&'a Body> for SkeletonAttr {
},
jaw: match (body.species, body.body_type) {
(Crocodile, _) => (2.5, -3.0),
(SeaCrocodile, _) => (2.5, -3.0),
(Alligator, _) => (2.5, -2.0),
(Salamander, Male) => (0.0, -2.0),
(Salamander, Female) => (0.5, -1.0),
@ -204,6 +207,7 @@ impl<'a> From<&'a Body> for SkeletonAttr {
},
chest: match (body.species, body.body_type) {
(Crocodile, _) => (0.0, 5.0),
(SeaCrocodile, _) => (0.0, 5.0),
(Alligator, _) => (0.0, 5.0),
(Salamander, Male) => (0.0, 5.0),
(Salamander, Female) => (0.0, 5.0),
@ -222,6 +226,7 @@ impl<'a> From<&'a Body> for SkeletonAttr {
},
tail_rear: match (body.species, body.body_type) {
(Crocodile, _) => (-12.5, -1.0),
(SeaCrocodile, _) => (-12.5, -1.0),
(Alligator, _) => (-13.0, -1.0),
(Salamander, Male) => (-8.0, 0.0),
(Salamander, Female) => (-6.5, 0.0),
@ -240,6 +245,7 @@ impl<'a> From<&'a Body> for SkeletonAttr {
},
tail_front: match (body.species, body.body_type) {
(Crocodile, _) => (-6.0, 0.0),
(SeaCrocodile, _) => (-6.0, 0.0),
(Alligator, _) => (-5.0, 0.0),
(Salamander, Male) => (-7.5, 0.0),
(Salamander, Female) => (-7.0, 0.0),
@ -258,6 +264,7 @@ impl<'a> From<&'a Body> for SkeletonAttr {
},
feet_f: match (body.species, body.body_type) {
(Crocodile, _) => (3.5, 6.0, -1.0),
(SeaCrocodile, _) => (3.5, 6.0, -1.0),
(Alligator, _) => (4.5, 4.25, -1.0),
(Salamander, Male) => (5.0, 5.0, -2.0),
(Salamander, Female) => (5.0, 4.5, -2.0),
@ -276,6 +283,7 @@ impl<'a> From<&'a Body> for SkeletonAttr {
},
feet_b: match (body.species, body.body_type) {
(Crocodile, _) => (3.5, -6.0, -1.0),
(SeaCrocodile, _) => (3.5, -6.0, -1.0),
(Alligator, _) => (4.5, -5.5, -1.0),
(Salamander, Male) => (4.0, -6.0, -2.0),
(Salamander, Female) => (3.0, -6.0, -2.0),
@ -298,6 +306,7 @@ impl<'a> From<&'a Body> for SkeletonAttr {
},
scaler: match (body.species, body.body_type) {
(Crocodile, _) => (1.05),
(SeaCrocodile, _) => (1.05),
(Alligator, _) => (1.12),
(Salamander, _) => (1.12),
(Monitor, _) => (0.9),
@ -313,6 +322,7 @@ impl<'a> From<&'a Body> for SkeletonAttr {
},
tempo: match (body.species, body.body_type) {
(Crocodile, _) => (0.7),
(SeaCrocodile, _) => (0.7),
(Alligator, _) => (0.7),
(Salamander, _) => (0.85),
(Monitor, _) => (1.4),
@ -333,6 +343,7 @@ fn mount_point(body: &Body) -> Vec3<f32> {
use comp::quadruped_low::{BodyType::*, Species::*};
match (body.species, body.body_type) {
(Crocodile, _) => (0.0, 4.5, -2.0),
(SeaCrocodile, _) => (0.0, 4.5, -2.0),
(Alligator, _) => (0.0, 4.25, -2.0),
(Salamander, Male) => (0.0, 5.0, -1.0),
(Salamander, Female) => (0.0, 5.0, -1.0),

View File

@ -207,6 +207,7 @@ pub enum VoiceKind {
Adlet,
Antelope,
Alligator,
SeaCrocodile,
Saurok,
Cat,
Goat,
@ -225,6 +226,7 @@ fn body_to_voice(body: &Body) -> Option<VoiceKind> {
Body::QuadrupedLow(body) => match body.species {
quadruped_low::Species::Maneater => VoiceKind::Maneater,
quadruped_low::Species::Alligator => VoiceKind::Alligator,
quadruped_low::Species::SeaCrocodile => VoiceKind::SeaCrocodile,
quadruped_low::Species::Asp => VoiceKind::Asp,
_ => return None,
},

View File

@ -262,6 +262,15 @@ pub fn spawn_manifest() -> Vec<(&'static str, DensityFn)> {
0.0
}
}),
// Ocean animals
("world.wildlife.spawn.tropical.ocean", |_c, col| {
close(col.temp, CONFIG.tropical_temp, 0.1) / 10.0
* if col.water_dist.map(|d| d < 1.0).unwrap_or(false) && col.tree_density == 0.0 {
0.001
} else {
0.0
}
}),
// Rainforest area animals
("world.wildlife.spawn.tropical.rainforest", |c, _col| {
close(c.temp, CONFIG.tropical_temp + 0.1, 0.4)