Merge branch 'misc_creatures' into 'master'

misc_creatures

See merge request veloren/veloren!3783
This commit is contained in:
Marcel 2023-02-01 10:41:01 +00:00
commit 2153196294
65 changed files with 688 additions and 10 deletions

View File

@ -0,0 +1,11 @@
#![enable(implicit_some)]
(
name: Automatic,
body: RandomWith("axebeak"),
alignment: Alignment(Enemy),
loot: LootTable("common.loot_tables.creature.theropod.horned"),
inventory: (
loadout: FromBody,
),
meta: [],
)

View File

@ -0,0 +1,11 @@
#![enable(implicit_some)]
(
name: Automatic,
body: RandomWith("bristleback"),
alignment: Alignment(Enemy),
loot: LootTable("common.loot_tables.creature.quad_medium.generic"),
inventory: (
loadout: FromBody,
),
meta: [],
)

View File

@ -0,0 +1,11 @@
#![enable(implicit_some)]
(
name: Automatic,
body: RandomWith("tursus"),
alignment: Alignment(Enemy),
loot: LootTable("common.loot_tables.creature.biped_large.default"),
inventory: (
loadout: FromBody,
),
meta: [],
)

View File

@ -0,0 +1,11 @@
#![enable(implicit_some)]
(
name: Automatic,
body: RandomWith("seal"),
alignment: Alignment(Wild),
loot: LootTable("common.loot_tables.creature.quad_small.fur"),
inventory: (
loadout: FromBody,
),
meta: [],
)

View File

@ -567,6 +567,10 @@
keyword: "akhlut",
generic: "Akhlut"
),
bristleback: (
keyword: "bristleback",
generic: "Bristleback"
),
)
),
quadruped_small: (
@ -781,6 +785,10 @@
goat: (
keyword: "goat",
generic: "Goat"
),
seal: (
keyword: "seal",
generic: "Seal"
)
)
),
@ -922,6 +930,10 @@
keyword: "husk_brute",
generic: "Husk Brute"
),
tursus: (
keyword: "tursus",
generic: "Tursus"
)
)
),
golem: (
@ -994,6 +1006,10 @@
keyword: "dodarock",
generic: "Dodarock"
),
axebeak: (
keyword: "axebeak",
generic: "Axebeak"
)
)
),
dragon: (

View File

@ -1092,4 +1092,56 @@
central: ("armor.empty"),
)
),
(Tursus, Male): (
head: (
offset: (-6.5, 0.0, -6.5),
central: ("npc.tursus.male.head"),
),
torso_upper: (
offset: (-8.0, -12.5, -10.5),
central: ("npc.tursus.male.torso_upper"),
),
torso_lower: (
offset: (-7.5, -7.0, -10.0),
central: ("npc.tursus.male.torso_lower"),
),
jaw: (
offset: (-4.5, 0.0, -4.0),
central: ("npc.tursus.male.jaw"),
),
tail: (
offset: (-4.0, -27.0, -6.0),
central: ("armor.empty"),
),
second: (
offset: (0.0, 0.0, 0.0),
central: ("armor.empty"),
)
),
(Tursus, Female): (
head: (
offset: (-6.5, 0.0, -6.5),
central: ("npc.tursus.male.head"),
),
torso_upper: (
offset: (-8.0, -12.5, -10.5),
central: ("npc.tursus.male.torso_upper"),
),
torso_lower: (
offset: (-7.5, -7.0, -10.0),
central: ("npc.tursus.male.torso_lower"),
),
jaw: (
offset: (-4.5, 0.0, -4.0),
central: ("npc.tursus.male.jaw"),
),
tail: (
offset: (-4.0, -27.0, -6.0),
central: ("armor.empty"),
),
second: (
offset: (0.0, 0.0, 0.0),
central: ("armor.empty"),
)
),
})

View File

@ -1427,4 +1427,72 @@
lateral: ("npc.husk_brute.male.foot_r"),
)
),
(Tursus, Male): (
shoulder_l: (
offset: (-4.5, -4.0, -8.0),
lateral: ("npc.tursus.male.shoulder_l"),
),
shoulder_r: (
offset: (-4.5, -4.0, -8.0),
lateral: ("npc.tursus.male.shoulder_r"),
),
hand_l: (
offset: (-5.5, -3.5, -15.0),
lateral: ("npc.tursus.male.hand_l"),
),
hand_r: (
offset: (-5.5, -3.5, -15.0),
lateral: ("npc.tursus.male.hand_r"),
),
leg_l: (
offset: (-3.5, -4.0, -4.0),
lateral: ("npc.tursus.male.leg_l"),
),
leg_r: (
offset: (-3.5, -4.0, -4.0),
lateral: ("npc.tursus.male.leg_r"),
),
foot_l: (
offset: (-3.0, -5.0, -2.0),
lateral: ("npc.tursus.male.foot_l"),
),
foot_r: (
offset: (-3.0, -5.0, -2.0),
lateral: ("npc.tursus.male.foot_r"),
),
),
(Tursus, Female): (
shoulder_l: (
offset: (-4.5, -4.0, -8.0),
lateral: ("npc.tursus.male.shoulder_l"),
),
shoulder_r: (
offset: (-4.5, -4.0, -8.0),
lateral: ("npc.tursus.male.shoulder_r"),
),
hand_l: (
offset: (-5.5, -3.5, -15.0),
lateral: ("npc.tursus.male.hand_l"),
),
hand_r: (
offset: (-5.5, -3.5, -15.0),
lateral: ("npc.tursus.male.hand_r"),
),
leg_l: (
offset: (-3.5, -4.0, -4.0),
lateral: ("npc.tursus.male.leg_l"),
),
leg_r: (
offset: (-3.5, -4.0, -4.0),
lateral: ("npc.tursus.male.leg_r"),
),
foot_l: (
offset: (-3.0, -5.0, -2.0),
lateral: ("npc.tursus.male.foot_l"),
),
foot_r: (
offset: (-3.0, -5.0, -2.0),
lateral: ("npc.tursus.male.foot_r"),
),
),
})

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

View File

