Adds 3 new npcs, tusk ram new design

This commit is contained in:
Snowram 2021-02-18 01:41:34 +01:00 committed by jshipsey
parent 53b0ba286a
commit 1b9815dc34
63 changed files with 579 additions and 66 deletions

View File

@ -0,0 +1,14 @@
BasicBeam(
buildup_duration: 0.25,
recover_duration: 0.25,
beam_duration: 1.0,
base_hps: 60,
base_dps: 60,
tick_rate: 2.0,
range: 25.0,
max_angle: 1.0,
lifesteal_eff: 0.15,
energy_regen: 25,
energy_cost: 50,
energy_drain: 0,
)

View File

@ -0,0 +1,14 @@
BasicBeam(
buildup_duration: 0.4,
recover_duration: 0.25,
beam_duration: 0.5,
base_hps: 0,
base_dps: 150,
tick_rate: 3.0,
range: 15.0,
max_angle: 22.5,
lifesteal_eff: 0.0,
energy_regen: 0,
energy_cost: 0,
energy_drain: 0,
)

View File

@ -97,6 +97,11 @@
secondary: "common.abilities.unique.wendigomagic.singlestrike",
skills: [],
),
Unique(TidalClaws): (
primary: "common.abilities.staff.flamethrower",
secondary: "common.abilities.unique.wendigomagic.singlestrike",
skills: [],
),
Unique(QuadMedQuick): (
primary: "common.abilities.unique.quadmedquick.triplestrike",
secondary: "common.abilities.unique.quadmedquick.dash",
@ -151,6 +156,13 @@
secondary: "common.abilities.unique.quadlowbasic.singlestrike",
abilities: [],
),
Unique(QuadLowBeam): (
primary: "common.abilities.unique.quadlowbeam.healingbeam",
secondary: "common.abilities.unique.quadlowbreathe.triplestrike",
skills: [
"common.abilities.unique.quadlowbreathe.dash",
],
),
Unique(QuadSmallBasic): (
primary: "common.abilities.unique.quadsmallbasic.singlestrike",
secondary: "common.abilities.unique.quadsmallbasic.singlestrike",

View File

@ -0,0 +1,16 @@
ItemDef(
name: "Quad Small Beam",
description: "testing123",
kind: Tool(
(
kind: Unique(QuadLowBeam),
stats: (
equip_time_millis: 10,
power: 1.00,
poise_strength: 1.00,
speed: 1.00,
),
)
),
quality: Low,
)

View File

@ -0,0 +1,16 @@
ItemDef(
name: "Tidal Claws",
description: "Snip snap",
kind: Tool(
(
kind: Unique(TidalClaws),
stats: (
equip_time_millis: 500,
power: 1.00,
poise_strength: 1.00,
speed: 1.0,
),
)
),
quality: Low,
)

View File

@ -845,6 +845,10 @@
minotaur: (
keyword: "minotaur",
generic: "Minotaur"
),
tidalwarrior: (
keyword: "tidalwarrior",
generic: "Tidal Warrior"
)
)
),
@ -982,6 +986,10 @@
clownfish: (
keyword: "clownfish",
generic: "Clownfish"
),
piranha: (
keyword: "piranha",
generic: "Piranha"
)
)
),
@ -1065,7 +1073,11 @@
basilisk: (
keyword: "basilisk",
generic: "Basilisk"
)
),
deadwood: (
keyword: "deadwood",
generic: "Deadwood"
),
)
)
)

View File

@ -572,4 +572,56 @@
central: ("armor.empty"),
)
),
(Tidalwarrior, Male): (
head: (
offset: (-6.5, -6.5, -6.0),
central: ("npc.tidalwarrior.male.head"),
),
torso_upper: (
offset: (-9.0, -8.0, -10.5),
central: ("npc.tidalwarrior.male.torso_upper"),
),
torso_lower: (
offset: (-8.0, -7.0, -8.0),
central: ("npc.tidalwarrior.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"),
)
),
(Tidalwarrior, Female): (
head: (
offset: (-6.5, -6.5, -6.0),
central: ("npc.tidalwarrior.male.head"),
),
torso_upper: (
offset: (-9.0, -8.0, -10.5),
central: ("npc.tidalwarrior.male.torso_upper"),
),
torso_lower: (
offset: (-8.0, -7.0, -8.0),
central: ("npc.tidalwarrior.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"),
)
),
})

View File

@ -747,4 +747,72 @@
lateral: ("npc.minotaur.male.foot_r"),
)
),
(Tidalwarrior, Male): (
shoulder_l: (
offset: (-5.5, -5.5, -6.5),
lateral: ("npc.tidalwarrior.male.shoulder_l"),
),
shoulder_r: (
offset: (-5.5, -5.5, -6.5),
lateral: ("npc.tidalwarrior.male.shoulder_r"),
),
hand_l: (
offset: (-6.0, -3.5, -18.0),
lateral: ("npc.tidalwarrior.male.hand_l"),
),
hand_r: (
offset: (-6.0, -3.5, -18.0),
lateral: ("npc.tidalwarrior.male.hand_r"),
),
leg_l: (
offset: (-2.5, -3.0, -3.5),
lateral: ("npc.tidalwarrior.male.leg_l"),
),
leg_r: (
offset: (-2.5, -3.0, -3.5),
lateral: ("npc.tidalwarrior.male.leg_r"),
),
foot_l: (
offset: (-2.5, -4.5, -4.5),
lateral: ("npc.tidalwarrior.male.foot_l"),
),
foot_r: (
offset: (-2.5, -4.5, -4.5),
lateral: ("npc.tidalwarrior.male.foot_r"),
)
),
(Tidalwarrior, Female): (
shoulder_l: (
offset: (-5.5, -5.5, -6.5),
lateral: ("npc.tidalwarrior.male.shoulder_l"),
),
shoulder_r: (
offset: (-5.5, -5.5, -6.5),
lateral: ("npc.tidalwarrior.male.shoulder_r"),
),
hand_l: (
offset: (-6.0, -3.5, -18.0),
lateral: ("npc.tidalwarrior.male.hand_l"),
),
hand_r: (
offset: (-6.0, -3.5, -18.0),
lateral: ("npc.tidalwarrior.male.hand_r"),
),
leg_l: (
offset: (-2.5, -3.0, -3.5),
lateral: ("npc.tidalwarrior.male.leg_l"),
),
leg_r: (
offset: (-2.5, -3.0, -3.5),
lateral: ("npc.tidalwarrior.male.leg_r"),
),
foot_l: (
offset: (-2.5, -4.5, -4.5),
lateral: ("npc.tidalwarrior.male.foot_l"),
),
foot_r: (
offset: (-2.5, -4.5, -4.5),
lateral: ("npc.tidalwarrior.male.foot_r"),
)
),
})

