Adds mindflayer npc

This commit is contained in:
Snowram 2020-11-12 00:17:12 +01:00 committed by Robin Gilh
parent 9bfccd42d3
commit 42d2108c39
21 changed files with 207 additions and 12 deletions

View File

@ -0,0 +1,14 @@
ItemDef(
name: "Mindflayer Staff",
description: "Placeholder",
kind: Tool(
(
kind: Staff,
stats: (
equip_time_millis: 500,
power: 1.00,
),
)
),
quality: Low,
)

View File

@ -617,6 +617,10 @@
"saurok_sly": {
"keyword": "saurok_sly",
"generic": "Sly Saurok"
},
"mindflayer": {
"keyword": "mindflayer",
"generic": "Mindflayer"
}
}
},

View File

@ -539,4 +539,64 @@
central: ("weapon.bow.longbow_saurok"),
)
),
(Mindflayer, Male): (
head: (
offset: (-8.5, -8.0, -10.5),
central: ("npc.mindflayer.male.head"),
),
torso_upper: (
offset: (-10.5, -8.5, -11.0),
central: ("npc.mindflayer.male.torso_upper"),
),
torso_lower: (
offset: (-4.5, -6.0, -7.5),
central: ("npc.mindflayer.male.torso_lower"),
),
jaw: (
offset: (0.0, 0.0, 0.0),
central: ("armor.empty"),
),
tail: (
offset: (0.0, 0.0, 0.0),
central: ("armor.empty"),
),
second: (
offset: (0.0, 0.0, 0.0),
central: ("armor.empty"),
),
main: (
offset: (-5.5, -3.5, -4.0),
central: ("weapon.staff.firestaff_mindflayer"),
)
),
(Mindflayer, Female): (
head: (
offset: (-8.5, -8.0, -10.5),
central: ("npc.mindflayer.male.head"),
),
torso_upper: (
offset: (-10.5, -8.5, -11.0),
central: ("npc.mindflayer.male.torso_upper"),
),
torso_lower: (
offset: (-4.5, -6.0, -7.5),
central: ("npc.mindflayer.male.torso_lower"),
),
jaw: (
offset: (0.0, 0.0, 0.0),
central: ("armor.empty"),
),
tail: (
offset: (0.0, 0.0, 0.0),
central: ("armor.empty"),
),
second: (
offset: (0.0, 0.0, 0.0),
central: ("armor.empty"),
),
main: (
offset: (-5.5, -3.5, -4.0),
central: ("weapon.staff.firestaff_mindflayer"),
)
),
})

View File

@ -611,4 +611,72 @@
lateral: ("npc.saurok_sly.female.foot_r"),
),
),
(Mindflayer, Male): (
shoulder_l: (
offset: (-4.5, -3.0, -4.0),
lateral: ("npc.mindflayer.male.shoulder_l"),
),
shoulder_r: (
offset: (-4.5, -3.0, -4.0),
lateral: ("npc.mindflayer.male.shoulder_r"),
),
hand_l: (
offset: (-4.5, -4.0, -12.0),
lateral: ("npc.mindflayer.male.hand_l"),
),
hand_r: (
offset: (-4.5, -4.0, -12.0),
lateral: ("npc.mindflayer.male.hand_r"),
),
leg_l: (
offset: (-6.5, -10.0, -16.0),
lateral: ("npc.mindflayer.male.leg_l"),
),
leg_r: (
offset: (-6.5, -10.0, -16.0),
lateral: ("npc.mindflayer.male.leg_r"),
),
foot_l: (
offset: (-2.0, -4.5, -4.0),
lateral: ("npc.mindflayer.male.foot_l"),
),
foot_r: (
offset: (-2.0, -4.5, -4.0),
lateral: ("npc.mindflayer.male.foot_r"),
)
),
(Mindflayer, Female): (
shoulder_l: (
offset: (-4.5, -3.0, -4.0),
lateral: ("npc.mindflayer.male.shoulder_l"),
),
shoulder_r: (
offset: (-4.5, -3.0, -4.0),
lateral: ("npc.mindflayer.male.shoulder_r"),
),
hand_l: (
offset: (-4.5, -4.0, -12.0),
lateral: ("npc.mindflayer.male.hand_l"),
),
hand_r: (
offset: (-4.5, -4.0, -12.0),
lateral: ("npc.mindflayer.male.hand_r"),
),
leg_l: (
offset: (-6.5, -10.0, -16.0),
lateral: ("npc.mindflayer.male.leg_l"),
),
leg_r: (
offset: (-6.5, -10.0, -16.0),
lateral: ("npc.mindflayer.male.leg_r"),
),
foot_l: (
offset: (-2.0, -4.5, -4.0),
lateral: ("npc.mindflayer.male.foot_l"),
),
foot_r: (
offset: (-2.0, -4.5, -4.0),
lateral: ("npc.mindflayer.male.foot_r"),
)
),
})

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