@ -2099,4 +2099,64 @@
central: ("npc.akhlut.male.tail"),
),
),
(Bristleback, Male): (
head: (
offset: (-7.5, 0.0, -8.5),
central: ("npc.bristleback.male.head"),
),
neck: (
offset: (-3.5, -2.0, -6.5),
central: ("npc.bristleback.male.neck"),
),
jaw: (
offset: (-3.5, -3.5, -0.5),
central: ("npc.bristleback.male.jaw"),
),
torso_front: (
offset: (-6.5, -5.0, -6.0),
central: ("npc.bristleback.male.torso_front"),
),
torso_back: (
offset: (-3.5, -8.0, -6.0),
central: ("npc.bristleback.male.torso_back"),
),
ears: (
offset: (0.0, 0.0, 0.0),
central: ("armor.empty"),
),
tail: (
offset: (-1.5, -6.0, -4.5),
central: ("npc.bristleback.male.tail"),
),
),
(Bristleback, Female): (
head: (
offset: (-7.5, 0.0, -8.5),
central: ("npc.bristleback.male.head"),
),
neck: (
offset: (-3.5, -2.0, -6.5),
central: ("npc.bristleback.male.neck"),
),
jaw: (
offset: (-3.5, -3.5, -0.5),
central: ("npc.bristleback.male.jaw"),
),
torso_front: (
offset: (-6.5, -5.0, -6.0),
central: ("npc.bristleback.male.torso_front"),
),
torso_back: (
offset: (-3.5, -8.0, -6.0),
central: ("npc.bristleback.male.torso_back"),
),
ears: (
offset: (0.0, 0.0, 0.0),
central: ("armor.empty"),
),
tail: (
offset: (-1.5, -6.0, -4.5),
central: ("npc.bristleback.male.tail"),
),
),
})

View File

@ -2379,4 +2379,72 @@
lateral: ("npc.akhlut.male.foot_br"),
),
),
(Bristleback, Male): (
leg_fl: (
offset: (-1.5, -2.0, -2.0),
lateral: ("npc.bristleback.male.leg_fr"),
),
leg_fr: (
offset: (-1.5, -2.0, -2.0),
lateral: ("npc.bristleback.male.leg_fr"),
),
leg_bl: (
offset: (-1.5, -2.0, -4.0),
lateral: ("npc.bristleback.male.leg_br"),
),
leg_br: (
offset: (-1.5, -2.0, -4.0),
lateral: ("npc.bristleback.male.leg_br"),
),
foot_fl: (
offset: (-1.5, -1.5, -5.0),
lateral: ("npc.bristleback.male.foot_fr"),
),
foot_fr: (
offset: (-1.5, -1.5, -5.0),
lateral: ("npc.bristleback.male.foot_fr"),
),
foot_bl: (
offset: (-1.0, -2.0, -5.0),
lateral: ("npc.bristleback.male.foot_br"),
),
foot_br: (
offset: (-1.0, -2.0, -5.0),
lateral: ("npc.bristleback.male.foot_br"),
),
),
(Bristleback, Female): (
leg_fl: (
offset: (-1.5, -2.0, -2.0),
lateral: ("npc.bristleback.male.leg_fr"),
),
leg_fr: (
offset: (-1.5, -2.0, -2.0),
lateral: ("npc.bristleback.male.leg_fr"),
),
leg_bl: (
offset: (-1.5, -2.0, -4.0),
lateral: ("npc.bristleback.male.leg_br"),
),
leg_br: (
offset: (-1.5, -2.0, -4.0),
lateral: ("npc.bristleback.male.leg_br"),
),
foot_fl: (
offset: (-1.5, -1.5, -5.0),
lateral: ("npc.bristleback.male.foot_fr"),
),
foot_fr: (
offset: (-1.5, -1.5, -5.0),
lateral: ("npc.bristleback.male.foot_fr"),
),
foot_bl: (
offset: (-1.0, -2.0, -5.0),
lateral: ("npc.bristleback.male.foot_br"),
),
foot_br: (
offset: (-1.0, -2.0, -5.0),
lateral: ("npc.bristleback.male.foot_br"),
),
),
})

View File

@ -727,4 +727,32 @@
central: ("npc.goat.male.tail"),
),
),
(Seal, Male):(
head: (
offset: (-3.0, 0.0, -3.5),
central: ("npc.seal.male.head"),
),
chest: (
offset: (-4.0, -8.0, -4.0),
central: ("npc.seal.male.chest"),
),
tail: (
offset: (-1.5, -7.5, -2.5),
central: ("armor.empty"),
),
),
(Seal, Female):(
head: (
offset: (-3.0, 0.0, -3.5),
central: ("npc.seal.male.head"),
),
chest: (
offset: (-4.0, -8.0, -4.0),
central: ("npc.seal.male.chest"),
),
tail: (
offset: (-1.5, -7.5, -2.5),
central: ("armor.empty"),
),
),
})

View File

@ -937,4 +937,40 @@
lateral: ("npc.goat.male.foot_br"),
),
),
(Seal, Male): (
left_front: (
offset: (-3.5, -2.0, -2.0),
lateral: ("npc.seal.male.foot_fr"),
),
right_front: (
offset: (-3.5, -2.0, -2.0),
lateral: ("npc.seal.male.foot_fr"),
),
left_back: (
offset: (-3.5, -2.0, -3.5),
lateral: ("npc.seal.male.foot_br"),
),
right_back: (
offset: (-3.5, -2.0, -3.5),
lateral: ("npc.seal.male.foot_br"),
),
),
(Seal, Female): (
left_front: (
offset: (-3.5, -2.0, -2.0),
lateral: ("npc.seal.male.foot_fr"),
),
right_front: (
offset: (-3.5, -2.0, -2.0),
lateral: ("npc.seal.male.foot_fr"),
),
left_back: (
offset: (-3.5, -2.0, -3.5),
lateral: ("npc.seal.male.foot_br"),
),
right_back: (
offset: (-3.5, -2.0, -3.5),
lateral: ("npc.seal.male.foot_br"),
),
),
})

View File

