diff --git a/assets/common/abilities/unique/theropodbasic/dash.ron b/assets/common/abilities/unique/theropodbasic/dash.ron new file mode 100644 index 0000000000..110a20edc5 --- /dev/null +++ b/assets/common/abilities/unique/theropodbasic/dash.ron @@ -0,0 +1,19 @@ +DashMelee( + energy_cost: 0, + base_damage: 150, + scaled_damage: 40, + base_poise_damage: 0, + scaled_poise_damage: 0, + base_knockback: 8.0, + scaled_knockback: 17.0, + range: 4.0, + angle: 45.0, + energy_drain: 0, + forward_speed: 2.0, + buildup_duration: 0.5, + charge_duration: 1.2, + swing_duration: 0.1, + recover_duration: 1.1, + infinite_charge: true, + is_interruptible: false, +) \ No newline at end of file diff --git a/assets/common/abilities/weapon_ability_manifest.ron b/assets/common/abilities/weapon_ability_manifest.ron index 915b48c981..6d2e628ee0 100644 --- a/assets/common/abilities/weapon_ability_manifest.ron +++ b/assets/common/abilities/weapon_ability_manifest.ron @@ -184,6 +184,11 @@ secondary: "common.abilities.unique.theropodbird.triplestrike", abilities: [], ), + Unique(TheropodCharge): ( + primary: "common.abilities.unique.theropodbird.triplestrike", + secondary: "common.abilities.unique.theropodbasic.dash", + abilities: [], + ), Unique(ObjectTurret): ( primary: "common.abilities.unique.turret.arrows", secondary: "common.abilities.unique.turret.arrows", diff --git a/assets/common/items/npc_weapons/axe/oni_blue_axe.ron b/assets/common/items/npc_weapons/axe/oni_blue_axe.ron new file mode 100644 index 0000000000..7e8b7d1c0b --- /dev/null +++ b/assets/common/items/npc_weapons/axe/oni_blue_axe.ron @@ -0,0 +1,18 @@ +ItemDef( + name: "Blue Oni Axe", + description: "Placeholder", + kind: Tool(( + kind: AxeSimple, + hands: Two, + stats: Direct(( + equip_time_secs: 0.5, + power: 1.6, + poise_strength: 1.0, + speed: 1.1, + crit_chance: 0.18, + crit_mult: 2.8, + )), + )), + quality: Low, + tags: [], +) \ No newline at end of file diff --git a/assets/common/items/npc_weapons/hammer/oni_red_hammer.ron b/assets/common/items/npc_weapons/hammer/oni_red_hammer.ron new file mode 100644 index 0000000000..70cfd36888 --- /dev/null +++ b/assets/common/items/npc_weapons/hammer/oni_red_hammer.ron @@ -0,0 +1,18 @@ +ItemDef( + name: "Red Oni Hammer", + description: "Placeholder", + kind: Tool(( + kind: HammerSimple, + hands: Two, + stats: Direct(( + equip_time_secs: 0.5, + power: 1.0, + poise_strength: 1.0, + speed: 1.0, + crit_chance: 0.1, + crit_mult: 2.0, + )), + )), + quality: Low, + tags: [], +) \ No newline at end of file diff --git a/assets/common/items/npc_weapons/unique/theropodcharge.ron b/assets/common/items/npc_weapons/unique/theropodcharge.ron new file mode 100644 index 0000000000..4196fab6fc --- /dev/null +++ b/assets/common/items/npc_weapons/unique/theropodcharge.ron @@ -0,0 +1,18 @@ +ItemDef( + name: "Theropod Charge", + description: "testing123", + kind: Tool(( + kind: Unique(TheropodCharge), + hands: Two, + stats: Direct(( + equip_time_secs: 0.01, + power: 1.0, + poise_strength: 1.0, + speed: 1.0, + crit_chance: 0.1, + crit_mult: 2.0, + )), + )), + quality: Low, + tags: [], +) \ No newline at end of file diff --git a/assets/common/npc_names.ron b/assets/common/npc_names.ron index d8cda5f0bc..49ceb5c023 100644 --- a/assets/common/npc_names.ron +++ b/assets/common/npc_names.ron @@ -534,6 +534,18 @@ bear: ( keyword: "bear", generic: "Bear" + ), + dreadhorn: ( + keyword: "dreadhorn", + generic: "Dreadhorn" + ), + moose: ( + keyword: "moose", + generic: "Moose" + ), + snowleopard: ( + keyword: "snowleopard", + generic: "Snow Leopard" ) ) ), @@ -749,6 +761,10 @@ dog: ( keyword: "dog", generic: "Dog" + ), + goat: ( + keyword: "goat", + generic: "Goat" ) ) ), @@ -857,7 +873,15 @@ harvester: ( keyword: "harvester", generic: "Harvester" - ) + ), + oni_blue: ( + keyword: "oni_blue", + generic: "Blue Oni" + ), + oni_red: ( + keyword: "oni_red", + generic: "Red Oni" + ), ) ), golem: ( @@ -913,6 +937,14 @@ sunlizard: ( keyword: "sunlizard", generic: "Sun Lizard" + ), + yale: ( + keyword: "yale", + generic: "Yale" + ), + ntouka: ( + keyword: "ntouka", + generic: "Ntouka" ) ) ), @@ -1016,6 +1048,10 @@ marlin: ( keyword: "marlin", generic: "Marlin" + ), + icepike: ( + keyword: "icepike", + generic: "Icepike" ) ) ), diff --git a/assets/voxygen/voxel/biped_large_central_manifest.ron b/assets/voxygen/voxel/biped_large_central_manifest.ron index fda5200e91..02d09ecbab 100644 --- a/assets/voxygen/voxel/biped_large_central_manifest.ron +++ b/assets/voxygen/voxel/biped_large_central_manifest.ron @@ -728,4 +728,108 @@ central: ("armor.empty"), ) ), + (Blueoni, Male): ( + head: ( + offset: (-7.5, -1.0, -9.0), + central: ("npc.oni_blue.male.head"), + ), + torso_upper: ( + offset: (-8.5, -12.0, -10.0), + central: ("npc.oni_blue.male.torso_upper"), + ), + torso_lower: ( + offset: (-6.5, -5.5, -13.0), + central: ("npc.oni_blue.male.torso_lower"), + ), + jaw: ( + offset: (-5.5, 0.0, -8.0), + central: ("npc.oni_blue.male.jaw"), + ), + tail: ( + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), + ), + second: ( + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), + ) + ), + (Blueoni, Female): ( + head: ( + offset: (-7.5, -1.0, -9.0), + central: ("npc.oni_blue.male.head"), + ), + torso_upper: ( + offset: (-8.5, -12.0, -10.0), + central: ("npc.oni_blue.male.torso_upper"), + ), + torso_lower: ( + offset: (-6.5, -5.5, -13.0), + central: ("npc.oni_blue.male.torso_lower"), + ), + jaw: ( + offset: (-5.5, 0.0, -8.0), + central: ("npc.oni_blue.male.jaw"), + ), + tail: ( + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), + ), + second: ( + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), + ) + ), + (Redoni, Male): ( + head: ( + offset: (-7.5, -1.0, -9.0), + central: ("npc.oni_red.male.head"), + ), + torso_upper: ( + offset: (-8.5, -12.0, -10.0), + central: ("npc.oni_red.male.torso_upper"), + ), + torso_lower: ( + offset: (-6.5, -5.5, -13.0), + central: ("npc.oni_red.male.torso_lower"), + ), + jaw: ( + offset: (-5.5, 0.0, -8.0), + central: ("npc.oni_red.male.jaw"), + ), + tail: ( + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), + ), + second: ( + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), + ) + ), + (Redoni, Female): ( + head: ( + offset: (-7.5, -1.0, -9.0), + central: ("npc.oni_red.male.head"), + ), + torso_upper: ( + offset: (-8.5, -12.0, -10.0), + central: ("npc.oni_red.male.torso_upper"), + ), + torso_lower: ( + offset: (-6.5, -5.5, -13.0), + central: ("npc.oni_red.male.torso_lower"), + ), + jaw: ( + offset: (-5.5, 0.0, -8.0), + central: ("npc.oni_red.male.jaw"), + ), + tail: ( + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), + ), + second: ( + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), + ) + ), }) \ No newline at end of file diff --git a/assets/voxygen/voxel/biped_large_lateral_manifest.ron b/assets/voxygen/voxel/biped_large_lateral_manifest.ron index 947200d5c3..ff75e8d3a1 100644 --- a/assets/voxygen/voxel/biped_large_lateral_manifest.ron +++ b/assets/voxygen/voxel/biped_large_lateral_manifest.ron @@ -951,4 +951,140 @@ lateral: ("npc.harvester.male.foot_r"), ) ), + (Blueoni, Male): ( + shoulder_l: ( + offset: (-4.0, -4.5, -5.0), + lateral: ("npc.oni_blue.male.shoulder_l"), + ), + shoulder_r: ( + offset: (-4.0, -4.5, -5.0), + lateral: ("npc.oni_blue.male.shoulder_r"), + ), + hand_l: ( + offset: (-4.5, -4.0, -12.0), + lateral: ("npc.oni_blue.male.hand_l"), + ), + hand_r: ( + offset: (-4.5, -4.0, -12.0), + lateral: ("npc.oni_blue.male.hand_r"), + ), + leg_l: ( + offset: (-2.5, -4.0, -3.5), + lateral: ("npc.oni_blue.male.leg_l"), + ), + leg_r: ( + offset: (-2.5, -4.0, -3.5), + lateral: ("npc.oni_blue.male.leg_r"), + ), + foot_l: ( + offset: (-3.0, -5.0, -4.5), + lateral: ("npc.oni_blue.male.foot_l"), + ), + foot_r: ( + offset: (-3.0, -5.0, -4.5), + lateral: ("npc.oni_blue.male.foot_r"), + ) + ), + (Blueoni, Female): ( + shoulder_l: ( + offset: (-4.0, -4.5, -5.0), + lateral: ("npc.oni_blue.male.shoulder_l"), + ), + shoulder_r: ( + offset: (-4.0, -4.5, -5.0), + lateral: ("npc.oni_blue.male.shoulder_r"), + ), + hand_l: ( + offset: (-4.5, -4.0, -12.0), + lateral: ("npc.oni_blue.male.hand_l"), + ), + hand_r: ( + offset: (-4.5, -4.0, -12.0), + lateral: ("npc.oni_blue.male.hand_r"), + ), + leg_l: ( + offset: (-2.5, -4.0, -3.5), + lateral: ("npc.oni_blue.male.leg_l"), + ), + leg_r: ( + offset: (-2.5, -4.0, -3.5), + lateral: ("npc.oni_blue.male.leg_r"), + ), + foot_l: ( + offset: (-3.0, -5.0, -4.5), + lateral: ("npc.oni_blue.male.foot_l"), + ), + foot_r: ( + offset: (-3.0, -5.0, -4.5), + lateral: ("npc.oni_blue.male.foot_r"), + ) + ), + (Redoni, Male): ( + shoulder_l: ( + offset: (-4.0, -4.5, -5.0), + lateral: ("npc.oni_red.male.shoulder_l"), + ), + shoulder_r: ( + offset: (-4.0, -4.5, -5.0), + lateral: ("npc.oni_red.male.shoulder_r"), + ), + hand_l: ( + offset: (-4.5, -4.0, -12.0), + lateral: ("npc.oni_red.male.hand_l"), + ), + hand_r: ( + offset: (-4.5, -4.0, -12.0), + lateral: ("npc.oni_red.male.hand_r"), + ), + leg_l: ( + offset: (-2.5, -4.0, -3.5), + lateral: ("npc.oni_red.male.leg_l"), + ), + leg_r: ( + offset: (-2.5, -4.0, -3.5), + lateral: ("npc.oni_red.male.leg_r"), + ), + foot_l: ( + offset: (-3.0, -5.0, -4.5), + lateral: ("npc.oni_red.male.foot_l"), + ), + foot_r: ( + offset: (-3.0, -5.0, -4.5), + lateral: ("npc.oni_red.male.foot_r"), + ) + ), + (Redoni, Female): ( + shoulder_l: ( + offset: (-4.0, -4.5, -5.0), + lateral: ("npc.oni_red.male.shoulder_l"), + ), + shoulder_r: ( + offset: (-4.0, -4.5, -5.0), + lateral: ("npc.oni_red.male.shoulder_r"), + ), + hand_l: ( + offset: (-4.5, -4.0, -12.0), + lateral: ("npc.oni_red.male.hand_l"), + ), + hand_r: ( + offset: (-4.5, -4.0, -12.0), + lateral: ("npc.oni_red.male.hand_r"), + ), + leg_l: ( + offset: (-2.5, -4.0, -3.5), + lateral: ("npc.oni_red.male.leg_l"), + ), + leg_r: ( + offset: (-2.5, -4.0, -3.5), + lateral: ("npc.oni_red.male.leg_r"), + ), + foot_l: ( + offset: (-3.0, -5.0, -4.5), + lateral: ("npc.oni_red.male.foot_l"), + ), + foot_r: ( + offset: (-3.0, -5.0, -4.5), + lateral: ("npc.oni_red.male.foot_r"), + ) + ), }) \ No newline at end of file diff --git a/assets/voxygen/voxel/biped_weapon_manifest.ron b/assets/voxygen/voxel/biped_weapon_manifest.ron index 78a5dfd0c8..7bfd156e52 100644 --- a/assets/voxygen/voxel/biped_weapon_manifest.ron +++ b/assets/voxygen/voxel/biped_weapon_manifest.ron @@ -989,6 +989,14 @@ vox_spec: ("weapon.hammer.2hhammer_harvester", (-1.5, -7.5, -6.0)), color: None ), + "common.items.npc_weapons.axe.oni_blue_axe": ( + vox_spec: ("weapon.axe.2haxe_oni_blue", (-1.5, -2.0, -12.0)), + color: None + ), + "common.items.npc_weapons.hammer.oni_red_hammer": ( + vox_spec: ("weapon.hammer.2hhammer_oni_red", (-3.0, -4.5, -12.0)), + color: None + ), //BIPEDSMALL "common.items.npc_weapons.biped_small.adlet.adlet_bow": ( vox_spec: ("weapon.biped_small.bow.adlet", (-1.5, -3.0, -5.0)), diff --git a/assets/voxygen/voxel/bird_medium_central_manifest.ron b/assets/voxygen/voxel/bird_medium_central_manifest.ron index ee00459527..57d03ecfe1 100644 --- a/assets/voxygen/voxel/bird_medium_central_manifest.ron +++ b/assets/voxygen/voxel/bird_medium_central_manifest.ron @@ -29,29 +29,29 @@ ), (Chicken, Male): ( head: ( - offset: (-1.5, -2.0, -3.5), + offset: (-1.5, -3.0, -3.0), central: ("npc.chicken.male.head"), ), torso: ( - offset: (-2.5, -3.0, -2.0), + offset: (-2.5, -4.5, -3.5), central: ("npc.chicken.male.torso"), ), tail: ( - offset: (-1.5, -2.5, -3.5), + offset: (-1.5, -2.0, -3.0), central: ("npc.chicken.male.tail"), ) ), (Chicken, Female): ( head: ( - offset: (-1.5, -2.0, -2.5), + offset: (-1.5, -3.0, -4.0), central: ("npc.chicken.female.head"), ), torso: ( - offset: (-2.5, -3.0, -2.0), + offset: (-2.5, -5.0, -3.5), central: ("npc.chicken.female.torso"), ), tail: ( - offset: (-1.5, -0.5, -2.5), + offset: (-1.5, -3.5, -3.5), central: ("npc.chicken.female.tail"), ) ), diff --git a/assets/voxygen/voxel/bird_medium_lateral_manifest.ron b/assets/voxygen/voxel/bird_medium_lateral_manifest.ron index dc2287da5f..2bcb349b14 100644 --- a/assets/voxygen/voxel/bird_medium_lateral_manifest.ron +++ b/assets/voxygen/voxel/bird_medium_lateral_manifest.ron @@ -37,37 +37,37 @@ ), (Chicken, Male): ( wing_l: ( - offset: (-0.5, -2.5, -3.0), + offset: (-0.5, -2.5, -4.0), lateral: ("npc.chicken.male.wing"), ), wing_r: ( - offset: (-0.5, -2.5, -3.0), + offset: (-0.5, -2.5, -4.0), lateral: ("npc.chicken.male.wing"), ), foot_l: ( - offset: (-1.0, 0.0, -4.0), + offset: (-1.5, -2.5, -6.0), lateral: ("npc.chicken.male.leg_r"), ), foot_r: ( - offset: (-1.0, 0.0, -4.0), + offset: (-1.5, -2.5, -6.0), lateral: ("npc.chicken.male.leg_r"), ) ), (Chicken, Female): ( wing_l: ( - offset: (-0.5, -2.5, -3.0), + offset: (-0.5, -2.5, -4.0), lateral: ("npc.chicken.female.wing"), ), wing_r: ( - offset: (-0.5, -2.5, -3.0), + offset: (-0.5, -2.5, -4.0), lateral: ("npc.chicken.female.wing"), ), foot_l: ( - offset: (-1.0, 0.0, -4.0), + offset: (-1.5, -2.5, -6.0), lateral: ("npc.chicken.female.leg_r"), ), foot_r: ( - offset: (-1.0, 0.0, -4.0), + offset: (-1.5, -2.5, -6.0), lateral: ("npc.chicken.female.leg_r"), ) ), diff --git a/assets/voxygen/voxel/fish_medium_central_manifest.ron b/assets/voxygen/voxel/fish_medium_central_manifest.ron index bba6d4e700..cbdc61eb27 100644 --- a/assets/voxygen/voxel/fish_medium_central_manifest.ron +++ b/assets/voxygen/voxel/fish_medium_central_manifest.ron @@ -43,4 +43,48 @@ central: ("npc.marlin.male.tail"), ), ), + (Icepike, Male): ( + head: ( + offset: (-2.5, 0.0, -6.0), + central: ("npc.icepike.male.head"), + ), + jaw: ( + offset: (-1.5, 0.0, -4.0), + central: ("npc.icepike.male.jaw"), + ), + chest_front: ( + offset: (-2.5, -4.0, -7.0), + central: ("npc.icepike.male.chest_front"), + ), + chest_back: ( + offset: (-1.5, -1.5, -3.0), + central: ("npc.icepike.male.chest_back"), + ), + tail: ( + offset: (-0.5, -10.0, -4.5), + central: ("npc.icepike.male.tail"), + ), + ), + (Icepike, Female): ( + head: ( + offset: (-2.5, 0.0, -6.0), + central: ("npc.icepike.male.head"), + ), + jaw: ( + offset: (-1.5, 0.0, -4.0), + central: ("npc.icepike.male.jaw"), + ), + chest_front: ( + offset: (-2.5, -4.0, -7.0), + central: ("npc.icepike.male.chest_front"), + ), + chest_back: ( + offset: (-1.5, -1.5, -3.0), + central: ("npc.icepike.male.chest_back"), + ), + tail: ( + offset: (-0.5, -10.0, -4.5), + central: ("npc.icepike.male.tail"), + ), + ), }) diff --git a/assets/voxygen/voxel/fish_medium_lateral_manifest.ron b/assets/voxygen/voxel/fish_medium_lateral_manifest.ron index 4d8bfcbdab..d53de2e4a2 100644 --- a/assets/voxygen/voxel/fish_medium_lateral_manifest.ron +++ b/assets/voxygen/voxel/fish_medium_lateral_manifest.ron @@ -19,4 +19,24 @@ lateral: ("npc.marlin.male.fin_r"), ), ), + (Icepike, Male): ( + fin_l: ( + offset: (-1.0, -7.0, -3.0), + lateral: ("npc.icepike.male.fin_r"), + ), + fin_r: ( + offset: (-1.0, -7.0, -3.0), + lateral: ("npc.icepike.male.fin_r"), + ), + ), + (Icepike, Female): ( + fin_l: ( + offset: (-1.0, -7.0, -3.0), + lateral: ("npc.icepike.male.fin_r"), + ), + fin_r: ( + offset: (-1.0, -7.0, -3.0), + lateral: ("npc.icepike.male.fin_r"), + ), + ), }) diff --git a/assets/voxygen/voxel/npc/chicken/female/head.vox b/assets/voxygen/voxel/npc/chicken/female/head.vox index bd4f5d0f5a..5b47bc3f20 100644 Binary files a/assets/voxygen/voxel/npc/chicken/female/head.vox and b/assets/voxygen/voxel/npc/chicken/female/head.vox differ diff --git a/assets/voxygen/voxel/npc/chicken/female/leg_r.vox b/assets/voxygen/voxel/npc/chicken/female/leg_r.vox index f6eb2ca427..cf7616b4d7 100644 Binary files a/assets/voxygen/voxel/npc/chicken/female/leg_r.vox and b/assets/voxygen/voxel/npc/chicken/female/leg_r.vox differ diff --git a/assets/voxygen/voxel/npc/chicken/female/tail.vox b/assets/voxygen/voxel/npc/chicken/female/tail.vox index 2ff524f702..ffec4dddd1 100644 Binary files a/assets/voxygen/voxel/npc/chicken/female/tail.vox and b/assets/voxygen/voxel/npc/chicken/female/tail.vox differ diff --git a/assets/voxygen/voxel/npc/chicken/female/torso.vox b/assets/voxygen/voxel/npc/chicken/female/torso.vox index 817f167fee..b236c1276d 100644 Binary files a/assets/voxygen/voxel/npc/chicken/female/torso.vox and b/assets/voxygen/voxel/npc/chicken/female/torso.vox differ diff --git a/assets/voxygen/voxel/npc/chicken/female/wing.vox b/assets/voxygen/voxel/npc/chicken/female/wing.vox index 3581a51950..9153231a22 100644 Binary files a/assets/voxygen/voxel/npc/chicken/female/wing.vox and b/assets/voxygen/voxel/npc/chicken/female/wing.vox differ diff --git a/assets/voxygen/voxel/npc/chicken/male/head.vox b/assets/voxygen/voxel/npc/chicken/male/head.vox index d9c97f93c5..24848901c5 100644 Binary files a/assets/voxygen/voxel/npc/chicken/male/head.vox and b/assets/voxygen/voxel/npc/chicken/male/head.vox differ diff --git a/assets/voxygen/voxel/npc/chicken/male/leg_r.vox b/assets/voxygen/voxel/npc/chicken/male/leg_r.vox index cb8ec8f49d..3284b90e76 100644 Binary files a/assets/voxygen/voxel/npc/chicken/male/leg_r.vox and b/assets/voxygen/voxel/npc/chicken/male/leg_r.vox differ diff --git a/assets/voxygen/voxel/npc/chicken/male/tail.vox b/assets/voxygen/voxel/npc/chicken/male/tail.vox index e0bbe81591..9be87d6229 100644 Binary files a/assets/voxygen/voxel/npc/chicken/male/tail.vox and b/assets/voxygen/voxel/npc/chicken/male/tail.vox differ diff --git a/assets/voxygen/voxel/npc/chicken/male/torso.vox b/assets/voxygen/voxel/npc/chicken/male/torso.vox index 53fa65c392..67da8a9b80 100644 Binary files a/assets/voxygen/voxel/npc/chicken/male/torso.vox and b/assets/voxygen/voxel/npc/chicken/male/torso.vox differ diff --git a/assets/voxygen/voxel/npc/chicken/male/wing.vox b/assets/voxygen/voxel/npc/chicken/male/wing.vox index 5da39e0340..1eda3c6c9f 100644 Binary files a/assets/voxygen/voxel/npc/chicken/male/wing.vox and b/assets/voxygen/voxel/npc/chicken/male/wing.vox differ diff --git a/assets/voxygen/voxel/npc/dreadhorn/male/foot_br.vox b/assets/voxygen/voxel/npc/dreadhorn/male/foot_br.vox new file mode 100644 index 0000000000..aa0db7836e Binary files /dev/null and b/assets/voxygen/voxel/npc/dreadhorn/male/foot_br.vox differ diff --git a/assets/voxygen/voxel/npc/dreadhorn/male/foot_fr.vox b/assets/voxygen/voxel/npc/dreadhorn/male/foot_fr.vox new file mode 100644 index 0000000000..771d3ffc1b Binary files /dev/null and b/assets/voxygen/voxel/npc/dreadhorn/male/foot_fr.vox differ diff --git a/assets/voxygen/voxel/npc/dreadhorn/male/head.vox b/assets/voxygen/voxel/npc/dreadhorn/male/head.vox new file mode 100644 index 0000000000..2cad17d6cb Binary files /dev/null and b/assets/voxygen/voxel/npc/dreadhorn/male/head.vox differ diff --git a/assets/voxygen/voxel/npc/dreadhorn/male/jaw.vox b/assets/voxygen/voxel/npc/dreadhorn/male/jaw.vox new file mode 100644 index 0000000000..b1f2f61058 Binary files /dev/null and b/assets/voxygen/voxel/npc/dreadhorn/male/jaw.vox differ diff --git a/assets/voxygen/voxel/npc/dreadhorn/male/leg_br.vox b/assets/voxygen/voxel/npc/dreadhorn/male/leg_br.vox new file mode 100644 index 0000000000..cafa9b360a Binary files /dev/null and b/assets/voxygen/voxel/npc/dreadhorn/male/leg_br.vox differ diff --git a/assets/voxygen/voxel/npc/dreadhorn/male/leg_fr.vox b/assets/voxygen/voxel/npc/dreadhorn/male/leg_fr.vox new file mode 100644 index 0000000000..bd75a1cf5d Binary files /dev/null and b/assets/voxygen/voxel/npc/dreadhorn/male/leg_fr.vox differ diff --git a/assets/voxygen/voxel/npc/dreadhorn/male/neck.vox b/assets/voxygen/voxel/npc/dreadhorn/male/neck.vox new file mode 100644 index 0000000000..05b7e1188a Binary files /dev/null and b/assets/voxygen/voxel/npc/dreadhorn/male/neck.vox differ diff --git a/assets/voxygen/voxel/npc/dreadhorn/male/tail.vox b/assets/voxygen/voxel/npc/dreadhorn/male/tail.vox new file mode 100644 index 0000000000..0f9803a8a4 Binary files /dev/null and b/assets/voxygen/voxel/npc/dreadhorn/male/tail.vox differ diff --git a/assets/voxygen/voxel/npc/dreadhorn/male/torso_back.vox b/assets/voxygen/voxel/npc/dreadhorn/male/torso_back.vox new file mode 100644 index 0000000000..dc42d4f262 Binary files /dev/null and b/assets/voxygen/voxel/npc/dreadhorn/male/torso_back.vox differ diff --git a/assets/voxygen/voxel/npc/dreadhorn/male/torso_front.vox b/assets/voxygen/voxel/npc/dreadhorn/male/torso_front.vox new file mode 100644 index 0000000000..4e801b349a Binary files /dev/null and b/assets/voxygen/voxel/npc/dreadhorn/male/torso_front.vox differ diff --git a/assets/voxygen/voxel/npc/goat/male/chest.vox b/assets/voxygen/voxel/npc/goat/male/chest.vox new file mode 100644 index 0000000000..3f16dbc415 Binary files /dev/null and b/assets/voxygen/voxel/npc/goat/male/chest.vox differ diff --git a/assets/voxygen/voxel/npc/goat/male/foot_br.vox b/assets/voxygen/voxel/npc/goat/male/foot_br.vox new file mode 100644 index 0000000000..7dffcd9862 Binary files /dev/null and b/assets/voxygen/voxel/npc/goat/male/foot_br.vox differ diff --git a/assets/voxygen/voxel/npc/goat/male/foot_fr.vox b/assets/voxygen/voxel/npc/goat/male/foot_fr.vox new file mode 100644 index 0000000000..4bf934d868 Binary files /dev/null and b/assets/voxygen/voxel/npc/goat/male/foot_fr.vox differ diff --git a/assets/voxygen/voxel/npc/goat/male/head.vox b/assets/voxygen/voxel/npc/goat/male/head.vox new file mode 100644 index 0000000000..7607be3037 Binary files /dev/null and b/assets/voxygen/voxel/npc/goat/male/head.vox differ diff --git a/assets/voxygen/voxel/npc/goat/male/tail.vox b/assets/voxygen/voxel/npc/goat/male/tail.vox new file mode 100644 index 0000000000..933882b320 Binary files /dev/null and b/assets/voxygen/voxel/npc/goat/male/tail.vox differ diff --git a/assets/voxygen/voxel/npc/icepike/male/chest_back.vox b/assets/voxygen/voxel/npc/icepike/male/chest_back.vox new file mode 100644 index 0000000000..a2514dfe4c Binary files /dev/null and b/assets/voxygen/voxel/npc/icepike/male/chest_back.vox differ diff --git a/assets/voxygen/voxel/npc/icepike/male/chest_front.vox b/assets/voxygen/voxel/npc/icepike/male/chest_front.vox new file mode 100644 index 0000000000..029f355d66 Binary files /dev/null and b/assets/voxygen/voxel/npc/icepike/male/chest_front.vox differ diff --git a/assets/voxygen/voxel/npc/icepike/male/fin_r.vox b/assets/voxygen/voxel/npc/icepike/male/fin_r.vox new file mode 100644 index 0000000000..93854ef548 Binary files /dev/null and b/assets/voxygen/voxel/npc/icepike/male/fin_r.vox differ diff --git a/assets/voxygen/voxel/npc/icepike/male/head.vox b/assets/voxygen/voxel/npc/icepike/male/head.vox new file mode 100644 index 0000000000..2a248cbd78 Binary files /dev/null and b/assets/voxygen/voxel/npc/icepike/male/head.vox differ diff --git a/assets/voxygen/voxel/npc/icepike/male/jaw.vox b/assets/voxygen/voxel/npc/icepike/male/jaw.vox new file mode 100644 index 0000000000..41bf05a6b2 Binary files /dev/null and b/assets/voxygen/voxel/npc/icepike/male/jaw.vox differ diff --git a/assets/voxygen/voxel/npc/icepike/male/tail.vox b/assets/voxygen/voxel/npc/icepike/male/tail.vox new file mode 100644 index 0000000000..fef131fe01 Binary files /dev/null and b/assets/voxygen/voxel/npc/icepike/male/tail.vox differ diff --git a/assets/voxygen/voxel/npc/moose/female/ears.vox b/assets/voxygen/voxel/npc/moose/female/ears.vox new file mode 100644 index 0000000000..1209182cd6 Binary files /dev/null and b/assets/voxygen/voxel/npc/moose/female/ears.vox differ diff --git a/assets/voxygen/voxel/npc/moose/female/foot_br.vox b/assets/voxygen/voxel/npc/moose/female/foot_br.vox new file mode 100644 index 0000000000..0b5a860c2f Binary files /dev/null and b/assets/voxygen/voxel/npc/moose/female/foot_br.vox differ diff --git a/assets/voxygen/voxel/npc/moose/female/foot_fr.vox b/assets/voxygen/voxel/npc/moose/female/foot_fr.vox new file mode 100644 index 0000000000..090201d3cc Binary files /dev/null and b/assets/voxygen/voxel/npc/moose/female/foot_fr.vox differ diff --git a/assets/voxygen/voxel/npc/moose/female/head.vox b/assets/voxygen/voxel/npc/moose/female/head.vox new file mode 100644 index 0000000000..4384dc17df Binary files /dev/null and b/assets/voxygen/voxel/npc/moose/female/head.vox differ diff --git a/assets/voxygen/voxel/npc/moose/female/jaw.vox b/assets/voxygen/voxel/npc/moose/female/jaw.vox new file mode 100644 index 0000000000..6b5fc6c1c0 Binary files /dev/null and b/assets/voxygen/voxel/npc/moose/female/jaw.vox differ diff --git a/assets/voxygen/voxel/npc/moose/female/leg_br.vox b/assets/voxygen/voxel/npc/moose/female/leg_br.vox new file mode 100644 index 0000000000..8cec2e1365 Binary files /dev/null and b/assets/voxygen/voxel/npc/moose/female/leg_br.vox differ diff --git a/assets/voxygen/voxel/npc/moose/female/leg_fr.vox b/assets/voxygen/voxel/npc/moose/female/leg_fr.vox new file mode 100644 index 0000000000..fd8e5262ca Binary files /dev/null and b/assets/voxygen/voxel/npc/moose/female/leg_fr.vox differ diff --git a/assets/voxygen/voxel/npc/moose/female/neck.vox b/assets/voxygen/voxel/npc/moose/female/neck.vox new file mode 100644 index 0000000000..c73b955900 Binary files /dev/null and b/assets/voxygen/voxel/npc/moose/female/neck.vox differ diff --git a/assets/voxygen/voxel/npc/moose/female/tail.vox b/assets/voxygen/voxel/npc/moose/female/tail.vox new file mode 100644 index 0000000000..86a236d1d6 Binary files /dev/null and b/assets/voxygen/voxel/npc/moose/female/tail.vox differ diff --git a/assets/voxygen/voxel/npc/moose/female/torso_back.vox b/assets/voxygen/voxel/npc/moose/female/torso_back.vox new file mode 100644 index 0000000000..f269d54492 Binary files /dev/null and b/assets/voxygen/voxel/npc/moose/female/torso_back.vox differ diff --git a/assets/voxygen/voxel/npc/moose/female/torso_front.vox b/assets/voxygen/voxel/npc/moose/female/torso_front.vox new file mode 100644 index 0000000000..3a2dd4edc9 Binary files /dev/null and b/assets/voxygen/voxel/npc/moose/female/torso_front.vox differ diff --git a/assets/voxygen/voxel/npc/moose/male/ears.vox b/assets/voxygen/voxel/npc/moose/male/ears.vox new file mode 100644 index 0000000000..6c31ef5665 Binary files /dev/null and b/assets/voxygen/voxel/npc/moose/male/ears.vox differ diff --git a/assets/voxygen/voxel/npc/moose/male/foot_br.vox b/assets/voxygen/voxel/npc/moose/male/foot_br.vox new file mode 100644 index 0000000000..9b163231db Binary files /dev/null and b/assets/voxygen/voxel/npc/moose/male/foot_br.vox differ diff --git a/assets/voxygen/voxel/npc/moose/male/foot_fr.vox b/assets/voxygen/voxel/npc/moose/male/foot_fr.vox new file mode 100644 index 0000000000..16c3e903c2 Binary files /dev/null and b/assets/voxygen/voxel/npc/moose/male/foot_fr.vox differ diff --git a/assets/voxygen/voxel/npc/moose/male/head.vox b/assets/voxygen/voxel/npc/moose/male/head.vox new file mode 100644 index 0000000000..1bfd788e30 Binary files /dev/null and b/assets/voxygen/voxel/npc/moose/male/head.vox differ diff --git a/assets/voxygen/voxel/npc/moose/male/jaw.vox b/assets/voxygen/voxel/npc/moose/male/jaw.vox new file mode 100644 index 0000000000..062f9d9dc9 Binary files /dev/null and b/assets/voxygen/voxel/npc/moose/male/jaw.vox differ diff --git a/assets/voxygen/voxel/npc/moose/male/leg_br.vox b/assets/voxygen/voxel/npc/moose/male/leg_br.vox new file mode 100644 index 0000000000..85a794fcc0 Binary files /dev/null and b/assets/voxygen/voxel/npc/moose/male/leg_br.vox differ diff --git a/assets/voxygen/voxel/npc/moose/male/leg_fr.vox b/assets/voxygen/voxel/npc/moose/male/leg_fr.vox new file mode 100644 index 0000000000..c9a6c6c38f Binary files /dev/null and b/assets/voxygen/voxel/npc/moose/male/leg_fr.vox differ diff --git a/assets/voxygen/voxel/npc/moose/male/neck.vox b/assets/voxygen/voxel/npc/moose/male/neck.vox new file mode 100644 index 0000000000..787846ac58 Binary files /dev/null and b/assets/voxygen/voxel/npc/moose/male/neck.vox differ diff --git a/assets/voxygen/voxel/npc/moose/male/tail.vox b/assets/voxygen/voxel/npc/moose/male/tail.vox new file mode 100644 index 0000000000..aa52cb7f1a Binary files /dev/null and b/assets/voxygen/voxel/npc/moose/male/tail.vox differ diff --git a/assets/voxygen/voxel/npc/moose/male/torso_back.vox b/assets/voxygen/voxel/npc/moose/male/torso_back.vox new file mode 100644 index 0000000000..cdf6fbc7e0 Binary files /dev/null and b/assets/voxygen/voxel/npc/moose/male/torso_back.vox differ diff --git a/assets/voxygen/voxel/npc/moose/male/torso_front.vox b/assets/voxygen/voxel/npc/moose/male/torso_front.vox new file mode 100644 index 0000000000..51f6e642e4 Binary files /dev/null and b/assets/voxygen/voxel/npc/moose/male/torso_front.vox differ diff --git a/assets/voxygen/voxel/npc/ntouka/male/chest_back.vox b/assets/voxygen/voxel/npc/ntouka/male/chest_back.vox new file mode 100644 index 0000000000..1022df265b Binary files /dev/null and b/assets/voxygen/voxel/npc/ntouka/male/chest_back.vox differ diff --git a/assets/voxygen/voxel/npc/ntouka/male/chest_front.vox b/assets/voxygen/voxel/npc/ntouka/male/chest_front.vox new file mode 100644 index 0000000000..84b1d1fd05 Binary files /dev/null and b/assets/voxygen/voxel/npc/ntouka/male/chest_front.vox differ diff --git a/assets/voxygen/voxel/npc/ntouka/male/foot_r.vox b/assets/voxygen/voxel/npc/ntouka/male/foot_r.vox new file mode 100644 index 0000000000..992af9c78f Binary files /dev/null and b/assets/voxygen/voxel/npc/ntouka/male/foot_r.vox differ diff --git a/assets/voxygen/voxel/npc/ntouka/male/hand_r.vox b/assets/voxygen/voxel/npc/ntouka/male/hand_r.vox new file mode 100644 index 0000000000..d2f8a7a1ca Binary files /dev/null and b/assets/voxygen/voxel/npc/ntouka/male/hand_r.vox differ diff --git a/assets/voxygen/voxel/npc/ntouka/male/head.vox b/assets/voxygen/voxel/npc/ntouka/male/head.vox new file mode 100644 index 0000000000..79adb6e251 Binary files /dev/null and b/assets/voxygen/voxel/npc/ntouka/male/head.vox differ diff --git a/assets/voxygen/voxel/npc/ntouka/male/jaw.vox b/assets/voxygen/voxel/npc/ntouka/male/jaw.vox new file mode 100644 index 0000000000..2026b00ddb Binary files /dev/null and b/assets/voxygen/voxel/npc/ntouka/male/jaw.vox differ diff --git a/assets/voxygen/voxel/npc/ntouka/male/leg_r.vox b/assets/voxygen/voxel/npc/ntouka/male/leg_r.vox new file mode 100644 index 0000000000..dc8d12df67 Binary files /dev/null and b/assets/voxygen/voxel/npc/ntouka/male/leg_r.vox differ diff --git a/assets/voxygen/voxel/npc/ntouka/male/neck.vox b/assets/voxygen/voxel/npc/ntouka/male/neck.vox new file mode 100644 index 0000000000..46ee698128 Binary files /dev/null and b/assets/voxygen/voxel/npc/ntouka/male/neck.vox differ diff --git a/assets/voxygen/voxel/npc/ntouka/male/tail_back.vox b/assets/voxygen/voxel/npc/ntouka/male/tail_back.vox new file mode 100644 index 0000000000..0b9e6da107 Binary files /dev/null and b/assets/voxygen/voxel/npc/ntouka/male/tail_back.vox differ diff --git a/assets/voxygen/voxel/npc/ntouka/male/tail_front.vox b/assets/voxygen/voxel/npc/ntouka/male/tail_front.vox new file mode 100644 index 0000000000..993673706a Binary files /dev/null and b/assets/voxygen/voxel/npc/ntouka/male/tail_front.vox differ diff --git a/assets/voxygen/voxel/npc/oni_blue/male/foot_l.vox b/assets/voxygen/voxel/npc/oni_blue/male/foot_l.vox new file mode 100644 index 0000000000..33c70aa8ed Binary files /dev/null and b/assets/voxygen/voxel/npc/oni_blue/male/foot_l.vox differ diff --git a/assets/voxygen/voxel/npc/oni_blue/male/foot_r.vox b/assets/voxygen/voxel/npc/oni_blue/male/foot_r.vox new file mode 100644 index 0000000000..45046a5304 Binary files /dev/null and b/assets/voxygen/voxel/npc/oni_blue/male/foot_r.vox differ diff --git a/assets/voxygen/voxel/npc/oni_blue/male/hand_l.vox b/assets/voxygen/voxel/npc/oni_blue/male/hand_l.vox new file mode 100644 index 0000000000..b1fab7546b Binary files /dev/null and b/assets/voxygen/voxel/npc/oni_blue/male/hand_l.vox differ diff --git a/assets/voxygen/voxel/npc/oni_blue/male/hand_r.vox b/assets/voxygen/voxel/npc/oni_blue/male/hand_r.vox new file mode 100644 index 0000000000..2fcf2bd73d Binary files /dev/null and b/assets/voxygen/voxel/npc/oni_blue/male/hand_r.vox differ diff --git a/assets/voxygen/voxel/npc/oni_blue/male/head.vox b/assets/voxygen/voxel/npc/oni_blue/male/head.vox new file mode 100644 index 0000000000..5e20a5c885 Binary files /dev/null and b/assets/voxygen/voxel/npc/oni_blue/male/head.vox differ diff --git a/assets/voxygen/voxel/npc/oni_blue/male/jaw.vox b/assets/voxygen/voxel/npc/oni_blue/male/jaw.vox new file mode 100644 index 0000000000..2c0c0e50d5 Binary files /dev/null and b/assets/voxygen/voxel/npc/oni_blue/male/jaw.vox differ diff --git a/assets/voxygen/voxel/npc/oni_blue/male/leg_l.vox b/assets/voxygen/voxel/npc/oni_blue/male/leg_l.vox new file mode 100644 index 0000000000..bd2c297ade Binary files /dev/null and b/assets/voxygen/voxel/npc/oni_blue/male/leg_l.vox differ diff --git a/assets/voxygen/voxel/npc/oni_blue/male/leg_r.vox b/assets/voxygen/voxel/npc/oni_blue/male/leg_r.vox new file mode 100644 index 0000000000..1407fa725d Binary files /dev/null and b/assets/voxygen/voxel/npc/oni_blue/male/leg_r.vox differ diff --git a/assets/voxygen/voxel/npc/oni_blue/male/main_hand.vox b/assets/voxygen/voxel/npc/oni_blue/male/main_hand.vox new file mode 100644 index 0000000000..499aee20f7 Binary files /dev/null and b/assets/voxygen/voxel/npc/oni_blue/male/main_hand.vox differ diff --git a/assets/voxygen/voxel/npc/oni_blue/male/shoulder_l.vox b/assets/voxygen/voxel/npc/oni_blue/male/shoulder_l.vox new file mode 100644 index 0000000000..a973859199 Binary files /dev/null and b/assets/voxygen/voxel/npc/oni_blue/male/shoulder_l.vox differ diff --git a/assets/voxygen/voxel/npc/oni_blue/male/shoulder_r.vox b/assets/voxygen/voxel/npc/oni_blue/male/shoulder_r.vox new file mode 100644 index 0000000000..4ba5fba083 Binary files /dev/null and b/assets/voxygen/voxel/npc/oni_blue/male/shoulder_r.vox differ diff --git a/assets/voxygen/voxel/npc/oni_blue/male/torso_lower.vox b/assets/voxygen/voxel/npc/oni_blue/male/torso_lower.vox new file mode 100644 index 0000000000..6c7dbb5b7d Binary files /dev/null and b/assets/voxygen/voxel/npc/oni_blue/male/torso_lower.vox differ diff --git a/assets/voxygen/voxel/npc/oni_blue/male/torso_upper.vox b/assets/voxygen/voxel/npc/oni_blue/male/torso_upper.vox new file mode 100644 index 0000000000..a17138751f Binary files /dev/null and b/assets/voxygen/voxel/npc/oni_blue/male/torso_upper.vox differ diff --git a/assets/voxygen/voxel/npc/oni_red/male/foot_l.vox b/assets/voxygen/voxel/npc/oni_red/male/foot_l.vox new file mode 100644 index 0000000000..4e62f15cbd Binary files /dev/null and b/assets/voxygen/voxel/npc/oni_red/male/foot_l.vox differ diff --git a/assets/voxygen/voxel/npc/oni_red/male/foot_r.vox b/assets/voxygen/voxel/npc/oni_red/male/foot_r.vox new file mode 100644 index 0000000000..98aa5c59df Binary files /dev/null and b/assets/voxygen/voxel/npc/oni_red/male/foot_r.vox differ diff --git a/assets/voxygen/voxel/npc/oni_red/male/hand_l.vox b/assets/voxygen/voxel/npc/oni_red/male/hand_l.vox new file mode 100644 index 0000000000..e740348270 Binary files /dev/null and b/assets/voxygen/voxel/npc/oni_red/male/hand_l.vox differ diff --git a/assets/voxygen/voxel/npc/oni_red/male/hand_r.vox b/assets/voxygen/voxel/npc/oni_red/male/hand_r.vox new file mode 100644 index 0000000000..29a7c107ce Binary files /dev/null and b/assets/voxygen/voxel/npc/oni_red/male/hand_r.vox differ diff --git a/assets/voxygen/voxel/npc/oni_red/male/head.vox b/assets/voxygen/voxel/npc/oni_red/male/head.vox new file mode 100644 index 0000000000..148ee46547 Binary files /dev/null and b/assets/voxygen/voxel/npc/oni_red/male/head.vox differ diff --git a/assets/voxygen/voxel/npc/oni_red/male/jaw.vox b/assets/voxygen/voxel/npc/oni_red/male/jaw.vox new file mode 100644 index 0000000000..cc8809b966 Binary files /dev/null and b/assets/voxygen/voxel/npc/oni_red/male/jaw.vox differ diff --git a/assets/voxygen/voxel/npc/oni_red/male/leg_l.vox b/assets/voxygen/voxel/npc/oni_red/male/leg_l.vox new file mode 100644 index 0000000000..c1af3af434 Binary files /dev/null and b/assets/voxygen/voxel/npc/oni_red/male/leg_l.vox differ diff --git a/assets/voxygen/voxel/npc/oni_red/male/leg_r.vox b/assets/voxygen/voxel/npc/oni_red/male/leg_r.vox new file mode 100644 index 0000000000..c8d1ff1023 Binary files /dev/null and b/assets/voxygen/voxel/npc/oni_red/male/leg_r.vox differ diff --git a/assets/voxygen/voxel/npc/oni_red/male/main_hand.vox b/assets/voxygen/voxel/npc/oni_red/male/main_hand.vox new file mode 100644 index 0000000000..0fa6e4792a Binary files /dev/null and b/assets/voxygen/voxel/npc/oni_red/male/main_hand.vox differ diff --git a/assets/voxygen/voxel/npc/oni_red/male/shoulder_l.vox b/assets/voxygen/voxel/npc/oni_red/male/shoulder_l.vox new file mode 100644 index 0000000000..e7659fcb26 Binary files /dev/null and b/assets/voxygen/voxel/npc/oni_red/male/shoulder_l.vox differ diff --git a/assets/voxygen/voxel/npc/oni_red/male/shoulder_r.vox b/assets/voxygen/voxel/npc/oni_red/male/shoulder_r.vox new file mode 100644 index 0000000000..ffa062a08b Binary files /dev/null and b/assets/voxygen/voxel/npc/oni_red/male/shoulder_r.vox differ diff --git a/assets/voxygen/voxel/npc/oni_red/male/torso_lower.vox b/assets/voxygen/voxel/npc/oni_red/male/torso_lower.vox new file mode 100644 index 0000000000..60d5714f0d Binary files /dev/null and b/assets/voxygen/voxel/npc/oni_red/male/torso_lower.vox differ diff --git a/assets/voxygen/voxel/npc/oni_red/male/torso_upper.vox b/assets/voxygen/voxel/npc/oni_red/male/torso_upper.vox new file mode 100644 index 0000000000..10954a8030 Binary files /dev/null and b/assets/voxygen/voxel/npc/oni_red/male/torso_upper.vox differ diff --git a/assets/voxygen/voxel/npc/raptor_snow/male/hand_r.vox b/assets/voxygen/voxel/npc/raptor_snow/male/hand_r.vox index 3894b4d227..62ee6df795 100644 Binary files a/assets/voxygen/voxel/npc/raptor_snow/male/hand_r.vox and b/assets/voxygen/voxel/npc/raptor_snow/male/hand_r.vox differ diff --git a/assets/voxygen/voxel/npc/raptor_snow/male/head.vox b/assets/voxygen/voxel/npc/raptor_snow/male/head.vox index 8c8b162583..8a6dbc4ae5 100644 Binary files a/assets/voxygen/voxel/npc/raptor_snow/male/head.vox and b/assets/voxygen/voxel/npc/raptor_snow/male/head.vox differ diff --git a/assets/voxygen/voxel/npc/raptor_snow/male/tail_back.vox b/assets/voxygen/voxel/npc/raptor_snow/male/tail_back.vox index 4f11a48ba1..9175402181 100644 Binary files a/assets/voxygen/voxel/npc/raptor_snow/male/tail_back.vox and b/assets/voxygen/voxel/npc/raptor_snow/male/tail_back.vox differ diff --git a/assets/voxygen/voxel/npc/raptor_snow/male/tail_front.vox b/assets/voxygen/voxel/npc/raptor_snow/male/tail_front.vox index a5d0865362..e8b0c598f7 100644 Binary files a/assets/voxygen/voxel/npc/raptor_snow/male/tail_front.vox and b/assets/voxygen/voxel/npc/raptor_snow/male/tail_front.vox differ diff --git a/assets/voxygen/voxel/npc/raptor_wood/male/hand_r.vox b/assets/voxygen/voxel/npc/raptor_wood/male/hand_r.vox index 0a70186701..eb52d4086f 100644 Binary files a/assets/voxygen/voxel/npc/raptor_wood/male/hand_r.vox and b/assets/voxygen/voxel/npc/raptor_wood/male/hand_r.vox differ diff --git a/assets/voxygen/voxel/npc/raptor_wood/male/head.vox b/assets/voxygen/voxel/npc/raptor_wood/male/head.vox index b8b2fa7ed5..8f72d3e6e7 100644 Binary files a/assets/voxygen/voxel/npc/raptor_wood/male/head.vox and b/assets/voxygen/voxel/npc/raptor_wood/male/head.vox differ diff --git a/assets/voxygen/voxel/npc/raptor_wood/male/tail_back.vox b/assets/voxygen/voxel/npc/raptor_wood/male/tail_back.vox index b5d956d516..4a3f8945cd 100644 Binary files a/assets/voxygen/voxel/npc/raptor_wood/male/tail_back.vox and b/assets/voxygen/voxel/npc/raptor_wood/male/tail_back.vox differ diff --git a/assets/voxygen/voxel/npc/raptor_wood/male/tail_front.vox b/assets/voxygen/voxel/npc/raptor_wood/male/tail_front.vox index da09c29c79..c11dd8447f 100644 Binary files a/assets/voxygen/voxel/npc/raptor_wood/male/tail_front.vox and b/assets/voxygen/voxel/npc/raptor_wood/male/tail_front.vox differ diff --git a/assets/voxygen/voxel/npc/snowleopard/male/ears.vox b/assets/voxygen/voxel/npc/snowleopard/male/ears.vox new file mode 100644 index 0000000000..dc5f912957 Binary files /dev/null and b/assets/voxygen/voxel/npc/snowleopard/male/ears.vox differ diff --git a/assets/voxygen/voxel/npc/snowleopard/male/foot_br.vox b/assets/voxygen/voxel/npc/snowleopard/male/foot_br.vox new file mode 100644 index 0000000000..31aef01019 Binary files /dev/null and b/assets/voxygen/voxel/npc/snowleopard/male/foot_br.vox differ diff --git a/assets/voxygen/voxel/npc/snowleopard/male/foot_fr.vox b/assets/voxygen/voxel/npc/snowleopard/male/foot_fr.vox new file mode 100644 index 0000000000..454f843c39 Binary files /dev/null and b/assets/voxygen/voxel/npc/snowleopard/male/foot_fr.vox differ diff --git a/assets/voxygen/voxel/npc/snowleopard/male/head.vox b/assets/voxygen/voxel/npc/snowleopard/male/head.vox new file mode 100644 index 0000000000..f11ee32bc1 Binary files /dev/null and b/assets/voxygen/voxel/npc/snowleopard/male/head.vox differ diff --git a/assets/voxygen/voxel/npc/snowleopard/male/jaw.vox b/assets/voxygen/voxel/npc/snowleopard/male/jaw.vox new file mode 100644 index 0000000000..9d4bb41d1d Binary files /dev/null and b/assets/voxygen/voxel/npc/snowleopard/male/jaw.vox differ diff --git a/assets/voxygen/voxel/npc/snowleopard/male/leg_br.vox b/assets/voxygen/voxel/npc/snowleopard/male/leg_br.vox new file mode 100644 index 0000000000..a79e0b96dc Binary files /dev/null and b/assets/voxygen/voxel/npc/snowleopard/male/leg_br.vox differ diff --git a/assets/voxygen/voxel/npc/snowleopard/male/leg_fr.vox b/assets/voxygen/voxel/npc/snowleopard/male/leg_fr.vox new file mode 100644 index 0000000000..4421a581db Binary files /dev/null and b/assets/voxygen/voxel/npc/snowleopard/male/leg_fr.vox differ diff --git a/assets/voxygen/voxel/npc/snowleopard/male/neck.vox b/assets/voxygen/voxel/npc/snowleopard/male/neck.vox new file mode 100644 index 0000000000..e72dacb687 Binary files /dev/null and b/assets/voxygen/voxel/npc/snowleopard/male/neck.vox differ diff --git a/assets/voxygen/voxel/npc/snowleopard/male/tail.vox b/assets/voxygen/voxel/npc/snowleopard/male/tail.vox new file mode 100644 index 0000000000..4e15d2195c Binary files /dev/null and b/assets/voxygen/voxel/npc/snowleopard/male/tail.vox differ diff --git a/assets/voxygen/voxel/npc/snowleopard/male/torso_back.vox b/assets/voxygen/voxel/npc/snowleopard/male/torso_back.vox new file mode 100644 index 0000000000..f150fcded9 Binary files /dev/null and b/assets/voxygen/voxel/npc/snowleopard/male/torso_back.vox differ diff --git a/assets/voxygen/voxel/npc/snowleopard/male/torso_front.vox b/assets/voxygen/voxel/npc/snowleopard/male/torso_front.vox new file mode 100644 index 0000000000..f767c03f2f Binary files /dev/null and b/assets/voxygen/voxel/npc/snowleopard/male/torso_front.vox differ diff --git a/assets/voxygen/voxel/npc/squirrel/male/chest.vox b/assets/voxygen/voxel/npc/squirrel/male/chest.vox index 6866a6c39b..14b93b223e 100644 Binary files a/assets/voxygen/voxel/npc/squirrel/male/chest.vox and b/assets/voxygen/voxel/npc/squirrel/male/chest.vox differ diff --git a/assets/voxygen/voxel/npc/squirrel/male/foot_br.vox b/assets/voxygen/voxel/npc/squirrel/male/foot_br.vox index b4cda48cb7..726b4a8d7d 100644 Binary files a/assets/voxygen/voxel/npc/squirrel/male/foot_br.vox and b/assets/voxygen/voxel/npc/squirrel/male/foot_br.vox differ diff --git a/assets/voxygen/voxel/npc/squirrel/male/foot_fr.vox b/assets/voxygen/voxel/npc/squirrel/male/foot_fr.vox index 8bfc3ad83e..b7d4708809 100644 Binary files a/assets/voxygen/voxel/npc/squirrel/male/foot_fr.vox and b/assets/voxygen/voxel/npc/squirrel/male/foot_fr.vox differ diff --git a/assets/voxygen/voxel/npc/squirrel/male/head.vox b/assets/voxygen/voxel/npc/squirrel/male/head.vox index f466797075..1948ec16b4 100644 Binary files a/assets/voxygen/voxel/npc/squirrel/male/head.vox and b/assets/voxygen/voxel/npc/squirrel/male/head.vox differ diff --git a/assets/voxygen/voxel/npc/squirrel/male/tail.vox b/assets/voxygen/voxel/npc/squirrel/male/tail.vox index 1efddbecbe..720bebed0a 100644 Binary files a/assets/voxygen/voxel/npc/squirrel/male/tail.vox and b/assets/voxygen/voxel/npc/squirrel/male/tail.vox differ diff --git a/assets/voxygen/voxel/npc/yale/male/chest_back.vox b/assets/voxygen/voxel/npc/yale/male/chest_back.vox new file mode 100644 index 0000000000..38ae9baf48 Binary files /dev/null and b/assets/voxygen/voxel/npc/yale/male/chest_back.vox differ diff --git a/assets/voxygen/voxel/npc/yale/male/chest_front.vox b/assets/voxygen/voxel/npc/yale/male/chest_front.vox new file mode 100644 index 0000000000..7cc6901eee Binary files /dev/null and b/assets/voxygen/voxel/npc/yale/male/chest_front.vox differ diff --git a/assets/voxygen/voxel/npc/yale/male/foot_r.vox b/assets/voxygen/voxel/npc/yale/male/foot_r.vox new file mode 100644 index 0000000000..96d4576488 Binary files /dev/null and b/assets/voxygen/voxel/npc/yale/male/foot_r.vox differ diff --git a/assets/voxygen/voxel/npc/yale/male/hand_r.vox b/assets/voxygen/voxel/npc/yale/male/hand_r.vox new file mode 100644 index 0000000000..46e88bf482 Binary files /dev/null and b/assets/voxygen/voxel/npc/yale/male/hand_r.vox differ diff --git a/assets/voxygen/voxel/npc/yale/male/head.vox b/assets/voxygen/voxel/npc/yale/male/head.vox new file mode 100644 index 0000000000..751465a7d4 Binary files /dev/null and b/assets/voxygen/voxel/npc/yale/male/head.vox differ diff --git a/assets/voxygen/voxel/npc/yale/male/jaw.vox b/assets/voxygen/voxel/npc/yale/male/jaw.vox new file mode 100644 index 0000000000..2579e3bd42 Binary files /dev/null and b/assets/voxygen/voxel/npc/yale/male/jaw.vox differ diff --git a/assets/voxygen/voxel/npc/yale/male/leg_r.vox b/assets/voxygen/voxel/npc/yale/male/leg_r.vox new file mode 100644 index 0000000000..1ac9fbe4bb Binary files /dev/null and b/assets/voxygen/voxel/npc/yale/male/leg_r.vox differ diff --git a/assets/voxygen/voxel/npc/yale/male/neck.vox b/assets/voxygen/voxel/npc/yale/male/neck.vox new file mode 100644 index 0000000000..063fbbffd3 Binary files /dev/null and b/assets/voxygen/voxel/npc/yale/male/neck.vox differ diff --git a/assets/voxygen/voxel/npc/yale/male/tail_back.vox b/assets/voxygen/voxel/npc/yale/male/tail_back.vox new file mode 100644 index 0000000000..53ec4f7f72 Binary files /dev/null and b/assets/voxygen/voxel/npc/yale/male/tail_back.vox differ diff --git a/assets/voxygen/voxel/npc/yale/male/tail_front.vox b/assets/voxygen/voxel/npc/yale/male/tail_front.vox new file mode 100644 index 0000000000..85f1cc3dc0 Binary files /dev/null and b/assets/voxygen/voxel/npc/yale/male/tail_front.vox differ diff --git a/assets/voxygen/voxel/quadruped_medium_central_manifest.ron b/assets/voxygen/voxel/quadruped_medium_central_manifest.ron index 911f175dec..72e6b57a67 100644 --- a/assets/voxygen/voxel/quadruped_medium_central_manifest.ron +++ b/assets/voxygen/voxel/quadruped_medium_central_manifest.ron @@ -1619,4 +1619,184 @@ central: ("npc.bear.male.tail"), ), ), + (Dreadhorn, Male): ( + head: ( + offset: (-15.0, 0.0, -14.0), + central: ("npc.dreadhorn.male.head"), + ), + neck: ( + offset: (-6.0, -3.5, -9.5), + central: ("npc.dreadhorn.male.neck"), + ), + jaw: ( + offset: (-3.0, 0.0, -8.0), + central: ("npc.dreadhorn.male.jaw"), + ), + torso_front: ( + offset: (-9.0, -14.0, -13.5), + central: ("npc.dreadhorn.male.torso_front"), + ), + torso_back: ( + offset: (-9.0, -7.0, -10.5), + central: ("npc.dreadhorn.male.torso_back"), + ), + ears: ( + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), + ), + tail: ( + offset: (-2.5, -9.0, -13.0), + central: ("npc.dreadhorn.male.tail"), + ), + ), + (Dreadhorn, Female): ( + head: ( + offset: (-15.0, 0.0, -14.0), + central: ("npc.dreadhorn.male.head"), + ), + neck: ( + offset: (-6.0, -3.5, -9.5), + central: ("npc.dreadhorn.male.neck"), + ), + jaw: ( + offset: (-3.0, 0.0, -8.0), + central: ("npc.dreadhorn.male.jaw"), + ), + torso_front: ( + offset: (-9.0, -14.0, -13.5), + central: ("npc.dreadhorn.male.torso_front"), + ), + torso_back: ( + offset: (-9.0, -7.0, -10.5), + central: ("npc.dreadhorn.male.torso_back"), + ), + ears: ( + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), + ), + tail: ( + offset: (-2.5, -9.0, -13.0), + central: ("npc.dreadhorn.male.tail"), + ), + ), + (Moose, Male): ( + head: ( + offset: (-14.0, 0.0, -11.0), + central: ("npc.moose.male.head"), + ), + neck: ( + offset: (-6.0, -5.5, -7.0), + central: ("npc.moose.male.neck"), + ), + jaw: ( + offset: (-2.0, 0.0, -2.0), + central: ("npc.moose.male.jaw"), + ), + torso_front: ( + offset: (-6.0, -11.0, -8.5), + central: ("npc.moose.male.torso_front"), + ), + torso_back: ( + offset: (-6.0, -14.0, -7.5), + central: ("npc.moose.male.torso_back"), + ), + ears: ( + offset: (-7.0, -1.0, 0.0), + central: ("npc.moose.male.ears"), + ), + tail: ( + offset: (-2.0, -4.0, -6.0), + central: ("npc.moose.male.tail"), + ), + ), + (Moose, Female): ( + head: ( + offset: (-5.0, 0.0, -6.5), + central: ("npc.moose.female.head"), + ), + neck: ( + offset: (-6.0, -5.5, -7.0), + central: ("npc.moose.female.neck"), + ), + jaw: ( + offset: (-2.0, 0.0, -2.0), + central: ("npc.moose.female.jaw"), + ), + torso_front: ( + offset: (-6.0, -11.0, -8.5), + central: ("npc.moose.female.torso_front"), + ), + torso_back: ( + offset: (-6.0, -14.0, -7.5), + central: ("npc.moose.female.torso_back"), + ), + ears: ( + offset: (-7.0, -1.0, 0.0), + central: ("npc.moose.female.ears"), + ), + tail: ( + offset: (-2.0, -4.0, -6.0), + central: ("npc.moose.female.tail"), + ), + ), + (Snowleopard, Male): ( + head: ( + offset: (-4.5, -1.0, -4.0), + central: ("npc.snowleopard.male.head"), + ), + neck: ( + offset: (-4.5, -2.0, -4.5), + central: ("npc.snowleopard.male.neck"), + ), + jaw: ( + offset: (-2.5, 0.0, -1.0), + central: ("npc.snowleopard.male.jaw"), + ), + torso_front: ( + offset: (-5.5, -12.0, -6.0), + central: ("npc.snowleopard.male.torso_front"), + ), + torso_back: ( + offset: (-5.5, -11.0, -5.0), + central: ("npc.snowleopard.male.torso_back"), + ), + ears: ( + offset: (-4.5, -1.0, 0.0), + central: ("npc.snowleopard.male.ears"), + ), + tail: ( + offset: (-2.5, -20.0, -9.0), + central: ("npc.snowleopard.male.tail"), + ), + ), + (Snowleopard, Female): ( + head: ( + offset: (-4.5, -1.0, -4.0), + central: ("npc.snowleopard.male.head"), + ), + neck: ( + offset: (-4.5, -2.0, -4.5), + central: ("npc.snowleopard.male.neck"), + ), + jaw: ( + offset: (-2.5, 0.0, -1.0), + central: ("npc.snowleopard.male.jaw"), + ), + torso_front: ( + offset: (-5.5, -12.0, -6.0), + central: ("npc.snowleopard.male.torso_front"), + ), + torso_back: ( + offset: (-5.5, -11.0, -5.0), + central: ("npc.snowleopard.male.torso_back"), + ), + ears: ( + offset: (-4.5, -1.0, 0.0), + central: ("npc.snowleopard.male.ears"), + ), + tail: ( + offset: (-2.5, -20.0, -9.0), + central: ("npc.snowleopard.male.tail"), + ), + ), }) diff --git a/assets/voxygen/voxel/quadruped_medium_lateral_manifest.ron b/assets/voxygen/voxel/quadruped_medium_lateral_manifest.ron index 888954e321..31d36969bb 100644 --- a/assets/voxygen/voxel/quadruped_medium_lateral_manifest.ron +++ b/assets/voxygen/voxel/quadruped_medium_lateral_manifest.ron @@ -1835,4 +1835,208 @@ lateral: ("npc.bear.male.foot_br"), ), ), + (Dreadhorn, Male): ( + leg_fl: ( + offset: (-3.5, -5.0, -6.0), + lateral: ("npc.dreadhorn.male.leg_fr"), + ), + leg_fr: ( + offset: (-3.5, -5.0, -6.0), + lateral: ("npc.dreadhorn.male.leg_fr"), + ), + leg_bl: ( + offset: (-3.0, -5.0, -4.5), + lateral: ("npc.dreadhorn.male.leg_br"), + ), + leg_br: ( + offset: (-3.0, -5.0, -4.5), + lateral: ("npc.dreadhorn.male.leg_br"), + ), + foot_fl: ( + offset: (-3.0, -5.5, -10.0), + lateral: ("npc.dreadhorn.male.foot_fr"), + ), + foot_fr: ( + offset: (-3.0, -5.5, -10.0), + lateral: ("npc.dreadhorn.male.foot_fr"), + ), + foot_bl: ( + offset: (-2.5, -4.5, -8.0), + lateral: ("npc.dreadhorn.male.foot_br"), + ), + foot_br: ( + offset: (-2.5, -4.5, -8.0), + lateral: ("npc.dreadhorn.male.foot_br"), + ), + ), + (Dreadhorn, Female): ( + leg_fl: ( + offset: (-3.5, -5.0, -6.0), + lateral: ("npc.dreadhorn.male.leg_fr"), + ), + leg_fr: ( + offset: (-3.5, -5.0, -6.0), + lateral: ("npc.dreadhorn.male.leg_fr"), + ), + leg_bl: ( + offset: (-3.0, -5.0, -4.5), + lateral: ("npc.dreadhorn.male.leg_br"), + ), + leg_br: ( + offset: (-3.0, -5.0, -4.5), + lateral: ("npc.dreadhorn.male.leg_br"), + ), + foot_fl: ( + offset: (-3.0, -5.5, -10.0), + lateral: ("npc.dreadhorn.male.foot_fr"), + ), + foot_fr: ( + offset: (-3.0, -5.5, -10.0), + lateral: ("npc.dreadhorn.male.foot_fr"), + ), + foot_bl: ( + offset: (-2.5, -4.5, -8.0), + lateral: ("npc.dreadhorn.male.foot_br"), + ), + foot_br: ( + offset: (-2.5, -4.5, -8.0), + lateral: ("npc.dreadhorn.male.foot_br"), + ), + ), + (Moose, Male): ( + leg_fl: ( + offset: (-2.5, -4.0, -9.0), + lateral: ("npc.moose.male.leg_fr"), + ), + leg_fr: ( + offset: (-2.5, -4.0, -9.0), + lateral: ("npc.moose.male.leg_fr"), + ), + leg_bl: ( + offset: (-2.5, -4.0, -6.5), + lateral: ("npc.moose.male.leg_br"), + ), + leg_br: ( + offset: (-2.5, -4.0, -6.5), + lateral: ("npc.moose.male.leg_br"), + ), + foot_fl: ( + offset: (-1.5, -3.5, -11.0), + lateral: ("npc.moose.male.foot_fr"), + ), + foot_fr: ( + offset: (-1.5, -3.5, -11.0), + lateral: ("npc.moose.male.foot_fr"), + ), + foot_bl: ( + offset: (-1.5, -3.0, -10.0), + lateral: ("npc.moose.male.foot_br"), + ), + foot_br: ( + offset: (-1.5, -3.0, -10.0), + lateral: ("npc.moose.male.foot_br"), + ), + ), + (Moose, Female): ( + leg_fl: ( + offset: (-2.5, -4.0, -9.0), + lateral: ("npc.moose.female.leg_fr"), + ), + leg_fr: ( + offset: (-2.5, -4.0, -9.0), + lateral: ("npc.moose.female.leg_fr"), + ), + leg_bl: ( + offset: (-2.5, -4.0, -6.5), + lateral: ("npc.moose.female.leg_br"), + ), + leg_br: ( + offset: (-2.5, -4.0, -6.5), + lateral: ("npc.moose.female.leg_br"), + ), + foot_fl: ( + offset: (-1.5, -3.5, -11.0), + lateral: ("npc.moose.female.foot_fr"), + ), + foot_fr: ( + offset: (-1.5, -3.5, -11.0), + lateral: ("npc.moose.female.foot_fr"), + ), + foot_bl: ( + offset: (-1.5, -3.0, -10.0), + lateral: ("npc.moose.female.foot_br"), + ), + foot_br: ( + offset: (-1.5, -3.0, -10.0), + lateral: ("npc.moose.female.foot_br"), + ), + ), + (Snowleopard, Male): ( + leg_fl: ( + offset: (-2.0, -3.0, -4.5), + lateral: ("npc.snowleopard.male.leg_fr"), + ), + leg_fr: ( + offset: (-2.0, -3.0, -4.5), + lateral: ("npc.snowleopard.male.leg_fr"), + ), + leg_bl: ( + offset: (-2.0, -3.0, -4.5), + lateral: ("npc.snowleopard.male.leg_br"), + ), + leg_br: ( + offset: (-2.0, -3.0, -4.5), + lateral: ("npc.snowleopard.male.leg_br"), + ), + foot_fl: ( + offset: (-2.5, -3.5, -6.0), + lateral: ("npc.snowleopard.male.foot_fr"), + ), + foot_fr: ( + offset: (-2.5, -3.5, -6.0), + lateral: ("npc.snowleopard.male.foot_fr"), + ), + foot_bl: ( + offset: (-2.5, -3.5, -6.0), + lateral: ("npc.snowleopard.male.foot_br"), + ), + foot_br: ( + offset: (-2.5, -3.5, -6.0), + lateral: ("npc.snowleopard.male.foot_br"), + ), + ), + (Snowleopard, Female): ( + leg_fl: ( + offset: (-2.0, -3.0, -4.5), + lateral: ("npc.snowleopard.male.leg_fr"), + ), + leg_fr: ( + offset: (-2.0, -3.0, -4.5), + lateral: ("npc.snowleopard.male.leg_fr"), + ), + leg_bl: ( + offset: (-2.0, -3.0, -4.5), + lateral: ("npc.snowleopard.male.leg_br"), + ), + leg_br: ( + offset: (-2.0, -3.0, -4.5), + lateral: ("npc.snowleopard.male.leg_br"), + ), + foot_fl: ( + offset: (-2.5, -3.5, -6.0), + lateral: ("npc.snowleopard.male.foot_fr"), + ), + foot_fr: ( + offset: (-2.5, -3.5, -6.0), + lateral: ("npc.snowleopard.male.foot_fr"), + ), + foot_bl: ( + offset: (-2.5, -3.5, -6.0), + lateral: ("npc.snowleopard.male.foot_br"), + ), + foot_br: ( + offset: (-2.5, -3.5, -6.0), + lateral: ("npc.snowleopard.male.foot_br"), + ), + ), }) diff --git a/assets/voxygen/voxel/quadruped_small_central_manifest.ron b/assets/voxygen/voxel/quadruped_small_central_manifest.ron index 823d4eee11..dd13227ab7 100644 --- a/assets/voxygen/voxel/quadruped_small_central_manifest.ron +++ b/assets/voxygen/voxel/quadruped_small_central_manifest.ron @@ -27,7 +27,6 @@ central: ("npc.pig.male.tail"), ), ), - (Fox, Male):( head: ( offset: (-4.5, 0.0, -3.5), @@ -42,7 +41,6 @@ central: ("npc.fox.male.tail"), ), ), - (Fox, Female):( head: ( offset: (-4.5, 0.0, -3.5), @@ -57,7 +55,6 @@ central: ("npc.fox.female.tail"), ), ), - (Sheep, Male):( head: ( offset: (-5.0, 0.0, -5.0), @@ -72,7 +69,6 @@ central: ("npc.sheep.male.tail"), ), ), - (Sheep, Female):( head: ( offset: (-5.0, 0.0, -3.5), @@ -213,7 +209,6 @@ central: ("armor.empty"), ), ), - (Batfox, Female):( head: ( offset: (-7.5, 0.0, -3.0), @@ -228,7 +223,6 @@ central: ("armor.empty"), ), ), - (Raccoon, Male):( head: ( offset: (-5.0, 0.0, -4.0), @@ -243,7 +237,6 @@ central: ("npc.raccoon.male.tail"), ), ), - (Raccoon, Female):( head: ( offset: (-5.0, 0.0, -4.0), @@ -258,7 +251,6 @@ central: ("npc.raccoon.male.tail"), ), ), - (Quokka, Male):( head: ( offset: (-4.5, 0.0, -3.5), @@ -273,7 +265,6 @@ central: ("npc.quokka.male.tail"), ), ), - (Quokka, Female):( head: ( offset: (-4.5, 0.0, -3.5), @@ -288,7 +279,6 @@ central: ("npc.quokka.male.tail"), ), ), - (Dodarock, Male):( head: ( offset: (-4.5, 0.0, -2.5), @@ -303,7 +293,6 @@ central: ("armor.empty"), ), ), - (Dodarock, Female):( head: ( offset: (-4.5, 0.0, -2.5), @@ -317,7 +306,6 @@ offset: (-1.5, -7.5, -2.5), central: ("armor.empty"), ), - ), (Holladon, Male):( head: ( @@ -333,7 +321,6 @@ central: ("armor.empty"), ), ), - (Holladon, Female):( head: ( offset: (-3.5, 0.0, -4.0), @@ -348,7 +335,6 @@ central: ("armor.empty"), ), ), - (Hyena, Male):( head: ( offset: (-4.0, 0.0, -4.0), @@ -363,7 +349,6 @@ central: ("npc.hyena.male.tail"), ), ), - (Hyena, Female):( head: ( offset: (-4.0, 0.0, -4.0), @@ -742,4 +727,32 @@ central: ("npc.dog.female.tail"), ), ), + (Goat, Male):( + head: ( + offset: (-6.0, 0.0, -5.5), + central: ("npc.goat.male.head"), + ), + chest: ( + offset: (-4.0, -5.5, -3.5), + central: ("npc.goat.male.chest"), + ), + tail: ( + offset: (-1.0, -2.0, -1.5), + central: ("npc.goat.male.tail"), + ), + ), + (Goat, Female):( + head: ( + offset: (-6.0, 0.0, -5.5), + central: ("npc.goat.male.head"), + ), + chest: ( + offset: (-4.0, -5.5, -3.5), + central: ("npc.goat.male.chest"), + ), + tail: ( + offset: (-1.0, -2.0, -1.5), + central: ("npc.goat.male.tail"), + ), + ), }) \ No newline at end of file diff --git a/assets/voxygen/voxel/quadruped_small_lateral_manifest.ron b/assets/voxygen/voxel/quadruped_small_lateral_manifest.ron index 41ec808ea5..f11040990d 100644 --- a/assets/voxygen/voxel/quadruped_small_lateral_manifest.ron +++ b/assets/voxygen/voxel/quadruped_small_lateral_manifest.ron @@ -35,7 +35,6 @@ lateral: ("npc.pig.male.foot_br"), ), ), - (Fox, Male): ( left_front: ( offset: (-1.0, -2.0, -2.5), @@ -72,7 +71,6 @@ lateral: ("npc.fox.female.foot_br"), ), ), - (Sheep, Male): ( left_front: ( offset: (-1.0, -1.5, -5.0), @@ -91,7 +89,6 @@ lateral: ("npc.sheep.male.foot_br"), ), ), - (Sheep, Female): ( left_front: ( offset: (-1.0, -1.5, -5.0), @@ -110,7 +107,6 @@ lateral: ("npc.sheep.female.foot_br"), ), ), - (Boar, Male): ( left_front: ( offset: (-1.5, -2.5, -4.0), @@ -129,7 +125,6 @@ lateral: ("npc.boar.male.foot_br"), ), ), - (Boar, Female): ( left_front: ( offset: (-1.5, -2.5, -4.0), @@ -166,7 +161,6 @@ lateral: ("npc.jackalope.male.foot_br"), ), ), - (Jackalope, Female): ( left_front: ( offset: (-1.0, -2.0, -4.0), @@ -203,7 +197,6 @@ lateral: ("npc.skunk.male.foot_br"), ), ), - (Skunk, Female): ( left_front: ( offset: (-1.5, -2.0, -4.5), @@ -241,7 +234,6 @@ lateral: ("npc.cat.male.foot_br"), ), ), - (Cat, Female): ( left_front: ( offset: (-1.0, -1.5, -5.0), @@ -279,7 +271,6 @@ lateral: ("npc.batfox.male.foot_br"), ), ), - (Batfox, Female): ( left_front: ( offset: (-2.0, -2.5, -5.0), @@ -297,7 +288,6 @@ offset: (-1.5, -2.0, -5.0), lateral: ("npc.batfox.male.foot_br"), ), - ), (Raccoon, Male): ( left_front: ( @@ -317,7 +307,6 @@ lateral: ("npc.raccoon.male.foot_br"), ), ), - (Raccoon, Female): ( left_front: ( offset: (-1.5, -2.0, -5.5), @@ -354,7 +343,6 @@ lateral: ("npc.quokka.male.foot_br"), ), ), - (Quokka, Female): ( left_front: ( offset: (-1.0, -1.5, -5.5), @@ -391,7 +379,6 @@ lateral: ("npc.dodarock.male.foot_br"), ), ), - (Dodarock, Female): ( left_front: ( offset: (-2.0, -3.0, -6.5), @@ -428,7 +415,6 @@ lateral: ("npc.holladon.male.foot_br"), ), ), - (Holladon, Female): ( left_front: ( offset: (-1.0, -2.5, -6.0), @@ -465,7 +451,6 @@ lateral: ("npc.hyena.male.foot_br"), ), ), - (Hyena, Female): ( left_front: ( offset: (-1.5, -2.0, -5.0), @@ -538,7 +523,6 @@ lateral: ("npc.truffler.male.foot_br"), ), ), - (Truffler, Female): ( left_front: ( offset: (-2.5, -3.0, -6.5), @@ -953,4 +937,40 @@ lateral: ("npc.dog.female.foot_br"), ), ), + (Goat, Male): ( + left_front: ( + offset: (-1.0, -2.0, -4.0), + lateral: ("npc.goat.male.foot_fr"), + ), + right_front: ( + offset: (-1.0, -2.0, -4.0), + lateral: ("npc.goat.male.foot_fr"), + ), + left_back: ( + offset: (-1.0, -1.5, -5.5), + lateral: ("npc.goat.male.foot_br"), + ), + right_back: ( + offset: (-1.0, -1.5, -5.5), + lateral: ("npc.goat.male.foot_br"), + ), + ), + (Goat, Female): ( + left_front: ( + offset: (-1.0, -2.0, -4.0), + lateral: ("npc.goat.male.foot_fr"), + ), + right_front: ( + offset: (-1.0, -2.0, -4.0), + lateral: ("npc.goat.male.foot_fr"), + ), + left_back: ( + offset: (-1.0, -1.5, -5.5), + lateral: ("npc.goat.male.foot_br"), + ), + right_back: ( + offset: (-1.0, -1.5, -5.5), + lateral: ("npc.goat.male.foot_br"), + ), + ), }) \ No newline at end of file diff --git a/assets/voxygen/voxel/theropod_central_manifest.ron b/assets/voxygen/voxel/theropod_central_manifest.ron index 39f62e4832..341c6d447d 100644 --- a/assets/voxygen/voxel/theropod_central_manifest.ron +++ b/assets/voxygen/voxel/theropod_central_manifest.ron @@ -359,4 +359,124 @@ central: ("npc.sunlizard.male.tail_back"), ), ), + (Yale, Male): ( + head: ( + offset: (-9.0, -11.0, -13.5), + central: ("npc.yale.male.head"), + ), + jaw: ( + offset: (-2.0, 0.0, -8.0), + central: ("npc.yale.male.jaw"), + ), + neck: ( + offset: (-3.0, 0.0, -7.5), + central: ("npc.yale.male.neck"), + ), + chest_front: ( + offset: (-5.0, -4.0, -7.5), + central: ("npc.yale.male.chest_front"), + ), + chest_back: ( + offset: (-6.0, -11.0, -6.5), + central: ("npc.yale.male.chest_back"), + ), + tail_front: ( + offset: (-3.0, -6.0, -4.5), + central: ("npc.yale.male.tail_front"), + ), + tail_back: ( + offset: (-5.0, -16.0, -7.0), + central: ("npc.yale.male.tail_back"), + ), + ), + (Yale, Female): ( + head: ( + offset: (-9.0, -11.0, -13.5), + central: ("npc.yale.male.head"), + ), + jaw: ( + offset: (-2.0, 0.0, -8.0), + central: ("npc.yale.male.jaw"), + ), + neck: ( + offset: (-3.0, 0.0, -7.5), + central: ("npc.yale.male.neck"), + ), + chest_front: ( + offset: (-5.0, -4.0, -7.5), + central: ("npc.yale.male.chest_front"), + ), + chest_back: ( + offset: (-6.0, -11.0, -6.5), + central: ("npc.yale.male.chest_back"), + ), + tail_front: ( + offset: (-3.0, -6.0, -4.5), + central: ("npc.yale.male.tail_front"), + ), + tail_back: ( + offset: (-5.0, -16.0, -7.0), + central: ("npc.yale.male.tail_back"), + ), + ), + (Ntouka, Male): ( + head: ( + offset: (-11.5, -8.0, -5.0), + central: ("npc.ntouka.male.head"), + ), + jaw: ( + offset: (-4.5, 0.0, -3.0), + central: ("npc.ntouka.male.jaw"), + ), + neck: ( + offset: (-3.5, 0.0, -4.5), + central: ("npc.ntouka.male.neck"), + ), + chest_front: ( + offset: (-5.5, -5.5, -7.5), + central: ("npc.ntouka.male.chest_front"), + ), + chest_back: ( + offset: (-6.5, -11.0, -8.5), + central: ("npc.ntouka.male.chest_back"), + ), + tail_front: ( + offset: (-3.5, -10.0, -4.0), + central: ("npc.ntouka.male.tail_front"), + ), + tail_back: ( + offset: (-9.5, -16.0, -2.0), + central: ("npc.ntouka.male.tail_back"), + ), + ), + (Ntouka, Female): ( + head: ( + offset: (-11.5, -8.0, -5.0), + central: ("npc.ntouka.male.head"), + ), + jaw: ( + offset: (-4.5, 0.0, -3.0), + central: ("npc.ntouka.male.jaw"), + ), + neck: ( + offset: (-3.5, 0.0, -4.5), + central: ("npc.ntouka.male.neck"), + ), + chest_front: ( + offset: (-5.5, -5.5, -7.5), + central: ("npc.ntouka.male.chest_front"), + ), + chest_back: ( + offset: (-6.5, -11.0, -8.5), + central: ("npc.ntouka.male.chest_back"), + ), + tail_front: ( + offset: (-3.5, -10.0, -4.0), + central: ("npc.ntouka.male.tail_front"), + ), + tail_back: ( + offset: (-9.5, -16.0, -2.0), + central: ("npc.ntouka.male.tail_back"), + ), + ), }) diff --git a/assets/voxygen/voxel/theropod_lateral_manifest.ron b/assets/voxygen/voxel/theropod_lateral_manifest.ron index e94b915411..7036d052c7 100644 --- a/assets/voxygen/voxel/theropod_lateral_manifest.ron +++ b/assets/voxygen/voxel/theropod_lateral_manifest.ron @@ -311,4 +311,108 @@ lateral: ("npc.sunlizard.male.foot_r"), ), ), + (Yale, Male): ( + hand_l: ( + offset: (-5.0, -2.0, -9.0), + lateral: ("npc.yale.male.hand_r"), + ), + hand_r: ( + offset: (0.0, -2.0, -9.0), + lateral: ("npc.yale.male.hand_r"), + ), + leg_l: ( + offset: (-5.0, -4.5, -4.5), + lateral: ("npc.yale.male.leg_r"), + ), + leg_r: ( + offset: (0.0, -4.5, -4.5), + lateral: ("npc.yale.male.leg_r"), + ), + foot_l: ( + offset: (-2.5, -5.5, -12.0), + lateral: ("npc.yale.male.foot_r"), + ), + foot_r: ( + offset: (-1.5, -5.5, -12.0), + lateral: ("npc.yale.male.foot_r"), + ), + ), + (Yale, Female): ( + hand_l: ( + offset: (-5.0, -2.0, -9.0), + lateral: ("npc.yale.male.hand_r"), + ), + hand_r: ( + offset: (0.0, -2.0, -9.0), + lateral: ("npc.yale.male.hand_r"), + ), + leg_l: ( + offset: (-5.0, -4.5, -4.5), + lateral: ("npc.yale.male.leg_r"), + ), + leg_r: ( + offset: (0.0, -4.5, -4.5), + lateral: ("npc.yale.male.leg_r"), + ), + foot_l: ( + offset: (-2.5, -5.5, -12.0), + lateral: ("npc.yale.male.foot_r"), + ), + foot_r: ( + offset: (-1.5, -5.5, -12.0), + lateral: ("npc.yale.male.foot_r"), + ), + ), + (Ntouka, Male): ( + hand_l: ( + offset: (-4.0, -2.5, -8.0), + lateral: ("npc.ntouka.male.hand_r"), + ), + hand_r: ( + offset: (0.0, -2.5, -8.0), + lateral: ("npc.ntouka.male.hand_r"), + ), + leg_l: ( + offset: (-5.0, -4.5, -4.5), + lateral: ("npc.ntouka.male.leg_r"), + ), + leg_r: ( + offset: (0.0, -4.5, -4.5), + lateral: ("npc.ntouka.male.leg_r"), + ), + foot_l: ( + offset: (-6.5, -6.5, -8.0), + lateral: ("npc.ntouka.male.foot_r"), + ), + foot_r: ( + offset: (-3.5, -6.5, -8.0), + lateral: ("npc.ntouka.male.foot_r"), + ), + ), + (Ntouka, Female): ( + hand_l: ( + offset: (-4.0, -2.5, -8.0), + lateral: ("npc.ntouka.male.hand_r"), + ), + hand_r: ( + offset: (0.0, -2.5, -8.0), + lateral: ("npc.ntouka.male.hand_r"), + ), + leg_l: ( + offset: (-5.0, -4.5, -4.5), + lateral: ("npc.ntouka.male.leg_r"), + ), + leg_r: ( + offset: (0.0, -4.5, -4.5), + lateral: ("npc.ntouka.male.leg_r"), + ), + foot_l: ( + offset: (-6.5, -6.5, -8.0), + lateral: ("npc.ntouka.male.foot_r"), + ), + foot_r: ( + offset: (-3.5, -6.5, -8.0), + lateral: ("npc.ntouka.male.foot_r"), + ), + ), }) diff --git a/assets/voxygen/voxel/weapon/axe/2haxe_oni_blue.vox b/assets/voxygen/voxel/weapon/axe/2haxe_oni_blue.vox new file mode 100644 index 0000000000..97cfed50a3 Binary files /dev/null and b/assets/voxygen/voxel/weapon/axe/2haxe_oni_blue.vox differ diff --git a/assets/voxygen/voxel/weapon/hammer/2hhammer_oni_red.vox b/assets/voxygen/voxel/weapon/hammer/2hhammer_oni_red.vox new file mode 100644 index 0000000000..b801b97ca9 Binary files /dev/null and b/assets/voxygen/voxel/weapon/hammer/2hhammer_oni_red.vox differ diff --git a/common/src/comp/agent.rs b/common/src/comp/agent.rs index 67a870b60b..7d6c5a57df 100644 --- a/common/src/comp/agent.rs +++ b/common/src/comp/agent.rs @@ -130,6 +130,7 @@ impl<'a> From<&'a Body> for Psyche { quadruped_small::Species::Truffler => 0.8, quadruped_small::Species::Frog => 0.4, quadruped_small::Species::Hare => 0.2, + quadruped_small::Species::Goat => 0.5, _ => 0.0, }, Body::QuadrupedMedium(quadruped_medium) => match quadruped_medium.species { @@ -146,6 +147,8 @@ impl<'a> From<&'a Body> for Psyche { quadruped_medium::Species::Horse => 0.7, quadruped_medium::Species::Cattle => 0.7, quadruped_medium::Species::Darkhound => 0.9, + quadruped_medium::Species::Dreadhorn => 0.8, + quadruped_medium::Species::Snowleopard => 0.7, _ => 0.5, }, Body::QuadrupedLow(quadruped_low) => match quadruped_low.species { diff --git a/common/src/comp/body.rs b/common/src/comp/body.rs index f34d5f93b6..bb331f3a54 100644 --- a/common/src/comp/body.rs +++ b/common/src/comp/body.rs @@ -162,7 +162,7 @@ impl Body { (humanoid::Species::Danari, humanoid::BodyType::Female) => 0.75, _ => 0.75, }, - Body::QuadrupedSmall(_) => 0.7, + Body::QuadrupedSmall(_) => 0.6, Body::QuadrupedMedium(body) => match body.species { quadruped_medium::Species::Grolgar => 2.0, quadruped_medium::Species::Tarasque => 2.0, @@ -197,6 +197,8 @@ impl Body { theropod::Species::Woodraptor => 1.5, theropod::Species::Archaeos => 3.5, theropod::Species::Odonto => 3.5, + theropod::Species::Yale => 0.8, + theropod::Species::Ntouka => 3.0, _ => 1.8, }, Body::BirdMedium(_) => 1.0, @@ -247,6 +249,8 @@ impl Body { quadruped_medium::Species::Saber => 2.0, quadruped_medium::Species::Catoblepas => 2.9, quadruped_medium::Species::Barghest => 2.5, + quadruped_medium::Species::Dreadhorn => 2.5, + quadruped_medium::Species::Moose => 2.5, _ => 1.6, }, Body::QuadrupedLow(body) => match body.species { @@ -261,6 +265,7 @@ impl Body { theropod::Species::Sandraptor => 2.6, theropod::Species::Woodraptor => 2.6, theropod::Species::Sunlizard => 2.5, + theropod::Species::Yale => 3.0, _ => 8.0, }, Body::BirdMedium(body) => match body.species { @@ -343,6 +348,8 @@ impl Body { quadruped_medium::Species::Yak => 1000, quadruped_medium::Species::Panda => 800, quadruped_medium::Species::Bear => 800, + quadruped_medium::Species::Moose => 600, + quadruped_medium::Species::Dreadhorn => 1100, _ => 400, }, Body::BirdMedium(bird_medium) => match bird_medium.species { @@ -370,6 +377,8 @@ impl Body { biped_large::Species::Yeti => 2000, biped_large::Species::Minotaur => 5000, biped_large::Species::Harvester => 2000, + biped_large::Species::Blueoni => 2300, + biped_large::Species::Redoni => 2300, _ => 1000, }, Body::BipedSmall(biped_small) => match biped_small.species { @@ -405,7 +414,6 @@ impl Body { quadruped_low::Species::Hakulaq => 400, quadruped_low::Species::Lavadrake => 900, quadruped_low::Species::Deadwood => 600, - _ => 200, }, } @@ -451,6 +459,8 @@ impl Body { quadruped_medium::Species::Yak => 30, quadruped_medium::Species::Panda => 40, quadruped_medium::Species::Bear => 40, + quadruped_medium::Species::Moose => 30, + quadruped_medium::Species::Dreadhorn => 50, _ => 20, }, Body::BirdMedium(bird_medium) => match bird_medium.species { diff --git a/common/src/comp/body/biped_large.rs b/common/src/comp/body/biped_large.rs index 1208021085..3891c0a4f8 100644 --- a/common/src/comp/body/biped_large.rs +++ b/common/src/comp/body/biped_large.rs @@ -48,6 +48,8 @@ make_case_elim!( Tidalwarrior = 11, Yeti = 12, Harvester = 13, + Blueoni = 14, + Redoni = 15, } ); @@ -70,6 +72,8 @@ pub struct AllSpecies { pub tidalwarrior: SpeciesMeta, pub yeti: SpeciesMeta, pub harvester: SpeciesMeta, + pub oni_blue: SpeciesMeta, + pub oni_red: SpeciesMeta, } impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies { @@ -92,11 +96,13 @@ impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies Species::Tidalwarrior => &self.tidalwarrior, Species::Yeti => &self.yeti, Species::Harvester => &self.harvester, + Species::Blueoni => &self.oni_blue, + Species::Redoni => &self.oni_red, } } } -pub const ALL_SPECIES: [Species; 14] = [ +pub const ALL_SPECIES: [Species; 16] = [ Species::Ogre, Species::Cyclops, Species::Wendigo, @@ -111,6 +117,8 @@ pub const ALL_SPECIES: [Species; 14] = [ Species::Tidalwarrior, Species::Yeti, Species::Harvester, + Species::Blueoni, + Species::Redoni, ]; impl<'a, SpeciesMeta: 'a> IntoIterator for &'a AllSpecies { diff --git a/common/src/comp/body/fish_medium.rs b/common/src/comp/body/fish_medium.rs index 8ddd3695b2..924bf09f36 100644 --- a/common/src/comp/body/fish_medium.rs +++ b/common/src/comp/body/fish_medium.rs @@ -35,6 +35,7 @@ make_case_elim!( #[repr(u32)] pub enum Species { Marlin = 0, + Icepike = 1, } ); @@ -44,6 +45,7 @@ make_case_elim!( #[derive(Clone, Debug, Deserialize)] pub struct AllSpecies { pub marlin: SpeciesMeta, + pub icepike: SpeciesMeta, } impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies { @@ -53,11 +55,12 @@ impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies fn index(&self, &index: &'a Species) -> &Self::Output { match index { Species::Marlin => &self.marlin, + Species::Icepike => &self.icepike, } } } -pub const ALL_SPECIES: [Species; 1] = [Species::Marlin]; +pub const ALL_SPECIES: [Species; 2] = [Species::Marlin, Species::Icepike]; impl<'a, SpeciesMeta: 'a> IntoIterator for &'a AllSpecies { type IntoIter = std::iter::Copied>; diff --git a/common/src/comp/body/quadruped_medium.rs b/common/src/comp/body/quadruped_medium.rs index d1b2b89b43..192e7559b5 100644 --- a/common/src/comp/body/quadruped_medium.rs +++ b/common/src/comp/body/quadruped_medium.rs @@ -59,6 +59,9 @@ pub enum Species { Yak = 26, Panda = 27, Bear = 28, + Dreadhorn = 29, + Moose = 30, + Snowleopard = 31, } /// Data representing per-species generic data. @@ -93,6 +96,9 @@ pub struct AllSpecies { pub yak: SpeciesMeta, pub panda: SpeciesMeta, pub bear: SpeciesMeta, + pub dreadhorn: SpeciesMeta, + pub moose: SpeciesMeta, + pub snowleopard: SpeciesMeta, } impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies { @@ -128,11 +134,14 @@ impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies Species::Yak => &self.yak, Species::Panda => &self.panda, Species::Bear => &self.bear, + Species::Dreadhorn => &self.dreadhorn, + Species::Moose => &self.moose, + Species::Snowleopard => &self.snowleopard, } } } -pub const ALL_SPECIES: [Species; 27] = [ +pub const ALL_SPECIES: [Species; 30] = [ Species::Grolgar, Species::Saber, Species::Tiger, @@ -160,6 +169,9 @@ pub const ALL_SPECIES: [Species; 27] = [ Species::Yak, Species::Panda, Species::Bear, + Species::Dreadhorn, + Species::Moose, + Species::Snowleopard, ]; impl<'a, SpeciesMeta: 'a> IntoIterator for &'a AllSpecies { diff --git a/common/src/comp/body/quadruped_small.rs b/common/src/comp/body/quadruped_small.rs index 12288bd687..1d4f294e64 100644 --- a/common/src/comp/body/quadruped_small.rs +++ b/common/src/comp/body/quadruped_small.rs @@ -58,6 +58,7 @@ pub enum Species { Beaver = 23, Hare = 24, Dog = 25, + Goat = 26, } /// Data representing per-species generic data. @@ -91,6 +92,7 @@ pub struct AllSpecies { pub beaver: SpeciesMeta, pub hare: SpeciesMeta, pub dog: SpeciesMeta, + pub goat: SpeciesMeta, } impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies { @@ -125,11 +127,12 @@ impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies Species::Beaver => &self.beaver, Species::Hare => &self.hare, Species::Dog => &self.dog, + Species::Goat => &self.goat, } } } -pub const ALL_SPECIES: [Species; 26] = [ +pub const ALL_SPECIES: [Species; 27] = [ Species::Pig, Species::Fox, Species::Sheep, @@ -156,6 +159,7 @@ pub const ALL_SPECIES: [Species; 26] = [ Species::Beaver, Species::Hare, Species::Dog, + Species::Goat, ]; impl<'a, SpeciesMeta: 'a> IntoIterator for &'a AllSpecies { diff --git a/common/src/comp/body/theropod.rs b/common/src/comp/body/theropod.rs index 54633ec9df..5f1abcda53 100644 --- a/common/src/comp/body/theropod.rs +++ b/common/src/comp/body/theropod.rs @@ -34,6 +34,8 @@ pub enum Species { Snowraptor = 3, Woodraptor = 4, Sunlizard = 5, + Yale = 6, + Ntouka = 7, } /// Data representing per-species generic data. @@ -45,6 +47,8 @@ pub struct AllSpecies { pub raptor_snow: SpeciesMeta, pub raptor_wood: SpeciesMeta, pub sunlizard: SpeciesMeta, + pub yale: SpeciesMeta, + pub ntouka: SpeciesMeta, } impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies { @@ -59,17 +63,21 @@ impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies Species::Snowraptor => &self.raptor_snow, Species::Woodraptor => &self.raptor_wood, Species::Sunlizard => &self.sunlizard, + Species::Yale => &self.yale, + Species::Ntouka => &self.ntouka, } } } -pub const ALL_SPECIES: [Species; 6] = [ +pub const ALL_SPECIES: [Species; 8] = [ Species::Archaeos, Species::Odonto, Species::Sandraptor, Species::Snowraptor, Species::Woodraptor, Species::Sunlizard, + Species::Yale, + Species::Ntouka, ]; impl<'a, SpeciesMeta: 'a> IntoIterator for &'a AllSpecies { diff --git a/common/src/comp/inventory/item/tool.rs b/common/src/comp/inventory/item/tool.rs index 6b1aeec171..2e79b9a53a 100644 --- a/common/src/comp/inventory/item/tool.rs +++ b/common/src/comp/inventory/item/tool.rs @@ -421,6 +421,7 @@ pub enum UniqueKind { QuadSmallBasic, TheropodBasic, TheropodBird, + TheropodCharge, ObjectTurret, WoodenSpear, } diff --git a/common/src/comp/inventory/loadout_builder.rs b/common/src/comp/inventory/loadout_builder.rs index 405d44628c..6f89b197f0 100644 --- a/common/src/comp/inventory/loadout_builder.rs +++ b/common/src/comp/inventory/loadout_builder.rs @@ -106,7 +106,8 @@ impl LoadoutBuilder { | quadruped_medium::Species::Grolgar | quadruped_medium::Species::Lion | quadruped_medium::Species::Bonerattler - | quadruped_medium::Species::Darkhound => { + | quadruped_medium::Species::Darkhound + | quadruped_medium::Species::Snowleopard => { main_tool = Some(Item::new_from_asset_expect( "common.items.npc_weapons.unique.quadmedquick", )); @@ -127,7 +128,10 @@ impl LoadoutBuilder { "common.items.npc_weapons.unique.quadmedjump", )); }, - quadruped_medium::Species::Tuskram | quadruped_medium::Species::Roshwalr => { + quadruped_medium::Species::Tuskram + | quadruped_medium::Species::Roshwalr + | quadruped_medium::Species::Moose + | quadruped_medium::Species::Dreadhorn => { main_tool = Some(Item::new_from_asset_expect( "common.items.npc_weapons.unique.quadmedcharge", )); @@ -192,6 +196,11 @@ impl LoadoutBuilder { "common.items.npc_weapons.unique.theropodbird", )); }, + theropod::Species::Yale => { + main_tool = Some(Item::new_from_asset_expect( + "common.items.npc_weapons.unique.theropodcharge", + )); + }, _ => { main_tool = Some(Item::new_from_asset_expect( "common.items.npc_weapons.unique.theropodbasic", @@ -275,6 +284,16 @@ impl LoadoutBuilder { "common.items.npc_weapons.hammer.harvester_scythe", )); }, + (biped_large::Species::Blueoni, _) => { + main_tool = Some(Item::new_from_asset_expect( + "common.items.npc_weapons.axe.oni_blue_axe", + )); + }, + (biped_large::Species::Redoni, _) => { + main_tool = Some(Item::new_from_asset_expect( + "common.items.npc_weapons.hammer.oni_red_hammer", + )); + }, }, Body::Object(object::Body::Crossbow) => { main_tool = Some(Item::new_from_asset_expect( diff --git a/common/src/states/utils.rs b/common/src/states/utils.rs index fef074dd46..a05c794e69 100644 --- a/common/src/states/utils.rs +++ b/common/src/states/utils.rs @@ -46,6 +46,7 @@ impl Body { quadruped_small::Species::Cat => 70.0, quadruped_small::Species::Truffler => 70.0, quadruped_small::Species::Fungome => 70.0, + quadruped_small::Species::Goat => 80.0, _ => 125.0, }, Body::QuadrupedMedium(quadruped_medium) => match quadruped_medium.species { @@ -76,6 +77,9 @@ impl Body { quadruped_medium::Species::Yak => 90.0, quadruped_medium::Species::Panda => 90.0, quadruped_medium::Species::Bear => 90.0, + quadruped_medium::Species::Dreadhorn => 140.0, + quadruped_medium::Species::Moose => 130.0, + quadruped_medium::Species::Snowleopard => 160.0, }, Body::BipedLarge(body) => match body.species { biped_large::Species::Slysaurok => 100.0, @@ -152,6 +156,7 @@ impl Body { Body::Theropod(theropod) => match theropod.species { theropod::Species::Archaeos => 2.5, theropod::Species::Odonto => 2.5, + theropod::Species::Ntouka => 2.5, _ => 7.0, }, Body::QuadrupedLow(quadruped_low) => match quadruped_low.species { diff --git a/server/src/sys/agent.rs b/server/src/sys/agent.rs index daef971747..18c5ad61e3 100644 --- a/server/src/sys/agent.rs +++ b/server/src/sys/agent.rs @@ -1008,7 +1008,11 @@ impl<'a> AgentData<'a> { circle_time: 2, }, Some(ToolKind::Unique(UniqueKind::QuadMedCharge)) => Tactic::CircleCharge { - radius: 15, + radius: 12, + circle_time: 1, + }, + Some(ToolKind::Unique(UniqueKind::TheropodCharge)) => Tactic::CircleCharge { + radius: 6, circle_time: 1, }, diff --git a/voxygen/anim/src/biped_large/idle.rs b/voxygen/anim/src/biped_large/idle.rs index 5360b118c7..620e4241aa 100644 --- a/voxygen/anim/src/biped_large/idle.rs +++ b/voxygen/anim/src/biped_large/idle.rs @@ -31,8 +31,16 @@ impl Animation for IdleAnimation { let slow = (anim_time * 7.0 + PI).sin() * 1.5; let look = Vec2::new( - (global_time + anim_time / 8.0).floor().mul(7331.0).sin() * 0.5, - (global_time + anim_time / 8.0).floor().mul(1337.0).sin() * 0.25, + (global_time / 2.0 + anim_time / 8.0) + .floor() + .mul(7331.0) + .sin() + * 0.5, + (global_time / 2.0 + anim_time / 8.0) + .floor() + .mul(1337.0) + .sin() + * 0.25, ); let breathe = if s_a.beast { diff --git a/voxygen/anim/src/biped_large/mod.rs b/voxygen/anim/src/biped_large/mod.rs index 47a46ba1a7..f2d159f06e 100644 --- a/voxygen/anim/src/biped_large/mod.rs +++ b/voxygen/anim/src/biped_large/mod.rs @@ -208,6 +208,8 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Tidalwarrior, _) => (6.5, 5.0), (Yeti, _) => (8.5, 4.0), (Harvester, _) => (6.0, 11.0), + (Blueoni, _) => (10.5, -3.0), + (Redoni, _) => (10.5, -3.0), }, jaw: match (body.species, body.body_type) { (Ogre, _) => (0.0, 0.0), @@ -224,6 +226,8 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Tidalwarrior, _) => (0.0, 0.0), (Yeti, _) => (-5.0, -5.0), (Harvester, _) => (-2.0, -7.0), + (Blueoni, _) => (0.0, 3.5), + (Redoni, _) => (0.0, 3.5), }, upper_torso: match (body.species, body.body_type) { (Ogre, Male) => (0.0, 27.5), @@ -241,6 +245,8 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Tidalwarrior, _) => (-1.0, 25.0), (Yeti, _) => (-1.0, 23.5), (Harvester, _) => (-1.0, 18.0), + (Blueoni, _) => (-1.0, 26.5), + (Redoni, _) => (-1.0, 26.5), }, lower_torso: match (body.species, body.body_type) { (Ogre, Male) => (1.0, -7.0), @@ -258,6 +264,8 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Tidalwarrior, _) => (0.0, -9.5), (Yeti, _) => (0.0, -6.5), (Harvester, _) => (-1.0, -4.5), + (Blueoni, _) => (0.0, -8.5), + (Redoni, _) => (0.0, -8.5), }, tail: match (body.species, body.body_type) { (Werewolf, _) => (-5.5, -2.0), @@ -283,6 +291,8 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Tidalwarrior, _) => (14.0, -0.5, 2.0), (Yeti, _) => (10.5, 1.0, -2.5), (Harvester, _) => (8.0, 1.0, -1.5), + (Blueoni, _) => (11.0, 2.0, -5.5), + (Redoni, _) => (11.0, 2.0, -5.5), }, hand: match (body.species, body.body_type) { (Ogre, Male) => (14.5, 0.0, -4.0), @@ -300,6 +310,8 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Tidalwarrior, _) => (15.5, -0.5, -3.0), (Yeti, _) => (12.0, 1.5, -6.0), (Harvester, _) => (11.5, 1.5, -5.5), + (Blueoni, _) => (13.5, 0.5, -8.0), + (Redoni, _) => (13.5, 0.5, -8.0), }, leg: match (body.species, body.body_type) { (Ogre, Male) => (0.0, 0.0, -4.0), @@ -317,6 +329,8 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Tidalwarrior, _) => (2.5, 0.0, -5.5), (Yeti, _) => (4.0, 0.0, -5.5), (Harvester, _) => (3.5, 1.0, -4.0), + (Blueoni, _) => (4.5, 2.0, -5.5), + (Redoni, _) => (4.5, 2.0, -5.5), }, foot: match (body.species, body.body_type) { (Ogre, Male) => (4.0, 1.0, -12.0), @@ -334,6 +348,8 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Tidalwarrior, _) => (3.5, 0.5, -10.5), (Yeti, _) => (4.5, 0.5, -12.5), (Harvester, _) => (4.5, 0.5, -9.5), + (Blueoni, _) => (5.0, 5.0, -12.5), + (Redoni, _) => (5.0, 5.0, -12.5), }, scaler: match (body.species, body.body_type) { (Ogre, Male) => 1.4, @@ -351,6 +367,8 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Tidalwarrior, _) => 2.0, (Yeti, _) => 1.5, (Harvester, _) => 1.5, + (Blueoni, _) => 1.5, + (Redoni, _) => 1.5, }, tempo: match (body.species, body.body_type) { (Ogre, Male) => 0.9, @@ -377,6 +395,8 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Tidalwarrior, _) => 14.0, (Yeti, _) => 12.5, (Harvester, _) => 7.5, + (Blueoni, _) => 12.5, + (Redoni, _) => 12.5, }, shl: match (body.species, body.body_type) { (Dullahan, _) => (-4.75, -11.0, 8.5, 1.47, -0.2, 0.0), @@ -398,6 +418,8 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Cyclops, _) => (-6.0, -10.0, 17.0, 1.57, -0.57, 0.0), (Troll, _) => (-6.0, -10.0, 17.0, 1.57, -0.57, 0.0), (Yeti, _) => (-6.0, -10.0, 17.0, 1.57, -0.57, 0.0), + (Blueoni, _) => (-6.0, -10.0, 17.0, 1.57, -0.57, 0.0), + (Redoni, _) => (-6.0, -10.0, 17.0, 1.57, -0.57, 0.0), _ => (-6.0, -10.0, 17.0, 1.57, -0.57, 0.0), }, hhr: match (body.species, body.body_type) { @@ -405,6 +427,8 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Cyclops, _) => (-6.0, -10.0, 0.0, 1.57, -0.57, 0.0), (Troll, _) => (-6.0, -10.0, 0.0, 1.57, -0.57, 0.0), (Yeti, _) => (-6.0, -10.0, 0.0, 1.57, -0.57, 0.0), + (Blueoni, _) => (-6.0, -10.0, 0.0, 1.57, -0.57, 0.0), + (Redoni, _) => (-6.0, -10.0, 0.0, 1.57, -0.57, 0.0), _ => (-6.0, -10.0, 0.0, 1.57, -0.57, 0.0), }, hc: match (body.species, body.body_type) { @@ -412,6 +436,8 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Cyclops, _) => (8.5, 6.0, -12.0, -0.57, -1.57, 1.0), (Troll, _) => (8.5, 6.0, -12.0, -0.57, -1.57, 1.0), (Yeti, _) => (8.5, 6.0, -12.0, -0.57, -1.57, 1.0), + (Blueoni, _) => (8.5, 6.0, -12.0, -0.57, -1.57, 1.0), + (Redoni, _) => (8.5, 6.0, -12.0, -0.57, -1.57, 1.0), _ => (8.5, 6.0, -12.0, -0.57, -1.57, 1.0), }, sthl: match (body.species, body.body_type) { diff --git a/voxygen/anim/src/biped_large/run.rs b/voxygen/anim/src/biped_large/run.rs index 7b42745169..c48f7f8a9f 100644 --- a/voxygen/anim/src/biped_large/run.rs +++ b/voxygen/anim/src/biped_large/run.rs @@ -70,8 +70,16 @@ impl Animation for RunAnimation { // let shortalt = (acc_vel * lab * speedmult + PI * 3.0 + 0.7).sin(); let look = Vec2::new( - (global_time + anim_time / 2.0).floor().mul(7331.0).sin() * 0.5, - (global_time + anim_time / 2.0).floor().mul(1337.0).sin() * 0.25, + (global_time / 2.0 + anim_time / 2.0) + .floor() + .mul(7331.0) + .sin() + * 0.5, + (global_time / 2.0 + anim_time / 2.0) + .floor() + .mul(1337.0) + .sin() + * 0.25, ); let speedadjust = if speed < 5.0 { 0.0 } else { speed / 21.0 }; diff --git a/voxygen/anim/src/biped_large/wield.rs b/voxygen/anim/src/biped_large/wield.rs index 36a818c39b..3e96017bea 100644 --- a/voxygen/anim/src/biped_large/wield.rs +++ b/voxygen/anim/src/biped_large/wield.rs @@ -39,13 +39,29 @@ impl Animation for WieldAnimation { let slow = (anim_time * 3.5 + PI).sin(); let tailmove = Vec2::new( - (global_time + anim_time / 2.0).floor().mul(7331.0).sin() * 0.25, - (global_time + anim_time / 2.0).floor().mul(1337.0).sin() * 0.125, + (global_time / 2.0 + anim_time / 2.0) + .floor() + .mul(7331.0) + .sin() + * 0.25, + (global_time / 2.0 + anim_time / 2.0) + .floor() + .mul(1337.0) + .sin() + * 0.125, ); let look = Vec2::new( - (global_time + anim_time / 8.0).floor().mul(7331.0).sin() * 0.5, - (global_time + anim_time / 8.0).floor().mul(1337.0).sin() * 0.25, + (global_time / 2.0 + anim_time / 8.0) + .floor() + .mul(7331.0) + .sin() + * 0.5, + (global_time / 2.0 + anim_time / 8.0) + .floor() + .mul(1337.0) + .sin() + * 0.25, ); let breathe = if s_a.beast { diff --git a/voxygen/anim/src/bird_medium/feed.rs b/voxygen/anim/src/bird_medium/feed.rs index 608c8f7ea2..f717628af0 100644 --- a/voxygen/anim/src/bird_medium/feed.rs +++ b/voxygen/anim/src/bird_medium/feed.rs @@ -30,8 +30,16 @@ impl Animation for FeedAnimation { let wave_slow_cos = (anim_time * 4.5).cos(); let duck_head_look = Vec2::new( - (global_time + anim_time / 2.0).floor().mul(7331.0).sin() * 0.5, - (global_time + anim_time / 8.0).floor().mul(1337.0).sin() * 0.25, + (global_time / 2.0 + anim_time / 2.0) + .floor() + .mul(7331.0) + .sin() + * 0.5, + (global_time / 2.0 + anim_time / 8.0) + .floor() + .mul(1337.0) + .sin() + * 0.25, ); next.head.position = Vec3::new(0.0, s_a.head.0 + 1.0, -2.0 + s_a.head.1); diff --git a/voxygen/anim/src/bird_medium/idle.rs b/voxygen/anim/src/bird_medium/idle.rs index 2acc5ceaa8..f96992a739 100644 --- a/voxygen/anim/src/bird_medium/idle.rs +++ b/voxygen/anim/src/bird_medium/idle.rs @@ -28,13 +28,21 @@ impl Animation for IdleAnimation { let wave_slow_cos = (anim_time * 4.5).cos(); let duck_head_look = Vec2::new( - (global_time + anim_time / 8.0).floor().mul(7331.0).sin() * 0.5, - (global_time + anim_time / 8.0).floor().mul(1337.0).sin() * 0.25, + (global_time / 2.0 + anim_time / 8.0) + .floor() + .mul(7331.0) + .sin() + * 0.5, + (global_time / 2.0 + anim_time / 8.0) + .floor() + .mul(1337.0) + .sin() + * 0.25, ); next.torso.scale = Vec3::one() / 11.0; - next.wing_l.scale = Vec3::one() * 1.05; - next.wing_r.scale = Vec3::one() * 1.05; + next.wing_l.scale = Vec3::one() * 1.02; + next.wing_r.scale = Vec3::one() * 1.02; next.leg_l.scale = Vec3::one() / 11.0; next.leg_r.scale = Vec3::one() / 11.0; diff --git a/voxygen/anim/src/bird_medium/mod.rs b/voxygen/anim/src/bird_medium/mod.rs index 1cc817ea53..8bffda2e5a 100644 --- a/voxygen/anim/src/bird_medium/mod.rs +++ b/voxygen/anim/src/bird_medium/mod.rs @@ -91,7 +91,8 @@ impl<'a> From<&'a Body> for SkeletonAttr { Self { head: match (body.species, body.body_type) { (Duck, _) => (4.0, 3.0), - (Chicken, _) => (4.0, 3.0), + (Chicken, Male) => (3.0, 4.5), + (Chicken, Female) => (3.0, 6.0), (Goose, _) => (5.0, 2.5), (Peacock, _) => (1.0, 1.0), (Eagle, _) => (2.5, 5.0), @@ -102,7 +103,8 @@ impl<'a> From<&'a Body> for SkeletonAttr { }, chest: match (body.species, body.body_type) { (Duck, _) => (0.0, 5.0), - (Chicken, _) => (0.0, 5.0), + (Chicken, Male) => (0.0, 6.5), + (Chicken, Female) => (0.0, 6.5), (Goose, _) => (0.0, 8.0), (Peacock, _) => (0.0, 10.0), (Eagle, _) => (0.0, 8.0), @@ -113,7 +115,8 @@ impl<'a> From<&'a Body> for SkeletonAttr { }, tail: match (body.species, body.body_type) { (Duck, _) => (-3.0, 1.5), - (Chicken, _) => (-3.0, 1.5), + (Chicken, Male) => (-7.5, 3.5), + (Chicken, Female) => (-4.5, 3.0), (Goose, _) => (-5.0, 3.0), (Peacock, _) => (-5.5, 2.0), (Eagle, _) => (-8.0, -4.0), @@ -124,7 +127,8 @@ impl<'a> From<&'a Body> for SkeletonAttr { }, wing: match (body.species, body.body_type) { (Duck, _) => (2.75, 0.0, 1.0), - (Chicken, _) => (2.75, 0.0, 1.0), + (Chicken, Male) => (3.0, -1.0, 2.5), + (Chicken, Female) => (3.0, -1.5, 2.5), (Goose, _) => (3.75, -1.0, 2.0), (Peacock, _) => (3.0, 0.0, 1.0), (Eagle, _) => (3.0, -8.0, 4.0), @@ -135,7 +139,8 @@ impl<'a> From<&'a Body> for SkeletonAttr { }, foot: match (body.species, body.body_type) { (Duck, _) => (2.0, -1.5, 4.0), - (Chicken, _) => (2.0, -1.5, 4.0), + (Chicken, Male) => (2.0, 0.0, 6.0), + (Chicken, Female) => (2.0, 0.0, 6.0), (Goose, _) => (2.0, -1.5, 7.0), (Peacock, _) => (2.0, -2.5, 8.0), (Eagle, _) => (2.0, -2.0, 8.0), @@ -145,6 +150,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Cockatrice, _) => (4.0, -3.5, 12.0), }, feed: match (body.species, body.body_type) { + (Chicken, _) => 1.2, (Goose, _) => 1.4, (Peacock, _) => 1.6, (Eagle, _) => 1.2, diff --git a/voxygen/anim/src/character/climb.rs b/voxygen/anim/src/character/climb.rs index 1f2b439f11..721f3e0182 100644 --- a/voxygen/anim/src/character/climb.rs +++ b/voxygen/anim/src/character/climb.rs @@ -44,8 +44,16 @@ impl Animation for ClimbAnimation { ((5.0 / (0.6 + 4.0 * ((anim_time * constant * 1.5 + PI / 2.0).sin()).powi(2))).sqrt()) * ((anim_time * constant * 1.5 + PI / 2.0).sin()); let head_look = Vec2::new( - (global_time + anim_time / 2.0).floor().mul(7331.0).sin() * 0.3, - (global_time + anim_time / 2.0).floor().mul(1337.0).sin() * 0.15, + (global_time / 2.0 + anim_time / 2.0) + .floor() + .mul(7331.0) + .sin() + * 0.3, + (global_time / 2.0 + anim_time / 2.0) + .floor() + .mul(1337.0) + .sin() + * 0.15, ); let stagnant = if speed > -0.7 { 1.0 } else { 0.0 }; //sets static position when there is no movement diff --git a/voxygen/anim/src/dragon/idle.rs b/voxygen/anim/src/dragon/idle.rs index 3d80739a0d..22789771e2 100644 --- a/voxygen/anim/src/dragon/idle.rs +++ b/voxygen/anim/src/dragon/idle.rs @@ -28,8 +28,16 @@ impl Animation for IdleAnimation { let slowalt = (anim_time * 2.5 + PI / 2.0).sin(); let dragon_look = Vec2::new( - (global_time + anim_time / 8.0).floor().mul(7331.0).sin() * 0.5, - (global_time + anim_time / 8.0).floor().mul(1337.0).sin() * 0.25, + (global_time / 2.0 + anim_time / 8.0) + .floor() + .mul(7331.0) + .sin() + * 0.5, + (global_time / 2.0 + anim_time / 8.0) + .floor() + .mul(1337.0) + .sin() + * 0.25, ); next.head_upper.scale = Vec3::one() * 1.05; diff --git a/voxygen/anim/src/dyn_lib.rs b/voxygen/anim/src/dyn_lib.rs index 0e3343bd55..4c39922032 100644 --- a/voxygen/anim/src/dyn_lib.rs +++ b/voxygen/anim/src/dyn_lib.rs @@ -71,7 +71,7 @@ impl LoadedLib { let lib_path = LoadedLib::determine_path(); // Try to load the library. - let lib = match Library::new(lib_path.clone()) { + let lib = match unsafe { Library::new(lib_path.clone()) } { Ok(lib) => lib, Err(e) => panic!( "Tried to load dynamic library from {:?}, but it could not be found. The first \ diff --git a/voxygen/anim/src/fish_medium/idle.rs b/voxygen/anim/src/fish_medium/idle.rs index 4ea180416e..e99b7d285a 100644 --- a/voxygen/anim/src/fish_medium/idle.rs +++ b/voxygen/anim/src/fish_medium/idle.rs @@ -29,6 +29,7 @@ impl Animation for IdleAnimation { let slow = (anim_time * 3.5 + PI).sin(); let slowalt = (anim_time * 3.5 + PI + 0.2).sin(); + next.jaw.scale = Vec3::one() * 0.98; next.chest_front.scale = Vec3::one() / 11.0; next.head.position = Vec3::new(0.0, s_a.head.0, s_a.head.1); diff --git a/voxygen/anim/src/fish_medium/mod.rs b/voxygen/anim/src/fish_medium/mod.rs index 2fd5d45f45..8c68c9e4d8 100644 --- a/voxygen/anim/src/fish_medium/mod.rs +++ b/voxygen/anim/src/fish_medium/mod.rs @@ -94,27 +94,35 @@ impl<'a> From<&'a Body> for SkeletonAttr { Self { head: match (body.species, body.body_type) { (Marlin, _) => (2.0, 1.5), + (Icepike, _) => (3.0, 1.0), }, jaw: match (body.species, body.body_type) { (Marlin, _) => (2.5, -3.0), + (Icepike, _) => (0.0, 0.0), }, chest_front: match (body.species, body.body_type) { (Marlin, _) => (0.0, 2.5), + (Icepike, _) => (0.0, 2.5), }, chest_back: match (body.species, body.body_type) { (Marlin, _) => (-1.0, 1.0), + (Icepike, _) => (-4.5, 0.0), }, tail: match (body.species, body.body_type) { (Marlin, _) => (-7.0, 0.0), + (Icepike, _) => (-0.5, 1.5), }, fin: match (body.species, body.body_type) { (Marlin, _) => (2.5, 1.0, 3.5), + (Icepike, _) => (3.5, 3.0, 0.0), }, tempo: match (body.species, body.body_type) { (Marlin, _) => 4.0, + (Icepike, _) => 4.0, }, amplitude: match (body.species, body.body_type) { (Marlin, _) => 4.0, + (Icepike, _) => 4.0, }, } } diff --git a/voxygen/anim/src/golem/idle.rs b/voxygen/anim/src/golem/idle.rs index 2b139c96a2..5f170b8144 100644 --- a/voxygen/anim/src/golem/idle.rs +++ b/voxygen/anim/src/golem/idle.rs @@ -28,8 +28,16 @@ impl Animation for IdleAnimation { let breathe = (anim_time * lab + 1.5 * PI).sin(); let look = Vec2::new( - (global_time + anim_time / 8.0).floor().mul(7331.0).sin() * 0.5, - (global_time + anim_time / 8.0).floor().mul(1337.0).sin() * 0.25, + (global_time / 2.0 + anim_time / 8.0) + .floor() + .mul(7331.0) + .sin() + * 0.5, + (global_time / 2.0 + anim_time / 8.0) + .floor() + .mul(1337.0) + .sin() + * 0.25, ); next.head.scale = Vec3::one() * 1.02; next.jaw.scale = Vec3::one() * 1.02; diff --git a/voxygen/anim/src/quadruped_low/idle.rs b/voxygen/anim/src/quadruped_low/idle.rs index fc3331b6ea..df51694acc 100644 --- a/voxygen/anim/src/quadruped_low/idle.rs +++ b/voxygen/anim/src/quadruped_low/idle.rs @@ -28,8 +28,16 @@ impl Animation for IdleAnimation { let slowalt = (anim_time * 2.5 + PI / 2.0).sin(); let dragon_look = Vec2::new( - (global_time + anim_time / 8.0).floor().mul(7331.0).sin() * 0.2, - (global_time + anim_time / 8.0).floor().mul(1337.0).sin() * 0.1, + (global_time / 2.0 + anim_time / 8.0) + .floor() + .mul(7331.0) + .sin() + * 0.2, + (global_time / 2.0 + anim_time / 8.0) + .floor() + .mul(1337.0) + .sin() + * 0.1, ); next.jaw.scale = Vec3::one() * 0.98; next.chest.scale = Vec3::one() * s_a.scaler / 11.0; diff --git a/voxygen/anim/src/quadruped_medium/feed.rs b/voxygen/anim/src/quadruped_medium/feed.rs index 410b4c109c..75589aeba1 100644 --- a/voxygen/anim/src/quadruped_medium/feed.rs +++ b/voxygen/anim/src/quadruped_medium/feed.rs @@ -30,8 +30,16 @@ impl Animation for FeedAnimation { let transition = ((anim_time.powf(2.0)).min(1.0)) * s_a.feed.1; let look = Vec2::new( - (global_time + anim_time / 8.0).floor().mul(7331.0).sin() * 0.5, - (global_time + anim_time / 8.0).floor().mul(1337.0).sin() * 0.25, + (global_time / 2.0 + anim_time / 8.0) + .floor() + .mul(7331.0) + .sin() + * 0.5, + (global_time / 2.0 + anim_time / 8.0) + .floor() + .mul(1337.0) + .sin() + * 0.25, ); if s_a.feed.0 { diff --git a/voxygen/anim/src/quadruped_medium/idle.rs b/voxygen/anim/src/quadruped_medium/idle.rs index 194be1578c..231ed7fb82 100644 --- a/voxygen/anim/src/quadruped_medium/idle.rs +++ b/voxygen/anim/src/quadruped_medium/idle.rs @@ -27,12 +27,28 @@ impl Animation for IdleAnimation { let slow = (anim_time * 3.5 + PI).sin(); let look = Vec2::new( - (global_time + anim_time / 8.0).floor().mul(7331.0).sin() * 0.5, - (global_time + anim_time / 8.0).floor().mul(1337.0).sin() * 0.25, + (global_time / 2.0 + anim_time / 8.0) + .floor() + .mul(7331.0) + .sin() + * 0.5, + (global_time / 2.0 + anim_time / 8.0) + .floor() + .mul(1337.0) + .sin() + * 0.25, ); let tailmove = Vec2::new( - (global_time + anim_time / 2.0).floor().mul(7331.0).sin() * 0.25, - (global_time + anim_time / 2.0).floor().mul(1337.0).sin() * 0.125, + (global_time / 2.0 + anim_time / 2.0) + .floor() + .mul(7331.0) + .sin() + * 0.25, + (global_time / 2.0 + anim_time / 2.0) + .floor() + .mul(1337.0) + .sin() + * 0.125, ); next.neck.scale = Vec3::one() * 1.02; diff --git a/voxygen/anim/src/quadruped_medium/mod.rs b/voxygen/anim/src/quadruped_medium/mod.rs index 6e8a02bcae..2a2c6ea2a2 100644 --- a/voxygen/anim/src/quadruped_medium/mod.rs +++ b/voxygen/anim/src/quadruped_medium/mod.rs @@ -164,13 +164,17 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Kelpie, _) => (4.0, -1.0), (Horse, _) => (4.5, 2.5), (Barghest, _) => (0.5, -2.5), - (Cattle, Male) => (0.5, 3.5), + (Cattle, Male) => (2.0, 3.5), (Cattle, Female) => (2.5, 4.0), (Darkhound, _) => (3.0, -1.0), (Highland, _) => (2.5, 5.0), (Yak, _) => (2.5, 5.0), (Panda, _) => (0.0, 0.5), (Bear, _) => (0.5, 1.5), + (Dreadhorn, _) => (-2.5, 7.0), + (Moose, Male) => (-0.5, 5.0), + (Moose, Female) => (3.5, 0.5), + (Snowleopard, _) => (1.5, 0.5), }, neck: match (body.species, body.body_type) { (Grolgar, _) => (1.0, -1.0), @@ -201,6 +205,9 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Yak, _) => (0.0, 0.0), (Panda, _) => (0.5, 0.0), (Bear, _) => (0.5, 0.0), + (Dreadhorn, _) => (0.5, 0.0), + (Moose, _) => (-0.5, 0.5), + (Snowleopard, _) => (0.0, 1.5), }, jaw: match (body.species, body.body_type) { (Grolgar, _) => (7.0, 2.0), @@ -231,6 +238,10 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Yak, _) => (6.0, -8.0), (Panda, _) => (3.0, -3.0), (Bear, _) => (3.5, -2.0), + (Dreadhorn, _) => (7.0, -5.0), + (Moose, Male) => (10.0, -7.0), + (Moose, Female) => (6.0, -2.5), + (Snowleopard, _) => (3.0, -3.0), }, tail: match (body.species, body.body_type) { (Grolgar, _) => (-11.5, -0.5), @@ -261,6 +272,9 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Yak, _) => (-8.0, 2.5), (Panda, _) => (-9.5, 0.0), (Bear, _) => (-10.0, -0.5), + (Dreadhorn, _) => (-5.5, 1.5), + (Moose, _) => (-12.5, 3.5), + (Snowleopard, _) => (-10.5, 3.0), }, torso_front: match (body.species, body.body_type) { (Grolgar, _) => (10.0, 13.0), @@ -291,6 +305,9 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Yak, _) => (7.0, 15.5), (Panda, _) => (7.0, 13.5), (Bear, _) => (7.0, 14.5), + (Dreadhorn, _) => (1.5, 15.5), + (Moose, _) => (1.5, 19.5), + (Snowleopard, _) => (1.5, 13.0), }, torso_back: match (body.species, body.body_type) { (Grolgar, _) => (-10.0, 1.5), @@ -321,6 +338,9 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Yak, _) => (-8.0, -0.5), (Panda, _) => (-11.0, -0.5), (Bear, _) => (-11.0, -0.5), + (Dreadhorn, _) => (-20.0, -1.0), + (Moose, _) => (-10.0, -1.0), + (Snowleopard, _) => (-11.0, 0.0), }, ears: match (body.species, body.body_type) { (Grolgar, _) => (5.0, 8.0), @@ -351,6 +371,10 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Yak, _) => (3.0, -5.0), (Panda, _) => (1.0, 4.0), (Bear, _) => (1.0, 4.0), + (Dreadhorn, _) => (1.5, 3.0), + (Moose, Male) => (6.0, 1.0), + (Moose, Female) => (2.0, 4.5), + (Snowleopard, _) => (1.5, 3.0), }, leg_f: match (body.species, body.body_type) { (Grolgar, _) => (7.5, -5.5, -1.0), @@ -380,7 +404,10 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Highland, _) => (5.5, -2.5, 0.0), (Yak, _) => (4.5, -2.0, -1.5), (Panda, _) => (7.5, -5.5, -2.0), - (Bear, _) => (7.5, -5.5, -2.0), + (Bear, _) => (3.5, -4.5, -3.5), + (Dreadhorn, _) => (8.5, -7.0, -0.5), + (Moose, _) => (5.5, -4.0, 1.0), + (Snowleopard, _) => (6.5, -4.0, -2.5), }, leg_b: match (body.species, body.body_type) { (Grolgar, _) => (6.0, -6.5, -4.0), @@ -411,6 +438,9 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Yak, _) => (4.5, -6.0, -1.0), (Panda, _) => (7.0, -7.0, -2.0), (Bear, _) => (6.5, -6.5, -2.0), + (Dreadhorn, _) => (6.0, 0.0, -3.0), + (Moose, _) => (4.5, -10.0, -2.0), + (Snowleopard, _) => (5.5, -5.0, -1.5), }, feet_f: match (body.species, body.body_type) { (Grolgar, _) => (0.0, 0.0, -4.0), @@ -441,6 +471,9 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Yak, _) => (-0.5, 0.0, -5.0), (Panda, _) => (-1.0, 2.0, -4.5), (Bear, _) => (0.0, 2.0, -5.5), + (Dreadhorn, _) => (-0.5, 0.5, -5.0), + (Moose, _) => (-1.0, 1.5, -9.5), + (Snowleopard, _) => (0.5, 0.5, -4.5), }, feet_b: match (body.species, body.body_type) { (Grolgar, _) => (0.5, -1.5, -3.0), @@ -471,6 +504,9 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Yak, _) => (-0.5, -0.5, -5.0), (Panda, _) => (-0.5, 0.5, -5.0), (Bear, _) => (0.5, 0.5, -6.0), + (Dreadhorn, _) => (-0.5, 0.5, -3.5), + (Moose, _) => (-1.0, 0.0, -6.5), + (Snowleopard, _) => (0.5, 0.5, -5.5), }, scaler: match (body.species, body.body_type) { (Grolgar, _) => (1.3), @@ -480,18 +516,21 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Tarasque, _) => (1.3), (Tiger, _) => (1.2), (Catoblepas, _) => (1.3), - (Roshwalr, _) => (1.2), + (Roshwalr, _) => (1.3), (Barghest, _) => (1.5), (Antelope, _) => (1.2), - (Kelpie, _) => (1.3), + (Kelpie, _) => (1.35), (Donkey, _) => (1.2), - (Horse, _) => (1.4), + (Horse, _) => (1.42), (Zebra, _) => (1.3), (Cattle, _) => (1.7), (Highland, _) => (1.7), (Bear, _) => (1.7), (Yak, _) => (1.7), - (Camel, _) => (1.4), + (Camel, _) => (1.42), + (Dreadhorn, _) => (2.0), + (Moose, _) => (1.1), + (Snowleopard, _) => (1.2), _ => (1.0), }, startangle: match (body.species, body.body_type) { @@ -549,6 +588,9 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Kelpie, _) => (0.95), (Horse, _) => (0.85), (Darkhound, _) => (1.2), + (Dreadhorn, _) => (0.85), + (Moose, _) => (0.9), + (Snowleopard, _) => (1.1), _ => (1.0), }, feed: match (body.species, body.body_type) { diff --git a/voxygen/anim/src/quadruped_medium/run.rs b/voxygen/anim/src/quadruped_medium/run.rs index 7d7b117e15..6867e1d4c6 100644 --- a/voxygen/anim/src/quadruped_medium/run.rs +++ b/voxygen/anim/src/quadruped_medium/run.rs @@ -40,8 +40,16 @@ impl Animation for RunAnimation { // let shortalt = (acc_vel * (1.0) * lab * speedmult + PI * 3.0 / 8.0 - 0.5).sin(); let look = Vec2::new( - (global_time + anim_time / 2.0).floor().mul(7331.0).sin() * 0.5, - (global_time + anim_time / 2.0).floor().mul(1337.0).sin() * 0.25, + (global_time / 2.0 + anim_time / 2.0) + .floor() + .mul(7331.0) + .sin() + * 0.5, + (global_time / 2.0 + anim_time / 2.0) + .floor() + .mul(1337.0) + .sin() + * 0.25, ); let speedadjust = if speed < 5.0 { 0.0 } else { speed / 24.0 }; diff --git a/voxygen/anim/src/quadruped_small/feed.rs b/voxygen/anim/src/quadruped_small/feed.rs index 74ef3e5acd..de98243678 100644 --- a/voxygen/anim/src/quadruped_small/feed.rs +++ b/voxygen/anim/src/quadruped_small/feed.rs @@ -29,8 +29,16 @@ impl Animation for FeedAnimation { let slow_alt = (anim_time * 3.5 + PI).sin(); let head_look = Vec2::new( - (global_time + anim_time / 2.0).floor().mul(7331.0).sin() * 1.0, - (global_time + anim_time / 2.0).floor().mul(1337.0).sin() * 0.5, + (global_time / 2.0 + anim_time / 2.0) + .floor() + .mul(7331.0) + .sin() + * 1.0, + (global_time / 2.0 + anim_time / 2.0) + .floor() + .mul(1337.0) + .sin() + * 0.5, ); next.chest.scale = Vec3::one() / 11.0 * s_a.scaler; diff --git a/voxygen/anim/src/quadruped_small/idle.rs b/voxygen/anim/src/quadruped_small/idle.rs index 046d7065ae..f21d5963e2 100644 --- a/voxygen/anim/src/quadruped_small/idle.rs +++ b/voxygen/anim/src/quadruped_small/idle.rs @@ -28,8 +28,16 @@ impl Animation for IdleAnimation { let slow_alt = (anim_time * 3.5 + PI / 2.0).sin(); let head_look = Vec2::new( - (global_time + anim_time / 8.0).floor().mul(7331.0).sin() * 0.5, - (global_time + anim_time / 8.0).floor().mul(1337.0).sin() * 0.25, + (global_time / 2.0 + anim_time / 8.0) + .floor() + .mul(7331.0) + .sin() + * 0.5, + (global_time / 2.0 + anim_time / 8.0) + .floor() + .mul(1337.0) + .sin() + * 0.25, ); next.head.position = Vec3::new(0.0, s_a.head.0, s_a.head.1 + slow * 0.2); diff --git a/voxygen/anim/src/quadruped_small/mod.rs b/voxygen/anim/src/quadruped_small/mod.rs index 322d5d4ccc..31bbfbbb72 100644 --- a/voxygen/anim/src/quadruped_small/mod.rs +++ b/voxygen/anim/src/quadruped_small/mod.rs @@ -132,6 +132,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Hare, Male) => (3.0, 2.0), (Hare, Female) => (2.5, 3.0), (Dog, _) => (3.0, 4.5), + (Goat, _) => (3.5, 4.0), }, chest: match (body.species, body.body_type) { (Pig, _) => (0.0, 6.0), @@ -161,6 +162,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Hare, Male) => (-2.0, 7.0), (Hare, Female) => (-2.0, 6.0), (Dog, _) => (-2.0, 9.5), + (Goat, _) => (2.0, 7.5), }, feet_f: match (body.species, body.body_type) { (Pig, _) => (4.5, 3.5, -1.0), @@ -190,6 +192,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Hare, Male) => (3.0, 1.0, -3.0), (Hare, Female) => (3.0, 0.5, -4.0), (Dog, _) => (3.5, 3.0, -2.5), + (Goat, _) => (3.0, 2.5, -3.5), }, feet_b: match (body.species, body.body_type) { (Pig, _) => (3.5, -2.0, 0.0), @@ -219,6 +222,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Hare, Male) => (3.5, -1.0, -2.0), (Hare, Female) => (3.5, -3.0, -2.0), (Dog, _) => (3.0, -3.5, -2.5), + (Goat, _) => (3.0, -4.0, -2.0), }, tail: match (body.species, body.body_type) { (Pig, _) => (-4.5, 2.5), @@ -248,6 +252,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Hare, Male) => (-4.0, -1.0), (Hare, Female) => (-4.0, 2.0), (Dog, _) => (-5.0, 0.5), + (Goat, _) => (-7.0, 0.0), }, scaler: match (body.species, body.body_type) { (Pig, _) => (0.9), @@ -320,6 +325,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Porcupine, _) => (0.9), (Beaver, _) => (0.9), (Hare, _) => (0.8), + (Goat, _) => (0.8), _ => (1.0), }, spring: match (body.species, body.body_type) { @@ -344,6 +350,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Beaver, _) => (1.3), (Hare, Male) => (2.2), (Hare, Female) => (2.5), + (Goat, _) => (1.2), _ => (1.0), }, feed: match (body.species, body.body_type) { diff --git a/voxygen/anim/src/theropod/alpha.rs b/voxygen/anim/src/theropod/alpha.rs index ef2fb77811..a420a9832f 100644 --- a/voxygen/anim/src/theropod/alpha.rs +++ b/voxygen/anim/src/theropod/alpha.rs @@ -3,7 +3,6 @@ use super::{ SkeletonAttr, TheropodSkeleton, }; use common::states::utils::StageSection; -//use std::ops::Rem; pub struct AlphaAnimation; diff --git a/voxygen/anim/src/theropod/dash.rs b/voxygen/anim/src/theropod/dash.rs new file mode 100644 index 0000000000..e028f8f4c2 --- /dev/null +++ b/voxygen/anim/src/theropod/dash.rs @@ -0,0 +1,96 @@ +use super::{ + super::{vek::*, Animation}, + SkeletonAttr, TheropodSkeleton, +}; +use common::states::utils::StageSection; + +pub struct DashAnimation; + +impl Animation for DashAnimation { + type Dependency = (f32, f32, Option, f32); + type Skeleton = TheropodSkeleton; + + #[cfg(feature = "use-dyn-lib")] + const UPDATE_FN: &'static [u8] = b"theropod_dash\0"; + + #[cfg_attr(feature = "be-dyn-lib", export_name = "theropod_dash")] + fn update_skeleton_inner( + skeleton: &Self::Skeleton, + (_velocity, global_time, stage_section, timer): Self::Dependency, + anim_time: f32, + _rate: &mut f32, + _s_a: &SkeletonAttr, + ) -> Self::Skeleton { + let mut next = (*skeleton).clone(); + + let (movement1base, chargemovementbase, movement2base, movement3, legtell) = + match stage_section { + Some(StageSection::Buildup) => (anim_time.sqrt(), 0.0, 0.0, 0.0, anim_time), + Some(StageSection::Charge) => (1.0, 1.0, 0.0, 0.0, 0.0), + Some(StageSection::Swing) => (1.0, 1.0, anim_time.powi(4), 0.0, 1.0), + Some(StageSection::Recover) => (1.0, 1.0, 1.0, anim_time, 1.0), + _ => (0.0, 0.0, 0.0, 0.0, 0.0), + }; + let pullback = 1.0 - movement3; + let subtract = global_time - timer; + let check = subtract - subtract.trunc(); + let mirror = (check - 0.5).signum(); + let movement1 = mirror * movement1base * pullback; + let movement2 = mirror * movement2base * pullback; + let movement1abs = movement1base * pullback; + let movement2abs = movement2base * pullback; + let legtwitch = (legtell * 6.0).sin() * pullback; + let legswing = legtell * pullback; + let chargeanim = (chargemovementbase * anim_time * 15.0).sin(); + + next.head.orientation = + Quaternion::rotation_x(movement1abs * -0.3 + chargeanim * 0.02 + movement2abs * 0.9) + * Quaternion::rotation_y(movement1 * 0.1 + movement2 * 0.2); + next.neck.orientation = + Quaternion::rotation_x(movement1abs * -0.8 + chargeanim * 0.05 + movement2abs * 0.9) + * Quaternion::rotation_y(movement1 * 0.1 + movement2 * 0.1); + + next.jaw.orientation = Quaternion::rotation_x(movement1abs * -0.3 + movement2abs * 0.5); + + next.chest_front.orientation = Quaternion::rotation_x(movement1abs * -0.2); + next.chest_back.orientation = + Quaternion::rotation_x(movement1abs * 0.2 + chargeanim * -0.05); + + next.leg_l.orientation = Quaternion::rotation_x(movement1abs * -0.1); + + next.leg_r.orientation = Quaternion::rotation_x(movement1abs * -0.1); + next.foot_l.orientation = Quaternion::rotation_x(movement1abs * -0.3); + next.foot_r.orientation = Quaternion::rotation_x(movement1abs * -0.3); + + next.tail_front.orientation = + Quaternion::rotation_x( + 0.1 + movement1abs * -0.1 + chargeanim * -0.05 + movement2abs * -0.3, + ) * Quaternion::rotation_z(movement1 * -0.1 + movement2 * -0.2); + + next.tail_back.orientation = + Quaternion::rotation_x( + 0.1 + movement1abs * -0.1 + chargeanim * -0.05 + movement2abs * -0.3, + ) * Quaternion::rotation_z(movement1 * -0.1 + movement2 * -0.2); + + if legtell > 0.0 { + if mirror.is_sign_positive() { + next.leg_l.orientation = Quaternion::rotation_x(legswing * 1.1); + + next.foot_l.orientation = Quaternion::rotation_x(legswing * -1.1 + legtwitch * 0.5); + + next.leg_r.orientation = Quaternion::rotation_x(0.0); + + next.foot_r.orientation = Quaternion::rotation_x(0.0); + } else { + next.leg_l.orientation = Quaternion::rotation_x(0.0); + + next.foot_l.orientation = Quaternion::rotation_x(0.0); + + next.leg_r.orientation = Quaternion::rotation_x(legswing * 1.1); + + next.foot_r.orientation = Quaternion::rotation_x(legswing * -1.1 + legtwitch * 0.5); + } + }; + next + } +} diff --git a/voxygen/anim/src/theropod/idle.rs b/voxygen/anim/src/theropod/idle.rs index 8980af32e6..1f49f8e197 100644 --- a/voxygen/anim/src/theropod/idle.rs +++ b/voxygen/anim/src/theropod/idle.rs @@ -24,8 +24,16 @@ impl Animation for IdleAnimation { let breathe = (anim_time * 0.8).sin(); let head_look = Vec2::new( - (global_time + anim_time / 8.0).floor().mul(7331.0).sin() * 0.5, - (global_time + anim_time / 8.0).floor().mul(1337.0).sin() * 0.25, + (global_time / 2.0 + anim_time / 8.0) + .floor() + .mul(7331.0) + .sin() + * 0.5, + (global_time / 2.0 + anim_time / 8.0) + .floor() + .mul(1337.0) + .sin() + * 0.25, ); next.head.scale = Vec3::one() * 1.02; @@ -33,6 +41,12 @@ impl Animation for IdleAnimation { next.jaw.scale = Vec3::one() * 0.98; next.foot_l.scale = Vec3::one() * 0.96; next.foot_r.scale = Vec3::one() * 0.96; + next.leg_l.scale = Vec3::one() * 1.02; + next.leg_r.scale = Vec3::one() * 1.02; + next.hand_l.scale = Vec3::one() * 0.98; + next.hand_r.scale = Vec3::one() * 0.98; + next.tail_front.scale = Vec3::one() * 1.02; + next.tail_back.scale = Vec3::one() * 0.98; next.chest_front.scale = Vec3::one() / s_a.scaler; next.head.position = Vec3::new(0.0, s_a.head.0, s_a.head.1 + breathe * 0.3); @@ -40,7 +54,7 @@ impl Animation for IdleAnimation { * Quaternion::rotation_z(head_look.x); next.jaw.position = Vec3::new(0.0, s_a.jaw.0, s_a.jaw.1); - next.jaw.orientation = Quaternion::rotation_x(breathe * 0.05); + next.jaw.orientation = Quaternion::rotation_x(breathe * 0.05 - 0.05); next.neck.position = Vec3::new(0.0, s_a.neck.0, s_a.neck.1 + breathe * 0.2); next.neck.orientation = Quaternion::rotation_x(-0.1); diff --git a/voxygen/anim/src/theropod/mod.rs b/voxygen/anim/src/theropod/mod.rs index 200fac9839..66c9fb265b 100644 --- a/voxygen/anim/src/theropod/mod.rs +++ b/voxygen/anim/src/theropod/mod.rs @@ -1,13 +1,14 @@ pub mod alpha; pub mod beta; +pub mod dash; pub mod idle; pub mod jump; pub mod run; // Reexports pub use self::{ - alpha::AlphaAnimation, beta::BetaAnimation, idle::IdleAnimation, jump::JumpAnimation, - run::RunAnimation, + alpha::AlphaAnimation, beta::BetaAnimation, dash::DashAnimation, idle::IdleAnimation, + jump::JumpAnimation, run::RunAnimation, }; use super::{make_bone, vek::*, FigureBoneData, Skeleton}; @@ -128,6 +129,8 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Snowraptor, _) => (8.0, 5.0), (Woodraptor, _) => (8.0, 5.0), (Sunlizard, _) => (6.5, 3.5), + (Yale, _) => (7.0, 14.0), + (Ntouka, _) => (2.0, 2.5), }, jaw: match (body.species, body.body_type) { (Archaeos, _) => (1.0, -7.0), @@ -136,6 +139,8 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Snowraptor, _) => (0.0, -4.0), (Woodraptor, _) => (0.0, -4.0), (Sunlizard, _) => (2.0, -2.5), + (Yale, _) => (2.0, -9.5), + (Ntouka, _) => (0.0, -4.0), }, neck: match (body.species, body.body_type) { (Archaeos, _) => (4.5, -2.0), @@ -144,6 +149,8 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Snowraptor, _) => (4.0, 2.5), (Woodraptor, _) => (4.0, 2.5), (Sunlizard, _) => (2.5, 1.5), + (Yale, _) => (2.0, 4.0), + (Ntouka, _) => (4.0, 0.0), }, chest_front: match (body.species, body.body_type) { (Archaeos, _) => (0.0, 20.0), @@ -152,6 +159,8 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Snowraptor, _) => (0.0, 15.5), (Woodraptor, _) => (0.0, 15.5), (Sunlizard, _) => (0.0, 14.0), + (Yale, _) => (0.0, 19.5), + (Ntouka, _) => (0.0, 13.0), }, chest_back: match (body.species, body.body_type) { (Archaeos, _) => (-5.5, -1.0), @@ -160,6 +169,8 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Snowraptor, _) => (-3.0, 0.5), (Woodraptor, _) => (-3.0, 0.5), (Sunlizard, _) => (-2.0, 0.0), + (Yale, _) => (-3.0, -1.0), + (Ntouka, _) => (-4.5, 1.0), }, tail_front: match (body.species, body.body_type) { (Archaeos, _) => (-9.0, -1.5), @@ -168,6 +179,8 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Snowraptor, _) => (-9.5, -1.0), (Woodraptor, _) => (-9.5, -1.0), (Sunlizard, _) => (-8.5, -2.0), + (Yale, _) => (-9.5, -4.0), + (Ntouka, _) => (-9.5, -3.5), }, tail_back: match (body.species, body.body_type) { (Archaeos, _) => (-8.0, -0.5), @@ -176,6 +189,8 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Snowraptor, _) => (-10.5, 1.0), (Woodraptor, _) => (-10.5, 0.5), (Sunlizard, _) => (-10.0, -0.5), + (Yale, _) => (-5.0, -2.5), + (Ntouka, _) => (-9.5, -2.0), }, hand: match (body.species, body.body_type) { (Archaeos, _) => (3.0, 0.0, -4.0), @@ -184,6 +199,8 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Snowraptor, _) => (2.5, 3.0, 1.0), (Woodraptor, _) => (2.5, 3.0, 1.0), (Sunlizard, _) => (2.5, 1.5, -0.5), + (Yale, _) => (3.0, 2.0, -0.5), + (Ntouka, _) => (3.5, 3.0, -4.0), }, leg: match (body.species, body.body_type) { (Archaeos, _) => (2.5, -3.0, -4.0), @@ -192,6 +209,8 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Snowraptor, _) => (1.5, -2.5, -3.0), (Woodraptor, _) => (1.5, -2.5, -3.0), (Sunlizard, _) => (2.5, -2.5, -3.0), + (Yale, _) => (3.0, -3.5, -4.0), + (Ntouka, _) => (4.5, -5.5, -4.0), }, foot: match (body.species, body.body_type) { (Archaeos, _) => (3.0, -0.5, -7.0), @@ -200,6 +219,8 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Snowraptor, _) => (2.0, 0.0, -3.0), (Woodraptor, _) => (2.0, 0.0, -3.0), (Sunlizard, _) => (1.0, -0.5, -2.5), + (Yale, _) => (1.5, 1.0, -3.5), + (Ntouka, _) => (1.5, -1.0, -2.5), }, scaler: match (body.species, body.body_type) { (Archaeos, _) => (3.0), @@ -208,6 +229,8 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Snowraptor, _) => (8.0), (Woodraptor, _) => (8.0), (Sunlizard, _) => (8.0), + (Yale, _) => (7.0), + (Ntouka, _) => (3.0), }, } } diff --git a/voxygen/src/scene/figure/mod.rs b/voxygen/src/scene/figure/mod.rs index bd0998d292..db5146c923 100644 --- a/voxygen/src/scene/figure/mod.rs +++ b/voxygen/src/scene/figure/mod.rs @@ -3151,6 +3151,36 @@ impl FigureMgr { ), } }, + CharacterState::DashMelee(s) => { + let stage_time = s.timer.as_secs_f32(); + let stage_progress = match s.stage_section { + StageSection::Buildup => { + stage_time / s.static_data.buildup_duration.as_secs_f32() + }, + StageSection::Charge => { + stage_time / s.static_data.charge_duration.as_secs_f32() + }, + StageSection::Swing => { + stage_time / s.static_data.swing_duration.as_secs_f32() + }, + StageSection::Recover => { + stage_time / s.static_data.recover_duration.as_secs_f32() + }, + _ => 0.0, + }; + anim::theropod::DashAnimation::update_skeleton( + &target_base, + ( + vel.0.magnitude(), + time, + Some(s.stage_section), + state.state_time, + ), + stage_progress, + &mut state_animation_rate, + skeleton_attr, + ) + }, // TODO! _ => target_base, }; diff --git a/world/src/layer/mod.rs b/world/src/layer/mod.rs index 24c38c3b6a..854eb18072 100644 --- a/world/src/layer/mod.rs +++ b/world/src/layer/mod.rs @@ -286,6 +286,10 @@ pub fn apply_caves_supplement<'a>( 0 => comp::biped_large::Species::Ogre, 1 => comp::biped_large::Species::Cyclops, 2 => comp::biped_large::Species::Wendigo, + 3 => match dynamic_rng.gen_range(0..2) { + 0 => comp::biped_large::Species::Blueoni, + _ => comp::biped_large::Species::Redoni, + }, _ => comp::biped_large::Species::Troll, }; comp::biped_large::Body::random_with(dynamic_rng, &species).into() diff --git a/world/src/layer/wildlife.rs b/world/src/layer/wildlife.rs index dc083afe85..0516bfcbb6 100644 --- a/world/src/layer/wildlife.rs +++ b/world/src/layer/wildlife.rs @@ -71,10 +71,16 @@ pub fn apply_wildlife_supplement<'a, R: Rng>( Entry { make_entity: |pos, rng| { EntityInfo::at(pos) - .with_body(match rng.gen_range(0..2) { + .with_body(match rng.gen_range(0..4) { 0 => { theropod::Body::random_with(rng, &theropod::Species::Snowraptor).into() }, + 1 => quadruped_medium::Body::random_with( + rng, + &quadruped_medium::Species::Snowleopard, + ) + .into(), + 2 => theropod::Body::random_with(rng, &theropod::Species::Yale).into(), _ => quadruped_medium::Body::random_with( rng, &quadruped_medium::Species::Grolgar, @@ -113,6 +119,43 @@ pub fn apply_wildlife_supplement<'a, R: Rng>( is_underwater: false, get_density: |c, _col| close(c.temp, CONFIG.snow_temp, 0.15) * BASE_DENSITY * 0.1, }, + // Tundra rock solitary ennemies + Entry { + make_entity: |pos, rng| { + EntityInfo::at(pos) + .with_body( + quadruped_low::Body::random_with(rng, &quadruped_low::Species::Rocksnapper) + .into(), + ) + .with_alignment(Alignment::Enemy) + }, + group_size: 1..2, + is_underwater: false, + get_density: |c, col| { + close(c.temp, CONFIG.snow_temp, 0.15) * BASE_DENSITY * col.rock * 1.0 + }, + }, + // Taiga rare solitary ennemies + Entry { + make_entity: |pos, rng| { + EntityInfo::at(pos) + .with_body(match rng.gen_range(0..3) { + 0 => biped_large::Body::random_with(rng, &biped_large::Species::Wendigo) + .into(), + _ => quadruped_medium::Body::random_with( + rng, + &quadruped_medium::Species::Dreadhorn, + ) + .into(), + }) + .with_alignment(Alignment::Enemy) + }, + group_size: 1..2, + is_underwater: false, + get_density: |c, col| { + close(c.temp, CONFIG.snow_temp + 0.2, 0.2) * col.tree_density * BASE_DENSITY * 0.2 + }, + }, // Taiga pack ennemies Entry { make_entity: |pos, rng| { @@ -160,7 +203,7 @@ pub fn apply_wildlife_supplement<'a, R: Rng>( Entry { make_entity: |pos, rng| { EntityInfo::at(pos) - .with_body(match rng.gen_range(0..4) { + .with_body(match rng.gen_range(0..5) { 0 => { bird_medium::Body::random_with(rng, &bird_medium::Species::Eagle).into() }, @@ -170,6 +213,11 @@ pub fn apply_wildlife_supplement<'a, R: Rng>( body_type: quadruped_small::BodyType::Female, } .into(), + 3 => quadruped_medium::Body::random_with( + rng, + &quadruped_medium::Species::Moose, + ) + .into(), _ => quadruped_medium::Body::random_with( rng, &quadruped_medium::Species::Tuskram, @@ -182,22 +230,6 @@ pub fn apply_wildlife_supplement<'a, R: Rng>( is_underwater: false, get_density: |c, _col| close(c.temp, CONFIG.snow_temp + 0.2, 0.6) * BASE_DENSITY * 5.0, }, - // Tundra rock solitary ennemies - Entry { - make_entity: |pos, rng| { - EntityInfo::at(pos) - .with_body( - quadruped_low::Body::random_with(rng, &quadruped_low::Species::Rocksnapper) - .into(), - ) - .with_alignment(Alignment::Enemy) - }, - group_size: 1..2, - is_underwater: false, - get_density: |c, col| { - close(c.temp, CONFIG.snow_temp, 0.15) * BASE_DENSITY * col.rock * 1.0 - }, - }, // Temperate solitary ennemies Entry { make_entity: |pos, rng| { @@ -231,14 +263,17 @@ pub fn apply_wildlife_supplement<'a, R: Rng>( group_size: 1..2, is_underwater: false, get_density: |c, col| { - close(c.temp, CONFIG.temperate_temp, 0.35) * col.tree_density * BASE_DENSITY * 1.0 + close(c.temp, CONFIG.temperate_temp + 0.1, 0.5) + * col.tree_density + * BASE_DENSITY + * 1.0 }, }, // Temperate pack wild Entry { make_entity: |pos, rng| { EntityInfo::at(pos) - .with_body(match rng.gen_range(0..12) { + .with_body(match rng.gen_range(0..13) { 0 => quadruped_medium::Body::random_with( rng, &quadruped_medium::Species::Deer, @@ -290,6 +325,10 @@ pub fn apply_wildlife_supplement<'a, R: Rng>( &quadruped_medium::Species::Cattle, ) .into(), + 11 => { + quadruped_small::Body::random_with(rng, &quadruped_small::Species::Goat) + .into() + }, _ => bird_medium::Body::random_with(rng, &bird_medium::Species::Chicken) .into(), }) @@ -298,8 +337,8 @@ pub fn apply_wildlife_supplement<'a, R: Rng>( group_size: 1..8, is_underwater: false, get_density: |c, _col| { - close(c.temp, CONFIG.temperate_temp, 0.5) - * close(c.humidity, CONFIG.forest_hum, 0.4) + close(c.temp, CONFIG.temperate_temp + 0.1, 0.6) + * close(c.humidity, CONFIG.forest_hum, 0.6) //* col.tree_density * BASE_DENSITY * 4.0 @@ -309,15 +348,15 @@ pub fn apply_wildlife_supplement<'a, R: Rng>( Entry { make_entity: |pos, rng| { EntityInfo::at(pos) - .with_body(match rng.gen_range(0..13) { + .with_body(match rng.gen_range(0..11) { 0 => quadruped_small::Body { species: quadruped_small::Species::Fox, body_type: quadruped_small::BodyType::Male, } .into(), - 1 => quadruped_small::Body::random_with( + 1 => quadruped_medium::Body::random_with( rng, - &quadruped_small::Species::Quokka, + &quadruped_medium::Species::Donkey, ) .into(), 2 => { @@ -350,21 +389,11 @@ pub fn apply_wildlife_supplement<'a, R: Rng>( &quadruped_medium::Species::Hirdrasil, ) .into(), - 9 => quadruped_medium::Body::random_with( - rng, - &quadruped_medium::Species::Kelpie, - ) - .into(), - 10 => quadruped_small::Body::random_with( + 9 => quadruped_small::Body::random_with( rng, &quadruped_small::Species::Truffler, ) .into(), - 11 => quadruped_medium::Body::random_with( - rng, - &quadruped_medium::Species::Donkey, - ) - .into(), _ => quadruped_small::Body::random_with( rng, &quadruped_small::Species::Batfox, @@ -376,9 +405,9 @@ pub fn apply_wildlife_supplement<'a, R: Rng>( group_size: 1..2, is_underwater: false, get_density: |c, _col| { - close(c.temp, CONFIG.temperate_temp, 0.5) + close(c.temp, CONFIG.temperate_temp + 0.1, 0.6) * BASE_DENSITY - * close(c.humidity, CONFIG.forest_hum, 0.4) + * close(c.humidity, CONFIG.forest_hum, 0.6) * 8.0 }, }, @@ -406,7 +435,7 @@ pub fn apply_wildlife_supplement<'a, R: Rng>( Entry { make_entity: |pos, rng| { EntityInfo::at(pos) - .with_body(match rng.gen_range(0..3) { + .with_body(match rng.gen_range(0..4) { 0 => quadruped_small::Body::random_with( rng, &quadruped_small::Species::Beaver, @@ -417,6 +446,11 @@ pub fn apply_wildlife_supplement<'a, R: Rng>( body_type: quadruped_low::BodyType::Female, } .into(), + 2 => quadruped_medium::Body::random_with( + rng, + &quadruped_medium::Species::Kelpie, + ) + .into(), _ => { bird_medium::Body::random_with(rng, &bird_medium::Species::Duck).into() }, @@ -478,11 +512,13 @@ pub fn apply_wildlife_supplement<'a, R: Rng>( Entry { make_entity: |pos, rng| { EntityInfo::at(pos) - .with_body(match rng.gen_range(0..2) { + .with_body(match rng.gen_range(0..3) { 0 => { quadruped_low::Body::random_with(rng, &quadruped_low::Species::Maneater) .into() }, + 1 => quadruped_low::Body::random_with(rng, &quadruped_low::Species::Asp) + .into(), _ => quadruped_medium::Body::random_with( rng, &quadruped_medium::Species::Tiger, @@ -494,8 +530,8 @@ pub fn apply_wildlife_supplement<'a, R: Rng>( group_size: 1..2, is_underwater: false, get_density: |c, _col| { - close(c.temp, CONFIG.tropical_temp + 0.1, 0.4) - * close(c.humidity, CONFIG.jungle_hum, 0.3) + close(c.temp, CONFIG.tropical_temp + 0.2, 0.2) + * close(c.humidity, CONFIG.jungle_hum, 0.2) * BASE_DENSITY * 3.0 }, @@ -522,17 +558,17 @@ pub fn apply_wildlife_supplement<'a, R: Rng>( group_size: 1..2, is_underwater: false, get_density: |c, _col| { - close(c.temp, CONFIG.tropical_temp + 0.1, 0.4) - * close(c.humidity, CONFIG.jungle_hum, 0.3) + close(c.temp, CONFIG.tropical_temp + 0.2, 0.2) + * close(c.humidity, CONFIG.jungle_hum, 0.2) * BASE_DENSITY - * 1.0 + * 0.8 }, }, // Jungle solitary wild Entry { make_entity: |pos, rng| { EntityInfo::at(pos) - .with_body(match rng.gen_range(0..4) { + .with_body(match rng.gen_range(0..5) { 0 => bird_medium::Body::random_with(rng, &bird_medium::Species::Parrot) .into(), 1 => { @@ -541,6 +577,11 @@ pub fn apply_wildlife_supplement<'a, R: Rng>( }, 2 => bird_medium::Body::random_with(rng, &bird_medium::Species::Cockatrice) .into(), + 3 => quadruped_small::Body::random_with( + rng, + &quadruped_small::Species::Quokka, + ) + .into(), _ => { quadruped_low::Body::random_with(rng, &quadruped_low::Species::Tortoise) .into() @@ -551,8 +592,8 @@ pub fn apply_wildlife_supplement<'a, R: Rng>( group_size: 1..2, is_underwater: false, get_density: |c, _col| { - close(c.temp, CONFIG.tropical_temp, 0.5) - * close(c.humidity, CONFIG.jungle_hum, 0.3) + close(c.temp, CONFIG.tropical_temp + 0.2, 0.3) + * close(c.humidity, CONFIG.jungle_hum, 0.2) * BASE_DENSITY * 8.0 }, @@ -669,15 +710,13 @@ pub fn apply_wildlife_supplement<'a, R: Rng>( Entry { make_entity: |pos, rng| { EntityInfo::at(pos) - .with_body(match rng.gen_range(0..4) { + .with_body(match rng.gen_range(0..3) { 0 => quadruped_medium::Body::random_with( rng, &quadruped_medium::Species::Bonerattler, ) .into(), - 1 => quadruped_low::Body::random_with(rng, &quadruped_low::Species::Asp) - .into(), - 2 => { + 1 => { theropod::Body::random_with(rng, &theropod::Species::Sandraptor).into() }, _ => quadruped_low::Body::random_with( @@ -701,12 +740,13 @@ pub fn apply_wildlife_supplement<'a, R: Rng>( Entry { make_entity: |pos, rng| { EntityInfo::at(pos) - .with_body(match rng.gen_range(0..2) { + .with_body(match rng.gen_range(0..3) { 0 => quadruped_low::Body::random_with( rng, &quadruped_low::Species::Lavadrake, ) .into(), + 1 => theropod::Body::random_with(rng, &theropod::Species::Ntouka).into(), _ => theropod::Body::random_with(rng, &theropod::Species::Archaeos).into(), }) .with_alignment(Alignment::Enemy) @@ -717,7 +757,7 @@ pub fn apply_wildlife_supplement<'a, R: Rng>( close(c.temp, CONFIG.desert_temp + 0.2, 0.3) * close(c.humidity, CONFIG.desert_hum, 0.5) * BASE_DENSITY - * 0.2 + * 0.15 }, }, // Desert river solitary enemy @@ -806,7 +846,7 @@ pub fn apply_wildlife_supplement<'a, R: Rng>( close(c.temp, CONFIG.desert_temp + 0.2, 0.3) * BASE_DENSITY * 5.0 }, }, - // Underwater + // Underwater temperate Entry { make_entity: |pos, rng| { EntityInfo::at(pos) @@ -827,6 +867,21 @@ pub fn apply_wildlife_supplement<'a, R: Rng>( close(c.temp, CONFIG.temperate_temp, 1.0) * col.tree_density * BASE_DENSITY * 5.0 }, }, + // Underwater taiga + Entry { + make_entity: |pos, rng| { + EntityInfo::at(pos) + .with_body( + fish_medium::Body::random_with(rng, &fish_medium::Species::Icepike).into(), + ) + .with_alignment(Alignment::Enemy) + }, + group_size: 1..3, + is_underwater: true, + get_density: |c, col| { + close(c.temp, CONFIG.snow_temp, 0.15) * col.tree_density * BASE_DENSITY * 5.0 + }, + }, ]; for y in 0..vol.size_xy().y as i32 { diff --git a/world/src/site/settlement/mod.rs b/world/src/site/settlement/mod.rs index 4cd1b10e42..0c297c3fa7 100644 --- a/world/src/site/settlement/mod.rs +++ b/world/src/site/settlement/mod.rs @@ -902,9 +902,11 @@ impl Settlement { object::Body::TrainingDummy.into() }, 0 => { - let species = match dynamic_rng.gen_range(0..3) { + let species = match dynamic_rng.gen_range(0..5) { 0 => quadruped_small::Species::Pig, 1 => quadruped_small::Species::Sheep, + 2 => quadruped_small::Species::Goat, + 3 => quadruped_small::Species::Dog, _ => quadruped_small::Species::Cat, }; is_human = false;