mirror of
https://gitlab.com/veloren/veloren.git
synced 2024-08-30 18:12:32 +00:00
haul out the critter skele, add theropod
This commit is contained in:
parent
aa440c02bb
commit
cd6e1ad45f
@ -461,6 +461,30 @@
|
||||
"frog": {
|
||||
"keyword": "frog",
|
||||
"generic": "Frog"
|
||||
},
|
||||
"rat": {
|
||||
"keyword": "rat",
|
||||
"generic": "Rat"
|
||||
},
|
||||
"axolotl": {
|
||||
"keyword": "axolotl",
|
||||
"generic": "Axolotl"
|
||||
},
|
||||
"gecko": {
|
||||
"keyword": "gecko",
|
||||
"generic": "Gecko"
|
||||
},
|
||||
"turtle": {
|
||||
"keyword": "turtle",
|
||||
"generic": "Turtle"
|
||||
},
|
||||
"squirrel": {
|
||||
"keyword": "squirrel",
|
||||
"generic": "Squirrel"
|
||||
},
|
||||
"fungome": {
|
||||
"keyword": "fungome",
|
||||
"generic": "Fungome"
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -550,37 +574,21 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"critter": {
|
||||
"theropod": {
|
||||
"body": {
|
||||
"keyword": "critter",
|
||||
"keyword": "theropod",
|
||||
"names": [
|
||||
"Remy"
|
||||
]
|
||||
},
|
||||
"species": {
|
||||
"rat": {
|
||||
"keyword": "rat",
|
||||
"generic": "Rat"
|
||||
"archaeos": {
|
||||
"keyword": "archaeos",
|
||||
"generic": "Archaeos"
|
||||
},
|
||||
"axolotl": {
|
||||
"keyword": "axolotl",
|
||||
"generic": "Axolotl"
|
||||
},
|
||||
"gecko": {
|
||||
"keyword": "gecko",
|
||||
"generic": "Gecko"
|
||||
},
|
||||
"turtle": {
|
||||
"keyword": "turtle",
|
||||
"generic": "Turtle"
|
||||
},
|
||||
"squirrel": {
|
||||
"keyword": "squirrel",
|
||||
"generic": "Squirrel"
|
||||
},
|
||||
"fungome": {
|
||||
"keyword": "fungome",
|
||||
"generic": "Fungome"
|
||||
"odontotyrannos": {
|
||||
"keyword": "odontotyrannos",
|
||||
"generic": "Odontotyrannos"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -1,266 +0,0 @@
|
||||
({
|
||||
(Rat, Male): (
|
||||
head: (
|
||||
offset: (-4.5, -4.0, -4.0),
|
||||
center: ("npc.rat.male.head"),
|
||||
),
|
||||
chest: (
|
||||
offset: (-4.5, -6.0, -4.0),
|
||||
center: ("npc.rat.male.chest"),
|
||||
),
|
||||
feet_f: (
|
||||
offset: (-4.0, -1.5, -1.0),
|
||||
center: ("npc.rat.male.feet_f"),
|
||||
),
|
||||
feet_b: (
|
||||
offset: (-4.0, -1.5, -1.0),
|
||||
center: ("npc.rat.male.feet_b"),
|
||||
),
|
||||
tail: (
|
||||
offset: (-0.5, -4.0, -1.5),
|
||||
center: ("npc.rat.male.tail"),
|
||||
),
|
||||
),
|
||||
(Rat, Female): (
|
||||
head: (
|
||||
offset: (-4.5, -4.0, -4.0),
|
||||
center: ("npc.rat.male.head"),
|
||||
),
|
||||
chest: (
|
||||
offset: (-4.5, -6.0, -4.0),
|
||||
center: ("npc.rat.male.chest"),
|
||||
),
|
||||
feet_f: (
|
||||
offset: (-4.0, -1.5, -1.0),
|
||||
center: ("npc.rat.male.feet_f"),
|
||||
),
|
||||
feet_b: (
|
||||
offset: (-4.0, -1.5, -1.0),
|
||||
center: ("npc.rat.male.feet_b"),
|
||||
),
|
||||
tail: (
|
||||
offset: (-0.5, -4.0, -1.5),
|
||||
center: ("npc.rat.male.tail"),
|
||||
),
|
||||
),
|
||||
(Axolotl, Male): (
|
||||
head: (
|
||||
offset: (-3.5, -4.0, -2.0),
|
||||
center: ("npc.axolotl.male.head"),
|
||||
),
|
||||
chest: (
|
||||
offset: (-2.5, -4.0, -1.5),
|
||||
center: ("npc.axolotl.male.chest"),
|
||||
),
|
||||
feet_f: (
|
||||
offset: (-3.0, -0.5, -1.0),
|
||||
center: ("npc.axolotl.male.feet_f"),
|
||||
),
|
||||
feet_b: (
|
||||
offset: (-3.0, -0.5, -1.0),
|
||||
center: ("npc.axolotl.male.feet_b"),
|
||||
),
|
||||
tail: (
|
||||
offset: (-1.5, -2.5, -1.5),
|
||||
center: ("npc.axolotl.male.tail"),
|
||||
),
|
||||
),
|
||||
(Axolotl, Female): (
|
||||
head: (
|
||||
offset: (-3.5, -4.0, -2.0),
|
||||
center: ("npc.axolotl.male.head"),
|
||||
),
|
||||
chest: (
|
||||
offset: (-2.5, -4.0, -1.5),
|
||||
center: ("npc.axolotl.male.chest"),
|
||||
),
|
||||
feet_f: (
|
||||
offset: (-3.0, -0.5, -1.0),
|
||||
center: ("npc.axolotl.male.feet_f"),
|
||||
),
|
||||
feet_b: (
|
||||
offset: (-3.0, -0.5, -1.0),
|
||||
center: ("npc.axolotl.male.feet_b"),
|
||||
),
|
||||
tail: (
|
||||
offset: (-1.5, -2.5, -1.5),
|
||||
center: ("npc.axolotl.male.tail"),
|
||||
),
|
||||
),
|
||||
(Gecko, Male): (
|
||||
head: (
|
||||
offset: (-2.5, -3.0, -2.0),
|
||||
center: ("npc.gecko.male.head"),
|
||||
),
|
||||
chest: (
|
||||
offset: (-1.5, -4.0, -2.0),
|
||||
center: ("npc.gecko.male.chest"),
|
||||
),
|
||||
feet_f: (
|
||||
offset: (-2.0, -0.5, -1.0),
|
||||
center: ("npc.gecko.male.feet_f"),
|
||||
),
|
||||
feet_b: (
|
||||
offset: (-2.0, -0.5, -1.0),
|
||||
center: ("npc.gecko.male.feet_b"),
|
||||
),
|
||||
tail: (
|
||||
offset: (-0.5, -2.5, -1.0),
|
||||
center: ("npc.gecko.male.tail"),
|
||||
),
|
||||
),
|
||||
(Gecko, Female): (
|
||||
head: (
|
||||
offset: (-2.5, -3.0, -2.0),
|
||||
center: ("npc.gecko.male.head"),
|
||||
),
|
||||
chest: (
|
||||
offset: (-1.5, -4.0, -1.5),
|
||||
center: ("npc.gecko.male.chest"),
|
||||
),
|
||||
feet_f: (
|
||||
offset: (-2.0, -0.5, -1.0),
|
||||
center: ("npc.gecko.male.feet_f"),
|
||||
),
|
||||
feet_b: (
|
||||
offset: (-2.0, -0.5, -1.0),
|
||||
center: ("npc.gecko.male.feet_b"),
|
||||
),
|
||||
tail: (
|
||||
offset: (-0.5, -2.5, -1.0),
|
||||
center: ("npc.gecko.male.tail"),
|
||||
),
|
||||
),
|
||||
(Turtle, Male): (
|
||||
head: (
|
||||
offset: (-2.5, -2.5, -2.5),
|
||||
center: ("npc.turtle.male.head"),
|
||||
),
|
||||
chest: (
|
||||
offset: (-6.0, -6.0, -4.0),
|
||||
center: ("npc.turtle.male.chest"),
|
||||
),
|
||||
feet_f: (
|
||||
offset: (-5.0, -0.5, -1.0),
|
||||
center: ("npc.turtle.male.feet_f"),
|
||||
),
|
||||
feet_b: (
|
||||
offset: (-5.0, -0.5, -1.0),
|
||||
center: ("npc.turtle.male.feet_b"),
|
||||
),
|
||||
tail: (
|
||||
offset: (-0.5, -2.0, -1.0),
|
||||
center: ("npc.turtle.male.tail"),
|
||||
),
|
||||
),
|
||||
(Turtle, Female): (
|
||||
head: (
|
||||
offset: (-2.5, -2.5, -2.5),
|
||||
center: ("npc.turtle.male.head"),
|
||||
),
|
||||
chest: (
|
||||
offset: (-6.0, -6.0, -4.0),
|
||||
center: ("npc.turtle.male.chest"),
|
||||
),
|
||||
feet_f: (
|
||||
offset: (-5.0, -0.5, -1.0),
|
||||
center: ("npc.turtle.male.feet_f"),
|
||||
),
|
||||
feet_b: (
|
||||
offset: (-5.0, -0.5, -1.0),
|
||||
center: ("npc.turtle.male.feet_b"),
|
||||
),
|
||||
tail: (
|
||||
offset: (-0.5, -2.0, -1.0),
|
||||
center: ("npc.turtle.male.tail"),
|
||||
),
|
||||
),
|
||||
(Squirrel, Male): (
|
||||
head: (
|
||||
offset: (-1.5, -2.0, -2.0),
|
||||
center: ("npc.squirrel.male.head"),
|
||||
),
|
||||
chest: (
|
||||
offset: (-1.5, -3.0, -1.5),
|
||||
center: ("npc.squirrel.male.chest"),
|
||||
),
|
||||
feet_f: (
|
||||
offset: (-2.0, -0.5, -1.0),
|
||||
center: ("npc.squirrel.male.feet_f"),
|
||||
),
|
||||
feet_b: (
|
||||
offset: (-2.0, -0.5, -1.0),
|
||||
center: ("npc.squirrel.male.feet_b"),
|
||||
),
|
||||
tail: (
|
||||
offset: (-1.5, -1.5, -3.0),
|
||||
center: ("npc.squirrel.male.tail"),
|
||||
),
|
||||
),
|
||||
(Squirrel, Female): (
|
||||
head: (
|
||||
offset: (-1.5, -2.0, -2.0),
|
||||
center: ("npc.squirrel.male.head"),
|
||||
),
|
||||
chest: (
|
||||
offset: (-1.5, -3.0, -1.5),
|
||||
center: ("npc.squirrel.male.chest"),
|
||||
),
|
||||
feet_f: (
|
||||
offset: (-2.0, -0.5, -1.0),
|
||||
center: ("npc.squirrel.male.feet_f"),
|
||||
),
|
||||
feet_b: (
|
||||
offset: (-2.0, -0.5, -1.0),
|
||||
center: ("npc.squirrel.male.feet_b"),
|
||||
),
|
||||
tail: (
|
||||
offset: (-1.5, -1.5, -3.0),
|
||||
center: ("npc.squirrel.male.tail"),
|
||||
),
|
||||
),
|
||||
(Fungome, Male): (
|
||||
head: (
|
||||
offset: (-2.5, -1.5, -2.0),
|
||||
center: ("npc.fungome.male.head"),
|
||||
),
|
||||
chest: (
|
||||
offset: (-6.0, -6.0, -4.0),
|
||||
center: ("npc.fungome.male.chest"),
|
||||
),
|
||||
feet_f: (
|
||||
offset: (-3.0, -0.5, -1.0),
|
||||
center: ("npc.fungome.male.feet_f"),
|
||||
),
|
||||
feet_b: (
|
||||
offset: (-3.0, -0.5, -1.0),
|
||||
center: ("npc.fungome.male.feet_b"),
|
||||
),
|
||||
tail: (
|
||||
offset: (-1.0, -0.5, -1.0),
|
||||
center: ("npc.fungome.male.tail"),
|
||||
),
|
||||
),
|
||||
(Fungome, Female): (
|
||||
head: (
|
||||
offset: (-2.5, -1.5, -2.0),
|
||||
center: ("npc.fungome.male.head"),
|
||||
),
|
||||
chest: (
|
||||
offset: (-6.0, -6.0, -4.0),
|
||||
center: ("npc.fungome.male.chest"),
|
||||
),
|
||||
feet_f: (
|
||||
offset: (-3.0, -0.5, -1.0),
|
||||
center: ("npc.fungome.male.feet_f"),
|
||||
),
|
||||
feet_b: (
|
||||
offset: (-3.0, -0.5, -1.0),
|
||||
center: ("npc.fungome.male.feet_b"),
|
||||
),
|
||||
tail: (
|
||||
offset: (-1.0, -0.5, -1.0),
|
||||
center: ("npc.fungome.male.tail"),
|
||||
),
|
||||
),
|
||||
})
|
BIN
assets/voxygen/voxel/npc/archaeos/male/chest_back.vox
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/voxel/npc/archaeos/male/chest_back.vox
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/voxygen/voxel/npc/archaeos/male/chest_front.vox
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/voxel/npc/archaeos/male/chest_front.vox
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/voxygen/voxel/npc/archaeos/male/foot_l.vox
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/voxel/npc/archaeos/male/foot_l.vox
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/voxygen/voxel/npc/archaeos/male/foot_r.vox
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/voxel/npc/archaeos/male/foot_r.vox
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/voxygen/voxel/npc/archaeos/male/hand_l.vox
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/voxel/npc/archaeos/male/hand_l.vox
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/voxygen/voxel/npc/archaeos/male/hand_r.vox
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/voxel/npc/archaeos/male/hand_r.vox
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/voxygen/voxel/npc/archaeos/male/head.vox
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/voxel/npc/archaeos/male/head.vox
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/voxygen/voxel/npc/archaeos/male/jaw.vox
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/voxel/npc/archaeos/male/jaw.vox
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/voxygen/voxel/npc/archaeos/male/leg_l.vox
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/voxel/npc/archaeos/male/leg_l.vox
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/voxygen/voxel/npc/archaeos/male/leg_r.vox
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/voxel/npc/archaeos/male/leg_r.vox
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/voxygen/voxel/npc/archaeos/male/neck.vox
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/voxel/npc/archaeos/male/neck.vox
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/voxygen/voxel/npc/archaeos/male/tail_back.vox
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/voxel/npc/archaeos/male/tail_back.vox
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/voxygen/voxel/npc/archaeos/male/tail_front.vox
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/voxel/npc/archaeos/male/tail_front.vox
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/voxygen/voxel/npc/axolotl/male/chest.vox
(Stored with Git LFS)
BIN
assets/voxygen/voxel/npc/axolotl/male/chest.vox
(Stored with Git LFS)
Binary file not shown.
BIN
assets/voxygen/voxel/npc/axolotl/male/feet_b.vox
(Stored with Git LFS)
BIN
assets/voxygen/voxel/npc/axolotl/male/feet_b.vox
(Stored with Git LFS)
Binary file not shown.
BIN
assets/voxygen/voxel/npc/axolotl/male/feet_f.vox
(Stored with Git LFS)
BIN
assets/voxygen/voxel/npc/axolotl/male/feet_f.vox
(Stored with Git LFS)
Binary file not shown.
BIN
assets/voxygen/voxel/npc/axolotl/male/foot_fl.vox
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/voxel/npc/axolotl/male/foot_fl.vox
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/voxygen/voxel/npc/axolotl/male/foot_fr.vox
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/voxel/npc/axolotl/male/foot_fr.vox
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/voxygen/voxel/npc/axolotl/male/head.vox
(Stored with Git LFS)
BIN
assets/voxygen/voxel/npc/axolotl/male/head.vox
(Stored with Git LFS)
Binary file not shown.
BIN
assets/voxygen/voxel/npc/axolotl/male/tail.vox
(Stored with Git LFS)
BIN
assets/voxygen/voxel/npc/axolotl/male/tail.vox
(Stored with Git LFS)
Binary file not shown.
BIN
assets/voxygen/voxel/npc/fungome/male/chest.vox
(Stored with Git LFS)
BIN
assets/voxygen/voxel/npc/fungome/male/chest.vox
(Stored with Git LFS)
Binary file not shown.
BIN
assets/voxygen/voxel/npc/fungome/male/feet_b.vox
(Stored with Git LFS)
BIN
assets/voxygen/voxel/npc/fungome/male/feet_b.vox
(Stored with Git LFS)
Binary file not shown.
BIN
assets/voxygen/voxel/npc/fungome/male/feet_f.vox
(Stored with Git LFS)
BIN
assets/voxygen/voxel/npc/fungome/male/feet_f.vox
(Stored with Git LFS)
Binary file not shown.
BIN
assets/voxygen/voxel/npc/fungome/male/foot_bl.vox
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/voxel/npc/fungome/male/foot_bl.vox
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/voxygen/voxel/npc/fungome/male/foot_br.vox
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/voxel/npc/fungome/male/foot_br.vox
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/voxygen/voxel/npc/fungome/male/foot_fl.vox
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/voxel/npc/fungome/male/foot_fl.vox
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/voxygen/voxel/npc/fungome/male/foot_fr.vox
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/voxel/npc/fungome/male/foot_fr.vox
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/voxygen/voxel/npc/fungome/male/head.vox
(Stored with Git LFS)
BIN
assets/voxygen/voxel/npc/fungome/male/head.vox
(Stored with Git LFS)
Binary file not shown.
BIN
assets/voxygen/voxel/npc/fungome/male/tail.vox
(Stored with Git LFS)
BIN
assets/voxygen/voxel/npc/fungome/male/tail.vox
(Stored with Git LFS)
Binary file not shown.
BIN
assets/voxygen/voxel/npc/gecko/male/chest.vox
(Stored with Git LFS)
BIN
assets/voxygen/voxel/npc/gecko/male/chest.vox
(Stored with Git LFS)
Binary file not shown.
BIN
assets/voxygen/voxel/npc/gecko/male/feet_b.vox
(Stored with Git LFS)
BIN
assets/voxygen/voxel/npc/gecko/male/feet_b.vox
(Stored with Git LFS)
Binary file not shown.
BIN
assets/voxygen/voxel/npc/gecko/male/feet_f.vox
(Stored with Git LFS)
BIN
assets/voxygen/voxel/npc/gecko/male/feet_f.vox
(Stored with Git LFS)
Binary file not shown.
BIN
assets/voxygen/voxel/npc/gecko/male/foot_bl.vox
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/voxel/npc/gecko/male/foot_bl.vox
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/voxygen/voxel/npc/gecko/male/foot_br.vox
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/voxel/npc/gecko/male/foot_br.vox
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/voxygen/voxel/npc/gecko/male/foot_fl.vox
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/voxel/npc/gecko/male/foot_fl.vox
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/voxygen/voxel/npc/gecko/male/foot_fr.vox
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/voxel/npc/gecko/male/foot_fr.vox
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/voxygen/voxel/npc/gecko/male/head.vox
(Stored with Git LFS)
BIN
assets/voxygen/voxel/npc/gecko/male/head.vox
(Stored with Git LFS)
Binary file not shown.
BIN
assets/voxygen/voxel/npc/gecko/male/tail.vox
(Stored with Git LFS)
BIN
assets/voxygen/voxel/npc/gecko/male/tail.vox
(Stored with Git LFS)
Binary file not shown.
BIN
assets/voxygen/voxel/npc/odontotyrannos/Odontotyrannos-0.vox
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/voxel/npc/odontotyrannos/Odontotyrannos-0.vox
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/voxygen/voxel/npc/odontotyrannos/Odontotyrannos-1.vox
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/voxel/npc/odontotyrannos/Odontotyrannos-1.vox
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/voxygen/voxel/npc/odontotyrannos/Odontotyrannos-10.vox
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/voxel/npc/odontotyrannos/Odontotyrannos-10.vox
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/voxygen/voxel/npc/odontotyrannos/Odontotyrannos-11.vox
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/voxel/npc/odontotyrannos/Odontotyrannos-11.vox
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/voxygen/voxel/npc/odontotyrannos/Odontotyrannos-2.vox
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/voxel/npc/odontotyrannos/Odontotyrannos-2.vox
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/voxygen/voxel/npc/odontotyrannos/Odontotyrannos-3.vox
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/voxel/npc/odontotyrannos/Odontotyrannos-3.vox
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/voxygen/voxel/npc/odontotyrannos/Odontotyrannos-4.vox
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/voxel/npc/odontotyrannos/Odontotyrannos-4.vox
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/voxygen/voxel/npc/odontotyrannos/Odontotyrannos-5.vox
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/voxel/npc/odontotyrannos/Odontotyrannos-5.vox
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/voxygen/voxel/npc/odontotyrannos/Odontotyrannos-6.vox
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/voxel/npc/odontotyrannos/Odontotyrannos-6.vox
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/voxygen/voxel/npc/odontotyrannos/Odontotyrannos-7.vox
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/voxel/npc/odontotyrannos/Odontotyrannos-7.vox
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/voxygen/voxel/npc/odontotyrannos/Odontotyrannos-8.vox
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/voxel/npc/odontotyrannos/Odontotyrannos-8.vox
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/voxygen/voxel/npc/odontotyrannos/Odontotyrannos-9.vox
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/voxel/npc/odontotyrannos/Odontotyrannos-9.vox
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/voxygen/voxel/npc/rat/male/chest.vox
(Stored with Git LFS)
BIN
assets/voxygen/voxel/npc/rat/male/chest.vox
(Stored with Git LFS)
Binary file not shown.
BIN
assets/voxygen/voxel/npc/rat/male/feet_b.vox
(Stored with Git LFS)
BIN
assets/voxygen/voxel/npc/rat/male/feet_b.vox
(Stored with Git LFS)
Binary file not shown.
BIN
assets/voxygen/voxel/npc/rat/male/feet_f.vox
(Stored with Git LFS)
BIN
assets/voxygen/voxel/npc/rat/male/feet_f.vox
(Stored with Git LFS)
Binary file not shown.
BIN
assets/voxygen/voxel/npc/rat/male/feet_r.vox
(Stored with Git LFS)
BIN
assets/voxygen/voxel/npc/rat/male/feet_r.vox
(Stored with Git LFS)
Binary file not shown.
BIN
assets/voxygen/voxel/npc/rat/male/foot_bl.vox
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/voxel/npc/rat/male/foot_bl.vox
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/voxygen/voxel/npc/rat/male/foot_br.vox
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/voxel/npc/rat/male/foot_br.vox
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/voxygen/voxel/npc/rat/male/foot_fl.vox
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/voxel/npc/rat/male/foot_fl.vox
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/voxygen/voxel/npc/rat/male/foot_fr.vox
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/voxel/npc/rat/male/foot_fr.vox
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/voxygen/voxel/npc/rat/male/head.vox
(Stored with Git LFS)
BIN
assets/voxygen/voxel/npc/rat/male/head.vox
(Stored with Git LFS)
Binary file not shown.
BIN
assets/voxygen/voxel/npc/rat/male/tail.vox
(Stored with Git LFS)
BIN
assets/voxygen/voxel/npc/rat/male/tail.vox
(Stored with Git LFS)
Binary file not shown.
BIN
assets/voxygen/voxel/npc/squirrel/male/chest.vox
(Stored with Git LFS)
BIN
assets/voxygen/voxel/npc/squirrel/male/chest.vox
(Stored with Git LFS)
Binary file not shown.
BIN
assets/voxygen/voxel/npc/squirrel/male/feet_b.vox
(Stored with Git LFS)
BIN
assets/voxygen/voxel/npc/squirrel/male/feet_b.vox
(Stored with Git LFS)
Binary file not shown.
BIN
assets/voxygen/voxel/npc/squirrel/male/feet_f.vox
(Stored with Git LFS)
BIN
assets/voxygen/voxel/npc/squirrel/male/feet_f.vox
(Stored with Git LFS)
Binary file not shown.
BIN
assets/voxygen/voxel/npc/squirrel/male/foot_bl.vox
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/voxel/npc/squirrel/male/foot_bl.vox
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/voxygen/voxel/npc/squirrel/male/foot_br.vox
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/voxel/npc/squirrel/male/foot_br.vox
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/voxygen/voxel/npc/squirrel/male/foot_fl.vox
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/voxel/npc/squirrel/male/foot_fl.vox
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/voxygen/voxel/npc/squirrel/male/foot_fr.vox
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/voxel/npc/squirrel/male/foot_fr.vox
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/voxygen/voxel/npc/squirrel/male/head.vox
(Stored with Git LFS)
BIN
assets/voxygen/voxel/npc/squirrel/male/head.vox
(Stored with Git LFS)
Binary file not shown.
BIN
assets/voxygen/voxel/npc/squirrel/male/tail.vox
(Stored with Git LFS)
BIN
assets/voxygen/voxel/npc/squirrel/male/tail.vox
(Stored with Git LFS)
Binary file not shown.
BIN
assets/voxygen/voxel/npc/turtle/male/foot_bl.vox
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/voxel/npc/turtle/male/foot_bl.vox
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/voxygen/voxel/npc/turtle/male/foot_br.vox
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/voxel/npc/turtle/male/foot_br.vox
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/voxygen/voxel/npc/turtle/male/foot_fl.vox
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/voxel/npc/turtle/male/foot_fl.vox
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/voxygen/voxel/npc/turtle/male/foot_fr.vox
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/voxel/npc/turtle/male/foot_fr.vox
(Stored with Git LFS)
Normal file
Binary file not shown.
@ -462,4 +462,172 @@
|
||||
central: ("armor.empty"),
|
||||
),
|
||||
),
|
||||
(Rat, Male):(
|
||||
head: (
|
||||
offset: (-3.5, 0.0, -3.0),
|
||||
central: ("npc.frog.male.head"),
|
||||
),
|
||||
chest: (
|
||||
offset: (-3.5, -5.0, -3.0),
|
||||
central: ("npc.frog.male.chest"),
|
||||
),
|
||||
tail: (
|
||||
offset: (0.0, 0.0, 0.0),
|
||||
central: ("armor.empty"),
|
||||
),
|
||||
),
|
||||
(Rat, Female):(
|
||||
head: (
|
||||
offset: (-3.5, 0.0, -3.0),
|
||||
central: ("npc.frog.male.head"),
|
||||
),
|
||||
chest: (
|
||||
offset: (-3.5, -5.0, -3.0),
|
||||
central: ("npc.frog.male.chest"),
|
||||
),
|
||||
tail: (
|
||||
offset: (0.0, 0.0, 0.0),
|
||||
central: ("armor.empty"),
|
||||
),
|
||||
),
|
||||
(Axolotl, Male):(
|
||||
head: (
|
||||
offset: (-3.5, 0.0, -3.0),
|
||||
central: ("npc.frog.male.head"),
|
||||
),
|
||||
chest: (
|
||||
offset: (-3.5, -5.0, -3.0),
|
||||
central: ("npc.frog.male.chest"),
|
||||
),
|
||||
tail: (
|
||||
offset: (0.0, 0.0, 0.0),
|
||||
central: ("armor.empty"),
|
||||
),
|
||||
),
|
||||
(Axolotl, Female):(
|
||||
head: (
|
||||
offset: (-3.5, 0.0, -3.0),
|
||||
central: ("npc.frog.male.head"),
|
||||
),
|
||||
chest: (
|
||||
offset: (-3.5, -5.0, -3.0),
|
||||
central: ("npc.frog.male.chest"),
|
||||
),
|
||||
tail: (
|
||||
offset: (0.0, 0.0, 0.0),
|
||||
central: ("armor.empty"),
|
||||
),
|
||||
),
|
||||
(Gecko, Male):(
|
||||
head: (
|
||||
offset: (-3.5, 0.0, -3.0),
|
||||
central: ("npc.frog.male.head"),
|
||||
),
|
||||
chest: (
|
||||
offset: (-3.5, -5.0, -3.0),
|
||||
central: ("npc.frog.male.chest"),
|
||||
),
|
||||
tail: (
|
||||
offset: (0.0, 0.0, 0.0),
|
||||
central: ("armor.empty"),
|
||||
),
|
||||
),
|
||||
(Gecko, Female):(
|
||||
head: (
|
||||
offset: (-3.5, 0.0, -3.0),
|
||||
central: ("npc.frog.male.head"),
|
||||
),
|
||||
chest: (
|
||||
offset: (-3.5, -5.0, -3.0),
|
||||
central: ("npc.gecko.male.chest"),
|
||||
),
|
||||
tail: (
|
||||
offset: (0.0, 0.0, 0.0),
|
||||
central: ("armor.empty"),
|
||||
),
|
||||
),
|
||||
(Turtle, Male):(
|
||||
head: (
|
||||
offset: (-3.5, 0.0, -3.0),
|
||||
central: ("npc.turtle.male.head"),
|
||||
),
|
||||
chest: (
|
||||
offset: (-3.5, -5.0, -3.0),
|
||||
central: ("npc.turtle.male.chest"),
|
||||
),
|
||||
tail: (
|
||||
offset: (0.0, 0.0, 0.0),
|
||||
central: ("armor.empty"),
|
||||
),
|
||||
),
|
||||
(Turtle, Female):(
|
||||
head: (
|
||||
offset: (-3.5, 0.0, -3.0),
|
||||
central: ("npc.turtle.male.head"),
|
||||
),
|
||||
chest: (
|
||||
offset: (-3.5, -5.0, -3.0),
|
||||
central: ("npc.turtle.male.chest"),
|
||||
),
|
||||
tail: (
|
||||
offset: (0.0, 0.0, 0.0),
|
||||
central: ("armor.empty"),
|
||||
),
|
||||
),
|
||||
(Squirrel, Male):(
|
||||
head: (
|
||||
offset: (-3.5, 0.0, -3.0),
|
||||
central: ("npc.squirrel.male.head"),
|
||||
),
|
||||
chest: (
|
||||
offset: (-3.5, -5.0, -3.0),
|
||||
central: ("npc.squirrel.male.chest"),
|
||||
),
|
||||
tail: (
|
||||
offset: (0.0, 0.0, 0.0),
|
||||
central: ("armor.empty"),
|
||||
),
|
||||
),
|
||||
(Squirrel, Female):(
|
||||
head: (
|
||||
offset: (-3.5, 0.0, -3.0),
|
||||
central: ("npc.squirrel.male.head"),
|
||||
),
|
||||
chest: (
|
||||
offset: (-3.5, -5.0, -3.0),
|
||||
central: ("npc.squirrel.male.chest"),
|
||||
),
|
||||
tail: (
|
||||
offset: (0.0, 0.0, 0.0),
|
||||
central: ("armor.empty"),
|
||||
),
|
||||
),
|
||||
(Fungome, Male):(
|
||||
head: (
|
||||
offset: (-3.5, 0.0, -3.0),
|
||||
central: ("npc.fungome.male.head"),
|
||||
),
|
||||
chest: (
|
||||
offset: (-3.5, -5.0, -3.0),
|
||||
central: ("npc.fungome.male.chest"),
|
||||
),
|
||||
tail: (
|
||||
offset: (0.0, 0.0, 0.0),
|
||||
central: ("armor.empty"),
|
||||
),
|
||||
),
|
||||
(Fungome, Female):(
|
||||
head: (
|
||||
offset: (-3.5, 0.0, -3.0),
|
||||
central: ("npc.fungome.male.head"),
|
||||
),
|
||||
chest: (
|
||||
offset: (-3.5, -5.0, -3.0),
|
||||
central: ("npc.fungome.male.chest"),
|
||||
),
|
||||
tail: (
|
||||
offset: (0.0, 0.0, 0.0),
|
||||
central: ("armor.empty"),
|
||||
),
|
||||
),
|
||||
})
|
@ -575,7 +575,6 @@
|
||||
lateral: ("npc.frog.male.foot_br"),
|
||||
),
|
||||
),
|
||||
|
||||
(Frog, Female): (
|
||||
left_front: (
|
||||
offset: (-2.5, -2.5, -4.0),
|
||||
@ -594,4 +593,220 @@
|
||||
lateral: ("npc.frog.male.foot_br"),
|
||||
),
|
||||
),
|
||||
(Rat, Male): (
|
||||
left_front: (
|
||||
offset: (-2.5, -2.5, -4.0),
|
||||
lateral: ("npc.rat.male.foot_fl"),
|
||||
),
|
||||
right_front: (
|
||||
offset: (-2.5, -2.5, -4.0),
|
||||
lateral: ("npc.rat.male.foot_fr"),
|
||||
),
|
||||
left_back: (
|
||||
offset: (-2.5, -3.5, -4.0),
|
||||
lateral: ("npc.rat.male.foot_bl"),
|
||||
),
|
||||
right_back: (
|
||||
offset: (-2.5, -3.5, -4.0),
|
||||
lateral: ("npc.rat.male.foot_br"),
|
||||
),
|
||||
),
|
||||
(Rat, Female): (
|
||||
left_front: (
|
||||
offset: (-2.5, -2.5, -4.0),
|
||||
lateral: ("npc.rat.male.foot_fl"),
|
||||
),
|
||||
right_front: (
|
||||
offset: (-2.5, -2.5, -4.0),
|
||||
lateral: ("npc.rat.male.foot_fr"),
|
||||
),
|
||||
left_back: (
|
||||
offset: (-2.5, -3.5, -4.0),
|
||||
lateral: ("npc.rat.male.foot_bl"),
|
||||
),
|
||||
right_back: (
|
||||
offset: (-2.5, -3.5, -4.0),
|
||||
lateral: ("npc.rat.male.foot_br"),
|
||||
),
|
||||
),
|
||||
(Axolotl, Male): (
|
||||
left_front: (
|
||||
offset: (-2.5, -2.5, -4.0),
|
||||
lateral: ("npc.axolotl.male.foot_fl"),
|
||||
),
|
||||
right_front: (
|
||||
offset: (-2.5, -2.5, -4.0),
|
||||
lateral: ("npc.axolotl.male.foot_fr"),
|
||||
),
|
||||
left_back: (
|
||||
offset: (-2.5, -3.5, -4.0),
|
||||
lateral: ("npc.axolotl.male.foot_bl"),
|
||||
),
|
||||
right_back: (
|
||||
offset: (-2.5, -3.5, -4.0),
|
||||
lateral: ("npc.axolotl.male.foot_br"),
|
||||
),
|
||||
),
|
||||
(Axolotl, Female): (
|
||||
left_front: (
|
||||
offset: (-2.5, -2.5, -4.0),
|
||||
lateral: ("npc.axolotl.male.foot_fl"),
|
||||
),
|
||||
right_front: (
|
||||
offset: (-2.5, -2.5, -4.0),
|
||||
lateral: ("npc.axolotl.male.foot_fr"),
|
||||
),
|
||||
left_back: (
|
||||
offset: (-2.5, -3.5, -4.0),
|
||||
lateral: ("npc.axolotl.male.foot_bl"),
|
||||
),
|
||||
right_back: (
|
||||
offset: (-2.5, -3.5, -4.0),
|
||||
lateral: ("npc.axolotl.male.foot_br"),
|
||||
),
|
||||
),
|
||||
(Gecko, Male): (
|
||||
left_front: (
|
||||
offset: (-2.5, -2.5, -4.0),
|
||||
lateral: ("npc.gecko.male.foot_fl"),
|
||||
),
|
||||
right_front: (
|
||||
offset: (-2.5, -2.5, -4.0),
|
||||
lateral: ("npc.gecko.male.foot_fr"),
|
||||
),
|
||||
left_back: (
|
||||
offset: (-2.5, -3.5, -4.0),
|
||||
lateral: ("npc.gecko.male.foot_bl"),
|
||||
),
|
||||
right_back: (
|
||||
offset: (-2.5, -3.5, -4.0),
|
||||
lateral: ("npc.gecko.male.foot_br"),
|
||||
),
|
||||
),
|
||||
(Gecko, Female): (
|
||||
left_front: (
|
||||
offset: (-2.5, -2.5, -4.0),
|
||||
lateral: ("npc.gecko.male.foot_fl"),
|
||||
),
|
||||
right_front: (
|
||||
offset: (-2.5, -2.5, -4.0),
|
||||
lateral: ("npc.gecko.male.foot_fr"),
|
||||
),
|
||||
left_back: (
|
||||
offset: (-2.5, -3.5, -4.0),
|
||||
lateral: ("npc.gecko.male.foot_bl"),
|
||||
),
|
||||
right_back: (
|
||||
offset: (-2.5, -3.5, -4.0),
|
||||
lateral: ("npc.gecko.male.foot_br"),
|
||||
),
|
||||
),
|
||||
(Turtle, Male): (
|
||||
left_front: (
|
||||
offset: (-2.5, -2.5, -4.0),
|
||||
lateral: ("npc.turtle.male.foot_fl"),
|
||||
),
|
||||
right_front: (
|
||||
offset: (-2.5, -2.5, -4.0),
|
||||
lateral: ("npc.turtle.male.foot_fr"),
|
||||
),
|
||||
left_back: (
|
||||
offset: (-2.5, -3.5, -4.0),
|
||||
lateral: ("npc.turtle.male.foot_bl"),
|
||||
),
|
||||
right_back: (
|
||||
offset: (-2.5, -3.5, -4.0),
|
||||
lateral: ("npc.turtle.male.foot_br"),
|
||||
),
|
||||
),
|
||||
(Turtle, Female): (
|
||||
left_front: (
|
||||
offset: (-2.5, -2.5, -4.0),
|
||||
lateral: ("npc.turtle.male.foot_fl"),
|
||||
),
|
||||
right_front: (
|
||||
offset: (-2.5, -2.5, -4.0),
|
||||
lateral: ("npc.turtle.male.foot_fr"),
|
||||
),
|
||||
left_back: (
|
||||
offset: (-2.5, -3.5, -4.0),
|
||||
lateral: ("npc.turtle.male.foot_bl"),
|
||||
),
|
||||
right_back: (
|
||||
offset: (-2.5, -3.5, -4.0),
|
||||
lateral: ("npc.turtle.male.foot_br"),
|
||||
),
|
||||
),
|
||||
(Squirrel, Male): (
|
||||
left_front: (
|
||||
offset: (-2.5, -2.5, -4.0),
|
||||
lateral: ("npc.squirrel.male.foot_fl"),
|
||||
),
|
||||
right_front: (
|
||||
offset: (-2.5, -2.5, -4.0),
|
||||
lateral: ("npc.squirrel.male.foot_fr"),
|
||||
),
|
||||
left_back: (
|
||||
offset: (-2.5, -3.5, -4.0),
|
||||
lateral: ("npc.squirrel.male.foot_bl"),
|
||||
),
|
||||
right_back: (
|
||||
offset: (-2.5, -3.5, -4.0),
|
||||
lateral: ("npc.squirrel.male.foot_br"),
|
||||
),
|
||||
),
|
||||
(Squirrel, Female): (
|
||||
left_front: (
|
||||
offset: (-2.5, -2.5, -4.0),
|
||||
lateral: ("npc.squirrel.male.foot_fl"),
|
||||
),
|
||||
right_front: (
|
||||
offset: (-2.5, -2.5, -4.0),
|
||||
lateral: ("npc.squirrel.male.foot_fr"),
|
||||
),
|
||||
left_back: (
|
||||
offset: (-2.5, -3.5, -4.0),
|
||||
lateral: ("npc.squirrel.male.foot_bl"),
|
||||
),
|
||||
right_back: (
|
||||
offset: (-2.5, -3.5, -4.0),
|
||||
lateral: ("npc.squirrel.male.foot_br"),
|
||||
),
|
||||
),
|
||||
(Fungome, Male): (
|
||||
left_front: (
|
||||
offset: (-2.5, -2.5, -4.0),
|
||||
lateral: ("npc.fungome.male.foot_fl"),
|
||||
),
|
||||
right_front: (
|
||||
offset: (-2.5, -2.5, -4.0),
|
||||
lateral: ("npc.fungome.male.foot_fr"),
|
||||
),
|
||||
left_back: (
|
||||
offset: (-2.5, -3.5, -4.0),
|
||||
lateral: ("npc.fungome.male.foot_bl"),
|
||||
),
|
||||
right_back: (
|
||||
offset: (-2.5, -3.5, -4.0),
|
||||
lateral: ("npc.fungome.male.foot_br"),
|
||||
),
|
||||
),
|
||||
(Fungome, Female): (
|
||||
left_front: (
|
||||
offset: (-2.5, -2.5, -4.0),
|
||||
lateral: ("npc.fungome.male.foot_fl"),
|
||||
),
|
||||
right_front: (
|
||||
offset: (-2.5, -2.5, -4.0),
|
||||
lateral: ("npc.fungome.male.foot_fr"),
|
||||
),
|
||||
left_back: (
|
||||
offset: (-2.5, -3.5, -4.0),
|
||||
lateral: ("npc.fungome.male.foot_bl"),
|
||||
),
|
||||
right_back: (
|
||||
offset: (-2.5, -3.5, -4.0),
|
||||
lateral: ("npc.fungome.male.foot_br"),
|
||||
),
|
||||
),
|
||||
})
|
122
assets/voxygen/voxel/theropod_central_manifest.ron
Normal file
122
assets/voxygen/voxel/theropod_central_manifest.ron
Normal file
@ -0,0 +1,122 @@
|
||||
({
|
||||
(Archaeos, Male): (
|
||||
head: (
|
||||
offset: (-4.5, 0.0, -5.0),
|
||||
central: ("npc.archaeos.male.head"),
|
||||
),
|
||||
jaw: (
|
||||
offset: (-4.5, -9.0, -3.0),
|
||||
central: ("npc.archaeos.male.jaw"),
|
||||
),
|
||||
neck: (
|
||||
offset: (-4.5, 0.0, -3.0),
|
||||
central: ("npc.archaeos.male.neck"),
|
||||
),
|
||||
chest_front: (
|
||||
offset: (-7.5, -5.5, -7.0),
|
||||
central: ("npc.archaeos.male.chest_front"),
|
||||
),
|
||||
chest_back: (
|
||||
offset: (-4.5, -9.0, -7.0),
|
||||
central: ("npc.archaeos.male.chest_back"),
|
||||
),
|
||||
tail_front: (
|
||||
offset: (-3.5, -8.0, -3.5),
|
||||
central: ("npc.archaeos.male.tail_front"),
|
||||
),
|
||||
tail_back: (
|
||||
offset: (-7.5, -11.0, -3.0),
|
||||
central: ("npc.archaeos.male.tail_back"),
|
||||
),
|
||||
),
|
||||
(Archaeos, Female): (
|
||||
head: (
|
||||
offset: (-4.5, 0.0, -5.0),
|
||||
central: ("npc.archaeos.male.head"),
|
||||
),
|
||||
jaw: (
|
||||
offset: (-4.5, -9.0, -3.0),
|
||||
central: ("npc.archaeos.male.jaw"),
|
||||
),
|
||||
neck: (
|
||||
offset: (-4.5, 0.0, -3.0),
|
||||
central: ("npc.archaeos.male.neck"),
|
||||
),
|
||||
chest_front: (
|
||||
offset: (-7.5, -5.5, -7.0),
|
||||
central: ("npc.archaeos.male.chest_front"),
|
||||
),
|
||||
chest_back: (
|
||||
offset: (-4.5, -9.0, -7.0),
|
||||
central: ("npc.archaeos.male.chest_back"),
|
||||
),
|
||||
tail_front: (
|
||||
offset: (-3.5, -8.0, -3.5),
|
||||
central: ("npc.archaeos.male.tail_front"),
|
||||
),
|
||||
tail_back: (
|
||||
offset: (-7.5, -11.0, -3.0),
|
||||
central: ("npc.archaeos.male.tail_back"),
|
||||
),
|
||||
),
|
||||
(Odontotyrannos, Male): (
|
||||
head: (
|
||||
offset: (-4.5, -4.0, -4.0),
|
||||
central: ("npc.rat.male.head"),
|
||||
),
|
||||
jaw: (
|
||||
offset: (-4.5, -6.0, -4.0),
|
||||
central: ("npc.rat.male.chest"),
|
||||
),
|
||||
neck: (
|
||||
offset: (-4.0, -1.5, -1.0),
|
||||
central: ("npc.rat.male.chest"),
|
||||
),
|
||||
chest_front: (
|
||||
offset: (-4.0, -1.5, -1.0),
|
||||
central: ("npc.rat.male.chest"),
|
||||
),
|
||||
chest_back: (
|
||||
offset: (-4.0, -1.5, -1.0),
|
||||
central: ("npc.rat.male.chest"),
|
||||
),
|
||||
tail_front: (
|
||||
offset: (-0.5, -4.0, -1.5),
|
||||
central: ("npc.rat.male.chest"),
|
||||
),
|
||||
tail_back: (
|
||||
offset: (-0.5, -4.0, -1.5),
|
||||
central: ("npc.rat.male.chest"),
|
||||
),
|
||||
),
|
||||
(Odontotyrannos, Female): (
|
||||
head: (
|
||||
offset: (-4.5, -4.0, -4.0),
|
||||
central: ("npc.rat.male.head"),
|
||||
),
|
||||
jaw: (
|
||||
offset: (-4.5, -6.0, -4.0),
|
||||
central: ("npc.rat.male.chest"),
|
||||
),
|
||||
neck: (
|
||||
offset: (-4.0, -1.5, -1.0),
|
||||
central: ("npc.rat.male.chest"),
|
||||
),
|
||||
chest_front: (
|
||||
offset: (-4.0, -1.5, -1.0),
|
||||
central: ("npc.rat.male.chest"),
|
||||
),
|
||||
chest_back: (
|
||||
offset: (-4.0, -1.5, -1.0),
|
||||
central: ("npc.rat.male.chest"),
|
||||
),
|
||||
tail_front: (
|
||||
offset: (-0.5, -4.0, -1.5),
|
||||
central: ("npc.rat.male.chest"),
|
||||
),
|
||||
tail_back: (
|
||||
offset: (-0.5, -4.0, -1.5),
|
||||
central: ("npc.rat.male.chest"),
|
||||
),
|
||||
),
|
||||
})
|
106
assets/voxygen/voxel/theropod_lateral_manifest.ron
Normal file
106
assets/voxygen/voxel/theropod_lateral_manifest.ron
Normal file
@ -0,0 +1,106 @@
|
||||
({
|
||||
(Archaeos, Male): (
|
||||
hand_l: (
|
||||
offset: (-4.0, 2.0, -9.0),
|
||||
lateral: ("npc.archaeos.male.hand_l"),
|
||||
),
|
||||
hand_r: (
|
||||
offset: (0.0, -2.0, -4.0),
|
||||
lateral: ("npc.archaeos.male.hand_r"),
|
||||
),
|
||||
leg_l: (
|
||||
offset: (-6.0, -4.5, -8.0),
|
||||
lateral: ("npc.archaeos.male.leg_l"),
|
||||
),
|
||||
leg_r: (
|
||||
offset: (0.0, -4.5, -8.0),
|
||||
lateral: ("npc.archaeos.male.leg_r"),
|
||||
),
|
||||
foot_l: (
|
||||
offset: (-11.0, -1.0, -8.0),
|
||||
lateral: ("npc.archaeos.male.foot_l"),
|
||||
),
|
||||
foot_r: (
|
||||
offset: (0.0, -1.0, -8.0),
|
||||
lateral: ("npc.archaeos.male.foot_r"),
|
||||
),
|
||||
),
|
||||
(Archaeos, Female): (
|
||||
hand_l: (
|
||||
offset: (-4.0, 2.0, -9.0),
|
||||
lateral: ("npc.archaeos.male.hand_l"),
|
||||
),
|
||||
hand_r: (
|
||||
offset: (0.0, -2.0, -4.0),
|
||||
lateral: ("npc.archaeos.male.hand_r"),
|
||||
),
|
||||
leg_l: (
|
||||
offset: (-6.0, -4.5, -8.0),
|
||||
lateral: ("npc.archaeos.male.leg_l"),
|
||||
),
|
||||
leg_r: (
|
||||
offset: (0.0, -4.5, -8.0),
|
||||
lateral: ("npc.archaeos.male.leg_r"),
|
||||
),
|
||||
foot_l: (
|
||||
offset: (-11.0, -1.0, -8.0),
|
||||
lateral: ("npc.archaeos.male.foot_l"),
|
||||
),
|
||||
foot_r: (
|
||||
offset: (0.0, -1.0, -8.0),
|
||||
lateral: ("npc.archaeos.male.foot_r"),
|
||||
),
|
||||
),
|
||||
(Odontotyrannos, Male): (
|
||||
hand_l: (
|
||||
offset: (-6.0, -3.5, -4.0),
|
||||
lateral: ("npc.ogre.male.shoulder_l"),
|
||||
),
|
||||
hand_r: (
|
||||
offset: (-6.0, -4.5, -4.0),
|
||||
lateral: ("npc.ogre.male.shoulder_r"),
|
||||
),
|
||||
leg_l: (
|
||||
offset: (-6.0, -3.5, -4.0),
|
||||
lateral: ("npc.ogre.male.shoulder_l"),
|
||||
),
|
||||
leg_r: (
|
||||
offset: (-6.0, -4.5, -4.0),
|
||||
lateral: ("npc.ogre.male.shoulder_r"),
|
||||
),
|
||||
foot_l: (
|
||||
offset: (-6.0, -3.5, -4.0),
|
||||
lateral: ("npc.ogre.male.shoulder_l"),
|
||||
),
|
||||
foot_r: (
|
||||
offset: (-6.0, -4.5, -4.0),
|
||||
lateral: ("npc.ogre.male.shoulder_r"),
|
||||
),
|
||||
),
|
||||
(Odontotyrannos, Female): (
|
||||
hand_l: (
|
||||
offset: (-6.0, -3.5, -4.0),
|
||||
lateral: ("npc.ogre.male.shoulder_l"),
|
||||
),
|
||||
hand_r: (
|
||||
offset: (-6.0, -4.5, -4.0),
|
||||
lateral: ("npc.ogre.male.shoulder_r"),
|
||||
),
|
||||
leg_l: (
|
||||
offset: (-6.0, -3.5, -4.0),
|
||||
lateral: ("npc.ogre.male.shoulder_l"),
|
||||
),
|
||||
leg_r: (
|
||||
offset: (-6.0, -4.5, -4.0),
|
||||
lateral: ("npc.ogre.male.shoulder_r"),
|
||||
),
|
||||
foot_l: (
|
||||
offset: (-6.0, -3.5, -4.0),
|
||||
lateral: ("npc.ogre.male.shoulder_l"),
|
||||
),
|
||||
foot_r: (
|
||||
offset: (-6.0, -4.5, -4.0),
|
||||
lateral: ("npc.ogre.male.shoulder_r"),
|
||||
),
|
||||
),
|
||||
})
|
@ -1,5 +1,5 @@
|
||||
use crate::{
|
||||
comp::{critter, humanoid, quadruped_low, quadruped_medium, quadruped_small, Body},
|
||||
comp::{humanoid, quadruped_low, quadruped_medium, quadruped_small, theropod, Body},
|
||||
path::Chaser,
|
||||
sync::Uid,
|
||||
};
|
||||
@ -97,6 +97,7 @@ impl<'a> From<&'a Body> for Psyche {
|
||||
quadruped_small::Species::Rabbit => 0.1,
|
||||
quadruped_small::Species::Truffler => 0.8,
|
||||
quadruped_small::Species::Frog => 0.6,
|
||||
_ => 1.0,
|
||||
},
|
||||
Body::QuadrupedMedium(quadruped_medium) => match quadruped_medium.species {
|
||||
quadruped_medium::Species::Tuskram => 0.8,
|
||||
@ -123,10 +124,7 @@ impl<'a> From<&'a Body> for Psyche {
|
||||
Body::BipedLarge(_) => 1.0,
|
||||
Body::Object(_) => 1.0,
|
||||
Body::Golem(_) => 1.0,
|
||||
Body::Critter(critter) => match critter.species {
|
||||
critter::Species::Axolotl => 1.0,
|
||||
critter::Species::Turtle => 1.0,
|
||||
critter::Species::Fungome => 1.0,
|
||||
Body::Theropod(theropod) => match theropod.species {
|
||||
_ => 0.4,
|
||||
},
|
||||
Body::Dragon(_) => 1.0,
|
||||
|
@ -1,7 +1,6 @@
|
||||
pub mod biped_large;
|
||||
pub mod bird_medium;
|
||||
pub mod bird_small;
|
||||
pub mod critter;
|
||||
pub mod dragon;
|
||||
pub mod fish_medium;
|
||||
pub mod fish_small;
|
||||
@ -11,6 +10,7 @@ pub mod object;
|
||||
pub mod quadruped_low;
|
||||
pub mod quadruped_medium;
|
||||
pub mod quadruped_small;
|
||||
pub mod theropod;
|
||||
|
||||
use crate::{
|
||||
assets::{self, Asset},
|
||||
@ -39,7 +39,7 @@ make_case_elim!(
|
||||
BipedLarge(body: biped_large::Body)= 8,
|
||||
Object(body: object::Body) = 9,
|
||||
Golem(body: golem::Body) = 10,
|
||||
Critter(body: critter::Body) = 11,
|
||||
Theropod(body: theropod::Body) = 11,
|
||||
QuadrupedLow(body: quadruped_low::Body) = 12,
|
||||
}
|
||||
);
|
||||
@ -72,7 +72,7 @@ pub struct AllBodies<BodyMeta, SpeciesMeta> {
|
||||
pub biped_large: BodyData<BodyMeta, biped_large::AllSpecies<SpeciesMeta>>,
|
||||
pub object: BodyData<BodyMeta, ()>,
|
||||
pub golem: BodyData<BodyMeta, golem::AllSpecies<SpeciesMeta>>,
|
||||
pub critter: BodyData<BodyMeta, critter::AllSpecies<SpeciesMeta>>,
|
||||
pub theropod: BodyData<BodyMeta, theropod::AllSpecies<SpeciesMeta>>,
|
||||
pub quadruped_low: BodyData<BodyMeta, quadruped_low::AllSpecies<SpeciesMeta>>,
|
||||
}
|
||||
|
||||
@ -89,7 +89,7 @@ impl<BodyMeta, SpeciesMeta> core::ops::Index<NpcKind> for AllBodies<BodyMeta, Sp
|
||||
NpcKind::Duck => &self.bird_medium.body,
|
||||
NpcKind::Ogre => &self.biped_large.body,
|
||||
NpcKind::StoneGolem => &self.golem.body,
|
||||
NpcKind::Rat => &self.critter.body,
|
||||
NpcKind::Archaeos => &self.theropod.body,
|
||||
NpcKind::Reddragon => &self.dragon.body,
|
||||
NpcKind::Crocodile => &self.quadruped_low.body,
|
||||
}
|
||||
@ -114,7 +114,7 @@ impl<'a, BodyMeta, SpeciesMeta> core::ops::Index<&'a Body> for AllBodies<BodyMet
|
||||
Body::BipedLarge(_) => &self.biped_large.body,
|
||||
Body::Object(_) => &self.object.body,
|
||||
Body::Golem(_) => &self.golem.body,
|
||||
Body::Critter(_) => &self.critter.body,
|
||||
Body::Theropod(_) => &self.theropod.body,
|
||||
Body::QuadrupedLow(_) => &self.quadruped_low.body,
|
||||
}
|
||||
}
|
||||
@ -158,7 +158,7 @@ impl Body {
|
||||
quadruped_low::Species::Pangolin => 1.3,
|
||||
_ => 1.6,
|
||||
},
|
||||
Body::Critter(_) => 0.3,
|
||||
Body::Theropod(_) => 0.3,
|
||||
Body::BirdMedium(_) => 0.35,
|
||||
Body::FishMedium(_) => 0.35,
|
||||
Body::Dragon(_) => 8.0,
|
||||
@ -198,7 +198,7 @@ impl Body {
|
||||
quadruped_low::Species::Maneater => 4.0,
|
||||
_ => 1.3,
|
||||
},
|
||||
Body::Critter(_) => 0.7,
|
||||
Body::Theropod(_) => 0.7,
|
||||
Body::BirdMedium(body) => match body.species {
|
||||
bird_medium::Species::Cockatrice => 1.8,
|
||||
_ => 1.1,
|
||||
@ -264,7 +264,7 @@ impl Body {
|
||||
},
|
||||
Body::Object(_) => 10000,
|
||||
Body::Golem(_) => 1500,
|
||||
Body::Critter(_) => 50,
|
||||
Body::Theropod(_) => 50,
|
||||
Body::QuadrupedLow(quadruped_low) => match quadruped_low.species {
|
||||
quadruped_low::Species::Crocodile => 600,
|
||||
quadruped_low::Species::Alligator => 600,
|
||||
@ -331,7 +331,7 @@ impl Body {
|
||||
},
|
||||
Body::Object(_) => 10,
|
||||
Body::Golem(_) => 150,
|
||||
Body::Critter(_) => 20,
|
||||
Body::Theropod(_) => 20,
|
||||
Body::QuadrupedLow(quadruped_low) => match quadruped_low.species {
|
||||
quadruped_low::Species::Crocodile => 20,
|
||||
quadruped_low::Species::Alligator => 20,
|
||||
@ -396,7 +396,7 @@ impl Body {
|
||||
},
|
||||
Body::Object(_) => 1,
|
||||
Body::Golem(_) => 75,
|
||||
Body::Critter(_) => 2,
|
||||
Body::Theropod(_) => 2,
|
||||
Body::QuadrupedLow(quadruped_low) => match quadruped_low.species {
|
||||
quadruped_low::Species::Crocodile => 10,
|
||||
quadruped_low::Species::Alligator => 10,
|
||||
@ -426,7 +426,7 @@ impl Body {
|
||||
Body::BipedLarge(_) => 2,
|
||||
Body::Object(_) => 0,
|
||||
Body::Golem(_) => 5,
|
||||
Body::Critter(_) => 1,
|
||||
Body::Theropod(_) => 1,
|
||||
Body::QuadrupedLow(_) => 1,
|
||||
}
|
||||
}
|
||||
@ -473,7 +473,7 @@ impl Body {
|
||||
},
|
||||
Body::Object(_) => 0,
|
||||
Body::Golem(_) => 250,
|
||||
Body::Critter(_) => 10,
|
||||
Body::Theropod(_) => 10,
|
||||
Body::QuadrupedLow(quadruped_low) => match quadruped_low.species {
|
||||
quadruped_low::Species::Crocodile => 50,
|
||||
quadruped_low::Species::Alligator => 50,
|
||||
@ -502,7 +502,7 @@ impl Body {
|
||||
Body::BipedLarge(_) => 10.0,
|
||||
Body::Object(_) => 3.0,
|
||||
Body::Golem(_) => 7.5,
|
||||
Body::Critter(_) => 3.0,
|
||||
Body::Theropod(_) => 3.0,
|
||||
Body::QuadrupedLow(_) => 4.5,
|
||||
}
|
||||
}
|
||||
|
@ -29,29 +29,32 @@ impl From<Body> for super::Body {
|
||||
fn from(body: Body) -> Self { super::Body::QuadrupedSmall(body) }
|
||||
}
|
||||
|
||||
make_case_elim!(
|
||||
species,
|
||||
#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)]
|
||||
#[repr(u32)]
|
||||
pub enum Species {
|
||||
Pig = 0,
|
||||
Fox = 1,
|
||||
Sheep = 2,
|
||||
Boar = 3,
|
||||
Jackalope = 4,
|
||||
Skunk = 5,
|
||||
Cat = 6,
|
||||
Batfox = 7,
|
||||
Raccoon = 8,
|
||||
Quokka = 9,
|
||||
Dodarock = 10,
|
||||
Holladon = 11,
|
||||
Hyena = 12,
|
||||
Rabbit = 13,
|
||||
Truffler = 14,
|
||||
Frog = 15,
|
||||
}
|
||||
);
|
||||
#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)]
|
||||
#[repr(u32)]
|
||||
pub enum Species {
|
||||
Pig = 0,
|
||||
Fox = 1,
|
||||
Sheep = 2,
|
||||
Boar = 3,
|
||||
Jackalope = 4,
|
||||
Skunk = 5,
|
||||
Cat = 6,
|
||||
Batfox = 7,
|
||||
Raccoon = 8,
|
||||
Quokka = 9,
|
||||
Dodarock = 10,
|
||||
Holladon = 11,
|
||||
Hyena = 12,
|
||||
Rabbit = 13,
|
||||
Truffler = 14,
|
||||
Frog = 15,
|
||||
Rat = 16,
|
||||
Axolotl = 17,
|
||||
Gecko = 18,
|
||||
Turtle = 19,
|
||||
Squirrel = 20,
|
||||
Fungome = 21,
|
||||
}
|
||||
|
||||
/// Data representing per-species generic data.
|
||||
///
|
||||
@ -74,6 +77,12 @@ pub struct AllSpecies<SpeciesMeta> {
|
||||
pub rabbit: SpeciesMeta,
|
||||
pub truffler: SpeciesMeta,
|
||||
pub frog: SpeciesMeta,
|
||||
pub rat: SpeciesMeta,
|
||||
pub axolotl: SpeciesMeta,
|
||||
pub gecko: SpeciesMeta,
|
||||
pub turtle: SpeciesMeta,
|
||||
pub squirrel: SpeciesMeta,
|
||||
pub fungome: SpeciesMeta,
|
||||
}
|
||||
|
||||
impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies<SpeciesMeta> {
|
||||
@ -98,11 +107,17 @@ impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies<SpeciesMeta>
|
||||
Species::Rabbit => &self.rabbit,
|
||||
Species::Truffler => &self.truffler,
|
||||
Species::Frog => &self.frog,
|
||||
Species::Rat => &self.rat,
|
||||
Species::Axolotl => &self.axolotl,
|
||||
Species::Gecko => &self.gecko,
|
||||
Species::Turtle => &self.turtle,
|
||||
Species::Squirrel => &self.squirrel,
|
||||
Species::Fungome => &self.fungome,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pub const ALL_SPECIES: [Species; 16] = [
|
||||
pub const ALL_SPECIES: [Species; 22] = [
|
||||
Species::Pig,
|
||||
Species::Fox,
|
||||
Species::Sheep,
|
||||
@ -119,6 +134,12 @@ pub const ALL_SPECIES: [Species; 16] = [
|
||||
Species::Rabbit,
|
||||
Species::Truffler,
|
||||
Species::Frog,
|
||||
Species::Rat,
|
||||
Species::Axolotl,
|
||||
Species::Gecko,
|
||||
Species::Turtle,
|
||||
Species::Squirrel,
|
||||
Species::Fungome,
|
||||
];
|
||||
|
||||
impl<'a, SpeciesMeta: 'a> IntoIterator for &'a AllSpecies<SpeciesMeta> {
|
||||
|
@ -22,7 +22,7 @@ impl Body {
|
||||
}
|
||||
|
||||
impl From<Body> for super::Body {
|
||||
fn from(body: Body) -> Self { super::Body::Critter(body) }
|
||||
fn from(body: Body) -> Self { super::Body::Theropod(body) }
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)]
|
||||
@ -30,7 +30,6 @@ impl From<Body> for super::Body {
|
||||
pub enum Species {
|
||||
Archaeos = 0,
|
||||
Odontotyrannos = 1,
|
||||
|
||||
}
|
||||
|
||||
/// Data representing per-species generic data.
|
||||
@ -52,10 +51,7 @@ impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies<SpeciesMeta>
|
||||
}
|
||||
}
|
||||
|
||||
pub const ALL_SPECIES: [Species; 2] = [
|
||||
Species::Archaeos,
|
||||
Species::Odontotyrannos,
|
||||
];
|
||||
pub const ALL_SPECIES: [Species; 2] = [Species::Archaeos, Species::Odontotyrannos];
|
||||
|
||||
impl<'a, SpeciesMeta: 'a> IntoIterator for &'a AllSpecies<SpeciesMeta> {
|
||||
type IntoIter = std::iter::Copied<std::slice::Iter<'static, Self::Item>>;
|
||||
|
@ -25,8 +25,8 @@ pub use ability::{CharacterAbility, CharacterAbilityType, ItemConfig, Loadout};
|
||||
pub use admin::{Admin, AdminList};
|
||||
pub use agent::{Agent, Alignment};
|
||||
pub use body::{
|
||||
biped_large, bird_medium, bird_small, critter, dragon, fish_medium, fish_small, golem,
|
||||
humanoid, object, quadruped_low, quadruped_medium, quadruped_small, AllBodies, Body, BodyData,
|
||||
biped_large, bird_medium, bird_small, dragon, fish_medium, fish_small, golem, humanoid, object,
|
||||
quadruped_low, quadruped_medium, quadruped_small, theropod, AllBodies, Body, BodyData,
|
||||
};
|
||||
pub use character_state::{Attacking, CharacterState, StateUpdate};
|
||||
pub use chat::{
|
||||
|
@ -110,7 +110,7 @@ impl EntityInfo {
|
||||
Some(get_npc_name(&NPC_NAMES.quadruped_medium, body.species))
|
||||
},
|
||||
Body::BirdMedium(body) => Some(get_npc_name(&NPC_NAMES.bird_medium, body.species)),
|
||||
Body::Critter(body) => Some(get_npc_name(&NPC_NAMES.critter, body.species)),
|
||||
Body::Theropod(body) => Some(get_npc_name(&NPC_NAMES.theropod, body.species)),
|
||||
Body::QuadrupedSmall(body) => {
|
||||
Some(get_npc_name(&NPC_NAMES.quadruped_small, body.species))
|
||||
},
|
||||
|
@ -55,7 +55,7 @@ impl LoadoutBuilder {
|
||||
.lantern(Some(Item::new_from_asset_expect(
|
||||
"common.items.armor.starter.lantern",
|
||||
)))
|
||||
.glider(Some(assets::load_expect_cloned(
|
||||
.glider(Some(ItemAsset::load_expect_cloned(
|
||||
"common.items.armor.starter.glider",
|
||||
)))
|
||||
}
|
||||
|
@ -14,7 +14,7 @@ pub enum NpcKind {
|
||||
Pig,
|
||||
Duck,
|
||||
Ogre,
|
||||
Rat,
|
||||
Archaeos,
|
||||
StoneGolem,
|
||||
Reddragon,
|
||||
Crocodile,
|
||||
@ -26,7 +26,7 @@ pub const ALL_NPCS: [NpcKind; 9] = [
|
||||
NpcKind::Pig,
|
||||
NpcKind::Duck,
|
||||
NpcKind::Ogre,
|
||||
NpcKind::Rat,
|
||||
NpcKind::Archaeos,
|
||||
NpcKind::StoneGolem,
|
||||
NpcKind::Reddragon,
|
||||
NpcKind::Crocodile,
|
||||
@ -94,7 +94,7 @@ pub fn kind_to_body(kind: NpcKind) -> Body {
|
||||
NpcKind::Wolf => comp::quadruped_medium::Body::random().into(),
|
||||
NpcKind::Duck => comp::bird_medium::Body::random().into(),
|
||||
NpcKind::Ogre => comp::biped_large::Body::random().into(),
|
||||
NpcKind::Rat => comp::critter::Body::random().into(),
|
||||
NpcKind::Archaeos => comp::theropod::Body::random().into(),
|
||||
NpcKind::StoneGolem => comp::golem::Body::random().into(),
|
||||
NpcKind::Reddragon => comp::dragon::Body::random().into(),
|
||||
NpcKind::Crocodile => comp::quadruped_low::Body::random().into(),
|
||||
@ -206,9 +206,9 @@ impl NpcBody {
|
||||
.or_else(|| {
|
||||
parse(
|
||||
s,
|
||||
NpcKind::Rat,
|
||||
&npc_names.critter,
|
||||
comp::critter::Body::random_with,
|
||||
NpcKind::Archaeos,
|
||||
&npc_names.theropod,
|
||||
comp::theropod::Body::random_with,
|
||||
)
|
||||
})
|
||||
.or_else(|| {
|
||||
|
@ -41,7 +41,7 @@ impl Body {
|
||||
Body::BipedLarge(_) => 75.0,
|
||||
Body::Object(_) => 40.0,
|
||||
Body::Golem(_) => 60.0,
|
||||
Body::Critter(_) => 85.0,
|
||||
Body::Theropod(_) => 85.0,
|
||||
Body::QuadrupedLow(_) => 120.0,
|
||||
}
|
||||
}
|
||||
@ -59,7 +59,7 @@ impl Body {
|
||||
Body::BipedLarge(_) => 12.0,
|
||||
Body::Object(_) => 5.0,
|
||||
Body::Golem(_) => 8.0,
|
||||
Body::Critter(_) => 35.0,
|
||||
Body::Theropod(_) => 35.0,
|
||||
Body::QuadrupedLow(_) => 12.0,
|
||||
}
|
||||
}
|
||||
|
@ -317,9 +317,7 @@ pub fn handle_destroy(server: &mut Server, entity: EcsEntity, cause: HealthSourc
|
||||
7 => "common.loot_tables.loot_table_weapon_rare",
|
||||
_ => "common.loot_tables.loot_table",
|
||||
},
|
||||
Some(common::comp::Body::Critter(_)) => {
|
||||
"common.loot_tables.loot_table_animal_parts"
|
||||
},
|
||||
Some(common::comp::Body::Theropod(_)) => "common.loot_tables.loot_table_animal_parts",
|
||||
Some(common::comp::Body::Dragon(_)) => "common.loot_tables.loot_table_weapon_rare",
|
||||
Some(common::comp::Body::QuadrupedLow(_)) => match rng.gen_range(0, 3) {
|
||||
0 => "common.loot_tables.loot_table_food",
|
||||
|
@ -1,68 +0,0 @@
|
||||
use super::{super::Animation, CritterAttr, CritterSkeleton};
|
||||
//use std::{f32::consts::PI, ops::Mul};
|
||||
use super::super::vek::*;
|
||||
use std::{f32::consts::PI, ops::Mul};
|
||||
|
||||
pub struct IdleAnimation;
|
||||
|
||||
impl Animation for IdleAnimation {
|
||||
type Dependency = f64;
|
||||
type Skeleton = CritterSkeleton;
|
||||
|
||||
#[cfg(feature = "use-dyn-lib")]
|
||||
const UPDATE_FN: &'static [u8] = b"critter_idle\0";
|
||||
|
||||
#[cfg_attr(feature = "be-dyn-lib", export_name = "critter_idle")]
|
||||
fn update_skeleton_inner(
|
||||
skeleton: &Self::Skeleton,
|
||||
global_time: Self::Dependency,
|
||||
anim_time: f64,
|
||||
_rate: &mut f32,
|
||||
skeleton_attr: &CritterAttr,
|
||||
) -> Self::Skeleton {
|
||||
let mut next = (*skeleton).clone();
|
||||
|
||||
let wave = (anim_time as f32 * 10.0).sin();
|
||||
let wave_slow = (anim_time as f32 * 5.5 + PI).sin();
|
||||
|
||||
let rat_head_look = Vec2::new(
|
||||
((global_time + anim_time) as f32 / 3.0)
|
||||
.floor()
|
||||
.mul(7331.0)
|
||||
.sin()
|
||||
* 0.5,
|
||||
((global_time + anim_time) as f32 / 3.0)
|
||||
.floor()
|
||||
.mul(1337.0)
|
||||
.sin()
|
||||
* 0.25,
|
||||
);
|
||||
next.head.position = Vec3::new(0.0, skeleton_attr.head.0, skeleton_attr.head.1);
|
||||
next.head.orientation = Quaternion::rotation_z(rat_head_look.x)
|
||||
* Quaternion::rotation_x(rat_head_look.y + wave * 0.03);
|
||||
next.head.scale = Vec3::one();
|
||||
|
||||
next.chest.position = Vec3::new(
|
||||
0.0,
|
||||
skeleton_attr.chest.0,
|
||||
skeleton_attr.chest.1 + wave * 0.3,
|
||||
) / 18.0;
|
||||
next.chest.orientation = Quaternion::rotation_y(wave_slow * 0.06);
|
||||
next.chest.scale = Vec3::one() / 18.0;
|
||||
|
||||
next.feet_f.position = Vec3::new(0.0, skeleton_attr.feet_f.0, skeleton_attr.feet_f.1);
|
||||
next.feet_f.orientation = Quaternion::rotation_z(0.0);
|
||||
next.feet_f.scale = Vec3::one();
|
||||
|
||||
next.feet_b.position = Vec3::new(0.0, skeleton_attr.feet_b.0, skeleton_attr.feet_b.1);
|
||||
next.feet_b.orientation = Quaternion::rotation_x(0.0);
|
||||
next.feet_b.scale = Vec3::one();
|
||||
|
||||
next.tail.position =
|
||||
Vec3::new(0.0, skeleton_attr.tail.0 + wave * 0.2, skeleton_attr.tail.1);
|
||||
next.tail.orientation = Quaternion::rotation_y(wave_slow * 0.05);
|
||||
next.tail.scale = Vec3::one();
|
||||
|
||||
next
|
||||
}
|
||||
}
|
@ -1,48 +0,0 @@
|
||||
use super::{super::Animation, CritterAttr, CritterSkeleton};
|
||||
//use std::f32::consts::PI;
|
||||
use super::super::vek::*;
|
||||
|
||||
pub struct JumpAnimation;
|
||||
|
||||
impl Animation for JumpAnimation {
|
||||
type Dependency = (f32, f64);
|
||||
type Skeleton = CritterSkeleton;
|
||||
|
||||
#[cfg(feature = "use-dyn-lib")]
|
||||
const UPDATE_FN: &'static [u8] = b"critter_jump\0";
|
||||
|
||||
#[cfg_attr(feature = "be-dyn-lib", export_name = "critter_jump")]
|
||||
fn update_skeleton_inner(
|
||||
skeleton: &Self::Skeleton,
|
||||
_global_time: Self::Dependency,
|
||||
_anim_time: f64,
|
||||
_rate: &mut f32,
|
||||
skeleton_attr: &CritterAttr,
|
||||
) -> Self::Skeleton {
|
||||
let mut next = (*skeleton).clone();
|
||||
|
||||
let wave = (_anim_time as f32 * 1.0).sin();
|
||||
|
||||
next.head.position = Vec3::new(0.0, skeleton_attr.head.0, skeleton_attr.head.1);
|
||||
next.head.orientation = Quaternion::rotation_z(0.8) * Quaternion::rotation_x(0.5);
|
||||
next.head.scale = Vec3::one();
|
||||
|
||||
next.chest.position = Vec3::new(0.0, skeleton_attr.chest.0, skeleton_attr.chest.1) / 18.0;
|
||||
next.chest.orientation = Quaternion::rotation_y(0.0);
|
||||
next.chest.scale = Vec3::one() / 18.0;
|
||||
|
||||
next.feet_f.position = Vec3::new(0.0, skeleton_attr.feet_f.0, skeleton_attr.feet_f.1);
|
||||
next.feet_f.orientation = Quaternion::rotation_x(wave * 0.4);
|
||||
next.feet_f.scale = Vec3::one();
|
||||
|
||||
next.feet_b.position = Vec3::new(0.0, skeleton_attr.feet_b.0, skeleton_attr.feet_b.1);
|
||||
next.feet_b.orientation = Quaternion::rotation_x(wave * 0.4);
|
||||
next.feet_b.scale = Vec3::one();
|
||||
|
||||
next.tail.position = Vec3::new(0.0, skeleton_attr.tail.0, skeleton_attr.tail.1);
|
||||
next.tail.orientation = Quaternion::rotation_y(0.0);
|
||||
next.tail.scale = Vec3::one();
|
||||
|
||||
next
|
||||
}
|
||||
}
|
@ -1,136 +0,0 @@
|
||||
pub mod idle;
|
||||
pub mod jump;
|
||||
pub mod run;
|
||||
|
||||
// Reexports
|
||||
pub use self::{idle::IdleAnimation, jump::JumpAnimation, run::RunAnimation};
|
||||
|
||||
use super::{make_bone, vek::*, FigureBoneData, Skeleton};
|
||||
use common::comp::{self};
|
||||
use core::convert::TryFrom;
|
||||
|
||||
pub type Body = comp::critter::Body;
|
||||
|
||||
skeleton_impls!(struct CritterSkeleton {
|
||||
+ head,
|
||||
+ chest,
|
||||
+ feet_f,
|
||||
+ feet_b,
|
||||
+ tail,
|
||||
});
|
||||
|
||||
pub struct CritterAttr {
|
||||
head: (f32, f32),
|
||||
chest: (f32, f32),
|
||||
feet_f: (f32, f32),
|
||||
feet_b: (f32, f32),
|
||||
tail: (f32, f32),
|
||||
}
|
||||
|
||||
impl Skeleton for CritterSkeleton {
|
||||
type Attr = CritterAttr;
|
||||
type Body = Body;
|
||||
|
||||
const BONE_COUNT: usize = 5;
|
||||
#[cfg(feature = "use-dyn-lib")]
|
||||
const COMPUTE_FN: &'static [u8] = b"critter_compute_mats\0";
|
||||
|
||||
#[cfg_attr(feature = "be-dyn-lib", export_name = "critter_compute_mats")]
|
||||
|
||||
fn compute_matrices_inner(
|
||||
&self,
|
||||
base_mat: Mat4<f32>,
|
||||
buf: &mut [FigureBoneData; super::MAX_BONE_COUNT],
|
||||
) -> Vec3<f32> {
|
||||
let chest_mat = base_mat * Mat4::<f32>::from(self.chest);
|
||||
|
||||
*(<&mut [_; Self::BONE_COUNT]>::try_from(&mut buf[0..Self::BONE_COUNT]).unwrap()) = [
|
||||
make_bone(chest_mat * Mat4::<f32>::from(self.head)),
|
||||
make_bone(chest_mat),
|
||||
make_bone(chest_mat * Mat4::<f32>::from(self.feet_f)),
|
||||
make_bone(chest_mat * Mat4::<f32>::from(self.feet_b)),
|
||||
make_bone(chest_mat * Mat4::<f32>::from(self.tail)),
|
||||
];
|
||||
Vec3::default()
|
||||
}
|
||||
}
|
||||
|
||||
impl<'a> std::convert::TryFrom<&'a comp::Body> for CritterAttr {
|
||||
type Error = ();
|
||||
|
||||
fn try_from(body: &'a comp::Body) -> Result<Self, Self::Error> {
|
||||
match body {
|
||||
comp::Body::Critter(body) => Ok(CritterAttr::from(body)),
|
||||
_ => Err(()),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl CritterAttr {
|
||||
#[allow(clippy::match_single_binding)] // TODO: Pending review in #587
|
||||
pub fn calculate_scale(body: &comp::critter::Body) -> f32 {
|
||||
match (body.species, body.body_type) {
|
||||
(_, _) => 0.0,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl Default for CritterAttr {
|
||||
fn default() -> Self {
|
||||
Self {
|
||||
head: (0.0, 0.0),
|
||||
chest: (0.0, 0.0),
|
||||
feet_f: (0.0, 0.0),
|
||||
feet_b: (0.0, 0.0),
|
||||
tail: (0.0, 0.0),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl<'a> From<&'a Body> for CritterAttr {
|
||||
fn from(body: &'a Body) -> Self {
|
||||
use comp::critter::Species::*;
|
||||
Self {
|
||||
head: match (body.species, body.body_type) {
|
||||
(Rat, _) => (6.5, 3.0),
|
||||
(Axolotl, _) => (5.0, 1.0),
|
||||
(Gecko, _) => (5.0, 0.0),
|
||||
(Turtle, _) => (8.0, 3.0),
|
||||
(Squirrel, _) => (5.0, 0.0),
|
||||
(Fungome, _) => (4.0, 0.0),
|
||||
},
|
||||
chest: match (body.species, body.body_type) {
|
||||
(Rat, _) => (0.0, 6.0),
|
||||
(Axolotl, _) => (-1.0, 3.0),
|
||||
(Gecko, _) => (-2.0, 3.0),
|
||||
(Turtle, _) => (0.0, 6.0),
|
||||
(Squirrel, _) => (0.0, 3.0),
|
||||
(Fungome, _) => (0.0, 5.0),
|
||||
},
|
||||
feet_f: match (body.species, body.body_type) {
|
||||
(Rat, _) => (2.0, -5.0),
|
||||
(Axolotl, _) => (2.0, -5.0),
|
||||
(Gecko, _) => (1.0, -2.0),
|
||||
(Turtle, _) => (3.0, -5.0),
|
||||
(Squirrel, _) => (1.0, -2.0),
|
||||
(Fungome, _) => (1.0, -4.0),
|
||||
},
|
||||
feet_b: match (body.species, body.body_type) {
|
||||
(Rat, _) => (-2.0, -5.0),
|
||||
(Axolotl, _) => (-2.0, -5.0),
|
||||
(Gecko, _) => (-2.0, -2.0),
|
||||
(Turtle, _) => (-2.0, -5.0),
|
||||
(Squirrel, _) => (-1.0, -2.0),
|
||||
(Fungome, _) => (-2.0, -4.0),
|
||||
},
|
||||
tail: match (body.species, body.body_type) {
|
||||
(Rat, _) => (-8.0, -1.0),
|
||||
(Axolotl, _) => (-7.0, -1.0),
|
||||
(Gecko, _) => (-6.5, -2.0),
|
||||
(Turtle, _) => (-6.0, 0.0),
|
||||
(Squirrel, _) => (-3.0, 0.0),
|
||||
(Fungome, _) => (-6.0, -1.0),
|
||||
},
|
||||
}
|
||||
}
|
||||
}
|
@ -1,59 +0,0 @@
|
||||
use super::{super::Animation, CritterAttr, CritterSkeleton};
|
||||
//use std::{f32::consts::PI, ops::Mul};
|
||||
use super::super::vek::*;
|
||||
use std::f32::consts::PI;
|
||||
|
||||
pub struct RunAnimation;
|
||||
|
||||
impl Animation for RunAnimation {
|
||||
type Dependency = (f32, f64);
|
||||
type Skeleton = CritterSkeleton;
|
||||
|
||||
#[cfg(feature = "use-dyn-lib")]
|
||||
const UPDATE_FN: &'static [u8] = b"critter_run\0";
|
||||
|
||||
#[cfg_attr(feature = "be-dyn-lib", export_name = "critter_run")]
|
||||
fn update_skeleton_inner(
|
||||
skeleton: &Self::Skeleton,
|
||||
(_velocity, _global_time): Self::Dependency,
|
||||
anim_time: f64,
|
||||
_rate: &mut f32,
|
||||
skeleton_attr: &CritterAttr,
|
||||
) -> Self::Skeleton {
|
||||
let mut next = (*skeleton).clone();
|
||||
|
||||
let wave = (anim_time as f32 * 8.0).sin();
|
||||
let wavealt = (anim_time as f32 * 8.0 + PI / 2.0).sin();
|
||||
let wave_slow = (anim_time as f32 * 6.5 + PI).sin();
|
||||
|
||||
next.head.position = Vec3::new(0.0, skeleton_attr.head.0, skeleton_attr.head.1);
|
||||
next.head.orientation =
|
||||
Quaternion::rotation_z(0.0) * Quaternion::rotation_x(0.0 + wave * 0.03);
|
||||
next.head.scale = Vec3::one();
|
||||
|
||||
next.chest.position = Vec3::new(
|
||||
0.0,
|
||||
skeleton_attr.chest.0 + wave * 1.0,
|
||||
skeleton_attr.chest.1,
|
||||
) / 18.0;
|
||||
next.chest.orientation = Quaternion::rotation_x(wave * 0.1);
|
||||
next.chest.scale = Vec3::one() / 18.0;
|
||||
|
||||
next.feet_f.position = Vec3::new(0.0, skeleton_attr.feet_f.0, skeleton_attr.feet_f.1);
|
||||
next.feet_f.orientation =
|
||||
Quaternion::rotation_x(wave * 0.8) * Quaternion::rotation_z(wavealt / 6.0);
|
||||
next.feet_f.scale = Vec3::one();
|
||||
|
||||
next.feet_b.position = Vec3::new(0.0, skeleton_attr.feet_b.0, skeleton_attr.feet_b.1);
|
||||
next.feet_b.orientation =
|
||||
Quaternion::rotation_x(wavealt * 0.8) * Quaternion::rotation_z(wavealt / 6.0);
|
||||
next.feet_b.scale = Vec3::one();
|
||||
|
||||
next.tail.position =
|
||||
Vec3::new(0.0, skeleton_attr.tail.0 + wave * 1.0, skeleton_attr.tail.1);
|
||||
next.tail.orientation = Quaternion::rotation_y(wave_slow * 0.08);
|
||||
next.tail.scale = Vec3::one();
|
||||
|
||||
next
|
||||
}
|
||||
}
|
@ -43,7 +43,6 @@ pub mod biped_large;
|
||||
pub mod bird_medium;
|
||||
pub mod bird_small;
|
||||
pub mod character;
|
||||
pub mod critter;
|
||||
pub mod dragon;
|
||||
#[cfg(feature = "use-dyn-lib")] pub mod dyn_lib;
|
||||
pub mod fish_medium;
|
||||
@ -54,6 +53,7 @@ pub mod object;
|
||||
pub mod quadruped_low;
|
||||
pub mod quadruped_medium;
|
||||
pub mod quadruped_small;
|
||||
pub mod theropod;
|
||||
pub mod vek;
|
||||
|
||||
#[cfg(feature = "use-dyn-lib")]
|
||||
|
@ -114,6 +114,12 @@ impl<'a> From<&'a Body> for SkeletonAttr {
|
||||
(Rabbit, _) => (4.0, 3.0),
|
||||
(Truffler, _) => (7.5, -9.0),
|
||||
(Frog, _) => (4.0, 2.0),
|
||||
(Rat, _) => (6.0, -2.0),
|
||||
(Axolotl, _) => (7.0, 1.0),
|
||||
(Gecko, _) => (7.5, 2.0),
|
||||
(Turtle, _) => (4.0, 3.0),
|
||||
(Squirrel, _) => (7.5, -9.0),
|
||||
(Fungome, _) => (4.0, 2.0),
|
||||
},
|
||||
chest: match (body.species, body.body_type) {
|
||||
(Pig, _) => (0.0, 6.0),
|
||||
@ -132,6 +138,12 @@ impl<'a> From<&'a Body> for SkeletonAttr {
|
||||
(Rabbit, _) => (-2.0, 6.0),
|
||||
(Truffler, _) => (-2.0, 16.0),
|
||||
(Frog, _) => (-2.0, 4.5),
|
||||
(Rat, _) => (6.0, -2.0),
|
||||
(Axolotl, _) => (7.0, 1.0),
|
||||
(Gecko, _) => (7.5, 2.0),
|
||||
(Turtle, _) => (4.0, 3.0),
|
||||
(Squirrel, _) => (7.5, -9.0),
|
||||
(Fungome, _) => (4.0, 2.0),
|
||||
},
|
||||
feet_f: match (body.species, body.body_type) {
|
||||
(Pig, _) => (4.5, 3.5, -1.0),
|
||||
@ -150,6 +162,12 @@ impl<'a> From<&'a Body> for SkeletonAttr {
|
||||
(Rabbit, _) => (3.0, 3.0, -3.0),
|
||||
(Truffler, _) => (2.5, 5.0, -9.0),
|
||||
(Frog, _) => (4.5, 6.5, 0.0),
|
||||
(Rat, _) => (6.0, -2.0, 0.0),
|
||||
(Axolotl, _) => (7.0, 1.0, 0.0),
|
||||
(Gecko, _) => (7.5, 2.0, 0.0),
|
||||
(Turtle, _) => (4.0, 3.0, 0.0),
|
||||
(Squirrel, _) => (7.5, -9.0, 0.0),
|
||||
(Fungome, _) => (4.0, 2.0, 0.0),
|
||||
},
|
||||
feet_b: match (body.species, body.body_type) {
|
||||
(Pig, _) => (3.5, -2.0, 0.0),
|
||||
@ -168,6 +186,12 @@ impl<'a> From<&'a Body> for SkeletonAttr {
|
||||
(Rabbit, _) => (3.5, -2.0, -1.0),
|
||||
(Truffler, _) => (3.0, -5.0, -9.5),
|
||||
(Frog, _) => (5.0, -3.5, 0.0),
|
||||
(Rat, _) => (6.0, -2.0, 0.0),
|
||||
(Axolotl, _) => (7.0, 1.0, 0.0),
|
||||
(Gecko, _) => (7.5, 2.0, 0.0),
|
||||
(Turtle, _) => (4.0, 3.0, 0.0),
|
||||
(Squirrel, _) => (7.5, -9.0, 0.0),
|
||||
(Fungome, _) => (4.0, 2.0, 0.0),
|
||||
},
|
||||
tail: match (body.species, body.body_type) {
|
||||
(Pig, _) => (-4.5, 2.5),
|
||||
@ -186,6 +210,12 @@ impl<'a> From<&'a Body> for SkeletonAttr {
|
||||
(Rabbit, _) => (-4.0, -0.0),
|
||||
(Truffler, _) => (0.0, 0.0),
|
||||
(Frog, _) => (0.0, -0.0),
|
||||
(Rat, _) => (6.0, -2.0),
|
||||
(Axolotl, _) => (7.0, 1.0),
|
||||
(Gecko, _) => (7.5, 2.0),
|
||||
(Turtle, _) => (4.0, 3.0),
|
||||
(Squirrel, _) => (7.5, -9.0),
|
||||
(Fungome, _) => (4.0, 2.0),
|
||||
},
|
||||
scaler: match (body.species, body.body_type) {
|
||||
(Pig, _) => (0.9),
|
||||
@ -204,6 +234,12 @@ impl<'a> From<&'a Body> for SkeletonAttr {
|
||||
(Rabbit, _) => (0.7),
|
||||
(Truffler, _) => (1.0),
|
||||
(Frog, _) => (0.7),
|
||||
(Rat, _) => (6.0),
|
||||
(Axolotl, _) => (7.0),
|
||||
(Gecko, _) => (7.5),
|
||||
(Turtle, _) => (4.0),
|
||||
(Squirrel, _) => (7.5),
|
||||
(Fungome, _) => (4.0),
|
||||
},
|
||||
tempo: match (body.species, body.body_type) {
|
||||
(Pig, _) => (1.0),
|
||||
@ -222,6 +258,12 @@ impl<'a> From<&'a Body> for SkeletonAttr {
|
||||
(Rabbit, _) => (1.15),
|
||||
(Truffler, _) => (1.0),
|
||||
(Frog, _) => (1.15),
|
||||
(Rat, _) => (6.0),
|
||||
(Axolotl, _) => (7.0),
|
||||
(Gecko, _) => (7.5),
|
||||
(Turtle, _) => (4.0),
|
||||
(Squirrel, _) => (7.5),
|
||||
(Fungome, _) => (4.0),
|
||||
},
|
||||
maximize: match (body.species, body.body_type) {
|
||||
(Pig, _) => (1.0),
|
||||
@ -240,6 +282,12 @@ impl<'a> From<&'a Body> for SkeletonAttr {
|
||||
(Rabbit, _) => (1.3),
|
||||
(Truffler, _) => (1.0),
|
||||
(Frog, _) => (1.3),
|
||||
(Rat, _) => (0.1),
|
||||
(Axolotl, _) => (0.1),
|
||||
(Gecko, _) => (0.1),
|
||||
(Turtle, _) => (0.1),
|
||||
(Squirrel, _) => (0.1),
|
||||
(Fungome, _) => (0.1),
|
||||
},
|
||||
minimize: match (body.species, body.body_type) {
|
||||
(Pig, _) => (0.6),
|
||||
@ -258,6 +306,12 @@ impl<'a> From<&'a Body> for SkeletonAttr {
|
||||
(Rabbit, _) => (0.8),
|
||||
(Truffler, _) => (1.0),
|
||||
(Frog, _) => (0.8),
|
||||
(Rat, _) => (0.1),
|
||||
(Axolotl, _) => (0.1),
|
||||
(Gecko, _) => (0.1),
|
||||
(Turtle, _) => (0.1),
|
||||
(Squirrel, _) => (0.1),
|
||||
(Fungome, _) => (0.1),
|
||||
},
|
||||
spring: match (body.species, body.body_type) {
|
||||
(Pig, _) => (1.0),
|
||||
@ -276,6 +330,12 @@ impl<'a> From<&'a Body> for SkeletonAttr {
|
||||
(Rabbit, _) => (2.5),
|
||||
(Truffler, _) => (0.8),
|
||||
(Frog, _) => (2.5),
|
||||
(Rat, _) => (0.1),
|
||||
(Axolotl, _) => (0.1),
|
||||
(Gecko, _) => (0.1),
|
||||
(Turtle, _) => (0.1),
|
||||
(Squirrel, _) => (0.1),
|
||||
(Fungome, _) => (0.1),
|
||||
},
|
||||
feed: match (body.species, body.body_type) {
|
||||
(Pig, _) => (1.0),
|
||||
@ -294,6 +354,12 @@ impl<'a> From<&'a Body> for SkeletonAttr {
|
||||
(Rabbit, _) => (1.2),
|
||||
(Truffler, _) => (0.6),
|
||||
(Frog, _) => (0.7),
|
||||
(Rat, _) => (0.1),
|
||||
(Axolotl, _) => (0.1),
|
||||
(Gecko, _) => (0.1),
|
||||
(Turtle, _) => (0.1),
|
||||
(Squirrel, _) => (0.1),
|
||||
(Fungome, _) => (0.1),
|
||||
},
|
||||
}
|
||||
}
|
||||
|
109
voxygen/src/anim/src/theropod/idle.rs
Normal file
109
voxygen/src/anim/src/theropod/idle.rs
Normal file
@ -0,0 +1,109 @@
|
||||
use super::{super::Animation, SkeletonAttr, TheropodSkeleton};
|
||||
//use std::{f32::consts::PI, ops::Mul};
|
||||
use super::super::vek::*;
|
||||
use std::{f32::consts::PI, ops::Mul};
|
||||
|
||||
pub struct IdleAnimation;
|
||||
|
||||
impl Animation for IdleAnimation {
|
||||
type Dependency = f64;
|
||||
type Skeleton = TheropodSkeleton;
|
||||
|
||||
#[cfg(feature = "use-dyn-lib")]
|
||||
const UPDATE_FN: &'static [u8] = b"theropod_idle\0";
|
||||
|
||||
#[cfg_attr(feature = "be-dyn-lib", export_name = "theropod_idle")]
|
||||
fn update_skeleton_inner(
|
||||
skeleton: &Self::Skeleton,
|
||||
global_time: Self::Dependency,
|
||||
anim_time: f64,
|
||||
_rate: &mut f32,
|
||||
skeleton_attr: &SkeletonAttr,
|
||||
) -> Self::Skeleton {
|
||||
let mut next = (*skeleton).clone();
|
||||
|
||||
next.head.position = Vec3::new(0.0, skeleton_attr.head.0, skeleton_attr.head.1);
|
||||
next.head.orientation = Quaternion::rotation_z(0.0);
|
||||
next.head.scale = Vec3::one();
|
||||
|
||||
next.jaw.position = Vec3::new(0.0, skeleton_attr.jaw.0, skeleton_attr.jaw.1);
|
||||
next.jaw.orientation = Quaternion::rotation_z(0.0);
|
||||
next.jaw.scale = Vec3::one();
|
||||
|
||||
next.neck.position = Vec3::new(0.0, skeleton_attr.neck.0, skeleton_attr.neck.1);
|
||||
next.neck.orientation = Quaternion::rotation_z(0.0);
|
||||
next.neck.scale = Vec3::one();
|
||||
|
||||
next.chest_front.position = Vec3::new(
|
||||
0.0,
|
||||
skeleton_attr.chest_front.0,
|
||||
skeleton_attr.chest_front.1,
|
||||
);
|
||||
next.chest_front.orientation = Quaternion::rotation_z(0.0);
|
||||
next.chest_front.scale = Vec3::one();
|
||||
|
||||
next.chest_back.position =
|
||||
Vec3::new(0.0, skeleton_attr.chest_back.0, skeleton_attr.chest_back.1);
|
||||
next.chest_back.orientation = Quaternion::rotation_z(0.0);
|
||||
next.chest_back.scale = Vec3::one();
|
||||
|
||||
next.tail_front.position =
|
||||
Vec3::new(0.0, skeleton_attr.tail_front.0, skeleton_attr.tail_front.1);
|
||||
next.tail_front.orientation = Quaternion::rotation_z(0.0);
|
||||
next.tail_front.scale = Vec3::one();
|
||||
|
||||
next.tail_back.position =
|
||||
Vec3::new(0.0, skeleton_attr.tail_back.0, skeleton_attr.tail_back.1);
|
||||
next.tail_back.orientation = Quaternion::rotation_z(0.0);
|
||||
next.tail_back.scale = Vec3::one();
|
||||
|
||||
next.hand_l.position = Vec3::new(
|
||||
skeleton_attr.hand_l.0,
|
||||
skeleton_attr.hand_l.0,
|
||||
skeleton_attr.hand_l.1,
|
||||
);
|
||||
next.hand_l.orientation = Quaternion::rotation_z(0.0);
|
||||
next.hand_l.scale = Vec3::one();
|
||||
|
||||
next.hand_r.position = Vec3::new(
|
||||
skeleton_attr.hand_r.0,
|
||||
skeleton_attr.hand_r.0,
|
||||
skeleton_attr.hand_r.1,
|
||||
);
|
||||
next.hand_r.orientation = Quaternion::rotation_z(0.0);
|
||||
next.hand_l.scale = Vec3::one();
|
||||
|
||||
next.leg_l.position = Vec3::new(
|
||||
skeleton_attr.leg_l.0,
|
||||
skeleton_attr.leg_l.0,
|
||||
skeleton_attr.leg_l.1,
|
||||
);
|
||||
next.leg_l.orientation = Quaternion::rotation_z(0.0);
|
||||
next.leg_l.scale = Vec3::one();
|
||||
|
||||
next.leg_r.position = Vec3::new(
|
||||
skeleton_attr.leg_r.0,
|
||||
skeleton_attr.leg_r.0,
|
||||
skeleton_attr.leg_r.1,
|
||||
);
|
||||
next.leg_r.orientation = Quaternion::rotation_z(0.0);
|
||||
next.leg_r.scale = Vec3::one();
|
||||
|
||||
next.foot_l.position = Vec3::new(
|
||||
skeleton_attr.foot_l.0,
|
||||
skeleton_attr.foot_l.0,
|
||||
skeleton_attr.foot_l.1,
|
||||
);
|
||||
next.foot_l.orientation = Quaternion::rotation_z(0.0);
|
||||
next.foot_l.scale = Vec3::one();
|
||||
|
||||
next.foot_r.position = Vec3::new(
|
||||
skeleton_attr.foot_r.0,
|
||||
skeleton_attr.foot_r.0,
|
||||
skeleton_attr.foot_r.1,
|
||||
);
|
||||
next.foot_r.orientation = Quaternion::rotation_z(0.0);
|
||||
next.foot_r.scale = Vec3::one();
|
||||
next
|
||||
}
|
||||
}
|
111
voxygen/src/anim/src/theropod/jump.rs
Normal file
111
voxygen/src/anim/src/theropod/jump.rs
Normal file
@ -0,0 +1,111 @@
|
||||
use super::{super::Animation, SkeletonAttr, TheropodSkeleton};
|
||||
//use std::f32::consts::PI;
|
||||
use super::super::vek::*;
|
||||
|
||||
pub struct JumpAnimation;
|
||||
|
||||
impl Animation for JumpAnimation {
|
||||
type Dependency = (f32, f64);
|
||||
type Skeleton = TheropodSkeleton;
|
||||
|
||||
#[cfg(feature = "use-dyn-lib")]
|
||||
const UPDATE_FN: &'static [u8] = b"theropod_jump\0";
|
||||
|
||||
#[cfg_attr(feature = "be-dyn-lib", export_name = "theropod_jump")]
|
||||
fn update_skeleton_inner(
|
||||
skeleton: &Self::Skeleton,
|
||||
_global_time: Self::Dependency,
|
||||
_anim_time: f64,
|
||||
_rate: &mut f32,
|
||||
skeleton_attr: &SkeletonAttr,
|
||||
) -> Self::Skeleton {
|
||||
let mut next = (*skeleton).clone();
|
||||
|
||||
let wave = (_anim_time as f32 * 1.0).sin();
|
||||
|
||||
next.head.position = Vec3::new(0.0, skeleton_attr.head.0, skeleton_attr.head.1);
|
||||
next.head.orientation = Quaternion::rotation_z(0.0);
|
||||
next.head.scale = Vec3::one();
|
||||
|
||||
next.jaw.position = Vec3::new(0.0, skeleton_attr.jaw.0, skeleton_attr.jaw.1);
|
||||
next.jaw.orientation = Quaternion::rotation_z(0.0);
|
||||
next.jaw.scale = Vec3::one();
|
||||
|
||||
next.neck.position = Vec3::new(0.0, skeleton_attr.neck.0, skeleton_attr.neck.1);
|
||||
next.neck.orientation = Quaternion::rotation_z(0.0);
|
||||
next.neck.scale = Vec3::one();
|
||||
|
||||
next.chest_front.position = Vec3::new(
|
||||
0.0,
|
||||
skeleton_attr.chest_front.0,
|
||||
skeleton_attr.chest_front.1,
|
||||
);
|
||||
next.chest_front.orientation = Quaternion::rotation_z(0.0);
|
||||
next.chest_front.scale = Vec3::one();
|
||||
|
||||
next.chest_back.position =
|
||||
Vec3::new(0.0, skeleton_attr.chest_back.0, skeleton_attr.chest_back.1);
|
||||
next.chest_back.orientation = Quaternion::rotation_z(0.0);
|
||||
next.chest_back.scale = Vec3::one();
|
||||
|
||||
next.tail_front.position =
|
||||
Vec3::new(0.0, skeleton_attr.tail_front.0, skeleton_attr.tail_front.1);
|
||||
next.tail_front.orientation = Quaternion::rotation_z(0.0);
|
||||
next.tail_front.scale = Vec3::one();
|
||||
|
||||
next.tail_back.position =
|
||||
Vec3::new(0.0, skeleton_attr.tail_back.0, skeleton_attr.tail_back.1);
|
||||
next.tail_back.orientation = Quaternion::rotation_z(0.0);
|
||||
next.tail_back.scale = Vec3::one();
|
||||
|
||||
next.hand_l.position = Vec3::new(
|
||||
skeleton_attr.hand_l.0,
|
||||
skeleton_attr.hand_l.0,
|
||||
skeleton_attr.hand_l.1,
|
||||
);
|
||||
next.hand_l.orientation = Quaternion::rotation_z(0.0);
|
||||
next.hand_l.scale = Vec3::one();
|
||||
|
||||
next.hand_r.position = Vec3::new(
|
||||
skeleton_attr.hand_r.0,
|
||||
skeleton_attr.hand_r.0,
|
||||
skeleton_attr.hand_r.1,
|
||||
);
|
||||
next.hand_r.orientation = Quaternion::rotation_z(0.0);
|
||||
next.hand_l.scale = Vec3::one();
|
||||
|
||||
next.leg_l.position = Vec3::new(
|
||||
skeleton_attr.leg_l.0,
|
||||
skeleton_attr.leg_l.0,
|
||||
skeleton_attr.leg_l.1,
|
||||
);
|
||||
next.leg_l.orientation = Quaternion::rotation_z(0.0);
|
||||
next.leg_l.scale = Vec3::one();
|
||||
|
||||
next.leg_r.position = Vec3::new(
|
||||
skeleton_attr.leg_r.0,
|
||||
skeleton_attr.leg_r.0,
|
||||
skeleton_attr.leg_r.1,
|
||||
);
|
||||
next.leg_r.orientation = Quaternion::rotation_z(0.0);
|
||||
next.leg_r.scale = Vec3::one();
|
||||
|
||||
next.foot_l.position = Vec3::new(
|
||||
skeleton_attr.foot_l.0,
|
||||
skeleton_attr.foot_l.0,
|
||||
skeleton_attr.foot_l.1,
|
||||
);
|
||||
next.foot_l.orientation = Quaternion::rotation_z(0.0);
|
||||
next.foot_l.scale = Vec3::one();
|
||||
|
||||
next.foot_r.position = Vec3::new(
|
||||
skeleton_attr.foot_r.0,
|
||||
skeleton_attr.foot_r.0,
|
||||
skeleton_attr.foot_r.1,
|
||||
);
|
||||
next.foot_r.orientation = Quaternion::rotation_z(0.0);
|
||||
next.foot_r.scale = Vec3::one();
|
||||
|
||||
next
|
||||
}
|
||||
}
|
177
voxygen/src/anim/src/theropod/mod.rs
Normal file
177
voxygen/src/anim/src/theropod/mod.rs
Normal file
@ -0,0 +1,177 @@
|
||||
pub mod idle;
|
||||
pub mod jump;
|
||||
pub mod run;
|
||||
|
||||
// Reexports
|
||||
pub use self::{idle::IdleAnimation, jump::JumpAnimation, run::RunAnimation};
|
||||
|
||||
use super::{make_bone, vek::*, FigureBoneData, Skeleton};
|
||||
use common::comp::{self};
|
||||
use core::convert::TryFrom;
|
||||
|
||||
pub type Body = comp::theropod::Body;
|
||||
|
||||
skeleton_impls!(struct TheropodSkeleton {
|
||||
+ head,
|
||||
+ jaw,
|
||||
+ neck,
|
||||
+ chest_front,
|
||||
+ chest_back,
|
||||
+ tail_front,
|
||||
+ tail_back,
|
||||
+ hand_l,
|
||||
+ hand_r,
|
||||
+ leg_l,
|
||||
+ leg_r,
|
||||
+ foot_l,
|
||||
+ foot_r,
|
||||
});
|
||||
|
||||
impl Skeleton for TheropodSkeleton {
|
||||
type Attr = SkeletonAttr;
|
||||
type Body = Body;
|
||||
|
||||
const BONE_COUNT: usize = 13;
|
||||
#[cfg(feature = "use-dyn-lib")]
|
||||
const COMPUTE_FN: &'static [u8] = b"theropod_compute_mats\0";
|
||||
|
||||
#[cfg_attr(feature = "be-dyn-lib", export_name = "theropod_compute_mats")]
|
||||
|
||||
fn compute_matrices_inner(
|
||||
&self,
|
||||
base_mat: Mat4<f32>,
|
||||
buf: &mut [FigureBoneData; super::MAX_BONE_COUNT],
|
||||
) -> Vec3<f32> {
|
||||
let chest_front_mat = base_mat * Mat4::<f32>::from(self.chest_front);
|
||||
let neck_mat = chest_front_mat * Mat4::<f32>::from(self.neck);
|
||||
let head_mat = neck_mat * Mat4::<f32>::from(self.head);
|
||||
let chest_back_mat = chest_front_mat * Mat4::<f32>::from(self.chest_back);
|
||||
let tail_front_mat = chest_back_mat * Mat4::<f32>::from(self.tail_front);
|
||||
let leg_l_mat = chest_front_mat * Mat4::<f32>::from(self.leg_l);
|
||||
let leg_r_mat = chest_front_mat * Mat4::<f32>::from(self.leg_r);
|
||||
|
||||
*(<&mut [_; Self::BONE_COUNT]>::try_from(&mut buf[0..Self::BONE_COUNT]).unwrap()) = [
|
||||
make_bone(head_mat),
|
||||
make_bone(head_mat * Mat4::<f32>::from(self.jaw)),
|
||||
make_bone(neck_mat),
|
||||
make_bone(chest_front_mat),
|
||||
make_bone(chest_back_mat),
|
||||
make_bone(tail_front_mat),
|
||||
make_bone(tail_front_mat * Mat4::<f32>::from(self.tail_back)),
|
||||
make_bone(chest_front_mat * Mat4::<f32>::from(self.hand_l)),
|
||||
make_bone(chest_front_mat * Mat4::<f32>::from(self.hand_r)),
|
||||
make_bone(leg_l_mat),
|
||||
make_bone(leg_r_mat),
|
||||
make_bone(leg_l_mat * Mat4::<f32>::from(self.foot_l)),
|
||||
make_bone(leg_r_mat * Mat4::<f32>::from(self.foot_r)),
|
||||
];
|
||||
Vec3::default()
|
||||
}
|
||||
}
|
||||
|
||||
pub struct SkeletonAttr {
|
||||
head: (f32, f32),
|
||||
neck: (f32, f32),
|
||||
jaw: (f32, f32),
|
||||
chest_front: (f32, f32),
|
||||
chest_back: (f32, f32),
|
||||
tail_front: (f32, f32),
|
||||
tail_back: (f32, f32),
|
||||
hand_l: (f32, f32, f32),
|
||||
hand_r: (f32, f32, f32),
|
||||
leg_l: (f32, f32, f32),
|
||||
leg_r: (f32, f32, f32),
|
||||
foot_l: (f32, f32, f32),
|
||||
foot_r: (f32, f32, f32),
|
||||
}
|
||||
|
||||
impl<'a> std::convert::TryFrom<&'a comp::Body> for SkeletonAttr {
|
||||
type Error = ();
|
||||
|
||||
fn try_from(body: &'a comp::Body) -> Result<Self, Self::Error> {
|
||||
match body {
|
||||
comp::Body::Theropod(body) => Ok(SkeletonAttr::from(body)),
|
||||
_ => Err(()),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl Default for SkeletonAttr {
|
||||
fn default() -> Self {
|
||||
Self {
|
||||
head: (0.0, 0.0),
|
||||
neck: (0.0, 0.0),
|
||||
jaw: (0.0, 0.0),
|
||||
chest_front: (0.0, 0.0),
|
||||
chest_back: (0.0, 0.0),
|
||||
tail_front: (0.0, 0.0),
|
||||
tail_back: (0.0, 0.0),
|
||||
hand_l: (0.0, 0.0, 0.0),
|
||||
hand_r: (0.0, 0.0, 0.0),
|
||||
leg_l: (0.0, 0.0, 0.0),
|
||||
leg_r: (0.0, 0.0, 0.0),
|
||||
foot_l: (0.0, 0.0, 0.0),
|
||||
foot_r: (0.0, 0.0, 0.0),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl<'a> From<&'a Body> for SkeletonAttr {
|
||||
fn from(body: &'a Body) -> Self {
|
||||
use comp::theropod::Species::*;
|
||||
Self {
|
||||
head: match (body.species, body.body_type) {
|
||||
(Archaeos, _) => (6.5, 3.0),
|
||||
(Odontotyrannos, _) => (5.0, 1.0),
|
||||
},
|
||||
jaw: match (body.species, body.body_type) {
|
||||
(Archaeos, _) => (0.0, 6.0),
|
||||
(Odontotyrannos, _) => (-1.0, 3.0),
|
||||
},
|
||||
neck: match (body.species, body.body_type) {
|
||||
(Archaeos, _) => (0.0, 6.0),
|
||||
(Odontotyrannos, _) => (-1.0, 3.0),
|
||||
},
|
||||
chest_front: match (body.species, body.body_type) {
|
||||
(Archaeos, _) => (0.0, 6.0),
|
||||
(Odontotyrannos, _) => (-1.0, 3.0),
|
||||
},
|
||||
chest_back: match (body.species, body.body_type) {
|
||||
(Archaeos, _) => (0.0, 6.0),
|
||||
(Odontotyrannos, _) => (-1.0, 3.0),
|
||||
},
|
||||
tail_front: match (body.species, body.body_type) {
|
||||
(Archaeos, _) => (-8.0, -1.0),
|
||||
(Odontotyrannos, _) => (-7.0, -1.0),
|
||||
},
|
||||
tail_back: match (body.species, body.body_type) {
|
||||
(Archaeos, _) => (-8.0, -1.0),
|
||||
(Odontotyrannos, _) => (-7.0, -1.0),
|
||||
},
|
||||
hand_l: match (body.species, body.body_type) {
|
||||
(Archaeos, _) => (-8.0, -1.0, 0.0),
|
||||
(Odontotyrannos, _) => (-7.0, -1.0, 0.0),
|
||||
},
|
||||
hand_r: match (body.species, body.body_type) {
|
||||
(Archaeos, _) => (8.0, -1.0, 0.0),
|
||||
(Odontotyrannos, _) => (7.0, -1.0, 0.0),
|
||||
},
|
||||
leg_l: match (body.species, body.body_type) {
|
||||
(Archaeos, _) => (-8.0, -1.0, 0.0),
|
||||
(Odontotyrannos, _) => (-7.0, -1.0, 0.0),
|
||||
},
|
||||
leg_r: match (body.species, body.body_type) {
|
||||
(Archaeos, _) => (8.0, -1.0, 0.0),
|
||||
(Odontotyrannos, _) => (7.0, -1.0, 0.0),
|
||||
},
|
||||
foot_l: match (body.species, body.body_type) {
|
||||
(Archaeos, _) => (-8.0, -1.0, 0.0),
|
||||
(Odontotyrannos, _) => (-7.0, -1.0, 0.0),
|
||||
},
|
||||
foot_r: match (body.species, body.body_type) {
|
||||
(Archaeos, _) => (8.0, -1.0, 0.0),
|
||||
(Odontotyrannos, _) => (7.0, -1.0, 0.0),
|
||||
},
|
||||
}
|
||||
}
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user