@ -539,4 +539,64 @@
central: ("npc.ntouka.male.tail_back"),
),
),
(Axebeak, Male): (
head: (
offset: (-2.5, -3.5, -3.0),
central: ("npc.axebeak.male.head"),
),
jaw: (
offset: (-1.5, 0.0, -1.5),
central: ("npc.axebeak.male.jaw"),
),
neck: (
offset: (-2.5, -0.5, -4.0),
central: ("npc.axebeak.male.neck"),
),
chest_front: (
offset: (-3.5, -4.0, -6.5),
central: ("npc.axebeak.male.chest_front"),
),
chest_back: (
offset: (-3.5, -6.0, -6.5),
central: ("npc.axebeak.male.chest_back"),
),
tail_front: (
offset: (-11.5, -19.0, -10.0),
central: ("npc.axebeak.male.tail_front"),
),
tail_back: (
offset: (-1.5, -30.0, -2.0),
central: ("armor.empty"),
),
),
(Axebeak, Female): (
head: (
offset: (-2.5, -3.5, -3.0),
central: ("npc.axebeak.male.head"),
),
jaw: (
offset: (-1.5, 0.0, -1.5),
central: ("npc.axebeak.male.jaw"),
),
neck: (
offset: (-2.5, -0.5, -4.0),
central: ("npc.axebeak.male.neck"),
),
chest_front: (
offset: (-3.5, -4.0, -6.5),
central: ("npc.axebeak.male.chest_front"),
),
chest_back: (
offset: (-3.5, -6.0, -6.5),
central: ("npc.axebeak.male.chest_back"),
),
tail_front: (
offset: (-11.5, -19.0, -10.0),
central: ("npc.axebeak.male.tail_front"),
),
tail_back: (
offset: (-1.5, -30.0, -2.0),
central: ("armor.empty"),
),
),
})

View File

@ -467,4 +467,56 @@
lateral: ("npc.ntouka.male.foot_r"),
),
),
(Axebeak, Male): (
hand_l: (
offset: (-10.0, -4.0, -12.0),
lateral: ("npc.axebeak.male.hand_r"),
),
hand_r: (
offset: (0.0, -4.0, -12.0),
lateral: ("npc.axebeak.male.hand_r"),
),
leg_l: (
offset: (-5.0, -4.5, -6.5),
lateral: ("npc.axebeak.male.leg_r"),
),
leg_r: (
offset: (0.0, -4.5, -6.5),
lateral: ("npc.axebeak.male.leg_r"),
),
foot_l: (
offset: (-3.5, -7.0, -5.0),
lateral: ("npc.axebeak.male.foot_r"),
),
foot_r: (
offset: (-3.5, -7.0, -5.0),
lateral: ("npc.axebeak.male.foot_r"),
),
),
(Axebeak, Female): (
hand_l: (
offset: (-10.0, -4.0, -12.0),
lateral: ("npc.axebeak.male.hand_r"),
),
hand_r: (
offset: (0.0, -4.0, -12.0),
lateral: ("npc.axebeak.male.hand_r"),
),
leg_l: (
offset: (-5.0, -4.5, -6.5),
lateral: ("npc.axebeak.male.leg_r"),
),
leg_r: (
offset: (0.0, -4.5, -6.5),
lateral: ("npc.axebeak.male.leg_r"),
),
foot_l: (
offset: (-3.5, -7.0, -5.0),
lateral: ("npc.axebeak.male.foot_r"),
),
foot_r: (
offset: (-3.5, -7.0, -5.0),
lateral: ("npc.axebeak.male.foot_r"),
),
),
})

View File

