Add Basilisk and Cyclops models by Gemu, and AirBalloon model by SarraKitty.

This commit is contained in:
Avi Weinstock 2021-06-03 19:24:34 -04:00
parent 59ae5ec573
commit 05c699878f
36 changed files with 245 additions and 174 deletions

View File

@ -25,4 +25,26 @@
central: ("rudder"),
),
),
AirBalloon: (
bone0: (
offset: (-14.5, -16.0, 0.0),
phys_offset: (0.0, 0.0, 0.0),
central: ("Air_Balloon"),
),
bone1: (
offset: (0.0, 0.0, 0.0),
phys_offset: (0.0, 0.0, 0.0),
central: ("empty"),
),
bone2: (
offset: (0.0, 0.0, 0.0),
phys_offset: (0.0, 0.0, 0.0),
central: ("empty"),
),
bone3: (
offset: (-1.5, 37.0, -6.5),
phys_offset: (0.0, 0.0, 0.0),
central: ("Air_Balloon_rudder"),
),
),
})

BIN
assets/server/voxel/Air_Balloon.vox (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/server/voxel/Air_Balloon_rudder.vox (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/server/voxel/empty.vox (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -67,7 +67,7 @@
),
jaw: (
offset: (0.0, 0.0, 0.0),
central: ("armor.empty"),
central: ("npc.cyclops.male.jaw"),
),
tail: (
offset: (0.0, 0.0, 0.0),
@ -93,7 +93,7 @@
),
jaw: (
offset: (0.0, 0.0, 0.0),
central: ("armor.empty"),
central: ("npc.cyclops.male.jaw"),
),
tail: (
offset: (0.0, 0.0, 0.0),

Binary file not shown.

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

Binary file not shown.

Binary file not shown.

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

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

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

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -626,19 +626,19 @@
),
(Basilisk, Male): (
upper: (
offset: (-5.5, 0.0, -11.0),
offset: (-7.5, 0.0, -11.0),
central: ("npc.basilisk.male.head_upper"),
),
lower: (
offset: (-8.5, 0.0, -4.0),
offset: (-13.5, -2.0, -4.0),
central: ("npc.basilisk.male.head_lower"),
),
jaw: (
offset: (-2.5, 0.0, -15.0),
offset: (-6.5, 0.0, -15.0),
central: ("npc.basilisk.male.jaw"),
),
chest: (
offset: (-6.5, -13.0, -12.5),
offset: (-13.5, -13.0, -12.5),
central: ("npc.basilisk.male.chest"),
),
tail_rear: (
@ -646,7 +646,7 @@
central: ("npc.basilisk.male.tail_rear"),
),
tail_front: (
offset: (-4.5, -24.0, -7.0),
offset: (-10.5, -24.0, -7.0),
central: ("npc.basilisk.male.tail_front"),
),
),

View File

@ -2,505 +2,505 @@
(Crocodile, Male): (
front_left: (
offset: (-7.0, -0.0, -4.0),//full x dimension, 0 y dimension, full z dimension
lateral: ("npc.crocodile.male.foot_fr"),
lateral: ("npc.crocodile.male.foot_fr", false),
),
front_right: (
offset: (0.0, -0.0, -4.0),//0 x dimension, 0 y dimension, full z dimension
lateral: ("npc.crocodile.male.foot_fr"),
lateral: ("npc.crocodile.male.foot_fr", false),
),
back_left: (
offset: (-8.0, -0.0, -4.0),//full x dimension, 0 y dimension, full z dimension
lateral: ("npc.crocodile.male.foot_br"),
lateral: ("npc.crocodile.male.foot_br", false),
),
back_right: (
offset: (0.0, -0.0, -4.0),//0 x dimension, 0 y dimension, full z dimension
lateral: ("npc.crocodile.male.foot_br"),
lateral: ("npc.crocodile.male.foot_br", false),
),
),
(Crocodile, Female): (
front_left: (
offset: (-7.0, -0.0, -4.0),
lateral: ("npc.crocodile.male.foot_fr"),
lateral: ("npc.crocodile.male.foot_fr", false),
),
front_right: (
offset: (0.0, -0.0, -4.0),
lateral: ("npc.crocodile.male.foot_fr"),
lateral: ("npc.crocodile.male.foot_fr", false),
),
back_left: (
offset: (-8.0, -0.0, -4.0),
lateral: ("npc.crocodile.male.foot_br"),
lateral: ("npc.crocodile.male.foot_br", false),
),
back_right: (
offset: (0.0, -0.0, -4.0),
lateral: ("npc.crocodile.male.foot_br"),
lateral: ("npc.crocodile.male.foot_br", false),
),
),
(Alligator, Male): (
front_left: (
offset: (-7.0, 0.0, -4.0),
lateral: ("npc.alligator.male.foot_fr"),
lateral: ("npc.alligator.male.foot_fr", false),
),
front_right: (
offset: (-0.0, 0.0, -4.0),
lateral: ("npc.alligator.male.foot_fr"),
lateral: ("npc.alligator.male.foot_fr", false),
),
back_left: (
offset: (-8.0, 0.0, -4.0),
lateral: ("npc.alligator.male.foot_br"),
lateral: ("npc.alligator.male.foot_br", false),
),
back_right: (
offset: (-0.0, 0.0, -4.0),
lateral: ("npc.alligator.male.foot_br"),
lateral: ("npc.alligator.male.foot_br", false),
),
),
(Alligator, Female): (
front_left: (
offset: (-7.0, 0.0, -4.0),
lateral: ("npc.alligator.male.foot_fr"),
lateral: ("npc.alligator.male.foot_fr", false),
),
front_right: (
offset: (0.0, 0.0, -4.0),
lateral: ("npc.alligator.male.foot_fr"),
lateral: ("npc.alligator.male.foot_fr", false),
),
back_left: (
offset: (-8.0, 0.0, -4.0),
lateral: ("npc.alligator.male.foot_br"),
lateral: ("npc.alligator.male.foot_br", false),
),
back_right: (
offset: (0.0, 0.0, -4.0),
lateral: ("npc.alligator.male.foot_br"),
lateral: ("npc.alligator.male.foot_br", false),
),
),
(Salamander, Male): (
front_left: (
offset: (-6.0, 0.0, -3.0),
lateral: ("npc.salamander.male.foot_fr"),
lateral: ("npc.salamander.male.foot_fr", false),
),
front_right: (
offset: (0.0, 0.0, -3.0),
lateral: ("npc.salamander.male.foot_fr"),
lateral: ("npc.salamander.male.foot_fr", false),
),
back_left: (
offset: (-7.0, 0.0, -3.0),
lateral: ("npc.salamander.male.foot_br"),
lateral: ("npc.salamander.male.foot_br", false),
),
back_right: (
offset: (-0.0, 0.0, -3.0),
lateral: ("npc.salamander.male.foot_br"),
lateral: ("npc.salamander.male.foot_br", false),
),
),
(Salamander, Female): (
front_left: (
offset: (-6.0, 0.0, -3.0),
lateral: ("npc.salamander.female.foot_fr"),
lateral: ("npc.salamander.female.foot_fr", false),
),
front_right: (
offset: (0.0, 0.0, -3.0),
lateral: ("npc.salamander.female.foot_fr"),
lateral: ("npc.salamander.female.foot_fr", false),
),
back_left: (
offset: (-8.0, 0.0, -3.0),
lateral: ("npc.salamander.female.foot_br"),
lateral: ("npc.salamander.female.foot_br", false),
),
back_right: (
offset: (0.0, 0.0, -3.0),
lateral: ("npc.salamander.female.foot_br"),
lateral: ("npc.salamander.female.foot_br", false),
),
),
(Monitor, Male): (
front_left: (
offset: (-8.0, 0.0, -5.0),
lateral: ("npc.monitor.male.foot_fr"),
lateral: ("npc.monitor.male.foot_fr", false),
),
front_right: (
offset: (0.0, 0.0, -5.0),
lateral: ("npc.monitor.male.foot_fr"),
lateral: ("npc.monitor.male.foot_fr", false),
),
back_left: (
offset: (-7.0, 0.0, -5.0),
lateral: ("npc.monitor.male.foot_br"),
lateral: ("npc.monitor.male.foot_br", false),
),
back_right: (
offset: (0.0, 0.0, -5.0),
lateral: ("npc.monitor.male.foot_br"),
lateral: ("npc.monitor.male.foot_br", false),
),
),
(Monitor, Female): (
front_left: (
offset: (-8.0, 0.0, -5.0),
lateral: ("npc.monitor.male.foot_fr"),
lateral: ("npc.monitor.male.foot_fr", false),
),
front_right: (
offset: (0.0, 0.0, -5.0),
lateral: ("npc.monitor.male.foot_fr"),
lateral: ("npc.monitor.male.foot_fr", false),
),
back_left: (
offset: (-7.0, 0.0, -5.0),
lateral: ("npc.monitor.male.foot_br"),
lateral: ("npc.monitor.male.foot_br", false),
),
back_right: (
offset: (0.0, 0.0, -5.0),
lateral: ("npc.monitor.male.foot_br"),
lateral: ("npc.monitor.male.foot_br", false),
),
),
(Asp, Male): (
front_left: (
offset: (-10.0, 0.0, -6.5),
lateral: ("npc.asp.male.foot_fr"),
lateral: ("npc.asp.male.foot_fr", false),
),
front_right: (
offset: (0.0, 0.0, -6.5),
lateral: ("npc.asp.male.foot_fr"),
lateral: ("npc.asp.male.foot_fr", false),
),
back_left: (
offset: (-7.5, 0.0, -6.5),
lateral: ("npc.asp.male.foot_br"),
lateral: ("npc.asp.male.foot_br", false),
),
back_right: (
offset: (0.0, 0.0, -6.5),
lateral: ("npc.asp.male.foot_br"),
lateral: ("npc.asp.male.foot_br", false),
),
),
(Asp, Female): (
front_left: (
offset: (-10.0, 0.0, -6.5),
lateral: ("npc.asp.male.foot_fr"),
lateral: ("npc.asp.male.foot_fr", false),
),
front_right: (
offset: (0.0, 0.0, -6.5),
lateral: ("npc.asp.male.foot_fr"),
lateral: ("npc.asp.male.foot_fr", false),
),
back_left: (
offset: (-7.5, 0.0, -6.5),
lateral: ("npc.asp.male.foot_br"),
lateral: ("npc.asp.male.foot_br", false),
),
back_right: (
offset: (0.0, 0.0, -6.5),
lateral: ("npc.asp.male.foot_br"),
lateral: ("npc.asp.male.foot_br", false),
),
),
(Tortoise, Male): (
front_left: (
offset: (-7.0, 0.0, -8.0),
lateral: ("npc.tortoise.male.foot_fr"),
lateral: ("npc.tortoise.male.foot_fr", false),
),
front_right: (
offset: (0.0, 0.0, -8.0),
lateral: ("npc.tortoise.male.foot_fr"),
lateral: ("npc.tortoise.male.foot_fr", false),
),
back_left: (
offset: (-7.0, 0.0, -8.0),
lateral: ("npc.tortoise.male.foot_br"),
lateral: ("npc.tortoise.male.foot_br", false),
),
back_right: (
offset: (0.0, 0.0, -8.0),
lateral: ("npc.tortoise.male.foot_br"),
lateral: ("npc.tortoise.male.foot_br", false),
),
),
(Tortoise, Female): (
front_left: (
offset: (-7.0, 0.0, -8.0),
lateral: ("npc.tortoise.male.foot_fr"),
lateral: ("npc.tortoise.male.foot_fr", false),
),
front_right: (
offset: (0.0, 0.0, -8.0),
lateral: ("npc.tortoise.male.foot_fr"),
lateral: ("npc.tortoise.male.foot_fr", false),
),
back_left: (
offset: (-7.0, 0.0, -8.0),
lateral: ("npc.tortoise.male.foot_br"),
lateral: ("npc.tortoise.male.foot_br", false),
),
back_right: (
offset: (0.0, 0.0, -8.0),
lateral: ("npc.tortoise.male.foot_br"),
lateral: ("npc.tortoise.male.foot_br", false),
),
),
(Rocksnapper, Male): (
front_left: (
offset: (-12.0, 0.0, -10.0),
lateral: ("npc.rocksnapper.male.foot_fr"),
lateral: ("npc.rocksnapper.male.foot_fr", false),
),
front_right: (
offset: (0.0, 0.0, -10.0),
lateral: ("npc.rocksnapper.male.foot_fr"),
lateral: ("npc.rocksnapper.male.foot_fr", false),
),
back_left: (
offset: (-11.0, -6.0, -9.0),
lateral: ("npc.rocksnapper.male.foot_br"),
lateral: ("npc.rocksnapper.male.foot_br", false),
),
back_right: (
offset: (0.0, -6.0, -9.0),
lateral: ("npc.rocksnapper.male.foot_br"),
lateral: ("npc.rocksnapper.male.foot_br", false),
),
),
(Rocksnapper, Female): (
front_left: (
offset: (-12.0, 0.0, -10.0),
lateral: ("npc.rocksnapper.male.foot_fr"),
lateral: ("npc.rocksnapper.male.foot_fr", false),
),
front_right: (
offset: (0.0, 0.0, -10.0),
lateral: ("npc.rocksnapper.male.foot_fr"),
lateral: ("npc.rocksnapper.male.foot_fr", false),
),
back_left: (
offset: (-11.0, -6.0, -9.0),//special case
lateral: ("npc.rocksnapper.male.foot_br"),
lateral: ("npc.rocksnapper.male.foot_br", false),
),
back_right: (
offset: (0.0, -6.0, -9.0),
lateral: ("npc.rocksnapper.male.foot_br"),
lateral: ("npc.rocksnapper.male.foot_br", false),
),
),
(Pangolin, Male): (
front_left: (
offset: (-1.5, 0.0, -6.0),//unique
lateral: ("npc.pangolin.male.foot_fr"),
lateral: ("npc.pangolin.male.foot_fr", false),
),
front_right: (
offset: (-1.5, 0.0, -6.0),
lateral: ("npc.pangolin.male.foot_fr"),
lateral: ("npc.pangolin.male.foot_fr", false),
),
back_left: (
offset: (-1.5, 0.0, -6.0),
lateral: ("npc.pangolin.male.foot_br"),
lateral: ("npc.pangolin.male.foot_br", false),
),
back_right: (
offset: (-1.5, 0.0, -6.0),
lateral: ("npc.pangolin.male.foot_br"),
lateral: ("npc.pangolin.male.foot_br", false),
),
),
(Pangolin, Female): (
front_left: (
offset: (-1.5, 0.0, -6.0),
lateral: ("npc.pangolin.male.foot_fr"),
lateral: ("npc.pangolin.male.foot_fr", false),
),
front_right: (
offset: (-1.5, 0.0, -6.0),
lateral: ("npc.pangolin.male.foot_fr"),
lateral: ("npc.pangolin.male.foot_fr", false),
),
back_left: (
offset: (-1.5, 0.0, -6.0),//special case
lateral: ("npc.pangolin.male.foot_br"),
lateral: ("npc.pangolin.male.foot_br", false),
),
back_right: (
offset: (-1.5, 0.0, -6.0),
lateral: ("npc.pangolin.male.foot_br"),
lateral: ("npc.pangolin.male.foot_br", false),
),
),
(Maneater, Male): (
front_left: (
offset: (-6.0, 0.0, -6.5),
lateral: ("npc.maneater.male.foot_fr"),
lateral: ("npc.maneater.male.foot_fr", false),
),
front_right: (
offset: (-2.0, 0.0, -6.5),
lateral: ("npc.maneater.male.foot_fr"),
lateral: ("npc.maneater.male.foot_fr", false),
),
back_left: (
offset: (-6.0, -8.0, -9.0),
lateral: ("npc.maneater.male.foot_br"),
lateral: ("npc.maneater.male.foot_br", false),
),
back_right: (
offset: (-2.0, -8.0, -9.0),
lateral: ("npc.maneater.male.foot_br"),
lateral: ("npc.maneater.male.foot_br", false),
),
),
(Maneater, Female): (
front_left: (
offset: (-6.0, 0.0, -6.5),
lateral: ("npc.maneater.male.foot_fr"),
lateral: ("npc.maneater.male.foot_fr", false),
),
front_right: (
offset: (-2.0, 0.0, -6.5),
lateral: ("npc.maneater.male.foot_fr"),
lateral: ("npc.maneater.male.foot_fr", false),
),
back_left: (
offset: (-6.0, -8.0, -9.0),
lateral: ("npc.maneater.male.foot_br"),
lateral: ("npc.maneater.male.foot_br", false),
),
back_right: (
offset: (-2.0, -8.0, -9.0),
lateral: ("npc.maneater.male.foot_br"),
lateral: ("npc.maneater.male.foot_br", false),
),
),
(Hakulaq, Male): (
front_left: (
offset: (-10.0, 0.0, -9.0),
lateral: ("npc.hakulaq.male.foot_fr"),
lateral: ("npc.hakulaq.male.foot_fr", false),
),
front_right: (
offset: (0.0, 0.0, -9.0),
lateral: ("npc.hakulaq.male.foot_fr"),
lateral: ("npc.hakulaq.male.foot_fr", false),
),
back_left: (
offset: (-10.0, 0.0, -9.0),
lateral: ("npc.hakulaq.male.foot_br"),
lateral: ("npc.hakulaq.male.foot_br", false),
),
back_right: (
offset: (0.0, 0.0, -9.0),
lateral: ("npc.hakulaq.male.foot_br"),
lateral: ("npc.hakulaq.male.foot_br", false),
),
),
(Hakulaq, Female): (
front_left: (
offset: (-10.0, 0.0, -9.0),
lateral: ("npc.hakulaq.male.foot_fr"),
lateral: ("npc.hakulaq.male.foot_fr", false),
),
front_right: (
offset: (0.0, 0.0, -9.0),
lateral: ("npc.hakulaq.male.foot_fr"),
lateral: ("npc.hakulaq.male.foot_fr", false),
),
back_left: (
offset: (-10.0, 0.0, -9.0),
lateral: ("npc.hakulaq.male.foot_br"),
lateral: ("npc.hakulaq.male.foot_br", false),
),
back_right: (
offset: (0.0, 0.0, -9.0),
lateral: ("npc.hakulaq.male.foot_br"),
lateral: ("npc.hakulaq.male.foot_br", false),
),
),
(Sandshark, Male): (
front_left: (
offset: (-17.0, 0.0, -12.0),
lateral: ("npc.sandshark.male.foot_fr"),
lateral: ("npc.sandshark.male.foot_fr", false),
),
front_right: (
offset: (0.0, 0.0, -12.0),
lateral: ("npc.sandshark.male.foot_fr"),
lateral: ("npc.sandshark.male.foot_fr", false),
),
back_left: (
offset: (-9.0, 0.0, -6.0),
lateral: ("npc.sandshark.male.foot_br"),
lateral: ("npc.sandshark.male.foot_br", false),
),
back_right: (
offset: (-2.0, 0.0, -6.0),
lateral: ("npc.sandshark.male.foot_br"),
lateral: ("npc.sandshark.male.foot_br", false),
),
),
(Sandshark, Female): (
front_left: (
offset: (-17.0, 0.0, -12.0),
lateral: ("npc.sandshark.male.foot_fr"),
lateral: ("npc.sandshark.male.foot_fr", false),
),
front_right: (
offset: (0.0, 0.0, -12.0),
lateral: ("npc.sandshark.male.foot_fr"),
lateral: ("npc.sandshark.male.foot_fr", false),
),
back_left: (
offset: (-9.0, 0.0, -6.0),
lateral: ("npc.sandshark.male.foot_br"),
lateral: ("npc.sandshark.male.foot_br", false),
),
back_right: (
offset: (-2.0, 0.0, -6.0),
lateral: ("npc.sandshark.male.foot_br"),
lateral: ("npc.sandshark.male.foot_br", false),
),
),
(Lavadrake, Male): (
front_left: (
offset: (-14.0, -4.0, -10.0),
lateral: ("npc.lavadrake.male.foot_fr"),
lateral: ("npc.lavadrake.male.foot_fr", false),
),
front_right: (
offset: (0.0, -4.0, -10.0),
lateral: ("npc.lavadrake.male.foot_fr"),
lateral: ("npc.lavadrake.male.foot_fr", false),
),
back_left: (
offset: (-14.0, -7.5, -10.0),
lateral: ("npc.lavadrake.male.foot_br"),
lateral: ("npc.lavadrake.male.foot_br", false),
),
back_right: (
offset: (0.0, -7.5, -10.0),
lateral: ("npc.lavadrake.male.foot_br"),
lateral: ("npc.lavadrake.male.foot_br", false),
),
),
(Lavadrake, Female): (
front_left: (
offset: (-14.0, -4.0, -10.0),
lateral: ("npc.lavadrake.male.foot_fr"),
lateral: ("npc.lavadrake.male.foot_fr", false),
),
front_right: (
offset: (0.0, -4.0, -10.0),
lateral: ("npc.lavadrake.male.foot_fr"),
lateral: ("npc.lavadrake.male.foot_fr", false),
),
back_left: (
offset: (-14.0, -7.5, -10.0),
lateral: ("npc.lavadrake.male.foot_br"),
lateral: ("npc.lavadrake.male.foot_br", false),
),
back_right: (
offset: (0.0, -7.5, -10.0),
lateral: ("npc.lavadrake.male.foot_br"),
lateral: ("npc.lavadrake.male.foot_br", false),
),
),
(Basilisk, Male): (
front_left: (
offset: (-17.0, 0.0, -9.0),
lateral: ("npc.basilisk.male.foot_fr"),
offset: (-15.0, 0.0, -9.0),
lateral: ("npc.basilisk.male.foot_fl", true),
),
front_right: (
offset: (0.0, 0.0, -9.0),
lateral: ("npc.basilisk.male.foot_fr"),
lateral: ("npc.basilisk.male.foot_fr", true),
),
back_left: (
offset: (-15.0, 0.0, -9.0),
lateral: ("npc.basilisk.male.foot_br"),
lateral: ("npc.basilisk.male.foot_bl", true),
),
back_right: (
offset: (0.0, 0.0, -9.0),
lateral: ("npc.basilisk.male.foot_br"),
lateral: ("npc.basilisk.male.foot_br", true),
),
),
(Basilisk, Female): (
front_left: (
offset: (-17.0, 0.0, -9.0),
lateral: ("npc.basilisk.male.foot_fr"),
offset: (-15.0, 0.0, -9.0),
lateral: ("npc.basilisk.male.foot_fl", true),
),
front_right: (
offset: (0.0, 0.0, -9.0),
lateral: ("npc.basilisk.male.foot_fr"),
lateral: ("npc.basilisk.male.foot_fr", false),
),
back_left: (
offset: (-15.0, 0.0, -9.0),
lateral: ("npc.basilisk.male.foot_br"),
lateral: ("npc.basilisk.male.foot_bl", true),
),
back_right: (
offset: (0.0, 0.0, -9.0),
lateral: ("npc.basilisk.male.foot_br"),
lateral: ("npc.basilisk.male.foot_br", false),
),
),
(Deadwood, Male): (
front_left: (
offset: (-5.0, -2.0, -7.0),
lateral: ("npc.deadwood.male.foot_fr"),
lateral: ("npc.deadwood.male.foot_fr", false),
),
front_right: (
offset: (0.0, -2.0, -7.0),
lateral: ("npc.deadwood.male.foot_fr"),
lateral: ("npc.deadwood.male.foot_fr", false),
),
back_left: (
offset: (-5.0, -1.0, -7.0),
lateral: ("npc.deadwood.male.foot_br"),
lateral: ("npc.deadwood.male.foot_br", false),
),
back_right: (
offset: (0.0, -1.0, -7.0),
lateral: ("npc.deadwood.male.foot_br"),
lateral: ("npc.deadwood.male.foot_br", false),
),
),
(Deadwood, Female): (
front_left: (
offset: (-5.0, -2.0, -7.0),
lateral: ("npc.deadwood.male.foot_fr"),
lateral: ("npc.deadwood.male.foot_fr", false),
),
front_right: (
offset: (0.0, -2.0, -7.0),
lateral: ("npc.deadwood.male.foot_fr"),
lateral: ("npc.deadwood.male.foot_fr", false),
),
back_left: (
offset: (-5.0, -1.0, -7.0),
lateral: ("npc.deadwood.male.foot_br"),
lateral: ("npc.deadwood.male.foot_br", false),
),
back_right: (
offset: (0.0, -1.0, -7.0),
lateral: ("npc.deadwood.male.foot_br"),
lateral: ("npc.deadwood.male.foot_br", false),
),
),
})