View File

@ -43,6 +43,10 @@
vox_spec: ("armor.empty", (0.0, 0.0, 0.0)),
color: None
),
"common.items.npc_weapons.unique.tidal_claws": (
vox_spec: ("armor.empty", (0.0, 0.0, 0.0)),
color: None
),
"common.items.npc_weapons.spear.wooden_spear": (
vox_spec: ("weapon.spear.sahagin", (-1.5, -3.0, -5.0)),
color: None

View File

@ -749,6 +749,10 @@
vox_spec: ("armor.empty", (0.0, 0.0, 0.0)),
color: None
),
"common.items.npc_weapons.unique.tidal_claws": (
vox_spec: ("armor.empty", (0.0, 0.0, 0.0)),
color: None
),
"common.items.npc_weapons.spear.wooden_spear": (
vox_spec: ("weapon.spear.sahagin", (-1.5, -3.0, -5.0)),
color: None

View File

@ -19,4 +19,24 @@
central: ("npc.clownfish.male.tail"),
),
),
(Piranha, Male): (
chest: (
offset: (-1.5, -5.5, -5.5),
central: ("npc.piranha.male.chest"),
),
tail: (
offset: (-0.5, -5.0, -3.5),
central: ("npc.piranha.male.tail"),
),
),
(Piranha, Female): (
chest: (
offset: (-1.5, -5.5, -5.5),
central: ("npc.piranha.male.chest"),
),
tail: (
offset: (-0.5, -5.0, -3.5),
central: ("npc.piranha.male.tail"),
),
),
})

View File

@ -2,21 +2,41 @@
(Clownfish, Male): (
fin_l: (
offset: (-0.5, -3.0, -4.0),
lateral: ("npc.clownfish.male.fin_r"),
lateral: ("npc.clownfish.male.fin"),
),
fin_r: (
offset: (-0.5, -3.0, -4.0),
lateral: ("npc.clownfish.male.fin_r"),
lateral: ("npc.clownfish.male.fin"),
),
),
(Clownfish, Female): (
fin_l: (
offset: (-0.5, -3.0, -4.0),
lateral: ("npc.clownfish.male.fin_r"),
lateral: ("npc.clownfish.male.fin"),
),
fin_r: (
offset: (-0.5, -3.0, -4.0),
lateral: ("npc.clownfish.male.fin_r"),
lateral: ("npc.clownfish.male.fin"),
),
),
(Piranha, Male): (
fin_l: (
offset: (-0.5, -4.0, -3.0),
lateral: ("npc.piranha.male.fin"),
),
fin_r: (
offset: (-0.5, -4.0, -3.0),
lateral: ("npc.piranha.male.fin"),
),
),
(Piranha, Female): (
fin_l: (
offset: (-0.5, -4.0, -3.0),
lateral: ("npc.piranha.male.fin"),
),
fin_r: (
offset: (-0.5, -4.0, -3.0),
lateral: ("npc.piranha.male.fin"),
),
),
})

View File

@ -973,6 +973,10 @@
vox_spec: ("armor.empty", (0.0, 0.0, 0.0)),
color: None
),
"common.items.npc_weapons.unique.tidal_claws": (
vox_spec: ("armor.empty", (0.0, 0.0, 0.0)),
color: None
),
//BIPEDSMALL
"common.items.npc_weapons.spear.wooden_spear": (
vox_spec: ("weapon.spear.sahagin", (-1.5, -3.0, -5.0)),

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

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.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -676,4 +676,56 @@
central: ("npc.basilisk.male.tail_front"),
),
),
(Deadwood, Male): (
upper: (
offset: (-3.5, -3.5, -4.0),
central: ("npc.deadwood.male.head_upper"),
),
lower: (
offset: (0.0, 0.0, 0.0),
central: ("armor.empty"),
),
jaw: (
offset: (0.0, 0.0, 0.0),
central: ("armor.empty"),
),
chest: (
offset: (-12.5, -11.0, -9.0),
central: ("npc.deadwood.male.chest"),
),
tail_rear: (
offset: (0.0, 0.0, 0.0),
central: ("armor.empty"),
),
tail_front: (
offset: (0.0, 0.0, 0.0),
central: ("armor.empty"),
),
),
(Deadwood, Female): (
upper: (
offset: (-3.5, -3.5, -4.0),
central: ("npc.deadwood.male.head_upper"),
),
lower: (
offset: (0.0, 0.0, 0.0),
central: ("armor.empty"),
),
jaw: (
offset: (0.0, 0.0, 0.0),
central: ("armor.empty"),
),
chest: (
offset: (-12.5, -11.0, -9.0),
central: ("npc.deadwood.male.chest"),
),
tail_rear: (
offset: (0.0, 0.0, 0.0),
central: ("armor.empty"),
),
tail_front: (
offset: (0.0, 0.0, 0.0),
central: ("armor.empty"),
),
),
})

