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", secondary: "common.abilities.unique.wendigomagic.singlestrike",
skills: [], skills: [],
), ),
Unique(TidalClaws): (
primary: "common.abilities.staff.flamethrower",
secondary: "common.abilities.unique.wendigomagic.singlestrike",
skills: [],
),
Unique(QuadMedQuick): ( Unique(QuadMedQuick): (
primary: "common.abilities.unique.quadmedquick.triplestrike", primary: "common.abilities.unique.quadmedquick.triplestrike",
secondary: "common.abilities.unique.quadmedquick.dash", secondary: "common.abilities.unique.quadmedquick.dash",
@ -151,6 +156,13 @@
secondary: "common.abilities.unique.quadlowbasic.singlestrike", secondary: "common.abilities.unique.quadlowbasic.singlestrike",
abilities: [], abilities: [],
), ),
Unique(QuadLowBeam): (
primary: "common.abilities.unique.quadlowbeam.healingbeam",
secondary: "common.abilities.unique.quadlowbreathe.triplestrike",
skills: [
"common.abilities.unique.quadlowbreathe.dash",
],
),
Unique(QuadSmallBasic): ( Unique(QuadSmallBasic): (
primary: "common.abilities.unique.quadsmallbasic.singlestrike", primary: "common.abilities.unique.quadsmallbasic.singlestrike",
secondary: "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: ( minotaur: (
keyword: "minotaur", keyword: "minotaur",
generic: "Minotaur" generic: "Minotaur"
),
tidalwarrior: (
keyword: "tidalwarrior",
generic: "Tidal Warrior"
) )
) )
), ),
@ -982,6 +986,10 @@
clownfish: ( clownfish: (
keyword: "clownfish", keyword: "clownfish",
generic: "Clownfish" generic: "Clownfish"
),
piranha: (
keyword: "piranha",
generic: "Piranha"
) )
) )
), ),
@ -1065,7 +1073,11 @@
basilisk: ( basilisk: (
keyword: "basilisk", keyword: "basilisk",
generic: "Basilisk" generic: "Basilisk"
) ),
deadwood: (
keyword: "deadwood",
generic: "Deadwood"
),
) )
) )
) )

View File

@ -572,4 +572,56 @@
central: ("armor.empty"), 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"), 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)), vox_spec: ("armor.empty", (0.0, 0.0, 0.0)),
color: None 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": ( "common.items.npc_weapons.spear.wooden_spear": (
vox_spec: ("weapon.spear.sahagin", (-1.5, -3.0, -5.0)), vox_spec: ("weapon.spear.sahagin", (-1.5, -3.0, -5.0)),
color: None color: None

View File

@ -749,6 +749,10 @@
vox_spec: ("armor.empty", (0.0, 0.0, 0.0)), vox_spec: ("armor.empty", (0.0, 0.0, 0.0)),
color: None 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": ( "common.items.npc_weapons.spear.wooden_spear": (
vox_spec: ("weapon.spear.sahagin", (-1.5, -3.0, -5.0)), vox_spec: ("weapon.spear.sahagin", (-1.5, -3.0, -5.0)),
color: None color: None

View File