@ -12,6 +12,7 @@ SpawnEntry (
Pack(
groups: [
(2, (4, 12, "common.entity.wild.peaceful.penguin")),
(2, (4, 8, "common.entity.wild.peaceful.seal")),
],
spawn_mode: Ice,
day_period: [Night, Morning, Noon, Evening],

View File

@ -9,6 +9,7 @@ SpawnEntry (
(2, (1, 1, "common.entity.wild.peaceful.sand_hare")),
(2, (1, 1, "common.entity.wild.peaceful.salamander")),
(2, (1, 1, "common.entity.wild.peaceful.gecko")),
(2, (1, 1, "common.entity.wild.aggressive.axebeak")),
// Rare
(1, (1, 1, "common.entity.wild.peaceful.crawler_sand")),
],

View File

@ -14,6 +14,7 @@ SpawnEntry (
(1, (1, 1, "common.entity.wild.aggressive.stag_beetle")),
(1, (1, 1, "common.entity.wild.peaceful.crawler_moss")),
(1, (1, 1, "common.entity.wild.aggressive.rootsnapper")),
(1, (1, 1, "common.entity.wild.aggressive.axebeak")),
],
spawn_mode: Land,
day_period: [Morning, Noon, Evening],

View File

@ -42,6 +42,7 @@ SpawnEntry (
(1, (1, 1, "common.entity.wild.aggressive.batfox")),
(5, (1, 1, "common.entity.wild.peaceful.forest_fox")),
(5, (1, 1, "common.entity.wild.peaceful.raccoon")),
(3, (1, 1, "common.entity.wild.aggressive.bristleback")),
// Pack
(5, (1, 3, "common.entity.wild.peaceful.rat")),
(5, (1, 3, "common.entity.wild.peaceful.squirrel")),

View File

@ -10,6 +10,7 @@ SpawnEntry (
(1, (1, 3, "common.entity.wild.aggressive.snow_raptor")),
(1, (1, 1, "common.entity.wild.aggressive.roshwalr")),
(5, (5, 20, "common.entity.wild.peaceful.penguin")),
(5, (5, 10, "common.entity.wild.peaceful.seal")),
],
spawn_mode: Land,
day_period: [Night, Morning, Noon, Evening],

View File

@ -370,6 +370,7 @@ impl Body {
quadruped_small::Species::Squirrel => 1.0,
quadruped_small::Species::Truffler => 70.0,
quadruped_small::Species::Turtle => 40.0,
quadruped_small::Species::Seal => 15.0,
},
Body::Theropod(body) => match body.species {
// for reference, elephants are in the range of 2.6-6.9 tons
@ -383,6 +384,7 @@ impl Body {
theropod::Species::Sunlizard => 500.0,
theropod::Species::Woodraptor => 500.0,
theropod::Species::Yale => 1_000.0,
theropod::Species::Axebeak => 300.0,
},
Body::Ship(ship) => ship.mass().0,
Body::Arthropod(_) => 200.0,
@ -408,6 +410,7 @@ impl Body {
biped_large::Species::Cultistwarlord => Vec3::new(3.0, 3.0, 4.5),
biped_large::Species::Cultistwarlock => Vec3::new(3.0, 3.0, 3.5),
biped_large::Species::Huskbrute => Vec3::new(4.6, 3.0, 5.0),
biped_large::Species::Tursus => Vec3::new(4.0, 3.0, 4.0),
_ => Vec3::new(4.6, 3.0, 6.0),
},
Body::BipedSmall(body) => match body.species {
@ -462,6 +465,7 @@ impl Body {
quadruped_medium::Species::Horse => Vec3::new(2.0, 3.0, 2.4),
quadruped_medium::Species::Lion => Vec3::new(2.0, 3.3, 2.0),
quadruped_medium::Species::Moose => Vec3::new(2.0, 4.0, 2.5),
quadruped_medium::Species::Bristleback => Vec3::new(2.0, 3.0, 2.0),
quadruped_medium::Species::Roshwalr => Vec3::new(2.0, 3.5, 2.2),
quadruped_medium::Species::Saber => Vec3::new(2.0, 3.0, 2.0),
quadruped_medium::Species::Tarasque => Vec3::new(2.0, 4.0, 2.6),
@ -516,6 +520,7 @@ impl Body {
theropod::Species::Sunlizard => Vec3::new(2.0, 3.6, 2.5),
theropod::Species::Woodraptor => Vec3::new(2.0, 3.0, 2.6),
theropod::Species::Yale => Vec3::new(2.0, 3.2, 4.0),
theropod::Species::Axebeak => Vec3::new(2.0, 3.6, 3.0),
},
Body::Arthropod(body) => match body.species {
arthropod::Species::Tarantula => Vec3::new(4.0, 4.0, 1.8),
@ -683,6 +688,7 @@ impl Body {
quadruped_small::Species::Beaver => 15,
quadruped_small::Species::Dog => 30,
quadruped_small::Species::Sheep => 30,
quadruped_small::Species::Seal => 15,
_ => 20,
},
Body::QuadrupedMedium(quadruped_medium) => match quadruped_medium.species {
@ -711,6 +717,7 @@ impl Body {
quadruped_medium::Species::Panda => 90,
quadruped_medium::Species::Bear => 90,
quadruped_medium::Species::Moose => 80,
quadruped_medium::Species::Bristleback => 90,
quadruped_medium::Species::Dreadhorn => 370,
quadruped_medium::Species::Mammoth => 250,
quadruped_medium::Species::Ngoubou => 290,
@ -977,6 +984,7 @@ impl Body {
(quadruped_medium::Species::Bear, _) => [0.0, -0.4, 2.5],
(quadruped_medium::Species::Dreadhorn, _) => [0.0, 0.2, 3.5],
(quadruped_medium::Species::Moose, _) => [0.0, -0.6, 2.1],
(quadruped_medium::Species::Bristleback, _) => [0.0, -0.6, 2.1],
(quadruped_medium::Species::Snowleopard, _) => [-0.5, -0.5, 1.4],
(quadruped_medium::Species::Mammoth, _) => [0.0, 4.9, 7.2],
(quadruped_medium::Species::Ngoubou, _) => [0.0, 0.3, 2.0],

View File

@ -55,6 +55,7 @@ make_case_elim!(
Cultistwarlord = 18,
Cultistwarlock = 19,
Huskbrute = 20,
Tursus = 21,
}
);
@ -84,6 +85,7 @@ pub struct AllSpecies<SpeciesMeta> {
pub cultist_warlord: SpeciesMeta,
pub cultist_warlock: SpeciesMeta,
pub husk_brute: SpeciesMeta,
pub tursus: SpeciesMeta,
}
impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies<SpeciesMeta> {
@ -113,11 +115,12 @@ impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies<SpeciesMeta>
Species::Cultistwarlord => &self.cultist_warlord,
Species::Cultistwarlock => &self.cultist_warlock,
Species::Huskbrute => &self.husk_brute,
Species::Tursus => &self.tursus,
}
}
}
pub const ALL_SPECIES: [Species; 21] = [
pub const ALL_SPECIES: [Species; 22] = [
Species::Ogre,
Species::Cyclops,
Species::Wendigo,
@ -139,6 +142,7 @@ pub const ALL_SPECIES: [Species; 21] = [
Species::Cultistwarlord,
Species::Cultistwarlock,
Species::Huskbrute,
Species::Tursus,
];
impl<'a, SpeciesMeta: 'a> IntoIterator for &'a AllSpecies<SpeciesMeta> {

View File

@ -70,6 +70,7 @@ pub enum Species {
Llama = 34,
Alpaca = 35,
Akhlut = 36,
Bristleback = 37,
}
/// Data representing per-species generic data.
@ -112,6 +113,7 @@ pub struct AllSpecies<SpeciesMeta> {
pub llama: SpeciesMeta,
pub alpaca: SpeciesMeta,
pub akhlut: SpeciesMeta,
pub bristleback: SpeciesMeta,
}
impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies<SpeciesMeta> {
@ -155,11 +157,12 @@ impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies<SpeciesMeta>
Species::Llama => &self.llama,
Species::Alpaca => &self.alpaca,
Species::Akhlut => &self.akhlut,
Species::Bristleback => &self.bristleback,
}
}
}
pub const ALL_SPECIES: [Species; 35] = [
pub const ALL_SPECIES: [Species; 36] = [
Species::Grolgar,
Species::Saber,
Species::Tiger,
@ -195,6 +198,7 @@ pub const ALL_SPECIES: [Species; 35] = [
Species::Llama,
Species::Alpaca,
Species::Akhlut,
Species::Bristleback,
];
impl<'a, SpeciesMeta: 'a> IntoIterator for &'a AllSpecies<SpeciesMeta> {

View File

@ -61,6 +61,7 @@ pub enum Species {
Beaver = 23,
Hare = 24,
Dog = 25,
Seal = 26,
}
/// Data representing per-species generic data.
@ -94,6 +95,7 @@ pub struct AllSpecies<SpeciesMeta> {
pub hare: SpeciesMeta,
pub dog: SpeciesMeta,
pub goat: SpeciesMeta,
pub seal: SpeciesMeta,
}
impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies<SpeciesMeta> {
@ -128,11 +130,12 @@ impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies<SpeciesMeta>
Species::Hare => &self.hare,
Species::Dog => &self.dog,
Species::Goat => &self.goat,
Species::Seal => &self.seal,
}
}
}
pub const ALL_SPECIES: [Species; 26] = [
pub const ALL_SPECIES: [Species; 27] = [
Species::Pig,
Species::Fox,
Species::Sheep,
@ -159,6 +162,7 @@ pub const ALL_SPECIES: [Species; 26] = [
Species::Hare,
Species::Dog,
Species::Goat,
Species::Seal,
];
impl<'a, SpeciesMeta: 'a> IntoIterator for &'a AllSpecies<SpeciesMeta> {

View File

@ -37,6 +37,7 @@ pub enum Species {
Yale = 6,
Ntouka = 7,
Dodarock = 8,
Axebeak = 9,
}
/// Data representing per-species generic data.
@ -51,6 +52,7 @@ pub struct AllSpecies<SpeciesMeta> {
pub yale: SpeciesMeta,
pub dodarock: SpeciesMeta,
pub ntouka: SpeciesMeta,
pub axebeak: SpeciesMeta,
}
impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies<SpeciesMeta> {
@ -68,11 +70,12 @@ impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies<SpeciesMeta>
Species::Yale => &self.yale,
Species::Dodarock => &self.dodarock,
Species::Ntouka => &self.ntouka,
Species::Axebeak => &self.axebeak,
}
}
}
pub const ALL_SPECIES: [Species; 9] = [
pub const ALL_SPECIES: [Species; 10] = [
Species::Archaeos,
Species::Odonto,
Species::Sandraptor,
@ -82,6 +85,7 @@ pub const ALL_SPECIES: [Species; 9] = [
Species::Yale,
Species::Dodarock,
Species::Ntouka,
Species::Axebeak,
];
impl<'a, SpeciesMeta: 'a> IntoIterator for &'a AllSpecies<SpeciesMeta> {

View File

@ -613,7 +613,8 @@ fn default_main_tool(body: &Body) -> Item {
Body::Theropod(theropod) => match theropod.species {
theropod::Species::Sandraptor
| theropod::Species::Snowraptor
| theropod::Species::Woodraptor => Some(Item::new_from_asset_expect(
| theropod::Species::Woodraptor
| theropod::Species::Axebeak => Some(Item::new_from_asset_expect(
"common.items.npc_weapons.unique.theropodbird",
)),
theropod::Species::Yale => Some(Item::new_from_asset_expect(
@ -686,6 +687,9 @@ fn default_main_tool(body: &Body) -> Item {
(biped_large::Species::Werewolf, _) => Some(Item::new_from_asset_expect(
"common.items.npc_weapons.unique.beast_claws",
)),
(biped_large::Species::Tursus, _) => Some(Item::new_from_asset_expect(
"common.items.npc_weapons.unique.beast_claws",
)),
(biped_large::Species::Cyclops, _) => Some(Item::new_from_asset_expect(
"common.items.npc_weapons.hammer.cyclops_hammer",
)),

View File

@ -89,6 +89,7 @@ impl Body {
quadruped_medium::Species::Llama => 120.0,
quadruped_medium::Species::Alpaca => 110.0,
quadruped_medium::Species::Akhlut => 90.0,
quadruped_medium::Species::Bristleback => 135.0,
},
Body::BipedLarge(body) => match body.species {
biped_large::Species::Slysaurok => 100.0,

View File

@ -248,6 +248,7 @@ impl<'a> From<&'a Body> for SkeletonAttr {
(Cultistwarlord, _) => (0.5, 14.5),
(Cultistwarlock, _) => (0.5, 11.0),
(Huskbrute, _) => (8.5, 4.0),
(Tursus, _) => (-4.5, -14.0),
},
jaw: match (body.species, body.body_type) {
(Ogre, _) => (0.0, 0.0),
@ -271,6 +272,7 @@ impl<'a> From<&'a Body> for SkeletonAttr {
(Cultistwarlord, _) => (0.0, 3.5),
(Cultistwarlock, _) => (0.0, 3.5),
(Huskbrute, _) => (-5.0, -5.0),
(Tursus, _) => (4.0, 10.5),
},
upper_torso: match (body.species, body.body_type) {
(Ogre, Male) => (0.0, 27.5),
@ -295,6 +297,7 @@ impl<'a> From<&'a Body> for SkeletonAttr {
(Cultistwarlord, _) => (-1.0, 18.5),
(Cultistwarlock, _) => (-1.0, 17.5),
(Huskbrute, _) => (-1.0, 23.5),
(Tursus, _) => (3.0, 26.0),
},
lower_torso: match (body.species, body.body_type) {
(Ogre, Male) => (1.0, -7.0),
@ -319,6 +322,7 @@ impl<'a> From<&'a Body> for SkeletonAttr {
(Cultistwarlord, _) => (0.0, -1.5),
(Cultistwarlock, _) => (1.0, -2.5),
(Huskbrute, _) => (-0.5, -7.0),
(Tursus, _) => (-5.0, -9.0),
},
tail: match (body.species, body.body_type) {
(Werewolf, _) => (-5.5, -2.0),
@ -351,6 +355,7 @@ impl<'a> From<&'a Body> for SkeletonAttr {
(Cultistwarlord, _) => (11.5, -1.0, 4.5),
(Cultistwarlock, _) => (8.0, 0.0, 3.5),
(Huskbrute, _) => (10.5, 0.0, -1.5),
(Tursus, _) => (12.5, -2.5, 1.0),
},
hand: match (body.species, body.body_type) {
(Ogre, Male) => (14.5, 0.0, -4.0),
@ -375,6 +380,7 @@ impl<'a> From<&'a Body> for SkeletonAttr {
(Cultistwarlord, _) => (11.5, -1.0, -1.0),
(Cultistwarlock, _) => (9.5, -1.0, 1.0),
(Huskbrute, _) => (13.0, 0.5, -4.0),
(Tursus, _) => (15.5, -2.5, -8.0),
},
leg: match (body.species, body.body_type) {
(Ogre, Male) => (0.0, 0.0, -4.0),
@ -399,6 +405,7 @@ impl<'a> From<&'a Body> for SkeletonAttr {
(Cultistwarlord, _) => (3.5, -1.0, -8.5),
(Cultistwarlock, _) => (3.5, -1.0, -8.5),
(Huskbrute, _) => (4.0, 0.0, -7.5),
(Tursus, _) => (4.5, 1.0, -9.0),
},
foot: match (body.species, body.body_type) {
(Ogre, Male) => (4.0, 1.0, -12.0),
@ -423,6 +430,7 @@ impl<'a> From<&'a Body> for SkeletonAttr {
(Cultistwarlord, _) => (3.5, 0.0, -12.5),
(Cultistwarlock, _) => (3.5, 0.0, -10.5),
(Huskbrute, _) => (4.5, 0.5, -12.5),
(Tursus, _) => (5.5, 3.0, -14.5),
},
scaler: match (body.species, body.body_type) {
(Ogre, Male) => 1.12,
@ -447,6 +455,7 @@ impl<'a> From<&'a Body> for SkeletonAttr {
(Cultistwarlord, _) => 1.0,
(Cultistwarlock, _) => 1.0,
(Huskbrute, _) => 1.2,
(Tursus, _) => 1.0,
},
tempo: match (body.species, body.body_type) {
(Ogre, Male) => 0.9,
@ -482,6 +491,7 @@ impl<'a> From<&'a Body> for SkeletonAttr {
(Cultistwarlord, _) => (8.0, 0.0),
(Cultistwarlock, _) => (8.0, 0.0),
(Huskbrute, _) => (12.5, 0.0),
(Tursus, _) => (13.0, 0.0),
},
shl: match (body.species, body.body_type) {
(Dullahan, _) => (-4.75, -11.0, 8.5, 1.47, -0.2, 0.0),

View File

@ -237,6 +237,7 @@ impl<'a> From<&'a Body> for SkeletonAttr {
(Llama, _) => (0.5, 10.0),
(Alpaca, _) => (0.5, 7.5),
(Akhlut, _) => (1.0, 3.5),
(Bristleback, _) => (-3.0, -2.0),
},
neck: match (body.species, body.body_type) {
(Grolgar, _) => (1.0, -1.0),
@ -276,6 +277,7 @@ impl<'a> From<&'a Body> for SkeletonAttr {
(Llama, _) => (2.5, 4.5),
(Alpaca, _) => (-1.5, 3.0),
(Akhlut, _) => (8.5, -1.0),
(Bristleback, _) => (6.0, 2.5),
},
jaw: match (body.species, body.body_type) {
(Grolgar, _) => (7.0, 2.0),
@ -316,6 +318,7 @@ impl<'a> From<&'a Body> for SkeletonAttr {
(Llama, _) => (4.0, -1.0),
(Alpaca, _) => (3.0, -2.5),
(Akhlut, _) => (0.0, -4.5),
(Bristleback, _) => (8.0, -6.0),
},
tail: match (body.species, body.body_type) {
(Grolgar, _) => (-11.5, -0.5),
@ -355,6 +358,7 @@ impl<'a> From<&'a Body> for SkeletonAttr {
(Llama, _) => (-9.0, 6.0),
(Alpaca, _) => (-8.5, 3.5),
(Akhlut, _) => (-14.0, -2.0),
(Bristleback, _) => (-7.0, -5.5),
},
torso_front: match (body.species, body.body_type) {
(Grolgar, _) => (10.0, 13.0),
@ -394,6 +398,7 @@ impl<'a> From<&'a Body> for SkeletonAttr {
(Llama, _) => (7.0, 15.0),
(Alpaca, _) => (7.0, 11.5),
(Akhlut, _) => (5.5, 14.5),
(Bristleback, _) => (1.5, 9.0),
},
torso_back: match (body.species, body.body_type) {
(Grolgar, _) => (-10.0, 1.5),
@ -433,6 +438,7 @@ impl<'a> From<&'a Body> for SkeletonAttr {
(Llama, _) => (-8.0, 0.0),
(Alpaca, _) => (-6.0, 0.0),
(Akhlut, _) => (-7.0, 1.0),
(Bristleback, _) => (-4.0, 2.0),
},
ears: match (body.species, body.body_type) {
(Grolgar, _) => (5.0, 8.0),
@ -473,6 +479,7 @@ impl<'a> From<&'a Body> for SkeletonAttr {
(Llama, _) => (1.0, 3.5),
(Alpaca, _) => (1.0, 2.0),
(Akhlut, _) => (12.0, -3.0),
(Bristleback, _) => (6.0, 1.0),
},
leg_f: match (body.species, body.body_type) {
(Grolgar, _) => (7.5, -5.5, -1.0),
@ -512,6 +519,7 @@ impl<'a> From<&'a Body> for SkeletonAttr {
(Llama, _) => (5.0, -1.5, -1.0),
(Alpaca, _) => (3.5, -2.5, -0.5),
(Akhlut, _) => (8.0, -2.0, 0.5),
(Bristleback, _) => (6.0, 1.0, -2.0),
},
leg_b: match (body.species, body.body_type) {
(Grolgar, _) => (6.0, -6.5, -4.0),
@ -551,6 +559,7 @@ impl<'a> From<&'a Body> for SkeletonAttr {
(Llama, _) => (5.0, -7.0, -2.0),
(Alpaca, _) => (3.5, -7.0, 0.0),
(Akhlut, _) => (6.0, -7.5, -2.0),
(Bristleback, _) => (4.5, -3.0, -2.0),
},
feet_f: match (body.species, body.body_type) {
(Grolgar, _) => (0.0, 0.0, -4.0),
@ -590,6 +599,7 @@ impl<'a> From<&'a Body> for SkeletonAttr {
(Llama, _) => (-0.5, 0.5, -6.0),
(Alpaca, _) => (0.0, -0.5, -5.0),
(Akhlut, _) => (0.0, 0.0, -5.0),
(Bristleback, _) => (0.0, -0.5, -2.0),
},
feet_b: match (body.species, body.body_type) {
(Grolgar, _) => (0.5, -1.5, -3.0),
@ -629,6 +639,7 @@ impl<'a> From<&'a Body> for SkeletonAttr {
(Llama, _) => (0.5, -1.5, -3.5),
(Alpaca, _) => (-0.5, -0.5, -5.5),
(Akhlut, _) => (1.5, -1.0, -4.5),
(Bristleback, _) => (-0.5, 0.0, -4.0),
},
scaler: match (body.species, body.body_type) {
(Grolgar, _) => 1.05,
@ -657,6 +668,7 @@ impl<'a> From<&'a Body> for SkeletonAttr {
(Mammoth, _) => 3.0,
(Ngoubou, _) => 1.0,
(Akhlut, _) => 1.4,
(Bristleback, _) => 1.1,
_ => 0.9,
},
startangle: match (body.species, body.body_type) {
@ -779,6 +791,7 @@ fn mount_point(body: &Body) -> Vec3<f32> {
(Llama, _) => (0.0, -6.0, 2.0),
(Alpaca, _) => (0.0, -9.0, 0.0),
(Akhlut, _) => (0.0, -6.0, 1.0),
(Bristleback, _) => (0.0, -9.0, 3.0),
}
.into()
}

View File

@ -153,6 +153,7 @@ impl<'a> From<&'a Body> for SkeletonAttr {
(Hare, Female) => (2.5, 3.0),
(Dog, _) => (3.0, 4.5),
(Goat, _) => (3.5, 4.0),
(Seal, _) => (4.0, 2.5),
},
chest: match (body.species, body.body_type) {
(Pig, _) => (0.0, 6.0),
@ -182,6 +183,7 @@ impl<'a> From<&'a Body> for SkeletonAttr {
(Hare, Female) => (-2.0, 6.0),
(Dog, _) => (-2.0, 8.5),
(Goat, _) => (2.0, 7.5),
(Seal, _) => (-2.0, 4.0),
},
feet_f: match (body.species, body.body_type) {
(Pig, _) => (4.5, 3.5, -1.0),
@ -211,6 +213,7 @@ impl<'a> From<&'a Body> for SkeletonAttr {
(Hare, Female) => (3.0, 0.5, -4.0),
(Dog, _) => (3.5, 3.0, -2.5),
(Goat, _) => (3.0, 2.5, -3.5),
(Seal, _) => (6.5, 3.0, -2.0),
},
feet_b: match (body.species, body.body_type) {
(Pig, _) => (3.5, -2.0, 0.0),
@ -240,6 +243,7 @@ impl<'a> From<&'a Body> for SkeletonAttr {
(Hare, Female) => (3.5, -3.0, -2.0),
(Dog, _) => (3.0, -3.5, -2.5),
(Goat, _) => (3.0, -4.0, -2.0),
(Seal, _) => (4.5, -6.0, -0.5),
},
tail: match (body.species, body.body_type) {
(Pig, _) => (-4.5, 2.5),
@ -269,6 +273,7 @@ impl<'a> From<&'a Body> for SkeletonAttr {
(Hare, Female) => (-4.0, 2.0),
(Dog, _) => (-5.0, 0.5),
(Goat, _) => (-7.0, 0.0),
(Seal, _) => (-1.0, 4.0),
},
scaler: match (body.species, body.body_type) {
(Pig, _) => 0.72,
@ -289,6 +294,7 @@ impl<'a> From<&'a Body> for SkeletonAttr {
(Fungome, _) => 0.72,
(Porcupine, _) => 0.65,
(Hare, _) => 0.65,
(Seal, _) => 0.9,
_ => 0.8,
},
tempo: match (body.species, body.body_type) {
@ -306,6 +312,7 @@ impl<'a> From<&'a Body> for SkeletonAttr {
(Porcupine, _) => 1.2,
(Beaver, _) => 1.2,
(Hare, _) => 1.15,
(Seal, _) => 2.5,
_ => 1.0,
},
maximize: match (body.species, body.body_type) {
@ -340,6 +347,7 @@ impl<'a> From<&'a Body> for SkeletonAttr {
(Beaver, _) => 0.9,
(Hare, _) => 0.8,
(Goat, _) => 0.8,
(Seal, _) => 0.7,
_ => 1.0,
},
spring: match (body.species, body.body_type) {
@ -364,6 +372,7 @@ impl<'a> From<&'a Body> for SkeletonAttr {
(Hare, Male) => 2.2,
(Hare, Female) => 2.5,
(Goat, _) => 1.2,
(Seal, _) => 0.7,
_ => 1.0,
},
feed: match (body.species, body.body_type) {
@ -421,6 +430,7 @@ fn mount_point(body: &Body) -> Vec3<f32> {
(Hare, Female) => (0.0, -4.0, -4.5),
(Dog, _) => (0.0, -4.0, -2.5),
(Goat, _) => (0.0, -4.0, -3.5),
(Seal, _) => (0.0, -2.0, -2.5),
}
.into()
}

View File

@ -103,6 +103,7 @@ pub struct SkeletonAttr {
leg: (f32, f32, f32),
foot: (f32, f32, f32),
scaler: f32,
steady_wings: bool,
}
impl<'a> TryFrom<&'a comp::Body> for SkeletonAttr {
@ -130,6 +131,7 @@ impl Default for SkeletonAttr {
leg: (0.0, 0.0, 0.0),
foot: (0.0, 0.0, 0.0),
scaler: 0.0,
steady_wings: false,
}
}
}
@ -148,6 +150,7 @@ impl<'a> From<&'a Body> for SkeletonAttr {
(Yale, _) => (7.0, 14.0),
(Dodarock, _) => (2.0, 1.5),
(Ntouka, _) => (2.0, 2.5),
(Axebeak, _) => (11.5, 8.5),
},
jaw: match (body.species, body.body_type) {
(Archaeos, _) => (1.0, -7.0),
@ -159,6 +162,7 @@ impl<'a> From<&'a Body> for SkeletonAttr {
(Yale, _) => (2.0, -9.5),
(Dodarock, _) => (0.0, -5.0),
(Ntouka, _) => (0.0, -4.0),
(Axebeak, _) => (2.5, -4.0),
},
neck: match (body.species, body.body_type) {
(Archaeos, _) => (4.5, -2.0),
@ -170,6 +174,7 @@ impl<'a> From<&'a Body> for SkeletonAttr {
(Yale, _) => (2.0, 4.0),
(Dodarock, _) => (5.0, -1.0),
(Ntouka, _) => (4.0, 0.0),
(Axebeak, _) => (-5.5, 0.0),
},
chest_front: match (body.species, body.body_type) {
(Archaeos, _) => (0.0, 20.0),
@ -181,6 +186,7 @@ impl<'a> From<&'a Body> for SkeletonAttr {
(Yale, _) => (0.0, 19.5),
(Dodarock, _) => (0.0, 12.0),
(Ntouka, _) => (0.0, 13.0),
(Axebeak, _) => (0.0, 12.0),
},
chest_back: match (body.species, body.body_type) {
(Archaeos, _) => (-5.5, -1.0),
@ -192,6 +198,7 @@ impl<'a> From<&'a Body> for SkeletonAttr {
(Yale, _) => (-3.0, -1.0),
(Dodarock, _) => (-4.5, -2.0),
(Ntouka, _) => (-4.5, 1.0),
(Axebeak, _) => (-5.0, 0.0),
},
tail_front: match (body.species, body.body_type) {
(Archaeos, _) => (-9.0, -1.5),
@ -203,6 +210,7 @@ impl<'a> From<&'a Body> for SkeletonAttr {
(Yale, _) => (-9.5, -4.0),
(Dodarock, _) => (-4.5, -4.5),
(Ntouka, _) => (-9.5, -3.5),
(Axebeak, _) => (-5.5, 4.5),
},
tail_back: match (body.species, body.body_type) {
(Archaeos, _) => (-8.0, -0.5),
@ -214,6 +222,7 @@ impl<'a> From<&'a Body> for SkeletonAttr {
(Yale, _) => (-5.0, -2.5),
(Dodarock, _) => (-8.5, -2.0),
(Ntouka, _) => (-9.5, -2.0),
(Axebeak, _) => (-10.0, 3.0),
},
hand: match (body.species, body.body_type) {
(Archaeos, _) => (3.0, 0.0, -4.0),
@ -225,6 +234,7 @@ impl<'a> From<&'a Body> for SkeletonAttr {
(Yale, _) => (3.0, 2.0, -0.5),
(Dodarock, _) => (3.5, 3.0, -5.0),
(Ntouka, _) => (3.5, 3.0, -4.0),
(Axebeak, _) => (1.5, -10.5, 9.5),
},
leg: match (body.species, body.body_type) {
(Archaeos, _) => (2.5, -3.0, -4.0),
@ -236,6 +246,7 @@ impl<'a> From<&'a Body> for SkeletonAttr {
(Yale, _) => (3.0, -3.5, -4.0),
(Dodarock, _) => (3.5, 1.5, -4.0),
(Ntouka, _) => (4.5, -5.5, -4.0),
(Axebeak, _) => (2.5, -0.5, 0.0),
},
foot: match (body.species, body.body_type) {
(Archaeos, _) => (3.0, -0.5, -7.0),
@ -247,6 +258,7 @@ impl<'a> From<&'a Body> for SkeletonAttr {
(Yale, _) => (1.5, 1.0, -3.5),
(Dodarock, _) => (1.5, -1.0, -3.5),
(Ntouka, _) => (1.5, -1.0, -2.5),
(Axebeak, _) => (2.5, 2.5, -7.0),
},
scaler: match (body.species, body.body_type) {
(Archaeos, _) => 2.93,
@ -258,7 +270,9 @@ impl<'a> From<&'a Body> for SkeletonAttr {
(Yale, _) => 1.26,
(Dodarock, _) => 1.1,
(Ntouka, _) => 2.93,
(Axebeak, _) => 1.1,
},
steady_wings: matches!((body.species, body.body_type), (Axebeak, _)),
}
}
}

View File

@ -103,13 +103,21 @@ impl Animation for RunAnimation {
next.tail_back.position = Vec3::new(0.0, s_a.tail_back.0, s_a.tail_back.1);
next.tail_back.orientation = Quaternion::rotation_x(0.2 + short * -0.1)
* Quaternion::rotation_z(shortalt * -0.2 + tilt * 1.4);
if s_a.steady_wings {
next.hand_l.position = Vec3::new(-s_a.hand.0 - 8.0, s_a.hand.1, s_a.hand.2);
next.hand_l.orientation =
Quaternion::rotation_x(-0.2 * speednorm) * Quaternion::rotation_z(-0.6);
next.hand_l.position = Vec3::new(-s_a.hand.0, s_a.hand.1, s_a.hand.2);
next.hand_l.orientation = Quaternion::rotation_x(-0.2 * speednorm + foot2a * 0.3);
next.hand_r.position = Vec3::new(s_a.hand.0, s_a.hand.1, s_a.hand.2);
next.hand_r.orientation = Quaternion::rotation_x(-0.2 * speednorm + foot1a * 0.3);
next.hand_r.position = Vec3::new(s_a.hand.0 + 8.0, s_a.hand.1, s_a.hand.2);
next.hand_r.orientation =
Quaternion::rotation_x(-0.2 * speednorm) * Quaternion::rotation_z(0.6);
} else {
next.hand_l.position = Vec3::new(-s_a.hand.0, s_a.hand.1, s_a.hand.2);
next.hand_l.orientation = Quaternion::rotation_x(-0.2 * speednorm + foot2a * 0.3);
next.hand_r.position = Vec3::new(s_a.hand.0, s_a.hand.1, s_a.hand.2);
next.hand_r.orientation = Quaternion::rotation_x(-0.2 * speednorm + foot1a * 0.3);
};
next.leg_l.position = Vec3::new(
-s_a.leg.0 + speednorm * 1.5,
s_a.leg.1 + foot1b * -1.3,