View File

@ -467,4 +467,40 @@
lateral: ("npc.basilisk.male.foot_br"),
),
),
(Deadwood, Male): (
front_left: (
offset: (-5.0, -2.0, -7.0),
lateral: ("npc.deadwood.male.foot_fr"),
),
front_right: (
offset: (0.0, -2.0, -7.0),
lateral: ("npc.deadwood.male.foot_fr"),
),
back_left: (
offset: (-5.0, -1.0, -7.0),
lateral: ("npc.deadwood.male.foot_br"),
),
back_right: (
offset: (0.0, -1.0, -7.0),
lateral: ("npc.deadwood.male.foot_br"),
),
),
(Deadwood, Female): (
front_left: (
offset: (-5.0, -2.0, -7.0),
lateral: ("npc.deadwood.male.foot_fr"),
),
front_right: (
offset: (0.0, -2.0, -7.0),
lateral: ("npc.deadwood.male.foot_fr"),
),
back_left: (
offset: (-5.0, -1.0, -7.0),
lateral: ("npc.deadwood.male.foot_br"),
),
back_right: (
offset: (0.0, -1.0, -7.0),
lateral: ("npc.deadwood.male.foot_br"),
),
),
})

View File

@ -121,61 +121,61 @@
),
(Tuskram, Male): (
head: (
offset: (-10.0, -2.0, -6.5),
offset: (-15.0, -2.0, -10.0),
central: ("npc.tuskram.male.head"),
),
neck: (
offset: (-4.0, -2.0, -3.5),
offset: (-4.0, -3.0, -6.0),
central: ("npc.tuskram.male.neck"),
),
jaw: (
offset: (-2.0, 0.0, -1.5),
offset: (-5.0, 0.0, -8.0),
central: ("npc.tuskram.male.jaw"),
),
torso_front: (
offset: (-6.0, -15.0, -6.5),
offset: (-7.0, -14.0, -8.0),
central: ("npc.tuskram.male.torso_front"),
),
torso_back: (
offset: (-4.0, -10.0, -4.5),
offset: (-5.0, -10.0, -5.5),
central: ("npc.tuskram.male.torso_back"),
),
ears: (
offset: (-0.5, -0.5, 0.0),
offset: (0.0, 0.0, 0.0),
central: ("armor.empty"),
),
tail: (
offset: (-3.0, -7.0, -8.0),
offset: (-3.0, -6.0, -8.0),
central: ("npc.tuskram.male.tail"),
),
),
(Tuskram, Female): (
head: (
offset: (-10.0, -2.0, -6.5),
offset: (-15.0, -2.0, -10.0),
central: ("npc.tuskram.male.head"),
),
neck: (
offset: (-4.0, -2.0, -3.5),
offset: (-4.0, -3.0, -6.0),
central: ("npc.tuskram.male.neck"),
),
jaw: (
offset: (-2.0, 0.0, -1.5),
offset: (-5.0, 0.0, -1.5),
central: ("npc.tuskram.male.jaw"),
),
torso_front: (
offset: (-6.0, -15.0, -6.5),
offset: (-7.0, -14.0, -8.0),
central: ("npc.tuskram.male.torso_front"),
),
torso_back: (
offset: (-4.0, -10.0, -4.5),
offset: (-5.0, -10.0, -5.5),
central: ("npc.tuskram.male.torso_back"),
),
ears: (
offset: (-0.5, -0.5, -0.0),
offset: (0.0, 0.0, 0.0),
central: ("armor.empty"),
),
tail: (
offset: (-3.0, -7.0, -8.0),
offset: (-3.0, -6.0, -8.0),
central: ("npc.tuskram.male.tail"),
),
),

View File