@ -19,4 +19,24 @@
central: ("npc.clownfish.male.tail"), 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): ( (Clownfish, Male): (
fin_l: ( fin_l: (
offset: (-0.5, -3.0, -4.0), offset: (-0.5, -3.0, -4.0),
lateral: ("npc.clownfish.male.fin_r"), lateral: ("npc.clownfish.male.fin"),
), ),
fin_r: ( fin_r: (
offset: (-0.5, -3.0, -4.0), offset: (-0.5, -3.0, -4.0),
lateral: ("npc.clownfish.male.fin_r"), lateral: ("npc.clownfish.male.fin"),
), ),
), ),
(Clownfish, Female): ( (Clownfish, Female): (
fin_l: ( fin_l: (
offset: (-0.5, -3.0, -4.0), offset: (-0.5, -3.0, -4.0),
lateral: ("npc.clownfish.male.fin_r"), lateral: ("npc.clownfish.male.fin"),
), ),
fin_r: ( fin_r: (
offset: (-0.5, -3.0, -4.0), 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)), vox_spec: ("armor.empty", (0.0, 0.0, 0.0)),
color: None color: None
), ),
"common.items.npc_weapons.unique.tidal_claws": (
vox_spec: ("armor.empty", (0.0, 0.0, 0.0)),
color: None
),
//BIPEDSMALL //BIPEDSMALL
"common.items.npc_weapons.spear.wooden_spear": ( "common.items.npc_weapons.spear.wooden_spear": (
vox_spec: ("weapon.spear.sahagin", (-1.5, -3.0, -5.0)), 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"), 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"), 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): ( (Tuskram, Male): (
head: ( head: (
offset: (-10.0, -2.0, -6.5), offset: (-15.0, -2.0, -10.0),
central: ("npc.tuskram.male.head"), central: ("npc.tuskram.male.head"),
), ),
neck: ( neck: (
offset: (-4.0, -2.0, -3.5), offset: (-4.0, -3.0, -6.0),
central: ("npc.tuskram.male.neck"), central: ("npc.tuskram.male.neck"),
), ),
jaw: ( jaw: (
offset: (-2.0, 0.0, -1.5), offset: (-5.0, 0.0, -8.0),
central: ("npc.tuskram.male.jaw"), central: ("npc.tuskram.male.jaw"),
), ),
torso_front: ( torso_front: (
offset: (-6.0, -15.0, -6.5), offset: (-7.0, -14.0, -8.0),
central: ("npc.tuskram.male.torso_front"), central: ("npc.tuskram.male.torso_front"),
), ),
torso_back: ( torso_back: (
offset: (-4.0, -10.0, -4.5), offset: (-5.0, -10.0, -5.5),
central: ("npc.tuskram.male.torso_back"), central: ("npc.tuskram.male.torso_back"),
), ),
ears: ( ears: (
offset: (-0.5, -0.5, 0.0), offset: (0.0, 0.0, 0.0),
central: ("armor.empty"), central: ("armor.empty"),
), ),
tail: ( tail: (
offset: (-3.0, -7.0, -8.0), offset: (-3.0, -6.0, -8.0),
central: ("npc.tuskram.male.tail"), central: ("npc.tuskram.male.tail"),
), ),
), ),
(Tuskram, Female): ( (Tuskram, Female): (
head: ( head: (
offset: (-10.0, -2.0, -6.5), offset: (-15.0, -2.0, -10.0),
central: ("npc.tuskram.male.head"), central: ("npc.tuskram.male.head"),
), ),
neck: ( neck: (
offset: (-4.0, -2.0, -3.5), offset: (-4.0, -3.0, -6.0),
central: ("npc.tuskram.male.neck"), central: ("npc.tuskram.male.neck"),
), ),
jaw: ( jaw: (
offset: (-2.0, 0.0, -1.5), offset: (-5.0, 0.0, -1.5),
central: ("npc.tuskram.male.jaw"), central: ("npc.tuskram.male.jaw"),
), ),
torso_front: ( torso_front: (
offset: (-6.0, -15.0, -6.5), offset: (-7.0, -14.0, -8.0),
central: ("npc.tuskram.male.torso_front"), central: ("npc.tuskram.male.torso_front"),
), ),
torso_back: ( torso_back: (
offset: (-4.0, -10.0, -4.5), offset: (-5.0, -10.0, -5.5),
central: ("npc.tuskram.male.torso_back"), central: ("npc.tuskram.male.torso_back"),
), ),
ears: ( ears: (
offset: (-0.5, -0.5, -0.0), offset: (0.0, 0.0, 0.0),
central: ("armor.empty"), central: ("armor.empty"),
), ),
tail: ( tail: (
offset: (-3.0, -7.0, -8.0), offset: (-3.0, -6.0, -8.0),
central: ("npc.tuskram.male.tail"), central: ("npc.tuskram.male.tail"),
), ),
), ),

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -154,6 +154,11 @@ impl LoadoutBuilder {
"common.items.npc_weapons.unique.quadlowbreathe", "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( main_tool = Some(Item::new_from_asset_expect(
"common.items.npc_weapons.unique.quadlowbasic", "common.items.npc_weapons.unique.quadlowbasic",
@ -241,6 +246,11 @@ impl LoadoutBuilder {
"common.items.npc_weapons.hammer.cyclops_hammer", "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) => { Body::Object(object::Body::Crossbow) => {
main_tool = Some(Item::new_from_asset_expect( 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::Hakulaq => 140.0,
quadruped_low::Species::Lavadrake => 100.0, quadruped_low::Species::Lavadrake => 100.0,
quadruped_low::Species::Basilisk => 120.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 Tactic::QuadLowBasic
}, },
Some(ToolKind::Unique(UniqueKind::QuadLowBreathe)) => Tactic::Lavadrake, 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::TheropodBasic)) => Tactic::Theropod,
Some(ToolKind::Unique(UniqueKind::TheropodBird)) => Tactic::Theropod, Some(ToolKind::Unique(UniqueKind::TheropodBird)) => Tactic::Theropod,
Some(ToolKind::Unique(UniqueKind::ObjectTurret)) => Tactic::Turret, Some(ToolKind::Unique(UniqueKind::ObjectTurret)) => Tactic::Turret,
@ -1349,7 +1350,7 @@ impl<'a> System<'a> for Sys {
do_idle = true; do_idle = true;
} }
}, },
Tactic::Lavadrake => { Tactic::Lavadrake | Tactic::QuadLowBeam => {
if dist_sqrd < (2.5 * min_attack_dist * scale).powi(2) { if dist_sqrd < (2.5 * min_attack_dist * scale).powi(2) {
inputs.move_dir = Vec2::zero(); inputs.move_dir = Vec2::zero();
inputs.secondary.set_state(true); inputs.secondary.set_state(true);

View File

@ -154,6 +154,31 @@ impl Animation for AlphaAnimation {
* Quaternion::rotation_z(move1 * -0.5 + move2 * 0.6); * Quaternion::rotation_z(move1 * -0.5 + move2 * 0.6);
next.head.orientation = Quaternion::rotation_x(move1 * 0.3); 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 next

View File

@ -153,6 +153,31 @@ impl Animation for BetaAnimation {
* Quaternion::rotation_z(move1 * -0.5 + move2 * 0.6); * Quaternion::rotation_z(move1 * -0.5 + move2 * 0.6);
next.head.orientation = Quaternion::rotation_x(move1 * 0.3); 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 next

View File

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

View File

@ -240,6 +240,15 @@ impl Animation for WieldAnimation {
next.control_r.orientation = next.control_r.orientation =
Quaternion::rotation_x(PI / 3.0) * Quaternion::rotation_y(0.15); 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)) => { Some(ToolKind::Unique(UniqueKind::BeastClaws)) => {
next.shoulder_l.position = next.shoulder_l.position =
Vec3::new(-s_a.shoulder.0, s_a.shoulder.1, s_a.shoulder.2); 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 { Self {
chest: match (body.species, body.body_type) { chest: match (body.species, body.body_type) {
(Clownfish, _) => (0.0, 5.0), (Clownfish, _) => (0.0, 5.0),
(Piranha, _) => (0.0, 5.0),
}, },
tail: match (body.species, body.body_type) { tail: match (body.species, body.body_type) {
(Clownfish, _) => (-7.5, -0.5), (Clownfish, _) => (-7.5, -0.5),
(Piranha, _) => (-5.5, -0.5),
}, },
fin: match (body.species, body.body_type) { fin: match (body.species, body.body_type) {
(Clownfish, _) => (2.0, 0.5, 1.0), (Clownfish, _) => (2.0, 0.5, 1.0),
(Piranha, _) => (2.0, 0.5, -0.5),
}, },
tempo: match (body.species, body.body_type) { tempo: match (body.species, body.body_type) {
(Clownfish, _) => 5.0, (Clownfish, _) => 5.0,
(Piranha, _) => 5.0,
}, },
amplitude: match (body.species, body.body_type) { amplitude: match (body.species, body.body_type) {
(Clownfish, _) => 4.0, (Clownfish, _) => 4.0,
(Piranha, _) => 4.0,
}, },
} }
} }

View File

@ -132,6 +132,7 @@ impl<'a> From<&'a Body> for SkeletonAttr {
(Hakulaq, _) => (8.0, 10.0), (Hakulaq, _) => (8.0, 10.0),
(Lavadrake, _) => (7.0, 8.0), (Lavadrake, _) => (7.0, 8.0),
(Basilisk, _) => (11.0, 13.5), (Basilisk, _) => (11.0, 13.5),
(Deadwood, _) => (2.0, -3.0),
}, },
head_lower: match (body.species, body.body_type) { head_lower: match (body.species, body.body_type) {
(Crocodile, _) => (8.0, 0.0), (Crocodile, _) => (8.0, 0.0),
@ -148,6 +149,7 @@ impl<'a> From<&'a Body> for SkeletonAttr {
(Hakulaq, _) => (10.5, 1.0), (Hakulaq, _) => (10.5, 1.0),
(Lavadrake, _) => (11.5, -6.0), (Lavadrake, _) => (11.5, -6.0),
(Basilisk, _) => (8.5, -6.5), (Basilisk, _) => (8.5, -6.5),
(Deadwood, _) => (0.0, 0.0),
}, },
jaw: match (body.species, body.body_type) { jaw: match (body.species, body.body_type) {
(Crocodile, _) => (2.5, -3.0), (Crocodile, _) => (2.5, -3.0),
@ -164,6 +166,7 @@ impl<'a> From<&'a Body> for SkeletonAttr {
(Hakulaq, _) => (-6.5, -4.0), (Hakulaq, _) => (-6.5, -4.0),
(Lavadrake, _) => (3.0, -5.0), (Lavadrake, _) => (3.0, -5.0),
(Basilisk, _) => (1.5, 1.0), (Basilisk, _) => (1.5, 1.0),
(Deadwood, _) => (-1.0, 4.0),
}, },
chest: match (body.species, body.body_type) { chest: match (body.species, body.body_type) {
(Crocodile, _) => (0.0, 5.0), (Crocodile, _) => (0.0, 5.0),
@ -180,6 +183,7 @@ impl<'a> From<&'a Body> for SkeletonAttr {
(Hakulaq, _) => (0.0, 13.5), (Hakulaq, _) => (0.0, 13.5),
(Lavadrake, _) => (0.0, 16.5), (Lavadrake, _) => (0.0, 16.5),
(Basilisk, _) => (0.0, 16.5), (Basilisk, _) => (0.0, 16.5),
(Deadwood, _) => (0.0, 12.0),
}, },
tail_rear: match (body.species, body.body_type) { tail_rear: match (body.species, body.body_type) {
(Crocodile, _) => (-12.5, -1.0), (Crocodile, _) => (-12.5, -1.0),
@ -196,6 +200,7 @@ impl<'a> From<&'a Body> for SkeletonAttr {
(Hakulaq, _) => (-9.0, -2.0), (Hakulaq, _) => (-9.0, -2.0),
(Lavadrake, _) => (-12.0, -2.0), (Lavadrake, _) => (-12.0, -2.0),
(Basilisk, _) => (-10.0, -3.0), (Basilisk, _) => (-10.0, -3.0),
(Deadwood, _) => (-15.0, 4.0),
}, },
tail_front: match (body.species, body.body_type) { tail_front: match (body.species, body.body_type) {
(Crocodile, _) => (-6.0, 0.0), (Crocodile, _) => (-6.0, 0.0),
@ -212,6 +217,7 @@ impl<'a> From<&'a Body> for SkeletonAttr {
(Hakulaq, _) => (-6.0, -5.5), (Hakulaq, _) => (-6.0, -5.5),
(Lavadrake, _) => (-7.0, -4.5), (Lavadrake, _) => (-7.0, -4.5),
(Basilisk, _) => (-2.5, -4.5), (Basilisk, _) => (-2.5, -4.5),
(Deadwood, _) => (-1.0, 4.0),
}, },
feet_f: match (body.species, body.body_type) { feet_f: match (body.species, body.body_type) {
(Crocodile, _) => (3.5, 6.0, -1.0), (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), (Hakulaq, _) => (4.5, 2.0, -4.5),
(Lavadrake, _) => (4.5, 4.0, -6.5), (Lavadrake, _) => (4.5, 4.0, -6.5),
(Basilisk, _) => (6.5, 4.0, -7.5), (Basilisk, _) => (6.5, 4.0, -7.5),
(Deadwood, _) => (3.5, 4.0, -5.0),
}, },
feet_b: match (body.species, body.body_type) { feet_b: match (body.species, body.body_type) {
(Crocodile, _) => (3.5, -6.0, -1.0), (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), (Hakulaq, _) => (3.5, -8.0, -4.5),
(Lavadrake, _) => (3.5, -8.0, -6.5), (Lavadrake, _) => (3.5, -8.0, -6.5),
(Basilisk, _) => (4.5, -13.0, -7.5), (Basilisk, _) => (4.5, -13.0, -7.5),
(Deadwood, _) => (3.5, -6.0, -5.0),
}, },
lean: match (body.species, body.body_type) { lean: match (body.species, body.body_type) {
(Pangolin, _) => (0.4, 0.0), (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) { head: match (body.species, body.body_type) {
(Grolgar, _) => (0.0, -1.0), (Grolgar, _) => (0.0, -1.0),
(Saber, _) => (5.0, -3.0), (Saber, _) => (5.0, -3.0),
(Tuskram, _) => (2.0, 1.0), (Tuskram, _) => (0.0, 0.0),
(Lion, _) => (4.5, 2.0), (Lion, _) => (4.5, 2.0),
(Tarasque, _) => (-4.0, 3.5), (Tarasque, _) => (-4.0, 3.5),
(Tiger, _) => (2.0, 1.0), (Tiger, _) => (2.0, 1.0),
@ -205,7 +205,7 @@ impl<'a> From<&'a Body> for SkeletonAttr {
jaw: match (body.species, body.body_type) { jaw: match (body.species, body.body_type) {
(Grolgar, _) => (7.0, 2.0), (Grolgar, _) => (7.0, 2.0),
(Saber, _) => (2.5, -2.0), (Saber, _) => (2.5, -2.0),
(Tuskram, _) => (7.5, -3.5), (Tuskram, _) => (4.0, -5.0),
(Lion, _) => (3.5, -4.0), (Lion, _) => (3.5, -4.0),
(Tarasque, _) => (9.0, -9.5), (Tarasque, _) => (9.0, -9.5),
(Tiger, _) => (3.0, -3.5), (Tiger, _) => (3.0, -3.5),
@ -235,7 +235,7 @@ impl<'a> From<&'a Body> for SkeletonAttr {
tail: match (body.species, body.body_type) { tail: match (body.species, body.body_type) {
(Grolgar, _) => (-11.5, -0.5), (Grolgar, _) => (-11.5, -0.5),
(Saber, _) => (-11.0, 0.0), (Saber, _) => (-11.0, 0.0),
(Tuskram, _) => (-9.0, 2.0), (Tuskram, _) => (-8.0, 2.0),
(Lion, _) => (-11.0, 1.0), (Lion, _) => (-11.0, 1.0),
(Tarasque, _) => (-11.0, 0.0), (Tarasque, _) => (-11.0, 0.0),
(Tiger, _) => (-13.5, 3.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) { torso_front: match (body.species, body.body_type) {
(Grolgar, _) => (10.0, 13.0), (Grolgar, _) => (10.0, 13.0),
(Saber, _) => (14.0, 13.0), (Saber, _) => (14.0, 13.0),
(Tuskram, _) => (10.0, 14.5), (Tuskram, _) => (10.0, 16.0),
(Lion, _) => (10.0, 12.5), (Lion, _) => (10.0, 12.5),
(Tarasque, _) => (11.5, 17.5), (Tarasque, _) => (11.5, 17.5),
(Tiger, _) => (10.0, 13.0), (Tiger, _) => (10.0, 13.0),
@ -295,7 +295,7 @@ impl<'a> From<&'a Body> for SkeletonAttr {
torso_back: match (body.species, body.body_type) { torso_back: match (body.species, body.body_type) {
(Grolgar, _) => (-10.0, 1.5), (Grolgar, _) => (-10.0, 1.5),
(Saber, _) => (-13.5, 0.0), (Saber, _) => (-13.5, 0.0),
(Tuskram, _) => (-12.5, -2.0), (Tuskram, _) => (-12.0, -2.5),
(Lion, _) => (-12.0, -0.5), (Lion, _) => (-12.0, -0.5),
(Tarasque, _) => (-14.0, -1.0), (Tarasque, _) => (-14.0, -1.0),
(Tiger, _) => (-13.0, -0.5), (Tiger, _) => (-13.0, -0.5),
@ -325,7 +325,7 @@ impl<'a> From<&'a Body> for SkeletonAttr {
ears: match (body.species, body.body_type) { ears: match (body.species, body.body_type) {
(Grolgar, _) => (5.0, 8.0), (Grolgar, _) => (5.0, 8.0),
(Saber, _) => (3.0, 5.5), (Saber, _) => (3.0, 5.5),
(Tuskram, _) => (5.5, 12.0), (Tuskram, _) => (0.0, 0.0),
(Lion, _) => (2.0, 3.5), (Lion, _) => (2.0, 3.5),
(Tarasque, _) => (12.0, -3.0), (Tarasque, _) => (12.0, -3.0),
(Tiger, _) => (2.5, 4.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) { leg_f: match (body.species, body.body_type) {
(Grolgar, _) => (7.5, -5.5, -1.0), (Grolgar, _) => (7.5, -5.5, -1.0),
(Saber, _) => (7.0, -4.0, -2.5), (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), (Lion, _) => (6.5, -6.5, -1.5),
(Tarasque, _) => (7.0, -8.0, -6.0), (Tarasque, _) => (7.0, -8.0, -6.0),
(Tiger, _) => (6.0, -6.0, -1.5), (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) { leg_b: match (body.species, body.body_type) {
(Grolgar, _) => (6.0, -6.5, -4.0), (Grolgar, _) => (6.0, -6.5, -4.0),
(Saber, _) => (6.0, -7.0, -3.5), (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), (Lion, _) => (6.0, -5.0, -1.5),
(Tarasque, _) => (6.0, -6.5, -6.5), (Tarasque, _) => (6.0, -6.5, -6.5),
(Tiger, _) => (6.0, -7.0, -1.0), (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) { feet_f: match (body.species, body.body_type) {
(Grolgar, _) => (0.0, 0.0, -4.0), (Grolgar, _) => (0.0, 0.0, -4.0),
(Saber, _) => (1.0, -3.5, -2.5), (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), (Lion, _) => (0.5, 0.5, -3.5),
(Tarasque, _) => (1.0, 0.0, -3.0), (Tarasque, _) => (1.0, 0.0, -3.0),
(Tiger, _) => (0.5, 0.0, -4.5), (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) { feet_b: match (body.species, body.body_type) {
(Grolgar, _) => (0.5, -1.5, -3.0), (Grolgar, _) => (0.5, -1.5, -3.0),
(Saber, _) => (1.0, -1.0, -1.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), (Lion, _) => (0.5, -1.0, -3.0),
(Tarasque, _) => (1.5, -1.0, -2.5), (Tarasque, _) => (1.5, -1.0, -2.5),
(Tiger, _) => (0.5, -1.0, -4.0), (Tiger, _) => (0.5, -1.0, -4.0),

View File

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