BIN
assets/voxygen/voxel/weapon/staff/firestaff_mindflayer.vox (Stored with Git LFS) Normal file

Binary file not shown.

Binary file not shown.

View File

@ -43,6 +43,7 @@ make_case_elim!(
Occultsaurok = 6,
Mightysaurok = 7,
Slysaurok = 8,
Mindflayer = 9,
}
);
@ -60,6 +61,7 @@ pub struct AllSpecies<SpeciesMeta> {
pub saurok_occult: SpeciesMeta,
pub saurok_mighty: SpeciesMeta,
pub saurok_sly: SpeciesMeta,
pub mindflayer: SpeciesMeta,
}
impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies<SpeciesMeta> {
@ -77,11 +79,12 @@ impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies<SpeciesMeta>
Species::Occultsaurok => &self.saurok_occult,
Species::Mightysaurok => &self.saurok_mighty,
Species::Slysaurok => &self.saurok_sly,
Species::Mindflayer => &self.mindflayer,
}
}
}
pub const ALL_SPECIES: [Species; 9] = [
pub const ALL_SPECIES: [Species; 10] = [
Species::Ogre,
Species::Cyclops,
Species::Wendigo,
@ -91,6 +94,7 @@ pub const ALL_SPECIES: [Species; 9] = [
Species::Occultsaurok,
Species::Mightysaurok,
Species::Slysaurok,
Species::Mindflayer,
];
impl<'a, SpeciesMeta: 'a> IntoIterator for &'a AllSpecies<SpeciesMeta> {

View File

@ -139,6 +139,11 @@ impl LoadoutBuilder {
"common.items.npc_weapons.sword.dullahan_sword",
));
},
(biped_large::Species::Mindflayer, _) => {
main_tool = Some(Item::new_from_asset_expect(
"common.items.npc_weapons.staff.mindflayer_staff",
));
},
},
Body::Humanoid(_) => {
if is_giant {

View File

@ -191,6 +191,7 @@ impl<'a> From<&'a Body> for SkeletonAttr {
(Occultsaurok, _) => (6.0, 3.5),
(Mightysaurok, _) => (6.0, 3.5),
(Slysaurok, _) => (6.0, 3.5),
(Mindflayer, _) => (5.0, 5.5),
},
jaw: match (body.species, body.body_type) {
(Ogre, _) => (0.0, 0.0),
@ -202,6 +203,7 @@ impl<'a> From<&'a Body> for SkeletonAttr {
(Occultsaurok, _) => (1.0, -2.5),
(Mightysaurok, _) => (1.0, -2.5),
(Slysaurok, _) => (1.0, -2.5),
(Mindflayer, _) => (0.0, 0.0),
},
upper_torso: match (body.species, body.body_type) {
(Ogre, Male) => (0.0, 28.0),
@ -214,6 +216,7 @@ impl<'a> From<&'a Body> for SkeletonAttr {
(Occultsaurok, _) => (3.0, 23.0),
(Mightysaurok, _) => (3.0, 23.0),
(Slysaurok, _) => (3.0, 23.0),
(Mindflayer, _) => (0.0, 31.0),
},
lower_torso: match (body.species, body.body_type) {
(Ogre, Male) => (1.0, -7.0),
@ -226,17 +229,14 @@ impl<'a> From<&'a Body> for SkeletonAttr {
(Occultsaurok, _) => (0.0, -6.0),
(Mightysaurok, _) => (0.0, -6.0),
(Slysaurok, _) => (0.0, -6.0),
(Mindflayer, _) => (5.5, -18.0),
},
tail: match (body.species, body.body_type) {
(Ogre, _) => (0.0, 0.0),
(Cyclops, _) => (0.0, 0.0),
(Wendigo, _) => (0.0, 0.0),
(Troll, _) => (0.0, 0.0),
(Dullahan, _) => (0.0, 0.0),
(Werewolf, _) => (-5.5, -2.0),
(Occultsaurok, _) => (-4.5, -6.0),
(Mightysaurok, _) => (-4.5, -6.0),
(Slysaurok, _) => (-4.5, -6.0),
(_, _) => (0.0, 0.0),
},
shoulder: match (body.species, body.body_type) {
(Ogre, Male) => (12.0, 0.5, 0.0),
@ -249,6 +249,7 @@ impl<'a> From<&'a Body> for SkeletonAttr {
(Occultsaurok, _) => (7.5, 1.0, -1.5),
(Mightysaurok, _) => (7.5, 1.0, -1.5),
(Slysaurok, _) => (7.5, 1.0, -1.5),
(Mindflayer, _) => (8.0, 0.5, -1.0),
},
hand: match (body.species, body.body_type) {
(Ogre, Male) => (14.5, 0.0, -2.0),
@ -261,6 +262,7 @@ impl<'a> From<&'a Body> for SkeletonAttr {
(Occultsaurok, _) => (8.0, 1.5, -5.5),
(Mightysaurok, _) => (8.0, 1.5, -5.5),
(Slysaurok, _) => (8.0, 1.5, -5.5),
(Mindflayer, _) => (9.0, 0.5, -4.5),
},
leg: match (body.species, body.body_type) {
(Ogre, Male) => (0.0, 0.0, -4.0),
@ -273,6 +275,7 @@ impl<'a> From<&'a Body> for SkeletonAttr {
(Occultsaurok, _) => (3.0, 0.5, -6.0),
(Mightysaurok, _) => (3.0, 0.5, -6.0),
(Slysaurok, _) => (3.0, 0.5, -6.0),
(Mindflayer, _) => (6.0, -2.0, 6.5),
},
foot: match (body.species, body.body_type) {
(Ogre, Male) => (4.0, 1.0, -13.5),
@ -285,6 +288,7 @@ impl<'a> From<&'a Body> for SkeletonAttr {
(Occultsaurok, _) => (3.5, 2.0, -12.0),
(Mightysaurok, _) => (3.5, 2.0, -12.0),
(Slysaurok, _) => (3.5, 2.0, -12.0),
(Mindflayer, _) => (4.5, -0.5, -12.5),
},
shl: match (body.species, body.body_type) {
(Dullahan, _) => (-4.75, -11.0, 8.5, 1.47, -0.2, 0.0),
@ -322,16 +326,19 @@ impl<'a> From<&'a Body> for SkeletonAttr {
sthl: match (body.species, body.body_type) {
(Ogre, Female) => (-1.0, -5.0, 12.0, 1.27, 0.0, 0.0),
(Occultsaurok, _) => (-1.0, -7.0, 12.0, 1.27, 0.0, 0.0),
(Mindflayer, _) => (-1.0, -5.0, 12.0, 1.27, 0.0, 0.0),
(_, _) => (11.0, 5.0, -4.0, 1.27, 0.0, 0.0),
},
sthr: match (body.species, body.body_type) {
(Ogre, Female) => (5.0, -3.5, 18.0, 1.57, 0.8, 0.0),
(Occultsaurok, _) => (7.0, -3.5, 18.0, 1.57, 0.8, 0.0),
(Mindflayer, _) => (7.0, -3.5, 18.0, 1.57, 0.8, 0.0),
(_, _) => (17.0, 7.5, 2.0, 1.57, 0.8, 0.0),
},
stc: match (body.species, body.body_type) {
(Ogre, Female) => (-10.0, 7.0, -23.0, -0.3, 0.15, 0.0),
(Occultsaurok, _) => (-10.0, 7.0, -22.0, -0.3, 0.15, 0.0),
(Mindflayer, _) => (-10.0, 7.0, -22.0, -0.3, 0.15, 0.0),
(_, _) => (-18.0, 1.0, -2.0, -0.3, 0.15, 0.0),
},
bhl: match (body.species, body.body_type) {

View File

@ -263,10 +263,10 @@ impl Animation for WieldAnimation {
next.main.orientation = Quaternion::rotation_y(0.0);
},
Some(ToolKind::Staff) => {
next.hand_l.position = Vec3::new(s_a.sthl.0, s_a.sthl.1, s_a.sthl.2);
next.hand_l.position = Vec3::new(s_a.sthl.0 + 2.0, s_a.sthl.1 - 5.5, s_a.sthl.2 - 5.0);
next.hand_l.orientation =
Quaternion::rotation_x(s_a.sthl.3) * Quaternion::rotation_y(s_a.sthl.4);
next.hand_r.position = Vec3::new(s_a.sthr.0, s_a.sthr.1, s_a.sthr.2);
next.hand_r.position = Vec3::new(s_a.sthr.0, s_a.sthr.1 - 5.5, s_a.sthr.2 - 5.0);
next.hand_r.orientation =
Quaternion::rotation_x(s_a.sthr.3) * Quaternion::rotation_y(s_a.sthr.4);
@ -278,7 +278,7 @@ impl Animation for WieldAnimation {
next.main.position = Vec3::new(0.0, 0.0, 0.0);
next.main.orientation = Quaternion::rotation_y(0.0);
next.control.position = Vec3::new(s_a.stc.0, s_a.stc.1, s_a.stc.2);
next.control.position = Vec3::new(s_a.stc.0, s_a.stc.1 + 5.5, s_a.stc.2);
next.control.orientation = Quaternion::rotation_x(-0.3 + u_slow * 0.1)
* Quaternion::rotation_y(0.15)
* Quaternion::rotation_z(u_slowalt * 0.08);