Adds mindflayer npc

This commit is contained in:
Snowram 2020-11-12 00:17:12 +01:00 committed by Robin Gilh
parent 14f6f9165f
commit ab63e4cd0c
21 changed files with 171 additions and 9 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": { "saurok_sly": {
"keyword": "saurok_sly", "keyword": "saurok_sly",
"generic": "Sly Saurok" "generic": "Sly Saurok"
},
"mindflayer": {
"keyword": "mindflayer",
"generic": "Mindflayer"
} }
} }
}, },

View File

@ -539,4 +539,64 @@
central: ("weapon.bow.longbow_saurok"), 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"), 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"),
)
),
}) })

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

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

View File

@ -139,6 +139,11 @@ impl LoadoutBuilder {
"common.items.npc_weapons.sword.dullahan_sword", "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(_) => { Body::Humanoid(_) => {
if is_giant { if is_giant {

View File

@ -191,6 +191,7 @@ impl<'a> From<&'a Body> for SkeletonAttr {
(Occultsaurok, _) => (6.0, 3.5), (Occultsaurok, _) => (6.0, 3.5),
(Mightysaurok, _) => (6.0, 3.5), (Mightysaurok, _) => (6.0, 3.5),
(Slysaurok, _) => (6.0, 3.5), (Slysaurok, _) => (6.0, 3.5),
(Mindflayer, _) => (5.0, 5.5),
}, },
jaw: match (body.species, body.body_type) { jaw: match (body.species, body.body_type) {
(Ogre, _) => (0.0, 0.0), (Ogre, _) => (0.0, 0.0),
@ -202,6 +203,7 @@ impl<'a> From<&'a Body> for SkeletonAttr {
(Occultsaurok, _) => (1.0, -2.5), (Occultsaurok, _) => (1.0, -2.5),
(Mightysaurok, _) => (1.0, -2.5), (Mightysaurok, _) => (1.0, -2.5),
(Slysaurok, _) => (1.0, -2.5), (Slysaurok, _) => (1.0, -2.5),
(Mindflayer, _) => (0.0, 0.0),
}, },
upper_torso: match (body.species, body.body_type) { upper_torso: match (body.species, body.body_type) {
(Ogre, Male) => (0.0, 28.0), (Ogre, Male) => (0.0, 28.0),
@ -214,6 +216,7 @@ impl<'a> From<&'a Body> for SkeletonAttr {
(Occultsaurok, _) => (3.0, 23.0), (Occultsaurok, _) => (3.0, 23.0),
(Mightysaurok, _) => (3.0, 23.0), (Mightysaurok, _) => (3.0, 23.0),
(Slysaurok, _) => (3.0, 23.0), (Slysaurok, _) => (3.0, 23.0),
(Mindflayer, _) => (0.0, 31.0),
}, },
lower_torso: match (body.species, body.body_type) { lower_torso: match (body.species, body.body_type) {
(Ogre, Male) => (1.0, -7.0), (Ogre, Male) => (1.0, -7.0),
@ -226,17 +229,14 @@ impl<'a> From<&'a Body> for SkeletonAttr {
(Occultsaurok, _) => (0.0, -6.0), (Occultsaurok, _) => (0.0, -6.0),
(Mightysaurok, _) => (0.0, -6.0), (Mightysaurok, _) => (0.0, -6.0),
(Slysaurok, _) => (0.0, -6.0), (Slysaurok, _) => (0.0, -6.0),
(Mindflayer, _) => (5.5, -18.0),
}, },
tail: match (body.species, body.body_type) { 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), (Werewolf, _) => (-5.5, -2.0),
(Occultsaurok, _) => (-4.5, -6.0), (Occultsaurok, _) => (-4.5, -6.0),
(Mightysaurok, _) => (-4.5, -6.0), (Mightysaurok, _) => (-4.5, -6.0),
(Slysaurok, _) => (-4.5, -6.0), (Slysaurok, _) => (-4.5, -6.0),
(_, _) => (0.0, 0.0),
}, },
shoulder: match (body.species, body.body_type) { shoulder: match (body.species, body.body_type) {
(Ogre, Male) => (12.0, 0.5, 0.0), (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), (Occultsaurok, _) => (7.5, 1.0, -1.5),
(Mightysaurok, _) => (7.5, 1.0, -1.5), (Mightysaurok, _) => (7.5, 1.0, -1.5),
(Slysaurok, _) => (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) { hand: match (body.species, body.body_type) {
(Ogre, Male) => (14.5, 0.0, -2.0), (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), (Occultsaurok, _) => (8.0, 1.5, -5.5),
(Mightysaurok, _) => (8.0, 1.5, -5.5), (Mightysaurok, _) => (8.0, 1.5, -5.5),
(Slysaurok, _) => (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) { leg: match (body.species, body.body_type) {
(Ogre, Male) => (0.0, 0.0, -4.0), (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), (Occultsaurok, _) => (3.0, 0.5, -6.0),
(Mightysaurok, _) => (3.0, 0.5, -6.0), (Mightysaurok, _) => (3.0, 0.5, -6.0),
(Slysaurok, _) => (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) { foot: match (body.species, body.body_type) {
(Ogre, Male) => (4.0, 1.0, -13.5), (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), (Occultsaurok, _) => (3.5, 2.0, -12.0),
(Mightysaurok, _) => (3.5, 2.0, -12.0), (Mightysaurok, _) => (3.5, 2.0, -12.0),
(Slysaurok, _) => (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) { shl: match (body.species, body.body_type) {
(Dullahan, _) => (-4.75, -11.0, 8.5, 1.47, -0.2, 0.0), (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) { sthl: match (body.species, body.body_type) {
(Ogre, Female) => (-1.0, -5.0, 12.0, 1.27, 0.0, 0.0), (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), (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), (_, _) => (11.0, 5.0, -4.0, 1.27, 0.0, 0.0),
}, },
sthr: match (body.species, body.body_type) { sthr: match (body.species, body.body_type) {
(Ogre, Female) => (5.0, -3.5, 18.0, 1.57, 0.8, 0.0), (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), (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), (_, _) => (17.0, 7.5, 2.0, 1.57, 0.8, 0.0),
}, },
stc: match (body.species, body.body_type) { stc: match (body.species, body.body_type) {
(Ogre, Female) => (-10.0, 7.0, -23.0, -0.3, 0.15, 0.0), (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), (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), (_, _) => (-18.0, 1.0, -2.0, -0.3, 0.15, 0.0),
}, },
bhl: match (body.species, body.body_type) { 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); next.main.orientation = Quaternion::rotation_y(0.0);
}, },
Some(ToolKind::Staff) => { 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 = next.hand_l.orientation =
Quaternion::rotation_x(s_a.sthl.3) * Quaternion::rotation_y(s_a.sthl.4); 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 = next.hand_r.orientation =
Quaternion::rotation_x(s_a.sthr.3) * Quaternion::rotation_y(s_a.sthr.4); 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.position = Vec3::new(0.0, 0.0, 0.0);
next.main.orientation = Quaternion::rotation_y(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) next.control.orientation = Quaternion::rotation_x(-0.3 + u_slow * 0.1)
* Quaternion::rotation_y(0.15) * Quaternion::rotation_y(0.15)
* Quaternion::rotation_z(u_slowalt * 0.08); * Quaternion::rotation_z(u_slowalt * 0.08);