@ -137,11 +137,11 @@
),
(Tuskram, Male): (
leg_fl: (
offset: (-2.0, -2.5, -3.0),
offset: (-2.5, -4.5, -5.0),
lateral: ("npc.tuskram.male.leg_fr"),
),
leg_fr: (
offset: (-2.0, -2.5, -3.0),
offset: (-2.5, -4.5, -5.0),
lateral: ("npc.tuskram.male.leg_fr"),
),
leg_bl: (
@ -171,11 +171,11 @@
),
(Tuskram, Female): (
leg_fl: (
offset: (-2.0, -2.5, -3.0),
offset: (-2.5, -4.5, -5.0),
lateral: ("npc.tuskram.male.leg_fr"),
),
leg_fr: (
offset: (-2.0, -2.5, -3.0),
offset: (-2.5, -4.5, -5.0),
lateral: ("npc.tuskram.male.leg_fr"),
),
leg_bl: (

View File

@ -25,6 +25,7 @@ pub enum Tactic {
TailSlap,
QuadLowQuick,
QuadLowBasic,
QuadLowBeam,
QuadMedJump,
QuadMedBasic,
Lavadrake,

View File

@ -188,6 +188,7 @@ impl Body {
quadruped_low::Species::Salamander => 2.4,
quadruped_low::Species::Pangolin => 2.0,
quadruped_low::Species::Lavadrake => 2.5,
quadruped_low::Species::Deadwood => 0.5,
_ => 1.6,
},
Body::Theropod(body) => match body.species {
@ -365,6 +366,7 @@ impl Body {
biped_large::Species::Troll => 1500,
biped_large::Species::Dullahan => 2000,
biped_large::Species::Mindflayer => 8000,
biped_large::Species::Tidalwarrior => 2500,
_ => 1000,
},
Body::BipedSmall(_) => 10000,
@ -392,6 +394,7 @@ impl Body {
quadruped_low::Species::Sandshark => 600,
quadruped_low::Species::Hakulaq => 400,
quadruped_low::Species::Lavadrake => 900,
quadruped_low::Species::Deadwood => 600,
_ => 200,
},
@ -461,6 +464,7 @@ impl Body {
biped_large::Species::Troll => 60,
biped_large::Species::Dullahan => 120,
biped_large::Species::Mindflayer => 250,
biped_large::Species::Tidalwarrior => 90,
_ => 100,
},
Body::BipedSmall(_) => 10,
@ -479,6 +483,7 @@ impl Body {
quadruped_low::Species::Maneater => 30,
quadruped_low::Species::Sandshark => 40,
quadruped_low::Species::Hakulaq => 10,
quadruped_low::Species::Deadwood => 30,
_ => 20,
},
}

View File

@ -45,6 +45,7 @@ make_case_elim!(
Slysaurok = 8,
Mindflayer = 9,
Minotaur = 10,
Tidalwarrior = 11,
}
);
@ -64,6 +65,7 @@ pub struct AllSpecies<SpeciesMeta> {
pub saurok_sly: SpeciesMeta,
pub mindflayer: SpeciesMeta,
pub minotaur: SpeciesMeta,
pub tidalwarrior: SpeciesMeta,
}
impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies<SpeciesMeta> {
@ -83,11 +85,12 @@ impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies<SpeciesMeta>
Species::Slysaurok => &self.saurok_sly,
Species::Mindflayer => &self.mindflayer,
Species::Minotaur => &self.minotaur,
Species::Tidalwarrior => &self.tidalwarrior,
}
}
}
pub const ALL_SPECIES: [Species; 11] = [
pub const ALL_SPECIES: [Species; 12] = [
Species::Ogre,
Species::Cyclops,
Species::Wendigo,
@ -99,6 +102,7 @@ pub const ALL_SPECIES: [Species; 11] = [
Species::Slysaurok,
Species::Mindflayer,
Species::Minotaur,
Species::Tidalwarrior,
];
impl<'a, SpeciesMeta: 'a> IntoIterator for &'a AllSpecies<SpeciesMeta> {

View File

@ -35,6 +35,7 @@ make_case_elim!(
#[repr(u32)]
pub enum Species {
Clownfish = 0,
Piranha = 1,
}
);
@ -44,6 +45,7 @@ make_case_elim!(
#[derive(Clone, Debug, Deserialize)]
pub struct AllSpecies<SpeciesMeta> {
pub clownfish: SpeciesMeta,
pub piranha: SpeciesMeta,
}
impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies<SpeciesMeta> {
@ -53,11 +55,12 @@ impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies<SpeciesMeta>
fn index(&self, &index: &'a Species) -> &Self::Output {
match index {
Species::Clownfish => &self.clownfish,
Species::Piranha => &self.piranha,
}
}
}
pub const ALL_SPECIES: [Species; 1] = [Species::Clownfish];
pub const ALL_SPECIES: [Species; 2] = [Species::Clownfish, Species::Piranha];
impl<'a, SpeciesMeta: 'a> IntoIterator for &'a AllSpecies<SpeciesMeta> {
type IntoIter = std::iter::Copied<std::slice::Iter<'static, Self::Item>>;

View File

@ -47,6 +47,7 @@ make_case_elim!(
Hakulaq = 10,
Lavadrake = 11,
Basilisk = 12,
Deadwood = 13,
}
);
@ -68,6 +69,7 @@ pub struct AllSpecies<SpeciesMeta> {
pub hakulaq: SpeciesMeta,
pub lavadrake: SpeciesMeta,
pub basilisk: SpeciesMeta,
pub deadwood: SpeciesMeta,
}
impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies<SpeciesMeta> {
@ -89,11 +91,12 @@ impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies<SpeciesMeta>
Species::Hakulaq => &self.hakulaq,
Species::Lavadrake => &self.lavadrake,
Species::Basilisk => &self.basilisk,
Species::Deadwood => &self.deadwood,
}
}
}
pub const ALL_SPECIES: [Species; 13] = [
pub const ALL_SPECIES: [Species; 14] = [
Species::Crocodile,
Species::Alligator,
Species::Salamander,
@ -107,6 +110,7 @@ pub const ALL_SPECIES: [Species; 13] = [
Species::Hakulaq,
Species::Lavadrake,
Species::Basilisk,
Species::Deadwood,
];
impl<'a, SpeciesMeta: 'a> IntoIterator for &'a AllSpecies<SpeciesMeta> {

View File

@ -375,6 +375,7 @@ pub enum UniqueKind {
StoneGolemFist,
BeastClaws,
WendigoMagic,
TidalClaws,
QuadMedQuick,
QuadMedJump,
QuadMedHoof,
@ -385,6 +386,7 @@ pub enum UniqueKind {
QuadLowTail,
QuadLowQuick,
QuadLowBasic,
QuadLowBeam,
QuadSmallBasic,
TheropodBasic,
TheropodBird,

View File

@ -154,6 +154,11 @@ impl LoadoutBuilder {
"common.items.npc_weapons.unique.quadlowbreathe",
));
},
quadruped_low::Species::Deadwood => {
main_tool = Some(Item::new_from_asset_expect(
"common.items.npc_weapons.unique.quadlowbeam",
));
},
_ => {
main_tool = Some(Item::new_from_asset_expect(
"common.items.npc_weapons.unique.quadlowbasic",
@ -241,6 +246,11 @@ impl LoadoutBuilder {
"common.items.npc_weapons.hammer.cyclops_hammer",
));
},
(biped_large::Species::Tidalwarrior, _) => {
main_tool = Some(Item::new_from_asset_expect(
"common.items.npc_weapons.unique.tidal_claws",
));
},
},
Body::Object(object::Body::Crossbow) => {
main_tool = Some(Item::new_from_asset_expect(

View File

@ -91,6 +91,7 @@ impl Body {
quadruped_low::Species::Hakulaq => 140.0,
quadruped_low::Species::Lavadrake => 100.0,
quadruped_low::Species::Basilisk => 120.0,
quadruped_low::Species::Deadwood => 140.0,
},
}
}

View File

@ -531,6 +531,7 @@ impl<'a> System<'a> for Sys {
Tactic::QuadLowBasic
},
Some(ToolKind::Unique(UniqueKind::QuadLowBreathe)) => Tactic::Lavadrake,
Some(ToolKind::Unique(UniqueKind::QuadLowBeam)) => Tactic::Lavadrake,
Some(ToolKind::Unique(UniqueKind::TheropodBasic)) => Tactic::Theropod,
Some(ToolKind::Unique(UniqueKind::TheropodBird)) => Tactic::Theropod,
Some(ToolKind::Unique(UniqueKind::ObjectTurret)) => Tactic::Turret,
@ -1349,7 +1350,7 @@ impl<'a> System<'a> for Sys {
do_idle = true;
}
},
Tactic::Lavadrake => {
Tactic::Lavadrake | Tactic::QuadLowBeam => {
if dist_sqrd < (2.5 * min_attack_dist * scale).powi(2) {
inputs.move_dir = Vec2::zero();
inputs.secondary.set_state(true);

View File

@ -154,6 +154,31 @@ impl Animation for AlphaAnimation {
* Quaternion::rotation_z(move1 * -0.5 + move2 * 0.6);
next.head.orientation = Quaternion::rotation_x(move1 * 0.3);
},
Some(ToolKind::Unique(UniqueKind::TidalClaws)) => {
next.torso.position = Vec3::new(0.0, 0.0, move1 * -0.3);
next.upper_torso.orientation = Quaternion::rotation_x(move1 * -0.5 + move2 * -0.4);
next.lower_torso.orientation = Quaternion::rotation_x(move1 * 0.5 + move2 * 0.4);
next.shoulder_l.orientation = Quaternion::rotation_x(
move1 * 0.4 + 0.4 * speednorm + (footrotl * -0.2) * speednorm,
);
next.shoulder_r.orientation = Quaternion::rotation_x(
move1 * 0.4 + 0.4 * speednorm + (footrotl * -0.2) * speednorm,
);
next.control_l.position =
Vec3::new(-14.0 + move2 * 9.0, 12.0 + move1 * 6.0, -12.0 + move1 * 9.0);
next.control_r.position =
Vec3::new(14.0 + move2 * -9.0, 12.0 + move1 * 6.0, -12.0 + move1 * 9.0);
next.control_l.orientation = Quaternion::rotation_x(PI / 3.0 + move1 * 0.5)
* Quaternion::rotation_y(-0.15)
* Quaternion::rotation_z(move1 * 0.5 + move2 * -0.6);
next.control_r.orientation = Quaternion::rotation_x(PI / 3.0 + move1 * 0.5)
* Quaternion::rotation_y(0.15)
* Quaternion::rotation_z(move1 * -0.5 + move2 * 0.6);
next.head.orientation = Quaternion::rotation_x(move1 * 0.3);
},
_ => {},
}
next

View File

@ -153,6 +153,31 @@ impl Animation for BetaAnimation {
* Quaternion::rotation_z(move1 * -0.5 + move2 * 0.6);
next.head.orientation = Quaternion::rotation_x(move1 * 0.3);
},
Some(ToolKind::Unique(UniqueKind::TidalClaws)) => {
next.torso.position = Vec3::new(0.0, 0.0, move1 * -0.3);
next.upper_torso.orientation = Quaternion::rotation_x(move1 * -0.5 + move2 * -0.4);
next.lower_torso.orientation = Quaternion::rotation_x(move1 * 0.5 + move2 * 0.4);
next.shoulder_l.orientation = Quaternion::rotation_x(
move1 * 0.4 + 0.4 * speednorm + (footrotl * -0.2) * speednorm,
);
next.shoulder_r.orientation = Quaternion::rotation_x(
move1 * 0.4 + 0.4 * speednorm + (footrotl * -0.2) * speednorm,
);
next.control_l.position =
Vec3::new(-14.0 + move2 * 9.0, 12.0 + move1 * 6.0, -12.0 + move1 * 9.0);
next.control_r.position =
Vec3::new(14.0 + move2 * -9.0, 12.0 + move1 * 6.0, -12.0 + move1 * 9.0);
next.control_l.orientation = Quaternion::rotation_x(PI / 3.0 + move1 * 0.5)
* Quaternion::rotation_y(-0.15)
* Quaternion::rotation_z(move1 * 0.5 + move2 * -0.6);
next.control_r.orientation = Quaternion::rotation_x(PI / 3.0 + move1 * 0.5)
* Quaternion::rotation_y(0.15)
* Quaternion::rotation_z(move1 * -0.5 + move2 * 0.6);
next.head.orientation = Quaternion::rotation_x(move1 * 0.3);
},
_ => {},
}
next

View File

@ -205,6 +205,7 @@ impl<'a> From<&'a Body> for SkeletonAttr {
(Slysaurok, _) => (6.0, 3.5),
(Mindflayer, _) => (5.0, 5.5),
(Minotaur, _) => (6.0, 3.0),
(Tidalwarrior, _) => (6.5, 5.0),
},
jaw: match (body.species, body.body_type) {
(Ogre, _) => (0.0, 0.0),
@ -218,6 +219,7 @@ impl<'a> From<&'a Body> for SkeletonAttr {
(Slysaurok, _) => (1.0, -2.5),
(Mindflayer, _) => (0.0, 0.0),
(Minotaur, _) => (2.0, -4.0),
(Tidalwarrior, _) => (0.0, 0.0),
},
upper_torso: match (body.species, body.body_type) {
(Ogre, Male) => (0.0, 27.5),
@ -232,6 +234,7 @@ impl<'a> From<&'a Body> for SkeletonAttr {
(Slysaurok, _) => (3.0, 24.0),
(Mindflayer, _) => (0.0, 30.5),
(Minotaur, _) => (-1.0, 31.5),
(Tidalwarrior, _) => (-1.0, 25.0),
},
lower_torso: match (body.species, body.body_type) {
(Ogre, Male) => (1.0, -7.0),
@ -246,6 +249,7 @@ impl<'a> From<&'a Body> for SkeletonAttr {
(Slysaurok, _) => (0.0, -6.0),
(Mindflayer, _) => (3.5, -19.5),
(Minotaur, _) => (1.5, -8.5),
(Tidalwarrior, _) => (0.0, -9.5),
},
tail: match (body.species, body.body_type) {
(Werewolf, _) => (-5.5, -2.0),
@ -268,6 +272,7 @@ impl<'a> From<&'a Body> for SkeletonAttr {
(Slysaurok, _) => (7.5, 1.0, 1.5),
(Mindflayer, _) => (8.0, 0.5, -1.0),
(Minotaur, _) => (10.0, 1.0, -1.0),
(Tidalwarrior, _) => (14.0, -0.5, 2.0),
},
hand: match (body.species, body.body_type) {
(Ogre, Male) => (14.5, 0.0, -4.0),
@ -282,6 +287,7 @@ impl<'a> From<&'a Body> for SkeletonAttr {
(Slysaurok, _) => (8.0, 1.5, -5.5),
(Mindflayer, _) => (9.0, 0.5, -4.5),
(Minotaur, _) => (12.5, 0.5, -7.0),
(Tidalwarrior, _) => (15.5, -0.5, -3.0),
},
leg: match (body.species, body.body_type) {
(Ogre, Male) => (0.0, 0.0, -4.0),
@ -296,6 +302,7 @@ impl<'a> From<&'a Body> for SkeletonAttr {
(Slysaurok, _) => (3.0, 0.5, -4.0),
(Mindflayer, _) => (6.0, -2.0, 6.5),
(Minotaur, _) => (5.0, 0.0, -10.0),
(Tidalwarrior, _) => (2.5, 0.0, -5.5),
},
foot: match (body.species, body.body_type) {
(Ogre, Male) => (4.0, 1.0, -12.0),
@ -310,6 +317,7 @@ impl<'a> From<&'a Body> for SkeletonAttr {
(Slysaurok, _) => (3.5, 3.5, -10.0),
(Mindflayer, _) => (4.5, 1.5, -7.0),
(Minotaur, _) => (6.0, 4.5, -17.5),
(Tidalwarrior, _) => (3.5, 0.5, -10.5),
},
scaler: match (body.species, body.body_type) {
(Ogre, Male) => 1.4,
@ -324,20 +332,16 @@ impl<'a> From<&'a Body> for SkeletonAttr {
(Slysaurok, _) => 1.2,
(Mindflayer, _) => 1.5,
(Minotaur, _) => 2.0,
(Tidalwarrior, _) => 2.0,
},
tempo: match (body.species, body.body_type) {
(Ogre, Male) => 0.9,
(Ogre, Female) => 0.9,
(Cyclops, _) => 0.8,
(Wendigo, _) => 1.0,
(Troll, _) => 0.9,
(Dullahan, _) => 0.8,
(Werewolf, _) => 1.0,
(Occultsaurok, _) => 1.0,
(Mightysaurok, _) => 1.0,
(Slysaurok, _) => 1.0,
(Mindflayer, _) => 1.0,
(Minotaur, _) => 0.8,
_ => 1.0,
},
grip: match (body.species, body.body_type) {
(Ogre, Male) => 13.0,
@ -352,6 +356,7 @@ impl<'a> From<&'a Body> for SkeletonAttr {
(Slysaurok, _) => 10.0,
(Mindflayer, _) => 12.0,
(Minotaur, _) => 14.0,
(Tidalwarrior, _) => 14.0,
},
shl: match (body.species, body.body_type) {
(Dullahan, _) => (-4.75, -11.0, 8.5, 1.47, -0.2, 0.0),

View File

@ -240,6 +240,15 @@ impl Animation for WieldAnimation {
next.control_r.orientation =
Quaternion::rotation_x(PI / 3.0) * Quaternion::rotation_y(0.15);
},
Some(ToolKind::Unique(UniqueKind::TidalClaws)) => {
next.control_l.position = Vec3::new(-14.0, 12.0, -12.0);
next.control_r.position = Vec3::new(14.0, 12.0, -12.0);
next.control_l.orientation =
Quaternion::rotation_x(PI / 3.0) * Quaternion::rotation_y(-0.15);
next.control_r.orientation =
Quaternion::rotation_x(PI / 3.0) * Quaternion::rotation_y(0.15);
},
Some(ToolKind::Unique(UniqueKind::BeastClaws)) => {
next.shoulder_l.position =
Vec3::new(-s_a.shoulder.0, s_a.shoulder.1, s_a.shoulder.2);

View File

@ -80,18 +80,23 @@ impl<'a> From<&'a Body> for SkeletonAttr {
Self {
chest: match (body.species, body.body_type) {
(Clownfish, _) => (0.0, 5.0),
(Piranha, _) => (0.0, 5.0),
},
tail: match (body.species, body.body_type) {
(Clownfish, _) => (-7.5, -0.5),
(Piranha, _) => (-5.5, -0.5),
},
fin: match (body.species, body.body_type) {
(Clownfish, _) => (2.0, 0.5, 1.0),
(Piranha, _) => (2.0, 0.5, -0.5),
},
tempo: match (body.species, body.body_type) {
(Clownfish, _) => 5.0,
(Piranha, _) => 5.0,
},
amplitude: match (body.species, body.body_type) {
(Clownfish, _) => 4.0,
(Piranha, _) => 4.0,
},
}
}

View File

@ -132,6 +132,7 @@ impl<'a> From<&'a Body> for SkeletonAttr {
(Hakulaq, _) => (8.0, 10.0),
(Lavadrake, _) => (7.0, 8.0),
(Basilisk, _) => (11.0, 13.5),
(Deadwood, _) => (2.0, -3.0),
},
head_lower: match (body.species, body.body_type) {
(Crocodile, _) => (8.0, 0.0),
@ -148,6 +149,7 @@ impl<'a> From<&'a Body> for SkeletonAttr {
(Hakulaq, _) => (10.5, 1.0),
(Lavadrake, _) => (11.5, -6.0),
(Basilisk, _) => (8.5, -6.5),
(Deadwood, _) => (0.0, 0.0),
},
jaw: match (body.species, body.body_type) {
(Crocodile, _) => (2.5, -3.0),
@ -164,6 +166,7 @@ impl<'a> From<&'a Body> for SkeletonAttr {
(Hakulaq, _) => (-6.5, -4.0),
(Lavadrake, _) => (3.0, -5.0),
(Basilisk, _) => (1.5, 1.0),
(Deadwood, _) => (-1.0, 4.0),
},
chest: match (body.species, body.body_type) {
(Crocodile, _) => (0.0, 5.0),
@ -180,6 +183,7 @@ impl<'a> From<&'a Body> for SkeletonAttr {
(Hakulaq, _) => (0.0, 13.5),
(Lavadrake, _) => (0.0, 16.5),
(Basilisk, _) => (0.0, 16.5),
(Deadwood, _) => (0.0, 12.0),
},
tail_rear: match (body.species, body.body_type) {
(Crocodile, _) => (-12.5, -1.0),
@ -196,6 +200,7 @@ impl<'a> From<&'a Body> for SkeletonAttr {
(Hakulaq, _) => (-9.0, -2.0),
(Lavadrake, _) => (-12.0, -2.0),
(Basilisk, _) => (-10.0, -3.0),
(Deadwood, _) => (-15.0, 4.0),
},
tail_front: match (body.species, body.body_type) {
(Crocodile, _) => (-6.0, 0.0),
@ -212,6 +217,7 @@ impl<'a> From<&'a Body> for SkeletonAttr {
(Hakulaq, _) => (-6.0, -5.5),
(Lavadrake, _) => (-7.0, -4.5),
(Basilisk, _) => (-2.5, -4.5),
(Deadwood, _) => (-1.0, 4.0),
},
feet_f: match (body.species, body.body_type) {
(Crocodile, _) => (3.5, 6.0, -1.0),
@ -228,6 +234,7 @@ impl<'a> From<&'a Body> for SkeletonAttr {
(Hakulaq, _) => (4.5, 2.0, -4.5),
(Lavadrake, _) => (4.5, 4.0, -6.5),
(Basilisk, _) => (6.5, 4.0, -7.5),
(Deadwood, _) => (3.5, 4.0, -5.0),
},
feet_b: match (body.species, body.body_type) {
(Crocodile, _) => (3.5, -6.0, -1.0),
@ -244,6 +251,7 @@ impl<'a> From<&'a Body> for SkeletonAttr {
(Hakulaq, _) => (3.5, -8.0, -4.5),
(Lavadrake, _) => (3.5, -8.0, -6.5),
(Basilisk, _) => (4.5, -13.0, -7.5),
(Deadwood, _) => (3.5, -6.0, -5.0),
},
lean: match (body.species, body.body_type) {
(Pangolin, _) => (0.4, 0.0),

View File

@ -144,7 +144,7 @@ impl<'a> From<&'a Body> for SkeletonAttr {
head: match (body.species, body.body_type) {
(Grolgar, _) => (0.0, -1.0),
(Saber, _) => (5.0, -3.0),
(Tuskram, _) => (2.0, 1.0),
(Tuskram, _) => (0.0, 0.0),
(Lion, _) => (4.5, 2.0),
(Tarasque, _) => (-4.0, 3.5),
(Tiger, _) => (2.0, 1.0),
@ -205,7 +205,7 @@ impl<'a> From<&'a Body> for SkeletonAttr {
jaw: match (body.species, body.body_type) {
(Grolgar, _) => (7.0, 2.0),
(Saber, _) => (2.5, -2.0),
(Tuskram, _) => (7.5, -3.5),
(Tuskram, _) => (4.0, -5.0),
(Lion, _) => (3.5, -4.0),
(Tarasque, _) => (9.0, -9.5),
(Tiger, _) => (3.0, -3.5),
@ -235,7 +235,7 @@ impl<'a> From<&'a Body> for SkeletonAttr {
tail: match (body.species, body.body_type) {
(Grolgar, _) => (-11.5, -0.5),
(Saber, _) => (-11.0, 0.0),
(Tuskram, _) => (-9.0, 2.0),
(Tuskram, _) => (-8.0, 2.0),
(Lion, _) => (-11.0, 1.0),
(Tarasque, _) => (-11.0, 0.0),
(Tiger, _) => (-13.5, 3.0),
@ -265,7 +265,7 @@ impl<'a> From<&'a Body> for SkeletonAttr {
torso_front: match (body.species, body.body_type) {
(Grolgar, _) => (10.0, 13.0),
(Saber, _) => (14.0, 13.0),
(Tuskram, _) => (10.0, 14.5),
(Tuskram, _) => (10.0, 16.0),
(Lion, _) => (10.0, 12.5),
(Tarasque, _) => (11.5, 17.5),
(Tiger, _) => (10.0, 13.0),
@ -295,7 +295,7 @@ impl<'a> From<&'a Body> for SkeletonAttr {
torso_back: match (body.species, body.body_type) {
(Grolgar, _) => (-10.0, 1.5),
(Saber, _) => (-13.5, 0.0),
(Tuskram, _) => (-12.5, -2.0),
(Tuskram, _) => (-12.0, -2.5),
(Lion, _) => (-12.0, -0.5),
(Tarasque, _) => (-14.0, -1.0),
(Tiger, _) => (-13.0, -0.5),
@ -325,7 +325,7 @@ impl<'a> From<&'a Body> for SkeletonAttr {
ears: match (body.species, body.body_type) {
(Grolgar, _) => (5.0, 8.0),
(Saber, _) => (3.0, 5.5),
(Tuskram, _) => (5.5, 12.0),
(Tuskram, _) => (0.0, 0.0),
(Lion, _) => (2.0, 3.5),
(Tarasque, _) => (12.0, -3.0),
(Tiger, _) => (2.5, 4.0),
@ -355,7 +355,7 @@ impl<'a> From<&'a Body> for SkeletonAttr {
leg_f: match (body.species, body.body_type) {
(Grolgar, _) => (7.5, -5.5, -1.0),
(Saber, _) => (7.0, -4.0, -2.5),
(Tuskram, _) => (6.0, -6.5, -4.0),
(Tuskram, _) => (8.5, -4.5, -2.0),
(Lion, _) => (6.5, -6.5, -1.5),
(Tarasque, _) => (7.0, -8.0, -6.0),
(Tiger, _) => (6.0, -6.0, -1.5),
@ -385,7 +385,7 @@ impl<'a> From<&'a Body> for SkeletonAttr {
leg_b: match (body.species, body.body_type) {
(Grolgar, _) => (6.0, -6.5, -4.0),
(Saber, _) => (6.0, -7.0, -3.5),
(Tuskram, _) => (5.0, -4.5, -2.5),
(Tuskram, _) => (6.0, -5.5, -2.5),
(Lion, _) => (6.0, -5.0, -1.5),
(Tarasque, _) => (6.0, -6.5, -6.5),
(Tiger, _) => (6.0, -7.0, -1.0),
@ -415,7 +415,7 @@ impl<'a> From<&'a Body> for SkeletonAttr {
feet_f: match (body.species, body.body_type) {
(Grolgar, _) => (0.0, 0.0, -4.0),
(Saber, _) => (1.0, -3.5, -2.5),
(Tuskram, _) => (0.5, 0.5, -3.0),
(Tuskram, _) => (-1.0, -1.5, -6.0),
(Lion, _) => (0.5, 0.5, -3.5),
(Tarasque, _) => (1.0, 0.0, -3.0),
(Tiger, _) => (0.5, 0.0, -4.5),
@ -445,7 +445,7 @@ impl<'a> From<&'a Body> for SkeletonAttr {
feet_b: match (body.species, body.body_type) {
(Grolgar, _) => (0.5, -1.5, -3.0),
(Saber, _) => (1.0, -1.0, -1.0),
(Tuskram, _) => (0.5, -1.0, -2.5),
(Tuskram, _) => (0.5, -1.0, -3.0),
(Lion, _) => (0.5, -1.0, -3.0),
(Tarasque, _) => (1.5, -1.0, -2.5),
(Tiger, _) => (0.5, -1.0, -4.0),

View File

@ -160,7 +160,7 @@ pub fn apply_wildlife_supplement<'a, R: Rng>(
Entry {
make_entity: |pos, rng| {
EntityInfo::at(pos)
.with_body(match rng.gen_range(0..5) {
.with_body(match rng.gen_range(0..4) {
0 => {
bird_medium::Body::random_with(rng, &bird_medium::Species::Eagle).into()
},
@ -202,7 +202,7 @@ pub fn apply_wildlife_supplement<'a, R: Rng>(
Entry {
make_entity: |pos, rng| {
EntityInfo::at(pos)
.with_body(match rng.gen_range(0..3) {
.with_body(match rng.gen_range(0..5) {
0 => quadruped_medium::Body::random_with(
rng,
&quadruped_medium::Species::Tarasque,
@ -216,6 +216,10 @@ pub fn apply_wildlife_supplement<'a, R: Rng>(
2 => {
theropod::Body::random_with(rng, &theropod::Species::Woodraptor).into()
},
3 => {
quadruped_low::Body::random_with(rng, &quadruped_low::Species::Deadwood)
.into()
},
_ => quadruped_medium::Body::random_with(
rng,
&quadruped_medium::Species::Saber,
@ -665,7 +669,7 @@ pub fn apply_wildlife_supplement<'a, R: Rng>(
Entry {
make_entity: |pos, rng| {
EntityInfo::at(pos)
.with_body(match rng.gen_range(0..2) {
.with_body(match rng.gen_range(0..4) {
0 => quadruped_medium::Body::random_with(
rng,
&quadruped_medium::Species::Bonerattler,
@ -806,9 +810,12 @@ pub fn apply_wildlife_supplement<'a, R: Rng>(
Entry {
make_entity: |pos, rng| {
EntityInfo::at(pos)
.with_body(match rng.gen_range(0..2) {
.with_body(match rng.gen_range(0..3) {
0 => fish_medium::Body::random_with(rng, &fish_medium::Species::Marlin)
.into(),
1 => {
fish_small::Body::random_with(rng, &fish_small::Species::Piranha).into()
},
_ => fish_small::Body::random_with(rng, &fish_small::Species::Clownfish)
.into(),
})