Binary file not shown.

View File

@ -621,7 +621,7 @@ impl Body {
Body::BirdLarge(_) => 50.0,
Body::BirdMedium(_) => 40.0,
Body::Dragon(_) => 60.0,
Body::Ship(ship::Body::DefaultAirship) => 60.0,
Body::Ship(ship) if ship.can_fly() => 60.0,
_ => 0.0,
}
}
@ -688,6 +688,7 @@ impl Body {
pub fn mounting_offset(&self) -> Vec3<f32> {
match self {
Body::Ship(ship::Body::DefaultAirship) => Vec3::from([0.0, 0.0, 10.0]),
Body::Ship(ship::Body::AirBalloon) => Vec3::from([0.0, 0.0, 10.0]),
_ => Vec3::unit_z(),
}
}

View File

@ -3,15 +3,19 @@ use crate::{
consts::AIR_DENSITY,
make_case_elim,
};
use rand::prelude::SliceRandom;
use serde::{Deserialize, Serialize};
use vek::Vec3;
pub const ALL_BODIES: [Body; 2] = [Body::DefaultAirship, Body::AirBalloon];
make_case_elim!(
body,
#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)]
#[repr(u32)]
pub enum Body {
DefaultAirship = 0,
AirBalloon = 1,
}
);
@ -20,13 +24,26 @@ impl From<Body> for super::Body {
}
impl Body {
pub fn random() -> Self {
let mut rng = rand::thread_rng();
Self::random_with(&mut rng)
}
pub fn random_with(rng: &mut impl rand::Rng) -> Self { *(&ALL_BODIES).choose(rng).unwrap() }
pub fn manifest_entry(&self) -> &'static str {
match self {
Body::DefaultAirship => "Human_Airship",
Body::AirBalloon => "Air_Balloon",
}
}
pub fn dimensions(&self) -> Vec3<f32> { Vec3::new(25.0, 50.0, 40.0) }
pub fn dimensions(&self) -> Vec3<f32> {
match self {
Body::DefaultAirship => Vec3::new(25.0, 50.0, 40.0),
Body::AirBalloon => Vec3::new(25.0, 50.0, 40.0),
}
}
fn balloon_vol(&self) -> f32 {
let spheroid_vol = |equat_d: f32, polar_d: f32| -> f32 {
@ -52,6 +69,12 @@ impl Body {
pub fn density(&self) -> Density { Density(AIR_DENSITY) }
pub fn mass(&self) -> Mass { Mass((self.hull_vol() + self.balloon_vol()) * self.density().0) }
pub fn can_fly(&self) -> bool {
match self {
Body::DefaultAirship | Body::AirBalloon => true,
}
}
}
/// Terrain is 11.0 scale relative to small-scale voxels,

View File

@ -3,7 +3,7 @@ use crate::{
biped_large, biped_small,
inventory::slot::EquipSlot,
item::{Hands, ItemKind, Tool, ToolKind},
quadruped_low, quadruped_medium, quadruped_small, ship,
quadruped_low, quadruped_medium, quadruped_small,
skills::{Skill, SwimSkill},
theropod, Body, CharacterAbility, CharacterState, Density, InputAttr, InputKind,
InventoryAction, StateUpdate,
@ -190,7 +190,7 @@ impl Body {
Body::BirdMedium(_) => Some(GRAVITY * self.mass().0 * 2.0),
Body::BirdLarge(_) => Some(GRAVITY * self.mass().0 * 0.5),
Body::Dragon(_) => Some(200_000.0),
Body::Ship(ship::Body::DefaultAirship) => Some(300_000.0),
Body::Ship(ship) if ship.can_fly() => Some(300_000.0),
_ => None,
}
}
@ -390,7 +390,7 @@ pub fn fly_move(data: &JoinData, update: &mut StateUpdate, efficiency: f32) -> b
update.vel.0.z += data.dt.0 * (anti_grav + accel * data.inputs.move_z.max(0.0));
},
// floaty floaty
Body::Ship(ship @ ship::Body::DefaultAirship) => {
Body::Ship(ship) if ship.can_fly() => {
let regulate_density = |min: f32, max: f32, def: f32, rate: f32| -> Density {
// Reset to default on no input
let change = if data.inputs.move_z.abs() > std::f32::EPSILON {

View File

@ -1152,7 +1152,7 @@ fn handle_spawn_airship(
200.0,
)
});
let ship = comp::ship::Body::DefaultAirship;
let ship = comp::ship::Body::random();
let mut builder = server
.state
.create_ship(pos, ship, true)

View File

@ -37,7 +37,7 @@ impl Entity {
pub fn get_body(&self) -> comp::Body {
match self.rng(PERM_GENUS).gen::<f32>() {
// we want 5% airships, 45% birds, 50% humans
x if x < 0.05 => comp::Body::Ship(comp::ship::Body::DefaultAirship),
x if x < 0.05 => comp::ship::Body::random_with(&mut self.rng(PERM_BODY)).into(),
x if x < 0.45 => {
let species = *(&comp::bird_medium::ALL_SPECIES)
.choose(&mut self.rng(PERM_SPECIES))

View File

@ -148,6 +148,9 @@ struct VoxSpec<T>(String, [T; 3]);
#[derive(Deserialize)]
struct VoxSimple(String);
#[derive(Deserialize)]
struct VoxMirror(String, bool);
#[derive(Deserialize)]
struct ArmorVoxSpec {
vox_spec: VoxSpec<f32>,
@ -4213,7 +4216,7 @@ struct SidedQLLateralVoxSpec {
#[derive(Deserialize)]
struct QuadrupedLowLateralSubSpec {
offset: [f32; 3], // Should be relative to initial origin
lateral: VoxSimple,
lateral: VoxMirror,
}
make_vox_spec!(
@ -4384,7 +4387,8 @@ impl QuadrupedLowLateralSpec {
return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5));
},
};
let lateral = graceful_load_segment_flipped(&spec.front_left.lateral.0, true);
let latspec = &spec.front_left.lateral;
let lateral = graceful_load_segment_flipped(&latspec.0, !latspec.1);
(lateral, Vec3::from(spec.front_left.offset))
}
@ -4400,7 +4404,8 @@ impl QuadrupedLowLateralSpec {
return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5));
},
};
let lateral = graceful_load_segment(&spec.front_right.lateral.0);
let latspec = &spec.front_right.lateral;
let lateral = graceful_load_segment_flipped(&latspec.0, latspec.1);
(lateral, Vec3::from(spec.front_right.offset))
}
@ -4416,7 +4421,8 @@ impl QuadrupedLowLateralSpec {
return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5));
},
};
let lateral = graceful_load_segment_flipped(&spec.back_left.lateral.0, true);
let latspec = &spec.back_left.lateral;
let lateral = graceful_load_segment_flipped(&latspec.0, !latspec.1);
(lateral, Vec3::from(spec.back_left.offset))
}
@ -4432,7 +4438,8 @@ impl QuadrupedLowLateralSpec {
return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5));
},
};
let lateral = graceful_load_segment(&spec.back_right.lateral.0);
let latspec = &spec.back_right.lateral;
let lateral = graceful_load_segment_flipped(&latspec.0, latspec.1);
(lateral, Vec3::from(spec.back_right.offset))
}