diff --git a/CHANGELOG.md b/CHANGELOG.md index 4e0e3836de..a10efd77ee 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -36,6 +36,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Support for modular weapons. - Saturation buff (healing from food) now queues - Coral reefs, kelp forests, and seagrass +- Talk animation +- New bosses in 5 lower dungeons += New enemies in 5 lower dungeons ### Changed diff --git a/assets/common/abilities/axe/doublestrike.ron b/assets/common/abilities/axe/doublestrike.ron index 314cda35a8..09f55a7eb4 100644 --- a/assets/common/abilities/axe/doublestrike.ron +++ b/assets/common/abilities/axe/doublestrike.ron @@ -9,9 +9,9 @@ ComboMelee( knockback: 8.0, range: 3.5, angle: 50.0, - base_buildup_duration: 0.35, + base_buildup_duration: 0.2, base_swing_duration: 0.075, - base_recover_duration: 0.4, + base_recover_duration: 0.15, forward_movement: 0.5, ), ( @@ -23,9 +23,9 @@ ComboMelee( knockback: 12.0, range: 3.5, angle: 30.0, - base_buildup_duration: 0.5, + base_buildup_duration: 0.25, base_swing_duration: 0.1, - base_recover_duration: 0.5, + base_recover_duration: 0.4, forward_movement: 0.25, ), ], diff --git a/assets/common/abilities/axesimple/dash.ron b/assets/common/abilities/axesimple/dash.ron new file mode 100644 index 0000000000..425bb21a9e --- /dev/null +++ b/assets/common/abilities/axesimple/dash.ron @@ -0,0 +1,19 @@ +DashMelee( + energy_cost: 0, + base_damage: 80, + scaled_damage: 160, + base_poise_damage: 0, + scaled_poise_damage: 0, + base_knockback: 8.0, + scaled_knockback: 7.0, + range: 2.0, + angle: 15.0, + energy_drain: 0, + forward_speed: 3.0, + buildup_duration: 0.5, + charge_duration: 3.0, + swing_duration: 0.35, + recover_duration: 1.2, + infinite_charge: true, + is_interruptible: true, +) diff --git a/assets/common/abilities/axesimple/doublestrike.ron b/assets/common/abilities/axesimple/doublestrike.ron new file mode 100644 index 0000000000..a48212625a --- /dev/null +++ b/assets/common/abilities/axesimple/doublestrike.ron @@ -0,0 +1,39 @@ +ComboMelee( + stage_data: [ + ( + stage: 1, + base_damage: 90, + damage_increase: 10, + base_poise_damage: 0, + poise_damage_increase: 0, + knockback: 4.0, + range: 3.5, + angle: 50.0, + base_buildup_duration: 0.6, + base_swing_duration: 0.12, + base_recover_duration: 0.6, + forward_movement: 3.5, + ), + ( + stage: 2, + base_damage: 130, + damage_increase: 15, + base_poise_damage: 0, + poise_damage_increase: 0, + knockback: 16.0, + range: 5.5, + angle: 15.0, + base_buildup_duration: 0.5, + base_swing_duration: 0.15, + base_recover_duration: 1.2, + forward_movement: 4.5, + ), + ], + initial_energy_gain: 0, + max_energy_gain: 0, + energy_increase: 0, + speed_increase: 0.0, + max_speed_increase: 0.0, + scales_from_combo: 0, + is_interruptible: false, +) \ No newline at end of file diff --git a/assets/common/abilities/bowsimple/basic.ron b/assets/common/abilities/bowsimple/basic.ron new file mode 100644 index 0000000000..cbc6e28040 --- /dev/null +++ b/assets/common/abilities/bowsimple/basic.ron @@ -0,0 +1,15 @@ +BasicRanged( + energy_cost: 0, + buildup_duration: 0.5, + recover_duration: 0.3, + projectile: Arrow( + damage: 70.0, + knockback: 5.0, + energy_regen: 40, + ), + projectile_body: Object(Arrow), + projectile_light: None, + projectile_gravity: Some(Gravity(0.2)), + projectile_speed: 100.0, + can_continue: true, +) diff --git a/assets/common/abilities/hammer/singlestrike.ron b/assets/common/abilities/hammer/singlestrike.ron index 1332b94e67..6462b08599 100644 --- a/assets/common/abilities/hammer/singlestrike.ron +++ b/assets/common/abilities/hammer/singlestrike.ron @@ -1,16 +1,16 @@ ComboMelee( stage_data: [( stage: 1, - base_damage: 130, + base_damage: 150, damage_increase: 10, base_poise_damage: 0, poise_damage_increase: 0, knockback: 10.0, range: 4.5, angle: 50.0, - base_buildup_duration: 0.6, - base_swing_duration: 0.15, - base_recover_duration: 0.3, + base_buildup_duration: 0.3, + base_swing_duration: 0.1, + base_recover_duration: 0.2, forward_movement: 0.0, )], initial_energy_gain: 50, diff --git a/assets/common/abilities/hammersimple/doublestrike.ron b/assets/common/abilities/hammersimple/doublestrike.ron new file mode 100644 index 0000000000..e0d62fa150 --- /dev/null +++ b/assets/common/abilities/hammersimple/doublestrike.ron @@ -0,0 +1,39 @@ +ComboMelee( + stage_data: [ + ( + stage: 1, + base_damage: 90, + damage_increase: 10, + base_poise_damage: 0, + poise_damage_increase: 0, + knockback: 4.0, + range: 3.5, + angle: 50.0, + base_buildup_duration: 0.6, + base_swing_duration: 0.08, + base_recover_duration: 0.6, + forward_movement: 3.5, + ), + ( + stage: 2, + base_damage: 130, + damage_increase: 15, + base_poise_damage: 0, + poise_damage_increase: 0, + knockback: 16.0, + range: 1.5, + angle: 30.0, + base_buildup_duration: 0.5, + base_swing_duration: 0.25, + base_recover_duration: 1.2, + forward_movement: 2.0, + ), + ], + initial_energy_gain: 0, + max_energy_gain: 0, + energy_increase: 0, + speed_increase: 0.0, + max_speed_increase: 0.0, + scales_from_combo: 0, + is_interruptible: false, +) \ No newline at end of file diff --git a/assets/common/abilities/spear/dash.ron b/assets/common/abilities/spear/dash.ron new file mode 100644 index 0000000000..39999a70b1 --- /dev/null +++ b/assets/common/abilities/spear/dash.ron @@ -0,0 +1,19 @@ +DashMelee( + energy_cost: 100, + base_damage: 80, + scaled_damage: 160, + base_poise_damage: 0, + scaled_poise_damage: 0, + base_knockback: 8.0, + scaled_knockback: 7.0, + range: 5.0, + angle: 45.0, + energy_drain: 0, + forward_speed: 2.0, + buildup_duration: 0.5, + charge_duration: 1.0, + swing_duration: 0.1, + recover_duration: 0.5, + infinite_charge: true, + is_interruptible: true, +) diff --git a/assets/common/abilities/spear/doublestrike.ron b/assets/common/abilities/spear/doublestrike.ron new file mode 100644 index 0000000000..17516e0fc7 --- /dev/null +++ b/assets/common/abilities/spear/doublestrike.ron @@ -0,0 +1,39 @@ +ComboMelee( + stage_data: [ + ( + stage: 1, + base_damage: 90, + damage_increase: 10, + base_poise_damage: 0, + poise_damage_increase: 0, + knockback: 8.0, + range: 3.5, + angle: 50.0, + base_buildup_duration: 0.35, + base_swing_duration: 0.075, + base_recover_duration: 0.4, + forward_movement: 1.0, + ), + ( + stage: 2, + base_damage: 130, + damage_increase: 15, + base_poise_damage: 0, + poise_damage_increase: 0, + knockback: 12.0, + range: 3.5, + angle: 30.0, + base_buildup_duration: 0.5, + base_swing_duration: 0.1, + base_recover_duration: 0.5, + forward_movement: 1.0, + ), + ], + initial_energy_gain: 0, + max_energy_gain: 0, + energy_increase: 30, + speed_increase: 0.0, + max_speed_increase: 0.0, + scales_from_combo: 2, + is_interruptible: false, +) \ No newline at end of file diff --git a/assets/common/abilities/staff/fireshockwave.ron b/assets/common/abilities/staff/fireshockwave.ron index 962c821700..e7e1f67a0f 100644 --- a/assets/common/abilities/staff/fireshockwave.ron +++ b/assets/common/abilities/staff/fireshockwave.ron @@ -2,7 +2,7 @@ Shockwave( energy_cost: 600, buildup_duration: 0.7, swing_duration: 0.1, - recover_duration: 0.3, + recover_duration: 0.2, damage: 200, poise_damage: 0, knockback: ( strength: 25.0, direction: Away), diff --git a/assets/common/abilities/staff/flamethrower.ron b/assets/common/abilities/staff/flamethrower.ron index 4d886dbff5..7bb592a9fb 100644 --- a/assets/common/abilities/staff/flamethrower.ron +++ b/assets/common/abilities/staff/flamethrower.ron @@ -1,15 +1,15 @@ BasicBeam( buildup_duration: 0.25, recover_duration: 0.25, - beam_duration: 0.5, + beam_duration: 1.0, base_hps: 0, base_dps: 150, tick_rate: 3.0, - range: 15.0, - max_angle: 22.5, + range: 20.0, + max_angle: 10.0, lifesteal_eff: 0.0, energy_regen: 0, energy_cost: 1, energy_drain: 350, orientation_behavior: Normal, -) \ No newline at end of file +) diff --git a/assets/common/abilities/staffsimple/firebomb.ron b/assets/common/abilities/staffsimple/firebomb.ron new file mode 100644 index 0000000000..16444d31a3 --- /dev/null +++ b/assets/common/abilities/staffsimple/firebomb.ron @@ -0,0 +1,18 @@ +BasicRanged( + energy_cost: 0, + buildup_duration: 0.5, + recover_duration: 0.35, + projectile: Fireball( + damage: 100.0, + radius: 5.0, + energy_regen: 50, + ), + projectile_body: Object(BoltFire), + /*projectile_light: Some(LightEmitter { + col: (1.0, 0.75, 0.11).into(), + ..Default::default() + }),*/ + projectile_gravity: Some(Gravity(0.3)), + projectile_speed: 60.0, + can_continue: true, +) diff --git a/assets/common/abilities/staffsimple/flamethrower.ron b/assets/common/abilities/staffsimple/flamethrower.ron new file mode 100644 index 0000000000..905372944f --- /dev/null +++ b/assets/common/abilities/staffsimple/flamethrower.ron @@ -0,0 +1,15 @@ +BasicBeam( + buildup_duration: 0.5, + recover_duration: 0.5, + beam_duration: 1.0, + base_hps: 0, + base_dps: 150, + tick_rate: 3.0, + range: 20.0, + max_angle: 0.1, + lifesteal_eff: 0.0, + energy_regen: 0, + energy_cost: 1, + energy_drain: 350, + orientation_behavior: Normal, +) diff --git a/assets/common/abilities/sword/triplestrike.ron b/assets/common/abilities/sword/triplestrike.ron index 06bf0c8667..ba9a689c71 100644 --- a/assets/common/abilities/sword/triplestrike.ron +++ b/assets/common/abilities/sword/triplestrike.ron @@ -9,9 +9,9 @@ ComboMelee( knockback: 10.0, range: 4.0, angle: 30.0, - base_buildup_duration: 0.35, - base_swing_duration: 0.1, - base_recover_duration: 0.4, + base_buildup_duration: 0.2, + base_swing_duration: 0.075, + base_recover_duration: 0.1, forward_movement: 0.5, ), ( @@ -22,10 +22,10 @@ ComboMelee( poise_damage_increase: 0, knockback: 12.0, range: 3.5, - angle: 180.0, - base_buildup_duration: 0.4, - base_swing_duration: 0.6, - base_recover_duration: 0.4, + angle: 40.0, + base_buildup_duration: 0.1, + base_swing_duration: 0.1, + base_recover_duration: 0.3, forward_movement: 0.0, ), ( @@ -37,9 +37,9 @@ ComboMelee( knockback: 14.0, range: 6.0, angle: 10.0, - base_buildup_duration: 0.5, - base_swing_duration: 0.2, - base_recover_duration: 0.3, + base_buildup_duration: 0.3, + base_swing_duration: 0.1, + base_recover_duration: 0.2, forward_movement: 1.2, ), ], diff --git a/assets/common/abilities/swordsimple/dash.ron b/assets/common/abilities/swordsimple/dash.ron new file mode 100644 index 0000000000..0da7356930 --- /dev/null +++ b/assets/common/abilities/swordsimple/dash.ron @@ -0,0 +1,19 @@ +DashMelee( + energy_cost: 100, + base_damage: 80, + scaled_damage: 160, + base_poise_damage: 0, + scaled_poise_damage: 0, + base_knockback: 8.0, + scaled_knockback: 7.0, + range: 5.0, + angle: 45.0, + energy_drain: 0, + forward_speed: 4.0, + buildup_duration: 0.25, + charge_duration: 0.6, + swing_duration: 0.1, + recover_duration: 0.5, + infinite_charge: true, + is_interruptible: true, +) diff --git a/assets/common/abilities/swordsimple/doublestrike.ron b/assets/common/abilities/swordsimple/doublestrike.ron new file mode 100644 index 0000000000..5d5b94f3d7 --- /dev/null +++ b/assets/common/abilities/swordsimple/doublestrike.ron @@ -0,0 +1,39 @@ +ComboMelee( + stage_data: [ + ( + stage: 1, + base_damage: 90, + damage_increase: 10, + base_poise_damage: 0, + poise_damage_increase: 0, + knockback: 8.0, + range: 3.5, + angle: 50.0, + base_buildup_duration: 0.4, + base_swing_duration: 0.06, + base_recover_duration: 0.5, + forward_movement: 2.5, + ), + ( + stage: 2, + base_damage: 130, + damage_increase: 15, + base_poise_damage: 0, + poise_damage_increase: 0, + knockback: 12.0, + range: 3.5, + angle: 30.0, + base_buildup_duration: 0.5, + base_swing_duration: 0.1, + base_recover_duration: 0.5, + forward_movement: 2.0, + ), + ], + initial_energy_gain: 0, + max_energy_gain: 0, + energy_increase: 0, + speed_increase: 0.0, + max_speed_increase: 0.0, + scales_from_combo: 0, + is_interruptible: false, +) \ No newline at end of file diff --git a/assets/common/abilities/unique/quadlowbeam/healingbeam.ron b/assets/common/abilities/unique/quadlowbeam/healingbeam.ron new file mode 100644 index 0000000000..8b6b235b6f --- /dev/null +++ b/assets/common/abilities/unique/quadlowbeam/healingbeam.ron @@ -0,0 +1,15 @@ +BasicBeam( + buildup_duration: 0.25, + recover_duration: 0.25, + beam_duration: 1.0, + base_hps: 60, + base_dps: 60, + tick_rate: 2.0, + range: 25.0, + max_angle: 1.0, + lifesteal_eff: 0.15, + energy_regen: 25, + energy_cost: 50, + energy_drain: 0, + orientation_behavior: Normal, +) \ No newline at end of file diff --git a/assets/common/abilities/unique/stonegolemfist/basic.ron b/assets/common/abilities/unique/stonegolemfist/basic.ron deleted file mode 100644 index 49d111c38d..0000000000 --- a/assets/common/abilities/unique/stonegolemfist/basic.ron +++ /dev/null @@ -1,11 +0,0 @@ -BasicMelee( - energy_cost: 0, - buildup_duration: 0.4, - swing_duration: 0.1, - recover_duration: 0.25, - knockback: 25.0, - base_damage: 200, - base_poise_damage: 0, - range: 5.0, - max_angle: 120.0, -) diff --git a/assets/common/abilities/unique/stonegolemfist/shockwave.ron b/assets/common/abilities/unique/stonegolemfist/shockwave.ron index e17d266d1a..d6f315fdab 100644 --- a/assets/common/abilities/unique/stonegolemfist/shockwave.ron +++ b/assets/common/abilities/unique/stonegolemfist/shockwave.ron @@ -1,14 +1,14 @@ Shockwave( energy_cost: 0, - buildup_duration: 0.5, - swing_duration: 0.2, - recover_duration: 0.8, + buildup_duration: 1.5, + swing_duration: 0.15, + recover_duration: 1.8, damage: 500, poise_damage: 0, knockback: (strength: 40.0, direction: TowardsUp), - shockwave_angle: 90.0, + shockwave_angle: 100.0, shockwave_vertical_angle: 90.0, - shockwave_speed: 50.0, + shockwave_speed: 65.0, shockwave_duration: 1.0, requires_ground: true, move_efficiency: 0.05, diff --git a/assets/common/abilities/unique/stonegolemfist/singlestrike.ron b/assets/common/abilities/unique/stonegolemfist/singlestrike.ron new file mode 100644 index 0000000000..07c68c1aea --- /dev/null +++ b/assets/common/abilities/unique/stonegolemfist/singlestrike.ron @@ -0,0 +1,25 @@ +ComboMelee( + stage_data: [ + ( + stage: 1, + base_damage: 300, + damage_increase: 0, + base_poise_damage: 0, + poise_damage_increase: 0, + knockback: 5.0, + range: 3.5, + angle: 60.0, + base_buildup_duration: 0.9, + base_swing_duration: 0.1, + base_recover_duration: 0.9, + forward_movement: 3.0, + ), + ], + initial_energy_gain: 0, + max_energy_gain: 0, + energy_increase: 0, + speed_increase: 0.0, + max_speed_increase: 0.0, + scales_from_combo: 0, + is_interruptible: false, +) diff --git a/assets/common/abilities/unique/tidalclaws/bubbles.ron b/assets/common/abilities/unique/tidalclaws/bubbles.ron new file mode 100644 index 0000000000..f8df4454c5 --- /dev/null +++ b/assets/common/abilities/unique/tidalclaws/bubbles.ron @@ -0,0 +1,14 @@ +BasicBeam( + buildup_duration: 0.4, + recover_duration: 0.25, + beam_duration: 0.5, + base_hps: 0, + base_dps: 150, + tick_rate: 3.0, + range: 15.0, + max_angle: 22.5, + lifesteal_eff: 0.0, + energy_regen: 0, + energy_cost: 0, + energy_drain: 0, +) \ No newline at end of file diff --git a/assets/common/abilities/unique/wendigomagic/frostbomb.ron b/assets/common/abilities/unique/wendigomagic/frostbomb.ron new file mode 100644 index 0000000000..9f53c6deb9 --- /dev/null +++ b/assets/common/abilities/unique/wendigomagic/frostbomb.ron @@ -0,0 +1,17 @@ +BasicRanged( + energy_cost: 0, + buildup_duration: 0.5, + recover_duration: 0.35, + projectile: Frostball( + damage: 100.0, + radius: 5.0, + ), + projectile_body: Object(BoltFire), // TODO: Get ice projectile model + /*projectile_light: Some(LightEmitter { + col: (1.0, 0.75, 0.11).into(), + ..Default::default() + }),*/ + projectile_gravity: Some(Gravity(0.3)), + projectile_speed: 60.0, + can_continue: true, +) diff --git a/assets/common/abilities/unique/wendigomagic/singlestrike.ron b/assets/common/abilities/unique/wendigomagic/singlestrike.ron new file mode 100644 index 0000000000..98007d86c9 --- /dev/null +++ b/assets/common/abilities/unique/wendigomagic/singlestrike.ron @@ -0,0 +1,25 @@ +ComboMelee( + stage_data: [ + ( + stage: 1, + base_damage: 100, + damage_increase: 0, + base_poise_damage: 0, + poise_damage_increase: 0, + knockback: 5.0, + range: 3.5, + angle: 30.0, + base_buildup_duration: 0.5, + base_swing_duration: 0.2, + base_recover_duration: 0.4, + forward_movement: 5.0, + ), + ], + initial_energy_gain: 0, + max_energy_gain: 0, + energy_increase: 0, + speed_increase: 0.0, + max_speed_increase: 0.0, + scales_from_combo: 0, + is_interruptible: false, +) diff --git a/assets/common/abilities/weapon_ability_manifest.ron b/assets/common/abilities/weapon_ability_manifest.ron index bf5bb437ac..7d13b63a8f 100644 --- a/assets/common/abilities/weapon_ability_manifest.ron +++ b/assets/common/abilities/weapon_ability_manifest.ron @@ -29,6 +29,39 @@ (Some(Bow(UnlockRepeater)), "common.abilities.bow.repeater"), ], ), + Spear: ( + primary: "common.abilities.spear.doublestrike", + secondary: "common.abilities.spear.dash", + abilities: [], + + ), + HammerSimple: ( + primary: "common.abilities.hammersimple.doublestrike", + secondary: "common.abilities.hammersimple.doublestrike", + abilities: [], + ), + AxeSimple: ( + primary: "common.abilities.axesimple.doublestrike", + secondary: "common.abilities.axesimple.dash", + abilities: [], + ), + SwordSimple: ( + primary: "common.abilities.swordsimple.doublestrike", + secondary: "common.abilities.swordsimple.dash", + abilities: [ + ], + ), + StaffSimple: ( + primary: "common.abilities.staffsimple.firebomb", + secondary: "common.abilities.staffsimple.flamethrower", + abilities: [], + ), + BowSimple: ( + primary: "common.abilities.bowsimple.basic", + secondary: "common.abilities.bowsimple.basic", + abilities: [ + ], + ), Staff: ( primary: "common.abilities.staff.firebomb", secondary: "common.abilities.staff.flamethrower", @@ -52,7 +85,7 @@ abilities: [], ), Unique(StoneGolemFist): ( - primary: "common.abilities.unique.stonegolemfist.basic", + primary: "common.abilities.unique.stonegolemfist.singlestrike", secondary: "common.abilities.unique.stonegolemfist.shockwave", abilities: [ (None, "common.abilities.unique.stonegolemfist.spin"), @@ -63,6 +96,16 @@ secondary: "common.abilities.unique.beastclaws.basic", abilities: [], ), + Unique(WendigoMagic): ( + primary: "common.abilities.unique.wendigomagic.frostbomb", + secondary: "common.abilities.unique.wendigomagic.singlestrike", + abilities: [], + ), + Unique(TidalClaws): ( + primary: "common.abilities.staff.flamethrower", + secondary: "common.abilities.unique.wendigomagic.singlestrike", + abilities: [], + ), Unique(QuadMedQuick): ( primary: "common.abilities.unique.quadmedquick.triplestrike", secondary: "common.abilities.unique.quadmedquick.dash", @@ -117,6 +160,13 @@ secondary: "common.abilities.unique.quadlowbasic.singlestrike", abilities: [], ), + Unique(QuadLowBeam): ( + primary: "common.abilities.unique.quadlowbeam.healingbeam", + secondary: "common.abilities.unique.quadlowbreathe.triplestrike", + abilities: [ + (None, "common.abilities.unique.quadlowbreathe.dash"), + ], + ), Unique(QuadSmallBasic): ( primary: "common.abilities.unique.quadsmallbasic.singlestrike", secondary: "common.abilities.unique.quadsmallbasic.singlestrike", diff --git a/assets/common/items/armor/belt/plate_leather_0.ron b/assets/common/items/armor/belt/plate_leather_0.ron new file mode 100644 index 0000000000..0478cd0930 --- /dev/null +++ b/assets/common/items/armor/belt/plate_leather_0.ron @@ -0,0 +1,13 @@ +ItemDef( + name: "Leather Plate Belt", + description: "Leather adorned with steel for better protection.", + kind: Armor(( + kind: Belt("PlateLeather"), + stats: ( + protection: Normal(4.0), + poise_resilience: Normal(8.0), + ), + )), + quality: Moderate, + tags: [], +) \ No newline at end of file diff --git a/assets/common/items/armor/chest/plate_leather_0.ron b/assets/common/items/armor/chest/plate_leather_0.ron new file mode 100644 index 0000000000..418bb7a532 --- /dev/null +++ b/assets/common/items/armor/chest/plate_leather_0.ron @@ -0,0 +1,13 @@ +ItemDef( + name: "Leather Plate Chest", + description: "Leather adorned with steel for better protection.", + kind: Armor(( + kind: Chest("PlateLeather"), + stats: ( + protection: Normal(25.0), + poise_resilience: Normal(40.0), + ), + )), + quality: High, + tags: [], +) \ No newline at end of file diff --git a/assets/common/items/armor/foot/plate_leather_0.ron b/assets/common/items/armor/foot/plate_leather_0.ron new file mode 100644 index 0000000000..79df40ad5d --- /dev/null +++ b/assets/common/items/armor/foot/plate_leather_0.ron @@ -0,0 +1,13 @@ +ItemDef( + name: "Leather Plate Boots", + description: "Leather adorned with steel for better protection.", + kind: Armor(( + kind: Foot("PlateLeather"), + stats: ( + protection: Normal(5.0), + poise_resilience: Normal(10.0), + ), + )), + quality: High, + tags: [], +) \ No newline at end of file diff --git a/assets/common/items/armor/hand/plate_leather_0.ron b/assets/common/items/armor/hand/plate_leather_0.ron new file mode 100644 index 0000000000..dac425fb98 --- /dev/null +++ b/assets/common/items/armor/hand/plate_leather_0.ron @@ -0,0 +1,13 @@ +ItemDef( + name: "Leather Plate Gloves", + description: "Leather adorned with steel for better protection.", + kind: Armor(( + kind: Hand("PlateLeather"), + stats: ( + protection: Normal(10.0), + poise_resilience: Normal(15.0), + ), + )), + quality: Moderate, + tags: [], +) \ No newline at end of file diff --git a/assets/common/items/armor/pants/plate_leather_0.ron b/assets/common/items/armor/pants/plate_leather_0.ron new file mode 100644 index 0000000000..0ba0823495 --- /dev/null +++ b/assets/common/items/armor/pants/plate_leather_0.ron @@ -0,0 +1,13 @@ +ItemDef( + name: "Leather Plate Chausses", + description: "Leather adorned with steel for better protection.", + kind: Armor(( + kind: Pants("PlateLeather"), + stats: ( + protection: Normal(20.0), + poise_resilience: Normal(26.0), + ), + )), + quality: Moderate, + tags: [], +) \ No newline at end of file diff --git a/assets/common/items/armor/shoulder/plate_leather_0.ron b/assets/common/items/armor/shoulder/plate_leather_0.ron new file mode 100644 index 0000000000..f01b48eb91 --- /dev/null +++ b/assets/common/items/armor/shoulder/plate_leather_0.ron @@ -0,0 +1,13 @@ +ItemDef( + name: "Leather Plate Shoulder Pad", + description: "Leather adorned with steel for better protection.", + kind: Armor(( + kind: Shoulder("PlateLeather"), + stats: ( + protection: Normal(15.0), + poise_resilience: Normal(20.0), + ), + )), + quality: Moderate, + tags: [], +) \ No newline at end of file diff --git a/assets/common/items/npc_armor/biped_small/adlet/chest/adlet_bow.ron b/assets/common/items/npc_armor/biped_small/adlet/chest/adlet_bow.ron new file mode 100644 index 0000000000..8f9d7b1e3c --- /dev/null +++ b/assets/common/items/npc_armor/biped_small/adlet/chest/adlet_bow.ron @@ -0,0 +1,13 @@ +ItemDef( + name: "Adlet", + description: "Ceremonial attire used by members.", + kind: Armor(( + kind: Chest("AdletBow"), + stats: ( + protection: Normal(12.0), + poise_resilience: Normal(1.0), + ), + )), + quality: Low, + tags: [], +) \ No newline at end of file diff --git a/assets/common/items/npc_armor/biped_small/adlet/chest/adlet_spear.ron b/assets/common/items/npc_armor/biped_small/adlet/chest/adlet_spear.ron new file mode 100644 index 0000000000..32e9cf138e --- /dev/null +++ b/assets/common/items/npc_armor/biped_small/adlet/chest/adlet_spear.ron @@ -0,0 +1,13 @@ +ItemDef( + name: "Adlet", + description: "Ceremonial attire used by members.", + kind: Armor(( + kind: Chest("AdletSpear"), + stats: ( + protection: Normal(12.0), + poise_resilience: Normal(1.0), + ), + )), + quality: Low, + tags: [], +) \ No newline at end of file diff --git a/assets/common/items/npc_armor/biped_small/adlet/foot/adlet.ron b/assets/common/items/npc_armor/biped_small/adlet/foot/adlet.ron new file mode 100644 index 0000000000..238195dfd2 --- /dev/null +++ b/assets/common/items/npc_armor/biped_small/adlet/foot/adlet.ron @@ -0,0 +1,13 @@ +ItemDef( + name: "Adlet", + description: "Ceremonial attire used by members.", + kind: Armor(( + kind: Foot("Adlet"), + stats: ( + protection: Normal(10.0), + poise_resilience: Normal(1.0), + ), + )), + quality: Low, + tags: [], +) \ No newline at end of file diff --git a/assets/common/items/npc_armor/biped_small/adlet/hand/adlet_bow.ron b/assets/common/items/npc_armor/biped_small/adlet/hand/adlet_bow.ron new file mode 100644 index 0000000000..f4dea6f36b --- /dev/null +++ b/assets/common/items/npc_armor/biped_small/adlet/hand/adlet_bow.ron @@ -0,0 +1,13 @@ +ItemDef( + name: "Adlet", + description: "Ceremonial attire used by members..", + kind: Armor(( + kind: Hand("AdletBow"), + stats: ( + protection: Normal(10.0), + poise_resilience: Normal(1.0), + ), + )), + quality: Low, + tags: [], +) \ No newline at end of file diff --git a/assets/common/items/npc_armor/biped_small/adlet/hand/adlet_spear.ron b/assets/common/items/npc_armor/biped_small/adlet/hand/adlet_spear.ron new file mode 100644 index 0000000000..6176a32a5e --- /dev/null +++ b/assets/common/items/npc_armor/biped_small/adlet/hand/adlet_spear.ron @@ -0,0 +1,13 @@ +ItemDef( + name: "Adlet", + description: "Ceremonial attire used by members..", + kind: Armor(( + kind: Hand("AdletSpear"), + stats: ( + protection: Normal(10.0), + poise_resilience: Normal(1.0), + ), + )), + quality: Low, + tags: [], +) \ No newline at end of file diff --git a/assets/common/items/npc_armor/biped_small/adlet/head/adlet_bow.ron b/assets/common/items/npc_armor/biped_small/adlet/head/adlet_bow.ron new file mode 100644 index 0000000000..a3e444510e --- /dev/null +++ b/assets/common/items/npc_armor/biped_small/adlet/head/adlet_bow.ron @@ -0,0 +1,13 @@ +ItemDef( + name: "Adlet", + description: "Ceremonial attire used by members.", + kind: Armor(( + kind: Head("AdletBow"), + stats: ( + protection: Normal(10.0), + poise_resilience: Normal(1.0), + ), + )), + quality: Low, + tags: [], +) \ No newline at end of file diff --git a/assets/common/items/npc_armor/biped_small/adlet/head/adlet_spear.ron b/assets/common/items/npc_armor/biped_small/adlet/head/adlet_spear.ron new file mode 100644 index 0000000000..88e0597aee --- /dev/null +++ b/assets/common/items/npc_armor/biped_small/adlet/head/adlet_spear.ron @@ -0,0 +1,13 @@ +ItemDef( + name: "Adlet", + description: "Ceremonial attire used by members.", + kind: Armor(( + kind: Head("AdletSpear"), + stats: ( + protection: Normal(10.0), + poise_resilience: Normal(1.0), + ), + )), + quality: Low, + tags: [], +) \ No newline at end of file diff --git a/assets/common/items/npc_armor/biped_small/adlet/pants/adlet_bow.ron b/assets/common/items/npc_armor/biped_small/adlet/pants/adlet_bow.ron new file mode 100644 index 0000000000..1f1db8648e --- /dev/null +++ b/assets/common/items/npc_armor/biped_small/adlet/pants/adlet_bow.ron @@ -0,0 +1,13 @@ +ItemDef( + name: "Adlet", + description: "Ceremonial attire used by members..", + kind: Armor(( + kind: Pants("AdletBow"), + stats: ( + protection: Normal(10.0), + poise_resilience: Normal(1.0), + ), + )), + quality: Low, + tags: [], +) \ No newline at end of file diff --git a/assets/common/items/npc_armor/biped_small/adlet/pants/adlet_spear.ron b/assets/common/items/npc_armor/biped_small/adlet/pants/adlet_spear.ron new file mode 100644 index 0000000000..89caf74ba7 --- /dev/null +++ b/assets/common/items/npc_armor/biped_small/adlet/pants/adlet_spear.ron @@ -0,0 +1,13 @@ +ItemDef( + name: "Adlet", + description: "Ceremonial attire used by members..", + kind: Armor(( + kind: Pants("AdletSpear"), + stats: ( + protection: Normal(10.0), + poise_resilience: Normal(1.0), + ), + )), + quality: Low, + tags: [], +) \ No newline at end of file diff --git a/assets/common/items/npc_armor/biped_small/adlet/tail/adlet.ron b/assets/common/items/npc_armor/biped_small/adlet/tail/adlet.ron new file mode 100644 index 0000000000..514356d9a1 --- /dev/null +++ b/assets/common/items/npc_armor/biped_small/adlet/tail/adlet.ron @@ -0,0 +1,13 @@ +ItemDef( + name: "Adlet", + description: "Ceremonial attire used by members.", + kind: Armor(( + kind: Belt("Adlet"), + stats: ( + protection: Normal(10.0), + poise_resilience: Normal(1.0), + ), + )), + quality: Low, + tags: [], +) \ No newline at end of file diff --git a/assets/common/items/npc_armor/biped_small/gnarling/chest/gnarling.ron b/assets/common/items/npc_armor/biped_small/gnarling/chest/gnarling.ron new file mode 100644 index 0000000000..33e0a3f95d --- /dev/null +++ b/assets/common/items/npc_armor/biped_small/gnarling/chest/gnarling.ron @@ -0,0 +1,13 @@ +ItemDef( + name: "Gnarling", + description: "Ceremonial attire used by members.", + kind: Armor(( + kind: Chest("Gnarling"), + stats: ( + protection: Normal(2.0), + poise_resilience: Normal(1.0), + ), + )), + quality: Low, + tags: [], +) \ No newline at end of file diff --git a/assets/common/items/npc_armor/biped_small/gnarling/foot/gnarling.ron b/assets/common/items/npc_armor/biped_small/gnarling/foot/gnarling.ron new file mode 100644 index 0000000000..e8e8930a9f --- /dev/null +++ b/assets/common/items/npc_armor/biped_small/gnarling/foot/gnarling.ron @@ -0,0 +1,13 @@ +ItemDef( + name: "Gnarling", + description: "Ceremonial attire used by members.", + kind: Armor(( + kind: Foot("Gnarling"), + stats: ( + protection: Normal(1.0), + poise_resilience: Normal(1.0), + ), + )), + quality: Low, + tags: [], +) \ No newline at end of file diff --git a/assets/common/items/npc_armor/biped_small/gnarling/hand/gnarling.ron b/assets/common/items/npc_armor/biped_small/gnarling/hand/gnarling.ron new file mode 100644 index 0000000000..517bf843d2 --- /dev/null +++ b/assets/common/items/npc_armor/biped_small/gnarling/hand/gnarling.ron @@ -0,0 +1,13 @@ +ItemDef( + name: "Gnarling", + description: "Ceremonial attire used by members..", + kind: Armor(( + kind: Hand("Gnarling"), + stats: ( + protection: Normal(1.0), + poise_resilience: Normal(1.0), + ), + )), + quality: Low, + tags: [], +) \ No newline at end of file diff --git a/assets/common/items/npc_armor/biped_small/gnarling/head/gnarling.ron b/assets/common/items/npc_armor/biped_small/gnarling/head/gnarling.ron new file mode 100644 index 0000000000..f92c5ae5c7 --- /dev/null +++ b/assets/common/items/npc_armor/biped_small/gnarling/head/gnarling.ron @@ -0,0 +1,13 @@ +ItemDef( + name: "Gnarling", + description: "Ceremonial attire used by members.", + kind: Armor(( + kind: Head("Gnarling"), + stats: ( + protection: Normal(1.0), + poise_resilience: Normal(1.0), + ), + )), + quality: Low, + tags: [], +) \ No newline at end of file diff --git a/assets/common/items/npc_armor/biped_small/gnarling/pants/gnarling.ron b/assets/common/items/npc_armor/biped_small/gnarling/pants/gnarling.ron new file mode 100644 index 0000000000..8faadbde6c --- /dev/null +++ b/assets/common/items/npc_armor/biped_small/gnarling/pants/gnarling.ron @@ -0,0 +1,13 @@ +ItemDef( + name: "Gnarling", + description: "Ceremonial attire used by members..", + kind: Armor(( + kind: Pants("Gnarling"), + stats: ( + protection: Normal(1.0), + poise_resilience: Normal(1.0), + ), + )), + quality: Low, + tags: [], +) \ No newline at end of file diff --git a/assets/common/items/npc_armor/biped_small/gnarling/tail/gnarling.ron b/assets/common/items/npc_armor/biped_small/gnarling/tail/gnarling.ron new file mode 100644 index 0000000000..e35e45d7f2 --- /dev/null +++ b/assets/common/items/npc_armor/biped_small/gnarling/tail/gnarling.ron @@ -0,0 +1,13 @@ +ItemDef( + name: "Gnarling", + description: "Ceremonial attire used by members.", + kind: Armor(( + kind: Belt("Gnarling"), + stats: ( + protection: Normal(1.0), + poise_resilience: Normal(1.0), + ), + )), + quality: Low, + tags: [], +) \ No newline at end of file diff --git a/assets/common/items/npc_armor/biped_small/haniwa/chest/haniwa.ron b/assets/common/items/npc_armor/biped_small/haniwa/chest/haniwa.ron new file mode 100644 index 0000000000..f1c8cae036 --- /dev/null +++ b/assets/common/items/npc_armor/biped_small/haniwa/chest/haniwa.ron @@ -0,0 +1,13 @@ +ItemDef( + name: "Haniwa", + description: "Ceremonial attire used by members.", + kind: Armor(( + kind: Chest("Haniwa"), + stats: ( + protection: Normal(23.0), + poise_resilience: Normal(1.0), + ), + )), + quality: Low, + tags: [], +) \ No newline at end of file diff --git a/assets/common/items/npc_armor/biped_small/haniwa/foot/haniwa.ron b/assets/common/items/npc_armor/biped_small/haniwa/foot/haniwa.ron new file mode 100644 index 0000000000..9184b2f94a --- /dev/null +++ b/assets/common/items/npc_armor/biped_small/haniwa/foot/haniwa.ron @@ -0,0 +1,13 @@ +ItemDef( + name: "Haniwa", + description: "Ceremonial attire used by members..", + kind: Armor(( + kind: Foot("Haniwa"), + stats: ( + protection: Normal(17.0), + poise_resilience: Normal(1.0), + ), + )), + quality: Low, + tags: [], +) \ No newline at end of file diff --git a/assets/common/items/npc_armor/biped_small/haniwa/hand/haniwa.ron b/assets/common/items/npc_armor/biped_small/haniwa/hand/haniwa.ron new file mode 100644 index 0000000000..f4a9dba2fd --- /dev/null +++ b/assets/common/items/npc_armor/biped_small/haniwa/hand/haniwa.ron @@ -0,0 +1,13 @@ +ItemDef( + name: "Haniwa", + description: "Ceremonial attire used by members..", + kind: Armor(( + kind: Hand("Haniwa"), + stats: ( + protection: Normal(17.0), + poise_resilience: Normal(1.0), + ), + )), + quality: Low, + tags: [], +) \ No newline at end of file diff --git a/assets/common/items/npc_armor/biped_small/haniwa/head/haniwa.ron b/assets/common/items/npc_armor/biped_small/haniwa/head/haniwa.ron new file mode 100644 index 0000000000..482d9566b2 --- /dev/null +++ b/assets/common/items/npc_armor/biped_small/haniwa/head/haniwa.ron @@ -0,0 +1,13 @@ +ItemDef( + name: "Haniwa", + description: "Ceremonial attire used by members.", + kind: Armor(( + kind: Head("Haniwa"), + stats: ( + protection: Normal(17.0), + poise_resilience: Normal(1.0), + ), + )), + quality: Low, + tags: [], +) \ No newline at end of file diff --git a/assets/common/items/npc_armor/biped_small/haniwa/pants/haniwa.ron b/assets/common/items/npc_armor/biped_small/haniwa/pants/haniwa.ron new file mode 100644 index 0000000000..0cd5e96f71 --- /dev/null +++ b/assets/common/items/npc_armor/biped_small/haniwa/pants/haniwa.ron @@ -0,0 +1,13 @@ +ItemDef( + name: "Haniwa", + description: "Ceremonial attire used by members..", + kind: Armor(( + kind: Pants("Haniwa"), + stats: ( + protection: Normal(17.0), + poise_resilience: Normal(1.0), + ), + )), + quality: Low, + tags: [], +) \ No newline at end of file diff --git a/assets/common/items/npc_armor/biped_small/kappa/chest/kappa.ron b/assets/common/items/npc_armor/biped_small/kappa/chest/kappa.ron new file mode 100644 index 0000000000..b0f700ea5b --- /dev/null +++ b/assets/common/items/npc_armor/biped_small/kappa/chest/kappa.ron @@ -0,0 +1,13 @@ +ItemDef( + name: "Kappa", + description: "Ceremonial attire used by members.", + kind: Armor(( + kind: Chest("Kappa"), + stats: ( + protection: Normal(2.0), + poise_resilience: Normal(1.0), + ), + )), + quality: Low, + tags: [], +) \ No newline at end of file diff --git a/assets/common/items/npc_armor/biped_small/kappa/foot/kappa.ron b/assets/common/items/npc_armor/biped_small/kappa/foot/kappa.ron new file mode 100644 index 0000000000..45f99913ce --- /dev/null +++ b/assets/common/items/npc_armor/biped_small/kappa/foot/kappa.ron @@ -0,0 +1,13 @@ +ItemDef( + name: "Kappa", + description: "Ceremonial attire used by members.", + kind: Armor(( + kind: Foot("Kappa"), + stats: ( + protection: Normal(2.0), + poise_resilience: Normal(1.0), + ), + )), + quality: Low, + tags: [], +) \ No newline at end of file diff --git a/assets/common/items/npc_armor/biped_small/kappa/hand/kappa.ron b/assets/common/items/npc_armor/biped_small/kappa/hand/kappa.ron new file mode 100644 index 0000000000..bf3f6a9cb1 --- /dev/null +++ b/assets/common/items/npc_armor/biped_small/kappa/hand/kappa.ron @@ -0,0 +1,13 @@ +ItemDef( + name: "Kappa", + description: "Ceremonial attire used by members..", + kind: Armor(( + kind: Hand("Kappa"), + stats: ( + protection: Normal(2.0), + poise_resilience: Normal(1.0), + ), + )), + quality: Low, + tags: [], +) \ No newline at end of file diff --git a/assets/common/items/npc_armor/biped_small/kappa/head/kappa.ron b/assets/common/items/npc_armor/biped_small/kappa/head/kappa.ron new file mode 100644 index 0000000000..ad80961c42 --- /dev/null +++ b/assets/common/items/npc_armor/biped_small/kappa/head/kappa.ron @@ -0,0 +1,13 @@ +ItemDef( + name: "Kappa", + description: "Ceremonial attire used by members.", + kind: Armor(( + kind: Head("Kappa"), + stats: ( + protection: Normal(2.0), + poise_resilience: Normal(1.0), + ), + )), + quality: Low, + tags: [], +) \ No newline at end of file diff --git a/assets/common/items/npc_armor/biped_small/kappa/pants/kappa.ron b/assets/common/items/npc_armor/biped_small/kappa/pants/kappa.ron new file mode 100644 index 0000000000..8dd3fe9087 --- /dev/null +++ b/assets/common/items/npc_armor/biped_small/kappa/pants/kappa.ron @@ -0,0 +1,13 @@ +ItemDef( + name: "Kappa", + description: "Ceremonial attire used by members..", + kind: Armor(( + kind: Pants("Kappa"), + stats: ( + protection: Normal(2.0), + poise_resilience: Normal(1.0), + ), + )), + quality: Low, + tags: [], +) \ No newline at end of file diff --git a/assets/common/items/npc_armor/biped_small/kappa/tail/kappa.ron b/assets/common/items/npc_armor/biped_small/kappa/tail/kappa.ron new file mode 100644 index 0000000000..a05d85356d --- /dev/null +++ b/assets/common/items/npc_armor/biped_small/kappa/tail/kappa.ron @@ -0,0 +1,13 @@ +ItemDef( + name: "Kappa", + description: "Ceremonial attire used by members.", + kind: Armor(( + kind: Belt("Kappa"), + stats: ( + protection: Normal(2.0), + poise_resilience: Normal(1.0), + ), + )), + quality: Low, + tags: [], +) \ No newline at end of file diff --git a/assets/common/items/npc_armor/biped_small/myrmidon/chest/myrmidon.ron b/assets/common/items/npc_armor/biped_small/myrmidon/chest/myrmidon.ron new file mode 100644 index 0000000000..06ec1ec5ef --- /dev/null +++ b/assets/common/items/npc_armor/biped_small/myrmidon/chest/myrmidon.ron @@ -0,0 +1,13 @@ +ItemDef( + name: "Myrmidon", + description: "Ceremonial attire used by members.", + kind: Armor(( + kind: Chest("Myrmidon"), + stats: ( + protection: Normal(36.0), + poise_resilience: Normal(1.0), + ), + )), + quality: Low, + tags: [], +) \ No newline at end of file diff --git a/assets/common/items/npc_armor/biped_small/myrmidon/foot/myrmidon.ron b/assets/common/items/npc_armor/biped_small/myrmidon/foot/myrmidon.ron new file mode 100644 index 0000000000..4c78a77279 --- /dev/null +++ b/assets/common/items/npc_armor/biped_small/myrmidon/foot/myrmidon.ron @@ -0,0 +1,13 @@ +ItemDef( + name: "Myrmidon", + description: "Ceremonial attire used by members..", + kind: Armor(( + kind: Foot("Myrmidon"), + stats: ( + protection: Normal(25.0), + poise_resilience: Normal(1.0), + ), + )), + quality: Low, + tags: [], +) \ No newline at end of file diff --git a/assets/common/items/npc_armor/biped_small/myrmidon/hand/myrmidon.ron b/assets/common/items/npc_armor/biped_small/myrmidon/hand/myrmidon.ron new file mode 100644 index 0000000000..87506fe835 --- /dev/null +++ b/assets/common/items/npc_armor/biped_small/myrmidon/hand/myrmidon.ron @@ -0,0 +1,13 @@ +ItemDef( + name: "Myrmidon", + description: "Ceremonial attire used by members..", + kind: Armor(( + kind: Hand("Myrmidon"), + stats: ( + protection: Normal(25.0), + poise_resilience: Normal(1.0), + ), + )), + quality: Low, + tags: [], +) \ No newline at end of file diff --git a/assets/common/items/npc_armor/biped_small/myrmidon/head/myrmidon.ron b/assets/common/items/npc_armor/biped_small/myrmidon/head/myrmidon.ron new file mode 100644 index 0000000000..de64307376 --- /dev/null +++ b/assets/common/items/npc_armor/biped_small/myrmidon/head/myrmidon.ron @@ -0,0 +1,13 @@ +ItemDef( + name: "Myrmidon", + description: "Ceremonial attire used by members.", + kind: Armor(( + kind: Head("Myrmidon"), + stats: ( + protection: Normal(25.0), + poise_resilience: Normal(1.0), + ), + )), + quality: Low, + tags: [], +) \ No newline at end of file diff --git a/assets/common/items/npc_armor/biped_small/myrmidon/pants/myrmidon.ron b/assets/common/items/npc_armor/biped_small/myrmidon/pants/myrmidon.ron new file mode 100644 index 0000000000..e6e5eaacb8 --- /dev/null +++ b/assets/common/items/npc_armor/biped_small/myrmidon/pants/myrmidon.ron @@ -0,0 +1,13 @@ +ItemDef( + name: "Myrmidon", + description: "Ceremonial attire used by members..", + kind: Armor(( + kind: Pants("Myrmidon"), + stats: ( + protection: Normal(25.0), + poise_resilience: Normal(1.0), + ), + )), + quality: Low, + tags: [], +) \ No newline at end of file diff --git a/assets/common/items/npc_armor/biped_small/myrmidon/tail/myrmidon.ron b/assets/common/items/npc_armor/biped_small/myrmidon/tail/myrmidon.ron new file mode 100644 index 0000000000..9662f9291d --- /dev/null +++ b/assets/common/items/npc_armor/biped_small/myrmidon/tail/myrmidon.ron @@ -0,0 +1,13 @@ +ItemDef( + name: "Myrmidon", + description: "Ceremonial attire used by members..", + kind: Armor(( + kind: Belt("Myrmidon"), + stats: ( + protection: Normal(25.0), + poise_resilience: Normal(1.0), + ), + )), + quality: Low, + tags: [], +) \ No newline at end of file diff --git a/assets/common/items/npc_armor/biped_small/sahagin/chest/sahagin.ron b/assets/common/items/npc_armor/biped_small/sahagin/chest/sahagin.ron new file mode 100644 index 0000000000..7792d4a6b4 --- /dev/null +++ b/assets/common/items/npc_armor/biped_small/sahagin/chest/sahagin.ron @@ -0,0 +1,13 @@ +ItemDef( + name: "Sahagin", + description: "Ceremonial attire used by members.", + kind: Armor(( + kind: Chest("Sahagin"), + stats: ( + protection: Normal(18.0), + poise_resilience: Normal(1.0), + ), + )), + quality: Low, + tags: [], +) \ No newline at end of file diff --git a/assets/common/items/npc_armor/biped_small/sahagin/foot/sahagin.ron b/assets/common/items/npc_armor/biped_small/sahagin/foot/sahagin.ron new file mode 100644 index 0000000000..3583b1055b --- /dev/null +++ b/assets/common/items/npc_armor/biped_small/sahagin/foot/sahagin.ron @@ -0,0 +1,13 @@ +ItemDef( + name: "Sahagin", + description: "Ceremonial attire used by members..", + kind: Armor(( + kind: Foot("Sahagin"), + stats: ( + protection: Normal(14.0), + poise_resilience: Normal(1.0), + ), + )), + quality: Low, + tags: [], +) \ No newline at end of file diff --git a/assets/common/items/npc_armor/biped_small/sahagin/hand/sahagin.ron b/assets/common/items/npc_armor/biped_small/sahagin/hand/sahagin.ron new file mode 100644 index 0000000000..b2ee494ea7 --- /dev/null +++ b/assets/common/items/npc_armor/biped_small/sahagin/hand/sahagin.ron @@ -0,0 +1,13 @@ +ItemDef( + name: "Sahagin", + description: "Ceremonial attire used by members..", + kind: Armor(( + kind: Hand("Sahagin"), + stats: ( + protection: Normal(14.0), + poise_resilience: Normal(1.0), + ), + )), + quality: Low, + tags: [], +) \ No newline at end of file diff --git a/assets/common/items/npc_armor/biped_small/sahagin/head/sahagin.ron b/assets/common/items/npc_armor/biped_small/sahagin/head/sahagin.ron new file mode 100644 index 0000000000..e6c8e5b94a --- /dev/null +++ b/assets/common/items/npc_armor/biped_small/sahagin/head/sahagin.ron @@ -0,0 +1,13 @@ +ItemDef( + name: "Sahagin", + description: "Ceremonial attire used by members.", + kind: Armor(( + kind: Head("Sahagin"), + stats: ( + protection: Normal(14.0), + poise_resilience: Normal(1.0), + ), + )), + quality: Low, + tags: [], +) \ No newline at end of file diff --git a/assets/common/items/npc_armor/biped_small/sahagin/pants/sahagin.ron b/assets/common/items/npc_armor/biped_small/sahagin/pants/sahagin.ron new file mode 100644 index 0000000000..a63f3b0b7e --- /dev/null +++ b/assets/common/items/npc_armor/biped_small/sahagin/pants/sahagin.ron @@ -0,0 +1,13 @@ +ItemDef( + name: "Sahagin", + description: "Ceremonial attire used by members..", + kind: Armor(( + kind: Pants("Sahagin"), + stats: ( + protection: Normal(14.0), + poise_resilience: Normal(1.0), + ), + )), + quality: Low, + tags: [], +) \ No newline at end of file diff --git a/assets/common/items/npc_armor/biped_small/sahagin/tail/sahagin.ron b/assets/common/items/npc_armor/biped_small/sahagin/tail/sahagin.ron new file mode 100644 index 0000000000..3ea6c9515f --- /dev/null +++ b/assets/common/items/npc_armor/biped_small/sahagin/tail/sahagin.ron @@ -0,0 +1,13 @@ +ItemDef( + name: "Sahagin", + description: "Ceremonial attire used by members..", + kind: Armor(( + kind: Belt("Sahagin"), + stats: ( + protection: Normal(14.0), + poise_resilience: Normal(1.0), + ), + )), + quality: Low, + tags: [], +) \ No newline at end of file diff --git a/assets/common/items/npc_weapons/axe/minotaur_axe.ron b/assets/common/items/npc_weapons/axe/minotaur_axe.ron new file mode 100644 index 0000000000..81fc250ae6 --- /dev/null +++ b/assets/common/items/npc_weapons/axe/minotaur_axe.ron @@ -0,0 +1,18 @@ +ItemDef( + name: "Minotaur Axe", + description: "Placeholder", + kind: Tool( + ( + kind: AxeSimple, + hands: Two, + stats: Direct(( + equip_time_millis: 500, + power: 1.8, + poise_strength: 1.00, + speed: 1.0 + )), + ) + ), + quality: Low, + tags: [], +) diff --git a/assets/common/items/npc_weapons/biped_small/adlet/adlet_bow.ron b/assets/common/items/npc_weapons/biped_small/adlet/adlet_bow.ron new file mode 100644 index 0000000000..4e0dc79778 --- /dev/null +++ b/assets/common/items/npc_weapons/biped_small/adlet/adlet_bow.ron @@ -0,0 +1,18 @@ +ItemDef( + name: "Adlet Bow", + description: "Strips of leather are wrapped around the handle.", + kind: Tool( + ( + kind: Bow, + hands: Two, + stats: Direct(( + equip_time_millis: 0, + power: 0.7, + poise_strength: 0.8, + speed: 0.3 + )), + ) + ), + quality: Moderate, + tags: [], +) diff --git a/assets/common/items/npc_weapons/biped_small/adlet/gnoll_staff.ron b/assets/common/items/npc_weapons/biped_small/adlet/gnoll_staff.ron new file mode 100644 index 0000000000..181c5d8382 --- /dev/null +++ b/assets/common/items/npc_weapons/biped_small/adlet/gnoll_staff.ron @@ -0,0 +1,18 @@ +ItemDef( + name: "Gnoll Staff", + description: "eekum bokum", + kind: Tool( + ( + kind: StaffSimple, + hands: Two, + stats: Direct(( + equip_time_millis: 0, + power: 0.7, + poise_strength: 0.8, + speed: 0.5 + )), + ) + ), + quality: Low, + tags: [], +) diff --git a/assets/common/items/npc_weapons/biped_small/adlet/wooden_spear.ron b/assets/common/items/npc_weapons/biped_small/adlet/wooden_spear.ron new file mode 100644 index 0000000000..a78f795b25 --- /dev/null +++ b/assets/common/items/npc_weapons/biped_small/adlet/wooden_spear.ron @@ -0,0 +1,18 @@ +ItemDef( + name: "Wooden Spear", + description: "Testing", + kind: Tool( + ( + kind: Spear, + hands: Two, + stats: Direct(( + equip_time_millis: 0, + power: 0.7, + poise_strength: 0.8, + speed: 1.0 + )), + ) + ), + quality: Low, + tags: [], +) diff --git a/assets/common/items/npc_weapons/biped_small/gnarling/adlet_bow.ron b/assets/common/items/npc_weapons/biped_small/gnarling/adlet_bow.ron new file mode 100644 index 0000000000..d7c6609b52 --- /dev/null +++ b/assets/common/items/npc_weapons/biped_small/gnarling/adlet_bow.ron @@ -0,0 +1,18 @@ +ItemDef( + name: "Adlet Bow", + description: "Strips of leather are wrapped around the handle.", + kind: Tool( + ( + kind: Bow, + hands: Two, + stats: Direct(( + equip_time_millis: 0, + power: 0.3, + poise_strength: 0.8, + speed: 0.7 + )), + ) + ), + quality: Moderate, + tags: [], +) diff --git a/assets/common/items/npc_weapons/biped_small/gnarling/gnoll_staff.ron b/assets/common/items/npc_weapons/biped_small/gnarling/gnoll_staff.ron new file mode 100644 index 0000000000..f3fdc1f4da --- /dev/null +++ b/assets/common/items/npc_weapons/biped_small/gnarling/gnoll_staff.ron @@ -0,0 +1,18 @@ +ItemDef( + name: "Gnoll Staff", + description: "eekum bokum", + kind: Tool( + ( + kind: StaffSimple, + hands: Two, + stats: Direct(( + equip_time_millis: 0, + power: 0.3, + poise_strength: 0.8, + speed: 0.8 + )), + ) + ), + quality: Low, + tags: [], +) diff --git a/assets/common/items/npc_weapons/biped_small/gnarling/wooden_spear.ron b/assets/common/items/npc_weapons/biped_small/gnarling/wooden_spear.ron new file mode 100644 index 0000000000..82f65af672 --- /dev/null +++ b/assets/common/items/npc_weapons/biped_small/gnarling/wooden_spear.ron @@ -0,0 +1,18 @@ +ItemDef( + name: "Wooden Spear", + description: "Testing", + kind: Tool( + ( + kind: Spear, + hands: Two, + stats: Direct(( + equip_time_millis: 0, + power: 0.3, + poise_strength: 0.8, + speed: 1.0 + )), + ) + ), + quality: Low, + tags: [], +) diff --git a/assets/common/items/npc_weapons/biped_small/haniwa/adlet_bow.ron b/assets/common/items/npc_weapons/biped_small/haniwa/adlet_bow.ron new file mode 100644 index 0000000000..02abadbeb0 --- /dev/null +++ b/assets/common/items/npc_weapons/biped_small/haniwa/adlet_bow.ron @@ -0,0 +1,16 @@ +ItemDef( + name: "Adlet Bow", + description: "Strips of leather are wrapped around the handle.", + kind: Tool(( + kind: Bow, + hands: Two, + stats: Direct(( + equip_time_millis: 0, + power: 1.6, + poise_strength: 0.8, + speed: 0.3 + )), + )), + quality: Moderate, + tags: [], +) diff --git a/assets/common/items/npc_weapons/biped_small/haniwa/gnoll_staff.ron b/assets/common/items/npc_weapons/biped_small/haniwa/gnoll_staff.ron new file mode 100644 index 0000000000..1dcbea0401 --- /dev/null +++ b/assets/common/items/npc_weapons/biped_small/haniwa/gnoll_staff.ron @@ -0,0 +1,16 @@ +ItemDef( + name: "Gnoll Staff", + description: "eekum bokum", + kind: Tool(( + kind: StaffSimple, + hands: Two, + stats: Direct(( + equip_time_millis: 0, + power: 1.8, + poise_strength: 0.8, + speed: 0.6 + )), + )), + quality: Low, + tags: [], +) diff --git a/assets/common/items/npc_weapons/biped_small/haniwa/wooden_spear.ron b/assets/common/items/npc_weapons/biped_small/haniwa/wooden_spear.ron new file mode 100644 index 0000000000..6b8c622c64 --- /dev/null +++ b/assets/common/items/npc_weapons/biped_small/haniwa/wooden_spear.ron @@ -0,0 +1,16 @@ +ItemDef( + name: "Wooden Spear", + description: "Testing", + kind: Tool(( + kind: Spear, + hands: Two, + stats: Direct(( + equip_time_millis: 0, + power: 1.4, + poise_strength: 0.8, + speed: 1.0 + )), + )), + quality: Low, + tags: [], +) diff --git a/assets/common/items/npc_weapons/biped_small/myrmidon/adlet_bow.ron b/assets/common/items/npc_weapons/biped_small/myrmidon/adlet_bow.ron new file mode 100644 index 0000000000..a0d0238b80 --- /dev/null +++ b/assets/common/items/npc_weapons/biped_small/myrmidon/adlet_bow.ron @@ -0,0 +1,18 @@ +ItemDef( + name: "Adlet Bow", + description: "Strips of leather are wrapped around the handle.", + kind: Tool( + ( + kind: Bow, + hands: Two, + stats: Direct(( + equip_time_millis: 0, + power: 1.1, + poise_strength: 0.8, + speed: 0.5 + )), + ) + ), + quality: Moderate, + tags: [], +) diff --git a/assets/common/items/npc_weapons/biped_small/myrmidon/gnoll_staff.ron b/assets/common/items/npc_weapons/biped_small/myrmidon/gnoll_staff.ron new file mode 100644 index 0000000000..ce0a8d0dea --- /dev/null +++ b/assets/common/items/npc_weapons/biped_small/myrmidon/gnoll_staff.ron @@ -0,0 +1,18 @@ +ItemDef( + name: "Gnoll Staff", + description: "eekum bokum", + kind: Tool( + ( + kind: StaffSimple, + hands: Two, + stats: Direct(( + equip_time_millis: 0, + power: 1.7, + poise_strength: 0.8, + speed: 0.7 + )), + ) + ), + quality: Low, + tags: [], +) diff --git a/assets/common/items/npc_weapons/biped_small/myrmidon/wooden_spear.ron b/assets/common/items/npc_weapons/biped_small/myrmidon/wooden_spear.ron new file mode 100644 index 0000000000..2894c9f361 --- /dev/null +++ b/assets/common/items/npc_weapons/biped_small/myrmidon/wooden_spear.ron @@ -0,0 +1,18 @@ +ItemDef( + name: "Wooden Spear", + description: "Testing", + kind: Tool( + ( + kind: Spear, + hands: Two, + stats: Direct(( + equip_time_millis: 0, + power: 1.7, + poise_strength: 0.8, + speed: 1.0 + )), + ) + ), + quality: Low, + tags: [], +) diff --git a/assets/common/items/npc_weapons/biped_small/sahagin/adlet_bow.ron b/assets/common/items/npc_weapons/biped_small/sahagin/adlet_bow.ron new file mode 100644 index 0000000000..ce348f0f10 --- /dev/null +++ b/assets/common/items/npc_weapons/biped_small/sahagin/adlet_bow.ron @@ -0,0 +1,18 @@ +ItemDef( + name: "Adlet Bow", + description: "Strips of leather are wrapped around the handle.", + kind: Tool( + ( + kind: Bow, + hands: Two, + stats: Direct(( + equip_time_millis: 0, + power: 1.1, + poise_strength: 0.8, + speed: 0.3 + )), + ) + ), + quality: Moderate, + tags: [], +) diff --git a/assets/common/items/npc_weapons/biped_small/sahagin/gnoll_staff.ron b/assets/common/items/npc_weapons/biped_small/sahagin/gnoll_staff.ron new file mode 100644 index 0000000000..435ac291ff --- /dev/null +++ b/assets/common/items/npc_weapons/biped_small/sahagin/gnoll_staff.ron @@ -0,0 +1,18 @@ +ItemDef( + name: "Gnoll Staff", + description: "eekum bokum", + kind: Tool( + ( + kind: StaffSimple, + hands: Two, + stats: Direct(( + equip_time_millis: 0, + power: 1.1, + poise_strength: 0.8, + speed: 0.8 + )), + ) + ), + quality: Low, + tags: [], +) diff --git a/assets/common/items/npc_weapons/biped_small/sahagin/wooden_spear.ron b/assets/common/items/npc_weapons/biped_small/sahagin/wooden_spear.ron new file mode 100644 index 0000000000..b346ba2068 --- /dev/null +++ b/assets/common/items/npc_weapons/biped_small/sahagin/wooden_spear.ron @@ -0,0 +1,18 @@ +ItemDef( + name: "Wooden Spear", + description: "Testing", + kind: Tool( + ( + kind: Spear, + hands: Two, + stats: Direct(( + equip_time_millis: 0, + power: 1.1, + poise_strength: 0.8, + speed: 1.0 + )), + ) + ), + quality: Low, + tags: [], +) diff --git a/assets/common/items/npc_weapons/bow/saurok_bow.ron b/assets/common/items/npc_weapons/bow/saurok_bow.ron index 8b52c2891c..37e3f8bea8 100644 --- a/assets/common/items/npc_weapons/bow/saurok_bow.ron +++ b/assets/common/items/npc_weapons/bow/saurok_bow.ron @@ -3,7 +3,7 @@ ItemDef( description: "Placeholder", kind: Tool( ( - kind: Bow, + kind: BowSimple, hands: Two, stats: Direct(( equip_time_millis: 500, diff --git a/assets/common/items/npc_weapons/hammer/cyclops_hammer.ron b/assets/common/items/npc_weapons/hammer/cyclops_hammer.ron index b128b795a7..7c10458ed1 100644 --- a/assets/common/items/npc_weapons/hammer/cyclops_hammer.ron +++ b/assets/common/items/npc_weapons/hammer/cyclops_hammer.ron @@ -3,7 +3,7 @@ ItemDef( description: "Placeholder", kind: Tool( ( - kind: Hammer, + kind: HammerSimple, hands: Two, stats: Direct(( equip_time_millis: 500, diff --git a/assets/common/items/npc_weapons/hammer/harvester_scythe.ron b/assets/common/items/npc_weapons/hammer/harvester_scythe.ron new file mode 100644 index 0000000000..cd37197f19 --- /dev/null +++ b/assets/common/items/npc_weapons/hammer/harvester_scythe.ron @@ -0,0 +1,18 @@ +ItemDef( + name: "Harvester Sythe", + description: "Placeholder", + kind: Tool( + ( + kind: HammerSimple, + hands: Two, + stats: Direct(( + equip_time_millis: 1, + power: 1.6, + poise_strength: 1.00, + speed: 1.0 + )), + ) + ), + quality: Low, + tags: [], +) diff --git a/assets/common/items/npc_weapons/hammer/ogre_hammer.ron b/assets/common/items/npc_weapons/hammer/ogre_hammer.ron index e6ff3fbc50..0ab8068dff 100644 --- a/assets/common/items/npc_weapons/hammer/ogre_hammer.ron +++ b/assets/common/items/npc_weapons/hammer/ogre_hammer.ron @@ -3,7 +3,7 @@ ItemDef( description: "Placeholder", kind: Tool( ( - kind: Hammer, + kind: HammerSimple, hands: Two, stats: Direct(( equip_time_millis: 500, diff --git a/assets/common/items/npc_weapons/hammer/troll_hammer.ron b/assets/common/items/npc_weapons/hammer/troll_hammer.ron index bd0cdc0598..1f04179292 100644 --- a/assets/common/items/npc_weapons/hammer/troll_hammer.ron +++ b/assets/common/items/npc_weapons/hammer/troll_hammer.ron @@ -3,7 +3,7 @@ ItemDef( description: "Placeholder", kind: Tool( ( - kind: Hammer, + kind: HammerSimple, hands: Two, stats: Direct(( equip_time_millis: 500, diff --git a/assets/common/items/npc_weapons/hammer/yeti_hammer.ron b/assets/common/items/npc_weapons/hammer/yeti_hammer.ron new file mode 100644 index 0000000000..bc8bdd9f16 --- /dev/null +++ b/assets/common/items/npc_weapons/hammer/yeti_hammer.ron @@ -0,0 +1,18 @@ +ItemDef( + name: "Yeti Hammer", + description: "Placeholder", + kind: Tool( + ( + kind: HammerSimple, + hands: Two, + stats: Direct(( + equip_time_millis: 0, + power: 2.0, + poise_strength: 1.00, + speed: 1.0 + )), + ) + ), + quality: Low, + tags: [], +) diff --git a/assets/common/items/npc_weapons/staff/mindflayer_staff.ron b/assets/common/items/npc_weapons/staff/mindflayer_staff.ron index 24c5ff3980..d371f99043 100644 --- a/assets/common/items/npc_weapons/staff/mindflayer_staff.ron +++ b/assets/common/items/npc_weapons/staff/mindflayer_staff.ron @@ -3,10 +3,10 @@ ItemDef( description: "Placeholder", kind: Tool( ( - kind: Staff, + kind: StaffSimple, hands: Two, stats: Direct(( - equip_time_millis: 300, + equip_time_millis: 1, power: 3.0, poise_strength: 1.00, speed: 1.5, diff --git a/assets/common/items/npc_weapons/staff/ogre_staff.ron b/assets/common/items/npc_weapons/staff/ogre_staff.ron index e4fa9b5e55..c4cca908ff 100644 --- a/assets/common/items/npc_weapons/staff/ogre_staff.ron +++ b/assets/common/items/npc_weapons/staff/ogre_staff.ron @@ -3,7 +3,7 @@ ItemDef( description: "Placeholder", kind: Tool( ( - kind: Staff, + kind: StaffSimple, hands: Two, stats: Direct(( equip_time_millis: 500, diff --git a/assets/common/items/npc_weapons/staff/saurok_staff.ron b/assets/common/items/npc_weapons/staff/saurok_staff.ron index be87572e33..8ee0b015e4 100644 --- a/assets/common/items/npc_weapons/staff/saurok_staff.ron +++ b/assets/common/items/npc_weapons/staff/saurok_staff.ron @@ -3,7 +3,7 @@ ItemDef( description: "Placeholder", kind: Tool( ( - kind: Staff, + kind: StaffSimple, hands: Two, stats: Direct(( equip_time_millis: 500, diff --git a/assets/common/items/npc_weapons/sword/dullahan_sword.ron b/assets/common/items/npc_weapons/sword/dullahan_sword.ron index a879869db7..d3b3ba1b8e 100644 --- a/assets/common/items/npc_weapons/sword/dullahan_sword.ron +++ b/assets/common/items/npc_weapons/sword/dullahan_sword.ron @@ -3,7 +3,7 @@ ItemDef( description: "Placehoder", kind: Tool( ( - kind: Sword, + kind: SwordSimple, hands: Two, stats: Direct(( equip_time_millis: 500, diff --git a/assets/common/items/npc_weapons/sword/saurok_sword.ron b/assets/common/items/npc_weapons/sword/saurok_sword.ron index 3d22dd8f9b..722280e1c3 100644 --- a/assets/common/items/npc_weapons/sword/saurok_sword.ron +++ b/assets/common/items/npc_weapons/sword/saurok_sword.ron @@ -3,7 +3,7 @@ ItemDef( description: "Placehoder", kind: Tool( ( - kind: Sword, + kind: SwordSimple, hands: Two, stats: Direct(( equip_time_millis: 500, diff --git a/assets/common/items/npc_weapons/unique/quadlowbeam.ron b/assets/common/items/npc_weapons/unique/quadlowbeam.ron new file mode 100644 index 0000000000..1fd8921aad --- /dev/null +++ b/assets/common/items/npc_weapons/unique/quadlowbeam.ron @@ -0,0 +1,18 @@ +ItemDef( + name: "Quad Small Beam", + description: "testing123", + kind: Tool( + ( + kind: Unique(QuadLowBeam), + hands: Two, + stats: Direct(( + equip_time_millis: 10, + power: 1.00, + poise_strength: 1.00, + speed: 1.00, + )), + ) + ), + quality: Low, + tags: [], +) diff --git a/assets/common/items/npc_weapons/unique/stone_golems_fist.ron b/assets/common/items/npc_weapons/unique/stone_golems_fist.ron index 6b75281246..1f811801a9 100644 --- a/assets/common/items/npc_weapons/unique/stone_golems_fist.ron +++ b/assets/common/items/npc_weapons/unique/stone_golems_fist.ron @@ -6,7 +6,7 @@ ItemDef( kind: Unique(StoneGolemFist), hands: Two, stats: Direct(( - equip_time_millis: 500, + equip_time_millis: 1, power: 1.00, poise_strength: 1.00, speed: 1.0 diff --git a/assets/common/items/npc_weapons/unique/tidal_claws.ron b/assets/common/items/npc_weapons/unique/tidal_claws.ron new file mode 100644 index 0000000000..4d8bf64ec5 --- /dev/null +++ b/assets/common/items/npc_weapons/unique/tidal_claws.ron @@ -0,0 +1,18 @@ +ItemDef( + name: "Tidal Claws", + description: "Snip snap", + kind: Tool( + ( + kind: Unique(TidalClaws), + hands: Two, + stats: Direct(( + equip_time_millis: 500, + power: 1.00, + poise_strength: 1.00, + speed: 1.0, + )), + ) + ), + quality: Low, + tags: [], +) diff --git a/assets/common/items/npc_weapons/unique/wendigo_magic.ron b/assets/common/items/npc_weapons/unique/wendigo_magic.ron new file mode 100644 index 0000000000..3892f757d0 --- /dev/null +++ b/assets/common/items/npc_weapons/unique/wendigo_magic.ron @@ -0,0 +1,18 @@ +ItemDef( + name: "Wendigo Magic", + description: "spook.", + kind: Tool( + ( + kind: Unique(WendigoMagic), + hands: Two, + stats: Direct(( + equip_time_millis: 500, + power: 1.00, + poise_strength: 1.00, + speed: 1.0, + )), + ) + ), + quality: Low, + tags: [], +) diff --git a/assets/common/loot_tables/loot_table_mindflayer.ron b/assets/common/loot_tables/loot_table_mindflayer.ron index 1f8469c089..7d5da8547c 100644 --- a/assets/common/loot_tables/loot_table_mindflayer.ron +++ b/assets/common/loot_tables/loot_table_mindflayer.ron @@ -12,8 +12,8 @@ (1, "common.items.weapons.hammer.cultist_purp_2h-0"), (1, "common.items.weapons.sword.cultist"), (0.25, "common.items.crafting_ing.mindflayer_bag_damaged"), - (0.01, "common.items.weapons.sceptre.root_evil"), + (0.2, "common.items.weapons.sceptre.root_evil"), // misc (1, "common.items.boss_drops.lantern"), - (0.1, "common.items.glider.glider_purp"), + (0.25, "common.items.glider.glider_purp"), ] diff --git a/assets/common/npc_names.ron b/assets/common/npc_names.ron index 1d068ea772..d8cda5f0bc 100644 --- a/assets/common/npc_names.ron +++ b/assets/common/npc_names.ron @@ -506,6 +506,34 @@ horse: ( keyword: "horse", generic: "Horse" + ), + barghest: ( + keyword: "barghest", + generic: "Barghest" + ), + cattle: ( + keyword: "cattle", + generic: "Cattle" + ), + darkhound: ( + keyword: "darkhound", + generic: "Darkhound" + ), + highland: ( + keyword: "highland", + generic: "Highland" + ), + yak: ( + keyword: "yak", + generic: "Yak" + ), + panda: ( + keyword: "panda", + generic: "Panda" + ), + bear: ( + keyword: "bear", + generic: "Bear" ) ) ), @@ -717,6 +745,10 @@ hare: ( keyword: "hare", generic: "Hare" + ), + dog: ( + keyword: "dog", + generic: "Dog" ) ) ), @@ -748,9 +780,9 @@ keyword: "eagle", generic: "Eagle" ), - snowyowl: ( - keyword: "snowyowl", - generic: "Snowy Owl" + owl: ( + keyword: "owl", + generic: "Owl" ), parrot: ( keyword: "parrot", @@ -809,6 +841,22 @@ mindflayer: ( keyword: "mindflayer", generic: "Mindflayer" + ), + minotaur: ( + keyword: "minotaur", + generic: "Minotaur" + ), + tidalwarrior: ( + keyword: "tidalwarrior", + generic: "Tidal Warrior" + ), + yeti: ( + keyword: "yeti", + generic: "Yeti" + ), + harvester: ( + keyword: "harvester", + generic: "Harvester" ) ) ), @@ -827,6 +875,10 @@ treant: ( keyword: "treant", generic: "Treant" + ), + claygolem: ( + keyword: "claygolem", + generic: "ClayGolem" ) ) ), @@ -857,6 +909,10 @@ raptor_wood: ( keyword: "raptor_wood", generic: "Wood Raptor" + ), + sunlizard: ( + keyword: "sunlizard", + generic: "Sun Lizard" ) ) ), @@ -881,6 +937,56 @@ ), species: () ), + biped_small: ( + body: ( + keyword: "biped_small", + names_0: [ + "Harvey" + ] + ), + species: ( + gnome: ( + keyword: "gnome", + generic: "Gnome" + ), + sahagin: ( + keyword: "sahagin", + generic: "Sahagin" + ), + adlet: ( + keyword: "adlet", + generic: "Adlet" + ), + gnarling: ( + keyword: "gnarling", + generic: "Gnarling" + ), + mandragora: ( + keyword: "mandragora", + generic: "Mandragora" + ), + kappa: ( + keyword: "kappa", + generic: "Kappa" + ), + cactid: ( + keyword: "cactid", + generic: "Cactid" + ), + gnoll: ( + keyword: "gnoll", + generic: "Gnoll" + ), + haniwa: ( + keyword: "haniwa", + generic: "Haniwa" + ), + myrmidon: ( + keyword: "myrmidon", + generic: "Myrmidon" + ) + ) + ), fish_small: ( body: ( keyword: "fish_small", @@ -892,6 +998,10 @@ clownfish: ( keyword: "clownfish", generic: "Clownfish" + ), + piranha: ( + keyword: "piranha", + generic: "Piranha" ) ) ), @@ -971,7 +1081,15 @@ lavadrake: ( keyword: "lavadrake", generic: "Lava Drake" - ) + ), + basilisk: ( + keyword: "basilisk", + generic: "Basilisk" + ), + deadwood: ( + keyword: "deadwood", + generic: "Deadwood" + ), ) ) ) diff --git a/assets/voxygen/item_image_manifest.ron b/assets/voxygen/item_image_manifest.ron index b54af98e32..c2e670c504 100644 --- a/assets/voxygen/item_image_manifest.ron +++ b/assets/voxygen/item_image_manifest.ron @@ -1207,6 +1207,31 @@ "voxel.armor.shoulder.steel_right-0", (0.0, 0.0, 0.0), (-90.0, 130.0, 0.0), 1.2, ), + //PlateLeather0 Armor + Armor(Chest("PlateLeather")): VoxTrans( + "voxel.armor.chest.plate_leather", + (0.0, 0.0, 0.0), (-90.0, 180.0, 0.0), 1.2, + ), + Armor(Pants("PlateLeather")): VoxTrans( + "voxel.armor.pants.plate_leather-0", + (0.0, 0.0, 0.0), (-90.0, 180.0, 0.0), 1.2, + ), + Armor(Belt("PlateLeather")): VoxTrans( + "voxel.armor.belt.plate_leather-0", + (0.0, 0.0, 0.0), (-90.0, 180.0, 0.0), 1.8, + ), + Armor(Foot("PlateLeather")): VoxTrans( + "voxel.armor.foot.plate_leather", + (0.0, 0.0, 0.0), (-95.0, 140.0, 0.0), 1.1, + ), + Armor(Hand("PlateLeather")): VoxTrans( + "voxel.armor.hand.plate_leather_right-0", + (0.0, -1.0, 0.0), (-90.0, 135.0, 0.0), 1.0, + ), + Armor(Shoulder("PlateLeather")): VoxTrans( + "voxel.armor.shoulder.plate_leather_right-0", + (0.0, 0.0, 0.0), (-90.0, 130.0, 0.0), 1.2, + ), //Leather0 Armor Armor(Chest("Leather0")): VoxTrans( "voxel.armor.chest.leather-0", diff --git a/assets/voxygen/shaders/particle-vert.glsl b/assets/voxygen/shaders/particle-vert.glsl index e7a9b75237..f33ece8ede 100644 --- a/assets/voxygen/shaders/particle-vert.glsl +++ b/assets/voxygen/shaders/particle-vert.glsl @@ -57,6 +57,8 @@ const int FLAMETHROWER = 15; const int FIRE_SHOCKWAVE = 16; const int FIRE_BOWL = 17; const int SNOW = 18; +const int EXPLOSION = 19; +const int ICE = 20; // meters per second squared (acceleration) const float earth_gravity = 9.807; @@ -86,6 +88,18 @@ float linear_scale(float factor) { return lifetime * factor; } +float percent() { + return lifetime / inst_lifespan; +} + +float slow_end(float factor) { + return (1 + factor) * percent() / (percent() + factor); +} + +float slow_start(float factor) { + return 1-(1 + factor) * (1-percent()) / ((1-percent()) + factor); +} + float start_end(float from, float to) { return mix(from, to, lifetime / inst_lifespan); } @@ -120,14 +134,14 @@ vec3 perp_axis2(vec3 axis1, vec3 axis2) { return normalize(vec3(axis1.y * axis2.z - axis1.z * axis2.y, axis1.z * axis2.x - axis1.x * axis2.z, axis1.x * axis2.y - axis1.y * axis2.x)); } -vec3 spiral_motion(vec3 line, float radius, float time_function) { +vec3 spiral_motion(vec3 line, float radius, float time_function, float frequency, float offset) { vec3 axis2 = perp_axis1(line); vec3 axis3 = perp_axis2(line, axis2); return line * time_function + vec3( - radius * cos(10 * time_function - inst_time) * axis2.x + radius * sin(10 * time_function - inst_time) * axis3.x, - radius * cos(10 * time_function - inst_time) * axis2.y + radius * sin(10 * time_function - inst_time) * axis3.y, - radius * cos(10 * time_function - inst_time) * axis2.z + radius * sin(10 * time_function - inst_time) * axis3.z); + radius * cos(frequency * time_function - offset) * axis2.x + radius * sin(frequency * time_function - offset) * axis3.x, + radius * cos(frequency * time_function - offset) * axis2.y + radius * sin(frequency * time_function - offset) * axis3.y, + radius * cos(frequency * time_function - offset) * axis2.z + radius * sin(frequency * time_function - offset) * axis3.z); } void main() { @@ -161,7 +175,7 @@ void main() { f_reflect = 0.0; // Fire doesn't reflect light, it emits it attr = Attr( linear_motion( - vec3(normalize(vec2(rand0, rand1)) * 0.25, 0.3), + vec3(0.0), vec3(rand2 * 0.1, rand3 * 0.1, 2.0 + rand4 * 1.0) ), vec3(1.0), @@ -309,36 +323,50 @@ void main() { } else if (inst_mode == HEALING_BEAM) { f_reflect = 0.0; attr = Attr( - spiral_motion(inst_dir, 0.3 * (floor(2 * rand0 + 0.5) - 0.5) * min(linear_scale(10), 1), lifetime / inst_lifespan), + spiral_motion(inst_dir, 0.3 * (floor(2 * rand0 + 0.5) - 0.5) * min(linear_scale(10), 1), lifetime / inst_lifespan, 10.0, inst_time), vec3((1.7 - 0.7 * abs(floor(2 * rand0 - 0.5) + 0.5)) * (1.5 + 0.5 * sin(tick.x * 10 - lifetime * 4))), - vec4(vec3(0.4, 2.7 + 0.4 * sin(tick.x * 8 - lifetime * 3 + 4), 0.5 + 0.6 * sin(tick.x * 7)), start_end(1.0, 0.0) /*0.3*/), + vec4(vec3(0.4, 1.6 + 0.3 * sin(tick.x * 10 - lifetime * 3 + 4), 1.0 + 0.15 * sin(tick.x * 5 - lifetime * 5)), 1 /*0.3*/), spin_in_axis(inst_dir, tick.z) ); } else if (inst_mode == ENERGY_NATURE) { f_reflect = 0.0; attr = Attr( - linear_motion( - vec3(rand0 * 1, rand1 * 1, rand2 * 1), - vec3(rand3 * 2, rand4 * 2, rand5 * 2) - ), - vec3(0.8), - vec4(vec3(0, 2.5, 1.5 + rand7 * 0.7), start_end(1.0, 0.0)), + inst_dir * slow_end(0.03) + spiral_motion(vec3(rand1, rand2, rand3), + 0.2 * (rand4 + 1.3) * slow_end(0.02), percent() * 3 * (rand4 + 4.0) + rand0, 1.0, 0.0), + vec3(1.0), + vec4(vec3(0, 2.5, 1.5 + rand7 * 0.7), 1), spin_in_axis(vec3(rand6, rand7, rand8), rand9 * 3) ); } else if (inst_mode == FLAMETHROWER) { f_reflect = 0.0; // Fire doesn't reflect light, it emits it attr = Attr( - (inst_dir * lifetime / inst_lifespan) + vec3(rand0, rand1, rand2) * (lifetime * 5 + 0.25), - vec3(0.6 + rand3 * 0.5 + lifetime / inst_lifespan * 5), - vec4(3, 1.6 + rand5 * 0.3 - 0.4 * lifetime / inst_lifespan, 0.2, start_end(1.0, 0.0) /*0.8 - 0.6 * lifetime / inst_lifespan*/), - spin_in_axis(vec3(rand6, rand7, rand8), lifetime / inst_lifespan * 10 + 3 * rand9) + (inst_dir * slow_end(1.5)) + vec3(rand0, rand1, rand2) * (lifetime * 5 + 0.25), + vec3((2.5 * (1 - slow_start(0.3)))), + vec4(3, 1.6 + rand5 * 0.3 - 0.4 * percent(), 0.2, 1), + spin_in_axis(vec3(rand6, rand7, rand8), percent() * 10 + 3 * rand9) + ); + } else if (inst_mode == EXPLOSION) { + f_reflect = 0.0; // Fire doesn't reflect light, it emits it + attr = Attr( + inst_dir * ((rand0+1.0)/2 + 0.4) * slow_end(2.0) + 0.3 * grav_vel(earth_gravity), + vec3((3 * (1 - slow_start(0.1)))), + vec4(3, 1.6 + rand5 * 0.3 - 0.4 * percent(), 0.2, 1), + spin_in_axis(vec3(rand6, rand7, rand8), percent() * 10 + 3 * rand9) + ); + } else if (inst_mode == ICE) { + f_reflect = 0.0; // Ice doesn't reflect to look like magic + attr = Attr( + inst_dir * ((rand0+1.0)/2 + 0.4) * slow_end(2.0) + 0.3 * grav_vel(earth_gravity), + vec3((3 * (1 - slow_start(0.1)))), + vec4(0.2, 1.6 + rand5 * 0.3 - 0.4 * percent(), 3, 1), + spin_in_axis(vec3(rand6, rand7, rand8), percent() * 10 + 3 * rand9) ); } else if (inst_mode == FIRE_SHOCKWAVE) { f_reflect = 0.0; // Fire doesn't reflect light, it emits it attr = Attr( vec3(rand0, rand1, lifetime * 10 + rand2), - vec3(1.6 + rand3 * 1.5 + 10 * (lifetime + inst_lifespan)), - vec4(3, 1.6 + rand7 * 0.3 - 5 * inst_lifespan + 2 * lifetime, 0.2, start_end(1.0, 0.0) /*0.8 - 3.5 * inst_lifespan*/), + vec3((5 * (1 - slow_start(0.5)))), + vec4(3, 1.6 + rand5 * 0.3 - 0.4 * percent(), 0.2, 1), spin_in_axis(vec3(rand3, rand4, rand5), rand6) ); } else { diff --git a/assets/voxygen/voxel/armor/belt/plate_leather-0.vox b/assets/voxygen/voxel/armor/belt/plate_leather-0.vox new file mode 100644 index 0000000000..e3cba85dea --- /dev/null +++ b/assets/voxygen/voxel/armor/belt/plate_leather-0.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d4d071794475d22a501307198b7fdfd3ecb66b9ee5f81e8b6159342de1a277d5 +size 1512 diff --git a/assets/voxygen/voxel/armor/chest/plate_leather.vox b/assets/voxygen/voxel/armor/chest/plate_leather.vox new file mode 100644 index 0000000000..9e22269162 --- /dev/null +++ b/assets/voxygen/voxel/armor/chest/plate_leather.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1ad7ded2bca4669dbf7d75dc0c83980ba39a8983128506a8b889e175c3300bb8 +size 2960 diff --git a/assets/voxygen/voxel/armor/foot/plate_leather.vox b/assets/voxygen/voxel/armor/foot/plate_leather.vox new file mode 100644 index 0000000000..7c172d26c3 --- /dev/null +++ b/assets/voxygen/voxel/armor/foot/plate_leather.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aa8613a586df0d85fa4dca1d6ea85c30b0172f98a1dd2fe00b5f509793ae2c7c +size 1520 diff --git a/assets/voxygen/voxel/armor/hand/plate_leather_left-0.vox b/assets/voxygen/voxel/armor/hand/plate_leather_left-0.vox new file mode 100644 index 0000000000..f232fbfffb --- /dev/null +++ b/assets/voxygen/voxel/armor/hand/plate_leather_left-0.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dea43ecec9fff1e25e6476349f2cc645ab6e72455fd2dad51b976817a437ee85 +size 1240 diff --git a/assets/voxygen/voxel/armor/hand/plate_leather_right-0.vox b/assets/voxygen/voxel/armor/hand/plate_leather_right-0.vox new file mode 100644 index 0000000000..f232fbfffb --- /dev/null +++ b/assets/voxygen/voxel/armor/hand/plate_leather_right-0.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dea43ecec9fff1e25e6476349f2cc645ab6e72455fd2dad51b976817a437ee85 +size 1240 diff --git a/assets/voxygen/voxel/armor/pants/plate_leather-0.vox b/assets/voxygen/voxel/armor/pants/plate_leather-0.vox new file mode 100644 index 0000000000..0d4faf35d7 --- /dev/null +++ b/assets/voxygen/voxel/armor/pants/plate_leather-0.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7eeb0069de98836f04e1949bc0abbe0b6de0c3a64b77dacbf5f82fc18a6ca6db +size 1944 diff --git a/assets/voxygen/voxel/armor/shoulder/plate_leather_left-0.vox b/assets/voxygen/voxel/armor/shoulder/plate_leather_left-0.vox new file mode 100644 index 0000000000..f06c631a9f --- /dev/null +++ b/assets/voxygen/voxel/armor/shoulder/plate_leather_left-0.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:11064d9361345d4920bd88074d6c037bb82a891c982fb8be4dfd8608cc63ea2a +size 1392 diff --git a/assets/voxygen/voxel/armor/shoulder/plate_leather_right-0.vox b/assets/voxygen/voxel/armor/shoulder/plate_leather_right-0.vox new file mode 100644 index 0000000000..f06c631a9f --- /dev/null +++ b/assets/voxygen/voxel/armor/shoulder/plate_leather_right-0.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:11064d9361345d4920bd88074d6c037bb82a891c982fb8be4dfd8608cc63ea2a +size 1392 diff --git a/assets/voxygen/voxel/biped_large_central_manifest.ron b/assets/voxygen/voxel/biped_large_central_manifest.ron index 1c61fc917d..fda5200e91 100644 --- a/assets/voxygen/voxel/biped_large_central_manifest.ron +++ b/assets/voxygen/voxel/biped_large_central_manifest.ron @@ -23,11 +23,8 @@ second: ( offset: (0.0, 0.0, 0.0), central: ("armor.empty"), - ), - main: ( - offset: (-5.0, -5.5, -4.0), - central: ("weapon.hammer.2hhammer_ogre"), ) + ), (Ogre, Female): ( head: ( @@ -53,10 +50,6 @@ second: ( offset: (0.0, 0.0, 0.0), central: ("armor.empty"), - ), - main: ( - offset: (-2.5, -5.5, -4.0), - central: ("weapon.staff.firestaff_ogre"), ) ), (Cyclops, Male): ( @@ -83,10 +76,6 @@ second: ( offset: (0.0, 0.0, 0.0), central: ("armor.empty"), - ), - main: ( - offset: (-5.0, -6.5, -4.0), - central: ("weapon.hammer.2hhammer_cyclops-0"), ) ), (Cyclops, Female): ( @@ -113,15 +102,11 @@ second: ( offset: (0.0, 0.0, 0.0), central: ("armor.empty"), - ), - main: ( - offset: (-5.0, -6.5, -4.0), - central: ("weapon.hammer.2hhammer_cyclops-0"), ) ), (Wendigo, Male): ( head: ( - offset: (-15.0, -4.5, -9.5), + offset: (-15.0, -4.5, -3.5), central: ("npc.wendigo.male.head"), ), torso_upper: ( @@ -143,15 +128,11 @@ second: ( offset: (0.0, 0.0, 0.0), central: ("armor.empty"), - ), - main: ( - offset: (0.0, 0.0, 0.0), - central: ("armor.empty"), ) ), (Wendigo, Female): ( head: ( - offset: (-15.0, -4.5, -9.5), + offset: (-15.0, -4.5, -3.5), central: ("npc.wendigo.male.head"), ), torso_upper: ( @@ -173,10 +154,6 @@ second: ( offset: (0.0, 0.0, 0.0), central: ("armor.empty"), - ), - main: ( - offset: (0.0, 0.0, 0.0), - central: ("armor.empty"), ) ), (Troll, Male): ( @@ -203,10 +180,6 @@ second: ( offset: (0.0, 0.0, 0.0), central: ("armor.empty"), - ), - main: ( - offset: (-4.0, -6.0, -4.0), - central: ("weapon.hammer.2hhammer_troll"), ) ), (Troll, Female): ( @@ -233,10 +206,6 @@ second: ( offset: (0.0, 0.0, 0.0), central: ("armor.empty"), - ), - main: ( - offset: (-4.0, -6.0, -4.0), - central: ("weapon.hammer.2hhammer_troll"), ) ), (Dullahan, Male): ( @@ -263,10 +232,6 @@ second: ( offset: (0.0, 0.0, 0.0), central: ("armor.empty"), - ), - main: ( - offset: (-1.5, -9.0, -4.0), - central: ("weapon.sword.greatsword_2h_dullahan"), ) ), (Dullahan, Female): ( @@ -293,10 +258,6 @@ second: ( offset: (0.0, 0.0, 0.0), central: ("armor.empty"), - ), - main: ( - offset: (-1.5, -9.0, -4.0), - central: ("weapon.sword.greatsword_2h_dullahan"), ) ), (Werewolf, Male): ( @@ -323,10 +284,6 @@ second: ( offset: (0.0, 0.0, 0.0), central: ("armor.empty"), - ), - main: ( - offset: (0.0, 0.0, 0.0), - central: ("armor.empty"), ) ), (Werewolf, Female): ( @@ -353,10 +310,6 @@ second: ( offset: (0.0, 0.0, 0.0), central: ("armor.empty"), - ), - main: ( - offset: (0.0, 0.0, 0.0), - central: ("armor.empty"), ) ), (Occultsaurok, Male): ( @@ -383,10 +336,6 @@ second: ( offset: (0.0, 0.0, 0.0), central: ("armor.empty"), - ), - main: ( - offset: (-3.0, -3.0, -4.0), - central: ("weapon.staff.firestaff_saurok"), ) ), (Occultsaurok, Female): ( @@ -413,10 +362,6 @@ second: ( offset: (0.0, 0.0, 0.0), central: ("armor.empty"), - ), - main: ( - offset: (-3.0, -3.0, -4.0), - central: ("weapon.staff.firestaff_saurok"), ) ), (Mightysaurok, Male): ( @@ -443,10 +388,6 @@ second: ( offset: (0.0, 0.0, 0.0), central: ("armor.empty"), - ), - main: ( - offset: (-1.5, -4.0, -4.0), - central: ("weapon.sword.long_2h_saurok"), ) ), (Mightysaurok, Female): ( @@ -473,10 +414,6 @@ second: ( offset: (0.0, 0.0, 0.0), central: ("armor.empty"), - ), - main: ( - offset: (-1.5, -4.0, -4.0), - central: ("weapon.sword.long_2h_saurok"), ) ), (Slysaurok, Male): ( @@ -503,10 +440,6 @@ second: ( offset: (0.0, 0.0, 0.0), central: ("armor.empty"), - ), - main: ( - offset: (-1.5, -4.0, -16.5), - central: ("weapon.bow.longbow_saurok"), ) ), (Slysaurok, Female): ( @@ -533,10 +466,6 @@ second: ( offset: (0.0, 0.0, 0.0), central: ("armor.empty"), - ), - main: ( - offset: (-1.5, -4.0, -16.5), - central: ("weapon.bow.longbow_saurok"), ) ), (Mindflayer, Male): ( @@ -563,10 +492,6 @@ second: ( offset: (0.0, 0.0, 0.0), central: ("armor.empty"), - ), - main: ( - offset: (-5.5, -3.5, -4.0), - central: ("weapon.staff.firestaff_mindflayer"), ) ), (Mindflayer, Female): ( @@ -593,10 +518,214 @@ second: ( offset: (0.0, 0.0, 0.0), central: ("armor.empty"), + ) + ), + (Minotaur, Male): ( + head: ( + offset: (-6.5, 0.0, -8.0), + central: ("npc.minotaur.male.head"), ), - main: ( - offset: (-5.5, -3.5, -4.0), - central: ("weapon.staff.firestaff_mindflayer"), + torso_upper: ( + offset: (-8.5, -8.0, -10.0), + central: ("npc.minotaur.male.torso_upper"), + ), + torso_lower: ( + offset: (-5.5, -5.5, -14.0), + central: ("npc.minotaur.male.torso_lower"), + ), + jaw: ( + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), + ), + tail: ( + offset: (-1.5, -17.0, -8.0), + central: ("npc.minotaur.male.tail"), + ), + second: ( + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), + ) + ), + (Minotaur, Female): ( + head: ( + offset: (-6.5, 0.0, -8.0), + central: ("npc.minotaur.male.head"), + ), + torso_upper: ( + offset: (-8.5, -8.0, -10.0), + central: ("npc.minotaur.male.torso_upper"), + ), + torso_lower: ( + offset: (-5.5, -5.5, -14.0), + central: ("npc.minotaur.male.torso_lower"), + ), + jaw: ( + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), + ), + tail: ( + offset: (-1.5, -17.0, -8.0), + central: ("npc.minotaur.male.tail"), + ), + second: ( + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), + ) + ), + (Tidalwarrior, Male): ( + head: ( + offset: (-6.5, -6.5, -6.0), + central: ("npc.tidalwarrior.male.head"), + ), + torso_upper: ( + offset: (-9.0, -8.0, -10.5), + central: ("npc.tidalwarrior.male.torso_upper"), + ), + torso_lower: ( + offset: (-8.0, -7.0, -8.0), + central: ("npc.tidalwarrior.male.torso_lower"), + ), + jaw: ( + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), + ), + tail: ( + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), + ), + second: ( + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), + ) + ), + (Tidalwarrior, Female): ( + head: ( + offset: (-6.5, -6.5, -6.0), + central: ("npc.tidalwarrior.male.head"), + ), + torso_upper: ( + offset: (-9.0, -8.0, -10.5), + central: ("npc.tidalwarrior.male.torso_upper"), + ), + torso_lower: ( + offset: (-8.0, -7.0, -8.0), + central: ("npc.tidalwarrior.male.torso_lower"), + ), + jaw: ( + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), + ), + tail: ( + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), + ), + second: ( + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), + ) + ), + (Yeti, Male): ( + head: ( + offset: (-5.5, -4.0, -4.0), + central: ("npc.yeti.male.head"), + ), + torso_upper: ( + offset: (-8.5, -7.5, -8.5), + central: ("npc.yeti.male.torso_upper"), + ), + torso_lower: ( + offset: (-6.5, -5.0, -6.0), + central: ("npc.yeti.male.torso_lower"), + ), + jaw: ( + offset: (-6.5, 0.0, -4.5), + central: ("npc.yeti.male.jaw"), + ), + tail: ( + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), + ), + second: ( + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), + ) + ), + (Yeti, Female): ( + head: ( + offset: (-5.5, -4.0, -4.0), + central: ("npc.yeti.male.head"), + ), + torso_upper: ( + offset: (-8.5, -7.5, -8.5), + central: ("npc.yeti.male.torso_upper"), + ), + torso_lower: ( + offset: (-6.5, -5.0, -6.0), + central: ("npc.yeti.male.torso_lower"), + ), + jaw: ( + offset: (-6.5, 0.0, -4.5), + central: ("npc.yeti.male.jaw"), + ), + tail: ( + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), + ), + second: ( + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), + ) + ), + (Harvester, Male): ( + head: ( + offset: (-11.0, -10.0, -9.0), + central: ("npc.harvester.male.head"), + ), + torso_upper: ( + offset: (-6.0, -7.0, -5.5), + central: ("npc.harvester.male.torso_upper"), + ), + torso_lower: ( + offset: (-3.0, -4.0, -9.0), + central: ("npc.harvester.male.torso_lower"), + ), + jaw: ( + offset: (-4.0, 0.0, -2.0), + central: ("npc.harvester.male.jaw"), + ), + tail: ( + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), + ), + second: ( + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), + ) + ), + (Harvester, Female): ( + head: ( + offset: (-11.0, -10.0, -9.0), + central: ("npc.harvester.male.head"), + ), + torso_upper: ( + offset: (-6.0, -7.0, -5.5), + central: ("npc.harvester.male.torso_upper"), + ), + torso_lower: ( + offset: (-3.0, -4.0, -9.0), + central: ("npc.harvester.male.torso_lower"), + ), + jaw: ( + offset: (-4.0, 0.0, -2.0), + central: ("npc.harvester.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 af538c5c72..947200d5c3 100644 --- a/assets/voxygen/voxel/biped_large_lateral_manifest.ron +++ b/assets/voxygen/voxel/biped_large_lateral_manifest.ron @@ -1,19 +1,19 @@ ({ (Ogre, Male): ( shoulder_l: ( - offset: (-6.0, -3.5, -4.0), + offset: (-6.0, -3.5, -6.5), lateral: ("npc.ogre.male.shoulder_l"), ), shoulder_r: ( - offset: (-6.0, -4.5, -4.0), + offset: (-6.0, -4.5, -6.5), lateral: ("npc.ogre.male.shoulder_r"), ), hand_l: ( - offset: (-5.5, -3.5, -15.0), + offset: (-5.5, -3.5, -13.0), lateral: ("npc.ogre.male.hand_l"), ), hand_r: ( - offset: (-5.5, -3.5, -15.0), + offset: (-5.5, -3.5, -13.0), lateral: ("npc.ogre.male.hand_r"), ), leg_l: ( @@ -35,11 +35,11 @@ ), (Ogre, Female): ( shoulder_l: ( - offset: (-3.0, -3.0, -3.5), + offset: (-3.0, -3.0, -5.5), lateral: ("npc.ogre.female.shoulder_l"), ), shoulder_r: ( - offset: (-3.0, -3.0, -3.5), + offset: (-3.0, -3.0, -5.5), lateral: ("npc.ogre.female.shoulder_r"), ), hand_l: ( @@ -69,19 +69,19 @@ ), (Cyclops, Male): ( shoulder_l: ( - offset: (-3.0, -4.0, -5.0), + offset: (-3.0, -4.0, -7.0), lateral: ("npc.cyclops.male.shoulder_l"), ), shoulder_r: ( - offset: (-3.0, -4.0, -5.0), + offset: (-3.0, -4.0, -7.0), lateral: ("npc.cyclops.male.shoulder_r"), ), hand_l: ( - offset: (-3.5, -3.5, -14.0), + offset: (-3.5, -3.5, -12.0), lateral: ("npc.cyclops.male.hand_l"), ), hand_r: ( - offset: (-3.5, -3.5, -14.0), + offset: (-3.5, -3.5, -12.0), lateral: ("npc.cyclops.male.hand_r"), ), leg_l: ( @@ -103,19 +103,19 @@ ), (Cyclops, Female): ( shoulder_l: ( - offset: (-3.0, -4.0, -5.0), + offset: (-3.0, -4.0, -7.0), lateral: ("npc.cyclops.male.shoulder_l"), ), shoulder_r: ( - offset: (-3.0, -4.0, -5.0), + offset: (-3.0, -4.0, -7.0), lateral: ("npc.cyclops.male.shoulder_r"), ), hand_l: ( - offset: (-3.5, -3.5, -14.0), + offset: (-3.5, -3.5, -12.0), lateral: ("npc.cyclops.male.hand_l"), ), hand_r: ( - offset: (-3.5, -3.5, -14.0), + offset: (-3.5, -3.5, -12.0), lateral: ("npc.cyclops.male.hand_r"), ), leg_l: ( @@ -137,19 +137,19 @@ ), (Wendigo, Male): ( shoulder_l: ( - offset: (-3.0, -4.0, -5.0), + offset: (-3.0, -4.0, -8.5), lateral: ("npc.wendigo.male.shoulder_l"), ), shoulder_r: ( - offset: (-3.0, -4.0, -5.0), + offset: (-3.0, -4.0, -8.5), lateral: ("npc.wendigo.male.shoulder_r"), ), hand_l: ( - offset: (-4.0, -3.5, -18.0), + offset: (-4.0, -3.5, -15.0), lateral: ("npc.wendigo.male.hand_l"), ), hand_r: ( - offset: (-4.0, -3.5, -18.0), + offset: (-4.0, -3.5, -15.0), lateral: ("npc.wendigo.male.hand_r"), ), leg_l: ( @@ -171,19 +171,19 @@ ), (Wendigo, Female): ( shoulder_l: ( - offset: (-3.0, -4.0, -5.0), + offset: (-3.0, -4.0, -8.5), lateral: ("npc.wendigo.male.shoulder_l"), ), shoulder_r: ( - offset: (-3.0, -4.0, -5.0), + offset: (-3.0, -4.0, -8.5), lateral: ("npc.wendigo.male.shoulder_r"), ), hand_l: ( - offset: (-4.0, -3.5, -18.0), + offset: (-4.0, -3.5, -15.0), lateral: ("npc.wendigo.male.hand_l"), ), hand_r: ( - offset: (-4.0, -3.5, -18.0), + offset: (-4.0, -3.5, -15.0), lateral: ("npc.wendigo.male.hand_r"), ), leg_l: ( @@ -205,19 +205,19 @@ ), (Troll, Male): ( shoulder_l: ( - offset: (-5.0, -4.5, -7.0), + offset: (-5.0, -4.5, -11.0), lateral: ("npc.troll.male.shoulder_l"), ), shoulder_r: ( - offset: (-5.0, -4.5, -7.0), + offset: (-5.0, -4.5, -11.0), lateral: ("npc.troll.male.shoulder_r"), ), hand_l: ( - offset: (-3.5, -4.0, -15.0), + offset: (-3.5, -4.0, -12.0), lateral: ("npc.troll.male.hand_l"), ), hand_r: ( - offset: (-3.5, -4.0, -15.0), + offset: (-3.5, -4.0, -12.0), lateral: ("npc.troll.male.hand_r"), ), leg_l: ( @@ -239,19 +239,19 @@ ), (Troll, Female): ( shoulder_l: ( - offset: (-5.0, -4.5, -7.0), + offset: (-5.0, -4.5, -11.0), lateral: ("npc.troll.male.shoulder_l"), ), shoulder_r: ( - offset: (-5.0, -4.5, -7.0), + offset: (-5.0, -4.5, -11.0), lateral: ("npc.troll.male.shoulder_r"), ), hand_l: ( - offset: (-3.5, -4.0, -15.0), + offset: (-3.5, -4.0, -12.0), lateral: ("npc.troll.male.hand_l"), ), hand_r: ( - offset: (-3.5, -4.0, -15.0), + offset: (-3.5, -4.0, -12.0), lateral: ("npc.troll.male.hand_r"), ), leg_l: ( @@ -409,11 +409,11 @@ ), (Occultsaurok, Male): ( shoulder_l: ( - offset: (-3.5, -3.5, -4.5), + offset: (-3.5, -3.5, -6.5), lateral: ("npc.saurok_occult.male.shoulder_l"), ), shoulder_r: ( - offset: (-3.5, -3.5, -4.5), + offset: (-3.5, -3.5, -6.5), lateral: ("npc.saurok_occult.male.shoulder_r"), ), hand_l: ( @@ -425,29 +425,29 @@ lateral: ("npc.saurok_occult.male.hand_r"), ), leg_l: ( - offset: (-2.0, -3.0, -3.5), + offset: (-2.0, -1.5, -6.5), lateral: ("npc.saurok_occult.male.leg_l"), ), leg_r: ( - offset: (-2.0, -3.0, -3.5), + offset: (-2.0, -1.5, -6.5), lateral: ("npc.saurok_occult.male.leg_r"), ), foot_l: ( - offset: (-2.5, -4.5, -5.0), + offset: (-2.5, -5.5, -9.0), lateral: ("npc.saurok_occult.male.foot_l"), ), foot_r: ( - offset: (-2.5, -4.5, -5.0), + offset: (-2.5, -5.5, -9.0), lateral: ("npc.saurok_occult.male.foot_r"), ), ), (Occultsaurok, Female): ( shoulder_l: ( - offset: (-3.5, -3.5, -4.5), + offset: (-3.5, -3.5, -6.5), lateral: ("npc.saurok_occult.female.shoulder_l"), ), shoulder_r: ( - offset: (-3.5, -3.5, -4.5), + offset: (-3.5, -3.5, -6.5), lateral: ("npc.saurok_occult.female.shoulder_r"), ), hand_l: ( @@ -459,29 +459,29 @@ lateral: ("npc.saurok_occult.female.hand_r"), ), leg_l: ( - offset: (-2.0, -3.0, -3.5), + offset: (-2.0, -1.5, -6.5), lateral: ("npc.saurok_occult.female.leg_l"), ), leg_r: ( - offset: (-2.0, -3.0, -3.5), + offset: (-2.0, -1.5, -6.5), lateral: ("npc.saurok_occult.female.leg_r"), ), foot_l: ( - offset: (-2.5, -4.5, -5.0), + offset: (-2.5, -5.5, -9.0), lateral: ("npc.saurok_occult.female.foot_l"), ), foot_r: ( - offset: (-2.5, -4.5, -5.0), + offset: (-2.5, -5.5, -9.0), lateral: ("npc.saurok_occult.female.foot_r"), ), ), (Mightysaurok, Male): ( shoulder_l: ( - offset: (-3.5, -3.5, -4.5), + offset: (-3.5, -3.5, -6.5), lateral: ("npc.saurok_mighty.male.shoulder_l"), ), shoulder_r: ( - offset: (-3.5, -3.5, -4.5), + offset: (-3.5, -3.5, -6.5), lateral: ("npc.saurok_mighty.male.shoulder_r"), ), hand_l: ( @@ -493,29 +493,29 @@ lateral: ("npc.saurok_mighty.male.hand_r"), ), leg_l: ( - offset: (-2.0, -3.0, -3.5), + offset: (-2.0, -1.5, -6.5), lateral: ("npc.saurok_mighty.male.leg_l"), ), leg_r: ( - offset: (-2.0, -3.0, -3.5), + offset: (-2.0, -1.5, -6.5), lateral: ("npc.saurok_mighty.male.leg_r"), ), foot_l: ( - offset: (-2.5, -4.5, -5.0), + offset: (-2.5, -5.5, -9.0), lateral: ("npc.saurok_mighty.male.foot_l"), ), foot_r: ( - offset: (-2.5, -4.5, -5.0), + offset: (-2.5, -5.5, -9.0), lateral: ("npc.saurok_mighty.male.foot_r"), ), ), (Mightysaurok, Female): ( shoulder_l: ( - offset: (-3.5, -3.5, -4.5), + offset: (-3.5, -3.5, -6.5), lateral: ("npc.saurok_mighty.female.shoulder_l"), ), shoulder_r: ( - offset: (-3.5, -3.5, -4.5), + offset: (-3.5, -3.5, -6.5), lateral: ("npc.saurok_mighty.female.shoulder_r"), ), hand_l: ( @@ -527,29 +527,29 @@ lateral: ("npc.saurok_mighty.female.hand_r"), ), leg_l: ( - offset: (-2.0, -3.0, -3.5), + offset: (-2.0, -1.5, -6.5), lateral: ("npc.saurok_mighty.female.leg_l"), ), leg_r: ( - offset: (-2.0, -3.0, -3.5), + offset: (-2.0, -1.5, -6.5), lateral: ("npc.saurok_mighty.female.leg_r"), ), foot_l: ( - offset: (-2.5, -4.5, -5.0), + offset: (-2.5, -5.5, -9.0), lateral: ("npc.saurok_mighty.female.foot_l"), ), foot_r: ( - offset: (-2.5, -4.5, -5.0), + offset: (-2.5, -5.5, -9.0), lateral: ("npc.saurok_mighty.female.foot_r"), ), ), (Slysaurok, Male): ( shoulder_l: ( - offset: (-3.5, -3.5, -4.5), + offset: (-3.5, -3.5, -6.5), lateral: ("npc.saurok_sly.male.shoulder_l"), ), shoulder_r: ( - offset: (-3.5, -3.5, -4.5), + offset: (-3.5, -3.5, -6.5), lateral: ("npc.saurok_sly.male.shoulder_r"), ), hand_l: ( @@ -561,29 +561,29 @@ lateral: ("npc.saurok_sly.male.hand_r"), ), leg_l: ( - offset: (-2.0, -3.0, -3.5), + offset: (-2.0, -1.5, -6.5), lateral: ("npc.saurok_sly.male.leg_l"), ), leg_r: ( - offset: (-2.0, -3.0, -3.5), + offset: (-2.0, -1.5, -6.5), lateral: ("npc.saurok_sly.male.leg_r"), ), foot_l: ( - offset: (-2.5, -4.5, -5.0), + offset: (-2.5, -5.5, -9.0), lateral: ("npc.saurok_sly.male.foot_l"), ), foot_r: ( - offset: (-2.5, -4.5, -5.0), + offset: (-2.5, -5.5, -9.0), lateral: ("npc.saurok_sly.male.foot_r"), ), ), (Slysaurok, Female): ( shoulder_l: ( - offset: (-3.5, -3.5, -4.5), + offset: (-3.5, -3.5, -6.5), lateral: ("npc.saurok_sly.female.shoulder_l"), ), shoulder_r: ( - offset: (-3.5, -3.5, -4.5), + offset: (-3.5, -3.5, -6.5), lateral: ("npc.saurok_sly.female.shoulder_r"), ), hand_l: ( @@ -595,19 +595,19 @@ lateral: ("npc.saurok_sly.female.hand_r"), ), leg_l: ( - offset: (-2.0, -3.0, -3.5), + offset: (-2.0, -1.5, -6.5), lateral: ("npc.saurok_sly.female.leg_l"), ), leg_r: ( - offset: (-2.0, -3.0, -3.5), + offset: (-2.0, -1.5, -6.5), lateral: ("npc.saurok_sly.female.leg_r"), ), foot_l: ( - offset: (-2.5, -4.5, -5.0), + offset: (-2.5, -5.5, -9.0), lateral: ("npc.saurok_sly.female.foot_l"), ), foot_r: ( - offset: (-2.5, -4.5, -5.0), + offset: (-2.5, -5.5, -9.0), lateral: ("npc.saurok_sly.female.foot_r"), ), ), @@ -679,4 +679,276 @@ lateral: ("npc.mindflayer.male.foot_r"), ) ), + (Minotaur, Male): ( + shoulder_l: ( + offset: (-3.5, -3.5, -7.5), + lateral: ("npc.minotaur.male.shoulder_l"), + ), + shoulder_r: ( + offset: (-3.5, -3.5, -7.5), + lateral: ("npc.minotaur.male.shoulder_r"), + ), + hand_l: ( + offset: (-4.0, -4.5, -14.0), + lateral: ("npc.minotaur.male.hand_l"), + ), + hand_r: ( + offset: (-4.0, -4.5, -14.0), + lateral: ("npc.minotaur.male.hand_r"), + ), + leg_l: ( + offset: (-2.5, -4.0, -3.5), + lateral: ("npc.minotaur.male.leg_l"), + ), + leg_r: ( + offset: (-2.5, -4.0, -3.5), + lateral: ("npc.minotaur.male.leg_r"), + ), + foot_l: ( + offset: (-3.5, -9.0, -5.0), + lateral: ("npc.minotaur.male.foot_l"), + ), + foot_r: ( + offset: (-3.5, -9.0, -5.0), + lateral: ("npc.minotaur.male.foot_r"), + ) + ), + (Minotaur, Female): ( + shoulder_l: ( + offset: (-3.5, -3.5, -7.5), + lateral: ("npc.minotaur.male.shoulder_l"), + ), + shoulder_r: ( + offset: (-3.5, -3.5, -7.5), + lateral: ("npc.minotaur.male.shoulder_r"), + ), + hand_l: ( + offset: (-4.0, -4.5, -14.0), + lateral: ("npc.minotaur.male.hand_l"), + ), + hand_r: ( + offset: (-4.0, -4.5, -14.0), + lateral: ("npc.minotaur.male.hand_r"), + ), + leg_l: ( + offset: (-2.5, -4.0, -3.5), + lateral: ("npc.minotaur.male.leg_l"), + ), + leg_r: ( + offset: (-2.5, -4.0, -3.5), + lateral: ("npc.minotaur.male.leg_r"), + ), + foot_l: ( + offset: (-3.5, -9.0, -5.0), + lateral: ("npc.minotaur.male.foot_l"), + ), + foot_r: ( + offset: (-3.5, -9.0, -5.0), + lateral: ("npc.minotaur.male.foot_r"), + ) + ), + (Tidalwarrior, Male): ( + shoulder_l: ( + offset: (-5.5, -5.5, -6.5), + lateral: ("npc.tidalwarrior.male.shoulder_l"), + ), + shoulder_r: ( + offset: (-5.5, -5.5, -6.5), + lateral: ("npc.tidalwarrior.male.shoulder_r"), + ), + hand_l: ( + offset: (-6.0, -3.5, -18.0), + lateral: ("npc.tidalwarrior.male.hand_l"), + ), + hand_r: ( + offset: (-6.0, -3.5, -18.0), + lateral: ("npc.tidalwarrior.male.hand_r"), + ), + leg_l: ( + offset: (-2.5, -3.0, -3.5), + lateral: ("npc.tidalwarrior.male.leg_l"), + ), + leg_r: ( + offset: (-2.5, -3.0, -3.5), + lateral: ("npc.tidalwarrior.male.leg_r"), + ), + foot_l: ( + offset: (-2.5, -4.5, -4.5), + lateral: ("npc.tidalwarrior.male.foot_l"), + ), + foot_r: ( + offset: (-2.5, -4.5, -4.5), + lateral: ("npc.tidalwarrior.male.foot_r"), + ) + ), + (Tidalwarrior, Female): ( + shoulder_l: ( + offset: (-5.5, -5.5, -6.5), + lateral: ("npc.tidalwarrior.male.shoulder_l"), + ), + shoulder_r: ( + offset: (-5.5, -5.5, -6.5), + lateral: ("npc.tidalwarrior.male.shoulder_r"), + ), + hand_l: ( + offset: (-6.0, -3.5, -18.0), + lateral: ("npc.tidalwarrior.male.hand_l"), + ), + hand_r: ( + offset: (-6.0, -3.5, -18.0), + lateral: ("npc.tidalwarrior.male.hand_r"), + ), + leg_l: ( + offset: (-2.5, -3.0, -3.5), + lateral: ("npc.tidalwarrior.male.leg_l"), + ), + leg_r: ( + offset: (-2.5, -3.0, -3.5), + lateral: ("npc.tidalwarrior.male.leg_r"), + ), + foot_l: ( + offset: (-2.5, -4.5, -4.5), + lateral: ("npc.tidalwarrior.male.foot_l"), + ), + foot_r: ( + offset: (-2.5, -4.5, -4.5), + lateral: ("npc.tidalwarrior.male.foot_r"), + ) + ), + (Yeti, Male): ( + shoulder_l: ( + offset: (-3.5, -3.5, -4.5), + lateral: ("npc.yeti.male.shoulder_l"), + ), + shoulder_r: ( + offset: (-3.5, -3.5, -4.5), + lateral: ("npc.yeti.male.shoulder_r"), + ), + hand_l: ( + offset: (-4.0, -4.0, -12.0), + lateral: ("npc.yeti.male.hand_l"), + ), + hand_r: ( + offset: (-4.0, -4.0, -12.0), + lateral: ("npc.yeti.male.hand_r"), + ), + leg_l: ( + offset: (-2.5, -4.0, -3.5), + lateral: ("npc.yeti.male.leg_l"), + ), + leg_r: ( + offset: (-2.5, -4.0, -3.5), + lateral: ("npc.yeti.male.leg_r"), + ), + foot_l: ( + offset: (-3.0, -4.5, -4.0), + lateral: ("npc.yeti.male.foot_l"), + ), + foot_r: ( + offset: (-3.0, -4.5, -4.0), + lateral: ("npc.yeti.male.foot_r"), + ) + ), + (Yeti, Female): ( + shoulder_l: ( + offset: (-3.5, -3.5, -4.5), + lateral: ("npc.yeti.male.shoulder_l"), + ), + shoulder_r: ( + offset: (-3.5, -3.5, -4.5), + lateral: ("npc.yeti.male.shoulder_r"), + ), + hand_l: ( + offset: (-4.0, -4.0, -12.0), + lateral: ("npc.yeti.male.hand_l"), + ), + hand_r: ( + offset: (-4.0, -4.0, -12.0), + lateral: ("npc.yeti.male.hand_r"), + ), + leg_l: ( + offset: (-2.5, -4.0, -3.5), + lateral: ("npc.yeti.male.leg_l"), + ), + leg_r: ( + offset: (-2.5, -4.0, -3.5), + lateral: ("npc.yeti.male.leg_r"), + ), + foot_l: ( + offset: (-3.0, -4.5, -4.0), + lateral: ("npc.yeti.male.foot_l"), + ), + foot_r: ( + offset: (-3.0, -4.5, -4.0), + lateral: ("npc.yeti.male.foot_r"), + ) + ), + (Harvester, Male): ( + shoulder_l: ( + offset: (-3.0, -2.5, -4.0), + lateral: ("npc.harvester.male.shoulder_l"), + ), + shoulder_r: ( + offset: (-3.0, -2.5, -4.0), + lateral: ("npc.harvester.male.shoulder_r"), + ), + hand_l: ( + offset: (-4.0, -2.0, -10.0), + lateral: ("npc.harvester.male.hand_l"), + ), + hand_r: ( + offset: (-4.0, -2.0, -10.0), + lateral: ("npc.harvester.male.hand_r"), + ), + leg_l: ( + offset: (-2.5, -3.0, -3.0), + lateral: ("npc.harvester.male.leg_l"), + ), + leg_r: ( + offset: (-2.5, -3.0, -3.0), + lateral: ("npc.harvester.male.leg_r"), + ), + foot_l: ( + offset: (-3.5, -4.0, -4.0), + lateral: ("npc.harvester.male.foot_l"), + ), + foot_r: ( + offset: (-3.5, -4.0, -4.0), + lateral: ("npc.harvester.male.foot_r"), + ) + ), + (Harvester, Female): ( + shoulder_l: ( + offset: (-3.0, -2.5, -4.0), + lateral: ("npc.harvester.male.shoulder_l"), + ), + shoulder_r: ( + offset: (-3.0, -2.5, -4.0), + lateral: ("npc.harvester.male.shoulder_r"), + ), + hand_l: ( + offset: (-4.0, -2.0, -10.0), + lateral: ("npc.harvester.male.hand_l"), + ), + hand_r: ( + offset: (-4.0, -2.0, -10.0), + lateral: ("npc.harvester.male.hand_r"), + ), + leg_l: ( + offset: (-2.5, -3.0, -3.0), + lateral: ("npc.harvester.male.leg_l"), + ), + leg_r: ( + offset: (-2.5, -3.0, -3.0), + lateral: ("npc.harvester.male.leg_r"), + ), + foot_l: ( + offset: (-3.5, -4.0, -4.0), + lateral: ("npc.harvester.male.foot_l"), + ), + foot_r: ( + offset: (-3.5, -4.0, -4.0), + lateral: ("npc.harvester.male.foot_r"), + ) + ), }) \ No newline at end of file diff --git a/assets/voxygen/voxel/biped_small_armor_chest_manifest.ron b/assets/voxygen/voxel/biped_small_armor_chest_manifest.ron new file mode 100644 index 0000000000..196b7038b4 --- /dev/null +++ b/assets/voxygen/voxel/biped_small_armor_chest_manifest.ron @@ -0,0 +1,40 @@ +(( + default: ( + vox_spec: ("armor_none", (-5.0, -3.5, 1.0)), + ), + map: { + "Gnome": ( + vox_spec: ("npc.gnome.male.chest", (-5.0, -3.0, -2.5)), + ), + "Sahagin": ( + vox_spec: ("npc.sahagin.male.chest", (-4.5, -8.0, -8.0)), + ), + "AdletSpear": ( + vox_spec: ("npc.adlet.male.spear.chest", (-5.0, -3.5, -2.0)), + ), + "AdletBow": ( + vox_spec: ("npc.adlet.male.bow.chest", (-5.0, -3.5, -2.0)), + ), + "Gnarling": ( + vox_spec: ("npc.gnarling.male.chest", (-4.5, -3.5, -2.5)), + ), + "Mandragora": ( + vox_spec: ("npc.mandragora.male.chest", (-11.0, -11.0, -6.5)), + ), + "Kappa": ( + vox_spec: ("npc.kappa.male.chest", (-6.5, -8.0, -7.0)), + ), + "Cactid": ( + vox_spec: ("npc.cactid.male.chest", (-3.0, -3.0, -2.5)), + ), + "Gnoll": ( + vox_spec: ("npc.gnoll.male.chest", (-5.0, -4.5, -6.0)), + ), + "Haniwa": ( + vox_spec: ("npc.haniwa.male.chest", (-6.5, -4.0, -3.0)), + ), + "Myrmidon": ( + vox_spec: ("npc.myrmidon.male.chest", (-5.5, -4.0, -3.0)), + ), + }, +)) diff --git a/assets/voxygen/voxel/biped_small_armor_foot_manifest.ron b/assets/voxygen/voxel/biped_small_armor_foot_manifest.ron new file mode 100644 index 0000000000..8f16ca7700 --- /dev/null +++ b/assets/voxygen/voxel/biped_small_armor_foot_manifest.ron @@ -0,0 +1,92 @@ +(( + default: ( + left: ( + vox_spec: ("armor.empty", (0.0, 0.0, 0.0)), + ), + right: ( + vox_spec: ("armor.empty", (0.0, 0.0, 0.0)), + ) + ), + map: { + "Gnome": ( + left: ( + vox_spec: ("npc.gnome.male.foot_r", (-1.5, -2.0, -4.0)), + ), + right: ( + vox_spec: ("npc.gnome.male.foot_r", (-1.5, -2.0, -4.0)), + ) + ), + "Sahagin": ( + left: ( + vox_spec: ("npc.sahagin.male.foot_r", (-2.5, -2.0, -8.0)), + ), + right: ( + vox_spec: ("npc.sahagin.male.foot_r", (-2.5, -2.0, -8.0)), + ) + ), + "Adlet": ( + left: ( + vox_spec: ("npc.adlet.male.foot_r", (-1.5, -3.0, -7.0)), + ), + right: ( + vox_spec: ("npc.adlet.male.foot_r", (-1.5, -3.0, -7.0)), + ) + ), + "Gnarling": ( + left: ( + vox_spec: ("npc.gnarling.male.foot_r", (-1.0, -2.0, -5.0)), + ), + right: ( + vox_spec: ("npc.gnarling.male.foot_r", (-1.0, -2.0, -5.0)), + ) + ), + "Mandragora": ( + left: ( + vox_spec: ("npc.mandragora.male.foot_r", (-1.0, -1.5, -4.0)), + ), + right: ( + vox_spec: ("npc.mandragora.male.foot_r", (-1.0, -1.5, -4.0)), + ) + ), + "Kappa": ( + left: ( + vox_spec: ("npc.kappa.male.foot_r", (-2.5, -3.0, -9.0)), + ), + right: ( + vox_spec: ("npc.kappa.male.foot_r", (-2.5, -3.0, -9.0)), + ) + ), + "Cactid": ( + left: ( + vox_spec: ("npc.cactid.male.foot_r", (-1.5, -2.0, -5.0)), + ), + right: ( + vox_spec: ("npc.cactid.male.foot_r", (-1.5, -2.0, -5.0)), + ) + ), + "Gnoll": ( + left: ( + vox_spec: ("npc.gnoll.male.foot_r", (-1.5, -3.0, -7.0)), + ), + right: ( + vox_spec: ("npc.gnoll.male.foot_r", (-1.5, -3.0, -7.0)), + ) + ), + "Haniwa": ( + left: ( + vox_spec: ("npc.haniwa.male.foot_r", (-2.0, -2.5, -8.0)), + ), + right: ( + vox_spec: ("npc.haniwa.male.foot_r", (-2.0, -2.5, -8.0)), + ) + ), + "Myrmidon": ( + left: ( + vox_spec: ("npc.myrmidon.male.foot_r", (-1.5, -2.5, -7.0)), + ), + right: ( + vox_spec: ("npc.myrmidon.male.foot_r", (-1.5, -2.5, -7.0)), + ) + ), + }, +)) diff --git a/assets/voxygen/voxel/biped_small_armor_hand_manifest.ron b/assets/voxygen/voxel/biped_small_armor_hand_manifest.ron new file mode 100644 index 0000000000..30d10a0f42 --- /dev/null +++ b/assets/voxygen/voxel/biped_small_armor_hand_manifest.ron @@ -0,0 +1,100 @@ +(( + default: ( + left: ( + vox_spec: ("armor.empty", (0.0, 0.0, 0.0)), + ), + right: ( + vox_spec: ("armor.empty", (0.0, 0.0, 0.0)), + ) + ), + map: { + "Gnome": ( + left: ( + vox_spec: ("npc.gnome.male.hand_r", (-4.0, -2.0, -5.0)), + ), + right: ( + vox_spec: ("npc.gnome.male.hand_r", (0.0, -2.0, -5.0)), + ) + ), + "Sahagin": ( + left: ( + vox_spec: ("npc.sahagin.male.hand_r", (-7.0, -4.0, -13.0)), + ), + right: ( + vox_spec: ("npc.sahagin.male.hand_r", (0.0, -4.0, -13.0)), + ) + ), + "AdletSpear": ( + left: ( + vox_spec: ("npc.adlet.male.spear.hand_r", (-4.0, -2.0, -7.0)), + ), + right: ( + vox_spec: ("npc.adlet.male.spear.hand_r", (0.0, -2.0, -7.0)), + ) + ), + "AdletBow": ( + left: ( + vox_spec: ("npc.adlet.male.bow.hand_r", (-4.0, -2.0, -7.0)), + ), + right: ( + vox_spec: ("npc.adlet.male.bow.hand_r", (0.0, -2.0, -7.0)), + ) + ), + "Gnarling": ( + left: ( + vox_spec: ("npc.gnarling.male.hand_r", (-3.0, -1.5, -7.0)), + ), + right: ( + vox_spec: ("npc.gnarling.male.hand_r", (0.0, -1.5, -7.0)), + ) + ), + "Mandragora": ( + left: ( + vox_spec: ("npc.mandragora.male.hand_r", (-4.0, -1.5, -7.0)), + ), + right: ( + vox_spec: ("npc.mandragora.male.hand_r", (0.0, -1.5, -7.0)), + ) + ), + "Kappa": ( + left: ( + vox_spec: ("npc.kappa.male.hand_r", (-6.0, -4.0, -12.0)), + ), + right: ( + vox_spec: ("npc.kappa.male.hand_r", (0.0, -4.0, -12.0)), + ) + ), + "Cactid": ( + left: ( + vox_spec: ("npc.cactid.male.hand_r", (-5.0, -1.5, -8.0)), + ), + right: ( + vox_spec: ("npc.cactid.male.hand_r", (0.0, -1.5, -2.5)), + ) + ), + "Gnoll": ( + left: ( + vox_spec: ("npc.gnoll.male.hand_r", (-6.0, -2.0, -9.0)), + ), + right: ( + vox_spec: ("npc.gnoll.male.hand_r", (0.0, -2.0, -9.0)), + ) + ), + "Haniwa": ( + left: ( + vox_spec: ("npc.haniwa.male.hand_r", (-4.0, -2.0, -8.0)), + ), + right: ( + vox_spec: ("npc.haniwa.male.hand_r", (0.0, -2.0, -8.0)), + ) + ), + "Myrmidon": ( + left: ( + vox_spec: ("npc.myrmidon.male.hand_r", (-5.0, -2.0, -9.0)), + ), + right: ( + vox_spec: ("npc.myrmidon.male.hand_r", (0.0, -2.0, -9.0)), + ) + ), + }, +)) diff --git a/assets/voxygen/voxel/biped_small_armor_head_manifest.ron b/assets/voxygen/voxel/biped_small_armor_head_manifest.ron new file mode 100644 index 0000000000..08b8b55326 --- /dev/null +++ b/assets/voxygen/voxel/biped_small_armor_head_manifest.ron @@ -0,0 +1,40 @@ +(( + default: ( + vox_spec: ("armor.empty", (0.0, 0.0, 0.0)), + ), + map: { + "Gnome": ( + vox_spec: ("npc.gnome.male.head", (-8.0, -6.5, -12.0)), + ), + "Sahagin": ( + vox_spec: ("npc.sahagin.male.head", (-2.5, 0.0, -4.5)), + ), + "AdletSpear": ( + vox_spec: ("npc.adlet.male.spear.head", (-7.0, -4.5, -6.0)), + ), + "AdletBow": ( + vox_spec: ("npc.adlet.male.bow.head", (-7.0, -4.5, -6.0)), + ), + "Gnarling": ( + vox_spec: ("npc.gnarling.male.head", (-6.5, -5.5, -4.5)), + ), + "Mandragora": ( + vox_spec: ("npc.mandragora.male.head", (0.0, 0.0, 0.0)), + ), + "Kappa": ( + vox_spec: ("npc.kappa.male.chest", (-4.5, -5.0, -4.5)), + ), + "Cactid": ( + vox_spec: ("npc.cactid.male.head", (-8.0, -4.0, -7.5)), + ), + "Gnoll": ( + vox_spec: ("npc.gnoll.male.head", (-4.0, -1.5, -3.0)), + ), + "Haniwa": ( + vox_spec: ("npc.haniwa.male.head", (-5.5, -5.5, -5.5)), + ), + "Myrmidon": ( + vox_spec: ("npc.myrmidon.male.head", (-4.5, -7.0, -6.5)), + ), + }, +)) diff --git a/assets/voxygen/voxel/biped_small_armor_pants_manifest.ron b/assets/voxygen/voxel/biped_small_armor_pants_manifest.ron new file mode 100644 index 0000000000..be48415201 --- /dev/null +++ b/assets/voxygen/voxel/biped_small_armor_pants_manifest.ron @@ -0,0 +1,40 @@ +(( + default: ( + vox_spec: ("armor.empty", (0.0, 0.0, 0.0)), + ), + map: { + "Gnome": ( + vox_spec: ("npc.gnome.male.pants", (-4.0, -3.5, -2.5)), + ), + "Sahagin": ( + vox_spec: ("npc.sahagin.male.pants", (-2.5, -3.5, -2.0)), + ), + "AdletSpear": ( + vox_spec: ("npc.adlet.male.spear.pants", (-5.0, -4.5, -3.0)), + ), + "AdletBow": ( + vox_spec: ("npc.adlet.male.bow.pants", (-5.0, -4.5, -3.0)), + ), + "Gnarling": ( + vox_spec: ("npc.gnarling.male.pants", (-3.5, -3.0, -2.5)), + ), + "Mandragora": ( + vox_spec: ("npc.mandragora.male.pants", (-3.0, -3.0, -1.0)), + ), + "Kappa": ( + vox_spec: ("npc.kappa.male.pants", (-3.5, -4.0, -1.5)), + ), + "Cactid": ( + vox_spec: ("npc.cactid.male.pants", (-3.0, -2.0, -1.0)), + ), + "Gnoll": ( + vox_spec: ("npc.gnoll.male.pants", (-5.0, -4.0, -3.0)), + ), + "Haniwa": ( + vox_spec: ("npc.haniwa.male.pants", (-4.5, -4.5, -1.5)), + ), + "Myrmidon": ( + vox_spec: ("npc.myrmidon.male.pants", (-2.5, -4.5, -1.5)), + ), + }, +)) diff --git a/assets/voxygen/voxel/biped_small_armor_tail_manifest.ron b/assets/voxygen/voxel/biped_small_armor_tail_manifest.ron new file mode 100644 index 0000000000..97f8e3325e --- /dev/null +++ b/assets/voxygen/voxel/biped_small_armor_tail_manifest.ron @@ -0,0 +1,25 @@ +(( + default: ( + vox_spec: ("armor.empty", (0.0, 0.0, 0.0)), + ), + map: { + "Sahagin": ( + vox_spec: ("npc.sahagin.male.tail", (-1.5, -13.0, -5.0)), + ), + "Adlet": ( + vox_spec: ("npc.adlet.male.tail", (-1.0, -5.0, -1.0)), + ), + "Gnarling": ( + vox_spec: ("npc.gnarling.male.tail", (-1.5, -13.0, -3.0)), + ), + "Kappa": ( + vox_spec: ("npc.kappa.male.tail", (-2.5, -10.0, -5.0)), + ), + "Gnoll": ( + vox_spec: ("npc.gnoll.male.tail", (-1.0, -11.0, -1.0)), + ), + "Myrmidon": ( + vox_spec: ("npc.myrmidon.male.tail", (-2.5, -7.0, -2.5)), + ), + }, +)) diff --git a/assets/voxygen/voxel/biped_weapon_manifest.ron b/assets/voxygen/voxel/biped_weapon_manifest.ron new file mode 100644 index 0000000000..78a5dfd0c8 --- /dev/null +++ b/assets/voxygen/voxel/biped_weapon_manifest.ron @@ -0,0 +1,1053 @@ +({ //Swords + "common.items.weapons.sword.bloodsteel-0": ( + vox_spec: ("weapon.sword.bloodsteel-0", (-1.5, -4.5, -4.0)), + color: None + ), + "common.items.weapons.sword.bloodsteel-1": ( + vox_spec: ("weapon.sword.bloodsteel-1", (-2.5, -3.0, -5.5)), + color: None + ), + "common.items.weapons.sword.bloodsteel-2": ( + vox_spec: ("weapon.sword.bloodsteel-2", (-1.5, -3.5, -4.0)), + color: None + ), + "common.items.weapons.sword.bronze-0": ( + vox_spec: ("weapon.sword.bronze-0", (-1.5, -3.0, -4.0)), + color: None + ), + "common.items.weapons.sword.bronze-1": ( + vox_spec: ("weapon.sword.bronze-1", (-1.5, -3.0, -4.0)), + color: None + ), + "common.items.weapons.sword.bronze-2": ( + vox_spec: ("weapon.sword.bronze-2", (-1.5, -3.0, -4.0)), + color: None + ), + "common.items.weapons.sword.caladbolg": ( + vox_spec: ("weapon.sword.caladbolg", (-1.5, -5.5, -4.0)), + color: None + ), + "common.items.weapons.sword.cobalt-0": ( + vox_spec: ("weapon.sword.cobalt-0", (-1.5, -5.0, -4.0)), + color: None + ), + "common.items.weapons.sword.cobalt-1": ( + vox_spec: ("weapon.sword.cobalt-1", (-1.5, -6.0, -5.0)), + color: None + ), + "common.items.weapons.sword.cobalt-2": ( + vox_spec: ("weapon.sword.cobalt-2", (-1.5, -5.0, -4.0)), + color: None + ), + "common.items.weapons.sword.cobalt-3": ( + vox_spec: ("weapon.sword.cobalt-3", (-1.5, -4.0, -4.0)), + color: None + ), + "common.items.weapons.sword.cultist": ( + vox_spec: ("weapon.sword.cultist", (-1.5, -4.0, -6.0)), + color: None + ), + "common.items.weapons.sword.frost-0": ( + vox_spec: ("weapon.sword.frost-0", (-1.5, -5.5, -5.0)), + color: None + ), + "common.items.weapons.sword.frost-1": ( + vox_spec: ("weapon.sword.frost-1", (-1.5, -5.5, -5.0)), + color: None + ), + "common.items.weapons.sword.iron-0": ( + vox_spec: ("weapon.sword.iron-0", (-1.5, -3.5, -4.0)), + color: None + ), + "common.items.weapons.sword.iron-1": ( + vox_spec: ("weapon.sword.iron-1", (-1.5, -5.0, -5.0)), + color: None + ), + "common.items.weapons.sword.iron-2": ( + vox_spec: ("weapon.sword.iron-2", (-1.5, -5.0, -4.0)), + color: None + ), + "common.items.weapons.sword.iron-3": ( + vox_spec: ("weapon.sword.iron-3", (-1.5, -4.0, -4.0)), + color: None + ), + "common.items.weapons.sword.iron-4": ( + vox_spec: ("weapon.sword.iron-4", (-1.5, -4.0, -4.0)), + color: None + ), + "common.items.weapons.sword.iron-5": ( + vox_spec: ("weapon.sword.iron-5", (-1.5, -4.0, -4.0)), + color: None + ), + "common.items.weapons.sword.iron-6": ( + vox_spec: ("weapon.sword.iron-6", (-1.5, -5.0, -5.0)), + color: None + ), + "common.items.weapons.sword.iron-7": ( + vox_spec: ("weapon.sword.iron-7", (-2.0, -6.0, -5.0)), + color: None + ), + "common.items.weapons.sword.iron-8": ( + vox_spec: ("weapon.sword.iron-8", (-2.0, -5.0, -4.0)), + color: None + ), + "common.items.weapons.sword.iron-9": ( + vox_spec: ("weapon.sword.iron-9", (-1.5, -2.5, -4.0)), + color: None + ), + "common.items.weapons.sword.iron-10": ( + vox_spec: ("weapon.sword.iron-10", (-1.5, -4.0, -4.0)), + color: None + ), + "common.items.weapons.sword.starter": ( + vox_spec: ("weapon.sword.starter", (-1.5, -4.0, -4.0)), + color: None + ), + "common.items.weapons.sword.steel-0": ( + vox_spec: ("weapon.sword.steel-0", (-1.5, -5.0, -5.0)), + color: None + ), + "common.items.weapons.sword.steel-1": ( + vox_spec: ("weapon.sword.steel-1", (-1.5, -4.0, -5.0)), + color: None + ), + "common.items.weapons.sword.steel-2": ( + vox_spec: ("weapon.sword.steel-2", (-1.5, -6.0, -4.0)), + color: None + ), + "common.items.weapons.sword.steel-3": ( + vox_spec: ("weapon.sword.steel-3", (-1.5, -4.0, -4.0)), + color: None + ), + "common.items.weapons.sword.steel-4": ( + vox_spec: ("weapon.sword.steel-4", (-1.5, -5.0, -4.0)), + color: None + ), + "common.items.weapons.sword.steel-5": ( + vox_spec: ("weapon.sword.steel-5", (-1.5, -2.5, -5.0)), + color: None + ), + "common.items.weapons.sword.steel-6": ( + vox_spec: ("weapon.sword.steel-6", (-1.5, -5.0, -4.0)), + color: None + ), + "common.items.weapons.sword.steel-7": ( + vox_spec: ("weapon.sword.steel-7", (-1.5, -5.0, -4.0)), + color: None + ), + "common.items.weapons.sword.steel-8": ( + vox_spec: ("weapon.sword.steel-8", (-1.5, -5.0, -5.0)), + color: None + ), + "common.items.weapons.sword.stone-0": ( + vox_spec: ("weapon.sword.stone-0", (-2.5, -4.0, -5.0)), + color: None + ), + "common.items.weapons.sword.stone-1": ( + vox_spec: ("weapon.sword.stone-1", (-1.5, -4.0, -5.0)), + color: None + ), + "common.items.weapons.sword.stone-2": ( + vox_spec: ("weapon.sword.stone-2", (-1.5, -4.0, -4.0)), + color: None + ), + "common.items.weapons.sword.wood-0": ( + vox_spec: ("weapon.sword.wood-0", (-1.5, -3.5, -4.0)), + color: None + ), + "common.items.weapons.sword.wood-1": ( + vox_spec: ("weapon.sword.wood-1", (-1.5, -5.0, -5.0)), + color: None + ), + "common.items.weapons.sword.wood-2": ( + vox_spec: ("weapon.sword.wood-2", (-1.5, -6.5, -3.0)), + color: None + ), + // 1h Swords + "common.items.weapons.sword_1h.bloodsteel-0": ( + vox_spec: ("weapon.sword_1h.bloodsteel-0", (-2.0, -4.5, -7.5)), + color: None + ), + "common.items.weapons.sword_1h.bloodsteel-1": ( + vox_spec: ("weapon.sword_1h.bloodsteel-1", (-2.0, -4.5, -7.5)), + color: None + ), + "common.items.weapons.sword_1h.bloodsteel-2": ( + vox_spec: ("weapon.sword_1h.bloodsteel-2", (-2.0, -4.5, -7.5)), + color: None + ), + "common.items.weapons.sword_1h.bronze-0": ( + vox_spec: ("weapon.sword_1h.bronze-0", (-2.0, -4.5, -7.5)), + color: None + ), + "common.items.weapons.sword_1h.bronze-1": ( + vox_spec: ("weapon.sword_1h.bronze-1", (-2.0, -4.5, -7.5)), + color: None + ), + "common.items.weapons.sword_1h.bronze-2": ( + vox_spec: ("weapon.sword_1h.bronze-2", (-2.0, -4.5, -7.5)), + color: None + ), + "common.items.weapons.sword_1h.cobalt-0": ( + vox_spec: ("weapon.sword_1h.cobalt-0", (-2.0, -4.5, -7.5)), + color: None + ), + "common.items.weapons.sword_1h.cobalt-1": ( + vox_spec: ("weapon.sword_1h.cobalt-1", (-2.0, -4.5, -7.5)), + color: None + ), + "common.items.weapons.sword_1h.cobalt-2": ( + vox_spec: ("weapon.sword_1h.cobalt-2", (-2.0, -4.5, -7.5)), + color: None + ), + "common.items.weapons.sword_1h.cobalt-3": ( + vox_spec: ("weapon.sword_1h.cobalt-3", (-2.0, -4.5, -7.5)), + color: None + ), + "common.items.weapons.sword_1h.iron-0": ( + vox_spec: ("weapon.sword_1h.iron-0", (-2.0, -4.5, -7.5)), + color: None + ), + "common.items.weapons.sword_1h.iron-1": ( + vox_spec: ("weapon.sword_1h.iron-1", (-2.0, -4.5, -7.5)), + color: None + ), + "common.items.weapons.sword_1h.iron-2": ( + vox_spec: ("weapon.sword_1h.iron-2", (-2.0, -4.5, -7.5)), + color: None + ), + "common.items.weapons.sword_1h.iron-3": ( + vox_spec: ("weapon.sword_1h.iron-3", (-2.0, -4.5, -7.5)), + color: None + ), + "common.items.weapons.sword_1h.iron-4": ( + vox_spec: ("weapon.sword_1h.iron-4", (-2.0, -4.5, -7.5)), + color: None + ), + "common.items.weapons.sword_1h.obsidian-0": ( + vox_spec: ("weapon.sword_1h.obsidian-0", (-2.0, -4.5, -7.5)), + color: None + ), + "common.items.weapons.sword_1h.orichalcum-0": ( + vox_spec: ("weapon.sword_1h.orichalcum-0", (-2.0, -4.5, -7.5)), + color: None + ), + "common.items.weapons.sword_1h.orichalcum-1": ( + vox_spec: ("weapon.sword_1h.orichalcum-1", (-2.0, -4.5, -7.5)), + color: None + ), + "common.items.weapons.sword_1h.steel-0": ( + vox_spec: ("weapon.sword_1h.steel-0", (-2.0, -4.5, -7.5)), + color: None + ), + "common.items.weapons.sword_1h.steel-1": ( + vox_spec: ("weapon.sword_1h.steel-1", (-2.0, -4.5, -7.5)), + color: None + ), + "common.items.weapons.sword_1h.steel-2": ( + vox_spec: ("weapon.sword_1h.steel-2", (-2.0, -4.5, -7.5)), + color: None + ), + "common.items.weapons.sword_1h.steel-3": ( + vox_spec: ("weapon.sword_1h.steel-3", (-2.0, -4.5, -7.5)), + color: None + ), + // Axes + "common.items.weapons.axe.starter_axe": ( + vox_spec: ("weapon.axe.2haxe_rusty", (-1.5, -7.0, -4.0)), + color: None + ), + "common.items.weapons.axe.orc_axe-0": ( + vox_spec: ("weapon.axe.2haxe_orc-0", (-1.5, -6.0, -4.5)), + color: None + ), + "common.items.weapons.axe.worn_iron_axe-0": ( + vox_spec: ("weapon.axe.2haxe_worn_iron-0", (-1.5, -5.0, -4.0)), + color: None + ), + "common.items.weapons.axe.worn_iron_axe-1": ( + vox_spec: ("weapon.axe.2haxe_worn_iron-1", (-1.5, -4.0, -4.0)), + color: None + ), + "common.items.weapons.axe.worn_iron_axe-2": ( + vox_spec: ("weapon.axe.2haxe_worn_iron-2", (-1.5, -4.0, -4.0)), + color: None + ), + "common.items.weapons.axe.worn_iron_axe-3": ( + vox_spec: ("weapon.axe.2haxe_worn_iron-3", (-1.5, -8.0, -4.0)),//offcenterY + color: None + ), + "common.items.weapons.axe.worn_iron_axe-4": ( + vox_spec: ("weapon.axe.2haxe_worn_iron-4", (-1.5, -6.0, -5.5)), + color: None + ), + "common.items.weapons.axe.bronze_axe-0": ( + vox_spec: ("weapon.axe.2haxe_bronze-0", (-1.5, -7.0, -4.5)), + color: None + ), + "common.items.weapons.axe.bronze_axe-1": ( + vox_spec: ("weapon.axe.2haxe_bronze-1", (-1.5, -5.0, -4.0)), + color: None + ), + "common.items.weapons.axe.bronze_axe-2": ( + vox_spec: ("weapon.axe.2haxe_bronze-2", (-1.5, -8.0, -4.0)), + color: None + ), + "common.items.weapons.axe.iron_axe-0": ( + vox_spec: ("weapon.axe.2haxe_iron-0", (-1.5, -7.0, -5.5)), + color: None + ), + "common.items.weapons.axe.iron_axe-1": ( + vox_spec: ("weapon.axe.2haxe_iron-1", (-1.5, -7.0, -5.5)), + color: None + ), + "common.items.weapons.axe.iron_axe-2": ( + vox_spec: ("weapon.axe.2haxe_iron-2", (-1.5, -7.0, -5.5)), + color: None + ), + "common.items.weapons.axe.iron_axe-3": ( + vox_spec: ("weapon.axe.2haxe_iron-3", (-1.5, -8.0, -6.5)), + color: None + ), + "common.items.weapons.axe.iron_axe-4": ( + vox_spec: ("weapon.axe.2haxe_iron-4", (-1.5, -7.0, -5.5)), + color: None + ), + "common.items.weapons.axe.iron_axe-5": ( + vox_spec: ("weapon.axe.2haxe_iron-5", (-1.5, -7.0, -5.0)), + color: None + ), + "common.items.weapons.axe.iron_axe-6": ( + vox_spec: ("weapon.axe.2haxe_iron-6", (-1.5, -7.0, -6.0)), + color: None + ), + "common.items.weapons.axe.iron_axe-7": ( + vox_spec: ("weapon.axe.2haxe_iron-7", (-1.5, -7.0, -5.0)), + color: None + ), + "common.items.weapons.axe.iron_axe-8": ( + vox_spec: ("weapon.axe.2haxe_iron-8", (-1.5, -7.0, -5.0)), + color: None + ), + "common.items.weapons.axe.iron_axe-9": ( + vox_spec: ("weapon.axe.2haxe_iron-9", (-1.5, -6.0, -5.0)), + color: None + ), + "common.items.weapons.axe.steel_axe-0": ( + vox_spec: ("weapon.axe.2haxe_steel-0", (-1.5, -6.0, -4.5)), + color: None + ), + "common.items.weapons.axe.steel_axe-1": ( + vox_spec: ("weapon.axe.2haxe_steel-1", (-1.5, -8.0, -5.5)), + color: None + ), + "common.items.weapons.axe.steel_axe-2": ( + vox_spec: ("weapon.axe.2haxe_steel-2", (-1.5, -9.0, -3.5)), + color: None + ), + "common.items.weapons.axe.steel_axe-3": ( + vox_spec: ("weapon.axe.2haxe_steel-3", (-1.5, -5.5, -6.0)), + color: None + ), + "common.items.weapons.axe.steel_axe-4": ( + vox_spec: ("weapon.axe.2haxe_steel-4", (-1.5, -6.0, -5.5)), + color: None + ), + "common.items.weapons.axe.steel_axe-5": ( + vox_spec: ("weapon.axe.2haxe_steel-5", (-1.5, -8.0, -5.5)), + color: None + ), + "common.items.weapons.axe.steel_axe-6": ( + vox_spec: ("weapon.axe.2haxe_steel-6", (-1.5, -6.0, -4.0)), + color: None + ), + "common.items.weapons.axe.bloodsteel_axe-0": ( + vox_spec: ("weapon.axe.2haxe_bloodsteel-0", (-1.5, -7.0, -4.0)), + color: None + ), + "common.items.weapons.axe.bloodsteel_axe-1": ( + vox_spec: ("weapon.axe.2haxe_bloodsteel-1", (-1.5, -7.0, -5.0)), + color: None + ), + "common.items.weapons.axe.bloodsteel_axe-2": ( + vox_spec: ("weapon.axe.2haxe_bloodsteel-2", (-1.5, -8.0, -4.0)), + color: None + ), + "common.items.weapons.axe.cobalt_axe-0": ( + vox_spec: ("weapon.axe.2haxe_cobalt-0", (-1.5, -7.0, -5.5)), + color: None + ), + "common.items.weapons.axe.cobalt_axe-1": ( + vox_spec: ("weapon.axe.2haxe_cobalt-1", (-1.5, -8.0, -5.5)), + color: None + ), + "common.items.weapons.axe.malachite_axe-0": ( + vox_spec: ("weapon.axe.2haxe_malachite-0", (-1.5, -7.0, -5.0)), + color: None + ), + "common.items.weapons.axe.parashu": ( + vox_spec: ("weapon.axe.parashu", (-1.5, -12.0, -6.0)), + color: None + ), + // 1h Axes + "common.items.weapons.axe_1h.bloodsteel-0": ( + vox_spec: ("weapon.axe_1h.bloodsteel-0", (-1.5, -5.0, -6.0)), + color: None + ), + "common.items.weapons.axe_1h.bloodsteel-1": ( + vox_spec: ("weapon.axe_1h.bloodsteel-1", (-1.5, -5.0, -6.0)), + color: None + ), + "common.items.weapons.axe_1h.bronze-0": ( + vox_spec: ("weapon.axe_1h.bronze-0", (-1.5, -5.0, -6.0)), + color: None + ), + "common.items.weapons.axe_1h.bronze-1": ( + vox_spec: ("weapon.axe_1h.bronze-1", (-1.5, -5.0, -6.0)), + color: None + ), + "common.items.weapons.axe_1h.cobalt-0": ( + vox_spec: ("weapon.axe_1h.cobalt-0", (-1.5, -5.0, -6.0)), + color: None + ), + "common.items.weapons.axe_1h.cobalt-1": ( + vox_spec: ("weapon.axe_1h.cobalt-1", (-1.5, -5.0, -6.0)), + color: None + ), + "common.items.weapons.axe_1h.iron-0": ( + vox_spec: ("weapon.axe_1h.iron-0", (-1.5, -5.0, -6.0)), + color: None + ), + "common.items.weapons.axe_1h.iron-1": ( + vox_spec: ("weapon.axe_1h.iron-1", (-1.5, -5.0, -6.0)), + color: None + ), + "common.items.weapons.axe_1h.iron-2": ( + vox_spec: ("weapon.axe_1h.iron-2", (-1.5, -5.0, -6.0)), + color: None + ), + "common.items.weapons.axe_1h.iron-3": ( + vox_spec: ("weapon.axe_1h.iron-3", (-1.5, -5.0, -6.0)), + color: None + ), + "common.items.weapons.axe_1h.orichalcum-0": ( + vox_spec: ("weapon.axe_1h.orichalcum-0", (-1.5, -5.0, -6.0)), + color: None + ), + "common.items.weapons.axe_1h.steel-0": ( + vox_spec: ("weapon.axe_1h.steel-0", (-1.5, -5.0, -6.0)), + color: None + ), + "common.items.weapons.axe_1h.steel-1": ( + vox_spec: ("weapon.axe_1h.steel-1", (-1.5, -5.0, -6.0)), + color: None + ), + "common.items.weapons.axe_1h.steel-2": ( + vox_spec: ("weapon.axe_1h.steel-2", (-1.5, -5.0, -6.0)), + color: None + ), + "common.items.weapons.axe_1h.stone-0": ( + vox_spec: ("weapon.axe_1h.stone-0", (-1.5, -5.0, -6.0)), + color: None + ), + "common.items.weapons.axe_1h.stone-1": ( + vox_spec: ("weapon.axe_1h.stone-1", (-1.5, -5.0, -6.0)), + color: None + ), + "common.items.weapons.axe_1h.wood-0": ( + vox_spec: ("weapon.axe_1h.wood-0", (-1.5, -5.0, -6.0)), + color: None + ), + "common.items.weapons.axe_1h.wood-1": ( + vox_spec: ("weapon.axe_1h.wood-1", (-1.5, -5.0, -6.0)), + color: None + ), + // Hammers + "common.items.weapons.hammer.hammer_1": ( + vox_spec: ("weapon.hammer.2hhammer_rusty", (-2.5, -5.5, -4.5)), + color: None + ), + "common.items.weapons.hammer.starter_hammer": ( + vox_spec: ("weapon.hammer.2hhammer_rusty", (-2.5, -5.5, -4.5)), + color: None + ), + "common.items.weapons.hammer.wood_hammer-0": ( + vox_spec: ("weapon.hammer.2hhammer_wood-0", (-3.5, -5.5, -4.5)), + color: None + ), + "common.items.weapons.hammer.flimsy_hammer": ( + vox_spec: ("weapon.hammer.2hhammer_flimsy", (-2.5, -5.5, -4.0)), + color: None + ), + "common.items.weapons.hammer.stone_hammer-0": ( + vox_spec: ("weapon.hammer.2hhammer_stone-0", (-3.5, -6.5, -5.0)), + color: None + ), + "common.items.weapons.hammer.stone_hammer-1": ( + vox_spec: ("weapon.hammer.2hhammer_stone-1", (-3.5, -6.5, -5.0)), + color: None + ), + "common.items.weapons.hammer.stone_hammer-2": ( + vox_spec: ("weapon.hammer.2hhammer_stone-2", (-3.5, -6.5, -5.0)), + color: None + ), + "common.items.weapons.hammer.stone_hammer-3": ( + vox_spec: ("weapon.hammer.2hhammer_stone-3", (-2.5, -6.5, -5.0)), + color: None + ), + "common.items.weapons.hammer.worn_iron_hammer-0": ( + vox_spec: ("weapon.hammer.2hhammer_worn_iron-0", (-2.5, -4.5, -4.0)), + color: None + ), + "common.items.weapons.hammer.worn_iron_hammer-1": ( + vox_spec: ("weapon.hammer.2hhammer_worn_iron-1", (-2.5, -4.5, -3.0)), + color: None + ), + "common.items.weapons.hammer.worn_iron_hammer-2": ( + vox_spec: ("weapon.hammer.2hhammer_worn_iron-2", (-2.5, -3.5, -3.0)), + color: None + ), + "common.items.weapons.hammer.worn_iron_hammer-3": ( + vox_spec: ("weapon.hammer.2hhammer_worn_iron-3", (-2.5, -4.5, -3.0)), + color: None + ), + "common.items.weapons.hammer.bronze_hammer-0": ( + vox_spec: ("weapon.hammer.2hhammer_bronze-0", (-2.5, -6.5, -5.0)), + color: None + ), + "common.items.weapons.hammer.bronze_hammer-1": ( + vox_spec: ("weapon.hammer.2hhammer_bronze-1", (-3.5, -3.5, -4.0)), + color: None + ), + "common.items.weapons.hammer.iron_hammer-0": ( + vox_spec: ("weapon.hammer.2hhammer_iron-0", (-2.5, -6.5, -4.0)), + color: None + ), + "common.items.weapons.hammer.iron_hammer-1": ( + vox_spec: ("weapon.hammer.2hhammer_iron-1", (-3.5, -7.5, -5.0)), + color: None + ), + "common.items.weapons.hammer.iron_hammer-2": ( + vox_spec: ("weapon.hammer.2hhammer_iron-2", (-3.5, -3.5, -5.0)), + color: None + ), + "common.items.weapons.hammer.iron_hammer-3": ( + vox_spec: ("weapon.hammer.2hhammer_iron-3", (-3.5, -3.5, -5.0)), + color: None + ), + "common.items.weapons.hammer.iron_hammer-4": ( + vox_spec: ("weapon.hammer.2hhammer_iron-4", (-3.5, -7.5, -4.0)), + color: None + ), + "common.items.weapons.hammer.iron_hammer-5": ( + vox_spec: ("weapon.hammer.2hhammer_iron-5", (-1.5, -7.0, -5.0)), + color: None + ), + "common.items.weapons.hammer.iron_hammer-6": ( + vox_spec: ("weapon.hammer.2hhammer_iron-6", (-2.5, -7.0, -5.0)), + color: None + ), + "common.items.weapons.hammer.iron_hammer-7": ( + vox_spec: ("weapon.hammer.2hhammer_iron-7", (-3.5, -7.5, -5.0)), + color: None + ), + "common.items.weapons.hammer.iron_hammer-8": ( + vox_spec: ("weapon.hammer.2hhammer_iron-8", (-1.5, -5.5, -7.0)), + color: None + ), + "common.items.weapons.hammer.steel_hammer-0": ( + vox_spec: ("weapon.hammer.2hhammer_steel-0", (-2.5, -5.5, -5.0)), + color: None + ), + "common.items.weapons.hammer.steel_hammer-1": ( + vox_spec: ("weapon.hammer.2hhammer_steel-1", (-3.5, -7.5, -5.0)), + color: None + ), + "common.items.weapons.hammer.steel_hammer-2": ( + vox_spec: ("weapon.hammer.2hhammer_steel-2", (-3.5, -3.5, -3.0)), + color: None + ), + "common.items.weapons.hammer.steel_hammer-3": ( + vox_spec: ("weapon.hammer.2hhammer_steel-3", (-5.5, -5.5, -4.5)), + color: None + ), + "common.items.weapons.hammer.steel_hammer-4": ( + vox_spec: ("weapon.hammer.2hhammer_steel-4", (-3.5, -7.5, -4.0)), + color: None + ), + "common.items.weapons.hammer.steel_hammer-5": ( + vox_spec: ("weapon.hammer.2hhammer_steel-5", (-5.5, -5.5, -5.0)), + color: None + ), + "common.items.weapons.hammer.cobalt_hammer-0": ( + vox_spec: ("weapon.hammer.2hhammer_cobalt-0", (-2.5, -7.5, -6.0)), + color: None + ), + "common.items.weapons.hammer.cobalt_hammer-1": ( + vox_spec: ("weapon.hammer.2hhammer_cobalt-1", (-4.5, -4.5, -4.0)), + color: None + ), + "common.items.weapons.hammer.runic_hammer": ( + vox_spec: ("weapon.hammer.2hhammer_runic", (-2.5, -7.5, -5.0)), + color: None + ), + "common.items.weapons.hammer.ramshead_hammer": ( + vox_spec: ("weapon.hammer.2hhammer_ramshead", (-4.5, -5.5, -5.0)), + color: None + ), + "common.items.weapons.hammer.mjolnir": ( + vox_spec: ("weapon.hammer.2hhammer_mjolnir", (-2.5, -8.5, -4.0)), + color: None + ), + "common.items.weapons.hammer.cultist_purp_2h-0": ( + vox_spec: ("weapon.hammer.cult_purp-0", (-3.5, -4.5, -5.0)), + color: None + ), + /*"Craftsman": ( //TODO This should be a 1h hammer! + vox_spec: ("weapon.hammer.craftsman", (-2.0, -5.0, -5.5)), + color: None + ),*/ + // 1h Hammers + "common.items.weapons.hammer_1h.bloodsteel-0": ( + vox_spec: ("weapon.hammer_1h.bloodsteel-0", (-1.5, -5.0, -6.0)), + color: None + ), + "common.items.weapons.hammer_1h.bloodsteel-1": ( + vox_spec: ("weapon.hammer_1h.bloodsteel-1", (-1.5, -5.0, -6.0)), + color: None + ), + "common.items.weapons.hammer_1h.bronze-0": ( + vox_spec: ("weapon.hammer_1h.bronze-0", (-1.5, -5.0, -6.0)), + color: None + ), + "common.items.weapons.hammer_1h.bronze-1": ( + vox_spec: ("weapon.hammer_1h.bronze-1", (-1.5, -5.0, -6.0)), + color: None + ), + "common.items.weapons.hammer_1h.cobalt-0": ( + vox_spec: ("weapon.hammer_1h.cobalt-0", (-1.5, -5.0, -6.0)), + color: None + ), + "common.items.weapons.hammer_1h.cobalt-1": ( + vox_spec: ("weapon.hammer_1h.cobalt-1", (-1.5, -5.0, -6.0)), + color: None + ), + "common.items.weapons.hammer_1h.iron-0": ( + vox_spec: ("weapon.hammer_1h.iron-0", (-1.5, -5.0, -6.0)), + color: None + ), + "common.items.weapons.hammer_1h.iron-1": ( + vox_spec: ("weapon.hammer_1h.iron-1", (-1.5, -5.0, -6.0)), + color: None + ), + "common.items.weapons.hammer_1h.iron-2": ( + vox_spec: ("weapon.hammer_1h.iron-2", (-1.5, -5.0, -6.0)), + color: None + ), + "common.items.weapons.hammer_1h.orichalcum-0": ( + vox_spec: ("weapon.hammer_1h.orichalcum-0", (-1.5, -5.0, -6.0)), + color: None + ), + "common.items.weapons.hammer_1h.steel-0": ( + vox_spec: ("weapon.hammer_1h.steel-0", (-1.5, -5.0, -6.0)), + color: None + ), + "common.items.weapons.hammer_1h.steel-1": ( + vox_spec: ("weapon.hammer_1h.steel-1", (-1.5, -5.0, -6.0)), + color: None + ), + "common.items.weapons.hammer_1h.steel-2": ( + vox_spec: ("weapon.hammer_1h.steel-2", (-1.5, -5.0, -6.0)), + color: None + ), + "common.items.weapons.hammer_1h.stone-0": ( + vox_spec: ("weapon.hammer_1h.stone-0", (-1.5, -5.0, -6.0)), + color: None + ), + "common.items.weapons.hammer_1h.stone-1": ( + vox_spec: ("weapon.hammer_1h.stone-1", (-1.5, -5.0, -6.0)), + color: None + ), + "common.items.weapons.hammer_1h.wood-0": ( + vox_spec: ("weapon.hammer_1h.wood-0", (-1.5, -5.0, -6.0)), + color: None + ), + "common.items.weapons.hammer_1h.wood-1": ( + vox_spec: ("weapon.hammer_1h.wood-1", (-1.5, -5.0, -6.0)), + color: None + ), + // Daggers + "common.items.weapons.dagger.starter_dagger": ( + vox_spec: ("weapon.dagger.dagger_rusty", (-1.5, -3.0, -3.0)), + color: None + ), + "common.items.weapons.dagger.basic_0": ( + vox_spec: ("weapon.dagger.dagger_basic-0", (-1.5, -3.0, -3.0)), + color: None + ), + "common.items.weapons.dagger.cultist_0": ( + vox_spec: ("weapon.dagger.dagger_cult-0", (-1.5, -3.0, -3.0)), + color: None + ), + // Shields + "common.items.weapons.shield.shield_1": ( + vox_spec: ("weapon.shield.wood-0", (-2.5, -5.5, -5.5)), + color: None + ), + // Bows + "common.items.weapons.bow.bone-0": ( + vox_spec: ("weapon.bow.bone-0", (-0.5, -5.5, -12.5)), + color: None + ), + "common.items.weapons.bow.bone-1": ( + vox_spec: ("weapon.bow.bone-1", (-1.5, -4.5, -15.5)), + color: None + ), + "common.items.weapons.bow.bone-2": ( + vox_spec: ("weapon.bow.bone-2", (-1.5, -5.5, -13.0)), + color: None + ), + "common.items.weapons.bow.bone-3": ( + vox_spec: ("weapon.bow.bone-3", (-1.5, -5.0, -12.5)), + color: None + ), + "common.items.weapons.bow.eldwood-0": ( + vox_spec: ("weapon.bow.eldwood-0", (-1.5, -4.0, -12.5)), + color: None + ), + "common.items.weapons.bow.eldwood-1": ( + vox_spec: ("weapon.bow.eldwood-1", (-1.5, -5.5, -12.5)), + color: None + ), + "common.items.weapons.bow.eldwood-2": ( + vox_spec: ("weapon.bow.eldwood-2", (-1.5, -4.5, -12.5)), + color: None + ), + "common.items.weapons.bow.frostwood-0": ( + vox_spec: ("weapon.bow.frostwood-0", (-1.5, -6.0, -13.5)), + color: None + ), + "common.items.weapons.bow.frostwood-1": ( + vox_spec: ("weapon.bow.frostwood-1", (-1.5, -5.0, -12.5)), + color: None + ), + "common.items.weapons.bow.frostwood-2": ( + vox_spec: ("weapon.bow.frostwood-2", (-1.5, -4.5, -12.5)), + color: None + ), + "common.items.weapons.bow.hardwood-0": ( + vox_spec: ("weapon.bow.hardwood-0", (-1.5, -4.0, -12.0)), + color: None + ), + "common.items.weapons.bow.hardwood-1": ( + vox_spec: ("weapon.bow.hardwood-1", (-1.5, -4.5, -12.5)), + color: None + ), + "common.items.weapons.bow.hardwood-2": ( + vox_spec: ("weapon.bow.hardwood-2", (-1.5, -6.0, -12.5)), + color: None + ), + "common.items.weapons.bow.hardwood-3": ( + vox_spec: ("weapon.bow.hardwood-3", (-0.5, -4.0, -11.0)), + color: None + ), + "common.items.weapons.bow.hardwood-4": ( + vox_spec: ("weapon.bow.hardwood-4", (-0.5, -3.5, -12.5)), + color: None + ), + "common.items.weapons.bow.hardwood-5": ( + vox_spec: ("weapon.bow.hardwood-5", (-1.5, -5.0, -13.5)), + color: None + ), + "common.items.weapons.bow.metal-0": ( + vox_spec: ("weapon.bow.metal-0", (-0.5, -6.0, -13.5)), + color: None + ), + "common.items.weapons.bow.metal-1": ( + vox_spec: ("weapon.bow.metal-1", (-1.5, -5.0, -13.5)), + color: None + ), + "common.items.weapons.bow.metal-2": ( + vox_spec: ("weapon.bow.metal-2", (-1.5, -4.0, -11.5)), + color: None + ), + "common.items.weapons.bow.metal-3": ( + vox_spec: ("weapon.bow.metal-3", (-1.5, -5.5, -15.0)), + color: None + ), + "common.items.weapons.bow.metal-4": ( + vox_spec: ("weapon.bow.metal-4", (-1.5, -4.0, -15.0)), + color: None + ), + "common.items.weapons.bow.rawwood-0": ( + vox_spec: ("weapon.bow.rawwood-0", (-1.5, -4.0, -12.5)), + color: None + ), + "common.items.weapons.bow.rawwood-1": ( + vox_spec: ("weapon.bow.rawwood-1", (-1.5, -4.0, -12.5)), + color: None + ), + "common.items.weapons.bow.sagitta": ( + vox_spec: ("weapon.bow.sagitta", (-1.5, -7.0, -12.5)), + color: None + ), + "common.items.weapons.bow.starter": ( + vox_spec: ("weapon.bow.starter", (-0.5, -3.0, -8.5)), + color: None + ), + "common.items.weapons.bow.velorite": ( + vox_spec: ("weapon.bow.velorite", (-1.5, -4.0, -15.0)), + color: None + ), + "common.items.weapons.bow.wood-0": ( + vox_spec: ("weapon.bow.wood-0", (-0.5, -5.0, -11.0)), + color: None + ), + "common.items.weapons.bow.wood-1": ( + vox_spec: ("weapon.bow.wood-1", (-0.5, -4.5, -12.5)), + color: None + ), + "common.items.weapons.bow.wood-2": ( + vox_spec: ("weapon.bow.wood-2", (-0.5, -3.5, -11.0)), + color: None + ), + "common.items.weapons.bow.wood-3": ( + vox_spec: ("weapon.bow.wood-3", (-0.5, -3.5, -12.5)), + color: None + ), + "common.items.weapons.bow.wood-4": ( + vox_spec: ("weapon.bow.wood-4", (-0.5, -4.5, -11.5)), + color: None + ), + // Farming Equipment + "common.items.weapons.tool.broom": ( + vox_spec: ("weapon.tool.broom-0", (-1.5, -4.0, -4.0)), + color: None + ), + "common.items.weapons.tool.hoe": ( + vox_spec: ("weapon.tool.hoe_green", (-2.5, -4.5, -4.0)), + color: None + ), + "common.items.weapons.tool.pitchfork": ( + vox_spec: ("weapon.tool.pitchfork-0", (-1.0, -3.5, -4.0)), + color: None + ), + "common.items.weapons.tool.fishing_rod": ( + vox_spec: ("weapon.tool.fishing_rod_blue-0", (-2.5, -4.5, -4.0)), + color: None + ), + "common.items.weapons.tool.rake": ( + vox_spec: ("weapon.tool.rake-0", (-1.0, -5.5, -4.0)), + color: None + ), + "common.items.weapons.tool.pickaxe": ( + vox_spec: ("weapon.tool.pickaxe_green-0", (-1.5, -7.5, -4.0)), + color: None + ), + "common.items.weapons.tool.shovel-0": ( + vox_spec: ("weapon.tool.shovel_green", (-1.0, -2.5, -4.0)), + color: None + ), + "common.items.weapons.tool.shovel-1": ( + vox_spec: ("weapon.tool.shovel_gold", (-1.0, -2.5, -4.0)), + color: None + ), + // Staves + "common.items.weapons.staff.staff_1": ( + vox_spec: ("weapon.staff.firestaff_starter", (-1.5, -3.0, -3.0)), + color: None + ), + "common.items.weapons.staff.starter_staff": ( + vox_spec: ("weapon.staff.firestaff_starter", (-1.5, -3.0, -3.0)), + color: None + ), + "common.items.weapons.staff.bone_staff": ( + vox_spec: ("weapon.staff.firestaff_bone", (-1.5, -2.5, -3.0)), + color: None + ), + "common.items.weapons.staff.amethyst_staff": ( + vox_spec: ("weapon.staff.firestaff_amethyst", (-1.5, -4.0, -4.0)), + color: None + ), + "common.items.weapons.staff.cultist_staff": ( + vox_spec: ("weapon.staff.firestaff_cultist", (-2.5, -2.5, -4.0)), + color: None + ), + // Healing sceptre + "common.items.weapons.sceptre.starter_sceptre": ( + vox_spec: ("weapon.sceptre.wood-simple", (-1.5, -2.5, -6.0)), + color: None + ), + "common.items.weapons.sceptre.moon0": ( + vox_spec: ("weapon.sceptre.moon", (-1.5, -2.5, -6.0)), + color: None + ), + "common.items.weapons.sceptre.staff_nature": ( + vox_spec: ("weapon.sceptre.wood-nature", (-1.0, -6.0, -5.0)), + color: None + ), + "common.items.weapons.sceptre.totem_green": ( + vox_spec: ("weapon.sceptre.totem_green", (-1.5, -2.5, -6.0)), + color: None + ), + "common.items.weapons.sceptre.root_green0": ( + vox_spec: ("weapon.sceptre.root_green", (-1.5, -2.5, -6.0)), + color: None + ), + "common.items.weapons.sceptre.fork0": ( + vox_spec: ("weapon.sceptre.fork", (-1.5, -2.5, -6.0)), + color: None + ), + "common.items.weapons.sceptre.loops0": ( + vox_spec: ("weapon.sceptre.loops", (-1.5, -2.5, -6.0)), + color: None + ), + "common.items.weapons.sceptre.root_evil": ( + vox_spec: ("weapon.sceptre.root_evil", (-1.5, -2.5, -6.0)), + color: None + ), + "common.items.weapons.sceptre.sceptre_velorite_0": ( + vox_spec: ("weapon.sceptre.ore-nature", (-2.0, -6.0, -5.0)), + color: None + ), + // Misc + "common.items.debug.admin_stick": ( + vox_spec: ("weapon.tool.broom_belzeshrub_purple", (-3.0, -4.0, -4.0)), + color: None + ), + "common.items.debug.admin_sword": ( + vox_spec: ("weapon.sword.frost-1", (-2.0, -4.5, -7.5)), + color: None + ), + // Misc + "common.items.weapons.empty.empty": ( + vox_spec: ("armor.empty", (-3.0, -3.5, 1.0)), + color: None + ), + "common.items.npc_weapons.empty.empty": ( + vox_spec: ("armor.empty", (-3.0, -3.5, 1.0)), + color: None + ), +//BIPEDLARGE + "common.items.npc_weapons.hammer.ogre_hammer": ( + vox_spec: ("weapon.hammer.2hhammer_ogre", (-5.0, -5.5, -7.0)), + color: None + ), + "common.items.npc_weapons.staff.ogre_staff": ( + vox_spec: ("weapon.staff.firestaff_ogre", (-2.5, -5.5, -6.0)), + color: None + ), + "common.items.npc_weapons.hammer.cyclops_hammer": ( + vox_spec: ("weapon.hammer.2hhammer_cyclops-0", (-5.0, -6.5, -7.0)), + color: None + ), + "common.items.npc_weapons.hammer.troll_hammer": ( + vox_spec: ("weapon.hammer.2hhammer_troll", (-4.0, -6.0, -7.0)), + color: None + ), + "common.items.npc_weapons.sword.dullahan_sword": ( + vox_spec: ("weapon.sword.greatsword_2h_dullahan", (-1.5, -9.0, -10.0)), + color: None + ), + "common.items.npc_weapons.staff.saurok_staff": ( + vox_spec: ("weapon.staff.firestaff_saurok", (-3.0, -3.0, -6.0)), + color: None + ), + "common.items.npc_weapons.sword.saurok_sword": ( + vox_spec: ("weapon.sword.long_2h_saurok", (-1.5, -4.0, -5.0)), + color: None + ), + "common.items.npc_weapons.bow.saurok_bow": ( + vox_spec: ("weapon.bow.longbow_saurok", (-1.5, -4.0, -16.5)), + color: None + ), + "common.items.npc_weapons.staff.mindflayer_staff": ( + vox_spec: ("weapon.staff.firestaff_mindflayer", (-5.5, -3.5, -8.0)), + color: None + ), + "common.items.npc_weapons.unique.beast_claws": ( + vox_spec: ("armor.empty", (0.0, 0.0, 0.0)), + color: None + ), + "common.items.npc_weapons.unique.wendigo_magic": ( + vox_spec: ("armor.empty", (0.0, 0.0, 0.0)), + color: None + ), + "common.items.npc_weapons.unique.tidal_claws": ( + vox_spec: ("armor.empty", (0.0, 0.0, 0.0)), + color: None + ), + "common.items.npc_weapons.axe.minotaur_axe": ( + vox_spec: ("weapon.axe.2haxe_minotaur", (-2.5, -9.0, -6.0)), + color: None + ), + "common.items.npc_weapons.hammer.yeti_hammer": ( + vox_spec: ("weapon.hammer.2hhammer_yeti", (-7.5, -7.0, -7.0)), + color: None + ), + "common.items.npc_weapons.hammer.harvester_scythe": ( + vox_spec: ("weapon.hammer.2hhammer_harvester", (-1.5, -7.5, -6.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)), + color: None + ), + "common.items.npc_weapons.biped_small.adlet.gnoll_staff": ( + vox_spec: ("weapon.biped_small.staff.sahagin", (-0.5, -4.0, -4.0)), + color: None + ), + "common.items.npc_weapons.biped_small.adlet.wooden_spear": ( + vox_spec: ("weapon.biped_small.spear.adlet", (-0.5, -3.0, -4.0)), + color: None + ), + "common.items.npc_weapons.biped_small.gnarling.adlet_bow": ( + vox_spec: ("weapon.biped_small.bow.adlet", (-1.5, -3.0, -5.0)), + color: None + ), + "common.items.npc_weapons.biped_small.gnarling.gnoll_staff": ( + vox_spec: ("weapon.biped_small.staff.sahagin", (-0.5, -4.0, -4.0)), + color: None + ), + "common.items.npc_weapons.biped_small.gnarling.wooden_spear": ( + vox_spec: ("weapon.biped_small.spear.adlet", (-0.5, -3.0, -4.0)), + color: None + ), + "common.items.npc_weapons.biped_small.sahagin.adlet_bow": ( + vox_spec: ("weapon.biped_small.bow.sahagin", (-0.5, -5.5, -9.5)), + color: None + ), + "common.items.npc_weapons.biped_small.sahagin.gnoll_staff": ( + vox_spec: ("weapon.biped_small.staff.sahagin", (-0.5, -4.0, -4.0)), + color: None + ), + "common.items.npc_weapons.biped_small.sahagin.wooden_spear": ( + vox_spec: ("weapon.biped_small.spear.sahagin", (-0.5, -3.0, -4.0)), + color: None + ), + "common.items.npc_weapons.biped_small.haniwa.adlet_bow": ( + vox_spec: ("weapon.biped_small.bow.haniwa", (-0.5, -4.5, -10.5)), + color: None + ), + "common.items.npc_weapons.biped_small.haniwa.gnoll_staff": ( + vox_spec: ("weapon.biped_small.staff.sahagin", (-0.5, -4.0, -4.0)), + color: None + ), + "common.items.npc_weapons.biped_small.haniwa.wooden_spear": ( + vox_spec: ("weapon.biped_small.spear.haniwa", (-0.5, -3.0, -4.0)), + color: None + ), + "common.items.npc_weapons.biped_small.myrmidon.adlet_bow": ( + vox_spec: ("weapon.biped_small.bow.myrmidon", (-0.5, -5.0, -10.5)), + color: None + ), + "common.items.npc_weapons.biped_small.myrmidon.gnoll_staff": ( + vox_spec: ("weapon.biped_small.staff.sahagin", (-0.5, -4.0, -4.0)), + color: None + ), + "common.items.npc_weapons.biped_small.myrmidon.wooden_spear": ( + vox_spec: ("weapon.biped_small.spear.myrmidon", (-0.5, -2.0, -4.0)), + color: None + ), +}) diff --git a/assets/voxygen/voxel/bird_medium_central_manifest.ron b/assets/voxygen/voxel/bird_medium_central_manifest.ron index 87bf41bdf7..ee00459527 100644 --- a/assets/voxygen/voxel/bird_medium_central_manifest.ron +++ b/assets/voxygen/voxel/bird_medium_central_manifest.ron @@ -139,32 +139,32 @@ central: ("npc.eagle.male.tail"), ) ), - (Snowyowl, Male): ( + (Owl, Male): ( head: ( offset: (-3.5, -4.5, -4.0), - central: ("npc.snowyowl.male.head"), + central: ("npc.owl.male.head"), ), torso: ( offset: (-3.5, -5.0, -3.0), - central: ("npc.snowyowl.male.torso"), + central: ("npc.owl.male.torso"), ), tail: ( offset: (-2.5, -3.0, -2.0), - central: ("npc.snowyowl.male.tail"), + central: ("npc.owl.male.tail"), ) ), - (Snowyowl, Female): ( + (Owl, Female): ( head: ( - offset: (-3.5, -4.5, -4.0), - central: ("npc.snowyowl.male.head"), + offset: (-4.5, -4.5, -4.5), + central: ("npc.owl.female.head"), ), torso: ( - offset: (-3.5, -5.0, -3.0), - central: ("npc.snowyowl.male.torso"), + offset: (-3.5, -5.0, -3.5), + central: ("npc.owl.female.torso"), ), tail: ( offset: (-2.5, -3.0, -2.0), - central: ("npc.snowyowl.male.tail"), + central: ("npc.owl.female.tail"), ) ), (Parrot, Male): ( diff --git a/assets/voxygen/voxel/bird_medium_lateral_manifest.ron b/assets/voxygen/voxel/bird_medium_lateral_manifest.ron index 35116121e2..dc2287da5f 100644 --- a/assets/voxygen/voxel/bird_medium_lateral_manifest.ron +++ b/assets/voxygen/voxel/bird_medium_lateral_manifest.ron @@ -10,7 +10,7 @@ ), foot_l: ( offset: (-1.0, 0.0, -4.0), - lateral: ("npc.duck.male.leg_l"), + lateral: ("npc.duck.male.leg_r"), ), foot_r: ( offset: (-1.0, 0.0, -4.0), @@ -28,7 +28,7 @@ ), foot_l: ( offset: (-1.0, 0.0, -4.0), - lateral: ("npc.duck.female.leg_l"), + lateral: ("npc.duck.female.leg_r"), ), foot_r: ( offset: (-1.0, 0.0, -4.0), @@ -46,7 +46,7 @@ ), foot_l: ( offset: (-1.0, 0.0, -4.0), - lateral: ("npc.chicken.male.leg_l"), + lateral: ("npc.chicken.male.leg_r"), ), foot_r: ( offset: (-1.0, 0.0, -4.0), @@ -64,7 +64,7 @@ ), foot_l: ( offset: (-1.0, 0.0, -4.0), - lateral: ("npc.chicken.female.leg_l"), + lateral: ("npc.chicken.female.leg_r"), ), foot_r: ( offset: (-1.0, 0.0, -4.0), @@ -82,7 +82,7 @@ ), foot_l: ( offset: (-1.0, 0.0, -6.5), - lateral: ("npc.goose.male.leg_l"), + lateral: ("npc.goose.male.leg_r"), ), foot_r: ( offset: (-1.0, 0.0, -6.5), @@ -100,7 +100,7 @@ ), foot_l: ( offset: (-1.0, 0.0, -6.5), - lateral: ("npc.goose.male.leg_l"), + lateral: ("npc.goose.male.leg_r"), ), foot_r: ( offset: (-1.0, 0.0, -6.5), @@ -110,7 +110,7 @@ (Peacock, Male): ( wing_l: ( offset: (-1.0, -3.5, -5.0), - lateral: ("npc.peacock.male.wing_l"), + lateral: ("npc.peacock.male.wing_r"), ), wing_r: ( offset: (-1.0, -3.5, -5.0), @@ -118,7 +118,7 @@ ), foot_l: ( offset: (-1.0, 0.0, -8.0), - lateral: ("npc.peacock.male.leg_l"), + lateral: ("npc.peacock.male.leg_r"), ), foot_r: ( offset: (-1.0, 0.0, -8.0), @@ -128,7 +128,7 @@ (Peacock, Female): ( wing_l: ( offset: (-1.0, -3.5, -5.0), - lateral: ("npc.peacock.female.wing_l"), + lateral: ("npc.peacock.female.wing_r"), ), wing_r: ( offset: (-1.0, -3.5, -5.0), @@ -136,7 +136,7 @@ ), foot_l: ( offset: (-1.0, 0.0, -8.0), - lateral: ("npc.peacock.female.leg_l"), + lateral: ("npc.peacock.female.leg_r"), ), foot_r: ( offset: (-1.0, 0.0, -8.0), @@ -146,7 +146,7 @@ (Eagle, Male): ( wing_l: ( offset: (-1.0, -3.5, -12.0), - lateral: ("npc.eagle.male.wing_l"), + lateral: ("npc.eagle.male.wing_r"), ), wing_r: ( offset: (-1.0, -3.5, -12.0), @@ -154,7 +154,7 @@ ), foot_l: ( offset: (-1.5, 0.0, -8.0), - lateral: ("npc.eagle.male.leg_l"), + lateral: ("npc.eagle.male.leg_r"), ), foot_r: ( offset: (-1.5, 0.0, -8.0), @@ -164,7 +164,7 @@ (Eagle, Female): ( wing_l: ( offset: (-1.0, -3.5, -12.0), - lateral: ("npc.eagle.male.wing_l"), + lateral: ("npc.eagle.male.wing_r"), ), wing_r: ( offset: (-1.0, -3.5, -12.0), @@ -172,47 +172,47 @@ ), foot_l: ( offset: (-1.5, 0.0, -8.0), - lateral: ("npc.eagle.male.leg_l"), + lateral: ("npc.eagle.male.leg_r"), ), foot_r: ( offset: (-1.5, 0.0, -8.0), lateral: ("npc.eagle.male.leg_r"), ) ), - (Snowyowl, Male): ( + (Owl, Male): ( wing_l: ( offset: (-1.0, -2.5, -8.0), - lateral: ("npc.snowyowl.male.wing_l"), + lateral: ("npc.owl.male.wing_r"), ), wing_r: ( offset: (-1.0, -2.5, -8.0), - lateral: ("npc.snowyowl.male.wing_r"), + lateral: ("npc.owl.male.wing_r"), ), foot_l: ( offset: (-1.0, 0.0, -6.5), - lateral: ("npc.snowyowl.male.leg_l"), + lateral: ("npc.owl.male.leg_r"), ), foot_r: ( offset: (-1.0, 0.0, -6.5), - lateral: ("npc.snowyowl.male.leg_r"), + lateral: ("npc.owl.male.leg_r"), ) ), - (Snowyowl, Female): ( + (Owl, Female): ( wing_l: ( offset: (-1.0, -2.5, -8.0), - lateral: ("npc.snowyowl.male.wing_l"), + lateral: ("npc.owl.female.wing_r"), ), wing_r: ( offset: (-1.0, -2.5, -8.0), - lateral: ("npc.snowyowl.male.wing_r"), + lateral: ("npc.owl.female.wing_r"), ), foot_l: ( offset: (-1.0, 0.0, -6.5), - lateral: ("npc.snowyowl.male.leg_l"), + lateral: ("npc.owl.female.leg_r"), ), foot_r: ( offset: (-1.0, 0.0, -6.5), - lateral: ("npc.snowyowl.male.leg_r"), + lateral: ("npc.owl.female.leg_r"), ) ), (Parrot, Male): ( @@ -226,7 +226,7 @@ ), foot_l: ( offset: (-1.0, 0.0, -3.0), - lateral: ("npc.parrot.male.leg_l"), + lateral: ("npc.parrot.male.leg_r"), ), foot_r: ( offset: (-1.0, 0.0, -3.0), @@ -244,7 +244,7 @@ ), foot_l: ( offset: (-1.0, 0.0, -3.0), - lateral: ("npc.parrot.male.leg_l"), + lateral: ("npc.parrot.male.leg_r"), ), foot_r: ( offset: (-1.0, 0.0, -3.0), @@ -254,7 +254,7 @@ (Cockatrice, Male): ( wing_l: ( offset: (-2.0, -3.0, -9.0), - lateral: ("npc.cockatrice.male.wing_l"), + lateral: ("npc.cockatrice.male.wing_r"), ), wing_r: ( offset: (-2.0, -3.0, -9.0), @@ -262,7 +262,7 @@ ), foot_l: ( offset: (-2.5, 0.0, -12.0), - lateral: ("npc.cockatrice.male.leg_l"), + lateral: ("npc.cockatrice.male.leg_r"), ), foot_r: ( offset: (-2.5, 0.0, -12.0), @@ -272,7 +272,7 @@ (Cockatrice, Female): ( wing_l: ( offset: (-2.0, -3.0, -9.0), - lateral: ("npc.cockatrice.male.wing_l"), + lateral: ("npc.cockatrice.male.wing_r"), ), wing_r: ( offset: (-2.0, -3.0, -9.0), @@ -280,7 +280,7 @@ ), foot_l: ( offset: (-2.5, 0.0, -12.0), - lateral: ("npc.cockatrice.male.leg_l"), + lateral: ("npc.cockatrice.male.leg_r"), ), foot_r: ( offset: (-2.5, 0.0, -12.0), diff --git a/assets/voxygen/voxel/fish_medium_lateral_manifest.ron b/assets/voxygen/voxel/fish_medium_lateral_manifest.ron index cd6184b305..4d8bfcbdab 100644 --- a/assets/voxygen/voxel/fish_medium_lateral_manifest.ron +++ b/assets/voxygen/voxel/fish_medium_lateral_manifest.ron @@ -2,7 +2,7 @@ (Marlin, Male): ( fin_l: ( offset: (-3.0, -5.0, -4.0), - lateral: ("npc.marlin.male.fin_l"), + lateral: ("npc.marlin.male.fin_r"), ), fin_r: ( offset: (0.0, -5.0, -4.0), @@ -12,7 +12,7 @@ (Marlin, Female): ( fin_l: ( offset: (-3.0, -5.0, -4.0), - lateral: ("npc.marlin.male.fin_l"), + lateral: ("npc.marlin.male.fin_r"), ), fin_r: ( offset: (0.0, -5.0, -4.0), diff --git a/assets/voxygen/voxel/fish_small_central_manifest.ron b/assets/voxygen/voxel/fish_small_central_manifest.ron index cd6a16b8f8..eee61b035c 100644 --- a/assets/voxygen/voxel/fish_small_central_manifest.ron +++ b/assets/voxygen/voxel/fish_small_central_manifest.ron @@ -19,4 +19,24 @@ central: ("npc.clownfish.male.tail"), ), ), + (Piranha, Male): ( + chest: ( + offset: (-1.5, -5.5, -5.5), + central: ("npc.piranha.male.chest"), + ), + tail: ( + offset: (-0.5, -5.0, -3.5), + central: ("npc.piranha.male.tail"), + ), + ), + (Piranha, Female): ( + chest: ( + offset: (-1.5, -5.5, -5.5), + central: ("npc.piranha.male.chest"), + ), + tail: ( + offset: (-0.5, -5.0, -3.5), + central: ("npc.piranha.male.tail"), + ), + ), }) diff --git a/assets/voxygen/voxel/fish_small_lateral_manifest.ron b/assets/voxygen/voxel/fish_small_lateral_manifest.ron index 55415f9a5d..05149d8471 100644 --- a/assets/voxygen/voxel/fish_small_lateral_manifest.ron +++ b/assets/voxygen/voxel/fish_small_lateral_manifest.ron @@ -2,21 +2,41 @@ (Clownfish, Male): ( fin_l: ( offset: (-0.5, -3.0, -4.0), - lateral: ("npc.clownfish.male.fin_l"), + lateral: ("npc.clownfish.male.fin"), ), fin_r: ( offset: (-0.5, -3.0, -4.0), - lateral: ("npc.clownfish.male.fin_r"), + lateral: ("npc.clownfish.male.fin"), ), ), (Clownfish, Female): ( fin_l: ( offset: (-0.5, -3.0, -4.0), - lateral: ("npc.clownfish.male.fin_l"), + lateral: ("npc.clownfish.male.fin"), ), fin_r: ( offset: (-0.5, -3.0, -4.0), - lateral: ("npc.clownfish.male.fin_r"), + lateral: ("npc.clownfish.male.fin"), + ), + ), + (Piranha, Male): ( + fin_l: ( + offset: (-0.5, -4.0, -3.0), + lateral: ("npc.piranha.male.fin"), + ), + fin_r: ( + offset: (-0.5, -4.0, -3.0), + lateral: ("npc.piranha.male.fin"), + ), + ), + (Piranha, Female): ( + fin_l: ( + offset: (-0.5, -4.0, -3.0), + lateral: ("npc.piranha.male.fin"), + ), + fin_r: ( + offset: (-0.5, -4.0, -3.0), + lateral: ("npc.piranha.male.fin"), ), ), }) diff --git a/assets/voxygen/voxel/golem_central_manifest.ron b/assets/voxygen/voxel/golem_central_manifest.ron index 593ef28bab..10ab717d32 100644 --- a/assets/voxygen/voxel/golem_central_manifest.ron +++ b/assets/voxygen/voxel/golem_central_manifest.ron @@ -71,4 +71,40 @@ central: ("npc.treant.male.chest_lower"), ), ), + (ClayGolem, Male): ( + head: ( + offset: (-10.5, -6.0, -5.0), + central: ("npc.claygolem.male.head"), + ), + jaw: ( + offset: (-9.5, 0.0, -3.0), + central: ("armor.empty"), + ), + torso_upper: ( + offset: (-9.5, -7.0, -6.5), + central: ("npc.claygolem.male.chest_upper"), + ), + torso_lower: ( + offset: (-9.5, -7.0, -8.0), + central: ("npc.claygolem.male.chest_lower"), + ), + ), + (ClayGolem, Female): ( + head: ( + offset: (-10.5, -6.0, -5.0), + central: ("npc.claygolem.male.head"), + ), + jaw: ( + offset: (-9.5, 0.0, -3.0), + central: ("armor.empty"), + ), + torso_upper: ( + offset: (-9.5, -7.0, -6.5), + central: ("npc.claygolem.male.chest_upper"), + ), + torso_lower: ( + offset: (-9.5, -7.0, -8.0), + central: ("npc.claygolem.male.chest_lower"), + ), + ), }) diff --git a/assets/voxygen/voxel/golem_lateral_manifest.ron b/assets/voxygen/voxel/golem_lateral_manifest.ron index 07de63f088..72f3858875 100644 --- a/assets/voxygen/voxel/golem_lateral_manifest.ron +++ b/assets/voxygen/voxel/golem_lateral_manifest.ron @@ -135,4 +135,72 @@ lateral: ("npc.treant.male.foot_r"), ) ), + (ClayGolem, Male): ( + shoulder_l: ( + offset: (-13.0, -3.5, -6.5), + lateral: ("npc.claygolem.male.shoulder_l"), + ), + shoulder_r: ( + offset: (0.0, -3.5, -6.5), + lateral: ("npc.claygolem.male.shoulder_r"), + ), + hand_l: ( + offset: (-7.5, -6.5, -17.0), + lateral: ("npc.claygolem.male.hand_l"), + ), + hand_r: ( + offset: (-7.5, -6.5, -17.0), + lateral: ("npc.claygolem.male.hand_r"), + ), + leg_l: ( + offset: (-8.0, -4.0, -10.0), + lateral: ("npc.claygolem.male.leg_l"), + ), + leg_r: ( + offset: (0.0, -4.0, -10.0), + lateral: ("npc.claygolem.male.leg_r"), + ), + foot_l: ( + offset: (-2.5, -3.0, -7.0), + lateral: ("npc.claygolem.male.foot_l"), + ), + foot_r: ( + offset: (-2.5, -3.0, -7.0), + lateral: ("npc.claygolem.male.foot_r"), + ) + ), + (ClayGolem, Female): ( + shoulder_l: ( + offset: (-13.0, -3.5, -6.5), + lateral: ("npc.claygolem.male.shoulder_l"), + ), + shoulder_r: ( + offset: (0.0, -3.5, -6.5), + lateral: ("npc.claygolem.male.shoulder_r"), + ), + hand_l: ( + offset: (-7.5, -6.5, -17.0), + lateral: ("npc.claygolem.male.hand_l"), + ), + hand_r: ( + offset: (-7.5, -6.5, -17.0), + lateral: ("npc.claygolem.male.hand_r"), + ), + leg_l: ( + offset: (-8.0, -4.0, -10.0), + lateral: ("npc.claygolem.male.leg_l"), + ), + leg_r: ( + offset: (0.0, -4.0, -10.0), + lateral: ("npc.claygolem.male.leg_r"), + ), + foot_l: ( + offset: (-2.5, -3.0, -7.0), + lateral: ("npc.claygolem.male.foot_l"), + ), + foot_r: ( + offset: (-2.5, -3.0, -7.0), + lateral: ("npc.claygolem.male.foot_r"), + ) + ), }) diff --git a/assets/voxygen/voxel/humanoid_armor_belt_manifest.ron b/assets/voxygen/voxel/humanoid_armor_belt_manifest.ron index c7251d3ee7..109a2e2b0b 100644 --- a/assets/voxygen/voxel/humanoid_armor_belt_manifest.ron +++ b/assets/voxygen/voxel/humanoid_armor_belt_manifest.ron @@ -60,6 +60,10 @@ vox_spec: ("armor.belt.steel-0", (-5.0, -4.5, 2.0)), color: None ), + "PlateLeather": ( + vox_spec: ("armor.belt.plate_leather-0", (-4.0, -4.5, 2.0)), + color: None + ), "Druid": ( vox_spec: ("armor.belt.druid", (-4.0, -3.5, -1.0)), color: None diff --git a/assets/voxygen/voxel/humanoid_armor_chest_manifest.ron b/assets/voxygen/voxel/humanoid_armor_chest_manifest.ron index 786d64cb9d..73f5a91db1 100644 --- a/assets/voxygen/voxel/humanoid_armor_chest_manifest.ron +++ b/assets/voxygen/voxel/humanoid_armor_chest_manifest.ron @@ -138,6 +138,10 @@ vox_spec: ("armor.chest.steel-0", (-8.0, -4.5, 2.0)), color: None ), + "PlateLeather": ( + vox_spec: ("armor.chest.plate_leather", (-8.0, -5.5, 2.0)), + color: None + ), "Leather2": ( vox_spec: ("armor.chest.leather-2", (-7.0, -3.5, 2.0)), color: None diff --git a/assets/voxygen/voxel/humanoid_armor_foot_manifest.ron b/assets/voxygen/voxel/humanoid_armor_foot_manifest.ron index 0e86f2f0d8..86ff26fb20 100644 --- a/assets/voxygen/voxel/humanoid_armor_foot_manifest.ron +++ b/assets/voxygen/voxel/humanoid_armor_foot_manifest.ron @@ -48,6 +48,10 @@ vox_spec: ("armor.foot.steel-0", (-2.5, -3.5, -2.0)), color: None ), + "PlateLeather": ( + vox_spec: ("armor.foot.plate_leather", (-2.5, -3.5, -2.0)), + color: None + ), "Leather2": ( vox_spec: ("armor.foot.leather-2", (-2.5, -3.5, -2.0)), color: None diff --git a/assets/voxygen/voxel/humanoid_armor_hand_manifest.ron b/assets/voxygen/voxel/humanoid_armor_hand_manifest.ron index 32503f4e36..4fe3176e98 100644 --- a/assets/voxygen/voxel/humanoid_armor_hand_manifest.ron +++ b/assets/voxygen/voxel/humanoid_armor_hand_manifest.ron @@ -110,6 +110,16 @@ color: None ) ), + "PlateLeather": ( + left: ( + vox_spec: ("armor.hand.plate_leather_left-0", (-1.5, -1.5, -2.5)), + color: None + ), + right: ( + vox_spec: ("armor.hand.plate_leather_right-0", (-1.5, -1.5, -2.5)), + color: None + ) + ), "Leather2": ( left: ( vox_spec: ("armor.hand.leather_left-2", (-1.5, -1.5, -2.5)), diff --git a/assets/voxygen/voxel/humanoid_armor_pants_manifest.ron b/assets/voxygen/voxel/humanoid_armor_pants_manifest.ron index 81e6991489..6e42a21601 100644 --- a/assets/voxygen/voxel/humanoid_armor_pants_manifest.ron +++ b/assets/voxygen/voxel/humanoid_armor_pants_manifest.ron @@ -72,6 +72,10 @@ vox_spec: ("armor.pants.steel-0", (-6.0, -4.5, 1.0)), color: None ), + "PlateLeather": ( + vox_spec: ("armor.pants.plate_leather-0", (-5.0, -4.5, 1.0)), + color: None + ), "Leather2": ( vox_spec: ("armor.pants.leather-2", (-5.0, -3.5, 1.0)), color: None diff --git a/assets/voxygen/voxel/humanoid_armor_shoulder_manifest.ron b/assets/voxygen/voxel/humanoid_armor_shoulder_manifest.ron index fd8ce1ab32..9a394e488c 100644 --- a/assets/voxygen/voxel/humanoid_armor_shoulder_manifest.ron +++ b/assets/voxygen/voxel/humanoid_armor_shoulder_manifest.ron @@ -131,6 +131,16 @@ color: None ) ), + "PlateLeather": ( + left: ( + vox_spec: ("armor.shoulder.plate_leather_left-0", (-4.0, -4.5 , 0.0)), + color: None + ), + right: ( + vox_spec: ("armor.shoulder.plate_leather_right-0", (-0.9, -4.5, 0.0)), + color: None + ) + ), "Leather2": ( left: ( vox_spec: ("armor.shoulder.leather_left-2", (-5.0, -3.8, -0.9)), diff --git a/assets/voxygen/voxel/humanoid_main_weapon_manifest.ron b/assets/voxygen/voxel/humanoid_main_weapon_manifest.ron index 45f11c6aac..b1667c6a2a 100644 --- a/assets/voxygen/voxel/humanoid_main_weapon_manifest.ron +++ b/assets/voxygen/voxel/humanoid_main_weapon_manifest.ron @@ -924,4 +924,78 @@ vox_spec: ("armor.empty", (-3.0, -3.5, 1.0)), color: None ), + "common.items.npc_weapons.empty.empty": ( + vox_spec: ("armor.empty", (-3.0, -3.5, 1.0)), + color: None + ), +//BIPEDLARGE + "common.items.npc_weapons.hammer.ogre_hammer": ( + vox_spec: ("weapon.hammer.2hhammer_ogre", (-5.0, -5.5, -7.0)), + color: None + ), + "common.items.npc_weapons.staff.ogre_staff": ( + vox_spec: ("weapon.staff.firestaff_ogre", (-2.5, -5.5, -6.0)), + color: None + ), + "common.items.npc_weapons.hammer.cyclops_hammer": ( + vox_spec: ("weapon.hammer.2hhammer_cyclops-0", (-5.0, -6.5, -7.0)), + color: None + ), + "common.items.npc_weapons.hammer.troll_hammer": ( + vox_spec: ("weapon.hammer.2hhammer_troll", (-4.0, -6.0, -7.0)), + color: None + ), + "common.items.npc_weapons.sword.dullahan_sword": ( + vox_spec: ("weapon.sword.greatsword_2h_dullahan", (-1.5, -9.0, -10.0)), + color: None + ), + "common.items.npc_weapons.staff.saurok_staff": ( + vox_spec: ("weapon.staff.firestaff_saurok", (-3.0, -3.0, -6.0)), + color: None + ), + "common.items.npc_weapons.sword.saurok_sword": ( + vox_spec: ("weapon.sword.long_2h_saurok", (-1.5, -4.0, -5.0)), + color: None + ), + "common.items.npc_weapons.bow.saurok_bow": ( + vox_spec: ("weapon.bow.longbow_saurok", (-1.5, -4.0, -16.5)), + color: None + ), + "common.items.npc_weapons.staff.mindflayer_staff": ( + vox_spec: ("weapon.staff.firestaff_mindflayer", (-5.5, -3.5, -8.0)), + color: None + ), + "common.items.npc_weapons.hammer.yeti_hammer": ( + vox_spec: ("weapon.hammer.2hhammer_yeti", (-7.5, -7.0, -7.0)), + color: None + ), + "common.items.npc_weapons.unique.beast_claws": ( + vox_spec: ("armor.empty", (0.0, 0.0, 0.0)), + color: None + ), + "common.items.npc_weapons.unique.wendigo_magic": ( + vox_spec: ("armor.empty", (0.0, 0.0, 0.0)), + color: None + ), + "common.items.npc_weapons.unique.tidal_claws": ( + vox_spec: ("armor.empty", (0.0, 0.0, 0.0)), + color: None + ), +//BIPEDSMALL + "common.items.npc_weapons.spear.wooden_spear": ( + vox_spec: ("weapon.spear.sahagin", (-1.5, -3.0, -5.0)), + color: None + ), + "common.items.weapon.spear.adlet": ( + vox_spec: ("weapon.spear.adlet", (-0.5, -3.0, -5.0)), + color: None + ), + "common.items.npc_weapons.bow.adlet": ( + vox_spec: ("weapon.bow.adlet", (-0.5, -5.5, -9.5)), + color: None + ), + "common.items.npc_weapons.staff.gnoll": ( + vox_spec: ("weapon.staff.gnoll", (-2.5, -3.0, -4.0)), + color: None + ), }) diff --git a/assets/voxygen/voxel/npc/adlet/male/bow/bow_movelater.vox b/assets/voxygen/voxel/npc/adlet/male/bow/bow_movelater.vox new file mode 100644 index 0000000000..208e52cf49 --- /dev/null +++ b/assets/voxygen/voxel/npc/adlet/male/bow/bow_movelater.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ef2809ad85372e7662cb5bf787d6054e49b6b749eaf5c2157e12a15649dc3242 +size 1344 diff --git a/assets/voxygen/voxel/npc/adlet/male/bow/chest.vox b/assets/voxygen/voxel/npc/adlet/male/bow/chest.vox new file mode 100644 index 0000000000..27c9b3135d --- /dev/null +++ b/assets/voxygen/voxel/npc/adlet/male/bow/chest.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7a4bfa627e7e6029ffe07381dc6cf1e988a48ce1ab2d8573e621600582ce4575 +size 1696 diff --git a/assets/voxygen/voxel/npc/adlet/male/bow/hand_r.vox b/assets/voxygen/voxel/npc/adlet/male/bow/hand_r.vox new file mode 100644 index 0000000000..4061bb6228 --- /dev/null +++ b/assets/voxygen/voxel/npc/adlet/male/bow/hand_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:078af24a2889ed8b7aab36687bae8149eaf71bbbaaec2154cf3a19ddb0030f7f +size 1420 diff --git a/assets/voxygen/voxel/npc/adlet/male/bow/head.vox b/assets/voxygen/voxel/npc/adlet/male/bow/head.vox new file mode 100644 index 0000000000..d4e4579cf3 --- /dev/null +++ b/assets/voxygen/voxel/npc/adlet/male/bow/head.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:38ab461be8fc63fd4dd334bf9a8b4613a779e9d4f910594c2a12b56ef0410578 +size 3384 diff --git a/assets/voxygen/voxel/npc/adlet/male/bow/pants.vox b/assets/voxygen/voxel/npc/adlet/male/bow/pants.vox new file mode 100644 index 0000000000..f432762f32 --- /dev/null +++ b/assets/voxygen/voxel/npc/adlet/male/bow/pants.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eaf54b7e40ab08b25f57dd934917d958e815f09fd02c5f627a212e705dece20e +size 1888 diff --git a/assets/voxygen/voxel/npc/adlet/male/foot_r.vox b/assets/voxygen/voxel/npc/adlet/male/foot_r.vox new file mode 100644 index 0000000000..fd9a64bc1d --- /dev/null +++ b/assets/voxygen/voxel/npc/adlet/male/foot_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ec5b001f718eeaba782262f84ddb375ead7a62fd2fe19b2bba3c1a39f3404a16 +size 1304 diff --git a/assets/voxygen/voxel/npc/adlet/male/spear/chest.vox b/assets/voxygen/voxel/npc/adlet/male/spear/chest.vox new file mode 100644 index 0000000000..5ba90ecd91 --- /dev/null +++ b/assets/voxygen/voxel/npc/adlet/male/spear/chest.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ed21307a67cc28e6aafa5bf2ce6ee4a4752008e60fbc8548440f4e6a97490490 +size 1688 diff --git a/assets/voxygen/voxel/npc/adlet/male/spear/hand_r.vox b/assets/voxygen/voxel/npc/adlet/male/spear/hand_r.vox new file mode 100644 index 0000000000..bff8a36769 --- /dev/null +++ b/assets/voxygen/voxel/npc/adlet/male/spear/hand_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fe3cee39cf25b7be4cbca9e6a6fa0d7f9629b71c91b1b393e8cc074555f5609b +size 1420 diff --git a/assets/voxygen/voxel/npc/adlet/male/spear/head.vox b/assets/voxygen/voxel/npc/adlet/male/spear/head.vox new file mode 100644 index 0000000000..26a71c9cec --- /dev/null +++ b/assets/voxygen/voxel/npc/adlet/male/spear/head.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a936f5a25ab1b9dcc72f7824b00b743ae7866822cfc4764238bfa9419a5d9a0f +size 3336 diff --git a/assets/voxygen/voxel/npc/adlet/male/spear/pants.vox b/assets/voxygen/voxel/npc/adlet/male/spear/pants.vox new file mode 100644 index 0000000000..8cbfbfde97 --- /dev/null +++ b/assets/voxygen/voxel/npc/adlet/male/spear/pants.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:45ad1cf02069507286e9e45ae1a3f9a5739653b86ba40cd2327cfc833c1e9b7a +size 1904 diff --git a/assets/voxygen/voxel/npc/adlet/male/tail.vox b/assets/voxygen/voxel/npc/adlet/male/tail.vox new file mode 100644 index 0000000000..f4cf97a571 --- /dev/null +++ b/assets/voxygen/voxel/npc/adlet/male/tail.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:558e995b6496a667225c1b6083a986c1d975c71afed60fe52c88b95d33f5839d +size 1232 diff --git a/assets/voxygen/voxel/npc/alligator/male/foot_bl.vox b/assets/voxygen/voxel/npc/alligator/male/foot_bl.vox deleted file mode 100644 index a673df88b3..0000000000 --- a/assets/voxygen/voxel/npc/alligator/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:95c9ab892899acebcad8b556c1e11da6d869faaac582e464bf41473341f2b34a -size 1340 diff --git a/assets/voxygen/voxel/npc/alligator/male/foot_fl.vox b/assets/voxygen/voxel/npc/alligator/male/foot_fl.vox deleted file mode 100644 index 5ecb3871c8..0000000000 --- a/assets/voxygen/voxel/npc/alligator/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b8b654d8bfc43da2b0a5391ebbe2bc3ab076098f75401bb0baaeafcc1aed5dc9 -size 1300 diff --git a/assets/voxygen/voxel/npc/antelope/male/foot_bl.vox b/assets/voxygen/voxel/npc/antelope/male/foot_bl.vox deleted file mode 100644 index 9afedc25e9..0000000000 --- a/assets/voxygen/voxel/npc/antelope/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:38b152453d10f295128470bb061555bfec310ad2c9e9d5c81fc3ff730fa54d13 -size 1224 diff --git a/assets/voxygen/voxel/npc/antelope/male/foot_fl.vox b/assets/voxygen/voxel/npc/antelope/male/foot_fl.vox deleted file mode 100644 index b1095c4307..0000000000 --- a/assets/voxygen/voxel/npc/antelope/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:3eb8fa5ac6ce816784a0eed66ac5487a561d60460af3deeeb998824864d01bb1 -size 1240 diff --git a/assets/voxygen/voxel/npc/antelope/male/leg_bl.vox b/assets/voxygen/voxel/npc/antelope/male/leg_bl.vox deleted file mode 100644 index 7c2a01e18b..0000000000 --- a/assets/voxygen/voxel/npc/antelope/male/leg_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ce303274bbef4d8017def9f4523892610f0c0bfb551dc49e0bebba263c1a0ae9 -size 1564 diff --git a/assets/voxygen/voxel/npc/antelope/male/leg_fl.vox b/assets/voxygen/voxel/npc/antelope/male/leg_fl.vox deleted file mode 100644 index 3ea98d3cd9..0000000000 --- a/assets/voxygen/voxel/npc/antelope/male/leg_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f15803ca7d9c7e1d7498c248f8aa5b6a47bf8e6250ff2e439d37126eb45bba09 -size 1444 diff --git a/assets/voxygen/voxel/npc/archaeos/male/foot_l.vox b/assets/voxygen/voxel/npc/archaeos/male/foot_l.vox deleted file mode 100644 index 03a9710acd..0000000000 --- a/assets/voxygen/voxel/npc/archaeos/male/foot_l.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:00268caa63742ad6b6ecec52881a67bf1efc4cb914d0f95e3e42610b25a71685 -size 2204 diff --git a/assets/voxygen/voxel/npc/archaeos/male/hand_l.vox b/assets/voxygen/voxel/npc/archaeos/male/hand_l.vox deleted file mode 100644 index 1151e23ba6..0000000000 --- a/assets/voxygen/voxel/npc/archaeos/male/hand_l.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:db3c129d96bf431c65c7e8f3ac4049c82682a630806a616ba57f7d844f355a7a -size 1316 diff --git a/assets/voxygen/voxel/npc/archaeos/male/leg_l.vox b/assets/voxygen/voxel/npc/archaeos/male/leg_l.vox deleted file mode 100644 index bc82319cbb..0000000000 --- a/assets/voxygen/voxel/npc/archaeos/male/leg_l.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:eb4161119dbb651beefd80d1baa3f4d293970c30605999380786f771b74c406d -size 2540 diff --git a/assets/voxygen/voxel/npc/asp/male/foot_bl.vox b/assets/voxygen/voxel/npc/asp/male/foot_bl.vox deleted file mode 100644 index 5985364b69..0000000000 --- a/assets/voxygen/voxel/npc/asp/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:efb25b8b4f016dd0cb7745e77de63848cfc991eb6bde5ea25099f6ad44d64b2b -size 1348 diff --git a/assets/voxygen/voxel/npc/asp/male/foot_fl.vox b/assets/voxygen/voxel/npc/asp/male/foot_fl.vox deleted file mode 100644 index 893ee4aa13..0000000000 --- a/assets/voxygen/voxel/npc/asp/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5cb88a6ed2484b2e3e6fce6a6c1d2e362870e2b068039b3df4bb7b3264e0dd93 -size 1344 diff --git a/assets/voxygen/voxel/npc/axolotl/male/foot_bl.vox b/assets/voxygen/voxel/npc/axolotl/male/foot_bl.vox deleted file mode 100644 index 24830ba05d..0000000000 --- a/assets/voxygen/voxel/npc/axolotl/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:0a06dd06be133f1b79f2ea03a28219ab58de825c3206e87b55dead31aca9d819 -size 1144 diff --git a/assets/voxygen/voxel/npc/axolotl/male/foot_fl.vox b/assets/voxygen/voxel/npc/axolotl/male/foot_fl.vox deleted file mode 100644 index ae9e61784e..0000000000 --- a/assets/voxygen/voxel/npc/axolotl/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:41232e14058833068511c1a10c79696fe922c379b818544e22ed260d753b4f31 -size 1144 diff --git a/assets/voxygen/voxel/npc/barghest/male/foot_br.vox b/assets/voxygen/voxel/npc/barghest/male/foot_br.vox new file mode 100644 index 0000000000..cade4195bf --- /dev/null +++ b/assets/voxygen/voxel/npc/barghest/male/foot_br.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:881c420266fb65b2a6d503ff98bb19c32767ed554c4ba695bae80b32253204ea +size 1352 diff --git a/assets/voxygen/voxel/npc/barghest/male/foot_fr.vox b/assets/voxygen/voxel/npc/barghest/male/foot_fr.vox new file mode 100644 index 0000000000..7a2afb273c --- /dev/null +++ b/assets/voxygen/voxel/npc/barghest/male/foot_fr.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0818eb5708de531bb6a643e286c5dcbd558601a4290df7bdce07ab253a2b62d4 +size 2040 diff --git a/assets/voxygen/voxel/npc/barghest/male/head.vox b/assets/voxygen/voxel/npc/barghest/male/head.vox new file mode 100644 index 0000000000..85a2f722be --- /dev/null +++ b/assets/voxygen/voxel/npc/barghest/male/head.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0d7536a4efd64ff53033e8004a1cd6cf32d9c682e2adf3f1d2658b74afd911e1 +size 5584 diff --git a/assets/voxygen/voxel/npc/barghest/male/jaw.vox b/assets/voxygen/voxel/npc/barghest/male/jaw.vox new file mode 100644 index 0000000000..65f6a1843a --- /dev/null +++ b/assets/voxygen/voxel/npc/barghest/male/jaw.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2dfa1c50964bc2dc770324466b0263f5d693d52882109681027ee54f1afd78b8 +size 3044 diff --git a/assets/voxygen/voxel/npc/barghest/male/leg_br.vox b/assets/voxygen/voxel/npc/barghest/male/leg_br.vox new file mode 100644 index 0000000000..29f7503963 --- /dev/null +++ b/assets/voxygen/voxel/npc/barghest/male/leg_br.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d86c491f0edbe494f5c58157896bff8025f5ee541c383bd3cd716ba847d5d204 +size 1636 diff --git a/assets/voxygen/voxel/npc/barghest/male/leg_fr.vox b/assets/voxygen/voxel/npc/barghest/male/leg_fr.vox new file mode 100644 index 0000000000..97cb9c89dd --- /dev/null +++ b/assets/voxygen/voxel/npc/barghest/male/leg_fr.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cf40e6b61cab5a8700f594e89f7ab031b3a758e1719deb1043ec1c01cfe845ce +size 2592 diff --git a/assets/voxygen/voxel/npc/barghest/male/neck.vox b/assets/voxygen/voxel/npc/barghest/male/neck.vox new file mode 100644 index 0000000000..c962eeee5d --- /dev/null +++ b/assets/voxygen/voxel/npc/barghest/male/neck.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:01845388ca6e6a0d9669c20fb68e070ff7f03761398404794f175b22117075d5 +size 4548 diff --git a/assets/voxygen/voxel/npc/barghest/male/tail.vox b/assets/voxygen/voxel/npc/barghest/male/tail.vox new file mode 100644 index 0000000000..22951052f3 --- /dev/null +++ b/assets/voxygen/voxel/npc/barghest/male/tail.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5d9f8bc149bcbcf6eaeb8aee62c9647b5756d20d7e91d033091c9eb43fe972cb +size 2364 diff --git a/assets/voxygen/voxel/npc/barghest/male/torso_back.vox b/assets/voxygen/voxel/npc/barghest/male/torso_back.vox new file mode 100644 index 0000000000..e2bf0fede5 --- /dev/null +++ b/assets/voxygen/voxel/npc/barghest/male/torso_back.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:50ad89d085dc0a8cb3ca5a3394355a37baa5e136883dc69e32034564692550b0 +size 4904 diff --git a/assets/voxygen/voxel/npc/barghest/male/torso_front.vox b/assets/voxygen/voxel/npc/barghest/male/torso_front.vox new file mode 100644 index 0000000000..c259d2c761 --- /dev/null +++ b/assets/voxygen/voxel/npc/barghest/male/torso_front.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fe9a71f158f2b208349282cb4e66d98e0f6ddd7bf727aa7c3e9b936599a0017b +size 9468 diff --git a/assets/voxygen/voxel/npc/basilisk/male/chest.vox b/assets/voxygen/voxel/npc/basilisk/male/chest.vox new file mode 100644 index 0000000000..bf9db901ec --- /dev/null +++ b/assets/voxygen/voxel/npc/basilisk/male/chest.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:052e1f43f55fd46abe5d00d7f55edd0d1d3c16e6f593267a2f1e9e55084c1bee +size 10876 diff --git a/assets/voxygen/voxel/npc/basilisk/male/foot_br.vox b/assets/voxygen/voxel/npc/basilisk/male/foot_br.vox new file mode 100644 index 0000000000..e9461a2bb5 --- /dev/null +++ b/assets/voxygen/voxel/npc/basilisk/male/foot_br.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b9d4c2c39ec3b08cebee105c24edf9cc5b11b0b3f156860a5cbb0960ff59817a +size 2920 diff --git a/assets/voxygen/voxel/npc/basilisk/male/foot_fr.vox b/assets/voxygen/voxel/npc/basilisk/male/foot_fr.vox new file mode 100644 index 0000000000..3002f165c1 --- /dev/null +++ b/assets/voxygen/voxel/npc/basilisk/male/foot_fr.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:885bd8acd9ad061d3bcbdd37f21075bc54f2138387e25caf95e4cedf4123f184 +size 3088 diff --git a/assets/voxygen/voxel/npc/basilisk/male/head_lower.vox b/assets/voxygen/voxel/npc/basilisk/male/head_lower.vox new file mode 100644 index 0000000000..f030250eca --- /dev/null +++ b/assets/voxygen/voxel/npc/basilisk/male/head_lower.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5dcbdb071a465648417cdb0a3bb7c332347f5a7803f96b6e74bce181cd53b807 +size 7576 diff --git a/assets/voxygen/voxel/npc/basilisk/male/head_upper.vox b/assets/voxygen/voxel/npc/basilisk/male/head_upper.vox new file mode 100644 index 0000000000..4a64783e9d --- /dev/null +++ b/assets/voxygen/voxel/npc/basilisk/male/head_upper.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8dc95681a5e78dbbd5cbca2d4e6763c7b677e3e011bc97f3b79337c32519fda6 +size 3756 diff --git a/assets/voxygen/voxel/npc/basilisk/male/jaw.vox b/assets/voxygen/voxel/npc/basilisk/male/jaw.vox new file mode 100644 index 0000000000..6966ed9c1f --- /dev/null +++ b/assets/voxygen/voxel/npc/basilisk/male/jaw.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b35a9d21875eea4afb5a018d436523e16d00c880e24502cef440cc37780f8f58 +size 1552 diff --git a/assets/voxygen/voxel/npc/basilisk/male/tail_front.vox b/assets/voxygen/voxel/npc/basilisk/male/tail_front.vox new file mode 100644 index 0000000000..439e72d002 --- /dev/null +++ b/assets/voxygen/voxel/npc/basilisk/male/tail_front.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cb65b35605d1eb968ec2f45bceeaee2e02d90c18304bbe99b383fff3633c72f4 +size 4564 diff --git a/assets/voxygen/voxel/npc/basilisk/male/tail_rear.vox b/assets/voxygen/voxel/npc/basilisk/male/tail_rear.vox new file mode 100644 index 0000000000..88d41f14a2 --- /dev/null +++ b/assets/voxygen/voxel/npc/basilisk/male/tail_rear.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6b01b1e3e492edd539f3af4469bed8f44df2afa4eaec04222fb790a8edcfd2e8 +size 2772 diff --git a/assets/voxygen/voxel/npc/batfox/male/foot_bl.vox b/assets/voxygen/voxel/npc/batfox/male/foot_bl.vox deleted file mode 100644 index 8616e9ea18..0000000000 --- a/assets/voxygen/voxel/npc/batfox/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:40e3801e2ed880743b36dc9d4d5ff3ed74a3473cbfa7fc3b9064aa09d9f690eb -size 1216 diff --git a/assets/voxygen/voxel/npc/batfox/male/foot_fl.vox b/assets/voxygen/voxel/npc/batfox/male/foot_fl.vox deleted file mode 100644 index af85963dab..0000000000 --- a/assets/voxygen/voxel/npc/batfox/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:7e40fc893b8588a905ac7b57702fa93a34ca13895395ce5810c3a697f90eb46f -size 1204 diff --git a/assets/voxygen/voxel/npc/bear/male/ears.vox b/assets/voxygen/voxel/npc/bear/male/ears.vox new file mode 100644 index 0000000000..1d11ca5f90 --- /dev/null +++ b/assets/voxygen/voxel/npc/bear/male/ears.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f4d593059c60e84c26ae502174a4d13485051f71c79f876925ae5c35c9c1fe13 +size 1152 diff --git a/assets/voxygen/voxel/npc/bear/male/foot_br.vox b/assets/voxygen/voxel/npc/bear/male/foot_br.vox new file mode 100644 index 0000000000..974c725244 --- /dev/null +++ b/assets/voxygen/voxel/npc/bear/male/foot_br.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a171067f6acd7100b55e7f5a8594fb7ae0d2e9f830e44ced0eccdb388645d8b2 +size 1644 diff --git a/assets/voxygen/voxel/npc/bear/male/foot_fr.vox b/assets/voxygen/voxel/npc/bear/male/foot_fr.vox new file mode 100644 index 0000000000..bb2793afa1 --- /dev/null +++ b/assets/voxygen/voxel/npc/bear/male/foot_fr.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9a75db338cf2b56647af0a5b261d6ac9a988527b1e844b7b293cc1cfb790a634 +size 1792 diff --git a/assets/voxygen/voxel/npc/bear/male/head.vox b/assets/voxygen/voxel/npc/bear/male/head.vox new file mode 100644 index 0000000000..054f38161a --- /dev/null +++ b/assets/voxygen/voxel/npc/bear/male/head.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:511c310e2efccda253372ade99f0e42ba71acc59b02cfadc41064973a6e48b4b +size 3128 diff --git a/assets/voxygen/voxel/npc/bear/male/jaw.vox b/assets/voxygen/voxel/npc/bear/male/jaw.vox new file mode 100644 index 0000000000..3a4b561060 --- /dev/null +++ b/assets/voxygen/voxel/npc/bear/male/jaw.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:96f8bb45455098ee8b450ad61494149c6f14a31f13ae849caf67a0b2898131d0 +size 1244 diff --git a/assets/voxygen/voxel/npc/bear/male/leg_br.vox b/assets/voxygen/voxel/npc/bear/male/leg_br.vox new file mode 100644 index 0000000000..e57e0b6ac9 --- /dev/null +++ b/assets/voxygen/voxel/npc/bear/male/leg_br.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b0158e291e218e741816c02a2315b3d6cbcdb9bcb022ea03637f2d1339f98b9d +size 1852 diff --git a/assets/voxygen/voxel/npc/bear/male/leg_fr.vox b/assets/voxygen/voxel/npc/bear/male/leg_fr.vox new file mode 100644 index 0000000000..ad10a9af22 --- /dev/null +++ b/assets/voxygen/voxel/npc/bear/male/leg_fr.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bf78f473efa727d39ce74a73a43de7a67da08d3f3d51ad865bea258fd8037daa +size 1792 diff --git a/assets/voxygen/voxel/npc/bear/male/neck.vox b/assets/voxygen/voxel/npc/bear/male/neck.vox new file mode 100644 index 0000000000..9c507cffcd --- /dev/null +++ b/assets/voxygen/voxel/npc/bear/male/neck.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dab0f135b4e3bd5cfdac109ae9c9af2712ef2595ef5741da17b2601894a6ddfc +size 2120 diff --git a/assets/voxygen/voxel/npc/bear/male/tail.vox b/assets/voxygen/voxel/npc/bear/male/tail.vox new file mode 100644 index 0000000000..9d52d99d05 --- /dev/null +++ b/assets/voxygen/voxel/npc/bear/male/tail.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e4a5491f90b3fe94c69d4c09914a5cb265b5f97e998826e9616858101796aaaf +size 1336 diff --git a/assets/voxygen/voxel/npc/bear/male/torso_back.vox b/assets/voxygen/voxel/npc/bear/male/torso_back.vox new file mode 100644 index 0000000000..b8dbf4c16b --- /dev/null +++ b/assets/voxygen/voxel/npc/bear/male/torso_back.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2bd1c2965441a352756c11d8245d698343f02ebf1dfac5b47bd14ba82394160f +size 6812 diff --git a/assets/voxygen/voxel/npc/bear/male/torso_front.vox b/assets/voxygen/voxel/npc/bear/male/torso_front.vox new file mode 100644 index 0000000000..748025a4e0 --- /dev/null +++ b/assets/voxygen/voxel/npc/bear/male/torso_front.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:12be3dbe23d2a418dfede1c6c4a482aa93eebb1fa50334aa7790d1a2dc325aeb +size 7512 diff --git a/assets/voxygen/voxel/npc/beaver/male/foot_bl.vox b/assets/voxygen/voxel/npc/beaver/male/foot_bl.vox deleted file mode 100644 index 3a87ce60eb..0000000000 --- a/assets/voxygen/voxel/npc/beaver/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:0396d67d40f031393caf6f74784aa8b53edd465012c64a4bc589cc0925fd3297 -size 1356 diff --git a/assets/voxygen/voxel/npc/beaver/male/foot_fl.vox b/assets/voxygen/voxel/npc/beaver/male/foot_fl.vox deleted file mode 100644 index c848036f75..0000000000 --- a/assets/voxygen/voxel/npc/beaver/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:de2ae142495e09cb599f9cd97c2be908931c126e5e4aa09a96266d66dda8dddd -size 1216 diff --git a/assets/voxygen/voxel/npc/boar/female/foot_bl.vox b/assets/voxygen/voxel/npc/boar/female/foot_bl.vox deleted file mode 100644 index 17e883e386..0000000000 --- a/assets/voxygen/voxel/npc/boar/female/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:0ec159e28721d8a809abb35ecf9e951475014c92a5db7ccb8709f430dd4aef04 -size 1296 diff --git a/assets/voxygen/voxel/npc/boar/female/foot_fl.vox b/assets/voxygen/voxel/npc/boar/female/foot_fl.vox deleted file mode 100644 index 6fd4869d46..0000000000 --- a/assets/voxygen/voxel/npc/boar/female/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e74af40426a02e80f4d30e64619a20aaef3da687f6f14febb65c8be19928dace -size 1316 diff --git a/assets/voxygen/voxel/npc/boar/male/foot_bl.vox b/assets/voxygen/voxel/npc/boar/male/foot_bl.vox deleted file mode 100644 index 4bcb1c9453..0000000000 --- a/assets/voxygen/voxel/npc/boar/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ec7c85de24d042fe7985f0fe4946f3c076aa82ebcc47b597950811341c125391 -size 1296 diff --git a/assets/voxygen/voxel/npc/boar/male/foot_fl.vox b/assets/voxygen/voxel/npc/boar/male/foot_fl.vox deleted file mode 100644 index 9469a8ebf1..0000000000 --- a/assets/voxygen/voxel/npc/boar/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ff819f1f4863b460c58025f781f32dfb76188350c3453450054d9ba8b6adf267 -size 1316 diff --git a/assets/voxygen/voxel/npc/bonerattler/male/foot_bl.vox b/assets/voxygen/voxel/npc/bonerattler/male/foot_bl.vox deleted file mode 100644 index b0bb504145..0000000000 --- a/assets/voxygen/voxel/npc/bonerattler/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e1622ffa38acfb820ccc9eb103b7f64eb772de3d59cc006e98ee7cb3bf0d12ae -size 1444 diff --git a/assets/voxygen/voxel/npc/bonerattler/male/foot_fl.vox b/assets/voxygen/voxel/npc/bonerattler/male/foot_fl.vox deleted file mode 100644 index 4bf1ef1587..0000000000 --- a/assets/voxygen/voxel/npc/bonerattler/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:bfbfd577f6fa485c60db1821f0e12dce816e7c61e81bbb765c541af28b383ec1 -size 1520 diff --git a/assets/voxygen/voxel/npc/bonerattler/male/leg_bl.vox b/assets/voxygen/voxel/npc/bonerattler/male/leg_bl.vox deleted file mode 100644 index f7b13031f4..0000000000 --- a/assets/voxygen/voxel/npc/bonerattler/male/leg_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e2e114bd3371dd6ebd668ae25caf495803443084cda576c6ebf1dd1f46d19846 -size 1360 diff --git a/assets/voxygen/voxel/npc/bonerattler/male/leg_fl.vox b/assets/voxygen/voxel/npc/bonerattler/male/leg_fl.vox deleted file mode 100644 index 3e6b39d8f9..0000000000 --- a/assets/voxygen/voxel/npc/bonerattler/male/leg_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:eff214991064df1052f9329331197983a9d370287a7d6fc8e381052c334d2b1f -size 1360 diff --git a/assets/voxygen/voxel/npc/cactid/male/chest.vox b/assets/voxygen/voxel/npc/cactid/male/chest.vox new file mode 100644 index 0000000000..e68038c7b0 --- /dev/null +++ b/assets/voxygen/voxel/npc/cactid/male/chest.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ede66a1190bb990c584821b6abb2f3add61434ac4c81ca5396db55e7511b041e +size 1496 diff --git a/assets/voxygen/voxel/npc/cactid/male/foot_r.vox b/assets/voxygen/voxel/npc/cactid/male/foot_r.vox new file mode 100644 index 0000000000..29ef7e7757 --- /dev/null +++ b/assets/voxygen/voxel/npc/cactid/male/foot_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1ba46b4dac6a6e0b811a2238400c21ed0a8fde4a4e1777e60ec9117bc4ce3e43 +size 1184 diff --git a/assets/voxygen/voxel/npc/cactid/male/hand_r.vox b/assets/voxygen/voxel/npc/cactid/male/hand_r.vox new file mode 100644 index 0000000000..e15a9327f7 --- /dev/null +++ b/assets/voxygen/voxel/npc/cactid/male/hand_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:da62f0ff4d8b95da55c23b882dff950356287c8ec2761a08210e2c9bcf5847f5 +size 1268 diff --git a/assets/voxygen/voxel/npc/cactid/male/head.vox b/assets/voxygen/voxel/npc/cactid/male/head.vox new file mode 100644 index 0000000000..c59acac9a9 --- /dev/null +++ b/assets/voxygen/voxel/npc/cactid/male/head.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2f55e5b8641f7c1da0a0703654972fadb9894bab6e798b72a3667ccae11d3953 +size 2804 diff --git a/assets/voxygen/voxel/npc/cactid/male/pants.vox b/assets/voxygen/voxel/npc/cactid/male/pants.vox new file mode 100644 index 0000000000..29a58e68ec --- /dev/null +++ b/assets/voxygen/voxel/npc/cactid/male/pants.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3e73b8a9d4365ef7f129924ff92d46ac0203530c955971e862fdaf4c827f1325 +size 1192 diff --git a/assets/voxygen/voxel/npc/camel/male/foot_bl.vox b/assets/voxygen/voxel/npc/camel/male/foot_bl.vox deleted file mode 100644 index 9e0fff1c65..0000000000 --- a/assets/voxygen/voxel/npc/camel/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:9d5f018aa6b6b95d51890900074696b9232c7d0cc75363242d1678498fa9eb80 -size 1332 diff --git a/assets/voxygen/voxel/npc/camel/male/foot_fl.vox b/assets/voxygen/voxel/npc/camel/male/foot_fl.vox deleted file mode 100644 index 8472cab5df..0000000000 --- a/assets/voxygen/voxel/npc/camel/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:eb7fa0b9d5cad68dab0afbc8f6372bac88ada4cae24d40e5fc007d87637155b5 -size 1376 diff --git a/assets/voxygen/voxel/npc/camel/male/leg_bl.vox b/assets/voxygen/voxel/npc/camel/male/leg_bl.vox deleted file mode 100644 index 5af3ab1f3e..0000000000 --- a/assets/voxygen/voxel/npc/camel/male/leg_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:94d6d3cec317950575effc92caf16617448702b702bda82c0ae9e000b7d2f20e -size 2084 diff --git a/assets/voxygen/voxel/npc/camel/male/leg_fl.vox b/assets/voxygen/voxel/npc/camel/male/leg_fl.vox deleted file mode 100644 index 652c869349..0000000000 --- a/assets/voxygen/voxel/npc/camel/male/leg_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f251d1a4b4fb3013ffc4c397c96b13d4dbc8eb76a2b5dc7e2897b076b46d605a -size 2096 diff --git a/assets/voxygen/voxel/npc/cat/female/foot_bl.vox b/assets/voxygen/voxel/npc/cat/female/foot_bl.vox deleted file mode 100644 index 44e50cc23e..0000000000 --- a/assets/voxygen/voxel/npc/cat/female/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f83dd059cdc963ecb6f6407132e94c2646a7bdd288bd389c5b4e224f726c8a43 -size 1184 diff --git a/assets/voxygen/voxel/npc/cat/female/foot_fl.vox b/assets/voxygen/voxel/npc/cat/female/foot_fl.vox deleted file mode 100644 index 78423aab90..0000000000 --- a/assets/voxygen/voxel/npc/cat/female/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:0ee9dc8c6473c45da834a8e0ff47adc4f7d6da16f015b0f41c04042e9ab642f2 -size 1172 diff --git a/assets/voxygen/voxel/npc/cat/male/foot_bl.vox b/assets/voxygen/voxel/npc/cat/male/foot_bl.vox deleted file mode 100644 index 782b6f7783..0000000000 --- a/assets/voxygen/voxel/npc/cat/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:59b28e2f43072929871ab8117dbb6a215bafd10925fc7326180aac9c8d54264f -size 1184 diff --git a/assets/voxygen/voxel/npc/cat/male/foot_fl.vox b/assets/voxygen/voxel/npc/cat/male/foot_fl.vox deleted file mode 100644 index 9661ebb608..0000000000 --- a/assets/voxygen/voxel/npc/cat/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:de06e552c49af6f98e69ddab1a602cffe3e9d7fc324fd6d402462f8c834e5b2b -size 1172 diff --git a/assets/voxygen/voxel/npc/catoblepas/male/foot_bl.vox b/assets/voxygen/voxel/npc/catoblepas/male/foot_bl.vox deleted file mode 100644 index bacff6706a..0000000000 --- a/assets/voxygen/voxel/npc/catoblepas/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:3c0f1f9806038e8f2044eb8c7ad779352613493e4f4e76c80d5cb07b9fab41f9 -size 1584 diff --git a/assets/voxygen/voxel/npc/catoblepas/male/foot_fl.vox b/assets/voxygen/voxel/npc/catoblepas/male/foot_fl.vox deleted file mode 100644 index 2378aa6d83..0000000000 --- a/assets/voxygen/voxel/npc/catoblepas/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f852128a1b1dda0f6c0f0b3574070360366dcc121f758c8dd57428a7bd14a8b0 -size 1968 diff --git a/assets/voxygen/voxel/npc/catoblepas/male/leg_bl.vox b/assets/voxygen/voxel/npc/catoblepas/male/leg_bl.vox deleted file mode 100644 index 7da0477bf4..0000000000 --- a/assets/voxygen/voxel/npc/catoblepas/male/leg_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:df65aa79a2af8e9420536f1fad888576e53d9ec5897c7d8f299d0380cccd77f8 -size 1612 diff --git a/assets/voxygen/voxel/npc/catoblepas/male/leg_fl.vox b/assets/voxygen/voxel/npc/catoblepas/male/leg_fl.vox deleted file mode 100644 index e0a298a2cd..0000000000 --- a/assets/voxygen/voxel/npc/catoblepas/male/leg_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:42c2918702fe0bfb5a999f0e32a88324e4f6fe6182498567ad29c75769da0a76 -size 2280 diff --git a/assets/voxygen/voxel/npc/cattle/female/ears.vox b/assets/voxygen/voxel/npc/cattle/female/ears.vox new file mode 100644 index 0000000000..808df1f55d --- /dev/null +++ b/assets/voxygen/voxel/npc/cattle/female/ears.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ef16716a3c34c5a937c61e462a3ceddc6850dce6b46640a0675005b6fe8b9e3b +size 1168 diff --git a/assets/voxygen/voxel/npc/cattle/female/foot_br.vox b/assets/voxygen/voxel/npc/cattle/female/foot_br.vox new file mode 100644 index 0000000000..7687247d37 --- /dev/null +++ b/assets/voxygen/voxel/npc/cattle/female/foot_br.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0162cc53cfbda10605b84f776f5a206204c46cc6fc0b3074cea1042d4205bd89 +size 1356 diff --git a/assets/voxygen/voxel/npc/cattle/female/foot_fr.vox b/assets/voxygen/voxel/npc/cattle/female/foot_fr.vox new file mode 100644 index 0000000000..18ad78a760 --- /dev/null +++ b/assets/voxygen/voxel/npc/cattle/female/foot_fr.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9e3873227506a00579a7a967ea0e45b30229a471d99cee0359fe5a0c7570dcbc +size 1384 diff --git a/assets/voxygen/voxel/npc/cattle/female/head.vox b/assets/voxygen/voxel/npc/cattle/female/head.vox new file mode 100644 index 0000000000..a6bc43361f --- /dev/null +++ b/assets/voxygen/voxel/npc/cattle/female/head.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ee7f58ac229888c4b0039b1ff4c566e7d15d91d54bfed6811232d95f704b5359 +size 2296 diff --git a/assets/voxygen/voxel/npc/cattle/female/jaw.vox b/assets/voxygen/voxel/npc/cattle/female/jaw.vox new file mode 100644 index 0000000000..ea5c639414 --- /dev/null +++ b/assets/voxygen/voxel/npc/cattle/female/jaw.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b004375e895dc27b00ccda21c17aa7b4febf8b283bd0e7b03e4cb8cb5d0d416f +size 1184 diff --git a/assets/voxygen/voxel/npc/cattle/female/leg_br.vox b/assets/voxygen/voxel/npc/cattle/female/leg_br.vox new file mode 100644 index 0000000000..f0f3cb3abd --- /dev/null +++ b/assets/voxygen/voxel/npc/cattle/female/leg_br.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0a7817a84243a30d3498a8b3aacd8ec2a56a047a92e3a1507a0ae94c0c5fdfaa +size 1680 diff --git a/assets/voxygen/voxel/npc/cattle/female/leg_fr.vox b/assets/voxygen/voxel/npc/cattle/female/leg_fr.vox new file mode 100644 index 0000000000..b91091286d --- /dev/null +++ b/assets/voxygen/voxel/npc/cattle/female/leg_fr.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3b027dca88db4cec8273d878dac69e800fc4ee3afa18bdfa9b8a38ada60b851f +size 1584 diff --git a/assets/voxygen/voxel/npc/cattle/female/neck.vox b/assets/voxygen/voxel/npc/cattle/female/neck.vox new file mode 100644 index 0000000000..b419939db5 --- /dev/null +++ b/assets/voxygen/voxel/npc/cattle/female/neck.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4e70c01ae08121b8188e1c2f12019e89b5de7d23da0b2d908e4c0a63ef1cff7c +size 2552 diff --git a/assets/voxygen/voxel/npc/cattle/female/tail.vox b/assets/voxygen/voxel/npc/cattle/female/tail.vox new file mode 100644 index 0000000000..5535ec743f --- /dev/null +++ b/assets/voxygen/voxel/npc/cattle/female/tail.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aef0a909b120b053b57e563f249db4ccc8813ffc00dbc580e577fa87b9395360 +size 1352 diff --git a/assets/voxygen/voxel/npc/cattle/female/torso_back.vox b/assets/voxygen/voxel/npc/cattle/female/torso_back.vox new file mode 100644 index 0000000000..de7163e908 --- /dev/null +++ b/assets/voxygen/voxel/npc/cattle/female/torso_back.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:52c5c314242a5f763e817beac6128655143188f2a4663a3ec580d364f70f66cb +size 5236 diff --git a/assets/voxygen/voxel/npc/cattle/female/torso_front.vox b/assets/voxygen/voxel/npc/cattle/female/torso_front.vox new file mode 100644 index 0000000000..2879bc2932 --- /dev/null +++ b/assets/voxygen/voxel/npc/cattle/female/torso_front.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fefec0b64537efcc3c4ec39ea37feec7dd808c383e1ef2b53d3575dd9e97c834 +size 5224 diff --git a/assets/voxygen/voxel/npc/cattle/male/ears.vox b/assets/voxygen/voxel/npc/cattle/male/ears.vox new file mode 100644 index 0000000000..8ed7ffe298 --- /dev/null +++ b/assets/voxygen/voxel/npc/cattle/male/ears.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:11c52d0746adfe98dab62397d05eaab4d08a654170c5352ec3afee8343dcedde +size 1168 diff --git a/assets/voxygen/voxel/npc/cattle/male/foot_br.vox b/assets/voxygen/voxel/npc/cattle/male/foot_br.vox new file mode 100644 index 0000000000..7c8b112ef6 --- /dev/null +++ b/assets/voxygen/voxel/npc/cattle/male/foot_br.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fe5a0e9b3575369741365ce71ee87187e69a107154cff3b519eb7626fea00b69 +size 1356 diff --git a/assets/voxygen/voxel/npc/cattle/male/foot_fr.vox b/assets/voxygen/voxel/npc/cattle/male/foot_fr.vox new file mode 100644 index 0000000000..33bedbb6cb --- /dev/null +++ b/assets/voxygen/voxel/npc/cattle/male/foot_fr.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3e5e04d3a841450fb906ee89b7384770ab1a90eee74c82ab1b1926a6587e6054 +size 1384 diff --git a/assets/voxygen/voxel/npc/cattle/male/head.vox b/assets/voxygen/voxel/npc/cattle/male/head.vox new file mode 100644 index 0000000000..3539e3e206 --- /dev/null +++ b/assets/voxygen/voxel/npc/cattle/male/head.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d7420c86b8d904789e923144d1c5fbad2427ebe21a316f24698982a4642b697e +size 2640 diff --git a/assets/voxygen/voxel/npc/cattle/male/jaw.vox b/assets/voxygen/voxel/npc/cattle/male/jaw.vox new file mode 100644 index 0000000000..0cff761c61 --- /dev/null +++ b/assets/voxygen/voxel/npc/cattle/male/jaw.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:894bac4b2b15c7b1126ddd39be75db3c296ae0a590626cbcd025ffba77d41e91 +size 1184 diff --git a/assets/voxygen/voxel/npc/cattle/male/leg_br.vox b/assets/voxygen/voxel/npc/cattle/male/leg_br.vox new file mode 100644 index 0000000000..936a2091cd --- /dev/null +++ b/assets/voxygen/voxel/npc/cattle/male/leg_br.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dac98754c6aea5e963d276ad2914e5d484d9c7a2c84ee9027b290f03e71566df +size 1680 diff --git a/assets/voxygen/voxel/npc/cattle/male/leg_fr.vox b/assets/voxygen/voxel/npc/cattle/male/leg_fr.vox new file mode 100644 index 0000000000..203c5a12dc --- /dev/null +++ b/assets/voxygen/voxel/npc/cattle/male/leg_fr.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:693553ea5e974aa23808b0a742685f647912915de10febd643c187d67366339c +size 1952 diff --git a/assets/voxygen/voxel/npc/cattle/male/neck.vox b/assets/voxygen/voxel/npc/cattle/male/neck.vox new file mode 100644 index 0000000000..ebe7b47510 --- /dev/null +++ b/assets/voxygen/voxel/npc/cattle/male/neck.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:04f379a7283d0f9d3b6bc4ec90979f33d98ecc7068ba567f6ff31d18315a41ff +size 2872 diff --git a/assets/voxygen/voxel/npc/cattle/male/tail.vox b/assets/voxygen/voxel/npc/cattle/male/tail.vox new file mode 100644 index 0000000000..5625f718cf --- /dev/null +++ b/assets/voxygen/voxel/npc/cattle/male/tail.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9b397d4e3cb930b0d50f88eb256fb81599d730c8ae53c6dba54ad6589e5c08af +size 1352 diff --git a/assets/voxygen/voxel/npc/cattle/male/torso_back.vox b/assets/voxygen/voxel/npc/cattle/male/torso_back.vox new file mode 100644 index 0000000000..da1778120c --- /dev/null +++ b/assets/voxygen/voxel/npc/cattle/male/torso_back.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7aafd5e1bf6bae8d146be5a492addabcc833c626437e99d0874669eadef55e7e +size 5380 diff --git a/assets/voxygen/voxel/npc/cattle/male/torso_front.vox b/assets/voxygen/voxel/npc/cattle/male/torso_front.vox new file mode 100644 index 0000000000..73ad117603 --- /dev/null +++ b/assets/voxygen/voxel/npc/cattle/male/torso_front.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b3bb46cc151462aba7a07d687308ced9b6da667207bc8e56aa6ca9a782ad26b2 +size 6416 diff --git a/assets/voxygen/voxel/npc/chicken/female/leg_l.vox b/assets/voxygen/voxel/npc/chicken/female/leg_l.vox deleted file mode 100644 index f3f3f92eaf..0000000000 --- a/assets/voxygen/voxel/npc/chicken/female/leg_l.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:af7c4dee1203ed93f41878122df5b8206fec38fc65898b3a52b4d1762431e13d -size 1128 diff --git a/assets/voxygen/voxel/npc/chicken/male/leg_l.vox b/assets/voxygen/voxel/npc/chicken/male/leg_l.vox deleted file mode 100644 index 070a3ca5ff..0000000000 --- a/assets/voxygen/voxel/npc/chicken/male/leg_l.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c9b67581e39726b4632bcf5e505571ba4891c7b90ead0c0b01e1020985fb002c -size 1128 diff --git a/assets/voxygen/voxel/npc/claygolem/male/chest_lower.vox b/assets/voxygen/voxel/npc/claygolem/male/chest_lower.vox new file mode 100644 index 0000000000..f824ccaf3c --- /dev/null +++ b/assets/voxygen/voxel/npc/claygolem/male/chest_lower.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5dca6b3f3e6332c8ccc8f74ada817f49455f22cc1d7fc3b9160724c640683e30 +size 4296 diff --git a/assets/voxygen/voxel/npc/claygolem/male/chest_upper.vox b/assets/voxygen/voxel/npc/claygolem/male/chest_upper.vox new file mode 100644 index 0000000000..cda6204277 --- /dev/null +++ b/assets/voxygen/voxel/npc/claygolem/male/chest_upper.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:acde4ee60302a74e7eadc83f175e5cd9b031ff02156f1b77c3fe3ed6eb6e50af +size 8580 diff --git a/assets/voxygen/voxel/npc/claygolem/male/foot_l.vox b/assets/voxygen/voxel/npc/claygolem/male/foot_l.vox new file mode 100644 index 0000000000..72be607431 --- /dev/null +++ b/assets/voxygen/voxel/npc/claygolem/male/foot_l.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2fc0a37df9773373e4205368c52a930a814a074d4e6ca40962667ff8bc1dbd9a +size 1496 diff --git a/assets/voxygen/voxel/npc/claygolem/male/foot_r.vox b/assets/voxygen/voxel/npc/claygolem/male/foot_r.vox new file mode 100644 index 0000000000..2dd4ef60ba --- /dev/null +++ b/assets/voxygen/voxel/npc/claygolem/male/foot_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:086485f9857e6849bc0d975643939cdbed604599bb250609440d726538f2a46b +size 1496 diff --git a/assets/voxygen/voxel/npc/claygolem/male/hand_l.vox b/assets/voxygen/voxel/npc/claygolem/male/hand_l.vox new file mode 100644 index 0000000000..73a978f3e4 --- /dev/null +++ b/assets/voxygen/voxel/npc/claygolem/male/hand_l.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:00587c52fe927a8da630605b86bad70a7fa868c0bc22201fcf7df045b12ddc82 +size 4984 diff --git a/assets/voxygen/voxel/npc/claygolem/male/hand_r.vox b/assets/voxygen/voxel/npc/claygolem/male/hand_r.vox new file mode 100644 index 0000000000..15f30f4ccc --- /dev/null +++ b/assets/voxygen/voxel/npc/claygolem/male/hand_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d4cdae61f46ecb3db585aec3eb0244583e3f98906cad76f83c88dd266fe06feb +size 4984 diff --git a/assets/voxygen/voxel/npc/claygolem/male/head.vox b/assets/voxygen/voxel/npc/claygolem/male/head.vox new file mode 100644 index 0000000000..4448e17a4b --- /dev/null +++ b/assets/voxygen/voxel/npc/claygolem/male/head.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0496ea5c90559b681246f5c641d2a2dfadaf7705eb79b7f2c9a38c3060c866c1 +size 6656 diff --git a/assets/voxygen/voxel/npc/claygolem/male/leg_l.vox b/assets/voxygen/voxel/npc/claygolem/male/leg_l.vox new file mode 100644 index 0000000000..a4291fa96e --- /dev/null +++ b/assets/voxygen/voxel/npc/claygolem/male/leg_l.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f5f9f90f81f28ebe40b8facb53f0dbef286c007a8899c252106ccb2f4e6db1f0 +size 2480 diff --git a/assets/voxygen/voxel/npc/claygolem/male/leg_r.vox b/assets/voxygen/voxel/npc/claygolem/male/leg_r.vox new file mode 100644 index 0000000000..3474bd445d --- /dev/null +++ b/assets/voxygen/voxel/npc/claygolem/male/leg_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f94e1f7e77e7c5ce5db144d61ee683c2dea3606c53b0a2e2e539cd863d105118 +size 2480 diff --git a/assets/voxygen/voxel/npc/claygolem/male/shoulder_l.vox b/assets/voxygen/voxel/npc/claygolem/male/shoulder_l.vox new file mode 100644 index 0000000000..76d045a4c4 --- /dev/null +++ b/assets/voxygen/voxel/npc/claygolem/male/shoulder_l.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5ddb180e26cf2b52023c492e9306e6f1669fa8bbbc0fc14a9423d4cf49e8c4f6 +size 2764 diff --git a/assets/voxygen/voxel/npc/claygolem/male/shoulder_r.vox b/assets/voxygen/voxel/npc/claygolem/male/shoulder_r.vox new file mode 100644 index 0000000000..474d6cc5aa --- /dev/null +++ b/assets/voxygen/voxel/npc/claygolem/male/shoulder_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0c5d744e727212f236c063999029e7c3fc8db57944f9ce781f5b5fa540d8afd5 +size 2764 diff --git a/assets/voxygen/voxel/npc/clownfish/male/fin_l.vox b/assets/voxygen/voxel/npc/clownfish/male/fin.vox similarity index 100% rename from assets/voxygen/voxel/npc/clownfish/male/fin_l.vox rename to assets/voxygen/voxel/npc/clownfish/male/fin.vox diff --git a/assets/voxygen/voxel/npc/clownfish/male/fin_r.vox b/assets/voxygen/voxel/npc/clownfish/male/fin_r.vox deleted file mode 100644 index fbab630e4f..0000000000 --- a/assets/voxygen/voxel/npc/clownfish/male/fin_r.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5e07ac13b045455fa6a13115b0de82884d9475b39a8ac450a0e4e51c663fa4e5 -size 1132 diff --git a/assets/voxygen/voxel/npc/cockatrice/male/leg_l.vox b/assets/voxygen/voxel/npc/cockatrice/male/leg_l.vox deleted file mode 100644 index 359c82e0a5..0000000000 --- a/assets/voxygen/voxel/npc/cockatrice/male/leg_l.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:957eac8c94bb878c3f6cea3a199991b4997a8caacb407ba081da834150ef1d25 -size 1364 diff --git a/assets/voxygen/voxel/npc/cockatrice/male/wing_l.vox b/assets/voxygen/voxel/npc/cockatrice/male/wing_l.vox deleted file mode 100644 index 02ab02c2d1..0000000000 --- a/assets/voxygen/voxel/npc/cockatrice/male/wing_l.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:9827918d715cbf23b4f3441905243ed196d917d83a92a6946d2100243e694d15 -size 1212 diff --git a/assets/voxygen/voxel/npc/crocodile/male/foot_bl.vox b/assets/voxygen/voxel/npc/crocodile/male/foot_bl.vox deleted file mode 100644 index f9c1721bc4..0000000000 --- a/assets/voxygen/voxel/npc/crocodile/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:917089da6960ed0bf3f440e7be7fb3ca68e58f027b6416b459b7dbd5ac915b4c -size 1340 diff --git a/assets/voxygen/voxel/npc/crocodile/male/foot_fl.vox b/assets/voxygen/voxel/npc/crocodile/male/foot_fl.vox deleted file mode 100644 index 88e49d7a60..0000000000 --- a/assets/voxygen/voxel/npc/crocodile/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:313fa9dd8128e594d51406ae59ad6c7d03c231e3c63a002422e4376d810740db -size 1300 diff --git a/assets/voxygen/voxel/npc/crow/wing_l.vox b/assets/voxygen/voxel/npc/crow/wing_l.vox deleted file mode 100644 index 757d9ba333..0000000000 --- a/assets/voxygen/voxel/npc/crow/wing_l.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:1f5e5670531fabc51dc1f5578c555ee96b2ec19b71df51b662685ed92935ccc2 -size 1292 diff --git a/assets/voxygen/voxel/npc/darkhound/male/ears.vox b/assets/voxygen/voxel/npc/darkhound/male/ears.vox new file mode 100644 index 0000000000..be63d667e5 --- /dev/null +++ b/assets/voxygen/voxel/npc/darkhound/male/ears.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d80826947324e175f23127e368ed0e04bed2e02069f114397103782bf19afd76 +size 1216 diff --git a/assets/voxygen/voxel/npc/darkhound/male/foot_br.vox b/assets/voxygen/voxel/npc/darkhound/male/foot_br.vox new file mode 100644 index 0000000000..db36974f95 --- /dev/null +++ b/assets/voxygen/voxel/npc/darkhound/male/foot_br.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3808693bbdb7857cc14177b5d9c2bdae504c4472c5b9b131c3e6c887e7e9283d +size 1396 diff --git a/assets/voxygen/voxel/npc/darkhound/male/foot_fr.vox b/assets/voxygen/voxel/npc/darkhound/male/foot_fr.vox new file mode 100644 index 0000000000..3cb8a20d56 --- /dev/null +++ b/assets/voxygen/voxel/npc/darkhound/male/foot_fr.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4b14d7638a2bd5b12431525b156b4d6b67cd82d08b6c679076565c740449f1ef +size 1336 diff --git a/assets/voxygen/voxel/npc/darkhound/male/head.vox b/assets/voxygen/voxel/npc/darkhound/male/head.vox new file mode 100644 index 0000000000..da61c020a9 --- /dev/null +++ b/assets/voxygen/voxel/npc/darkhound/male/head.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:beec6ec3b457a3bdfc45ef96884c9c43487aaa46afe3154cd79a2fe73e0dc5fe +size 1728 diff --git a/assets/voxygen/voxel/npc/darkhound/male/jaw.vox b/assets/voxygen/voxel/npc/darkhound/male/jaw.vox new file mode 100644 index 0000000000..46288b1d6c --- /dev/null +++ b/assets/voxygen/voxel/npc/darkhound/male/jaw.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:06db8c2059efab785aa5e21f6c6e1fb1dcf51ee13037effb9363a65325e9f529 +size 1236 diff --git a/assets/voxygen/voxel/npc/darkhound/male/leg_br.vox b/assets/voxygen/voxel/npc/darkhound/male/leg_br.vox new file mode 100644 index 0000000000..bb6e43fb56 --- /dev/null +++ b/assets/voxygen/voxel/npc/darkhound/male/leg_br.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8896549e6fb15a3eff8a2f54b62e28970dfccbc675394a44235abf7269defdeb +size 1464 diff --git a/assets/voxygen/voxel/npc/darkhound/male/leg_fr.vox b/assets/voxygen/voxel/npc/darkhound/male/leg_fr.vox new file mode 100644 index 0000000000..6284746824 --- /dev/null +++ b/assets/voxygen/voxel/npc/darkhound/male/leg_fr.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d46e3f2d36a17f6ec7f34fcf29722b8fa927cdd26a864760337143039635fdf7 +size 1448 diff --git a/assets/voxygen/voxel/npc/darkhound/male/neck.vox b/assets/voxygen/voxel/npc/darkhound/male/neck.vox new file mode 100644 index 0000000000..62fd3b4c3a --- /dev/null +++ b/assets/voxygen/voxel/npc/darkhound/male/neck.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:471f240c7898b3e7866a0cda065feb0b744a45ba75ade46cce6ffe5501b33df6 +size 1500 diff --git a/assets/voxygen/voxel/npc/darkhound/male/tail.vox b/assets/voxygen/voxel/npc/darkhound/male/tail.vox new file mode 100644 index 0000000000..b74ed3024c --- /dev/null +++ b/assets/voxygen/voxel/npc/darkhound/male/tail.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f21ebe56a10a801c91766087b41adb443d7209c5b7f029aab536b2fc12f105be +size 1348 diff --git a/assets/voxygen/voxel/npc/darkhound/male/torso_back.vox b/assets/voxygen/voxel/npc/darkhound/male/torso_back.vox new file mode 100644 index 0000000000..953ad994a1 --- /dev/null +++ b/assets/voxygen/voxel/npc/darkhound/male/torso_back.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b01a1ca8834ab5dd52f611e74f529bf86b89a7154a45a210f9f50850b7704005 +size 2388 diff --git a/assets/voxygen/voxel/npc/darkhound/male/torso_front.vox b/assets/voxygen/voxel/npc/darkhound/male/torso_front.vox new file mode 100644 index 0000000000..76c572f511 --- /dev/null +++ b/assets/voxygen/voxel/npc/darkhound/male/torso_front.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a0b3d0e49842c9eeebe946123d95178fff6097e53c528678ff675bd722696e29 +size 3476 diff --git a/assets/voxygen/voxel/npc/deadwood/male/chest.vox b/assets/voxygen/voxel/npc/deadwood/male/chest.vox new file mode 100644 index 0000000000..abea5823be --- /dev/null +++ b/assets/voxygen/voxel/npc/deadwood/male/chest.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5a712a0a561ce5f25e55c8409517882ac806bc6d7e1c0cf42015ebf6b0b0db74 +size 7596 diff --git a/assets/voxygen/voxel/npc/deadwood/male/foot_br.vox b/assets/voxygen/voxel/npc/deadwood/male/foot_br.vox new file mode 100644 index 0000000000..1c48fd8aaf --- /dev/null +++ b/assets/voxygen/voxel/npc/deadwood/male/foot_br.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:72ffc711689ed563783a9ae8a76c8e831bb3e1fad6a73862d68aa9079f683761 +size 1296 diff --git a/assets/voxygen/voxel/npc/deadwood/male/foot_fr.vox b/assets/voxygen/voxel/npc/deadwood/male/foot_fr.vox new file mode 100644 index 0000000000..426f7b1b57 --- /dev/null +++ b/assets/voxygen/voxel/npc/deadwood/male/foot_fr.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:323fda85b3973ed454299ee4b45795b17a55882a6399e551dd6fabf9c22f0390 +size 1296 diff --git a/assets/voxygen/voxel/npc/deadwood/male/head_upper.vox b/assets/voxygen/voxel/npc/deadwood/male/head_upper.vox new file mode 100644 index 0000000000..77240cb1c2 --- /dev/null +++ b/assets/voxygen/voxel/npc/deadwood/male/head_upper.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b421ad35a8cb9ed14c526c68fd5c30a1757c2e9e2d4f73e78eb0256b139bccc2 +size 2024 diff --git a/assets/voxygen/voxel/npc/deer/female/foot_bl.vox b/assets/voxygen/voxel/npc/deer/female/foot_bl.vox deleted file mode 100644 index 5d0acc172d..0000000000 --- a/assets/voxygen/voxel/npc/deer/female/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b8a6343692a3b0b307d210ddaa32810d51f8577723a49fb8821ba212fd420d54 -size 1284 diff --git a/assets/voxygen/voxel/npc/deer/female/foot_fl.vox b/assets/voxygen/voxel/npc/deer/female/foot_fl.vox deleted file mode 100644 index 9ef54c93e1..0000000000 --- a/assets/voxygen/voxel/npc/deer/female/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:11b9589b90fa7e122eaaa2cb8af330c99001d334866f2fbe4ee1e9ff322f9b8d -size 1224 diff --git a/assets/voxygen/voxel/npc/deer/female/leg_bl.vox b/assets/voxygen/voxel/npc/deer/female/leg_bl.vox deleted file mode 100644 index b388daeb23..0000000000 --- a/assets/voxygen/voxel/npc/deer/female/leg_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:9c85f159166e7a57ebbdfdca4d42cdfbc4d581f45f88b48ea3617d8f2df6d9b7 -size 1528 diff --git a/assets/voxygen/voxel/npc/deer/female/leg_fl.vox b/assets/voxygen/voxel/npc/deer/female/leg_fl.vox deleted file mode 100644 index bd52c4ece4..0000000000 --- a/assets/voxygen/voxel/npc/deer/female/leg_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e2ad57a269866bb8c39357886a88fa6de0199045dfda70ae17604308116d036c -size 1444 diff --git a/assets/voxygen/voxel/npc/deer/male/foot_bl.vox b/assets/voxygen/voxel/npc/deer/male/foot_bl.vox deleted file mode 100644 index 3d5c156854..0000000000 --- a/assets/voxygen/voxel/npc/deer/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:7a6923910d5875a533bca256a88e906b819d1902bee8093f4580e6003e256525 -size 1284 diff --git a/assets/voxygen/voxel/npc/deer/male/foot_fl.vox b/assets/voxygen/voxel/npc/deer/male/foot_fl.vox deleted file mode 100644 index 2b539b930d..0000000000 --- a/assets/voxygen/voxel/npc/deer/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:7ece09099cabfb54a3057106ca9665909f16bce545b50f094a3130d6b336f8bd -size 1224 diff --git a/assets/voxygen/voxel/npc/deer/male/leg_bl.vox b/assets/voxygen/voxel/npc/deer/male/leg_bl.vox deleted file mode 100644 index 902bbce745..0000000000 --- a/assets/voxygen/voxel/npc/deer/male/leg_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:d46e63796b7c93cced2649f77e50980c012b1189e6e4418e6741a3f692cd6365 -size 1528 diff --git a/assets/voxygen/voxel/npc/deer/male/leg_fl.vox b/assets/voxygen/voxel/npc/deer/male/leg_fl.vox deleted file mode 100644 index bd05cf9582..0000000000 --- a/assets/voxygen/voxel/npc/deer/male/leg_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:da910f17abc20f6063ad155ee6f848ea42cf2206b7a28604083266555873cddb -size 1444 diff --git a/assets/voxygen/voxel/npc/dodarock/male/foot_bl.vox b/assets/voxygen/voxel/npc/dodarock/male/foot_bl.vox deleted file mode 100644 index ec14d2c0bd..0000000000 --- a/assets/voxygen/voxel/npc/dodarock/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:d07af60b66655a4cb072e4e3d6b5ee06b527e69ccac0378e15d4fb1ada5cf119 -size 1252 diff --git a/assets/voxygen/voxel/npc/dodarock/male/foot_fl.vox b/assets/voxygen/voxel/npc/dodarock/male/foot_fl.vox deleted file mode 100644 index 4373de546c..0000000000 --- a/assets/voxygen/voxel/npc/dodarock/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f53eb4d341d318dbfd903e37cff5b6893eb3b79619665b8447f7120b8c98170f -size 1552 diff --git a/assets/voxygen/voxel/npc/dog/female/chest.vox b/assets/voxygen/voxel/npc/dog/female/chest.vox new file mode 100644 index 0000000000..359cbcba37 --- /dev/null +++ b/assets/voxygen/voxel/npc/dog/female/chest.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c277e5c426fd9b831849b6fc282130ec82300b49103e5f1c01cecb373d6a5866 +size 2136 diff --git a/assets/voxygen/voxel/npc/dog/female/foot_br.vox b/assets/voxygen/voxel/npc/dog/female/foot_br.vox new file mode 100644 index 0000000000..d60f068cd3 --- /dev/null +++ b/assets/voxygen/voxel/npc/dog/female/foot_br.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ff984e3bc856c16cd960b12f75a66f2f766d9313ed84e4be556aebd983b87a9c +size 1300 diff --git a/assets/voxygen/voxel/npc/dog/female/foot_fr.vox b/assets/voxygen/voxel/npc/dog/female/foot_fr.vox new file mode 100644 index 0000000000..14917dc876 --- /dev/null +++ b/assets/voxygen/voxel/npc/dog/female/foot_fr.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:66821392e30213e90e6318bb8168a1908cc5740f3818caed5190a47527d35ae6 +size 1228 diff --git a/assets/voxygen/voxel/npc/dog/female/head.vox b/assets/voxygen/voxel/npc/dog/female/head.vox new file mode 100644 index 0000000000..a1d683430a --- /dev/null +++ b/assets/voxygen/voxel/npc/dog/female/head.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8756eb17a0e00e7f8251dbe194d2fd0c1cdaffedab1a8068ab73fac3730c0a3a +size 1772 diff --git a/assets/voxygen/voxel/npc/dog/female/tail.vox b/assets/voxygen/voxel/npc/dog/female/tail.vox new file mode 100644 index 0000000000..0fd0228784 --- /dev/null +++ b/assets/voxygen/voxel/npc/dog/female/tail.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2a46645ac8a712f46be63a7b3c9e167f06a064a42c109d3dc6606a7c4f34b3b1 +size 1432 diff --git a/assets/voxygen/voxel/npc/dog/male/chest.vox b/assets/voxygen/voxel/npc/dog/male/chest.vox new file mode 100644 index 0000000000..fd4c59c2f0 --- /dev/null +++ b/assets/voxygen/voxel/npc/dog/male/chest.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a7eb62fa9b90c4ad88f2fd1dd96ffe45b4630ab1081f3e447ad8c44f8f407237 +size 2136 diff --git a/assets/voxygen/voxel/npc/dog/male/foot_br.vox b/assets/voxygen/voxel/npc/dog/male/foot_br.vox new file mode 100644 index 0000000000..1a3bfec4a9 --- /dev/null +++ b/assets/voxygen/voxel/npc/dog/male/foot_br.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2b71e6540b86675be630cf7e1f606ec2973324490f3e94e143cf8cc3b03e5520 +size 1300 diff --git a/assets/voxygen/voxel/npc/dog/male/foot_fr.vox b/assets/voxygen/voxel/npc/dog/male/foot_fr.vox new file mode 100644 index 0000000000..6c4c489c2e --- /dev/null +++ b/assets/voxygen/voxel/npc/dog/male/foot_fr.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8f93dd3929ec430046b4a877d6ceb93b0f8022f63ae4a358a25d0bf93a93918d +size 1228 diff --git a/assets/voxygen/voxel/npc/dog/male/head.vox b/assets/voxygen/voxel/npc/dog/male/head.vox new file mode 100644 index 0000000000..552506abfe --- /dev/null +++ b/assets/voxygen/voxel/npc/dog/male/head.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2ef4784a5e528831069ef27b8fb7640fbf2e3c1edb0392a3d6fd598c61e06c1c +size 1772 diff --git a/assets/voxygen/voxel/npc/dog/male/tail.vox b/assets/voxygen/voxel/npc/dog/male/tail.vox new file mode 100644 index 0000000000..54b15d3263 --- /dev/null +++ b/assets/voxygen/voxel/npc/dog/male/tail.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:37781613ca1861357c62686c87ec887ae175b3dcc013dfc113d3fb3c5a977757 +size 1432 diff --git a/assets/voxygen/voxel/npc/donkey/male/foot_bl.vox b/assets/voxygen/voxel/npc/donkey/male/foot_bl.vox deleted file mode 100644 index 1a977abc38..0000000000 --- a/assets/voxygen/voxel/npc/donkey/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ebf252ce3239ebeb744aea3c2c62c198b3ed156df5ecc96df2789a569fd3c716 -size 1420 diff --git a/assets/voxygen/voxel/npc/donkey/male/foot_fl.vox b/assets/voxygen/voxel/npc/donkey/male/foot_fl.vox deleted file mode 100644 index 66a34d2e78..0000000000 --- a/assets/voxygen/voxel/npc/donkey/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:72f43edb3e048503490fa63080cd0e59d287ad450c08487579d29f19838bfa3e -size 1440 diff --git a/assets/voxygen/voxel/npc/donkey/male/leg_bl.vox b/assets/voxygen/voxel/npc/donkey/male/leg_bl.vox deleted file mode 100644 index 46c2e1ff45..0000000000 --- a/assets/voxygen/voxel/npc/donkey/male/leg_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:16a08031aeb88d01dac15f60a2a35e71ecd248c478c6959f768f89fdc62510bc -size 1880 diff --git a/assets/voxygen/voxel/npc/donkey/male/leg_fl.vox b/assets/voxygen/voxel/npc/donkey/male/leg_fl.vox deleted file mode 100644 index 68e72aab66..0000000000 --- a/assets/voxygen/voxel/npc/donkey/male/leg_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:8020cfa04c114f343e72036ba17cfd301cd0900e006216032c1b0bac82a973a0 -size 1828 diff --git a/assets/voxygen/voxel/npc/duck/female/leg_l.vox b/assets/voxygen/voxel/npc/duck/female/leg_l.vox deleted file mode 100644 index 3fb63af787..0000000000 --- a/assets/voxygen/voxel/npc/duck/female/leg_l.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b86bdb9f386d7ec40fecc6f3877282c3f8e6a4e84454d5c9eb54228bea45f5ba -size 1128 diff --git a/assets/voxygen/voxel/npc/duck/male/leg_l.vox b/assets/voxygen/voxel/npc/duck/male/leg_l.vox deleted file mode 100644 index 3fb63af787..0000000000 --- a/assets/voxygen/voxel/npc/duck/male/leg_l.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b86bdb9f386d7ec40fecc6f3877282c3f8e6a4e84454d5c9eb54228bea45f5ba -size 1128 diff --git a/assets/voxygen/voxel/npc/eagle/male/leg_l.vox b/assets/voxygen/voxel/npc/eagle/male/leg_l.vox deleted file mode 100644 index 75b733724e..0000000000 --- a/assets/voxygen/voxel/npc/eagle/male/leg_l.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:1e9418f1a58d17a4a94603c0bae688969a6d23fdd72671de7cb7ebc45c25d1aa -size 1184 diff --git a/assets/voxygen/voxel/npc/eagle/male/wing_l.vox b/assets/voxygen/voxel/npc/eagle/male/wing_l.vox deleted file mode 100644 index ee5cf52c55..0000000000 --- a/assets/voxygen/voxel/npc/eagle/male/wing_l.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:027480e91a012c37628a576c32156e8e64e3b9e8ad6cb3a3b800810d2ce4f69d -size 1532 diff --git a/assets/voxygen/voxel/npc/fox/female/foot_bl.vox b/assets/voxygen/voxel/npc/fox/female/foot_bl.vox deleted file mode 100644 index 46ddc26f3f..0000000000 --- a/assets/voxygen/voxel/npc/fox/female/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:faececdab6b18288de2aa1107bc49d63be715f89c5c8392b8155e7a3a44d4dae -size 1216 diff --git a/assets/voxygen/voxel/npc/fox/female/foot_fl.vox b/assets/voxygen/voxel/npc/fox/female/foot_fl.vox deleted file mode 100644 index 31a87141f4..0000000000 --- a/assets/voxygen/voxel/npc/fox/female/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f303cff97d0131704eb2d009df7d0fdeed1c72a96475d86048546b7350510164 -size 1208 diff --git a/assets/voxygen/voxel/npc/fox/male/foot_bl.vox b/assets/voxygen/voxel/npc/fox/male/foot_bl.vox deleted file mode 100644 index 4808f939d6..0000000000 --- a/assets/voxygen/voxel/npc/fox/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:7811991f5addd3fb91d2d75cc644510a8e73e692c86edf1d245527a710b15ba6 -size 1216 diff --git a/assets/voxygen/voxel/npc/fox/male/foot_fl.vox b/assets/voxygen/voxel/npc/fox/male/foot_fl.vox deleted file mode 100644 index 7e2971bb93..0000000000 --- a/assets/voxygen/voxel/npc/fox/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:bc8993716402a56f5dda9eedb6506ac3c878c835e6004738cf6580f6046d4115 -size 1208 diff --git a/assets/voxygen/voxel/npc/frog/male/foot_bl.vox b/assets/voxygen/voxel/npc/frog/male/foot_bl.vox deleted file mode 100644 index 6a71af4f1b..0000000000 --- a/assets/voxygen/voxel/npc/frog/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:73639cb81b4346ed81cbec74e463271b908b8d4cf64ff460f96cd4a56e97fb67 -size 1240 diff --git a/assets/voxygen/voxel/npc/frog/male/foot_fl.vox b/assets/voxygen/voxel/npc/frog/male/foot_fl.vox deleted file mode 100644 index 33e9134b53..0000000000 --- a/assets/voxygen/voxel/npc/frog/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:55c7a3fb00a34206552249f6bdc6f5caf9ae441545769de9a1952eb2dabc42ba -size 1164 diff --git a/assets/voxygen/voxel/npc/frostfang/male/foot_bl.vox b/assets/voxygen/voxel/npc/frostfang/male/foot_bl.vox deleted file mode 100644 index 37cbe924fa..0000000000 --- a/assets/voxygen/voxel/npc/frostfang/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:4dba43273f566d26ebb1658290f8eed69d1f5a95958b61206789277954ece5d8 -size 1328 diff --git a/assets/voxygen/voxel/npc/frostfang/male/foot_fl.vox b/assets/voxygen/voxel/npc/frostfang/male/foot_fl.vox deleted file mode 100644 index 126d9a8966..0000000000 --- a/assets/voxygen/voxel/npc/frostfang/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:3717b5cabc9a7eb63342011a5db65afc4eb99149aa3e535c575f071531d89c68 -size 1328 diff --git a/assets/voxygen/voxel/npc/frostfang/male/leg_bl.vox b/assets/voxygen/voxel/npc/frostfang/male/leg_bl.vox deleted file mode 100644 index 8a688db5a5..0000000000 --- a/assets/voxygen/voxel/npc/frostfang/male/leg_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:eb1ebbe15797681c9c111a9c6b33068255fd85aa158197922cf2b86886c34533 -size 1384 diff --git a/assets/voxygen/voxel/npc/frostfang/male/leg_fl.vox b/assets/voxygen/voxel/npc/frostfang/male/leg_fl.vox deleted file mode 100644 index a62de7ca54..0000000000 --- a/assets/voxygen/voxel/npc/frostfang/male/leg_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a81e47b846030a6f40b391c9efecbd1fd3934883f9a80c5a69c5d33cccf670cb -size 1404 diff --git a/assets/voxygen/voxel/npc/fungome/male/foot_bl.vox b/assets/voxygen/voxel/npc/fungome/male/foot_bl.vox deleted file mode 100644 index e5db739148..0000000000 --- a/assets/voxygen/voxel/npc/fungome/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:45c80e397249aa2b0518ee53f3edee8a37e888e549d56f0666b6ad1f608f481b -size 1136 diff --git a/assets/voxygen/voxel/npc/fungome/male/foot_fl.vox b/assets/voxygen/voxel/npc/fungome/male/foot_fl.vox deleted file mode 100644 index e475b5f432..0000000000 --- a/assets/voxygen/voxel/npc/fungome/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:d4c3b9b5efe26218bc9931f28ae1cd616401e8813ee88bf64bb1f8d81c082932 -size 1140 diff --git a/assets/voxygen/voxel/npc/gecko/male/foot_bl.vox b/assets/voxygen/voxel/npc/gecko/male/foot_bl.vox deleted file mode 100644 index 52091c6ae9..0000000000 --- a/assets/voxygen/voxel/npc/gecko/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f74d8f8c4c1d72a25001d915886250bf2a3b09d62c77f100c175c2fcb2586390 -size 1172 diff --git a/assets/voxygen/voxel/npc/gecko/male/foot_fl.vox b/assets/voxygen/voxel/npc/gecko/male/foot_fl.vox deleted file mode 100644 index e4cf0ff28f..0000000000 --- a/assets/voxygen/voxel/npc/gecko/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:4ec3ee19ab326fa7a0cd5e19ef3be23ac0237ba7c1eb7b2b16bbbdfc6ebaf840 -size 1168 diff --git a/assets/voxygen/voxel/npc/gnarling/male/chest.vox b/assets/voxygen/voxel/npc/gnarling/male/chest.vox new file mode 100644 index 0000000000..923c912ca7 --- /dev/null +++ b/assets/voxygen/voxel/npc/gnarling/male/chest.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6922bb143dee2491811e455ad7f03db1a8658065eb1243065d46265d7a860f12 +size 1648 diff --git a/assets/voxygen/voxel/npc/gnarling/male/dagger.vox b/assets/voxygen/voxel/npc/gnarling/male/dagger.vox new file mode 100644 index 0000000000..d326f3eb98 --- /dev/null +++ b/assets/voxygen/voxel/npc/gnarling/male/dagger.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:82482290ed4562e1b82b21d59008967448f08e58229b69e2cdfa614b717d06ee +size 1312 diff --git a/assets/voxygen/voxel/npc/gnarling/male/foot_r.vox b/assets/voxygen/voxel/npc/gnarling/male/foot_r.vox new file mode 100644 index 0000000000..95aff98875 --- /dev/null +++ b/assets/voxygen/voxel/npc/gnarling/male/foot_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4c801957433abef8df299de07b63ba4664599a17236418a7f5b89fcb5a293190 +size 1188 diff --git a/assets/voxygen/voxel/npc/gnarling/male/hand_r.vox b/assets/voxygen/voxel/npc/gnarling/male/hand_r.vox new file mode 100644 index 0000000000..a85db94247 --- /dev/null +++ b/assets/voxygen/voxel/npc/gnarling/male/hand_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ce0fc26d4f82c65c91b5089db9bafc7b8dddf4f9f1758ed35b094b52048f7198 +size 1264 diff --git a/assets/voxygen/voxel/npc/gnarling/male/head.vox b/assets/voxygen/voxel/npc/gnarling/male/head.vox new file mode 100644 index 0000000000..ac64a6de7c --- /dev/null +++ b/assets/voxygen/voxel/npc/gnarling/male/head.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8a4c4c9187984eb5ed3d806ee0769d824c3fe070e42da150d9c43383e958a849 +size 2852 diff --git a/assets/voxygen/voxel/npc/gnarling/male/main_hand.vox b/assets/voxygen/voxel/npc/gnarling/male/main_hand.vox new file mode 100644 index 0000000000..e588b21338 --- /dev/null +++ b/assets/voxygen/voxel/npc/gnarling/male/main_hand.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e24a90f1ac457addf71e77adb60a3917fdcd0f950a52c59b3d0b92bcd5c6e29f +size 1308 diff --git a/assets/voxygen/voxel/npc/gnarling/male/pants.vox b/assets/voxygen/voxel/npc/gnarling/male/pants.vox new file mode 100644 index 0000000000..3644927ab1 --- /dev/null +++ b/assets/voxygen/voxel/npc/gnarling/male/pants.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2468a57f1e74849220e28c9734ac0413be829620e13a722e078181c707344b94 +size 1456 diff --git a/assets/voxygen/voxel/npc/gnarling/male/tail.vox b/assets/voxygen/voxel/npc/gnarling/male/tail.vox new file mode 100644 index 0000000000..231a776873 --- /dev/null +++ b/assets/voxygen/voxel/npc/gnarling/male/tail.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:57e6e15ff647b72c3a3420aae6978cd1006a7642c55e4bac94a1595fd64c6a65 +size 1308 diff --git a/assets/voxygen/voxel/npc/gnoll/male/chest.vox b/assets/voxygen/voxel/npc/gnoll/male/chest.vox new file mode 100644 index 0000000000..011328d74c --- /dev/null +++ b/assets/voxygen/voxel/npc/gnoll/male/chest.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c7163208413705957344f4233b56aa72510fa662160e258e09083c01e8949cde +size 2772 diff --git a/assets/voxygen/voxel/npc/gnoll/male/foot_r.vox b/assets/voxygen/voxel/npc/gnoll/male/foot_r.vox new file mode 100644 index 0000000000..6f1f04309f --- /dev/null +++ b/assets/voxygen/voxel/npc/gnoll/male/foot_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e6b59ea0ed69c57135779c21540fece451b126870925449fc4630f6071a3af65 +size 1304 diff --git a/assets/voxygen/voxel/npc/gnoll/male/hand_r.vox b/assets/voxygen/voxel/npc/gnoll/male/hand_r.vox new file mode 100644 index 0000000000..dddd207c52 --- /dev/null +++ b/assets/voxygen/voxel/npc/gnoll/male/hand_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:630ea50105b1ecbd46a5b6ae1bd4d727469378cd109e239c9e768be6e1d2740c +size 1628 diff --git a/assets/voxygen/voxel/npc/gnoll/male/head.vox b/assets/voxygen/voxel/npc/gnoll/male/head.vox new file mode 100644 index 0000000000..0a013fc6f6 --- /dev/null +++ b/assets/voxygen/voxel/npc/gnoll/male/head.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4af702f3b87606c966e366228feddd69a026eb1b08edbb9766ff4b51f0b58c0f +size 2048 diff --git a/assets/voxygen/voxel/npc/gnoll/male/pants.vox b/assets/voxygen/voxel/npc/gnoll/male/pants.vox new file mode 100644 index 0000000000..8c4ec9ffb8 --- /dev/null +++ b/assets/voxygen/voxel/npc/gnoll/male/pants.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b409340dd18336240d3dc63b2032bb8af55bcb2771c4923ca87d8bdda4a5a5be +size 1776 diff --git a/assets/voxygen/voxel/npc/gnoll/male/tail.vox b/assets/voxygen/voxel/npc/gnoll/male/tail.vox new file mode 100644 index 0000000000..4a4c46f62f --- /dev/null +++ b/assets/voxygen/voxel/npc/gnoll/male/tail.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7aa4826e7eedf264769fb28631a166ce826e150e2c21114bd011d8c4c55a843c +size 1308 diff --git a/assets/voxygen/voxel/npc/gnome/male/chest.vox b/assets/voxygen/voxel/npc/gnome/male/chest.vox new file mode 100644 index 0000000000..04a2841e16 --- /dev/null +++ b/assets/voxygen/voxel/npc/gnome/male/chest.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6acdfb5c0d402b8b8f82c9a294e1d65adc8ad23f1911b380a90a93ce6ca00f78 +size 1752 diff --git a/assets/voxygen/voxel/npc/gnome/male/foot_r.vox b/assets/voxygen/voxel/npc/gnome/male/foot_r.vox new file mode 100644 index 0000000000..8c3e8a9c9c --- /dev/null +++ b/assets/voxygen/voxel/npc/gnome/male/foot_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:417fa23a21f543a0d08ecd7621436792008e2e5c12a816eeffb9bd4443bb4137 +size 1264 diff --git a/assets/voxygen/voxel/npc/gnome/male/hand_r.vox b/assets/voxygen/voxel/npc/gnome/male/hand_r.vox new file mode 100644 index 0000000000..cb179f89f2 --- /dev/null +++ b/assets/voxygen/voxel/npc/gnome/male/hand_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:347ca2a79d3f5199e5c3e4d68078fa74e616b8bf8ed8d3a3110a32bb346a6d08 +size 1380 diff --git a/assets/voxygen/voxel/npc/gnome/male/head.vox b/assets/voxygen/voxel/npc/gnome/male/head.vox new file mode 100644 index 0000000000..6dfa08ca40 --- /dev/null +++ b/assets/voxygen/voxel/npc/gnome/male/head.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d3113963a0773c49f7c5d59ca26a654d6a5dfced6f3da78e92c286da57ad89bf +size 3848 diff --git a/assets/voxygen/voxel/npc/gnome/male/shorts.vox b/assets/voxygen/voxel/npc/gnome/male/shorts.vox new file mode 100644 index 0000000000..e64cbb4730 --- /dev/null +++ b/assets/voxygen/voxel/npc/gnome/male/shorts.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0e0deb158454c543936ca5e4e40ac179e6d6b8be9d4d6c160425028823355fb3 +size 1680 diff --git a/assets/voxygen/voxel/npc/goose/male/leg_l.vox b/assets/voxygen/voxel/npc/goose/male/leg_l.vox deleted file mode 100644 index d55ea91e81..0000000000 --- a/assets/voxygen/voxel/npc/goose/male/leg_l.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5279fc8f6bf609a2e454325e2d1bfd42f8ad957be849eace1115faef8e09bfc2 -size 1132 diff --git a/assets/voxygen/voxel/npc/grolgar/male/foot_bl.vox b/assets/voxygen/voxel/npc/grolgar/male/foot_bl.vox deleted file mode 100644 index 8cd108d0ef..0000000000 --- a/assets/voxygen/voxel/npc/grolgar/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c47ae981b9ca75752b3abf681710dd73e129382848e2bce98a2f949132bdbc35 -size 1496 diff --git a/assets/voxygen/voxel/npc/grolgar/male/foot_fl.vox b/assets/voxygen/voxel/npc/grolgar/male/foot_fl.vox deleted file mode 100644 index cd907abb47..0000000000 --- a/assets/voxygen/voxel/npc/grolgar/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:caf9d5bc5a4ea243c404b0ee6a586b8f4db803b9986eea8aaa148746b923482e -size 1912 diff --git a/assets/voxygen/voxel/npc/grolgar/male/leg_bl.vox b/assets/voxygen/voxel/npc/grolgar/male/leg_bl.vox deleted file mode 100644 index 57f9f93b73..0000000000 --- a/assets/voxygen/voxel/npc/grolgar/male/leg_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:8d6399c3a8fa21357d18f540d8fea0b30d720efa1506afed7da7af51438e15d2 -size 1588 diff --git a/assets/voxygen/voxel/npc/grolgar/male/leg_fl.vox b/assets/voxygen/voxel/npc/grolgar/male/leg_fl.vox deleted file mode 100644 index a43052bb31..0000000000 --- a/assets/voxygen/voxel/npc/grolgar/male/leg_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:0afaa656dc9db27231d7aa323c43cf80f097de1ba82d01c1298a20cce0429e99 -size 1872 diff --git a/assets/voxygen/voxel/npc/hakulaq/male/foot_bl.vox b/assets/voxygen/voxel/npc/hakulaq/male/foot_bl.vox deleted file mode 100644 index b9fb3840fa..0000000000 --- a/assets/voxygen/voxel/npc/hakulaq/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:75ee37a8f57dc763ce4a375ea2ddc0122716af2d8b32fab8961f31df6f55aeb0 -size 1400 diff --git a/assets/voxygen/voxel/npc/hakulaq/male/foot_fl.vox b/assets/voxygen/voxel/npc/hakulaq/male/foot_fl.vox deleted file mode 100644 index c9240a3fd6..0000000000 --- a/assets/voxygen/voxel/npc/hakulaq/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:2a90241046cc4ff739a7aace0ec148acc0428c50d958b587109e4ca87ece66b1 -size 1472 diff --git a/assets/voxygen/voxel/npc/haniwa/male/chest.vox b/assets/voxygen/voxel/npc/haniwa/male/chest.vox new file mode 100644 index 0000000000..536c899da9 --- /dev/null +++ b/assets/voxygen/voxel/npc/haniwa/male/chest.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f1b434661180cc6cd400db64bc7537e4fcb08c25f40dbaa08040389a078d65d3 +size 2276 diff --git a/assets/voxygen/voxel/npc/haniwa/male/foot_r.vox b/assets/voxygen/voxel/npc/haniwa/male/foot_r.vox new file mode 100644 index 0000000000..fa8fecdf90 --- /dev/null +++ b/assets/voxygen/voxel/npc/haniwa/male/foot_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1e9ca4fc385d5b1e2cc2b2d5bda16a0b18547c9ac72e5ccc94eca7aaa64c8e2a +size 1384 diff --git a/assets/voxygen/voxel/npc/haniwa/male/hand_r.vox b/assets/voxygen/voxel/npc/haniwa/male/hand_r.vox new file mode 100644 index 0000000000..b85deb405f --- /dev/null +++ b/assets/voxygen/voxel/npc/haniwa/male/hand_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e1316646c3f84bc05b9ed616bd285ea2c95a0c2d5e4fa60bfa2c0d99a845ea98 +size 1368 diff --git a/assets/voxygen/voxel/npc/haniwa/male/head.vox b/assets/voxygen/voxel/npc/haniwa/male/head.vox new file mode 100644 index 0000000000..9d9a377624 --- /dev/null +++ b/assets/voxygen/voxel/npc/haniwa/male/head.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8b92b013a7f9d5224793dd6c2c10baccb6e383701878d7594cd55d1386771b96 +size 3156 diff --git a/assets/voxygen/voxel/npc/haniwa/male/pants.vox b/assets/voxygen/voxel/npc/haniwa/male/pants.vox new file mode 100644 index 0000000000..7dee4665ab --- /dev/null +++ b/assets/voxygen/voxel/npc/haniwa/male/pants.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0d4192ce647fdfe801a5352569dbd40fd5a6a7230cd870e84dfe8c9ba055b91c +size 1628 diff --git a/assets/voxygen/voxel/npc/hare/female/foot_bl.vox b/assets/voxygen/voxel/npc/hare/female/foot_bl.vox deleted file mode 100644 index aadf5b1c70..0000000000 --- a/assets/voxygen/voxel/npc/hare/female/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ce91255cbb001c56157a820c15733bd4491a6a6cfe4e9c4e2863703075b4d6ba -size 1272 diff --git a/assets/voxygen/voxel/npc/hare/female/foot_fl.vox b/assets/voxygen/voxel/npc/hare/female/foot_fl.vox deleted file mode 100644 index 0036f9bc42..0000000000 --- a/assets/voxygen/voxel/npc/hare/female/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:20eae48674cc88c2c44574632e595b42c0b21d42610bc6044f6d33daf85a66da -size 1192 diff --git a/assets/voxygen/voxel/npc/hare/male/foot_bl.vox b/assets/voxygen/voxel/npc/hare/male/foot_bl.vox deleted file mode 100644 index 3bc3f8d873..0000000000 --- a/assets/voxygen/voxel/npc/hare/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:79c0427fc0feebfcbd511e2fec8d44c41027337031462b197e2de24af9be654b -size 1332 diff --git a/assets/voxygen/voxel/npc/hare/male/foot_fl.vox b/assets/voxygen/voxel/npc/hare/male/foot_fl.vox deleted file mode 100644 index 2757f19bed..0000000000 --- a/assets/voxygen/voxel/npc/hare/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:9bfd60c00e264ffbe53613c65190d61a13a972c19506b5ab159d6dceb1477d1c -size 1128 diff --git a/assets/voxygen/voxel/npc/harvester/male/foot_l.vox b/assets/voxygen/voxel/npc/harvester/male/foot_l.vox new file mode 100644 index 0000000000..ceadedce98 --- /dev/null +++ b/assets/voxygen/voxel/npc/harvester/male/foot_l.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:66c62818da575ee679d8b412020acd0712db4ead0d536fbd859ed136ccb96c45 +size 1520 diff --git a/assets/voxygen/voxel/npc/harvester/male/foot_r.vox b/assets/voxygen/voxel/npc/harvester/male/foot_r.vox new file mode 100644 index 0000000000..d8cb72195e --- /dev/null +++ b/assets/voxygen/voxel/npc/harvester/male/foot_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:29b5ebd1f01b0a81bdc7e6a9daff04733bb458484764f3ded6d24e69498c8674 +size 1520 diff --git a/assets/voxygen/voxel/npc/harvester/male/hand_l.vox b/assets/voxygen/voxel/npc/harvester/male/hand_l.vox new file mode 100644 index 0000000000..3c5347d95b --- /dev/null +++ b/assets/voxygen/voxel/npc/harvester/male/hand_l.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:92288a2ef56814da9561017357e842fac00a81bc7cacb701c44374544877e235 +size 1532 diff --git a/assets/voxygen/voxel/npc/harvester/male/hand_r.vox b/assets/voxygen/voxel/npc/harvester/male/hand_r.vox new file mode 100644 index 0000000000..f885947f16 --- /dev/null +++ b/assets/voxygen/voxel/npc/harvester/male/hand_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b70eadf22fb6ccdd0af18bd4651b20e2af256a8d0f8453d77d1619bdcc546ec1 +size 1528 diff --git a/assets/voxygen/voxel/npc/harvester/male/head.vox b/assets/voxygen/voxel/npc/harvester/male/head.vox new file mode 100644 index 0000000000..012839b8c0 --- /dev/null +++ b/assets/voxygen/voxel/npc/harvester/male/head.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f823d38356d788cfbc48e55149240ebe2ee701113439165b0ecf36e8d621ed14 +size 4456 diff --git a/assets/voxygen/voxel/npc/harvester/male/jaw.vox b/assets/voxygen/voxel/npc/harvester/male/jaw.vox new file mode 100644 index 0000000000..8e07bb596b --- /dev/null +++ b/assets/voxygen/voxel/npc/harvester/male/jaw.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:44df94e3b9d45a47cc6070f29f768a0ec61b091e31770063b69543650da1d76f +size 1432 diff --git a/assets/voxygen/voxel/npc/harvester/male/leg_l.vox b/assets/voxygen/voxel/npc/harvester/male/leg_l.vox new file mode 100644 index 0000000000..29d6e42117 --- /dev/null +++ b/assets/voxygen/voxel/npc/harvester/male/leg_l.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3d333126dc845dd4be5e998b796014f031cdf6a96fe9c7e40f6d019073668955 +size 1344 diff --git a/assets/voxygen/voxel/npc/harvester/male/leg_r.vox b/assets/voxygen/voxel/npc/harvester/male/leg_r.vox new file mode 100644 index 0000000000..c70e33118b --- /dev/null +++ b/assets/voxygen/voxel/npc/harvester/male/leg_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:89302f1e2b333840284ab72803046896d25635cdb17fa931a8ae4e188b922626 +size 1344 diff --git a/assets/voxygen/voxel/npc/harvester/male/shoulder_l.vox b/assets/voxygen/voxel/npc/harvester/male/shoulder_l.vox new file mode 100644 index 0000000000..9a652f07e9 --- /dev/null +++ b/assets/voxygen/voxel/npc/harvester/male/shoulder_l.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0f28ee288aa9569e16ab618c510a09ac2f19cbd53258d29a1e670e59afc150d9 +size 1536 diff --git a/assets/voxygen/voxel/npc/harvester/male/shoulder_r.vox b/assets/voxygen/voxel/npc/harvester/male/shoulder_r.vox new file mode 100644 index 0000000000..aea540cf10 --- /dev/null +++ b/assets/voxygen/voxel/npc/harvester/male/shoulder_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b18c8ae695a4de75f9b6bf0f5bb0e237406c93ff4f00032119ed433b54c30efc +size 1536 diff --git a/assets/voxygen/voxel/npc/harvester/male/torso_lower.vox b/assets/voxygen/voxel/npc/harvester/male/torso_lower.vox new file mode 100644 index 0000000000..9d55e81964 --- /dev/null +++ b/assets/voxygen/voxel/npc/harvester/male/torso_lower.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1101f6cba8a5f5dd723a4d9fc7e63e98e5c8926febd871a9264623804c413e31 +size 1796 diff --git a/assets/voxygen/voxel/npc/harvester/male/torso_upper.vox b/assets/voxygen/voxel/npc/harvester/male/torso_upper.vox new file mode 100644 index 0000000000..d5add8c65c --- /dev/null +++ b/assets/voxygen/voxel/npc/harvester/male/torso_upper.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:631efe29bed08671214a1e220e0a527ffae85480a0934ce587f2f518c6690f79 +size 3664 diff --git a/assets/voxygen/voxel/npc/highland/male/ears.vox b/assets/voxygen/voxel/npc/highland/male/ears.vox new file mode 100644 index 0000000000..a7bd49c6cf --- /dev/null +++ b/assets/voxygen/voxel/npc/highland/male/ears.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a9712b72bedf80a26395a54612ecc89948f60e133c6fb655b979d6f7c6bb2f94 +size 1192 diff --git a/assets/voxygen/voxel/npc/highland/male/foot_br.vox b/assets/voxygen/voxel/npc/highland/male/foot_br.vox new file mode 100644 index 0000000000..7c5fe05c4c --- /dev/null +++ b/assets/voxygen/voxel/npc/highland/male/foot_br.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7502bf3bfd951a5908ebaf0298326a1b600781296c988840fc448d17df26fa45 +size 1356 diff --git a/assets/voxygen/voxel/npc/highland/male/foot_fr.vox b/assets/voxygen/voxel/npc/highland/male/foot_fr.vox new file mode 100644 index 0000000000..ed5b5349b4 --- /dev/null +++ b/assets/voxygen/voxel/npc/highland/male/foot_fr.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3281dd62983db45d67cb61a5c408dc9fe170f1ad1e5b03714e9f4267411497ad +size 1384 diff --git a/assets/voxygen/voxel/npc/highland/male/head.vox b/assets/voxygen/voxel/npc/highland/male/head.vox new file mode 100644 index 0000000000..8cdd70f2de --- /dev/null +++ b/assets/voxygen/voxel/npc/highland/male/head.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:25578b6111f456fb8190905302221679d709b49e8ca725c9e6cd558c2421c84c +size 3128 diff --git a/assets/voxygen/voxel/npc/highland/male/jaw.vox b/assets/voxygen/voxel/npc/highland/male/jaw.vox new file mode 100644 index 0000000000..df29320318 --- /dev/null +++ b/assets/voxygen/voxel/npc/highland/male/jaw.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4ec83e1d145fdefb249a41f95ee448cea5a40cac5a642e3b9e3ada92beb4ebb7 +size 1184 diff --git a/assets/voxygen/voxel/npc/highland/male/leg_br.vox b/assets/voxygen/voxel/npc/highland/male/leg_br.vox new file mode 100644 index 0000000000..a256c4fe5b --- /dev/null +++ b/assets/voxygen/voxel/npc/highland/male/leg_br.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9b23dc2c5a91ace542605037869b90ced88c2c808e624b0aef9e3d80a53fe92e +size 1680 diff --git a/assets/voxygen/voxel/npc/highland/male/leg_fr.vox b/assets/voxygen/voxel/npc/highland/male/leg_fr.vox new file mode 100644 index 0000000000..deb719181d --- /dev/null +++ b/assets/voxygen/voxel/npc/highland/male/leg_fr.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d76a5eb7cec685973e53a070a1efa1eb4e6a5b8748335305c1f43a41ccd09f31 +size 1584 diff --git a/assets/voxygen/voxel/npc/highland/male/neck.vox b/assets/voxygen/voxel/npc/highland/male/neck.vox new file mode 100644 index 0000000000..a306405daa --- /dev/null +++ b/assets/voxygen/voxel/npc/highland/male/neck.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:911f49107e08161b33e86e488a580e27e58c3f85f007b41af8cae3cd37e434bc +size 2920 diff --git a/assets/voxygen/voxel/npc/highland/male/tail.vox b/assets/voxygen/voxel/npc/highland/male/tail.vox new file mode 100644 index 0000000000..97cf9b72e5 --- /dev/null +++ b/assets/voxygen/voxel/npc/highland/male/tail.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:71ce20b320c818a3c3dd955f5e33190fec06b4d9fbdeb7b1e8a7451fef79ea41 +size 1360 diff --git a/assets/voxygen/voxel/npc/highland/male/torso_back.vox b/assets/voxygen/voxel/npc/highland/male/torso_back.vox new file mode 100644 index 0000000000..1c5575aa85 --- /dev/null +++ b/assets/voxygen/voxel/npc/highland/male/torso_back.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dd93f1fb2fff553aa1067ecc025b08ed6fc59d8afa9c694193c8605c24ab8263 +size 5500 diff --git a/assets/voxygen/voxel/npc/highland/male/torso_front.vox b/assets/voxygen/voxel/npc/highland/male/torso_front.vox new file mode 100644 index 0000000000..a95d6d39cb --- /dev/null +++ b/assets/voxygen/voxel/npc/highland/male/torso_front.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d863c0f24f7375758c296ce4e9e0d0f96baf54c6234da791f1198a884da163f1 +size 5732 diff --git a/assets/voxygen/voxel/npc/hirdrasil/male/foot_bl.vox b/assets/voxygen/voxel/npc/hirdrasil/male/foot_bl.vox deleted file mode 100644 index 8f3f184635..0000000000 --- a/assets/voxygen/voxel/npc/hirdrasil/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:96b1a32f3449c5ccf0c6774ab7007406d1b151ee049b4358bef4a108c22071e2 -size 1304 diff --git a/assets/voxygen/voxel/npc/hirdrasil/male/foot_fl.vox b/assets/voxygen/voxel/npc/hirdrasil/male/foot_fl.vox deleted file mode 100644 index 2c4aa49d4f..0000000000 --- a/assets/voxygen/voxel/npc/hirdrasil/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b8f9cf762310517e7b0198bb4a103b38b535439840e8cddaf594958e2fca3167 -size 1428 diff --git a/assets/voxygen/voxel/npc/hirdrasil/male/leg_bl.vox b/assets/voxygen/voxel/npc/hirdrasil/male/leg_bl.vox deleted file mode 100644 index 6b6940a91c..0000000000 --- a/assets/voxygen/voxel/npc/hirdrasil/male/leg_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:34f887f932dcdf72d3634683a707d28d63509dd5ce9be38bef8a1f701c57fe09 -size 1580 diff --git a/assets/voxygen/voxel/npc/hirdrasil/male/leg_fl.vox b/assets/voxygen/voxel/npc/hirdrasil/male/leg_fl.vox deleted file mode 100644 index b99ebfcf7b..0000000000 --- a/assets/voxygen/voxel/npc/hirdrasil/male/leg_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:24c6e497990ef4c2e235e521b5b310b309617184bb6935ff936c289fb2b6e35c -size 1564 diff --git a/assets/voxygen/voxel/npc/holladon/male/foot_bl.vox b/assets/voxygen/voxel/npc/holladon/male/foot_bl.vox deleted file mode 100644 index 7874d827e4..0000000000 --- a/assets/voxygen/voxel/npc/holladon/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e4f0879993c621a3ca92436f9e996386cdf6a3124c3a543179a91f70f07c7441 -size 1200 diff --git a/assets/voxygen/voxel/npc/holladon/male/foot_fl.vox b/assets/voxygen/voxel/npc/holladon/male/foot_fl.vox deleted file mode 100644 index ad790ca7a8..0000000000 --- a/assets/voxygen/voxel/npc/holladon/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:afd75ceb7ef757f1ba0886a9227090a987a1c01a049e9293a204c7fa733833b7 -size 1248 diff --git a/assets/voxygen/voxel/npc/horse/male/foot_bl.vox b/assets/voxygen/voxel/npc/horse/male/foot_bl.vox deleted file mode 100644 index d78daf00ab..0000000000 --- a/assets/voxygen/voxel/npc/horse/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:588888523fdba982bda734dd6b1c3120e2810b501cd47a27f668c4347c0a5e27 -size 1360 diff --git a/assets/voxygen/voxel/npc/horse/male/foot_fl.vox b/assets/voxygen/voxel/npc/horse/male/foot_fl.vox deleted file mode 100644 index f6a9153724..0000000000 --- a/assets/voxygen/voxel/npc/horse/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:74078c7d5b039e2f7a856908ddd295af35bf643a676df236d789028986326c2d -size 1376 diff --git a/assets/voxygen/voxel/npc/horse/male/leg_bl.vox b/assets/voxygen/voxel/npc/horse/male/leg_bl.vox deleted file mode 100644 index 4ec3cedf89..0000000000 --- a/assets/voxygen/voxel/npc/horse/male/leg_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:7a3ee17c50e19a94beb194cfdf3bcbcc551edc5640e47787804160fb34d7b895 -size 1684 diff --git a/assets/voxygen/voxel/npc/horse/male/leg_fl.vox b/assets/voxygen/voxel/npc/horse/male/leg_fl.vox deleted file mode 100644 index e4706cd7d5..0000000000 --- a/assets/voxygen/voxel/npc/horse/male/leg_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:2c9b017b800204dcac085a4dd53984c01fa15f03a2573c14b0aa5319651bf15f -size 1568 diff --git a/assets/voxygen/voxel/npc/horse/male/neck.vox b/assets/voxygen/voxel/npc/horse/male/neck.vox index 39c2b17862..b1c8068bae 100644 --- a/assets/voxygen/voxel/npc/horse/male/neck.vox +++ b/assets/voxygen/voxel/npc/horse/male/neck.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e6d847ffad7224ecc9c5dbfa39ca09449fedeccecec98e1cc64d3065391f91ae +oid sha256:505b21fd6d5f55b23a217575168160e9ad296c76dc6ed3e6cfbd43cee4f936bb size 2740 diff --git a/assets/voxygen/voxel/npc/hyena/male/foot_bl.vox b/assets/voxygen/voxel/npc/hyena/male/foot_bl.vox deleted file mode 100644 index 17acb920a7..0000000000 --- a/assets/voxygen/voxel/npc/hyena/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ccaa64d65281b1781cb8aa16620c8196b9841d4cb3574b04403fb23c807b2509 -size 1272 diff --git a/assets/voxygen/voxel/npc/hyena/male/foot_fl.vox b/assets/voxygen/voxel/npc/hyena/male/foot_fl.vox deleted file mode 100644 index 6c90343ea2..0000000000 --- a/assets/voxygen/voxel/npc/hyena/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:435225bdb49373f5e45bddc13396b7f477b25599f2caac75886e3f9f00297eab -size 1284 diff --git a/assets/voxygen/voxel/npc/jackalope/male/foot_bl.vox b/assets/voxygen/voxel/npc/jackalope/male/foot_bl.vox deleted file mode 100644 index dae8b99501..0000000000 --- a/assets/voxygen/voxel/npc/jackalope/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:20d8d1bb0baa44be27d956d2af8db5bba5c56b6e6a3c579b7f4283a310324015 -size 1272 diff --git a/assets/voxygen/voxel/npc/jackalope/male/foot_fl.vox b/assets/voxygen/voxel/npc/jackalope/male/foot_fl.vox deleted file mode 100644 index 952c180d2e..0000000000 --- a/assets/voxygen/voxel/npc/jackalope/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:89b051e86f59eccfc98d3808d89ec01d00c0a05f99e03879a6a9237bae72711d -size 1192 diff --git a/assets/voxygen/voxel/npc/kappa/male/chest.vox b/assets/voxygen/voxel/npc/kappa/male/chest.vox new file mode 100644 index 0000000000..deb793ee3c --- /dev/null +++ b/assets/voxygen/voxel/npc/kappa/male/chest.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:117ec5e77f0a5bdb2a13a942452c2797f12e3a745c255f592a15f8c81a37f7f4 +size 4356 diff --git a/assets/voxygen/voxel/npc/kappa/male/foot_r.vox b/assets/voxygen/voxel/npc/kappa/male/foot_r.vox new file mode 100644 index 0000000000..9f4fcba501 --- /dev/null +++ b/assets/voxygen/voxel/npc/kappa/male/foot_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6867b87be57f6fef7c940c9b04bd767684345b235f29125887dbe4c457842d96 +size 1380 diff --git a/assets/voxygen/voxel/npc/kappa/male/hand_r.vox b/assets/voxygen/voxel/npc/kappa/male/hand_r.vox new file mode 100644 index 0000000000..8778503bf6 --- /dev/null +++ b/assets/voxygen/voxel/npc/kappa/male/hand_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3aff415942d5dfb82e5c4778b633e45b2d65489cb28716dd2752ec066407c786 +size 1448 diff --git a/assets/voxygen/voxel/npc/kappa/male/head.vox b/assets/voxygen/voxel/npc/kappa/male/head.vox new file mode 100644 index 0000000000..27e95a6b04 --- /dev/null +++ b/assets/voxygen/voxel/npc/kappa/male/head.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:181c563704bedbdbfc41e4c349ff45e806bb39aa429a81551eb4544cef09be40 +size 2260 diff --git a/assets/voxygen/voxel/npc/kappa/male/pants.vox b/assets/voxygen/voxel/npc/kappa/male/pants.vox new file mode 100644 index 0000000000..bd68ecda21 --- /dev/null +++ b/assets/voxygen/voxel/npc/kappa/male/pants.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ca1531db32117e639b0970c243af1a48114d7e54d8a8e57ca51c28d4f8afca10 +size 1388 diff --git a/assets/voxygen/voxel/npc/kappa/male/tail.vox b/assets/voxygen/voxel/npc/kappa/male/tail.vox new file mode 100644 index 0000000000..b102982ce9 --- /dev/null +++ b/assets/voxygen/voxel/npc/kappa/male/tail.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3c54bc787f81103ee047c6421527bc819d4c37c2bd18da898d60e5dcda0ba8cb +size 1436 diff --git a/assets/voxygen/voxel/npc/kelpie/male/foot_bl.vox b/assets/voxygen/voxel/npc/kelpie/male/foot_bl.vox deleted file mode 100644 index fe2584dff0..0000000000 --- a/assets/voxygen/voxel/npc/kelpie/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:2aca1289dc3d297add93a799a800cc408b7833eb9ded253ca3a9387d10c35dbf -size 1360 diff --git a/assets/voxygen/voxel/npc/kelpie/male/foot_fl.vox b/assets/voxygen/voxel/npc/kelpie/male/foot_fl.vox deleted file mode 100644 index 33c38fa578..0000000000 --- a/assets/voxygen/voxel/npc/kelpie/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b103652193a178446b6dc37c0d400b13d9df8f85dda232ea652fce1de75dcc9c -size 1376 diff --git a/assets/voxygen/voxel/npc/kelpie/male/leg_bl.vox b/assets/voxygen/voxel/npc/kelpie/male/leg_bl.vox deleted file mode 100644 index 7260807b5e..0000000000 --- a/assets/voxygen/voxel/npc/kelpie/male/leg_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:72d3c27a89e29929b21153067bfc3975dd75ce187ff3246d18c6b34fa48d0e9d -size 1684 diff --git a/assets/voxygen/voxel/npc/kelpie/male/leg_fl.vox b/assets/voxygen/voxel/npc/kelpie/male/leg_fl.vox deleted file mode 100644 index fe1da55649..0000000000 --- a/assets/voxygen/voxel/npc/kelpie/male/leg_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:26d41b1fd0a2756b0a9c935f7bda38d6f20d7aebfc56294191e66628abfa6488 -size 1564 diff --git a/assets/voxygen/voxel/npc/lavadrake/male/foot_bl.vox b/assets/voxygen/voxel/npc/lavadrake/male/foot_bl.vox deleted file mode 100644 index 8c9ccb376e..0000000000 --- a/assets/voxygen/voxel/npc/lavadrake/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:72c688fda5396ab81daab975daf0c3315b95e2b5ff035f938fa0896e2b4dc1bd -size 2284 diff --git a/assets/voxygen/voxel/npc/lavadrake/male/foot_fl.vox b/assets/voxygen/voxel/npc/lavadrake/male/foot_fl.vox deleted file mode 100644 index a2e38341e7..0000000000 --- a/assets/voxygen/voxel/npc/lavadrake/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:68f6ad2f0f9f865b05e02cf4dd150fe7110f636de1229b20b8dc84a728d436dc -size 2748 diff --git a/assets/voxygen/voxel/npc/lion/male/foot_bl.vox b/assets/voxygen/voxel/npc/lion/male/foot_bl.vox deleted file mode 100644 index a5befd56c3..0000000000 --- a/assets/voxygen/voxel/npc/lion/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:957d4b22454283b4e99c2280119776556680b6a79dc408d432c003b6226286d9 -size 1476 diff --git a/assets/voxygen/voxel/npc/lion/male/foot_fl.vox b/assets/voxygen/voxel/npc/lion/male/foot_fl.vox deleted file mode 100644 index efc590cfac..0000000000 --- a/assets/voxygen/voxel/npc/lion/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:64105ef321498314896ee0a0a0c2c36ee33ee3f5078f642f626dc02dbd8023a1 -size 1428 diff --git a/assets/voxygen/voxel/npc/lion/male/leg_bl.vox b/assets/voxygen/voxel/npc/lion/male/leg_bl.vox deleted file mode 100644 index 3f2ffc03db..0000000000 --- a/assets/voxygen/voxel/npc/lion/male/leg_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:dea3c84abed1ea8aab9c9b396b3be97bdf103aa74633302eeb671980b6d75728 -size 1544 diff --git a/assets/voxygen/voxel/npc/lion/male/leg_fl.vox b/assets/voxygen/voxel/npc/lion/male/leg_fl.vox deleted file mode 100644 index 4d43fa8b0f..0000000000 --- a/assets/voxygen/voxel/npc/lion/male/leg_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:0795d8d3e25c5380dcbc03d13cc6a15dbc11cc2063fd6f6c60185e4a469f68c4 -size 1440 diff --git a/assets/voxygen/voxel/npc/mandragora/male/chest.vox b/assets/voxygen/voxel/npc/mandragora/male/chest.vox new file mode 100644 index 0000000000..b9c886f54d --- /dev/null +++ b/assets/voxygen/voxel/npc/mandragora/male/chest.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:adc0cca7885391bd324c0939136bcc4e6d2e9c0f625d3e71aa6bc8f5daf541b0 +size 2916 diff --git a/assets/voxygen/voxel/npc/mandragora/male/foot_r.vox b/assets/voxygen/voxel/npc/mandragora/male/foot_r.vox new file mode 100644 index 0000000000..ed48339700 --- /dev/null +++ b/assets/voxygen/voxel/npc/mandragora/male/foot_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5f2dfdb8aebde1599b112c74b2f933d7d22cdbdf5f6acc177e2d67fbcd2d1411 +size 1140 diff --git a/assets/voxygen/voxel/npc/mandragora/male/hand_r.vox b/assets/voxygen/voxel/npc/mandragora/male/hand_r.vox new file mode 100644 index 0000000000..40b638780b --- /dev/null +++ b/assets/voxygen/voxel/npc/mandragora/male/hand_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2c07e91da7e73c238d752d0dac970f615e7a467a2970e9046093289985a0d98a +size 1204 diff --git a/assets/voxygen/voxel/npc/mandragora/male/pants.vox b/assets/voxygen/voxel/npc/mandragora/male/pants.vox new file mode 100644 index 0000000000..5586767f11 --- /dev/null +++ b/assets/voxygen/voxel/npc/mandragora/male/pants.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e15ea1aa65576683e5a7410c606c5fc1c7e54179c509c39921fcb372ca93d9a5 +size 1232 diff --git a/assets/voxygen/voxel/npc/maneater/male/foot_bl.vox b/assets/voxygen/voxel/npc/maneater/male/foot_bl.vox deleted file mode 100644 index 1e351d142f..0000000000 --- a/assets/voxygen/voxel/npc/maneater/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:63f8b9c9811b7b1eaa5368793014431fb6bd329a6117c19646ccdf300dbd3b15 -size 1648 diff --git a/assets/voxygen/voxel/npc/maneater/male/foot_fl.vox b/assets/voxygen/voxel/npc/maneater/male/foot_fl.vox deleted file mode 100644 index 677939e776..0000000000 --- a/assets/voxygen/voxel/npc/maneater/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:37e29cbcc2ed259549c83ad0bfb2f55cb78c649eecc72e0e96f6c8789bd8fe3a -size 1648 diff --git a/assets/voxygen/voxel/npc/marlin/male/fin_l.vox b/assets/voxygen/voxel/npc/marlin/male/fin_l.vox deleted file mode 100644 index b1f8e28fb6..0000000000 --- a/assets/voxygen/voxel/npc/marlin/male/fin_l.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ba8060df483358747e137dbb17bcc04145e65c2330e65c60c4fc9273cc34917d -size 1152 diff --git a/assets/voxygen/voxel/npc/minotaur/male/foot_l.vox b/assets/voxygen/voxel/npc/minotaur/male/foot_l.vox new file mode 100644 index 0000000000..47caa357a9 --- /dev/null +++ b/assets/voxygen/voxel/npc/minotaur/male/foot_l.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e4a26f677a27849702c5e5f343ccd94d3a152e2e64bed811c0c373920d22b86e +size 2396 diff --git a/assets/voxygen/voxel/npc/minotaur/male/foot_r.vox b/assets/voxygen/voxel/npc/minotaur/male/foot_r.vox new file mode 100644 index 0000000000..f39dde569f --- /dev/null +++ b/assets/voxygen/voxel/npc/minotaur/male/foot_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:200408f8cab051336d46af40e6a8d49e5dc7790eb9af9549c678b186f1e81109 +size 2396 diff --git a/assets/voxygen/voxel/npc/minotaur/male/hand_l.vox b/assets/voxygen/voxel/npc/minotaur/male/hand_l.vox new file mode 100644 index 0000000000..2cd23866d8 --- /dev/null +++ b/assets/voxygen/voxel/npc/minotaur/male/hand_l.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9a3ca0d466d913da7daeb3e8f446137a7bff50533dc91b8dd1df3428e624f976 +size 3516 diff --git a/assets/voxygen/voxel/npc/minotaur/male/hand_r.vox b/assets/voxygen/voxel/npc/minotaur/male/hand_r.vox new file mode 100644 index 0000000000..7acfdfc87d --- /dev/null +++ b/assets/voxygen/voxel/npc/minotaur/male/hand_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9a495f547f429243bd0402b706805b8ee8c4e6e453c05f9d78b482c5e6f022a4 +size 3516 diff --git a/assets/voxygen/voxel/npc/minotaur/male/head.vox b/assets/voxygen/voxel/npc/minotaur/male/head.vox new file mode 100644 index 0000000000..a2fa5bf8f1 --- /dev/null +++ b/assets/voxygen/voxel/npc/minotaur/male/head.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9dcdc59d4840c072fbdac6b2659612baaa42c0d9d692fe433287ccb8f7fb6d66 +size 3508 diff --git a/assets/voxygen/voxel/npc/minotaur/male/leg_l.vox b/assets/voxygen/voxel/npc/minotaur/male/leg_l.vox new file mode 100644 index 0000000000..38eab76312 --- /dev/null +++ b/assets/voxygen/voxel/npc/minotaur/male/leg_l.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:449cd794ede2a08a5c676e116c03e914e994cf17763713aab8e10aafe683464b +size 1880 diff --git a/assets/voxygen/voxel/npc/minotaur/male/leg_r.vox b/assets/voxygen/voxel/npc/minotaur/male/leg_r.vox new file mode 100644 index 0000000000..8745b79b3d --- /dev/null +++ b/assets/voxygen/voxel/npc/minotaur/male/leg_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c4ec77093db6b2824e9d3aabf38370fdc14c52fa7ef86ecbae5596e5e8fc3914 +size 1880 diff --git a/assets/voxygen/voxel/npc/minotaur/male/shoulder_l.vox b/assets/voxygen/voxel/npc/minotaur/male/shoulder_l.vox new file mode 100644 index 0000000000..cc4f4d1b09 --- /dev/null +++ b/assets/voxygen/voxel/npc/minotaur/male/shoulder_l.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:45d5c3765acce825ebbfdb4e2120425daadfb6db3d118a4367e204c22c850795 +size 2324 diff --git a/assets/voxygen/voxel/npc/minotaur/male/shoulder_r.vox b/assets/voxygen/voxel/npc/minotaur/male/shoulder_r.vox new file mode 100644 index 0000000000..1f06ee7d93 --- /dev/null +++ b/assets/voxygen/voxel/npc/minotaur/male/shoulder_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:511cc22935546b3af18c1a66ba56ff78b3cb3ba026827ffc0d8ae94d4cb5ebcd +size 2324 diff --git a/assets/voxygen/voxel/npc/minotaur/male/tail.vox b/assets/voxygen/voxel/npc/minotaur/male/tail.vox new file mode 100644 index 0000000000..b0f953dee9 --- /dev/null +++ b/assets/voxygen/voxel/npc/minotaur/male/tail.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dc0f9bf26e14774b9446d748f63c10754624d2f2976431092e915a5b9f9dc4d2 +size 1576 diff --git a/assets/voxygen/voxel/npc/minotaur/male/torso_lower.vox b/assets/voxygen/voxel/npc/minotaur/male/torso_lower.vox new file mode 100644 index 0000000000..2205013816 --- /dev/null +++ b/assets/voxygen/voxel/npc/minotaur/male/torso_lower.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:28f15a3c523f6a3fafb5fbef31787296cb0fe231a6a3f72d21062794e3f6e1ef +size 3036 diff --git a/assets/voxygen/voxel/npc/minotaur/male/torso_upper.vox b/assets/voxygen/voxel/npc/minotaur/male/torso_upper.vox new file mode 100644 index 0000000000..a9e4cff09a --- /dev/null +++ b/assets/voxygen/voxel/npc/minotaur/male/torso_upper.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c61602fb7fc50e5392cebe37a66baf0bb21e1a5642cee3e61a6506ffc109e3fb +size 8356 diff --git a/assets/voxygen/voxel/npc/monitor/male/foot_bl.vox b/assets/voxygen/voxel/npc/monitor/male/foot_bl.vox deleted file mode 100644 index f93aa116dc..0000000000 --- a/assets/voxygen/voxel/npc/monitor/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5a97413b517c0c63072006ca80525ac5a3108b83afe9cf415f4eaa9c7c3705a6 -size 1260 diff --git a/assets/voxygen/voxel/npc/monitor/male/foot_fl.vox b/assets/voxygen/voxel/npc/monitor/male/foot_fl.vox deleted file mode 100644 index 63fd4936f5..0000000000 --- a/assets/voxygen/voxel/npc/monitor/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:20eb9495a96fde3dffade4a43375ab42ac6fcfd107fb10b4173f07e4dc773d7b -size 1292 diff --git a/assets/voxygen/voxel/npc/mouflon/male/foot_bl.vox b/assets/voxygen/voxel/npc/mouflon/male/foot_bl.vox deleted file mode 100644 index df99eb6c8a..0000000000 --- a/assets/voxygen/voxel/npc/mouflon/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:532d66824032e5fe111f5f0b74028c8fe62aef7d290946833a333ab3e6a53344 -size 1292 diff --git a/assets/voxygen/voxel/npc/mouflon/male/foot_fl.vox b/assets/voxygen/voxel/npc/mouflon/male/foot_fl.vox deleted file mode 100644 index 16883afb4a..0000000000 --- a/assets/voxygen/voxel/npc/mouflon/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:348e1b34d39ac70c5e8e6653fb76c6e387c81d8b603fbf259c0baa4b85780291 -size 1224 diff --git a/assets/voxygen/voxel/npc/mouflon/male/leg_bl.vox b/assets/voxygen/voxel/npc/mouflon/male/leg_bl.vox deleted file mode 100644 index 7ec161c2f0..0000000000 --- a/assets/voxygen/voxel/npc/mouflon/male/leg_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:03313370888dcfb1f7b6e0f9adcd73f5c4650428215dca5014cc852e76fbe7d4 -size 1532 diff --git a/assets/voxygen/voxel/npc/mouflon/male/leg_fl.vox b/assets/voxygen/voxel/npc/mouflon/male/leg_fl.vox deleted file mode 100644 index a892a7c9a7..0000000000 --- a/assets/voxygen/voxel/npc/mouflon/male/leg_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a86d4a798a4e0e498633f27cfc07553b1193f10e1c6a97cfa69bedf7512a54bc -size 1460 diff --git a/assets/voxygen/voxel/npc/mouflon/male/neck.vox b/assets/voxygen/voxel/npc/mouflon/male/neck.vox index e9b4517a16..ee6cd5262c 100644 --- a/assets/voxygen/voxel/npc/mouflon/male/neck.vox +++ b/assets/voxygen/voxel/npc/mouflon/male/neck.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:69211337b693d3067ee114b068459afbca3f28e640e995c215860c27d26da06c -size 1944 +oid sha256:f42c372b87f2e1f00af0231b92e1ad191b9798d25ab47a9e29e597c94a5a03cb +size 2112 diff --git a/assets/voxygen/voxel/npc/mouflon/male/torso_front.vox b/assets/voxygen/voxel/npc/mouflon/male/torso_front.vox index 7055aa91e8..e2f21bb390 100644 --- a/assets/voxygen/voxel/npc/mouflon/male/torso_front.vox +++ b/assets/voxygen/voxel/npc/mouflon/male/torso_front.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c010c5681d32bd779dc50a08f26bca9c0167c4634abf7800f88609c38da6802e -size 2864 +oid sha256:3c6900c09e32579031fe03a4e73e3bcfc15e746b99fa5b241c382ffb161882e9 +size 2936 diff --git a/assets/voxygen/voxel/npc/myrmidon/male/MyrmidonHoplite-5.vox b/assets/voxygen/voxel/npc/myrmidon/male/MyrmidonHoplite-5.vox new file mode 100644 index 0000000000..f33aa0ef48 --- /dev/null +++ b/assets/voxygen/voxel/npc/myrmidon/male/MyrmidonHoplite-5.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e3c906a2c6240593003108d6594ec6c3c564bb198009954a840b168518eb5380 +size 1340 diff --git a/assets/voxygen/voxel/npc/myrmidon/male/chest.vox b/assets/voxygen/voxel/npc/myrmidon/male/chest.vox new file mode 100644 index 0000000000..b3a55d706b --- /dev/null +++ b/assets/voxygen/voxel/npc/myrmidon/male/chest.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:586350398255e5e3d7a987b89f583dade64592bacecaea0cd4b21b4255219c30 +size 1900 diff --git a/assets/voxygen/voxel/npc/myrmidon/male/foot_r.vox b/assets/voxygen/voxel/npc/myrmidon/male/foot_r.vox new file mode 100644 index 0000000000..a22d381b03 --- /dev/null +++ b/assets/voxygen/voxel/npc/myrmidon/male/foot_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:40feed9186513be13e5c26346636c68468690f62630d71982cc8d65f3762a126 +size 1236 diff --git a/assets/voxygen/voxel/npc/myrmidon/male/hand_r.vox b/assets/voxygen/voxel/npc/myrmidon/male/hand_r.vox new file mode 100644 index 0000000000..bf25ad8fe8 --- /dev/null +++ b/assets/voxygen/voxel/npc/myrmidon/male/hand_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aba210266ebb33197ed4657417124b5a1908e5dad6bade7cd3d67e7276cdb6ec +size 1316 diff --git a/assets/voxygen/voxel/npc/myrmidon/male/head.vox b/assets/voxygen/voxel/npc/myrmidon/male/head.vox new file mode 100644 index 0000000000..1ab83b7662 --- /dev/null +++ b/assets/voxygen/voxel/npc/myrmidon/male/head.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b86f09f66caacb3c39b7ef876cea97a260e77e34137207b93a36afb412a48333 +size 2312 diff --git a/assets/voxygen/voxel/npc/myrmidon/male/pants.vox b/assets/voxygen/voxel/npc/myrmidon/male/pants.vox new file mode 100644 index 0000000000..720d2e92f8 --- /dev/null +++ b/assets/voxygen/voxel/npc/myrmidon/male/pants.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:68acd47455295149faba0562705a70323e75425ffd3c007c5041595409f8815c +size 1356 diff --git a/assets/voxygen/voxel/npc/myrmidon/male/tail.vox b/assets/voxygen/voxel/npc/myrmidon/male/tail.vox new file mode 100644 index 0000000000..2c09eae063 --- /dev/null +++ b/assets/voxygen/voxel/npc/myrmidon/male/tail.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4283f17d89cc17bce78a261f79ead38232bdb2e81fbe9cb7059dc8967119df1c +size 1408 diff --git a/assets/voxygen/voxel/npc/odonto/male/foot_l.vox b/assets/voxygen/voxel/npc/odonto/male/foot_l.vox deleted file mode 100644 index 42189b7f0b..0000000000 --- a/assets/voxygen/voxel/npc/odonto/male/foot_l.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:4d7e3cab3f2a990ee083b02a292b972844e05124ace87575f72adc6b4c683fcf -size 2952 diff --git a/assets/voxygen/voxel/npc/odonto/male/hand_l.vox b/assets/voxygen/voxel/npc/odonto/male/hand_l.vox deleted file mode 100644 index 4f7f97380c..0000000000 --- a/assets/voxygen/voxel/npc/odonto/male/hand_l.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:6912093b51066d2c34c51fcb3db6ebd90f77090becb2c64e0ef9b1114084471e -size 1228 diff --git a/assets/voxygen/voxel/npc/odonto/male/leg_l.vox b/assets/voxygen/voxel/npc/odonto/male/leg_l.vox deleted file mode 100644 index 3e2578dbc3..0000000000 --- a/assets/voxygen/voxel/npc/odonto/male/leg_l.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5bc3d9f3b008cf8ab7e32a0923a3744c3b7354ef8da305b7d21f6f40601e8d63 -size 2476 diff --git a/assets/voxygen/voxel/npc/owl/female/head.vox b/assets/voxygen/voxel/npc/owl/female/head.vox new file mode 100644 index 0000000000..4cdb7bbfb0 --- /dev/null +++ b/assets/voxygen/voxel/npc/owl/female/head.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8f2bff2796a1ffa725f745ce91d29610a316c420727d1782d408b382be9bf670 +size 2356 diff --git a/assets/voxygen/voxel/npc/owl/female/leg_r.vox b/assets/voxygen/voxel/npc/owl/female/leg_r.vox new file mode 100644 index 0000000000..86934442fb --- /dev/null +++ b/assets/voxygen/voxel/npc/owl/female/leg_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:37e15e29979a22df53d483514de19ee70a10c99f666b5ceca8f1b099369d4d34 +size 1196 diff --git a/assets/voxygen/voxel/npc/owl/female/tail.vox b/assets/voxygen/voxel/npc/owl/female/tail.vox new file mode 100644 index 0000000000..405243c791 --- /dev/null +++ b/assets/voxygen/voxel/npc/owl/female/tail.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f7f190a3e6a8c635f5234f510e1fe59a2471876d4658ef9a2c1dcb7e233e811c +size 1264 diff --git a/assets/voxygen/voxel/npc/owl/female/torso.vox b/assets/voxygen/voxel/npc/owl/female/torso.vox new file mode 100644 index 0000000000..f4c0a0c277 --- /dev/null +++ b/assets/voxygen/voxel/npc/owl/female/torso.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:21e64dbdf9e61833c9babf6f9cc78cbbc60b38a6131f88bed8f374f8f632a12b +size 2244 diff --git a/assets/voxygen/voxel/npc/owl/female/wing_r.vox b/assets/voxygen/voxel/npc/owl/female/wing_r.vox new file mode 100644 index 0000000000..ae2d4bb3d3 --- /dev/null +++ b/assets/voxygen/voxel/npc/owl/female/wing_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:da50d172a4a9cbb96dbc43d5da0984bcd035351ce32401a13663a98f250c81ab +size 1364 diff --git a/assets/voxygen/voxel/npc/snowyowl/male/head.vox b/assets/voxygen/voxel/npc/owl/male/head.vox similarity index 100% rename from assets/voxygen/voxel/npc/snowyowl/male/head.vox rename to assets/voxygen/voxel/npc/owl/male/head.vox diff --git a/assets/voxygen/voxel/npc/snowyowl/male/leg_r.vox b/assets/voxygen/voxel/npc/owl/male/leg_r.vox similarity index 100% rename from assets/voxygen/voxel/npc/snowyowl/male/leg_r.vox rename to assets/voxygen/voxel/npc/owl/male/leg_r.vox diff --git a/assets/voxygen/voxel/npc/snowyowl/male/tail.vox b/assets/voxygen/voxel/npc/owl/male/tail.vox similarity index 100% rename from assets/voxygen/voxel/npc/snowyowl/male/tail.vox rename to assets/voxygen/voxel/npc/owl/male/tail.vox diff --git a/assets/voxygen/voxel/npc/snowyowl/male/torso.vox b/assets/voxygen/voxel/npc/owl/male/torso.vox similarity index 100% rename from assets/voxygen/voxel/npc/snowyowl/male/torso.vox rename to assets/voxygen/voxel/npc/owl/male/torso.vox diff --git a/assets/voxygen/voxel/npc/snowyowl/male/wing_r.vox b/assets/voxygen/voxel/npc/owl/male/wing_r.vox similarity index 100% rename from assets/voxygen/voxel/npc/snowyowl/male/wing_r.vox rename to assets/voxygen/voxel/npc/owl/male/wing_r.vox diff --git a/assets/voxygen/voxel/npc/panda/male/ears.vox b/assets/voxygen/voxel/npc/panda/male/ears.vox new file mode 100644 index 0000000000..0df4b389d0 --- /dev/null +++ b/assets/voxygen/voxel/npc/panda/male/ears.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9d9ec2db95f6f2b9299fc8f56e7e32486f0b98dc55fd00414e35030d6b84cfda +size 1176 diff --git a/assets/voxygen/voxel/npc/panda/male/foot_br.vox b/assets/voxygen/voxel/npc/panda/male/foot_br.vox new file mode 100644 index 0000000000..79a36ddf82 --- /dev/null +++ b/assets/voxygen/voxel/npc/panda/male/foot_br.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6adf41bd3cd6a66cd973241b72b2b3b51e1b76f101a81ccb5c5eff9d8fe48863 +size 1600 diff --git a/assets/voxygen/voxel/npc/panda/male/foot_fr.vox b/assets/voxygen/voxel/npc/panda/male/foot_fr.vox new file mode 100644 index 0000000000..4d992eaf97 --- /dev/null +++ b/assets/voxygen/voxel/npc/panda/male/foot_fr.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:172abed800cea878e4edb20dbb799c3cc0fefe43277f8be14b7bef09e3d107f8 +size 1704 diff --git a/assets/voxygen/voxel/npc/panda/male/head.vox b/assets/voxygen/voxel/npc/panda/male/head.vox new file mode 100644 index 0000000000..8da5d392ba --- /dev/null +++ b/assets/voxygen/voxel/npc/panda/male/head.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8b360b44a16448891492229b2344524e297e959f25d554ed6ee759bf2649f3ad +size 3024 diff --git a/assets/voxygen/voxel/npc/panda/male/jaw.vox b/assets/voxygen/voxel/npc/panda/male/jaw.vox new file mode 100644 index 0000000000..ac30435a03 --- /dev/null +++ b/assets/voxygen/voxel/npc/panda/male/jaw.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7fed05a7a56faab08d1d67c89306affbd51f6b31a0cef06ba3f8ee56db9dad0b +size 1212 diff --git a/assets/voxygen/voxel/npc/panda/male/leg_br.vox b/assets/voxygen/voxel/npc/panda/male/leg_br.vox new file mode 100644 index 0000000000..81231d2c8b --- /dev/null +++ b/assets/voxygen/voxel/npc/panda/male/leg_br.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4a65854428c017054ccc1ea9901b96edb89fb79bd626b7591f1f2b35c760aac9 +size 1852 diff --git a/assets/voxygen/voxel/npc/panda/male/leg_fr.vox b/assets/voxygen/voxel/npc/panda/male/leg_fr.vox new file mode 100644 index 0000000000..665cea65d3 --- /dev/null +++ b/assets/voxygen/voxel/npc/panda/male/leg_fr.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e6a4639292cc5251f19bf43dd19bd21c4816e2160296a9f33ba78a62f2b6c1d1 +size 1760 diff --git a/assets/voxygen/voxel/npc/panda/male/neck.vox b/assets/voxygen/voxel/npc/panda/male/neck.vox new file mode 100644 index 0000000000..1a656cdba5 --- /dev/null +++ b/assets/voxygen/voxel/npc/panda/male/neck.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:515a91c893f32427e5080dc1b05f7fe66ba5dbb97d7f2ed779274b1fa68c2d49 +size 2120 diff --git a/assets/voxygen/voxel/npc/panda/male/tail.vox b/assets/voxygen/voxel/npc/panda/male/tail.vox new file mode 100644 index 0000000000..ca9ea290e1 --- /dev/null +++ b/assets/voxygen/voxel/npc/panda/male/tail.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a577050f80d243a0cdd483a667299ec84fc39cf49fde76287a036765c2379ade +size 1336 diff --git a/assets/voxygen/voxel/npc/panda/male/torso_back.vox b/assets/voxygen/voxel/npc/panda/male/torso_back.vox new file mode 100644 index 0000000000..013f824e84 --- /dev/null +++ b/assets/voxygen/voxel/npc/panda/male/torso_back.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6293227fb4b9bc19a5d71dc182b411e8a49672b135b7f3fbd185a5aa10816705 +size 7940 diff --git a/assets/voxygen/voxel/npc/panda/male/torso_front.vox b/assets/voxygen/voxel/npc/panda/male/torso_front.vox new file mode 100644 index 0000000000..d239c5fea7 --- /dev/null +++ b/assets/voxygen/voxel/npc/panda/male/torso_front.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:339be526fda035d26c1701a7a69ca845dafa2d5a9ecbc6ae9ddca1c8f19392ec +size 7600 diff --git a/assets/voxygen/voxel/npc/pangolin/male/foot_bl.vox b/assets/voxygen/voxel/npc/pangolin/male/foot_bl.vox deleted file mode 100644 index c681fcb79a..0000000000 --- a/assets/voxygen/voxel/npc/pangolin/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:23d913c7362393ce0e7a4f430fd3119e2c28382131fcfc414c980f0336a20a4b -size 1304 diff --git a/assets/voxygen/voxel/npc/pangolin/male/foot_fl.vox b/assets/voxygen/voxel/npc/pangolin/male/foot_fl.vox deleted file mode 100644 index bb5ea8f938..0000000000 --- a/assets/voxygen/voxel/npc/pangolin/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:9866eca621da6b6ee3c90d57d3bdae7fca62d6660fea73ddb6414ab1ed1bac7f -size 1252 diff --git a/assets/voxygen/voxel/npc/parrot/male/leg_l.vox b/assets/voxygen/voxel/npc/parrot/male/leg_l.vox deleted file mode 100644 index 62494431ad..0000000000 --- a/assets/voxygen/voxel/npc/parrot/male/leg_l.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f14c1d4f83db3461e7a77c53b632e05fbfd251c8683db7731107f190a1487362 -size 1116 diff --git a/assets/voxygen/voxel/npc/peacock/female/leg_l.vox b/assets/voxygen/voxel/npc/peacock/female/leg_l.vox deleted file mode 100644 index 197007765d..0000000000 --- a/assets/voxygen/voxel/npc/peacock/female/leg_l.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:65324a119fffd476420a60c1d93bc570536d86e219d2344bafe558d5a3e2d989 -size 1140 diff --git a/assets/voxygen/voxel/npc/peacock/female/wing_l.vox b/assets/voxygen/voxel/npc/peacock/female/wing_l.vox deleted file mode 100644 index 78e4854d28..0000000000 --- a/assets/voxygen/voxel/npc/peacock/female/wing_l.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:26b84917a45068aca9c8cd63e435dc4f050ae9464e9553741c92758764baeabe -size 1236 diff --git a/assets/voxygen/voxel/npc/peacock/male/leg_l.vox b/assets/voxygen/voxel/npc/peacock/male/leg_l.vox deleted file mode 100644 index 197007765d..0000000000 --- a/assets/voxygen/voxel/npc/peacock/male/leg_l.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:65324a119fffd476420a60c1d93bc570536d86e219d2344bafe558d5a3e2d989 -size 1140 diff --git a/assets/voxygen/voxel/npc/peacock/male/wing_l.vox b/assets/voxygen/voxel/npc/peacock/male/wing_l.vox deleted file mode 100644 index 38d478e204..0000000000 --- a/assets/voxygen/voxel/npc/peacock/male/wing_l.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:cabee12279731078145b3b3329da1f592401c6eb720fcc58caef9fd09a0c0bd8 -size 1236 diff --git a/assets/voxygen/voxel/npc/pig/male/foot_bl.vox b/assets/voxygen/voxel/npc/pig/male/foot_bl.vox deleted file mode 100644 index 8aba943b41..0000000000 --- a/assets/voxygen/voxel/npc/pig/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a8538576cb07634d5b65d1770c964aedd44f308503b26c60e74f42a74e10d2a1 -size 1240 diff --git a/assets/voxygen/voxel/npc/pig/male/foot_fl.vox b/assets/voxygen/voxel/npc/pig/male/foot_fl.vox deleted file mode 100644 index cf95caec8f..0000000000 --- a/assets/voxygen/voxel/npc/pig/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e3ec823e5b628dabf27526524603feb436fe7b8123b5c8aee540dae984f5bb44 -size 1196 diff --git a/assets/voxygen/voxel/npc/piranha/male/chest.vox b/assets/voxygen/voxel/npc/piranha/male/chest.vox new file mode 100644 index 0000000000..fa4a2ca4cf --- /dev/null +++ b/assets/voxygen/voxel/npc/piranha/male/chest.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a2ff496a396db0b9a079bbc9788efd65a5c89b29e0a75a0ea7a41ba577055e2e +size 1948 diff --git a/assets/voxygen/voxel/npc/piranha/male/fin.vox b/assets/voxygen/voxel/npc/piranha/male/fin.vox new file mode 100644 index 0000000000..c379d73970 --- /dev/null +++ b/assets/voxygen/voxel/npc/piranha/male/fin.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5fd2c269ba5b0f243b4826158dba749b94985b739ff5f55d505c4b2e9d539938 +size 1136 diff --git a/assets/voxygen/voxel/npc/piranha/male/tail.vox b/assets/voxygen/voxel/npc/piranha/male/tail.vox new file mode 100644 index 0000000000..fc95c03b14 --- /dev/null +++ b/assets/voxygen/voxel/npc/piranha/male/tail.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9d36c1ec0aa899ffdfddfb33a85ceb49a90276fbe7679bbadc6e0cab434ff57d +size 1184 diff --git a/assets/voxygen/voxel/npc/porcupine/male/foot_bl.vox b/assets/voxygen/voxel/npc/porcupine/male/foot_bl.vox deleted file mode 100644 index 3267ff5831..0000000000 --- a/assets/voxygen/voxel/npc/porcupine/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a44ef9ce3bf3d4569165abf5d4e99be8329be52cef7b199be7313cc851a3d9c2 -size 1384 diff --git a/assets/voxygen/voxel/npc/porcupine/male/foot_fl.vox b/assets/voxygen/voxel/npc/porcupine/male/foot_fl.vox deleted file mode 100644 index 7d24707fc7..0000000000 --- a/assets/voxygen/voxel/npc/porcupine/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:22c25095db066285c8b55a0038f1e8c280df22198b6ad5577791518af4d7374a -size 1308 diff --git a/assets/voxygen/voxel/npc/quokka/male/foot_bl.vox b/assets/voxygen/voxel/npc/quokka/male/foot_bl.vox deleted file mode 100644 index a354da08aa..0000000000 --- a/assets/voxygen/voxel/npc/quokka/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:36b6413c289b05d9507645f4cbd1da124dbd41411d67ecb808e123944756c2fa -size 1260 diff --git a/assets/voxygen/voxel/npc/quokka/male/foot_fl.vox b/assets/voxygen/voxel/npc/quokka/male/foot_fl.vox deleted file mode 100644 index 1881d416c7..0000000000 --- a/assets/voxygen/voxel/npc/quokka/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:d122132ae892a25c2592460832272afe139f237774b1baeadf1fb62f96a33da6 -size 1204 diff --git a/assets/voxygen/voxel/npc/rabbit/male/foot_bl.vox b/assets/voxygen/voxel/npc/rabbit/male/foot_bl.vox deleted file mode 100644 index 868c822d9b..0000000000 --- a/assets/voxygen/voxel/npc/rabbit/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b5f985c6875dee0144b547f7448a6cdc111332a1d260f597e71f3b627359e3a5 -size 1208 diff --git a/assets/voxygen/voxel/npc/rabbit/male/foot_fl.vox b/assets/voxygen/voxel/npc/rabbit/male/foot_fl.vox deleted file mode 100644 index 0de756b69f..0000000000 --- a/assets/voxygen/voxel/npc/rabbit/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:d91b461f9623b85a98e37bb327700b932dfa5cff077f7705017ee4b1ee4f90fa -size 1148 diff --git a/assets/voxygen/voxel/npc/raccoon/male/foot_bl.vox b/assets/voxygen/voxel/npc/raccoon/male/foot_bl.vox deleted file mode 100644 index 22258dac64..0000000000 --- a/assets/voxygen/voxel/npc/raccoon/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:96aaa0de2bc320f2f1208111e115bd88b52147d87daeb558eafd0b7b0e9fdcdf -size 1420 diff --git a/assets/voxygen/voxel/npc/raccoon/male/foot_fl.vox b/assets/voxygen/voxel/npc/raccoon/male/foot_fl.vox deleted file mode 100644 index 81e6c8c86b..0000000000 --- a/assets/voxygen/voxel/npc/raccoon/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c6d0e52becc669f11c2e4287f6e770c89a7062698842f68e42a72b14f9d5a894 -size 1240 diff --git a/assets/voxygen/voxel/npc/raptor_sand/male/foot_l.vox b/assets/voxygen/voxel/npc/raptor_sand/male/foot_l.vox deleted file mode 100644 index 9793ed6f7f..0000000000 --- a/assets/voxygen/voxel/npc/raptor_sand/male/foot_l.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:401b25db996711a53e317de4b4c826161b039891c4537567f73eb6344826a0b3 -size 1384 diff --git a/assets/voxygen/voxel/npc/raptor_sand/male/hand_l.vox b/assets/voxygen/voxel/npc/raptor_sand/male/hand_l.vox deleted file mode 100644 index 00dabd0391..0000000000 --- a/assets/voxygen/voxel/npc/raptor_sand/male/hand_l.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:7c9d723da56499441bbd1ffc34aacbbb098eb64f0c30d7726bb5585cdb7d8fb2 -size 1672 diff --git a/assets/voxygen/voxel/npc/raptor_sand/male/leg_l.vox b/assets/voxygen/voxel/npc/raptor_sand/male/leg_l.vox deleted file mode 100644 index 304654e5a1..0000000000 --- a/assets/voxygen/voxel/npc/raptor_sand/male/leg_l.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a5f71ae7fa186a44d29b1f4124e275c3129038dc2331a359b6b8358c5f6d302d -size 1628 diff --git a/assets/voxygen/voxel/npc/raptor_snow/male/foot_l.vox b/assets/voxygen/voxel/npc/raptor_snow/male/foot_l.vox deleted file mode 100644 index b682cfcd61..0000000000 --- a/assets/voxygen/voxel/npc/raptor_snow/male/foot_l.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:78ccec8653b8d2db97c4ec6e26b1604c56ca9026f78a8bbbb9d06f7121d46cc7 -size 1384 diff --git a/assets/voxygen/voxel/npc/raptor_snow/male/hand_l.vox b/assets/voxygen/voxel/npc/raptor_snow/male/hand_l.vox deleted file mode 100644 index 5db6026e79..0000000000 --- a/assets/voxygen/voxel/npc/raptor_snow/male/hand_l.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:845b0571f3abec22bc6f889219d7bec4e8b387bfabaa90671a70b4446be7ed67 -size 1616 diff --git a/assets/voxygen/voxel/npc/raptor_snow/male/leg_l.vox b/assets/voxygen/voxel/npc/raptor_snow/male/leg_l.vox deleted file mode 100644 index 87ab3259b7..0000000000 --- a/assets/voxygen/voxel/npc/raptor_snow/male/leg_l.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f55f9e47c979e117906eb20ba106e834741dbfc4abf53c2c7b2f7656db03d119 -size 1628 diff --git a/assets/voxygen/voxel/npc/raptor_wood/male/foot_l.vox b/assets/voxygen/voxel/npc/raptor_wood/male/foot_l.vox deleted file mode 100644 index 84f4aee9ca..0000000000 --- a/assets/voxygen/voxel/npc/raptor_wood/male/foot_l.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:6b0c11647abe410acca2b9c50ae7bf5d82517b4e52bec385f461fb3a9bb5f0ab -size 1384 diff --git a/assets/voxygen/voxel/npc/raptor_wood/male/hand_l.vox b/assets/voxygen/voxel/npc/raptor_wood/male/hand_l.vox deleted file mode 100644 index ffbc71f066..0000000000 --- a/assets/voxygen/voxel/npc/raptor_wood/male/hand_l.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:076891fc33970341d6b6c3a7f2d12e2f9bc2a1d04c9e7ffd44d02d5a731b24c2 -size 1684 diff --git a/assets/voxygen/voxel/npc/raptor_wood/male/leg_l.vox b/assets/voxygen/voxel/npc/raptor_wood/male/leg_l.vox deleted file mode 100644 index b571b8c8a2..0000000000 --- a/assets/voxygen/voxel/npc/raptor_wood/male/leg_l.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ac1b149c2212a37b7640697ec764397adabd5bc6ed4c67a4611ee6550805b359 -size 1628 diff --git a/assets/voxygen/voxel/npc/rat/male/foot_bl.vox b/assets/voxygen/voxel/npc/rat/male/foot_bl.vox deleted file mode 100644 index d5af76f775..0000000000 --- a/assets/voxygen/voxel/npc/rat/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ceb18e0a3e013afe4075785a839ed914c4755e81a16bed46c01d827868ab1252 -size 1252 diff --git a/assets/voxygen/voxel/npc/rat/male/foot_fl.vox b/assets/voxygen/voxel/npc/rat/male/foot_fl.vox deleted file mode 100644 index 14424ecf37..0000000000 --- a/assets/voxygen/voxel/npc/rat/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f9e15fb7b2dc36448630f58dd4ac9b28915333c00ead3e725c96cf74c0d4ea92 -size 1212 diff --git a/assets/voxygen/voxel/npc/rocksnapper/male/foot_bl.vox b/assets/voxygen/voxel/npc/rocksnapper/male/foot_bl.vox deleted file mode 100644 index fbc3ffa8ac..0000000000 --- a/assets/voxygen/voxel/npc/rocksnapper/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:2b76da17922521b88b4e6463483e1185deb638b0080ea826fc732f70663abccb -size 2124 diff --git a/assets/voxygen/voxel/npc/rocksnapper/male/foot_fl.vox b/assets/voxygen/voxel/npc/rocksnapper/male/foot_fl.vox deleted file mode 100644 index dd9d49fd72..0000000000 --- a/assets/voxygen/voxel/npc/rocksnapper/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ab0993f5cf7c4e41eb8a65555f31b3a9f7c37ac6c13877f37ff150c8f6939049 -size 2188 diff --git a/assets/voxygen/voxel/npc/roshwalr/male/foot_bl.vox b/assets/voxygen/voxel/npc/roshwalr/male/foot_bl.vox deleted file mode 100644 index dad2923541..0000000000 --- a/assets/voxygen/voxel/npc/roshwalr/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:2b6ec025d3fe5b356d4b1244e2e11bdce0d28598423e19c199359235be320715 -size 1352 diff --git a/assets/voxygen/voxel/npc/roshwalr/male/foot_fl.vox b/assets/voxygen/voxel/npc/roshwalr/male/foot_fl.vox deleted file mode 100644 index 5576d15cb1..0000000000 --- a/assets/voxygen/voxel/npc/roshwalr/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:0debc71fb3781b4416a66d90ef50e035679ed3da7bdf8853c2dd1aec593e41e1 -size 1976 diff --git a/assets/voxygen/voxel/npc/roshwalr/male/leg_bl.vox b/assets/voxygen/voxel/npc/roshwalr/male/leg_bl.vox deleted file mode 100644 index b802e56845..0000000000 --- a/assets/voxygen/voxel/npc/roshwalr/male/leg_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:8da6fccc0a8c6aca170e15cdab4373718190dc0042bc4e1a7a78ee5733146cc2 -size 1544 diff --git a/assets/voxygen/voxel/npc/roshwalr/male/leg_fl.vox b/assets/voxygen/voxel/npc/roshwalr/male/leg_fl.vox deleted file mode 100644 index 32b7c6e927..0000000000 --- a/assets/voxygen/voxel/npc/roshwalr/male/leg_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:8d09f92335fe7bf28610fff496a5f8efff23e511709dffb8edef2f1d92023e86 -size 2452 diff --git a/assets/voxygen/voxel/npc/saber/male/foot_bl.vox b/assets/voxygen/voxel/npc/saber/male/foot_bl.vox deleted file mode 100644 index 7841a6a211..0000000000 --- a/assets/voxygen/voxel/npc/saber/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:03ea4bdb9b2acf701f00a8ac82c8ba0ca62d4008a50e8cac1866545dff9059fa -size 1452 diff --git a/assets/voxygen/voxel/npc/saber/male/foot_fl.vox b/assets/voxygen/voxel/npc/saber/male/foot_fl.vox deleted file mode 100644 index 7b01313b86..0000000000 --- a/assets/voxygen/voxel/npc/saber/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:3015d3902be6a98c1e5944e48458a501606be91d01bad290d77c2db3fd4586e6 -size 1528 diff --git a/assets/voxygen/voxel/npc/saber/male/leg_bl.vox b/assets/voxygen/voxel/npc/saber/male/leg_bl.vox deleted file mode 100644 index 2cc2d22c82..0000000000 --- a/assets/voxygen/voxel/npc/saber/male/leg_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:9a1de9b89344e94ae4f297f0eaea3782ca7f16dd92b3f44d3658b4bf0645c74b -size 1480 diff --git a/assets/voxygen/voxel/npc/saber/male/leg_fl.vox b/assets/voxygen/voxel/npc/saber/male/leg_fl.vox deleted file mode 100644 index ccea774556..0000000000 --- a/assets/voxygen/voxel/npc/saber/male/leg_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a5e8719eed21c2cf8b6e6160a1a7321300c45c74ef9118c6d3a4165929a18818 -size 1616 diff --git a/assets/voxygen/voxel/npc/sahagin/male/chest.vox b/assets/voxygen/voxel/npc/sahagin/male/chest.vox new file mode 100644 index 0000000000..357523d8bd --- /dev/null +++ b/assets/voxygen/voxel/npc/sahagin/male/chest.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bc352e09cf8794c2bba919f140cca1f7cca2711185007967f7f0be15edc064d3 +size 2940 diff --git a/assets/voxygen/voxel/npc/sahagin/male/foot_r.vox b/assets/voxygen/voxel/npc/sahagin/male/foot_r.vox new file mode 100644 index 0000000000..6e7a0d105a --- /dev/null +++ b/assets/voxygen/voxel/npc/sahagin/male/foot_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:26c13cb8d7bfaa16392289306c9d756478842deb9a697f883162fc4a484738bb +size 1308 diff --git a/assets/voxygen/voxel/npc/sahagin/male/hand_r.vox b/assets/voxygen/voxel/npc/sahagin/male/hand_r.vox new file mode 100644 index 0000000000..143f5acd6d --- /dev/null +++ b/assets/voxygen/voxel/npc/sahagin/male/hand_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1467f658d9b07186a84b87a3a165653d8fc1f898fa28f4ee8582c25935df4a73 +size 1476 diff --git a/assets/voxygen/voxel/npc/sahagin/male/head.vox b/assets/voxygen/voxel/npc/sahagin/male/head.vox new file mode 100644 index 0000000000..505ea421b7 --- /dev/null +++ b/assets/voxygen/voxel/npc/sahagin/male/head.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aad1c94c98c966d2c419dcda9b1bd071e678e3c6ad18e9f0772c08672846d14c +size 1880 diff --git a/assets/voxygen/voxel/npc/sahagin/male/pants.vox b/assets/voxygen/voxel/npc/sahagin/male/pants.vox new file mode 100644 index 0000000000..a48214f36f --- /dev/null +++ b/assets/voxygen/voxel/npc/sahagin/male/pants.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5720aee2e2d8cd40f6cd3014cd557f02f6050fbad180288f4088fe1aa62f9643 +size 1432 diff --git a/assets/voxygen/voxel/npc/sahagin/male/tail.vox b/assets/voxygen/voxel/npc/sahagin/male/tail.vox new file mode 100644 index 0000000000..882c6aed76 --- /dev/null +++ b/assets/voxygen/voxel/npc/sahagin/male/tail.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d6de1a8e65358dc9787a3c5b73cebf42f30abaf540f8e54eb5cde03eab48b90b +size 1400 diff --git a/assets/voxygen/voxel/npc/salamander/female/foot_bl.vox b/assets/voxygen/voxel/npc/salamander/female/foot_bl.vox deleted file mode 100644 index bafd43bd57..0000000000 --- a/assets/voxygen/voxel/npc/salamander/female/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:6efcf8a7c173bae183d1a961ad2f531af6cf9a9484bfa3733edd8a0a2cd7860d -size 1260 diff --git a/assets/voxygen/voxel/npc/salamander/female/foot_fl.vox b/assets/voxygen/voxel/npc/salamander/female/foot_fl.vox deleted file mode 100644 index 36894359b0..0000000000 --- a/assets/voxygen/voxel/npc/salamander/female/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:62a30c1511242da54c436fb2feeee2eb990582e79dc8702b9ec1573d1fc20402 -size 1268 diff --git a/assets/voxygen/voxel/npc/salamander/male/foot_bl.vox b/assets/voxygen/voxel/npc/salamander/male/foot_bl.vox deleted file mode 100644 index 5100dd6fd3..0000000000 --- a/assets/voxygen/voxel/npc/salamander/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b18dea4f5f7c05b6d66b35e51d0fd1696e86b8d81ba800b82faa3531bbf1994d -size 1244 diff --git a/assets/voxygen/voxel/npc/salamander/male/foot_fl.vox b/assets/voxygen/voxel/npc/salamander/male/foot_fl.vox deleted file mode 100644 index b747f98131..0000000000 --- a/assets/voxygen/voxel/npc/salamander/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:d2108ecaae55bd50e08892ad54311d4931d660024f9492aa919af5e0419dd8d6 -size 1268 diff --git a/assets/voxygen/voxel/npc/sandshark/male/foot_bl.vox b/assets/voxygen/voxel/npc/sandshark/male/foot_bl.vox deleted file mode 100644 index 79afa364f5..0000000000 --- a/assets/voxygen/voxel/npc/sandshark/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f3e556f98a0706af06aef45e34d3f8772a7acb6dd2720fe789e674a19fcda80f -size 2072 diff --git a/assets/voxygen/voxel/npc/sandshark/male/foot_fl.vox b/assets/voxygen/voxel/npc/sandshark/male/foot_fl.vox deleted file mode 100644 index 7fd75deca1..0000000000 --- a/assets/voxygen/voxel/npc/sandshark/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:08578696d830ef319872948760193d1e97799b9a7f5fedc9a2b2b7c30632b3b9 -size 3524 diff --git a/assets/voxygen/voxel/npc/sheep/female/foot_bl.vox b/assets/voxygen/voxel/npc/sheep/female/foot_bl.vox deleted file mode 100644 index abc6a06dfc..0000000000 --- a/assets/voxygen/voxel/npc/sheep/female/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e88930cefb61d3624440c81fb610f112cdd0266978a7dc2ddb5c37bad3030924 -size 1232 diff --git a/assets/voxygen/voxel/npc/sheep/female/foot_fl.vox b/assets/voxygen/voxel/npc/sheep/female/foot_fl.vox deleted file mode 100644 index 9d5376fbea..0000000000 --- a/assets/voxygen/voxel/npc/sheep/female/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c20c088b32b90d5ec41f95f16b032665d0cdaf11e5f1df60d3dde90b81ff2a1c -size 1208 diff --git a/assets/voxygen/voxel/npc/sheep/male/foot_bl.vox b/assets/voxygen/voxel/npc/sheep/male/foot_bl.vox deleted file mode 100644 index abc6a06dfc..0000000000 --- a/assets/voxygen/voxel/npc/sheep/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e88930cefb61d3624440c81fb610f112cdd0266978a7dc2ddb5c37bad3030924 -size 1232 diff --git a/assets/voxygen/voxel/npc/sheep/male/foot_fl.vox b/assets/voxygen/voxel/npc/sheep/male/foot_fl.vox deleted file mode 100644 index b099eb9af4..0000000000 --- a/assets/voxygen/voxel/npc/sheep/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c98e924793aebb7dbddcf621009903c6fc2cf875c840b187bfb6d62b4f8462c0 -size 1208 diff --git a/assets/voxygen/voxel/npc/skunk/male/foot_bl.vox b/assets/voxygen/voxel/npc/skunk/male/foot_bl.vox deleted file mode 100644 index bf6f2ae841..0000000000 --- a/assets/voxygen/voxel/npc/skunk/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:189a1dfccfe94573c1ac6d9e6948bc2b399f9d48fee2b4510f852f692cde5eb9 -size 1272 diff --git a/assets/voxygen/voxel/npc/skunk/male/foot_fl.vox b/assets/voxygen/voxel/npc/skunk/male/foot_fl.vox deleted file mode 100644 index 84e7815f4b..0000000000 --- a/assets/voxygen/voxel/npc/skunk/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:dfac9a2796b701c728ecf70500d524ebcc6c13e03b4e0057fa1c4c5eb3bd3e9b -size 1196 diff --git a/assets/voxygen/voxel/npc/snowyowl/male/leg_l.vox b/assets/voxygen/voxel/npc/snowyowl/male/leg_l.vox deleted file mode 100644 index cabeb0a0ed..0000000000 --- a/assets/voxygen/voxel/npc/snowyowl/male/leg_l.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:d2efdd54f19e4467e781c3068ef3079f11cf7932076bb4f2d554044106e97bf1 -size 1196 diff --git a/assets/voxygen/voxel/npc/snowyowl/male/wing_l.vox b/assets/voxygen/voxel/npc/snowyowl/male/wing_l.vox deleted file mode 100644 index 353efa5c63..0000000000 --- a/assets/voxygen/voxel/npc/snowyowl/male/wing_l.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5e52d0f4ede8e25c98eff9ce8692f44d466205faea7b01a11395eb31426ad914 -size 1360 diff --git a/assets/voxygen/voxel/npc/squirrel/male/foot_bl.vox b/assets/voxygen/voxel/npc/squirrel/male/foot_bl.vox deleted file mode 100644 index e182b859ec..0000000000 --- a/assets/voxygen/voxel/npc/squirrel/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:d7d463014e1c784e08624a38258cb2774fbad71eb614a68bc98b03625b06fb49 -size 1228 diff --git a/assets/voxygen/voxel/npc/squirrel/male/foot_fl.vox b/assets/voxygen/voxel/npc/squirrel/male/foot_fl.vox deleted file mode 100644 index 525b66ba8c..0000000000 --- a/assets/voxygen/voxel/npc/squirrel/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c7c52ef287399626b4d05e8f87e852d6676fafb1a7b672f6b2dfcadc015f7a76 -size 1164 diff --git a/assets/voxygen/voxel/npc/sunlizard/male/chest_back.vox b/assets/voxygen/voxel/npc/sunlizard/male/chest_back.vox new file mode 100644 index 0000000000..b2a620593d --- /dev/null +++ b/assets/voxygen/voxel/npc/sunlizard/male/chest_back.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bb218b5541feddcd0943542995f8684298e25eab64efc27f47d6f89d55c10fe9 +size 2316 diff --git a/assets/voxygen/voxel/npc/sunlizard/male/chest_front.vox b/assets/voxygen/voxel/npc/sunlizard/male/chest_front.vox new file mode 100644 index 0000000000..4f8ed6c34c --- /dev/null +++ b/assets/voxygen/voxel/npc/sunlizard/male/chest_front.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ef55205dc956dabdfc66740c6c89f9390a8929184e44ba7a7765525663a28692 +size 1784 diff --git a/assets/voxygen/voxel/npc/sunlizard/male/foot_r.vox b/assets/voxygen/voxel/npc/sunlizard/male/foot_r.vox new file mode 100644 index 0000000000..657df4c5ce --- /dev/null +++ b/assets/voxygen/voxel/npc/sunlizard/male/foot_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5a78b69dfca6492afbd5f30eb408c51567dfb14100b9cb63a9a47bb6717c98f7 +size 1276 diff --git a/assets/voxygen/voxel/npc/sunlizard/male/hand_r.vox b/assets/voxygen/voxel/npc/sunlizard/male/hand_r.vox new file mode 100644 index 0000000000..5b6a22e735 --- /dev/null +++ b/assets/voxygen/voxel/npc/sunlizard/male/hand_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:574f1d1598b12780a16154d3b12b6b50f056cfbeeb51d4b4bcfe3a02c362f786 +size 1228 diff --git a/assets/voxygen/voxel/npc/sunlizard/male/head.vox b/assets/voxygen/voxel/npc/sunlizard/male/head.vox new file mode 100644 index 0000000000..d47e33d01a --- /dev/null +++ b/assets/voxygen/voxel/npc/sunlizard/male/head.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:90545e06e5d28f7edca9fac8b25378ca5628a1b0518510ce870b4695079095dd +size 2764 diff --git a/assets/voxygen/voxel/npc/sunlizard/male/jaw.vox b/assets/voxygen/voxel/npc/sunlizard/male/jaw.vox new file mode 100644 index 0000000000..dd51d3b64c --- /dev/null +++ b/assets/voxygen/voxel/npc/sunlizard/male/jaw.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:60ed220b4cf22cfab7cd3ab9577162a0921c4eac4f08a40d0aa7defd04de3b37 +size 1260 diff --git a/assets/voxygen/voxel/npc/sunlizard/male/leg_r.vox b/assets/voxygen/voxel/npc/sunlizard/male/leg_r.vox new file mode 100644 index 0000000000..1b59ffe4d5 --- /dev/null +++ b/assets/voxygen/voxel/npc/sunlizard/male/leg_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dff4fde9b88060412c5d47b7fcb42480d17e68105c2846571b419566ea789aa9 +size 1364 diff --git a/assets/voxygen/voxel/npc/sunlizard/male/neck.vox b/assets/voxygen/voxel/npc/sunlizard/male/neck.vox new file mode 100644 index 0000000000..a5599ab695 --- /dev/null +++ b/assets/voxygen/voxel/npc/sunlizard/male/neck.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bc3fd83da4b47520c17f4f5a5a79314e71a8bd20d29f70049609b6aed0e47744 +size 1356 diff --git a/assets/voxygen/voxel/npc/sunlizard/male/tail_back.vox b/assets/voxygen/voxel/npc/sunlizard/male/tail_back.vox new file mode 100644 index 0000000000..bf27de199d --- /dev/null +++ b/assets/voxygen/voxel/npc/sunlizard/male/tail_back.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f9299380e75a045d15e9c4891544efe55b8b28e8e575a812fe3c42dbbe896c8f +size 1440 diff --git a/assets/voxygen/voxel/npc/sunlizard/male/tail_front.vox b/assets/voxygen/voxel/npc/sunlizard/male/tail_front.vox new file mode 100644 index 0000000000..be8d0ca51e --- /dev/null +++ b/assets/voxygen/voxel/npc/sunlizard/male/tail_front.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:59ce56366b74ffc521d022fe2ebbb5093eaf7c4dea293702ae92b8a7f9e8773f +size 1416 diff --git a/assets/voxygen/voxel/npc/tarasque/male/foot_bl.vox b/assets/voxygen/voxel/npc/tarasque/male/foot_bl.vox deleted file mode 100644 index 41d336a4fd..0000000000 --- a/assets/voxygen/voxel/npc/tarasque/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:3e32a63994772887e04fcec4b2a5a740f6e693a0a839db6d8fe965a084b01bae -size 1508 diff --git a/assets/voxygen/voxel/npc/tarasque/male/foot_fl.vox b/assets/voxygen/voxel/npc/tarasque/male/foot_fl.vox deleted file mode 100644 index b2b398b65f..0000000000 --- a/assets/voxygen/voxel/npc/tarasque/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:3743dc2d66d4e16e38b221367828e72fc1ac76374bff22dbf99efd2e1744e1ca -size 2180 diff --git a/assets/voxygen/voxel/npc/tarasque/male/leg_bl.vox b/assets/voxygen/voxel/npc/tarasque/male/leg_bl.vox deleted file mode 100644 index eea8945035..0000000000 --- a/assets/voxygen/voxel/npc/tarasque/male/leg_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:6b90c1b66254e58a2998cc44ba649f84d739804fb0a845793f5552d6b21f1a7c -size 1620 diff --git a/assets/voxygen/voxel/npc/tarasque/male/leg_fl.vox b/assets/voxygen/voxel/npc/tarasque/male/leg_fl.vox deleted file mode 100644 index a7921f77c1..0000000000 --- a/assets/voxygen/voxel/npc/tarasque/male/leg_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:04a2e59e1c6aed3bcbbba47c054fa8ec5087457c7a71c3980ed1668932a8b620 -size 2068 diff --git a/assets/voxygen/voxel/npc/tidalwarrior/male/foot_l.vox b/assets/voxygen/voxel/npc/tidalwarrior/male/foot_l.vox new file mode 100644 index 0000000000..b1c401c08b --- /dev/null +++ b/assets/voxygen/voxel/npc/tidalwarrior/male/foot_l.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:12f5b4f4bf4d9262add8a193127385d65b71778ba3c1f5591dbd1eaf0280a76c +size 1596 diff --git a/assets/voxygen/voxel/npc/tidalwarrior/male/foot_r.vox b/assets/voxygen/voxel/npc/tidalwarrior/male/foot_r.vox new file mode 100644 index 0000000000..d6095970a2 --- /dev/null +++ b/assets/voxygen/voxel/npc/tidalwarrior/male/foot_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:df24149d1597ced0905f0a371d7b09d6434f79663d137e0f7c019ffea4a13d12 +size 1596 diff --git a/assets/voxygen/voxel/npc/tidalwarrior/male/hand_l.vox b/assets/voxygen/voxel/npc/tidalwarrior/male/hand_l.vox new file mode 100644 index 0000000000..4157ecec16 --- /dev/null +++ b/assets/voxygen/voxel/npc/tidalwarrior/male/hand_l.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d9f53b0ec2b560e434d552cc6acc0d7fd9852db2fa1f1cbe6df329ec20f75a2a +size 2868 diff --git a/assets/voxygen/voxel/npc/tidalwarrior/male/hand_r.vox b/assets/voxygen/voxel/npc/tidalwarrior/male/hand_r.vox new file mode 100644 index 0000000000..1880bff9f7 --- /dev/null +++ b/assets/voxygen/voxel/npc/tidalwarrior/male/hand_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:69d319413b6d3f9d5bbad064450f5afb7edea68403192c5733a44cc5973dd0cc +size 2868 diff --git a/assets/voxygen/voxel/npc/tidalwarrior/male/head.vox b/assets/voxygen/voxel/npc/tidalwarrior/male/head.vox new file mode 100644 index 0000000000..58d1812e2e --- /dev/null +++ b/assets/voxygen/voxel/npc/tidalwarrior/male/head.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b7c9cc6282e1074a576f4b47c02f526f0b11ebbdc8426361d47be683708d5a16 +size 3208 diff --git a/assets/voxygen/voxel/npc/tidalwarrior/male/leg_l.vox b/assets/voxygen/voxel/npc/tidalwarrior/male/leg_l.vox new file mode 100644 index 0000000000..40d0cbfdf5 --- /dev/null +++ b/assets/voxygen/voxel/npc/tidalwarrior/male/leg_l.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:01a38ce3ab8eaf09461e0a0e838bc2115e7c2e067e563238927894c25d11aaa4 +size 1544 diff --git a/assets/voxygen/voxel/npc/tidalwarrior/male/leg_r.vox b/assets/voxygen/voxel/npc/tidalwarrior/male/leg_r.vox new file mode 100644 index 0000000000..203f1a5004 --- /dev/null +++ b/assets/voxygen/voxel/npc/tidalwarrior/male/leg_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f17a32a4eaa9110b6cd8f614ebed1f53da9287f7647f29a07ec1d41bb78cdb26 +size 1544 diff --git a/assets/voxygen/voxel/npc/tidalwarrior/male/shoulder_l.vox b/assets/voxygen/voxel/npc/tidalwarrior/male/shoulder_l.vox new file mode 100644 index 0000000000..9a93c6e193 --- /dev/null +++ b/assets/voxygen/voxel/npc/tidalwarrior/male/shoulder_l.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8e1fa059a0dea7e03cd0ba8e3ad05c25bb692b1dc6524a611e71ebd82a9dc811 +size 3212 diff --git a/assets/voxygen/voxel/npc/tidalwarrior/male/shoulder_r.vox b/assets/voxygen/voxel/npc/tidalwarrior/male/shoulder_r.vox new file mode 100644 index 0000000000..2f52d43eb7 --- /dev/null +++ b/assets/voxygen/voxel/npc/tidalwarrior/male/shoulder_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e5545474a88fab33102220dd07f77ff3131db873b5f7504120d22016a9c5152e +size 3212 diff --git a/assets/voxygen/voxel/npc/tidalwarrior/male/torso_lower.vox b/assets/voxygen/voxel/npc/tidalwarrior/male/torso_lower.vox new file mode 100644 index 0000000000..970a9ede47 --- /dev/null +++ b/assets/voxygen/voxel/npc/tidalwarrior/male/torso_lower.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8b6229161e3ea93f6624294185ad21b53a65f228ae33ab74ad123380c9e59dc3 +size 2904 diff --git a/assets/voxygen/voxel/npc/tidalwarrior/male/torso_upper.vox b/assets/voxygen/voxel/npc/tidalwarrior/male/torso_upper.vox new file mode 100644 index 0000000000..43fa9397fb --- /dev/null +++ b/assets/voxygen/voxel/npc/tidalwarrior/male/torso_upper.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cc681671f33e18cc4aeffd989f461f57d30cb7aecaed64e0903ad986721f89e1 +size 11440 diff --git a/assets/voxygen/voxel/npc/tiger/male/foot_bl.vox b/assets/voxygen/voxel/npc/tiger/male/foot_bl.vox deleted file mode 100644 index 4fbeb4ea4a..0000000000 --- a/assets/voxygen/voxel/npc/tiger/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5fc36f1582e07d01ab581cecd7f4d2f72313f9b49e3a7f772ac93f1e2a3dae8e -size 1512 diff --git a/assets/voxygen/voxel/npc/tiger/male/foot_fl.vox b/assets/voxygen/voxel/npc/tiger/male/foot_fl.vox deleted file mode 100644 index 1f5fd1500d..0000000000 --- a/assets/voxygen/voxel/npc/tiger/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a277796105f0ce2dae26ce7ae5f620609316c3ecdb66ae1b63200453b1752099 -size 1464 diff --git a/assets/voxygen/voxel/npc/tiger/male/leg_bl.vox b/assets/voxygen/voxel/npc/tiger/male/leg_bl.vox deleted file mode 100644 index 2ac0c5494f..0000000000 --- a/assets/voxygen/voxel/npc/tiger/male/leg_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:afee004920aa78cb665e10710a92cd3133741ea648687bbf2c0f69dad17c664b -size 1512 diff --git a/assets/voxygen/voxel/npc/tiger/male/leg_fl.vox b/assets/voxygen/voxel/npc/tiger/male/leg_fl.vox deleted file mode 100644 index b7f35b0181..0000000000 --- a/assets/voxygen/voxel/npc/tiger/male/leg_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:56987d55e8988bd14133ba78a1f7686a0e40f921c995900fa49d27f526ad9d42 -size 1580 diff --git a/assets/voxygen/voxel/npc/tortoise/male/foot_bl.vox b/assets/voxygen/voxel/npc/tortoise/male/foot_bl.vox deleted file mode 100644 index 73cad48f51..0000000000 --- a/assets/voxygen/voxel/npc/tortoise/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c308128f3ba79f4cc9caa3439b3077f688e45a095289182559e55f48bc0b0047 -size 1580 diff --git a/assets/voxygen/voxel/npc/tortoise/male/foot_fl.vox b/assets/voxygen/voxel/npc/tortoise/male/foot_fl.vox deleted file mode 100644 index c83624934c..0000000000 --- a/assets/voxygen/voxel/npc/tortoise/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f338128840ca7e40d209bfea664f2a3599079ab73a7e28a307637e077be3a4cb -size 1624 diff --git a/assets/voxygen/voxel/npc/truffler/male/foot_bl.vox b/assets/voxygen/voxel/npc/truffler/male/foot_bl.vox deleted file mode 100644 index 603e677bed..0000000000 --- a/assets/voxygen/voxel/npc/truffler/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:48402fcea0ca0d40993c2b07ab6cec6421bb1c320c736bee8c214812761a590d -size 1412 diff --git a/assets/voxygen/voxel/npc/truffler/male/foot_fl.vox b/assets/voxygen/voxel/npc/truffler/male/foot_fl.vox deleted file mode 100644 index 603e677bed..0000000000 --- a/assets/voxygen/voxel/npc/truffler/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:48402fcea0ca0d40993c2b07ab6cec6421bb1c320c736bee8c214812761a590d -size 1412 diff --git a/assets/voxygen/voxel/npc/turtle/male/foot_bl.vox b/assets/voxygen/voxel/npc/turtle/male/foot_bl.vox deleted file mode 100644 index 696ab221ab..0000000000 --- a/assets/voxygen/voxel/npc/turtle/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:1aabc60fe30c1f38e89ff8cfe770444baf9a5e2bd4060b56ba46ac0835460ef6 -size 1180 diff --git a/assets/voxygen/voxel/npc/turtle/male/foot_fl.vox b/assets/voxygen/voxel/npc/turtle/male/foot_fl.vox deleted file mode 100644 index 0ef897e45b..0000000000 --- a/assets/voxygen/voxel/npc/turtle/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:60cde6297e3bcec71278065f8e23dbf5cb6d318d9fc1d3d0c2f261c5d3d09e2b -size 1180 diff --git a/assets/voxygen/voxel/npc/tuskram/male/foot_bl.vox b/assets/voxygen/voxel/npc/tuskram/male/foot_bl.vox deleted file mode 100644 index cff8a41e09..0000000000 --- a/assets/voxygen/voxel/npc/tuskram/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:2e456782a34461d944feed285c31558fa4b0232b4152c90f02bcda0ad28edf73 -size 1412 diff --git a/assets/voxygen/voxel/npc/tuskram/male/foot_br.vox b/assets/voxygen/voxel/npc/tuskram/male/foot_br.vox index 7b68f3b280..be7779f086 100644 --- a/assets/voxygen/voxel/npc/tuskram/male/foot_br.vox +++ b/assets/voxygen/voxel/npc/tuskram/male/foot_br.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c47e6b396fed4b4875e11f10c00240c9e97b5e2765feca0edcaf7b6c423aa846 +oid sha256:277a7c1d4c6d0eef4899a4e322d55d00e0f29fa52e8484786d588c8a310d6db4 size 1412 diff --git a/assets/voxygen/voxel/npc/tuskram/male/foot_fl.vox b/assets/voxygen/voxel/npc/tuskram/male/foot_fl.vox deleted file mode 100644 index f0d059013b..0000000000 --- a/assets/voxygen/voxel/npc/tuskram/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f9ba5463684946e1a13270e079b87bd51071e20506622307c28f5f182cc88e0d -size 1500 diff --git a/assets/voxygen/voxel/npc/tuskram/male/foot_fr.vox b/assets/voxygen/voxel/npc/tuskram/male/foot_fr.vox index ce7982ae96..74821521c3 100644 --- a/assets/voxygen/voxel/npc/tuskram/male/foot_fr.vox +++ b/assets/voxygen/voxel/npc/tuskram/male/foot_fr.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b7b14cb13d878d073b982801179873c65d19880975f86d1734ac8729a57ea309 -size 1500 +oid sha256:73b1640d83ec0c42b94f8e09d2957addcadb8a7fee9d19ed122260f3ed3d1e43 +size 1680 diff --git a/assets/voxygen/voxel/npc/tuskram/male/head.vox b/assets/voxygen/voxel/npc/tuskram/male/head.vox index abb51582e5..9e0b4093c3 100644 --- a/assets/voxygen/voxel/npc/tuskram/male/head.vox +++ b/assets/voxygen/voxel/npc/tuskram/male/head.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:698bfe87d0c9f6c07a486e0b6b5496f75b748cbd7e0c6f0039b6adb785b6f48c -size 4360 +oid sha256:cfa53f86f7ea69fe0d5b4c1ffb76953d5eed6a8f93750af40c97a305a902246d +size 7360 diff --git a/assets/voxygen/voxel/npc/tuskram/male/jaw.vox b/assets/voxygen/voxel/npc/tuskram/male/jaw.vox index f2d35078a7..e35dd869d0 100644 --- a/assets/voxygen/voxel/npc/tuskram/male/jaw.vox +++ b/assets/voxygen/voxel/npc/tuskram/male/jaw.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:647ef383113a4dc8aa0fddd99ddd0f9881068ac8e2701eb9cc1d190af07ca861 -size 1248 +oid sha256:7e7a9fcb22a4752b78740269ffb52f15b40db063f7eea749aabc1c157a64ad86 +size 1656 diff --git a/assets/voxygen/voxel/npc/tuskram/male/leg_bl.vox b/assets/voxygen/voxel/npc/tuskram/male/leg_bl.vox deleted file mode 100644 index 530a5cd6a5..0000000000 --- a/assets/voxygen/voxel/npc/tuskram/male/leg_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:9d327bf97ccd7bbe82f4d8415466b70007d4c88ec7b32fc633c2c9de10af0917 -size 1460 diff --git a/assets/voxygen/voxel/npc/tuskram/male/leg_br.vox b/assets/voxygen/voxel/npc/tuskram/male/leg_br.vox index 1afa6ac8f9..66ce833749 100644 --- a/assets/voxygen/voxel/npc/tuskram/male/leg_br.vox +++ b/assets/voxygen/voxel/npc/tuskram/male/leg_br.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3f03f866f9d6a001ac1969d6eb4883f49cb6d6e0e6a648964ca10c591ef82c91 -size 1460 +oid sha256:f1319447b4bd7985593853ac4098aa74b8597f3ae87317f22859488366b07b26 +size 1492 diff --git a/assets/voxygen/voxel/npc/tuskram/male/leg_fl.vox b/assets/voxygen/voxel/npc/tuskram/male/leg_fl.vox deleted file mode 100644 index b4aacb93a5..0000000000 --- a/assets/voxygen/voxel/npc/tuskram/male/leg_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:db5d9e78e9c0d2e3af48c5961a4f0f82857cb044a109ddb9e07ffa6b81b0b7c5 -size 1432 diff --git a/assets/voxygen/voxel/npc/tuskram/male/leg_fr.vox b/assets/voxygen/voxel/npc/tuskram/male/leg_fr.vox index 3b7f0d803f..003087c9d2 100644 --- a/assets/voxygen/voxel/npc/tuskram/male/leg_fr.vox +++ b/assets/voxygen/voxel/npc/tuskram/male/leg_fr.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1f4f35838fa43f23662a44c21eb2d6ef17a26e49ee76a18d187bf0b78c2d6a14 -size 1432 +oid sha256:2829046541f673e04afb6c06c1aad3bcb54c70665d353102e2423d7a8a562250 +size 2048 diff --git a/assets/voxygen/voxel/npc/tuskram/male/neck.vox b/assets/voxygen/voxel/npc/tuskram/male/neck.vox index 860561f6ab..98febc72c4 100644 --- a/assets/voxygen/voxel/npc/tuskram/male/neck.vox +++ b/assets/voxygen/voxel/npc/tuskram/male/neck.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6e6786377fa59115afdfa3ceb5bd03842501500eb981a78afa010c59d578f4a4 -size 2072 +oid sha256:8ad70fd5ee3ee7be7ed8112dbfd55d3743a5d1cc4a4089da6e745b9b66204727 +size 2756 diff --git a/assets/voxygen/voxel/npc/tuskram/male/tail.vox b/assets/voxygen/voxel/npc/tuskram/male/tail.vox index bfa7174326..fd32b6d22e 100644 --- a/assets/voxygen/voxel/npc/tuskram/male/tail.vox +++ b/assets/voxygen/voxel/npc/tuskram/male/tail.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d592fa6c1a379566811b417cb6962d5cca18367fb9e52d0ae93408c58cd56e52 -size 1904 +oid sha256:1a3bcd5389cbf08b8575246ca2c3b07fe83adf4be15633baae60394d75f00694 +size 1744 diff --git a/assets/voxygen/voxel/npc/tuskram/male/torso_back.vox b/assets/voxygen/voxel/npc/tuskram/male/torso_back.vox index 9e70367339..9a031106d9 100644 --- a/assets/voxygen/voxel/npc/tuskram/male/torso_back.vox +++ b/assets/voxygen/voxel/npc/tuskram/male/torso_back.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c0bce2157ba7b3792b80777dbd36a1b207d062153f79518a62865a138736a3ce -size 2956 +oid sha256:f23be927e2dc7425f2180350db89103da00103ba8726a79c92d806548de50834 +size 4104 diff --git a/assets/voxygen/voxel/npc/tuskram/male/torso_front.vox b/assets/voxygen/voxel/npc/tuskram/male/torso_front.vox index ab7cd73ac8..eac0c834d4 100644 --- a/assets/voxygen/voxel/npc/tuskram/male/torso_front.vox +++ b/assets/voxygen/voxel/npc/tuskram/male/torso_front.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bfff23a60496a1738f161bd94c2a4b0fd3f55e8da86e49c25bee8994bbe597d6 -size 5572 +oid sha256:7e20498bd84c5e33217e9ef2b4a7e3ff3033a7a3167f55e2abe700e57e9d3e47 +size 8796 diff --git a/assets/voxygen/voxel/npc/wolf/male/foot_bl.vox b/assets/voxygen/voxel/npc/wolf/male/foot_bl.vox deleted file mode 100644 index 785e2f42c2..0000000000 --- a/assets/voxygen/voxel/npc/wolf/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:1e314a0e315f6e1d8fdfbf244e9c7b3e7601a2e0c30969a27fb5b6f00c21c6cc -size 1500 diff --git a/assets/voxygen/voxel/npc/wolf/male/foot_fl.vox b/assets/voxygen/voxel/npc/wolf/male/foot_fl.vox deleted file mode 100644 index e53b5a99fe..0000000000 --- a/assets/voxygen/voxel/npc/wolf/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:2543b558138ea221f00e30b76ef293e9e7dd963996da12c09d5c73b40f75cf23 -size 1500 diff --git a/assets/voxygen/voxel/npc/wolf/male/leg_bl.vox b/assets/voxygen/voxel/npc/wolf/male/leg_bl.vox deleted file mode 100644 index 76dc9b7d0e..0000000000 --- a/assets/voxygen/voxel/npc/wolf/male/leg_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b44d41cac6fa3d277a8eae2838fb52715557ed552b3b5ac5a5c0ce3aa9317b1b -size 1512 diff --git a/assets/voxygen/voxel/npc/wolf/male/leg_fl.vox b/assets/voxygen/voxel/npc/wolf/male/leg_fl.vox deleted file mode 100644 index 6fe3887518..0000000000 --- a/assets/voxygen/voxel/npc/wolf/male/leg_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:0aa4e51b2928747bbf85d6a85fbccb3e5e223cb9eefee669f3a4ae6fc6045267 -size 1652 diff --git a/assets/voxygen/voxel/npc/yak/male/ears.vox b/assets/voxygen/voxel/npc/yak/male/ears.vox new file mode 100644 index 0000000000..dc87c2cdbb --- /dev/null +++ b/assets/voxygen/voxel/npc/yak/male/ears.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:724d3bb27ba9cf63b3d8ff709bf7774987546aa2a26c95e5c596f8faaa54902e +size 1192 diff --git a/assets/voxygen/voxel/npc/yak/male/foot_br.vox b/assets/voxygen/voxel/npc/yak/male/foot_br.vox new file mode 100644 index 0000000000..d2ab5ec9fe --- /dev/null +++ b/assets/voxygen/voxel/npc/yak/male/foot_br.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ce95027700f8d2fca638d370ca6896af1de57c3917a107f22aa94ed7fda03662 +size 1356 diff --git a/assets/voxygen/voxel/npc/yak/male/foot_fr.vox b/assets/voxygen/voxel/npc/yak/male/foot_fr.vox new file mode 100644 index 0000000000..712a731534 --- /dev/null +++ b/assets/voxygen/voxel/npc/yak/male/foot_fr.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e71e176392ab3a6053228ead8bb7636d9383c8d31ac6b7fcf61f55904b6a03ab +size 1420 diff --git a/assets/voxygen/voxel/npc/yak/male/head.vox b/assets/voxygen/voxel/npc/yak/male/head.vox new file mode 100644 index 0000000000..5f374cdd6e --- /dev/null +++ b/assets/voxygen/voxel/npc/yak/male/head.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a2de6595c9394f7ca90bf9e53096079568eb0115f12524986c159685ccf905bc +size 2680 diff --git a/assets/voxygen/voxel/npc/yak/male/jaw.vox b/assets/voxygen/voxel/npc/yak/male/jaw.vox new file mode 100644 index 0000000000..d2af14ffdf --- /dev/null +++ b/assets/voxygen/voxel/npc/yak/male/jaw.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9680579a8607d5c3e1189a63ccdee16ceff19dc9075e928be63fb37f27740069 +size 1184 diff --git a/assets/voxygen/voxel/npc/yak/male/leg_br.vox b/assets/voxygen/voxel/npc/yak/male/leg_br.vox new file mode 100644 index 0000000000..59bdd4d54b --- /dev/null +++ b/assets/voxygen/voxel/npc/yak/male/leg_br.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d84ea87ffd1ca221a1644fe46781c4763256627206057b1fb79cc01fd095bc59 +size 1880 diff --git a/assets/voxygen/voxel/npc/yak/male/leg_fr.vox b/assets/voxygen/voxel/npc/yak/male/leg_fr.vox new file mode 100644 index 0000000000..de380a6f9e --- /dev/null +++ b/assets/voxygen/voxel/npc/yak/male/leg_fr.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:09389bc4f9245e1594a7c16396bcdc9326016f4b132361f593599a7ee199b2cf +size 1908 diff --git a/assets/voxygen/voxel/npc/yak/male/neck.vox b/assets/voxygen/voxel/npc/yak/male/neck.vox new file mode 100644 index 0000000000..78a3eba3f6 --- /dev/null +++ b/assets/voxygen/voxel/npc/yak/male/neck.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3fbac3a1bf3da520353910f8dd64070bc68b689a5f98e29bb0f00a2fe0328817 +size 3332 diff --git a/assets/voxygen/voxel/npc/yak/male/tail.vox b/assets/voxygen/voxel/npc/yak/male/tail.vox new file mode 100644 index 0000000000..c9d4ded911 --- /dev/null +++ b/assets/voxygen/voxel/npc/yak/male/tail.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:017dfed37b627961f93183e77ad28c8d27450cda57b28d5dc66ac27b5e637303 +size 1588 diff --git a/assets/voxygen/voxel/npc/yak/male/torso_back.vox b/assets/voxygen/voxel/npc/yak/male/torso_back.vox new file mode 100644 index 0000000000..a8408768e1 --- /dev/null +++ b/assets/voxygen/voxel/npc/yak/male/torso_back.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:efaf70700f86c779185fea0897d8aa2e8fdcc2fd4e02112dc77742dd79fda49e +size 6288 diff --git a/assets/voxygen/voxel/npc/yak/male/torso_front.vox b/assets/voxygen/voxel/npc/yak/male/torso_front.vox new file mode 100644 index 0000000000..16a540e0f7 --- /dev/null +++ b/assets/voxygen/voxel/npc/yak/male/torso_front.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6f2687d4c069390b150601f086b3a0b61bc223e51b3db35ad2597e28a8c9aa98 +size 7920 diff --git a/assets/voxygen/voxel/npc/yeti/male/foot_l.vox b/assets/voxygen/voxel/npc/yeti/male/foot_l.vox new file mode 100644 index 0000000000..0a97881c82 --- /dev/null +++ b/assets/voxygen/voxel/npc/yeti/male/foot_l.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bab38fa9f09022a67131f9ea6d630f3a89c77089469e8a99f15345455696381c +size 2000 diff --git a/assets/voxygen/voxel/npc/yeti/male/foot_r.vox b/assets/voxygen/voxel/npc/yeti/male/foot_r.vox new file mode 100644 index 0000000000..a5327a1299 --- /dev/null +++ b/assets/voxygen/voxel/npc/yeti/male/foot_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d4549da86a16646c5faf4c376526a1eafafe620770817254128a8ebd019b7d81 +size 2000 diff --git a/assets/voxygen/voxel/npc/yeti/male/hand_l.vox b/assets/voxygen/voxel/npc/yeti/male/hand_l.vox new file mode 100644 index 0000000000..8ca067444f --- /dev/null +++ b/assets/voxygen/voxel/npc/yeti/male/hand_l.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8e1f82341337e09aa1c32f5807d6015d24f7eb678da36e5a3c56f2ebb18a26cc +size 3108 diff --git a/assets/voxygen/voxel/npc/yeti/male/hand_r.vox b/assets/voxygen/voxel/npc/yeti/male/hand_r.vox new file mode 100644 index 0000000000..aa1e31acbf --- /dev/null +++ b/assets/voxygen/voxel/npc/yeti/male/hand_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aa1bfd9ebf9ade5f699ab7d73f50b7c3e2b856b10eb41db6381ccb93c958d1e7 +size 3108 diff --git a/assets/voxygen/voxel/npc/yeti/male/head.vox b/assets/voxygen/voxel/npc/yeti/male/head.vox new file mode 100644 index 0000000000..e74b46f7e7 --- /dev/null +++ b/assets/voxygen/voxel/npc/yeti/male/head.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b7ee1807d0e5b94da3e00851ba31f07eaf74fa238206bc44e366fae2cc85f7f2 +size 2592 diff --git a/assets/voxygen/voxel/npc/yeti/male/jaw.vox b/assets/voxygen/voxel/npc/yeti/male/jaw.vox new file mode 100644 index 0000000000..9d04a0b784 --- /dev/null +++ b/assets/voxygen/voxel/npc/yeti/male/jaw.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:88c7ebaf331ccfc6a2c3e65063a0b7b668091172d27b15640e664ed5f297bf50 +size 2440 diff --git a/assets/voxygen/voxel/npc/yeti/male/leg_l.vox b/assets/voxygen/voxel/npc/yeti/male/leg_l.vox new file mode 100644 index 0000000000..317ab213e8 --- /dev/null +++ b/assets/voxygen/voxel/npc/yeti/male/leg_l.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:60cefdb33f69a350a754468b58c8c1e3a2c66a4771055f3907b64c9df9fb9e86 +size 1832 diff --git a/assets/voxygen/voxel/npc/yeti/male/leg_r.vox b/assets/voxygen/voxel/npc/yeti/male/leg_r.vox new file mode 100644 index 0000000000..3cf11cfe10 --- /dev/null +++ b/assets/voxygen/voxel/npc/yeti/male/leg_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f42c711d91b7d93346befcedd453dab24ba8bd16e31c62d54ef5800630417433 +size 1832 diff --git a/assets/voxygen/voxel/npc/yeti/male/shoulder_l.vox b/assets/voxygen/voxel/npc/yeti/male/shoulder_l.vox new file mode 100644 index 0000000000..d73b8fd725 --- /dev/null +++ b/assets/voxygen/voxel/npc/yeti/male/shoulder_l.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d0c4cae6a9f13aad6f1c398fc756a58280d005c09e8c2c6bba3538390a69e75f +size 2336 diff --git a/assets/voxygen/voxel/npc/yeti/male/shoulder_r.vox b/assets/voxygen/voxel/npc/yeti/male/shoulder_r.vox new file mode 100644 index 0000000000..6b9b0c8700 --- /dev/null +++ b/assets/voxygen/voxel/npc/yeti/male/shoulder_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a4303fba193112dbf5d8633531be013354032a5e3d12097af6026bb872c4b87e +size 2336 diff --git a/assets/voxygen/voxel/npc/yeti/male/torso_lower.vox b/assets/voxygen/voxel/npc/yeti/male/torso_lower.vox new file mode 100644 index 0000000000..adb2db45a5 --- /dev/null +++ b/assets/voxygen/voxel/npc/yeti/male/torso_lower.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:083a748c55e916747a4d135c6f2d39086f80d7db82c7fcaf0eae210487ff6c21 +size 2976 diff --git a/assets/voxygen/voxel/npc/yeti/male/torso_upper.vox b/assets/voxygen/voxel/npc/yeti/male/torso_upper.vox new file mode 100644 index 0000000000..015117796d --- /dev/null +++ b/assets/voxygen/voxel/npc/yeti/male/torso_upper.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8fa3a986488dc31bb1c193a49d3ecf03ce978aa4d149a56aeef4267111b73e42 +size 10960 diff --git a/assets/voxygen/voxel/npc/zebra/male/foot_bl.vox b/assets/voxygen/voxel/npc/zebra/male/foot_bl.vox deleted file mode 100644 index f67bbc88b9..0000000000 --- a/assets/voxygen/voxel/npc/zebra/male/foot_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:35e487340fcb1b83f855a0a81969a7de1153b91551f8bc964b947965bfc500ef -size 1360 diff --git a/assets/voxygen/voxel/npc/zebra/male/foot_fl.vox b/assets/voxygen/voxel/npc/zebra/male/foot_fl.vox deleted file mode 100644 index 7a463da532..0000000000 --- a/assets/voxygen/voxel/npc/zebra/male/foot_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f5fd062d2c48464bf1a048258257fac372ee35a977c582c57d14c04005632082 -size 1376 diff --git a/assets/voxygen/voxel/npc/zebra/male/leg_bl.vox b/assets/voxygen/voxel/npc/zebra/male/leg_bl.vox deleted file mode 100644 index e7114cc032..0000000000 --- a/assets/voxygen/voxel/npc/zebra/male/leg_bl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f76fd38cf5a7916b8cd2afe76c3bd9d4f9341476b7eadd9a99f40aaa56af3d38 -size 1648 diff --git a/assets/voxygen/voxel/npc/zebra/male/leg_fl.vox b/assets/voxygen/voxel/npc/zebra/male/leg_fl.vox deleted file mode 100644 index 13f1503013..0000000000 --- a/assets/voxygen/voxel/npc/zebra/male/leg_fl.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ada3be5b68ae1629fc27c732714be52460af82c09141488b7ad6adefcd002ab4 -size 1528 diff --git a/assets/voxygen/voxel/quadruped_low_central_manifest.ron b/assets/voxygen/voxel/quadruped_low_central_manifest.ron index b25366bac1..1ba0cb245e 100644 --- a/assets/voxygen/voxel/quadruped_low_central_manifest.ron +++ b/assets/voxygen/voxel/quadruped_low_central_manifest.ron @@ -624,4 +624,108 @@ central: ("npc.lavadrake.male.tail_front"), ), ), + (Basilisk, Male): ( + upper: ( + offset: (-5.5, 0.0, -11.0), + central: ("npc.basilisk.male.head_upper"), + ), + lower: ( + offset: (-8.5, 0.0, -4.0), + central: ("npc.basilisk.male.head_lower"), + ), + jaw: ( + offset: (-2.5, 0.0, -15.0), + central: ("npc.basilisk.male.jaw"), + ), + chest: ( + offset: (-6.5, -13.0, -12.5), + central: ("npc.basilisk.male.chest"), + ), + tail_rear: ( + offset: (-3.5, -20.0, -4.0), + central: ("npc.basilisk.male.tail_rear"), + ), + tail_front: ( + offset: (-4.5, -24.0, -7.0), + central: ("npc.basilisk.male.tail_front"), + ), + ), + (Basilisk, Female): ( + upper: ( + offset: (-5.5, 0.0, -11.0), + central: ("npc.basilisk.male.head_upper"), + ), + lower: ( + offset: (-8.5, 0.0, -4.0), + central: ("npc.basilisk.male.head_lower"), + ), + jaw: ( + offset: (-2.5, 0.0, -15.0), + central: ("npc.basilisk.male.jaw"), + ), + chest: ( + offset: (-6.5, -13.0, -12.5), + central: ("npc.basilisk.male.chest"), + ), + tail_rear: ( + offset: (-3.5, -20.0, -4.0), + central: ("npc.basilisk.male.tail_rear"), + ), + tail_front: ( + offset: (-4.5, -24.0, -7.0), + central: ("npc.basilisk.male.tail_front"), + ), + ), + (Deadwood, Male): ( + upper: ( + offset: (-3.5, -3.5, -4.0), + central: ("npc.deadwood.male.head_upper"), + ), + lower: ( + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), + ), + jaw: ( + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), + ), + chest: ( + offset: (-12.5, -11.0, -9.0), + central: ("npc.deadwood.male.chest"), + ), + tail_rear: ( + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), + ), + tail_front: ( + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), + ), + ), + (Deadwood, Female): ( + upper: ( + offset: (-3.5, -3.5, -4.0), + central: ("npc.deadwood.male.head_upper"), + ), + lower: ( + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), + ), + jaw: ( + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), + ), + chest: ( + offset: (-12.5, -11.0, -9.0), + central: ("npc.deadwood.male.chest"), + ), + tail_rear: ( + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), + ), + tail_front: ( + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), + ), + ), }) diff --git a/assets/voxygen/voxel/quadruped_low_lateral_manifest.ron b/assets/voxygen/voxel/quadruped_low_lateral_manifest.ron index 8201bdb88b..8ea1f198f9 100644 --- a/assets/voxygen/voxel/quadruped_low_lateral_manifest.ron +++ b/assets/voxygen/voxel/quadruped_low_lateral_manifest.ron @@ -2,7 +2,7 @@ (Crocodile, Male): ( front_left: ( offset: (-7.0, -0.0, -4.0),//full x dimension, 0 y dimension, full z dimension - lateral: ("npc.crocodile.male.foot_fl"), + lateral: ("npc.crocodile.male.foot_fr"), ), front_right: ( offset: (0.0, -0.0, -4.0),//0 x dimension, 0 y dimension, full z dimension @@ -10,7 +10,7 @@ ), back_left: ( offset: (-8.0, -0.0, -4.0),//full x dimension, 0 y dimension, full z dimension - lateral: ("npc.crocodile.male.foot_bl"), + lateral: ("npc.crocodile.male.foot_br"), ), back_right: ( offset: (0.0, -0.0, -4.0),//0 x dimension, 0 y dimension, full z dimension @@ -20,7 +20,7 @@ (Crocodile, Female): ( front_left: ( offset: (-7.0, -0.0, -4.0), - lateral: ("npc.crocodile.male.foot_fl"), + lateral: ("npc.crocodile.male.foot_fr"), ), front_right: ( offset: (0.0, -0.0, -4.0), @@ -28,7 +28,7 @@ ), back_left: ( offset: (-8.0, -0.0, -4.0), - lateral: ("npc.crocodile.male.foot_bl"), + lateral: ("npc.crocodile.male.foot_br"), ), back_right: ( offset: (0.0, -0.0, -4.0), @@ -38,7 +38,7 @@ (Alligator, Male): ( front_left: ( offset: (-7.0, 0.0, -4.0), - lateral: ("npc.alligator.male.foot_fl"), + lateral: ("npc.alligator.male.foot_fr"), ), front_right: ( offset: (-0.0, 0.0, -4.0), @@ -46,7 +46,7 @@ ), back_left: ( offset: (-8.0, 0.0, -4.0), - lateral: ("npc.alligator.male.foot_bl"), + lateral: ("npc.alligator.male.foot_br"), ), back_right: ( offset: (-0.0, 0.0, -4.0), @@ -56,7 +56,7 @@ (Alligator, Female): ( front_left: ( offset: (-7.0, 0.0, -4.0), - lateral: ("npc.alligator.male.foot_fl"), + lateral: ("npc.alligator.male.foot_fr"), ), front_right: ( offset: (0.0, 0.0, -4.0), @@ -64,7 +64,7 @@ ), back_left: ( offset: (-8.0, 0.0, -4.0), - lateral: ("npc.alligator.male.foot_bl"), + lateral: ("npc.alligator.male.foot_br"), ), back_right: ( offset: (0.0, 0.0, -4.0), @@ -74,7 +74,7 @@ (Salamander, Male): ( front_left: ( offset: (-6.0, 0.0, -3.0), - lateral: ("npc.salamander.male.foot_fl"), + lateral: ("npc.salamander.male.foot_fr"), ), front_right: ( offset: (0.0, 0.0, -3.0), @@ -82,7 +82,7 @@ ), back_left: ( offset: (-7.0, 0.0, -3.0), - lateral: ("npc.salamander.male.foot_bl"), + lateral: ("npc.salamander.male.foot_br"), ), back_right: ( offset: (-0.0, 0.0, -3.0), @@ -92,7 +92,7 @@ (Salamander, Female): ( front_left: ( offset: (-6.0, 0.0, -3.0), - lateral: ("npc.salamander.female.foot_fl"), + lateral: ("npc.salamander.female.foot_fr"), ), front_right: ( offset: (0.0, 0.0, -3.0), @@ -100,7 +100,7 @@ ), back_left: ( offset: (-8.0, 0.0, -3.0), - lateral: ("npc.salamander.female.foot_bl"), + lateral: ("npc.salamander.female.foot_br"), ), back_right: ( offset: (0.0, 0.0, -3.0), @@ -110,7 +110,7 @@ (Monitor, Male): ( front_left: ( offset: (-8.0, 0.0, -5.0), - lateral: ("npc.monitor.male.foot_fl"), + lateral: ("npc.monitor.male.foot_fr"), ), front_right: ( offset: (0.0, 0.0, -5.0), @@ -118,7 +118,7 @@ ), back_left: ( offset: (-7.0, 0.0, -5.0), - lateral: ("npc.monitor.male.foot_bl"), + lateral: ("npc.monitor.male.foot_br"), ), back_right: ( offset: (0.0, 0.0, -5.0), @@ -128,7 +128,7 @@ (Monitor, Female): ( front_left: ( offset: (-8.0, 0.0, -5.0), - lateral: ("npc.monitor.male.foot_fl"), + lateral: ("npc.monitor.male.foot_fr"), ), front_right: ( offset: (0.0, 0.0, -5.0), @@ -136,7 +136,7 @@ ), back_left: ( offset: (-7.0, 0.0, -5.0), - lateral: ("npc.monitor.male.foot_bl"), + lateral: ("npc.monitor.male.foot_br"), ), back_right: ( offset: (0.0, 0.0, -5.0), @@ -145,44 +145,44 @@ ), (Asp, Male): ( front_left: ( - offset: (-11.0, 0.0, -7.0), - lateral: ("npc.asp.male.foot_fl"), + offset: (-10.0, 0.0, -6.5), + lateral: ("npc.asp.male.foot_fr"), ), front_right: ( - offset: (0.0, 0.0, -7.0), + offset: (0.0, 0.0, -6.5), lateral: ("npc.asp.male.foot_fr"), ), back_left: ( - offset: (-9.0, 0.0, -7.0), - lateral: ("npc.asp.male.foot_bl"), + offset: (-7.5, 0.0, -6.5), + lateral: ("npc.asp.male.foot_br"), ), back_right: ( - offset: (0.0, 0.0, -7.0), + offset: (0.0, 0.0, -6.5), lateral: ("npc.asp.male.foot_br"), ), ), (Asp, Female): ( front_left: ( - offset: (-11.0, 0.0, -7.0), - lateral: ("npc.asp.male.foot_fl"), + offset: (-10.0, 0.0, -6.5), + lateral: ("npc.asp.male.foot_fr"), ), front_right: ( - offset: (0.0, 0.0, -7.0), + offset: (0.0, 0.0, -6.5), lateral: ("npc.asp.male.foot_fr"), ), back_left: ( - offset: (-9.0, 0.0, -7.0), - lateral: ("npc.asp.male.foot_bl"), + offset: (-7.5, 0.0, -6.5), + lateral: ("npc.asp.male.foot_br"), ), back_right: ( - offset: (0.0, 0.0, -7.0), + offset: (0.0, 0.0, -6.5), lateral: ("npc.asp.male.foot_br"), ), ), (Tortoise, Male): ( front_left: ( offset: (-7.0, 0.0, -8.0), - lateral: ("npc.tortoise.male.foot_fl"), + lateral: ("npc.tortoise.male.foot_fr"), ), front_right: ( offset: (0.0, 0.0, -8.0), @@ -190,7 +190,7 @@ ), back_left: ( offset: (-7.0, 0.0, -8.0), - lateral: ("npc.tortoise.male.foot_bl"), + lateral: ("npc.tortoise.male.foot_br"), ), back_right: ( offset: (0.0, 0.0, -8.0), @@ -200,7 +200,7 @@ (Tortoise, Female): ( front_left: ( offset: (-7.0, 0.0, -8.0), - lateral: ("npc.tortoise.male.foot_fl"), + lateral: ("npc.tortoise.male.foot_fr"), ), front_right: ( offset: (0.0, 0.0, -8.0), @@ -208,7 +208,7 @@ ), back_left: ( offset: (-7.0, 0.0, -8.0), - lateral: ("npc.tortoise.male.foot_bl"), + lateral: ("npc.tortoise.male.foot_br"), ), back_right: ( offset: (0.0, 0.0, -8.0), @@ -218,7 +218,7 @@ (Rocksnapper, Male): ( front_left: ( offset: (-12.0, 0.0, -10.0), - lateral: ("npc.rocksnapper.male.foot_fl"), + lateral: ("npc.rocksnapper.male.foot_fr"), ), front_right: ( offset: (0.0, 0.0, -10.0), @@ -226,7 +226,7 @@ ), back_left: ( offset: (-11.0, -6.0, -9.0), - lateral: ("npc.rocksnapper.male.foot_bl"), + lateral: ("npc.rocksnapper.male.foot_br"), ), back_right: ( offset: (0.0, -6.0, -9.0), @@ -236,7 +236,7 @@ (Rocksnapper, Female): ( front_left: ( offset: (-12.0, 0.0, -10.0), - lateral: ("npc.rocksnapper.male.foot_fl"), + lateral: ("npc.rocksnapper.male.foot_fr"), ), front_right: ( offset: (0.0, 0.0, -10.0), @@ -244,7 +244,7 @@ ), back_left: ( offset: (-11.0, -6.0, -9.0),//special case - lateral: ("npc.rocksnapper.male.foot_bl"), + lateral: ("npc.rocksnapper.male.foot_br"), ), back_right: ( offset: (0.0, -6.0, -9.0), @@ -254,7 +254,7 @@ (Pangolin, Male): ( front_left: ( offset: (-1.5, 0.0, -6.0),//unique - lateral: ("npc.pangolin.male.foot_fl"), + lateral: ("npc.pangolin.male.foot_fr"), ), front_right: ( offset: (-1.5, 0.0, -6.0), @@ -262,7 +262,7 @@ ), back_left: ( offset: (-1.5, 0.0, -6.0), - lateral: ("npc.pangolin.male.foot_bl"), + lateral: ("npc.pangolin.male.foot_br"), ), back_right: ( offset: (-1.5, 0.0, -6.0), @@ -272,7 +272,7 @@ (Pangolin, Female): ( front_left: ( offset: (-1.5, 0.0, -6.0), - lateral: ("npc.pangolin.male.foot_fl"), + lateral: ("npc.pangolin.male.foot_fr"), ), front_right: ( offset: (-1.5, 0.0, -6.0), @@ -280,7 +280,7 @@ ), back_left: ( offset: (-1.5, 0.0, -6.0),//special case - lateral: ("npc.pangolin.male.foot_bl"), + lateral: ("npc.pangolin.male.foot_br"), ), back_right: ( offset: (-1.5, 0.0, -6.0), @@ -290,7 +290,7 @@ (Maneater, Male): ( front_left: ( offset: (-6.0, 0.0, -6.5), - lateral: ("npc.maneater.male.foot_fl"), + lateral: ("npc.maneater.male.foot_fr"), ), front_right: ( offset: (-2.0, 0.0, -6.5), @@ -298,7 +298,7 @@ ), back_left: ( offset: (-6.0, -8.0, -9.0), - lateral: ("npc.maneater.male.foot_bl"), + lateral: ("npc.maneater.male.foot_br"), ), back_right: ( offset: (-2.0, -8.0, -9.0), @@ -308,7 +308,7 @@ (Maneater, Female): ( front_left: ( offset: (-6.0, 0.0, -6.5), - lateral: ("npc.maneater.male.foot_fl"), + lateral: ("npc.maneater.male.foot_fr"), ), front_right: ( offset: (-2.0, 0.0, -6.5), @@ -316,7 +316,7 @@ ), back_left: ( offset: (-6.0, -8.0, -9.0), - lateral: ("npc.maneater.male.foot_bl"), + lateral: ("npc.maneater.male.foot_br"), ), back_right: ( offset: (-2.0, -8.0, -9.0), @@ -326,7 +326,7 @@ (Hakulaq, Male): ( front_left: ( offset: (-10.0, 0.0, -9.0), - lateral: ("npc.hakulaq.male.foot_fl"), + lateral: ("npc.hakulaq.male.foot_fr"), ), front_right: ( offset: (0.0, 0.0, -9.0), @@ -334,7 +334,7 @@ ), back_left: ( offset: (-10.0, 0.0, -9.0), - lateral: ("npc.hakulaq.male.foot_bl"), + lateral: ("npc.hakulaq.male.foot_br"), ), back_right: ( offset: (0.0, 0.0, -9.0), @@ -344,7 +344,7 @@ (Hakulaq, Female): ( front_left: ( offset: (-10.0, 0.0, -9.0), - lateral: ("npc.hakulaq.male.foot_fl"), + lateral: ("npc.hakulaq.male.foot_fr"), ), front_right: ( offset: (0.0, 0.0, -9.0), @@ -352,7 +352,7 @@ ), back_left: ( offset: (-10.0, 0.0, -9.0), - lateral: ("npc.hakulaq.male.foot_bl"), + lateral: ("npc.hakulaq.male.foot_br"), ), back_right: ( offset: (0.0, 0.0, -9.0), @@ -362,7 +362,7 @@ (Sandshark, Male): ( front_left: ( offset: (-17.0, 0.0, -12.0), - lateral: ("npc.sandshark.male.foot_fl"), + lateral: ("npc.sandshark.male.foot_fr"), ), front_right: ( offset: (0.0, 0.0, -12.0), @@ -370,7 +370,7 @@ ), back_left: ( offset: (-9.0, 0.0, -6.0), - lateral: ("npc.sandshark.male.foot_bl"), + lateral: ("npc.sandshark.male.foot_br"), ), back_right: ( offset: (-2.0, 0.0, -6.0), @@ -380,7 +380,7 @@ (Sandshark, Female): ( front_left: ( offset: (-17.0, 0.0, -12.0), - lateral: ("npc.sandshark.male.foot_fl"), + lateral: ("npc.sandshark.male.foot_fr"), ), front_right: ( offset: (0.0, 0.0, -12.0), @@ -388,7 +388,7 @@ ), back_left: ( offset: (-9.0, 0.0, -6.0), - lateral: ("npc.sandshark.male.foot_bl"), + lateral: ("npc.sandshark.male.foot_br"), ), back_right: ( offset: (-2.0, 0.0, -6.0), @@ -398,7 +398,7 @@ (Lavadrake, Male): ( front_left: ( offset: (-14.0, -4.0, -10.0), - lateral: ("npc.lavadrake.male.foot_fl"), + lateral: ("npc.lavadrake.male.foot_fr"), ), front_right: ( offset: (0.0, -4.0, -10.0), @@ -406,7 +406,7 @@ ), back_left: ( offset: (-14.0, -7.5, -10.0), - lateral: ("npc.lavadrake.male.foot_bl"), + lateral: ("npc.lavadrake.male.foot_br"), ), back_right: ( offset: (0.0, -7.5, -10.0), @@ -416,7 +416,7 @@ (Lavadrake, Female): ( front_left: ( offset: (-14.0, -4.0, -10.0), - lateral: ("npc.lavadrake.male.foot_fl"), + lateral: ("npc.lavadrake.male.foot_fr"), ), front_right: ( offset: (0.0, -4.0, -10.0), @@ -424,11 +424,83 @@ ), back_left: ( offset: (-14.0, -7.5, -10.0), - lateral: ("npc.lavadrake.male.foot_bl"), + lateral: ("npc.lavadrake.male.foot_br"), ), back_right: ( offset: (0.0, -7.5, -10.0), lateral: ("npc.lavadrake.male.foot_br"), ), ), + (Basilisk, Male): ( + front_left: ( + offset: (-17.0, 0.0, -9.0), + lateral: ("npc.basilisk.male.foot_fr"), + ), + front_right: ( + offset: (0.0, 0.0, -9.0), + lateral: ("npc.basilisk.male.foot_fr"), + ), + back_left: ( + offset: (-15.0, 0.0, -9.0), + lateral: ("npc.basilisk.male.foot_br"), + ), + back_right: ( + offset: (0.0, 0.0, -9.0), + lateral: ("npc.basilisk.male.foot_br"), + ), + ), + (Basilisk, Female): ( + front_left: ( + offset: (-17.0, 0.0, -9.0), + lateral: ("npc.basilisk.male.foot_fr"), + ), + front_right: ( + offset: (0.0, 0.0, -9.0), + lateral: ("npc.basilisk.male.foot_fr"), + ), + back_left: ( + offset: (-15.0, 0.0, -9.0), + lateral: ("npc.basilisk.male.foot_br"), + ), + back_right: ( + offset: (0.0, 0.0, -9.0), + lateral: ("npc.basilisk.male.foot_br"), + ), + ), + (Deadwood, Male): ( + front_left: ( + offset: (-5.0, -2.0, -7.0), + lateral: ("npc.deadwood.male.foot_fr"), + ), + front_right: ( + offset: (0.0, -2.0, -7.0), + lateral: ("npc.deadwood.male.foot_fr"), + ), + back_left: ( + offset: (-5.0, -1.0, -7.0), + lateral: ("npc.deadwood.male.foot_br"), + ), + back_right: ( + offset: (0.0, -1.0, -7.0), + lateral: ("npc.deadwood.male.foot_br"), + ), + ), + (Deadwood, Female): ( + front_left: ( + offset: (-5.0, -2.0, -7.0), + lateral: ("npc.deadwood.male.foot_fr"), + ), + front_right: ( + offset: (0.0, -2.0, -7.0), + lateral: ("npc.deadwood.male.foot_fr"), + ), + back_left: ( + offset: (-5.0, -1.0, -7.0), + lateral: ("npc.deadwood.male.foot_br"), + ), + back_right: ( + offset: (0.0, -1.0, -7.0), + lateral: ("npc.deadwood.male.foot_br"), + ), + ), }) diff --git a/assets/voxygen/voxel/quadruped_medium_central_manifest.ron b/assets/voxygen/voxel/quadruped_medium_central_manifest.ron index 8c7f92632c..911f175dec 100644 --- a/assets/voxygen/voxel/quadruped_medium_central_manifest.ron +++ b/assets/voxygen/voxel/quadruped_medium_central_manifest.ron @@ -121,61 +121,61 @@ ), (Tuskram, Male): ( head: ( - offset: (-10.0, -2.0, -6.5), + offset: (-15.0, -2.0, -10.0), central: ("npc.tuskram.male.head"), ), neck: ( - offset: (-4.0, -2.0, -3.5), + offset: (-4.0, -3.0, -6.0), central: ("npc.tuskram.male.neck"), ), jaw: ( - offset: (-2.0, 0.0, -1.5), + offset: (-5.0, 0.0, -8.0), central: ("npc.tuskram.male.jaw"), ), torso_front: ( - offset: (-6.0, -15.0, -6.5), + offset: (-7.0, -14.0, -8.0), central: ("npc.tuskram.male.torso_front"), ), torso_back: ( - offset: (-4.0, -10.0, -4.5), + offset: (-5.0, -10.0, -5.5), central: ("npc.tuskram.male.torso_back"), ), ears: ( - offset: (-0.5, -0.5, 0.0), + offset: (0.0, 0.0, 0.0), central: ("armor.empty"), ), tail: ( - offset: (-3.0, -7.0, -8.0), + offset: (-3.0, -6.0, -8.0), central: ("npc.tuskram.male.tail"), ), ), (Tuskram, Female): ( head: ( - offset: (-10.0, -2.0, -6.5), + offset: (-15.0, -2.0, -10.0), central: ("npc.tuskram.male.head"), ), neck: ( - offset: (-4.0, -2.0, -3.5), + offset: (-4.0, -3.0, -6.0), central: ("npc.tuskram.male.neck"), ), jaw: ( - offset: (-2.0, 0.0, -1.5), + offset: (-5.0, 0.0, -1.5), central: ("npc.tuskram.male.jaw"), ), torso_front: ( - offset: (-6.0, -15.0, -6.5), + offset: (-7.0, -14.0, -8.0), central: ("npc.tuskram.male.torso_front"), ), torso_back: ( - offset: (-4.0, -10.0, -4.5), + offset: (-5.0, -10.0, -5.5), central: ("npc.tuskram.male.torso_back"), ), ears: ( - offset: (-0.5, -0.5, -0.0), + offset: (0.0, 0.0, 0.0), central: ("armor.empty"), ), tail: ( - offset: (-3.0, -7.0, -8.0), + offset: (-3.0, -6.0, -8.0), central: ("npc.tuskram.male.tail"), ), ), @@ -1145,7 +1145,7 @@ central: ("npc.horse.male.head"), ), neck: ( - offset: (-3.0, -6.5, -6.5), + offset: (-3.0, -1.5, -5.5), central: ("npc.horse.male.neck"), ), jaw: ( @@ -1175,7 +1175,7 @@ central: ("npc.horse.male.head"), ), neck: ( - offset: (-3.0, -6.5, -6.5), + offset: (-3.0, -1.5, -5.5), central: ("npc.horse.male.neck"), ), jaw: ( @@ -1199,4 +1199,424 @@ central: ("npc.horse.male.tail"), ), ), + (Barghest, Male): ( + head: ( + offset: (-7.0, 0.0, -8.0), + central: ("npc.barghest.male.head"), + ), + neck: ( + offset: (-7.0, -1.5, -10.0), + central: ("npc.barghest.male.neck"), + ), + jaw: ( + offset: (-10.0, 0.0, -5.0), + central: ("npc.barghest.male.jaw"), + ), + torso_front: ( + offset: (-8.0, -12.0, -10.5), + central: ("npc.barghest.male.torso_front"), + ), + torso_back: ( + offset: (-6.0, -10.0, -7.0), + central: ("npc.barghest.male.torso_back"), + ), + ears: ( + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), + ), + tail: ( + offset: (-3.0, -15.0, -5.0), + central: ("npc.barghest.male.tail"), + ), + ), + (Barghest, Female): ( + head: ( + offset: (-7.0, 0.0, -8.0), + central: ("npc.barghest.male.head"), + ), + neck: ( + offset: (-7.0, -1.5, -10.0), + central: ("npc.barghest.male.neck"), + ), + jaw: ( + offset: (-10.0, 0.0, -5.0), + central: ("npc.barghest.male.jaw"), + ), + torso_front: ( + offset: (-8.0, -12.0, -10.5), + central: ("npc.barghest.male.torso_front"), + ), + torso_back: ( + offset: (-6.0, -10.0, -7.0), + central: ("npc.barghest.male.torso_back"), + ), + ears: ( + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), + ), + tail: ( + offset: (-3.0, -15.0, -5.0), + central: ("npc.barghest.male.tail"), + ), + ), + (Cattle, Male): ( + head: ( + offset: (-5.0, 0.0, -6.5), + central: ("npc.cattle.male.head"), + ), + neck: ( + offset: (-4.0, -2.0, -7.0), + central: ("npc.cattle.male.neck"), + ), + jaw: ( + offset: (-2.0, 0.0, -1.0), + central: ("npc.cattle.male.jaw"), + ), + torso_front: ( + offset: (-6.0, -9.0, -8.0), + central: ("npc.cattle.male.torso_front"), + ), + torso_back: ( + offset: (-6.0, -10.0, -6.5), + central: ("npc.cattle.male.torso_back"), + ), + ears: ( + offset: (-6.0, -1.0, 0.0), + central: ("npc.cattle.male.ears"), + ), + tail: ( + offset: (-1.0, -8.0, -13.0), + central: ("npc.cattle.male.tail"), + ), + ), + (Cattle, Female): ( + head: ( + offset: (-5.0, 0.0, -5.0), + central: ("npc.cattle.female.head"), + ), + neck: ( + offset: (-4.0, -2.0, -6.0), + central: ("npc.cattle.female.neck"), + ), + jaw: ( + offset: (-2.0, 0.0, -1.0), + central: ("npc.cattle.female.jaw"), + ), + torso_front: ( + offset: (-6.0, -9.0, -6.5), + central: ("npc.cattle.female.torso_front"), + ), + torso_back: ( + offset: (-6.0, -8.0, -7.5), + central: ("npc.cattle.female.torso_back"), + ), + ears: ( + offset: (-6.0, -1.0, 0.0), + central: ("npc.cattle.female.ears"), + ), + tail: ( + offset: (-1.0, -8.0, -13.0), + central: ("npc.cattle.female.tail"), + ), + ), + (Darkhound, Male): ( + head: ( + offset: (-2.5, 0.0, -3.5), + central: ("npc.darkhound.male.head"), + ), + neck: ( + offset: (-2.5, -2.0, -3.5), + central: ("npc.darkhound.male.neck"), + ), + jaw: ( + offset: (-1.5, 0.0, -1.5), + central: ("npc.darkhound.male.jaw"), + ), + torso_front: ( + offset: (-3.5, -13.0, -6.0), + central: ("npc.darkhound.male.torso_front"), + ), + torso_back: ( + offset: (-3.5, -12.0, -4.5), + central: ("npc.darkhound.male.torso_back"), + ), + ears: ( + offset: (-2.5, -1.0, 0.0), + central: ("npc.darkhound.male.ears"), + ), + tail: ( + offset: (-1.5, -16.0, -5.0), + central: ("npc.darkhound.male.tail"), + ), + ), + (Darkhound, Female): ( + head: ( + offset: (-2.5, 0.0, -3.5), + central: ("npc.darkhound.male.head"), + ), + neck: ( + offset: (-2.5, -2.0, -3.5), + central: ("npc.darkhound.male.neck"), + ), + jaw: ( + offset: (-1.5, 0.0, -1.5), + central: ("npc.darkhound.male.jaw"), + ), + torso_front: ( + offset: (-3.5, -13.0, -6.0), + central: ("npc.darkhound.male.torso_front"), + ), + torso_back: ( + offset: (-3.5, -12.0, -4.5), + central: ("npc.darkhound.male.torso_back"), + ), + ears: ( + offset: (-2.5, -1.0, 0.0), + central: ("npc.darkhound.male.ears"), + ), + tail: ( + offset: (-1.5, -16.0, -5.0), + central: ("npc.darkhound.male.tail"), + ), + ), + (Highland, Male): ( + head: ( + offset: (-12.0, 0.0, -6.0), + central: ("npc.highland.male.head"), + ), + neck: ( + offset: (-5.0, -2.0, -7.0), + central: ("npc.highland.male.neck"), + ), + jaw: ( + offset: (-2.0, 0.0, -1.0), + central: ("npc.highland.male.jaw"), + ), + torso_front: ( + offset: (-6.0, -9.0, -8.5), + central: ("npc.highland.male.torso_front"), + ), + torso_back: ( + offset: (-6.0, -10.0, -7.5), + central: ("npc.highland.male.torso_back"), + ), + ears: ( + offset: (-6.0, -1.0, 0.0), + central: ("npc.highland.male.ears"), + ), + tail: ( + offset: (-1.0, -6.0, -13.0), + central: ("npc.highland.male.tail"), + ), + ), + (Highland, Female): ( + head: ( + offset: (-12.0, 0.0, -6.0), + central: ("npc.highland.male.head"), + ), + neck: ( + offset: (-5.0, -2.0, -7.0), + central: ("npc.highland.male.neck"), + ), + jaw: ( + offset: (-2.0, 0.0, -1.0), + central: ("npc.highland.male.jaw"), + ), + torso_front: ( + offset: (-6.0, -9.0, -8.5), + central: ("npc.highland.male.torso_front"), + ), + torso_back: ( + offset: (-6.0, -10.0, -7.5), + central: ("npc.highland.male.torso_back"), + ), + ears: ( + offset: (-6.0, -1.0, 0.0), + central: ("npc.highland.male.ears"), + ), + tail: ( + offset: (-1.0, -6.0, -13.0), + central: ("npc.highland.male.tail"), + ), + ), + (Yak, Male): ( + head: ( + offset: (-7.0, 0.0, -8.0), + central: ("npc.yak.male.head"), + ), + neck: ( + offset: (-5.0, -2.0, -8.0), + central: ("npc.yak.male.neck"), + ), + jaw: ( + offset: (-2.0, 0.0, -1.0), + central: ("npc.yak.male.jaw"), + ), + torso_front: ( + offset: (-7.0, -9.0, -11.0), + central: ("npc.yak.male.torso_front"), + ), + torso_back: ( + offset: (-6.0, -10.0, -9.5), + central: ("npc.yak.male.torso_back"), + ), + ears: ( + offset: (-6.0, -1.0, 0.0), + central: ("npc.yak.male.ears"), + ), + tail: ( + offset: (-2.0, -5.0, -15.0), + central: ("npc.yak.male.tail"), + ), + ), + (Yak, Female): ( + head: ( + offset: (-7.0, 0.0, -8.0), + central: ("npc.yak.male.head"), + ), + neck: ( + offset: (-5.0, -2.0, -8.0), + central: ("npc.yak.male.neck"), + ), + jaw: ( + offset: (-2.0, 0.0, -1.0), + central: ("npc.yak.male.jaw"), + ), + torso_front: ( + offset: (-7.0, -9.0, -11.0), + central: ("npc.yak.male.torso_front"), + ), + torso_back: ( + offset: (-6.0, -10.0, -9.5), + central: ("npc.yak.male.torso_back"), + ), + ears: ( + offset: (-6.0, -1.0, 0.0), + central: ("npc.yak.male.ears"), + ), + tail: ( + offset: (-2.0, -5.0, -15.0), + central: ("npc.yak.male.tail"), + ), + ), + (Panda, Male): ( + head: ( + offset: (-5.5, 0.0, -5.0), + central: ("npc.panda.male.head"), + ), + neck: ( + offset: (-4.5, -1.5, -5.5), + central: ("npc.panda.male.neck"), + ), + jaw: ( + offset: (-2.5, 0.0, -1.0), + central: ("npc.panda.male.jaw"), + ), + torso_front: ( + offset: (-6.5, -12.0, -7.5), + central: ("npc.panda.male.torso_front"), + ), + torso_back: ( + offset: (-6.5, -12.0, -7.0), + central: ("npc.panda.male.torso_back"), + ), + ears: ( + offset: (-5.5, -1.0, 0.0), + central: ("npc.panda.male.ears"), + ), + tail: ( + offset: (-2.5, -5.0, -3.5), + central: ("npc.panda.male.tail"), + ), + ), + (Panda, Female): ( + head: ( + offset: (-5.5, 0.0, -5.0), + central: ("npc.panda.male.head"), + ), + neck: ( + offset: (-4.5, -1.5, -5.5), + central: ("npc.panda.male.neck"), + ), + jaw: ( + offset: (-2.5, 0.0, -1.0), + central: ("npc.panda.male.jaw"), + ), + torso_front: ( + offset: (-6.5, -12.0, -7.5), + central: ("npc.panda.male.torso_front"), + ), + torso_back: ( + offset: (-6.5, -12.0, -7.0), + central: ("npc.panda.male.torso_back"), + ), + ears: ( + offset: (-5.5, -1.0, 0.0), + central: ("npc.panda.male.ears"), + ), + tail: ( + offset: (-2.5, -5.0, -3.5), + central: ("npc.panda.male.tail"), + ), + ), + (Bear, Male): ( + head: ( + offset: (-5.5, 0.0, -5.0), + central: ("npc.bear.male.head"), + ), + neck: ( + offset: (-4.5, -1.5, -5.5), + central: ("npc.bear.male.neck"), + ), + jaw: ( + offset: (-2.5, 0.0, -1.0), + central: ("npc.bear.male.jaw"), + ), + torso_front: ( + offset: (-6.5, -12.0, -7.5), + central: ("npc.bear.male.torso_front"), + ), + torso_back: ( + offset: (-5.5, -12.0, -7.0), + central: ("npc.bear.male.torso_back"), + ), + ears: ( + offset: (-4.5, -1.0, 0.0), + central: ("npc.bear.male.ears"), + ), + tail: ( + offset: (-2.5, -5.0, -3.5), + central: ("npc.bear.male.tail"), + ), + ), + (Bear, Female): ( + head: ( + offset: (-5.5, 0.0, -5.0), + central: ("npc.bear.male.head"), + ), + neck: ( + offset: (-4.5, -1.5, -5.5), + central: ("npc.bear.male.neck"), + ), + jaw: ( + offset: (-2.5, 0.0, -1.0), + central: ("npc.bear.male.jaw"), + ), + torso_front: ( + offset: (-6.5, -12.0, -7.5), + central: ("npc.bear.male.torso_front"), + ), + torso_back: ( + offset: (-5.5, -12.0, -7.0), + central: ("npc.bear.male.torso_back"), + ), + ears: ( + offset: (-4.5, -1.0, 0.0), + central: ("npc.bear.male.ears"), + ), + tail: ( + offset: (-2.5, -5.0, -3.5), + central: ("npc.bear.male.tail"), + ), + ), }) diff --git a/assets/voxygen/voxel/quadruped_medium_lateral_manifest.ron b/assets/voxygen/voxel/quadruped_medium_lateral_manifest.ron index a999b509f4..888954e321 100644 --- a/assets/voxygen/voxel/quadruped_medium_lateral_manifest.ron +++ b/assets/voxygen/voxel/quadruped_medium_lateral_manifest.ron @@ -2,7 +2,7 @@ (Grolgar, Male): ( leg_fl: ( offset: (-2.5, -4.5, -4.0),//these are done very case by case - lateral: ("npc.grolgar.male.leg_fl"), + lateral: ("npc.grolgar.male.leg_fr"), ), leg_fr: ( offset: (-2.5, -4.5, -4.0), @@ -10,7 +10,7 @@ ), leg_bl: ( offset: (-2.5, -3.5, -3.5), - lateral: ("npc.grolgar.male.leg_bl"), + lateral: ("npc.grolgar.male.leg_br"), ), leg_br: ( offset: (-2.0, -3.5, -3.5), @@ -18,7 +18,7 @@ ), foot_fl: ( offset: (-2.5, -4.5, -8.0),//y pivot should be -1/4 of the y dimension of the model - lateral: ("npc.grolgar.male.foot_fl"), + lateral: ("npc.grolgar.male.foot_fr"), ), foot_fr: ( offset: (-2.5, -4.5, -8.0),//y pivot should be -1/4 of the y dimension of the model @@ -26,7 +26,7 @@ ), foot_bl: ( offset: (-2.5, -2.0, -8.0),//y pivot should be -1/4 of the y dimension of the model - lateral: ("npc.grolgar.male.foot_bl"), + lateral: ("npc.grolgar.male.foot_br"), ), foot_br: ( offset: (-2.5, -2.0, -8.0),//y pivot should be -1/4 of the y dimension of the model @@ -36,7 +36,7 @@ (Grolgar, Female): ( leg_fl: ( offset: (-2.5, -4.5, -4.0),//these are done very case by case - lateral: ("npc.grolgar.male.leg_fl"), + lateral: ("npc.grolgar.male.leg_fr"), ), leg_fr: ( offset: (-2.5, -4.5, -4.0), @@ -44,7 +44,7 @@ ), leg_bl: ( offset: (-2.5, -3.5, -3.5), - lateral: ("npc.grolgar.male.leg_bl"), + lateral: ("npc.grolgar.male.leg_br"), ), leg_br: ( offset: (-2.0, -3.5, -3.5), @@ -52,7 +52,7 @@ ), foot_fl: ( offset: (-2.5, -4.5, -8.0),//y pivot should be -1/4 of the y dimension of the model - lateral: ("npc.grolgar.male.foot_fl"), + lateral: ("npc.grolgar.male.foot_fr"), ), foot_fr: ( offset: (-2.5, -4.5, -8.0),//y pivot should be -1/4 of the y dimension of the model @@ -60,7 +60,7 @@ ), foot_bl: ( offset: (-2.5, -2.0, -8.0),//y pivot should be -1/4 of the y dimension of the model - lateral: ("npc.grolgar.male.foot_bl"), + lateral: ("npc.grolgar.male.foot_br"), ), foot_br: ( offset: (-2.5, -2.0, -8.0),//y pivot should be -1/4 of the y dimension of the model @@ -70,7 +70,7 @@ (Saber, Male): ( leg_fl: ( offset: (-2.0, -6.0, -4.5), - lateral: ("npc.saber.male.leg_fl"), + lateral: ("npc.saber.male.leg_fr"), ), leg_fr: ( offset: (-2.0, -6.0, -4.5), @@ -78,7 +78,7 @@ ), leg_bl: ( offset: (-2.0, -3.0, -4.0), - lateral: ("npc.saber.male.leg_bl"), + lateral: ("npc.saber.male.leg_br"), ), leg_br: ( offset: (-2.0, -3.0, -4.0), @@ -86,7 +86,7 @@ ), foot_fl: ( offset: (-2.5, -2.5, -8.0), - lateral: ("npc.saber.male.foot_fl"), + lateral: ("npc.saber.male.foot_fr"), ), foot_fr: ( offset: (-2.5, -2.5, -8.0), @@ -94,7 +94,7 @@ ), foot_bl: ( offset: (-2.5, -2.0, -9.0), - lateral: ("npc.saber.male.foot_bl"), + lateral: ("npc.saber.male.foot_br"), ), foot_br: ( offset: (-2.5, -2.0, -9.0), @@ -104,7 +104,7 @@ (Saber, Female): ( leg_fl: ( offset: (-2.0, -6.0, -4.5), - lateral: ("npc.saber.male.leg_fl"), + lateral: ("npc.saber.male.leg_fr"), ), leg_fr: ( offset: (-2.0, -6.0, -4.5), @@ -112,7 +112,7 @@ ), leg_bl: ( offset: (-2.0, -3.0, -4.0), - lateral: ("npc.saber.male.leg_bl"), + lateral: ("npc.saber.male.leg_br"), ), leg_br: ( offset: (-2.0, -3.0, -4.0), @@ -120,7 +120,7 @@ ), foot_fl: ( offset: (-2.5, -2.5, -8.0), - lateral: ("npc.saber.male.foot_fl"), + lateral: ("npc.saber.male.foot_fr"), ), foot_fr: ( offset: (-2.5, -2.5, -8.0), @@ -128,7 +128,7 @@ ), foot_bl: ( offset: (-2.5, -2.0, -9.0), - lateral: ("npc.saber.male.foot_bl"), + lateral: ("npc.saber.male.foot_br"), ), foot_br: ( offset: (-2.5, -2.0, -9.0), @@ -137,16 +137,16 @@ ), (Tuskram, Male): ( leg_fl: ( - offset: (-2.0, -2.5, -3.0), - lateral: ("npc.tuskram.male.leg_fl"), + offset: (-2.5, -4.5, -5.0), + lateral: ("npc.tuskram.male.leg_fr"), ), leg_fr: ( - offset: (-2.0, -2.5, -3.0), + offset: (-2.5, -4.5, -5.0), lateral: ("npc.tuskram.male.leg_fr"), ), leg_bl: ( offset: (-2.0, -2.5, -3.0), - lateral: ("npc.tuskram.male.leg_bl"), + lateral: ("npc.tuskram.male.leg_br"), ), leg_br: ( offset: (-2.0, -2.5, -3.0), @@ -154,7 +154,7 @@ ), foot_fl: ( offset: (-2.5, -2.0, -8.0), - lateral: ("npc.tuskram.male.foot_fl"), + lateral: ("npc.tuskram.male.foot_fr"), ), foot_fr: ( offset: (-2.5, -2.0, -8.0), @@ -162,7 +162,7 @@ ), foot_bl: ( offset: (-1.5, -1.5, -8.0), - lateral: ("npc.tuskram.male.foot_bl"), + lateral: ("npc.tuskram.male.foot_br"), ), foot_br: ( offset: (-1.5, -1.5, -8.0), @@ -171,16 +171,16 @@ ), (Tuskram, Female): ( leg_fl: ( - offset: (-2.0, -2.5, -3.0), - lateral: ("npc.tuskram.male.leg_fl"), + offset: (-2.5, -4.5, -5.0), + lateral: ("npc.tuskram.male.leg_fr"), ), leg_fr: ( - offset: (-2.0, -2.5, -3.0), + offset: (-2.5, -4.5, -5.0), lateral: ("npc.tuskram.male.leg_fr"), ), leg_bl: ( offset: (-2.0, -2.5, -3.0), - lateral: ("npc.tuskram.male.leg_bl"), + lateral: ("npc.tuskram.male.leg_br"), ), leg_br: ( offset: (-2.0, -2.5, -3.0), @@ -188,7 +188,7 @@ ), foot_fl: ( offset: (-2.5, -2.0, -8.0), - lateral: ("npc.tuskram.male.foot_fl"), + lateral: ("npc.tuskram.male.foot_fr"), ), foot_fr: ( offset: (-2.5, -2.0, -8.0), @@ -196,7 +196,7 @@ ), foot_bl: ( offset: (-1.5, -1.5, -8.0), - lateral: ("npc.tuskram.male.foot_bl"), + lateral: ("npc.tuskram.male.foot_br"), ), foot_br: ( offset: (-1.5, -1.5, -8.0), @@ -206,7 +206,7 @@ (Lion, Male): ( leg_fl: ( offset: (-2.0, -2.5, -3.5), - lateral: ("npc.lion.male.leg_fl"), + lateral: ("npc.lion.male.leg_fr"), ), leg_fr: ( offset: (-2.0, -2.5, -3.5), @@ -214,7 +214,7 @@ ), leg_bl: ( offset: (-2.0, -3.0, -3.5), - lateral: ("npc.lion.male.leg_bl"), + lateral: ("npc.lion.male.leg_br"), ), leg_br: ( offset: (-2.0, -3.0, -3.5), @@ -222,7 +222,7 @@ ), foot_fl: ( offset: (-2.5, -2.0, -8.0), - lateral: ("npc.lion.male.foot_fl"), + lateral: ("npc.lion.male.foot_fr"), ), foot_fr: ( offset: (-2.5, -2.0, -8.0), @@ -230,7 +230,7 @@ ), foot_bl: ( offset: (-2.5, -2.0, -8.0), - lateral: ("npc.lion.male.foot_bl"), + lateral: ("npc.lion.male.foot_br"), ), foot_br: ( offset: (-2.5, -2.0, -8.0), @@ -240,7 +240,7 @@ (Lion, Female): ( leg_fl: ( offset: (-2.0, -2.5, -3.5), - lateral: ("npc.lion.male.leg_fl"), + lateral: ("npc.lion.male.leg_fr"), ), leg_fr: ( offset: (-2.0, -2.5, -3.5), @@ -248,7 +248,7 @@ ), leg_bl: ( offset: (-2.0, -3.0, -3.5), - lateral: ("npc.lion.male.leg_bl"), + lateral: ("npc.lion.male.leg_br"), ), leg_br: ( offset: (-2.0, -3.0, -3.5), @@ -256,7 +256,7 @@ ), foot_fl: ( offset: (-2.5, -2.0, -8.0), - lateral: ("npc.lion.male.foot_fl"), + lateral: ("npc.lion.male.foot_fr"), ), foot_fr: ( offset: (-2.5, -2.0, -8.0), @@ -264,7 +264,7 @@ ), foot_bl: ( offset: (-2.5, -2.0, -8.0), - lateral: ("npc.lion.male.foot_bl"), + lateral: ("npc.lion.male.foot_br"), ), foot_br: ( offset: (-2.5, -2.0, -8.0), @@ -274,7 +274,7 @@ (Tarasque, Male): ( leg_fl: ( offset: (-3.0, -5.0, -4.0), - lateral: ("npc.tarasque.male.leg_fl"), + lateral: ("npc.tarasque.male.leg_fr"), ), leg_fr: ( offset: (-3.0, -5.0, -4.0), @@ -282,7 +282,7 @@ ), leg_bl: ( offset: (-2.0, -3.5, -3.5), - lateral: ("npc.tarasque.male.leg_bl"), + lateral: ("npc.tarasque.male.leg_br"), ), leg_br: ( offset: (-2.0, -3.5, -3.5), @@ -290,7 +290,7 @@ ), foot_fl: ( offset: (-4.0, -3.0, -9.0), - lateral: ("npc.tarasque.male.foot_fl"), + lateral: ("npc.tarasque.male.foot_fr"), ), foot_fr: ( offset: (-4.0, -3.0, -9.0), @@ -298,7 +298,7 @@ ), foot_bl: ( offset: (-2.5, -2.0, -8.0), - lateral: ("npc.tarasque.male.foot_bl"), + lateral: ("npc.tarasque.male.foot_br"), ), foot_br: ( offset: (-2.5, -2.0, -8.0), @@ -308,7 +308,7 @@ (Tarasque, Female): ( leg_fl: ( offset: (-3.0, -5.0, -4.0), - lateral: ("npc.tarasque.male.leg_fl"), + lateral: ("npc.tarasque.male.leg_fr"), ), leg_fr: ( offset: (-3.0, -5.0, -4.0), @@ -316,7 +316,7 @@ ), leg_bl: ( offset: (-2.0, -3.5, -3.5), - lateral: ("npc.tarasque.male.leg_bl"), + lateral: ("npc.tarasque.male.leg_br"), ), leg_br: ( offset: (-2.0, -3.5, -3.5), @@ -324,7 +324,7 @@ ), foot_fl: ( offset: (-4.0, -3.0, -9.0), //(1/4) Y dimension, (1/1) Z dimension - lateral: ("npc.tarasque.male.foot_fl"), + lateral: ("npc.tarasque.male.foot_fr"), ), foot_fr: ( offset: (-4.0, -3.0, -9.0), //(1/4) Y dimension, (1/1) Z dimension @@ -332,7 +332,7 @@ ), foot_bl: ( offset: (-2.5, -2.0, -8.0), - lateral: ("npc.tarasque.male.foot_bl"), + lateral: ("npc.tarasque.male.foot_br"), ), foot_br: ( offset: (-2.5, -2.0, -8.0), @@ -342,7 +342,7 @@ (Tiger, Male): ( leg_fl: ( offset: (-2.0, -3.0, -4.0), - lateral: ("npc.tiger.male.leg_fl"), + lateral: ("npc.tiger.male.leg_fr"), ), leg_fr: ( offset: (-2.0, -3.0, -4.0), @@ -350,7 +350,7 @@ ), leg_bl: ( offset: (-2.0, -3.0, -3.0), - lateral: ("npc.tiger.male.leg_bl"), + lateral: ("npc.tiger.male.leg_br"), ), leg_br: ( offset: (-2.0, -3.0, -3.0), @@ -358,7 +358,7 @@ ), foot_fl: ( offset: (-2.5, -2.0, -7.0), - lateral: ("npc.tiger.male.foot_fl"), + lateral: ("npc.tiger.male.foot_fr"), ), foot_fr: ( offset: (-2.5, -2.0, -7.0), @@ -366,7 +366,7 @@ ), foot_bl: ( offset: (-2.5, -2.0, -8.0), - lateral: ("npc.tiger.male.foot_bl"), + lateral: ("npc.tiger.male.foot_br"), ), foot_br: ( offset: (-2.5, -2.0, -8.0), @@ -376,7 +376,7 @@ (Tiger, Female): ( leg_fl: ( offset: (-2.0, -3.0, -4.0), - lateral: ("npc.tiger.male.leg_fl"), + lateral: ("npc.tiger.male.leg_fr"), ), leg_fr: ( offset: (-2.0, -3.0, -4.0), @@ -384,7 +384,7 @@ ), leg_bl: ( offset: (-2.0, -3.0, -3.0), - lateral: ("npc.tiger.male.leg_bl"), + lateral: ("npc.tiger.male.leg_br"), ), leg_br: ( offset: (-2.0, -3.0, -3.0), @@ -392,7 +392,7 @@ ), foot_fl: ( offset: (-2.5, -2.0, -7.0), - lateral: ("npc.tiger.male.foot_fl"), + lateral: ("npc.tiger.male.foot_fr"), ), foot_fr: ( offset: (-2.5, -2.0, -7.0), @@ -400,7 +400,7 @@ ), foot_bl: ( offset: (-2.5, -2.0, -8.0), - lateral: ("npc.tiger.male.foot_bl"), + lateral: ("npc.tiger.male.foot_br"), ), foot_br: ( offset: (-2.5, -2.0, -8.0), @@ -410,7 +410,7 @@ (Wolf, Male): ( leg_fl: ( offset: (-2.0, -3.5, -4.0), - lateral: ("npc.wolf.male.leg_fl"), + lateral: ("npc.wolf.male.leg_fr"), ), leg_fr: ( offset: (-2.0, -3.5, -4.0), @@ -418,7 +418,7 @@ ), leg_bl: ( offset: (-1.5, -3.5, -3.5), - lateral: ("npc.wolf.male.leg_bl"), + lateral: ("npc.wolf.male.leg_br"), ), leg_br: ( offset: (-1.5, -3.5, -3.5), @@ -426,7 +426,7 @@ ), foot_fl: ( offset: (-1.5, -2.5, -10.0), - lateral: ("npc.wolf.male.foot_fl"), + lateral: ("npc.wolf.male.foot_fr"), ), foot_fr: ( offset: (-1.5, -2.5, -10.0), @@ -434,7 +434,7 @@ ), foot_bl: ( offset: (-1.5, -2.5, -10.0), - lateral: ("npc.wolf.male.foot_bl"), + lateral: ("npc.wolf.male.foot_br"), ), foot_br: ( offset: (-1.5, -2.5, -10.0), @@ -444,7 +444,7 @@ (Wolf, Female): ( leg_fl: ( offset: (-2.0, -3.5, -4.0), - lateral: ("npc.wolf.male.leg_fl"), + lateral: ("npc.wolf.male.leg_fr"), ), leg_fr: ( offset: (-2.0, -3.5, -4.0), @@ -452,7 +452,7 @@ ), leg_bl: ( offset: (-1.5, -3.5, -3.5), - lateral: ("npc.wolf.male.leg_bl"), + lateral: ("npc.wolf.male.leg_br"), ), leg_br: ( offset: (-1.5, -3.5, -3.5), @@ -460,7 +460,7 @@ ), foot_fl: ( offset: (-1.5, -2.5, -10.0), - lateral: ("npc.wolf.male.foot_fl"), + lateral: ("npc.wolf.male.foot_fr"), ), foot_fr: ( offset: (-1.5, -2.5, -10.0), @@ -468,7 +468,7 @@ ), foot_bl: ( offset: (-1.5, -2.5, -10.0), - lateral: ("npc.wolf.male.foot_bl"), + lateral: ("npc.wolf.male.foot_br"), ), foot_br: ( offset: (-1.5, -2.5, -10.0), @@ -478,7 +478,7 @@ (Frostfang, Male): ( leg_fl: ( offset: (-1.5, -3.5, -3.5), - lateral: ("npc.frostfang.male.leg_fl"), + lateral: ("npc.frostfang.male.leg_fr"), ), leg_fr: ( offset: (-1.5, -3.5, -3.5), @@ -486,7 +486,7 @@ ), leg_bl: ( offset: (-1.5, -3.5, -3.5), - lateral: ("npc.frostfang.male.leg_bl"), + lateral: ("npc.frostfang.male.leg_br"), ), leg_br: ( offset: (-1.5, -3.5, -3.5), @@ -494,7 +494,7 @@ ), foot_fl: ( offset: (-2.5, -1.5, -6.0), - lateral: ("npc.frostfang.male.foot_fl"), + lateral: ("npc.frostfang.male.foot_fr"), ), foot_fr: ( offset: (-2.5, -1.5, -6.0), @@ -502,7 +502,7 @@ ), foot_bl: ( offset: (-2.5, -1.5, -6.0), - lateral: ("npc.frostfang.male.foot_bl"), + lateral: ("npc.frostfang.male.foot_br"), ), foot_br: ( offset: (-2.5, -1.5, -6.0), @@ -512,7 +512,7 @@ (Frostfang, Female): ( leg_fl: ( offset: (-1.5, -3.5, -3.5), - lateral: ("npc.frostfang.male.leg_fl"), + lateral: ("npc.frostfang.male.leg_fr"), ), leg_fr: ( offset: (-1.5, -3.5, -3.5), @@ -520,7 +520,7 @@ ), leg_bl: ( offset: (-1.5, -3.5, -3.5), - lateral: ("npc.frostfang.male.leg_bl"), + lateral: ("npc.frostfang.male.leg_br"), ), leg_br: ( offset: (-1.5, -3.5, -3.5), @@ -528,7 +528,7 @@ ), foot_fl: ( offset: (-2.5, -1.5, -6.0), - lateral: ("npc.frostfang.male.foot_fl"), + lateral: ("npc.frostfang.male.foot_fr"), ), foot_fr: ( offset: (-2.5, -1.5, -6.0), @@ -536,7 +536,7 @@ ), foot_bl: ( offset: (-2.5, -1.5, -6.0), - lateral: ("npc.frostfang.male.foot_bl"), + lateral: ("npc.frostfang.male.foot_br"), ), foot_br: ( offset: (-2.5, -1.5, -6.0), @@ -546,7 +546,7 @@ (Mouflon, Male): ( leg_fl: ( offset: (-1.5, -2.5, -4.0), - lateral: ("npc.mouflon.male.leg_fl"), + lateral: ("npc.mouflon.male.leg_fr"), ), leg_fr: ( offset: (-1.5, -2.5, -4.0), @@ -554,7 +554,7 @@ ), leg_bl: ( offset: (-2.0, -1.0, -2.5), - lateral: ("npc.mouflon.male.leg_bl"), + lateral: ("npc.mouflon.male.leg_br"), ), leg_br: ( offset: (-2.0, -1.0, -2.5), @@ -562,7 +562,7 @@ ), foot_fl: ( offset: (-1.0, -1.0, -7.0), - lateral: ("npc.mouflon.male.foot_fl"), + lateral: ("npc.mouflon.male.foot_fr"), ), foot_fr: ( offset: (-1.0, -1.0, -7.0), @@ -570,7 +570,7 @@ ), foot_bl: ( offset: (-1.0, -2.0, -10.0), - lateral: ("npc.mouflon.male.foot_bl"), + lateral: ("npc.mouflon.male.foot_br"), ), foot_br: ( offset: (-1.0, -2.0, -10.0), @@ -580,7 +580,7 @@ (Mouflon, Female): ( leg_fl: ( offset: (-1.5, -2.5, -4.0), - lateral: ("npc.mouflon.male.leg_fl"), + lateral: ("npc.mouflon.male.leg_fr"), ), leg_fr: ( offset: (-1.5, -2.5, -4.0), @@ -588,7 +588,7 @@ ), leg_bl: ( offset: (-2.0, -2.5, -4.0), - lateral: ("npc.mouflon.male.leg_bl"), + lateral: ("npc.mouflon.male.leg_br"), ), leg_br: ( offset: (-2.0, -2.5, -4.0), @@ -596,7 +596,7 @@ ), foot_fl: ( offset: (-1.0, -1.0, -7.0), - lateral: ("npc.mouflon.male.foot_fl"), + lateral: ("npc.mouflon.male.foot_fr"), ), foot_fr: ( offset: (-1.0, -1.0, -7.0), @@ -604,7 +604,7 @@ ), foot_bl: ( offset: (-1.0, -2.0, -10.0), - lateral: ("npc.mouflon.male.foot_bl"), + lateral: ("npc.mouflon.male.foot_br"), ), foot_br: ( offset: (-1.0, -2.0, -10.0), @@ -614,7 +614,7 @@ (Catoblepas, Male): ( leg_fl: ( offset: (-2.5, -4.0, -5.0), - lateral: ("npc.catoblepas.male.leg_fl"), + lateral: ("npc.catoblepas.male.leg_fr"), ), leg_fr: ( offset: (-2.5, -4.0, -5.0), @@ -622,7 +622,7 @@ ), leg_bl: ( offset: (-2.0, -3.0 , -4.0), - lateral: ("npc.catoblepas.male.leg_bl"), + lateral: ("npc.catoblepas.male.leg_br"), ), leg_br: ( offset: (-2.0, -3.0, -4.0), @@ -630,7 +630,7 @@ ), foot_fl: ( offset: (-3.0, -3.0, -9.0), - lateral: ("npc.catoblepas.male.foot_fl"), + lateral: ("npc.catoblepas.male.foot_fr"), ), foot_fr: ( offset: (-3.0, -3.0, -9.0), @@ -638,7 +638,7 @@ ), foot_bl: ( offset: (-2.5, -3.5, -9.0), - lateral: ("npc.catoblepas.male.foot_bl"), + lateral: ("npc.catoblepas.male.foot_br"), ), foot_br: ( offset: (-2.5, -3.5, -9.0), @@ -648,7 +648,7 @@ (Catoblepas, Female): ( leg_fl: ( offset: (-2.5, -4.0, -5.0), - lateral: ("npc.catoblepas.male.leg_fl"), + lateral: ("npc.catoblepas.male.leg_fr"), ), leg_fr: ( offset: (-2.5, -4.0, -5.0), @@ -656,7 +656,7 @@ ), leg_bl: ( offset: (-2.0, -3.0 , -4.0), - lateral: ("npc.catoblepas.male.leg_bl"), + lateral: ("npc.catoblepas.male.leg_br"), ), leg_br: ( offset: (-2.0, -3.0, -4.0), @@ -664,7 +664,7 @@ ), foot_fl: ( offset: (-3.0, -3.0, -9.0), - lateral: ("npc.catoblepas.male.foot_fl"), + lateral: ("npc.catoblepas.male.foot_fr"), ), foot_fr: ( offset: (-3.0, -3.0, -9.0), @@ -672,7 +672,7 @@ ), foot_bl: ( offset: (-2.5, -3.5, -9.0), - lateral: ("npc.catoblepas.male.foot_bl"), + lateral: ("npc.catoblepas.male.foot_br"), ), foot_br: ( offset: (-2.5, -3.5, -9.0), @@ -682,7 +682,7 @@ (Bonerattler, Male): ( leg_fl: ( offset: (-1.5, -6.0, -3.0), - lateral: ("npc.bonerattler.male.leg_fl"), + lateral: ("npc.bonerattler.male.leg_fr"), ), leg_fr: ( offset: (-1.5, -6.0, -3.0), @@ -690,7 +690,7 @@ ), leg_bl: ( offset: (-1.5, -1.0, -3.0), - lateral: ("npc.bonerattler.male.leg_bl"), + lateral: ("npc.bonerattler.male.leg_br"), ), leg_br: ( offset: (-1.5, -1.0, -3.0), @@ -698,7 +698,7 @@ ), foot_fl: ( offset: (-2.5, -3.0, -6.0), - lateral: ("npc.bonerattler.male.foot_fl"), + lateral: ("npc.bonerattler.male.foot_fr"), ), foot_fr: ( offset: (-2.5, -3.0, -6.0), @@ -706,7 +706,7 @@ ), foot_bl: ( offset: (-2.5, -4.0, -6.0), - lateral: ("npc.bonerattler.male.foot_bl"), + lateral: ("npc.bonerattler.male.foot_br"), ), foot_br: ( offset: (-2.5, -4.0, -6.0), @@ -716,7 +716,7 @@ (Bonerattler, Female): ( leg_fl: ( offset: (-1.5, -6.0, -3.0), - lateral: ("npc.bonerattler.male.leg_fl"), + lateral: ("npc.bonerattler.male.leg_fr"), ), leg_fr: ( offset: (-1.5, -6.0, -3.0), @@ -724,7 +724,7 @@ ), leg_bl: ( offset: (-1.5, -1.0, -3.0), - lateral: ("npc.bonerattler.male.leg_bl"), + lateral: ("npc.bonerattler.male.leg_br"), ), leg_br: ( offset: (-1.5, -1.0, -3.0), @@ -732,7 +732,7 @@ ), foot_fl: ( offset: (-2.5, -3.0, -6.0), - lateral: ("npc.bonerattler.male.foot_fl"), + lateral: ("npc.bonerattler.male.foot_fr"), ), foot_fr: ( offset: (-2.5, -3.0, -6.0), @@ -740,7 +740,7 @@ ), foot_bl: ( offset: (-2.5, -4.0, -6.0), - lateral: ("npc.bonerattler.male.foot_bl"), + lateral: ("npc.bonerattler.male.foot_br"), ), foot_br: ( offset: (-2.5, -4.0, -6.0), @@ -750,7 +750,7 @@ (Deer, Male): ( leg_fl: ( offset: (-1.5, -2.5, -3.5), - lateral: ("npc.deer.male.leg_fl"), + lateral: ("npc.deer.male.leg_fr"), ), leg_fr: ( offset: (-1.5, -2.5, -3.5), @@ -758,7 +758,7 @@ ), leg_bl: ( offset: (-2.0, -2.5, -4.0), - lateral: ("npc.deer.male.leg_bl"), + lateral: ("npc.deer.male.leg_br"), ), leg_br: ( offset: (-2.0, -2.5, -4.0), @@ -766,7 +766,7 @@ ), foot_fl: ( offset: (-1.0, -1.0, -8.0), - lateral: ("npc.deer.male.foot_fl"), + lateral: ("npc.deer.male.foot_fr"), ), foot_fr: ( offset: (-1.0, -1.0, -8.0), @@ -774,7 +774,7 @@ ), foot_bl: ( offset: (-1.0, -2.0, -9.0), - lateral: ("npc.deer.male.foot_bl"), + lateral: ("npc.deer.male.foot_br"), ), foot_br: ( offset: (-1.0, -2.0, -9.0), @@ -784,7 +784,7 @@ (Deer, Female): ( leg_fl: ( offset: (-1.5, -2.5, -3.5), - lateral: ("npc.deer.female.leg_fl"), + lateral: ("npc.deer.female.leg_fr"), ), leg_fr: ( offset: (-1.5, -2.5, -3.5), @@ -792,7 +792,7 @@ ), leg_bl: ( offset: (-2.0, -2.5, -4.0), - lateral: ("npc.deer.female.leg_bl"), + lateral: ("npc.deer.female.leg_br"), ), leg_br: ( offset: (-2.0, -2.5, -4.0), @@ -800,7 +800,7 @@ ), foot_fl: ( offset: (-1.0, -1.0, -8.0), - lateral: ("npc.deer.female.foot_fl"), + lateral: ("npc.deer.female.foot_fr"), ), foot_fr: ( offset: (-1.0, -1.0, -8.0), @@ -808,7 +808,7 @@ ), foot_bl: ( offset: (-1.0, -2.0, -9.0), - lateral: ("npc.deer.female.foot_bl"), + lateral: ("npc.deer.female.foot_br"), ), foot_br: ( offset: (-1.0, -2.0, -9.0), @@ -818,7 +818,7 @@ (Hirdrasil, Male): ( leg_fl: ( offset: (-1.5, -3.0, -4.0), - lateral: ("npc.hirdrasil.male.leg_fl"), + lateral: ("npc.hirdrasil.male.leg_fr"), ), leg_fr: ( offset: (-1.5, -3.0, -4.0), @@ -826,7 +826,7 @@ ), leg_bl: ( offset: (-2.0, -2.5, -5.0), - lateral: ("npc.hirdrasil.male.leg_bl"), + lateral: ("npc.hirdrasil.male.leg_br"), ), leg_br: ( offset: (-2.0, -2.5, -5.0), @@ -834,7 +834,7 @@ ), foot_fl: ( offset: (-2.0, -1.0, -9.0), - lateral: ("npc.hirdrasil.male.foot_fl"), + lateral: ("npc.hirdrasil.male.foot_fr"), ), foot_fr: ( offset: (-2.0, -1.0, -9.0), @@ -842,7 +842,7 @@ ), foot_bl: ( offset: (-2.0, -2.5, -7.0), - lateral: ("npc.hirdrasil.male.foot_bl"), + lateral: ("npc.hirdrasil.male.foot_br"), ), foot_br: ( offset: (-2.0, -2.5, -7.0), @@ -852,7 +852,7 @@ (Hirdrasil, Female): ( leg_fl: ( offset: (-1.5, -3.0, -4.0), - lateral: ("npc.hirdrasil.male.leg_fl"), + lateral: ("npc.hirdrasil.male.leg_fr"), ), leg_fr: ( offset: (-1.5, -3.0, -4.0), @@ -860,7 +860,7 @@ ), leg_bl: ( offset: (-2.0, -2.5, -5.0), - lateral: ("npc.hirdrasil.male.leg_bl"), + lateral: ("npc.hirdrasil.male.leg_br"), ), leg_br: ( offset: (-2.0, -2.5, -5.0), @@ -868,7 +868,7 @@ ), foot_fl: ( offset: (-2.0, -1.0, -9.0), - lateral: ("npc.hirdrasil.male.foot_fl"), + lateral: ("npc.hirdrasil.male.foot_fr"), ), foot_fr: ( offset: (-2.0, -1.0, -9.0), @@ -876,7 +876,7 @@ ), foot_bl: ( offset: (-2.0, -2.5, -7.0), - lateral: ("npc.hirdrasil.male.foot_bl"), + lateral: ("npc.hirdrasil.male.foot_br"), ), foot_br: ( offset: (-2.0, -2.5, -7.0), @@ -886,7 +886,7 @@ (Roshwalr, Male): ( leg_fl: ( offset: (-4.0, -2.5, -4.0), - lateral: ("npc.roshwalr.male.leg_fl"), + lateral: ("npc.roshwalr.male.leg_fr"), ), leg_fr: ( offset: (-4.0, -2.5, -4.0), @@ -894,7 +894,7 @@ ), leg_bl: ( offset: (-2.0, -4.0, -2.5), - lateral: ("npc.roshwalr.male.leg_bl"), + lateral: ("npc.roshwalr.male.leg_br"), ), leg_br: ( offset: (-2.0, -4.0, -2.5), @@ -902,7 +902,7 @@ ), foot_fl: ( offset: (-4.5, -1.0, -7.0), - lateral: ("npc.roshwalr.male.foot_fl"), + lateral: ("npc.roshwalr.male.foot_fr"), ), foot_fr: ( offset: (-4.5, -1.0, -7.0), @@ -910,7 +910,7 @@ ), foot_bl: ( offset: (-2.5, -2.0, -3.0), - lateral: ("npc.roshwalr.male.foot_bl"), + lateral: ("npc.roshwalr.male.foot_br"), ), foot_br: ( offset: (-2.5, -2.0, -3.0), @@ -920,7 +920,7 @@ (Roshwalr, Female): ( leg_fl: ( offset: (-4.0, -2.5, -4.0), - lateral: ("npc.roshwalr.male.leg_fl"), + lateral: ("npc.roshwalr.male.leg_fr"), ), leg_fr: ( offset: (-4.0, -2.5, -4.0), @@ -928,7 +928,7 @@ ), leg_bl: ( offset: (-2.0, -4.0, -2.5), - lateral: ("npc.roshwalr.male.leg_bl"), + lateral: ("npc.roshwalr.male.leg_br"), ), leg_br: ( offset: (-2.0, -4.0, -2.5), @@ -936,7 +936,7 @@ ), foot_fl: ( offset: (-4.5, -1.0, -7.0), - lateral: ("npc.roshwalr.male.foot_fl"), + lateral: ("npc.roshwalr.male.foot_fr"), ), foot_fr: ( offset: (-4.5, -1.0, -7.0), @@ -944,7 +944,7 @@ ), foot_bl: ( offset: (-2.5, -2.0, -3.0), - lateral: ("npc.roshwalr.male.foot_bl"), + lateral: ("npc.roshwalr.male.foot_br"), ), foot_br: ( offset: (-2.5, -2.0, -3.0), @@ -954,7 +954,7 @@ (Donkey, Male): ( leg_fl: ( offset: (-2.5, -2.5, -4.5), - lateral: ("npc.donkey.male.leg_fl"), + lateral: ("npc.donkey.male.leg_fr"), ), leg_fr: ( offset: (-2.5, -2.5, -4.5), @@ -962,7 +962,7 @@ ), leg_bl: ( offset: (-2.5, -3.0, -4.5), - lateral: ("npc.donkey.male.leg_bl"), + lateral: ("npc.donkey.male.leg_br"), ), leg_br: ( offset: (-2.5, -3.0, -4.5), @@ -970,7 +970,7 @@ ), foot_fl: ( offset: (-2.0, -2.5, -8.0), - lateral: ("npc.donkey.male.foot_fl"), + lateral: ("npc.donkey.male.foot_fr"), ), foot_fr: ( offset: (-2.0, -2.5, -8.0), @@ -978,7 +978,7 @@ ), foot_bl: ( offset: (-2.0, -3.0, -8.0), - lateral: ("npc.donkey.male.foot_bl"), + lateral: ("npc.donkey.male.foot_br"), ), foot_br: ( offset: (-2.0, -3.0, -8.0), @@ -988,7 +988,7 @@ (Donkey, Female): ( leg_fl: ( offset: (-2.5, -2.5, -4.5), - lateral: ("npc.donkey.male.leg_fl"), + lateral: ("npc.donkey.male.leg_fr"), ), leg_fr: ( offset: (-2.5, -2.5, -4.5), @@ -996,7 +996,7 @@ ), leg_bl: ( offset: (-2.5, -3.0, -4.5), - lateral: ("npc.donkey.male.leg_bl"), + lateral: ("npc.donkey.male.leg_br"), ), leg_br: ( offset: (-2.5, -3.0, -4.5), @@ -1004,7 +1004,7 @@ ), foot_fl: ( offset: (-2.0, -2.5, -8.0), - lateral: ("npc.donkey.male.foot_fl"), + lateral: ("npc.donkey.male.foot_fr"), ), foot_fr: ( offset: (-2.0, -2.5, -8.0), @@ -1012,7 +1012,7 @@ ), foot_bl: ( offset: (-2.0, -3.0, -8.0), - lateral: ("npc.donkey.male.foot_bl"), + lateral: ("npc.donkey.male.foot_br"), ), foot_br: ( offset: (-2.0, -3.0, -8.0), @@ -1022,7 +1022,7 @@ (Camel, Male): ( leg_fl: ( offset: (-2.5, -3.5, -7.0), - lateral: ("npc.camel.male.leg_fl"), + lateral: ("npc.camel.male.leg_fr"), ), leg_fr: ( offset: (-2.5, -3.5, -7.0), @@ -1030,7 +1030,7 @@ ), leg_bl: ( offset: (-2.5, -3.5, -8.0), - lateral: ("npc.camel.male.leg_bl"), + lateral: ("npc.camel.male.leg_br"), ), leg_br: ( offset: (-2.5, -3.5, -8.0), @@ -1038,7 +1038,7 @@ ), foot_fl: ( offset: (-2.5, -2.5, -9.0), - lateral: ("npc.camel.male.foot_fl"), + lateral: ("npc.camel.male.foot_fr"), ), foot_fr: ( offset: (-2.5, -2.5, -9.0), @@ -1046,7 +1046,7 @@ ), foot_bl: ( offset: (-2.5, -3.0, -8.0), - lateral: ("npc.camel.male.foot_bl"), + lateral: ("npc.camel.male.foot_br"), ), foot_br: ( offset: (-2.5, -3.0, -8.0), @@ -1056,7 +1056,7 @@ (Camel, Female): ( leg_fl: ( offset: (-2.5, -3.5, -7.0), - lateral: ("npc.camel.male.leg_fl"), + lateral: ("npc.camel.male.leg_fr"), ), leg_fr: ( offset: (-2.5, -3.5, -7.0), @@ -1064,7 +1064,7 @@ ), leg_bl: ( offset: (-2.5, -3.5, -8.0), - lateral: ("npc.camel.male.leg_bl"), + lateral: ("npc.camel.male.leg_br"), ), leg_br: ( offset: (-2.5, -3.5, -8.0), @@ -1072,7 +1072,7 @@ ), foot_fl: ( offset: (-2.5, -2.5, -9.0), - lateral: ("npc.camel.male.foot_fl"), + lateral: ("npc.camel.male.foot_fr"), ), foot_fr: ( offset: (-2.5, -2.5, -9.0), @@ -1080,7 +1080,7 @@ ), foot_bl: ( offset: (-2.5, -3.0, -8.0), - lateral: ("npc.camel.male.foot_bl"), + lateral: ("npc.camel.male.foot_br"), ), foot_br: ( offset: (-2.5, -3.0, -8.0), @@ -1090,7 +1090,7 @@ (Zebra, Male): ( leg_fl: ( offset: (-2.0, -2.5, -4.0), - lateral: ("npc.zebra.male.leg_fl"), + lateral: ("npc.zebra.male.leg_fr"), ), leg_fr: ( offset: (-2.0, -2.5, -4.0), @@ -1098,7 +1098,7 @@ ), leg_bl: ( offset: (-2.0, -3.0, -4.0), - lateral: ("npc.zebra.male.leg_bl"), + lateral: ("npc.zebra.male.leg_br"), ), leg_br: ( offset: (-2.0, -3.0, -4.0), @@ -1106,7 +1106,7 @@ ), foot_fl: ( offset: (-1.5, -2.0, -8.0), - lateral: ("npc.zebra.male.foot_fl"), + lateral: ("npc.zebra.male.foot_fr"), ), foot_fr: ( offset: (-1.5, -2.0, -8.0), @@ -1114,7 +1114,7 @@ ), foot_bl: ( offset: (-1.5, -2.5, -9.0), - lateral: ("npc.zebra.male.foot_bl"), + lateral: ("npc.zebra.male.foot_br"), ), foot_br: ( offset: (-1.5, -2.5, -9.0), @@ -1124,7 +1124,7 @@ (Zebra, Female): ( leg_fl: ( offset: (-2.0, -2.5, -4.0), - lateral: ("npc.zebra.male.leg_fl"), + lateral: ("npc.zebra.male.leg_fr"), ), leg_fr: ( offset: (-2.0, -2.5, -4.0), @@ -1132,7 +1132,7 @@ ), leg_bl: ( offset: (-2.0, -3.0, -4.0), - lateral: ("npc.zebra.male.leg_bl"), + lateral: ("npc.zebra.male.leg_br"), ), leg_br: ( offset: (-2.0, -3.0, -4.0), @@ -1140,7 +1140,7 @@ ), foot_fl: ( offset: (-1.5, -2.0, -8.0), - lateral: ("npc.zebra.male.foot_fl"), + lateral: ("npc.zebra.male.foot_fr"), ), foot_fr: ( offset: (-1.5, -2.0, -8.0), @@ -1148,7 +1148,7 @@ ), foot_bl: ( offset: (-1.5, -2.5, -9.0), - lateral: ("npc.zebra.male.foot_bl"), + lateral: ("npc.zebra.male.foot_br"), ), foot_br: ( offset: (-1.5, -2.5, -9.0), @@ -1158,7 +1158,7 @@ (Antelope, Male): ( leg_fl: ( offset: (-1.5, -2.5, -4.0), - lateral: ("npc.antelope.male.leg_fl"), + lateral: ("npc.antelope.male.leg_fr"), ), leg_fr: ( offset: (-1.5, -2.5, -4.0), @@ -1166,7 +1166,7 @@ ), leg_bl: ( offset: (-2.0, -2.5, -5.0), - lateral: ("npc.antelope.male.leg_bl"), + lateral: ("npc.antelope.male.leg_br"), ), leg_br: ( offset: (-2.0, -2.5, -5.0), @@ -1174,7 +1174,7 @@ ), foot_fl: ( offset: (-1.0, -1.5, -8.0), - lateral: ("npc.antelope.male.foot_fl"), + lateral: ("npc.antelope.male.foot_fr"), ), foot_fr: ( offset: (-1.0, -1.5, -8.0), @@ -1182,7 +1182,7 @@ ), foot_bl: ( offset: (-1.0, -1.0, -7.0), - lateral: ("npc.antelope.male.foot_bl"), + lateral: ("npc.antelope.male.foot_br"), ), foot_br: ( offset: (-1.0, -1.0, -7.0), @@ -1192,7 +1192,7 @@ (Antelope, Female): ( leg_fl: ( offset: (-1.5, -2.5, -4.0), - lateral: ("npc.antelope.male.leg_fl"), + lateral: ("npc.antelope.male.leg_fr"), ), leg_fr: ( offset: (-1.5, -2.5, -4.0), @@ -1200,7 +1200,7 @@ ), leg_bl: ( offset: (-2.0, -2.5, -5.0), - lateral: ("npc.antelope.male.leg_bl"), + lateral: ("npc.antelope.male.leg_br"), ), leg_br: ( offset: (-2.0, -2.5, -5.0), @@ -1208,7 +1208,7 @@ ), foot_fl: ( offset: (-1.0, -1.5, -8.0), - lateral: ("npc.antelope.male.foot_fl"), + lateral: ("npc.antelope.male.foot_fr"), ), foot_fr: ( offset: (-1.0, -1.5, -8.0), @@ -1216,7 +1216,7 @@ ), foot_bl: ( offset: (-1.0, -1.0, -7.0), - lateral: ("npc.antelope.male.foot_bl"), + lateral: ("npc.antelope.male.foot_br"), ), foot_br: ( offset: (-1.0, -1.0, -7.0), @@ -1226,7 +1226,7 @@ (Kelpie, Male): ( leg_fl: ( offset: (-2.0, -2.5, -5.0), - lateral: ("npc.kelpie.male.leg_fl"), + lateral: ("npc.kelpie.male.leg_fr"), ), leg_fr: ( offset: (-2.0, -2.5, -5.0), @@ -1234,7 +1234,7 @@ ), leg_bl: ( offset: (-2.0, -3.0, -4.5), - lateral: ("npc.kelpie.male.leg_bl"), + lateral: ("npc.kelpie.male.leg_br"), ), leg_br: ( offset: (-2.0, -3.0, -4.5), @@ -1242,7 +1242,7 @@ ), foot_fl: ( offset: (-1.5, -2.0, -8.0), - lateral: ("npc.kelpie.male.foot_fl"), + lateral: ("npc.kelpie.male.foot_fr"), ), foot_fr: ( offset: (-1.5, -2.0, -8.0), @@ -1250,7 +1250,7 @@ ), foot_bl: ( offset: (-1.5, -2.5, -9.0), - lateral: ("npc.kelpie.male.foot_bl"), + lateral: ("npc.kelpie.male.foot_br"), ), foot_br: ( offset: (-1.5, -2.5, -9.0), @@ -1260,7 +1260,7 @@ (Kelpie, Female): ( leg_fl: ( offset: (-2.0, -2.5, -5.0), - lateral: ("npc.kelpie.male.leg_fl"), + lateral: ("npc.kelpie.male.leg_fr"), ), leg_fr: ( offset: (-2.0, -2.5, -5.0), @@ -1268,7 +1268,7 @@ ), leg_bl: ( offset: (-2.0, -3.0, -4.5), - lateral: ("npc.kelpie.male.leg_bl"), + lateral: ("npc.kelpie.male.leg_br"), ), leg_br: ( offset: (-2.0, -3.0, -4.5), @@ -1276,7 +1276,7 @@ ), foot_fl: ( offset: (-1.5, -2.0, -8.0), - lateral: ("npc.kelpie.male.foot_fl"), + lateral: ("npc.kelpie.male.foot_fr"), ), foot_fr: ( offset: (-1.5, -2.0, -8.0), @@ -1284,7 +1284,7 @@ ), foot_bl: ( offset: (-1.5, -2.5, -9.0), - lateral: ("npc.kelpie.male.foot_bl"), + lateral: ("npc.kelpie.male.foot_br"), ), foot_br: ( offset: (-1.5, -2.5, -9.0), @@ -1294,7 +1294,7 @@ (Horse, Male): ( leg_fl: ( offset: (-2.0, -2.5, -6.0), - lateral: ("npc.horse.male.leg_fl"), + lateral: ("npc.horse.male.leg_fr"), ), leg_fr: ( offset: (-2.0, -2.5, -6.0), @@ -1302,7 +1302,7 @@ ), leg_bl: ( offset: (-2.0, -3.0, -4.5), - lateral: ("npc.horse.male.leg_bl"), + lateral: ("npc.horse.male.leg_br"), ), leg_br: ( offset: (-2.0, -3.0, -4.5), @@ -1310,7 +1310,7 @@ ), foot_fl: ( offset: (-1.5, -2.0, -8.0), - lateral: ("npc.horse.male.foot_fl"), + lateral: ("npc.horse.male.foot_fr"), ), foot_fr: ( offset: (-1.5, -2.0, -8.0), @@ -1318,7 +1318,7 @@ ), foot_bl: ( offset: (-1.5, -1.5, -9.0), - lateral: ("npc.horse.male.foot_bl"), + lateral: ("npc.horse.male.foot_br"), ), foot_br: ( offset: (-1.5, -1.5, -9.0), @@ -1328,7 +1328,7 @@ (Horse, Female): ( leg_fl: ( offset: (-2.0, -2.5, -6.0), - lateral: ("npc.horse.male.leg_fl"), + lateral: ("npc.horse.male.leg_fr"), ), leg_fr: ( offset: (-2.0, -2.5, -6.0), @@ -1336,7 +1336,7 @@ ), leg_bl: ( offset: (-2.0, -3.0, -4.5), - lateral: ("npc.horse.male.leg_bl"), + lateral: ("npc.horse.male.leg_br"), ), leg_br: ( offset: (-2.0, -3.0, -4.5), @@ -1344,7 +1344,7 @@ ), foot_fl: ( offset: (-1.5, -2.0, -8.0), - lateral: ("npc.horse.male.foot_fl"), + lateral: ("npc.horse.male.foot_fr"), ), foot_fr: ( offset: (-1.5, -2.0, -8.0), @@ -1352,11 +1352,487 @@ ), foot_bl: ( offset: (-1.5, -1.5, -9.0), - lateral: ("npc.horse.male.foot_bl"), + lateral: ("npc.horse.male.foot_br"), ), foot_br: ( offset: (-1.5, -1.5, -9.0), lateral: ("npc.horse.male.foot_br"), ), ), + (Barghest, Male): ( + leg_fl: ( + offset: (-3.5, -4.0, -5.0), + lateral: ("npc.barghest.male.leg_fr"), + ), + leg_fr: ( + offset: (-3.5, -4.0, -5.0), + lateral: ("npc.barghest.male.leg_fr"), + ), + leg_bl: ( + offset: (-2.0, -3.5, -3.5), + lateral: ("npc.barghest.male.leg_br"), + ), + leg_br: ( + offset: (-2.0, -3.5, -3.5), + lateral: ("npc.barghest.male.leg_br"), + ), + foot_fl: ( + offset: (-4.5, -5.5, -7.0), + lateral: ("npc.barghest.male.foot_fr"), + ), + foot_fr: ( + offset: (-4.5, -5.5, -7.0), + lateral: ("npc.barghest.male.foot_fr"), + ), + foot_bl: ( + offset: (-2.5, -3.5, -4.0), + lateral: ("npc.barghest.male.foot_br"), + ), + foot_br: ( + offset: (-2.5, -3.5, -4.0), + lateral: ("npc.barghest.male.foot_br"), + ), + ), + (Barghest, Female): ( + leg_fl: ( + offset: (-3.5, -4.0, -5.0), + lateral: ("npc.barghest.male.leg_fr"), + ), + leg_fr: ( + offset: (-3.5, -4.0, -5.0), + lateral: ("npc.barghest.male.leg_fr"), + ), + leg_bl: ( + offset: (-2.0, -3.5, -3.5), + lateral: ("npc.barghest.male.leg_br"), + ), + leg_br: ( + offset: (-2.0, -3.5, -3.5), + lateral: ("npc.barghest.male.leg_br"), + ), + foot_fl: ( + offset: (-4.5, -5.5, -7.0), + lateral: ("npc.barghest.male.foot_fr"), + ), + foot_fr: ( + offset: (-4.5, -5.5, -7.0), + lateral: ("npc.barghest.male.foot_fr"), + ), + foot_bl: ( + offset: (-2.5, -3.5, -4.0), + lateral: ("npc.barghest.male.foot_br"), + ), + foot_br: ( + offset: (-2.5, -3.5, -4.0), + lateral: ("npc.barghest.male.foot_br"), + ), + ), + (Cattle, Male): ( + leg_fl: ( + offset: (-2.5, -3.0, -6.5), + lateral: ("npc.cattle.male.leg_fr"), + ), + leg_fr: ( + offset: (-2.5, -3.0, -6.5), + lateral: ("npc.cattle.male.leg_fr"), + ), + leg_bl: ( + offset: (-2.0, -3.0, -5.0), + lateral: ("npc.cattle.male.leg_br"), + ), + leg_br: ( + offset: (-2.0, -3.0, -5.0), + lateral: ("npc.cattle.male.leg_br"), + ), + foot_fl: ( + offset: (-1.5, -2.0, -8.0), + lateral: ("npc.cattle.male.foot_fr"), + ), + foot_fr: ( + offset: (-1.5, -2.0, -8.0), + lateral: ("npc.cattle.male.foot_fr"), + ), + foot_bl: ( + offset: (-1.5, -2.5, -9.0), + lateral: ("npc.cattle.male.foot_br"), + ), + foot_br: ( + offset: (-1.5, -2.5, -9.0), + lateral: ("npc.cattle.male.foot_br"), + ), + ), + (Cattle, Female): ( + leg_fl: ( + offset: (-2.0, -2.5, -5.5), + lateral: ("npc.cattle.female.leg_fr"), + ), + leg_fr: ( + offset: (-2.0, -2.5, -5.5), + lateral: ("npc.cattle.female.leg_fr"), + ), + leg_bl: ( + offset: (-2.0, -3.0, -4.5), + lateral: ("npc.cattle.female.leg_br"), + ), + leg_br: ( + offset: (-2.0, -3.5, -4.5), + lateral: ("npc.cattle.female.leg_br"), + ), + foot_fl: ( + offset: (-1.5, -2.0, -8.0), + lateral: ("npc.cattle.female.foot_fr"), + ), + foot_fr: ( + offset: (-1.5, -2.0, -8.0), + lateral: ("npc.cattle.female.foot_fr"), + ), + foot_bl: ( + offset: (-1.5, -2.5, -9.0), + lateral: ("npc.cattle.female.foot_br"), + ), + foot_br: ( + offset: (-1.5, -2.5, -9.0), + lateral: ("npc.cattle.female.foot_br"), + ), + ), + (Darkhound, Male): ( + leg_fl: ( + offset: (-1.5, -3.5, -4.0), + lateral: ("npc.darkhound.male.leg_fr"), + ), + leg_fr: ( + offset: (-1.5, -3.5, -4.0), + lateral: ("npc.darkhound.male.leg_fr"), + ), + leg_bl: ( + offset: (-1.5, -3.5, -3.5), + lateral: ("npc.darkhound.male.leg_br"), + ), + leg_br: ( + offset: (-1.5, -3.5, -3.5), + lateral: ("npc.darkhound.male.leg_br"), + ), + foot_fl: ( + offset: (-1.5, -4.0, -8.0), + lateral: ("npc.darkhound.male.foot_fr"), + ), + foot_fr: ( + offset: (-1.5, -4.0, -8.0), + lateral: ("npc.darkhound.male.foot_fr"), + ), + foot_bl: ( + offset: (-1.5, -3.5, -8.0), + lateral: ("npc.darkhound.male.foot_br"), + ), + foot_br: ( + offset: (-1.5, -3.5, -8.0), + lateral: ("npc.darkhound.male.foot_br"), + ), + ), + (Darkhound, Female): ( + leg_fl: ( + offset: (-1.5, -3.5, -4.0), + lateral: ("npc.darkhound.male.leg_fr"), + ), + leg_fr: ( + offset: (-1.5, -3.5, -4.0), + lateral: ("npc.darkhound.male.leg_fr"), + ), + leg_bl: ( + offset: (-1.5, -3.5, -3.5), + lateral: ("npc.darkhound.male.leg_br"), + ), + leg_br: ( + offset: (-1.5, -3.5, -3.5), + lateral: ("npc.darkhound.male.leg_br"), + ), + foot_fl: ( + offset: (-1.5, -4.0, -8.0), + lateral: ("npc.darkhound.male.foot_fr"), + ), + foot_fr: ( + offset: (-1.5, -4.0, -8.0), + lateral: ("npc.darkhound.male.foot_fr"), + ), + foot_bl: ( + offset: (-1.5, -3.5, -8.0), + lateral: ("npc.darkhound.male.foot_br"), + ), + foot_br: ( + offset: (-1.5, -3.5, -8.0), + lateral: ("npc.darkhound.male.foot_br"), + ), + ), + (Highland, Male): ( + leg_fl: ( + offset: (-2.0, -2.5, -4.5), + lateral: ("npc.highland.male.leg_fr"), + ), + leg_fr: ( + offset: (-2.0, -2.5, -4.5), + lateral: ("npc.highland.male.leg_fr"), + ), + leg_bl: ( + offset: (-2.0, -3.0, -4.5), + lateral: ("npc.highland.male.leg_br"), + ), + leg_br: ( + offset: (-2.0, -3.0, -4.5), + lateral: ("npc.highland.male.leg_br"), + ), + foot_fl: ( + offset: (-1.5, -2.0, -8.0), + lateral: ("npc.highland.male.foot_fr"), + ), + foot_fr: ( + offset: (-1.5, -2.0, -8.0), + lateral: ("npc.highland.male.foot_fr"), + ), + foot_bl: ( + offset: (-1.5, -2.5, -9.0), + lateral: ("npc.highland.male.foot_br"), + ), + foot_br: ( + offset: (-1.5, -2.5, -9.0), + lateral: ("npc.highland.male.foot_br"), + ), + ), + (Highland, Female): ( + leg_fl: ( + offset: (-2.0, -2.5, -4.5), + lateral: ("npc.highland.male.leg_fr"), + ), + leg_fr: ( + offset: (-2.0, -2.5, -4.5), + lateral: ("npc.highland.male.leg_fr"), + ), + leg_bl: ( + offset: (-2.0, -3.0, -4.5), + lateral: ("npc.highland.male.leg_br"), + ), + leg_br: ( + offset: (-2.0, -3.0, -4.5), + lateral: ("npc.highland.male.leg_br"), + ), + foot_fl: ( + offset: (-1.5, -2.0, -8.0), + lateral: ("npc.highland.male.foot_fr"), + ), + foot_fr: ( + offset: (-1.5, -2.0, -8.0), + lateral: ("npc.highland.male.foot_fr"), + ), + foot_bl: ( + offset: (-1.5, -2.5, -9.0), + lateral: ("npc.highland.male.foot_br"), + ), + foot_br: ( + offset: (-1.5, -2.5, -9.0), + lateral: ("npc.highland.male.foot_br"), + ), + ), + (Yak, Male): ( + leg_fl: ( + offset: (-2.0, -3.0, -10.5), + lateral: ("npc.yak.male.leg_fr"), + ), + leg_fr: ( + offset: (-2.0, -3.0, -10.5), + lateral: ("npc.yak.male.leg_fr"), + ), + leg_bl: ( + offset: (-2.0, -3.0, -10.5), + lateral: ("npc.yak.male.leg_br"), + ), + leg_br: ( + offset: (-2.0, -3.0, -10.5), + lateral: ("npc.yak.male.leg_br"), + ), + foot_fl: ( + offset: (-1.5, -2.0, -9.0), + lateral: ("npc.yak.male.foot_fr"), + ), + foot_fr: ( + offset: (-1.5, -2.0, -9.0), + lateral: ("npc.yak.male.foot_fr"), + ), + foot_bl: ( + offset: (-1.5, -2.5, -9.0), + lateral: ("npc.yak.male.foot_br"), + ), + foot_br: ( + offset: (-1.5, -2.5, -9.0), + lateral: ("npc.yak.male.foot_br"), + ), + ), + (Yak, Female): ( + leg_fl: ( + offset: (-2.0, -3.0, -10.5), + lateral: ("npc.yak.male.leg_fr"), + ), + leg_fr: ( + offset: (-2.0, -3.0, -10.5), + lateral: ("npc.yak.male.leg_fr"), + ), + leg_bl: ( + offset: (-2.0, -3.0, -10.5), + lateral: ("npc.yak.male.leg_br"), + ), + leg_br: ( + offset: (-2.0, -3.0, -10.5), + lateral: ("npc.yak.male.leg_br"), + ), + foot_fl: ( + offset: (-1.5, -2.0, -9.0), + lateral: ("npc.yak.male.foot_fr"), + ), + foot_fr: ( + offset: (-1.5, -2.0, -9.0), + lateral: ("npc.yak.male.foot_fr"), + ), + foot_bl: ( + offset: (-1.5, -2.5, -9.0), + lateral: ("npc.yak.male.foot_br"), + ), + foot_br: ( + offset: (-1.5, -2.5, -9.0), + lateral: ("npc.yak.male.foot_br"), + ), + ), + (Bear, Male): ( + leg_fl: ( + offset: (-2.0, -3.5, -4.5), + lateral: ("npc.bear.male.leg_fr"), + ), + leg_fr: ( + offset: (-2.0, -3.5, -4.5), + lateral: ("npc.bear.male.leg_fr"), + ), + leg_bl: ( + offset: (-2.0, -3.5, -5.0), + lateral: ("npc.bear.male.leg_br"), + ), + leg_br: ( + offset: (-2.0, -3.5, -5.0), + lateral: ("npc.bear.male.leg_br"), + ), + foot_fl: ( + offset: (-3.0, -4.5, -7.0), + lateral: ("npc.bear.male.foot_fr"), + ), + foot_fr: ( + offset: (-3.0, -4.5, -7.0), + lateral: ("npc.bear.male.foot_fr"), + ), + foot_bl: ( + offset: (-2.5, -4.0, -6.0), + lateral: ("npc.bear.male.foot_br"), + ), + foot_br: ( + offset: (-2.5, -4.0, -6.0), + lateral: ("npc.bear.male.foot_br"), + ), + ), + (Panda, Female): ( + leg_fl: ( + offset: (-2.0, -3.5, -4.5), + lateral: ("npc.panda.male.leg_fr"), + ), + leg_fr: ( + offset: (-2.0, -3.5, -4.5), + lateral: ("npc.panda.male.leg_fr"), + ), + leg_bl: ( + offset: (-2.0, -3.5, -5.0), + lateral: ("npc.panda.male.leg_br"), + ), + leg_br: ( + offset: (-2.0, -3.5, -5.0), + lateral: ("npc.panda.male.leg_br"), + ), + foot_fl: ( + offset: (-3.0, -4.5, -7.0), + lateral: ("npc.panda.male.foot_fr"), + ), + foot_fr: ( + offset: (-3.0, -4.5, -7.0), + lateral: ("npc.panda.male.foot_fr"), + ), + foot_bl: ( + offset: (-2.5, -4.0, -6.0), + lateral: ("npc.panda.male.foot_br"), + ), + foot_br: ( + offset: (-2.5, -4.0, -6.0), + lateral: ("npc.panda.male.foot_br"), + ), + ), + (Panda, Male): ( + leg_fl: ( + offset: (-2.0, -3.5, -4.5), + lateral: ("npc.panda.male.leg_fr"), + ), + leg_fr: ( + offset: (-2.0, -3.5, -4.5), + lateral: ("npc.panda.male.leg_fr"), + ), + leg_bl: ( + offset: (-2.0, -3.5, -5.0), + lateral: ("npc.panda.male.leg_br"), + ), + leg_br: ( + offset: (-2.0, -3.5, -5.0), + lateral: ("npc.panda.male.leg_br"), + ), + foot_fl: ( + offset: (-3.0, -4.5, -7.0), + lateral: ("npc.panda.male.foot_fr"), + ), + foot_fr: ( + offset: (-3.0, -4.5, -7.0), + lateral: ("npc.panda.male.foot_fr"), + ), + foot_bl: ( + offset: (-2.5, -4.0, -6.0), + lateral: ("npc.panda.male.foot_br"), + ), + foot_br: ( + offset: (-2.5, -4.0, -6.0), + lateral: ("npc.panda.male.foot_br"), + ), + ), + (Bear, Female): ( + leg_fl: ( + offset: (-2.0, -3.5, -4.5), + lateral: ("npc.bear.male.leg_fr"), + ), + leg_fr: ( + offset: (-2.0, -3.5, -4.5), + lateral: ("npc.bear.male.leg_fr"), + ), + leg_bl: ( + offset: (-2.0, -3.5, -5.0), + lateral: ("npc.bear.male.leg_br"), + ), + leg_br: ( + offset: (-2.0, -3.5, -5.0), + lateral: ("npc.bear.male.leg_br"), + ), + foot_fl: ( + offset: (-3.0, -4.5, -7.0), + lateral: ("npc.bear.male.foot_fr"), + ), + foot_fr: ( + offset: (-3.0, -4.5, -7.0), + lateral: ("npc.bear.male.foot_fr"), + ), + foot_bl: ( + offset: (-2.5, -4.0, -6.0), + lateral: ("npc.bear.male.foot_br"), + ), + foot_br: ( + offset: (-2.5, -4.0, -6.0), + lateral: ("npc.bear.male.foot_br"), + ), + ), }) diff --git a/assets/voxygen/voxel/quadruped_small_central_manifest.ron b/assets/voxygen/voxel/quadruped_small_central_manifest.ron index d1a30a5791..823d4eee11 100644 --- a/assets/voxygen/voxel/quadruped_small_central_manifest.ron +++ b/assets/voxygen/voxel/quadruped_small_central_manifest.ron @@ -714,4 +714,32 @@ central: ("npc.hare.female.tail"), ), ), + (Dog, Male):( + head: ( + offset: (-3.5, 0.0, -4.0), + central: ("npc.dog.male.head"), + ), + chest: ( + offset: (-2.5, -5.5, -3.5), + central: ("npc.dog.male.chest"), + ), + tail: ( + offset: (-1.5, -7.0, -1.0), + central: ("npc.dog.male.tail"), + ), + ), + (Dog, Female):( + head: ( + offset: (-3.5, 0.0, -4.0), + central: ("npc.dog.female.head"), + ), + chest: ( + offset: (-2.5, -5.5, -3.5), + central: ("npc.dog.female.chest"), + ), + tail: ( + offset: (-1.5, -7.0, -1.0), + central: ("npc.dog.female.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 9ba07314aa..41ec808ea5 100644 --- a/assets/voxygen/voxel/quadruped_small_lateral_manifest.ron +++ b/assets/voxygen/voxel/quadruped_small_lateral_manifest.ron @@ -2,7 +2,7 @@ (Pig, Male): ( left_front: ( offset: (-1.0, -1.5, -5.0), - lateral: ("npc.pig.male.foot_fl"), + lateral: ("npc.pig.male.foot_fr"), ), right_front: ( offset: (-1.0, -1.5, -5.0), @@ -10,7 +10,7 @@ ), left_back: ( offset: (-1.0, -2.0, -6.0), - lateral: ("npc.pig.male.foot_bl"), + lateral: ("npc.pig.male.foot_br"), ), right_back: ( offset: (-1.0, -2.0, -6.0), @@ -20,7 +20,7 @@ (Pig, Female): ( left_front: ( offset: (-1.0, -1.5, -5.0), - lateral: ("npc.pig.male.foot_fl"), + lateral: ("npc.pig.male.foot_fr"), ), right_front: ( offset: (-1.0, -1.5, -5.0), @@ -28,7 +28,7 @@ ), left_back: ( offset: (-1.0, -2.0, -6.0), - lateral: ("npc.pig.male.foot_bl"), + lateral: ("npc.pig.male.foot_br"), ), right_back: ( offset: (-1.0, -2.0, -6.0), @@ -39,7 +39,7 @@ (Fox, Male): ( left_front: ( offset: (-1.0, -2.0, -2.5), - lateral: ("npc.fox.male.foot_fl"), + lateral: ("npc.fox.male.foot_fr"), ), right_front: ( offset: (-1.0, -2.0, -2.5), @@ -47,7 +47,7 @@ ), left_back: ( offset: (-1.0, -2.0, -5.0), - lateral: ("npc.fox.male.foot_bl"), + lateral: ("npc.fox.male.foot_br"), ), right_back: ( offset: (-1.0, -2.0, -5.0), @@ -57,7 +57,7 @@ (Fox, Female): ( left_front: ( offset: (-1.0, -2.0, -2.5), - lateral: ("npc.fox.female.foot_fl"), + lateral: ("npc.fox.female.foot_fr"), ), right_front: ( offset: (-1.0, -2.0, -2.5), @@ -65,7 +65,7 @@ ), left_back: ( offset: (-1.0, -2.0, -5.0), - lateral: ("npc.fox.female.foot_bl"), + lateral: ("npc.fox.female.foot_br"), ), right_back: ( offset: (-1.0, -2.0, -5.0), @@ -76,7 +76,7 @@ (Sheep, Male): ( left_front: ( offset: (-1.0, -1.5, -5.0), - lateral: ("npc.sheep.male.foot_fl"), + lateral: ("npc.sheep.male.foot_fr"), ), right_front: ( offset: (-1.0, -1.5, -5.0), @@ -84,7 +84,7 @@ ), left_back: ( offset: (-1.0, -1.5, -5.5), - lateral: ("npc.sheep.male.foot_bl"), + lateral: ("npc.sheep.male.foot_br"), ), right_back: ( offset: (-1.0, -1.5, -5.5), @@ -95,7 +95,7 @@ (Sheep, Female): ( left_front: ( offset: (-1.0, -1.5, -5.0), - lateral: ("npc.sheep.female.foot_fl"), + lateral: ("npc.sheep.female.foot_fr"), ), right_front: ( offset: (-1.0, -1.5, -5.0), @@ -103,7 +103,7 @@ ), left_back: ( offset: (-1.0, -1.5, -5.5), - lateral: ("npc.sheep.female.foot_bl"), + lateral: ("npc.sheep.female.foot_br"), ), right_back: ( offset: (-1.0, -1.5, -5.5), @@ -114,7 +114,7 @@ (Boar, Male): ( left_front: ( offset: (-1.5, -2.5, -4.0), - lateral: ("npc.boar.male.foot_fl"), + lateral: ("npc.boar.male.foot_fr"), ), right_front: ( offset: (-1.5, -2.5, -4.0), @@ -122,7 +122,7 @@ ), left_back: ( offset: (-1.5, -2.0, -7.0), - lateral: ("npc.boar.male.foot_bl"), + lateral: ("npc.boar.male.foot_br"), ), right_back: ( offset: (-1.5, -2.0, -7.0), @@ -133,7 +133,7 @@ (Boar, Female): ( left_front: ( offset: (-1.5, -2.5, -4.0), - lateral: ("npc.boar.female.foot_fl"), + lateral: ("npc.boar.female.foot_fr"), ), right_front: ( offset: (-1.5, -2.5, -4.0), @@ -141,7 +141,7 @@ ), left_back: ( offset: (-1.5, -2.0, -7.0), - lateral: ("npc.boar.female.foot_bl"), + lateral: ("npc.boar.female.foot_br"), ), right_back: ( offset: (-1.5, -2.0, -7.0), @@ -151,7 +151,7 @@ (Jackalope, Male): ( left_front: ( offset: (-1.0, -2.0, -4.0), - lateral: ("npc.jackalope.male.foot_fl"), + lateral: ("npc.jackalope.male.foot_fr"), ), right_front: ( offset: (-1.0, -2.0, -4.0), @@ -159,7 +159,7 @@ ), left_back: ( offset: (-1.5, -2.5, -6.0), - lateral: ("npc.jackalope.male.foot_bl"), + lateral: ("npc.jackalope.male.foot_br"), ), right_back: ( offset: (-1.5, -2.5, -6.0), @@ -170,7 +170,7 @@ (Jackalope, Female): ( left_front: ( offset: (-1.0, -2.0, -4.0), - lateral: ("npc.jackalope.male.foot_fl"), + lateral: ("npc.jackalope.male.foot_fr"), ), right_front: ( offset: (-1.0, -2.0, -4.0), @@ -178,7 +178,7 @@ ), left_back: ( offset: (-1.5, -2.5, -6.0), - lateral: ("npc.jackalope.male.foot_bl"), + lateral: ("npc.jackalope.male.foot_br"), ), right_back: ( offset: (-1.5, -2.5, -6.0), @@ -188,7 +188,7 @@ (Skunk, Male): ( left_front: ( offset: (-1.5, -2.0, -4.5), - lateral: ("npc.skunk.male.foot_fl"), + lateral: ("npc.skunk.male.foot_fr"), ), right_front: ( offset: (-1.5, -2.0, -4.5), @@ -196,7 +196,7 @@ ), left_back: ( offset: (-1.0, -1.0, -3.5), - lateral: ("npc.skunk.male.foot_bl"), + lateral: ("npc.skunk.male.foot_br"), ), right_back: ( offset: (-1.0, -1.0, -3.5), @@ -207,7 +207,7 @@ (Skunk, Female): ( left_front: ( offset: (-1.5, -2.0, -4.5), - lateral: ("npc.skunk.male.foot_fl"), + lateral: ("npc.skunk.male.foot_fr"), ), right_front: ( offset: (-1.5, -2.0, -4.5), @@ -215,7 +215,7 @@ ), left_back: ( offset: (-1.5, -2.0, -4.5), - lateral: ("npc.skunk.male.foot_bl"), + lateral: ("npc.skunk.male.foot_br"), ), right_back: ( offset: (-1.5, -2.0, -4.5), @@ -226,7 +226,7 @@ (Cat, Male): ( left_front: ( offset: (-1.0, -1.5, -5.0), - lateral: ("npc.cat.male.foot_fl"), + lateral: ("npc.cat.male.foot_fr"), ), right_front: ( offset: (-1.0, -1.5, -5.0), @@ -234,7 +234,7 @@ ), left_back: ( offset: (-1.0, -1.5, -5.0), - lateral: ("npc.cat.male.foot_bl"), + lateral: ("npc.cat.male.foot_br"), ), right_back: ( offset: (-1.0, -1.5, -5.0), @@ -245,7 +245,7 @@ (Cat, Female): ( left_front: ( offset: (-1.0, -1.5, -5.0), - lateral: ("npc.cat.female.foot_fl"), + lateral: ("npc.cat.female.foot_fr"), ), right_front: ( offset: (-1.0, -1.5, -5.0), @@ -253,7 +253,7 @@ ), left_back: ( offset: (-1.0, -1.5, -5.0), - lateral: ("npc.cat.female.foot_bl"), + lateral: ("npc.cat.female.foot_br"), ), right_back: ( offset: (-1.0, -1.5, -5.0), @@ -264,7 +264,7 @@ (Batfox, Male): ( left_front: ( offset: (-2.0, -2.5, -5.0), - lateral: ("npc.batfox.male.foot_fl"), + lateral: ("npc.batfox.male.foot_fr"), ), right_front: ( offset: (-2.0, -2.5, -5.0), @@ -272,7 +272,7 @@ ), left_back: ( offset: (-1.5, -2.0, -5.0), - lateral: ("npc.batfox.male.foot_bl"), + lateral: ("npc.batfox.male.foot_br"), ), right_back: ( offset: (-1.5, -2.0, -5.0), @@ -283,7 +283,7 @@ (Batfox, Female): ( left_front: ( offset: (-2.0, -2.5, -5.0), - lateral: ("npc.batfox.male.foot_fl"), + lateral: ("npc.batfox.male.foot_fr"), ), right_front: ( offset: (-2.0, -2.5, -5.0), @@ -291,7 +291,7 @@ ), left_back: ( offset: (-1.5, -2.0, -5.0), - lateral: ("npc.batfox.male.foot_bl"), + lateral: ("npc.batfox.male.foot_br"), ), right_back: ( offset: (-1.5, -2.0, -5.0), @@ -302,7 +302,7 @@ (Raccoon, Male): ( left_front: ( offset: (-1.5, -2.0, -5.5), - lateral: ("npc.raccoon.male.foot_fl"), + lateral: ("npc.raccoon.male.foot_fr"), ), right_front: ( offset: (-1.5, -2.0, -5.5), @@ -310,7 +310,7 @@ ), left_back: ( offset: (-2.0, -2.5, -6.0), - lateral: ("npc.raccoon.male.foot_bl"), + lateral: ("npc.raccoon.male.foot_br"), ), right_back: ( offset: (-2.0, -2.5, -6.0), @@ -321,7 +321,7 @@ (Raccoon, Female): ( left_front: ( offset: (-1.5, -2.0, -5.5), - lateral: ("npc.raccoon.male.foot_fl"), + lateral: ("npc.raccoon.male.foot_fr"), ), right_front: ( offset: (-1.5, -2.0, -5.5), @@ -329,7 +329,7 @@ ), left_back: ( offset: (-2.0, -2.5, -6.0), - lateral: ("npc.raccoon.male.foot_bl"), + lateral: ("npc.raccoon.male.foot_br"), ), right_back: ( offset: (-2.0, -2.5, -6.0), @@ -339,7 +339,7 @@ (Quokka, Male): ( left_front: ( offset: (-1.0, -1.5, -5.5), - lateral: ("npc.quokka.male.foot_fl"), + lateral: ("npc.quokka.male.foot_fr"), ), right_front: ( offset: (-1.0, -1.5, -5.5), @@ -347,7 +347,7 @@ ), left_back: ( offset: (-1.0, -2.5, -5.5), - lateral: ("npc.quokka.male.foot_bl"), + lateral: ("npc.quokka.male.foot_br"), ), right_back: ( offset: (-1.0, -2.5, -5.5), @@ -358,7 +358,7 @@ (Quokka, Female): ( left_front: ( offset: (-1.0, -1.5, -5.5), - lateral: ("npc.quokka.male.foot_fl"), + lateral: ("npc.quokka.male.foot_fr"), ), right_front: ( offset: (-1.0, -1.5, -5.5), @@ -366,7 +366,7 @@ ), left_back: ( offset: (-1.0, -2.5, -5.5), - lateral: ("npc.quokka.male.foot_bl"), + lateral: ("npc.quokka.male.foot_br"), ), right_back: ( offset: (-1.0, -2.5, -5.5), @@ -376,7 +376,7 @@ (Dodarock, Male): ( left_front: ( offset: (-2.0, -3.0, -6.5), - lateral: ("npc.dodarock.male.foot_fl"), + lateral: ("npc.dodarock.male.foot_fr"), ), right_front: ( offset: (-2.0, -3.0, -6.5), @@ -384,7 +384,7 @@ ), left_back: ( offset: (-1.5, -2.0, -5.0), - lateral: ("npc.dodarock.male.foot_bl"), + lateral: ("npc.dodarock.male.foot_br"), ), right_back: ( offset: (-1.5, -2.0, -5.0), @@ -395,7 +395,7 @@ (Dodarock, Female): ( left_front: ( offset: (-2.0, -3.0, -6.5), - lateral: ("npc.dodarock.male.foot_fl"), + lateral: ("npc.dodarock.male.foot_fr"), ), right_front: ( offset: (-2.0, -3.0, -6.5), @@ -403,7 +403,7 @@ ), left_back: ( offset: (-1.5, -2.0, -5.0), - lateral: ("npc.dodarock.male.foot_bl"), + lateral: ("npc.dodarock.male.foot_br"), ), right_back: ( offset: (-1.5, -2.0, -5.0), @@ -413,7 +413,7 @@ (Holladon, Male): ( left_front: ( offset: (-1.0, -2.5, -6.0), - lateral: ("npc.holladon.male.foot_fl"), + lateral: ("npc.holladon.male.foot_fr"), ), right_front: ( offset: (-1.0, -2.5, -6.0), @@ -421,7 +421,7 @@ ), left_back: ( offset: (-1.0, -2.0, -5.5), - lateral: ("npc.holladon.male.foot_bl"), + lateral: ("npc.holladon.male.foot_br"), ), right_back: ( offset: (-1.0, -2.0, -5.5), @@ -432,7 +432,7 @@ (Holladon, Female): ( left_front: ( offset: (-1.0, -2.5, -6.0), - lateral: ("npc.holladon.male.foot_fl"), + lateral: ("npc.holladon.male.foot_fr"), ), right_front: ( offset: (-1.0, -2.5, -6.0), @@ -440,7 +440,7 @@ ), left_back: ( offset: (-1.0, -2.0, -5.5), - lateral: ("npc.holladon.male.foot_bl"), + lateral: ("npc.holladon.male.foot_br"), ), right_back: ( offset: (-1.0, -2.0, -5.5), @@ -450,7 +450,7 @@ (Hyena, Male): ( left_front: ( offset: (-1.5, -2.0, -5.0), - lateral: ("npc.hyena.male.foot_fl"), + lateral: ("npc.hyena.male.foot_fr"), ), right_front: ( offset: (-1.5, -2.0, -5.0), @@ -458,7 +458,7 @@ ), left_back: ( offset: (-1.5, -2.0, -6.5), - lateral: ("npc.hyena.male.foot_bl"), + lateral: ("npc.hyena.male.foot_br"), ), right_back: ( offset: (-1.5, -2.0, -6.5), @@ -469,7 +469,7 @@ (Hyena, Female): ( left_front: ( offset: (-1.5, -2.0, -5.0), - lateral: ("npc.hyena.male.foot_fl"), + lateral: ("npc.hyena.male.foot_fr"), ), right_front: ( offset: (-1.5, -2.0, -5.0), @@ -477,7 +477,7 @@ ), left_back: ( offset: (-1.5, -2.0, -6.5), - lateral: ("npc.hyena.male.foot_bl"), + lateral: ("npc.hyena.male.foot_br"), ), right_back: ( offset: (-1.5, -2.0, -6.5), @@ -487,7 +487,7 @@ (Rabbit, Male): ( left_front: ( offset: (-1.5, -0.0, -2.0), - lateral: ("npc.rabbit.male.foot_fl"), + lateral: ("npc.rabbit.male.foot_fr"), ), right_front: ( offset: (-1.5, -0.0, -2.0), @@ -495,7 +495,7 @@ ), left_back: ( offset: (-1.5, -3.0, -4.0), - lateral: ("npc.rabbit.male.foot_bl"), + lateral: ("npc.rabbit.male.foot_br"), ), right_back: ( offset: (-1.5, -3.0, -4.0), @@ -505,7 +505,7 @@ (Rabbit, Female): ( left_front: ( offset: (-1.5, -0.0, -2.0), - lateral: ("npc.rabbit.male.foot_fl"), + lateral: ("npc.rabbit.male.foot_fr"), ), right_front: ( offset: (-1.5, -0.0, -2.0), @@ -513,7 +513,7 @@ ), left_back: ( offset: (-1.5, -3.0, -4.0), - lateral: ("npc.rabbit.male.foot_bl"), + lateral: ("npc.rabbit.male.foot_br"), ), right_back: ( offset: (-1.5, -3.0, -4.0), @@ -523,7 +523,7 @@ (Truffler, Male): ( left_front: ( offset: (-2.5, -3.0, -6.5), - lateral: ("npc.truffler.male.foot_fl"), + lateral: ("npc.truffler.male.foot_fr"), ), right_front: ( offset: (-2.5, -3.0, -6.5), @@ -531,7 +531,7 @@ ), left_back: ( offset: (-2.5, -3.0, -6.5), - lateral: ("npc.truffler.male.foot_bl"), + lateral: ("npc.truffler.male.foot_br"), ), right_back: ( offset: (-2.5, -3.0, -6.5), @@ -542,7 +542,7 @@ (Truffler, Female): ( left_front: ( offset: (-2.5, -3.0, -6.5), - lateral: ("npc.truffler.male.foot_fl"), + lateral: ("npc.truffler.male.foot_fr"), ), right_front: ( offset: (-2.5, -3.0, -6.5), @@ -550,7 +550,7 @@ ), left_back: ( offset: (-2.5, -3.0, -6.5), - lateral: ("npc.truffler.male.foot_bl"), + lateral: ("npc.truffler.male.foot_br"), ), right_back: ( offset: (-2.5, -3.0, -6.5), @@ -560,7 +560,7 @@ (Frog, Male): ( left_front: ( offset: (-2.5, -2.5, -4.0), - lateral: ("npc.frog.male.foot_fl"), + lateral: ("npc.frog.male.foot_fr"), ), right_front: ( offset: (-2.5, -2.5, -4.0), @@ -568,7 +568,7 @@ ), left_back: ( offset: (-2.5, -3.5, -4.0), - lateral: ("npc.frog.male.foot_bl"), + lateral: ("npc.frog.male.foot_br"), ), right_back: ( offset: (-2.5, -3.5, -4.0), @@ -578,7 +578,7 @@ (Frog, Female): ( left_front: ( offset: (-2.5, -2.5, -4.0), - lateral: ("npc.frog.male.foot_fl"), + lateral: ("npc.frog.male.foot_fr"), ), right_front: ( offset: (-2.5, -2.5, -4.0), @@ -586,7 +586,7 @@ ), left_back: ( offset: (-2.5, -3.5, -4.0), - lateral: ("npc.frog.male.foot_bl"), + lateral: ("npc.frog.male.foot_br"), ), right_back: ( offset: (-2.5, -3.5, -4.0), @@ -596,7 +596,7 @@ (Rat, Male): ( left_front: ( offset: (-1.5, -2.0, -4.0), - lateral: ("npc.rat.male.foot_fl"), + lateral: ("npc.rat.male.foot_fr"), ), right_front: ( offset: (-1.5, -2.0, -4.0), @@ -604,7 +604,7 @@ ), left_back: ( offset: (-1.5, -2.5, -6.0), - lateral: ("npc.rat.male.foot_bl"), + lateral: ("npc.rat.male.foot_br"), ), right_back: ( offset: (-1.5, -2.5, -6.0), @@ -614,7 +614,7 @@ (Rat, Female): ( left_front: ( offset: (-1.5, -2.0, -4.0), - lateral: ("npc.rat.male.foot_fl"), + lateral: ("npc.rat.male.foot_fr"), ), right_front: ( offset: (-1.5, -2.0, -4.0), @@ -622,7 +622,7 @@ ), left_back: ( offset: (-1.5, -2.5, -6.0), - lateral: ("npc.rat.male.foot_bl"), + lateral: ("npc.rat.male.foot_br"), ), right_back: ( offset: (-1.5, -2.5, -6.0), @@ -632,7 +632,7 @@ (Axolotl, Male): ( left_front: ( offset: (-5.5, -0.5, -3.0), - lateral: ("npc.axolotl.male.foot_fl"), + lateral: ("npc.axolotl.male.foot_fr"), ), right_front: ( offset: (-0.5, -0.5, -3.0), @@ -640,7 +640,7 @@ ), left_back: ( offset: (-5.5, -3.5, -3.0), - lateral: ("npc.axolotl.male.foot_bl"), + lateral: ("npc.axolotl.male.foot_br"), ), right_back: ( offset: (-0.5, -3.5, -3.0), @@ -650,7 +650,7 @@ (Axolotl, Female): ( left_front: ( offset: (-5.5, -0.5, -3.0), - lateral: ("npc.axolotl.male.foot_fl"), + lateral: ("npc.axolotl.male.foot_fr"), ), right_front: ( offset: (-0.5, -0.5, -3.0), @@ -658,7 +658,7 @@ ), left_back: ( offset: (-5.5, -3.5, -3.0), - lateral: ("npc.axolotl.male.foot_bl"), + lateral: ("npc.axolotl.male.foot_br"), ), right_back: ( offset: (-0.5, -3.5, -3.0), @@ -668,7 +668,7 @@ (Gecko, Male): ( left_front: ( offset: (-5.5, -1.0, -3.5), - lateral: ("npc.gecko.male.foot_fl"), + lateral: ("npc.gecko.male.foot_fr"), ), right_front: ( offset: (-0.5, -1.0, -3.5), @@ -676,7 +676,7 @@ ), left_back: ( offset: (-5.5, -4.0, -3.5), - lateral: ("npc.gecko.male.foot_bl"), + lateral: ("npc.gecko.male.foot_br"), ), right_back: ( offset: (-0.5, -4.0, -3.5), @@ -686,7 +686,7 @@ (Gecko, Female): ( left_front: ( offset: (-5.5, -1.0, -3.5), - lateral: ("npc.gecko.male.foot_fl"), + lateral: ("npc.gecko.male.foot_fr"), ), right_front: ( offset: (-0.5, -1.0, -3.5), @@ -694,7 +694,7 @@ ), left_back: ( offset: (-5.5, -4.0, -3.5), - lateral: ("npc.gecko.male.foot_bl"), + lateral: ("npc.gecko.male.foot_br"), ), right_back: ( offset: (-0.5, -4.0, -3.5), @@ -704,7 +704,7 @@ (Turtle, Male): ( left_front: ( offset: (-1.5, -0.5, -4.0), - lateral: ("npc.turtle.male.foot_fl"), + lateral: ("npc.turtle.male.foot_fr"), ), right_front: ( offset: (-1.5, -0.5, -4.0), @@ -712,7 +712,7 @@ ), left_back: ( offset: (-2.0, -2.5, -4.0), - lateral: ("npc.turtle.male.foot_bl"), + lateral: ("npc.turtle.male.foot_br"), ), right_back: ( offset: (-2.0, -2.5, -4.0), @@ -722,7 +722,7 @@ (Turtle, Female): ( left_front: ( offset: (-1.5, -0.5, -4.0), - lateral: ("npc.turtle.male.foot_fl"), + lateral: ("npc.turtle.male.foot_fr"), ), right_front: ( offset: (-1.5, -0.5, -4.0), @@ -730,7 +730,7 @@ ), left_back: ( offset: (-2.0, -2.5, -4.0), - lateral: ("npc.turtle.male.foot_bl"), + lateral: ("npc.turtle.male.foot_br"), ), right_back: ( offset: (-2.0, -2.5, -4.0), @@ -740,7 +740,7 @@ (Squirrel, Male): ( left_front: ( offset: (-1.5, -1.5, -4.0), - lateral: ("npc.squirrel.male.foot_fl"), + lateral: ("npc.squirrel.male.foot_fr"), ), right_front: ( offset: (-1.5, -1.5, -4.0), @@ -748,7 +748,7 @@ ), left_back: ( offset: (-1.5, -2.0, -5.0), - lateral: ("npc.squirrel.male.foot_bl"), + lateral: ("npc.squirrel.male.foot_br"), ), right_back: ( offset: (-1.5, -2.0, -5.0), @@ -758,7 +758,7 @@ (Squirrel, Female): ( left_front: ( offset: (-1.5, -1.5, -4.0), - lateral: ("npc.squirrel.male.foot_fl"), + lateral: ("npc.squirrel.male.foot_fr"), ), right_front: ( offset: (-1.5, -1.5, -4.0), @@ -766,7 +766,7 @@ ), left_back: ( offset: (-1.5, -2.0, -5.0), - lateral: ("npc.squirrel.male.foot_bl"), + lateral: ("npc.squirrel.male.foot_br"), ), right_back: ( offset: (-1.5, -2.0, -5.0), @@ -776,7 +776,7 @@ (Fungome, Male): ( left_front: ( offset: (-2.5, -0.5, -3.0), - lateral: ("npc.fungome.male.foot_fl"), + lateral: ("npc.fungome.male.foot_fr"), ), right_front: ( offset: (-0.5, -0.5, -3.0), @@ -784,7 +784,7 @@ ), left_back: ( offset: (-2.5, -1.0, -3.0), - lateral: ("npc.fungome.male.foot_bl"), + lateral: ("npc.fungome.male.foot_br"), ), right_back: ( offset: (-0.5, -1.0, -3.0), @@ -794,7 +794,7 @@ (Fungome, Female): ( left_front: ( offset: (-2.5, -0.5, -3.0), - lateral: ("npc.fungome.male.foot_fl"), + lateral: ("npc.fungome.male.foot_fr"), ), right_front: ( offset: (-0.5, -0.5, -3.0), @@ -802,7 +802,7 @@ ), left_back: ( offset: (-2.5, -1.0, -3.0), - lateral: ("npc.fungome.male.foot_bl"), + lateral: ("npc.fungome.male.foot_br"), ), right_back: ( offset: (-0.5, -1.0, -3.0), @@ -812,7 +812,7 @@ (Porcupine, Male): ( left_front: ( offset: (-1.5, -2.5, -2.0), - lateral: ("npc.porcupine.male.foot_fl"), + lateral: ("npc.porcupine.male.foot_fr"), ), right_front: ( offset: (-1.5, -2.5, -2.0), @@ -820,7 +820,7 @@ ), left_back: ( offset: (-2.0, -3.0, -3.0), - lateral: ("npc.porcupine.male.foot_bl"), + lateral: ("npc.porcupine.male.foot_br"), ), right_back: ( offset: (-2.0, -3.0, -3.0), @@ -830,7 +830,7 @@ (Porcupine, Female): ( left_front: ( offset: (-1.5, -2.5, -2.0), - lateral: ("npc.porcupine.male.foot_fl"), + lateral: ("npc.porcupine.male.foot_fr"), ), right_front: ( offset: (-1.5, -2.5, -2.0), @@ -838,7 +838,7 @@ ), left_back: ( offset: (-2.0, -3.0, -3.0), - lateral: ("npc.porcupine.male.foot_bl"), + lateral: ("npc.porcupine.male.foot_br"), ), right_back: ( offset: (-2.0, -3.0, -3.0), @@ -848,7 +848,7 @@ (Beaver, Male): ( left_front: ( offset: (-1.5, -2.0, -2.0), - lateral: ("npc.beaver.male.foot_fl"), + lateral: ("npc.beaver.male.foot_fr"), ), right_front: ( offset: (-1.5, -2.5, -2.0), @@ -856,7 +856,7 @@ ), left_back: ( offset: (-2.0, -2.5, -3.0), - lateral: ("npc.beaver.male.foot_bl"), + lateral: ("npc.beaver.male.foot_br"), ), right_back: ( offset: (-2.0, -2.5, -3.0), @@ -866,7 +866,7 @@ (Beaver, Female): ( left_front: ( offset: (-1.5, -2.0, -2.0), - lateral: ("npc.beaver.male.foot_fl"), + lateral: ("npc.beaver.male.foot_fr"), ), right_front: ( offset: (-1.5, -2.5, -2.0), @@ -874,7 +874,7 @@ ), left_back: ( offset: (-2.0, -2.5, -3.0), - lateral: ("npc.beaver.male.foot_bl"), + lateral: ("npc.beaver.male.foot_br"), ), right_back: ( offset: (-2.0, -2.5, -3.0), @@ -884,7 +884,7 @@ (Hare, Male): ( left_front: ( offset: (-0.5, -0.0, -2.0), - lateral: ("npc.hare.male.foot_fl"), + lateral: ("npc.hare.male.foot_fr"), ), right_front: ( offset: (-0.5, -0.0, -2.0), @@ -892,7 +892,7 @@ ), left_back: ( offset: (-1.0, -4.0, -5.0), - lateral: ("npc.hare.male.foot_bl"), + lateral: ("npc.hare.male.foot_br"), ), right_back: ( offset: (-1.0, -4.0, -5.0), @@ -902,7 +902,7 @@ (Hare, Female): ( left_front: ( offset: (-1.0, -0.0, -2.0), - lateral: ("npc.hare.female.foot_fl"), + lateral: ("npc.hare.female.foot_fr"), ), right_front: ( offset: (-1.0, -0.0, -2.0), @@ -910,11 +910,47 @@ ), left_back: ( offset: (-1.0, -2.5, -4.0), - lateral: ("npc.hare.female.foot_bl"), + lateral: ("npc.hare.female.foot_br"), ), right_back: ( offset: (-1.0, -2.5, -4.0), lateral: ("npc.hare.female.foot_br"), ), ), + (Dog, Male): ( + left_front: ( + offset: (-1.0, -1.5, -6.0), + lateral: ("npc.dog.male.foot_fr"), + ), + right_front: ( + offset: (-1.0, -1.5, -6.0), + lateral: ("npc.dog.male.foot_fr"), + ), + left_back: ( + offset: (-1.5, -2.0, -6.0), + lateral: ("npc.dog.male.foot_br"), + ), + right_back: ( + offset: (-1.5, -2.0, -6.0), + lateral: ("npc.dog.male.foot_br"), + ), + ), + (Dog, Female): ( + left_front: ( + offset: (-1.0, -1.5, -6.0), + lateral: ("npc.dog.female.foot_fr"), + ), + right_front: ( + offset: (-1.0, -1.5, -6.0), + lateral: ("npc.dog.female.foot_fr"), + ), + left_back: ( + offset: (-1.5, -2.0, -6.0), + lateral: ("npc.dog.female.foot_br"), + ), + right_back: ( + offset: (-1.5, -2.0, -6.0), + lateral: ("npc.dog.female.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 ec9e6b9c85..39f62e4832 100644 --- a/assets/voxygen/voxel/theropod_central_manifest.ron +++ b/assets/voxygen/voxel/theropod_central_manifest.ron @@ -299,4 +299,64 @@ central: ("npc.raptor_wood.male.tail_back"), ), ), + (Sunlizard, Male): ( + head: ( + offset: (-12.5, -1.0, -12.5), + central: ("npc.sunlizard.male.head"), + ), + jaw: ( + offset: (-2.5, 0.0, -1.0), + central: ("npc.sunlizard.male.jaw"), + ), + neck: ( + offset: (-1.5, 0.0, -2.0), + central: ("npc.sunlizard.male.neck"), + ), + chest_front: ( + offset: (-3.5, -3.0, -3.5), + central: ("npc.sunlizard.male.chest_front"), + ), + chest_back: ( + offset: (-3.5, -10.0, -3.5), + central: ("npc.sunlizard.male.chest_back"), + ), + tail_front: ( + offset: (-1.5, -11.0, -2.5), + central: ("npc.sunlizard.male.tail_front"), + ), + tail_back: ( + offset: (-1.5, -30.0, -2.0), + central: ("npc.sunlizard.male.tail_back"), + ), + ), + (Sunlizard, Female): ( + head: ( + offset: (-12.5, -1.0, -12.5), + central: ("npc.sunlizard.male.head"), + ), + jaw: ( + offset: (-2.5, 0.0, -1.0), + central: ("npc.sunlizard.male.jaw"), + ), + neck: ( + offset: (-1.5, 0.0, -2.0), + central: ("npc.sunlizard.male.neck"), + ), + chest_front: ( + offset: (-3.5, -3.0, -3.5), + central: ("npc.sunlizard.male.chest_front"), + ), + chest_back: ( + offset: (-3.5, -10.0, -3.5), + central: ("npc.sunlizard.male.chest_back"), + ), + tail_front: ( + offset: (-1.5, -11.0, -2.5), + central: ("npc.sunlizard.male.tail_front"), + ), + tail_back: ( + offset: (-1.5, -30.0, -2.0), + central: ("npc.sunlizard.male.tail_back"), + ), + ), }) diff --git a/assets/voxygen/voxel/theropod_lateral_manifest.ron b/assets/voxygen/voxel/theropod_lateral_manifest.ron index 3f33e5b0b5..e94b915411 100644 --- a/assets/voxygen/voxel/theropod_lateral_manifest.ron +++ b/assets/voxygen/voxel/theropod_lateral_manifest.ron @@ -2,7 +2,7 @@ (Archaeos, Male): ( hand_l: ( offset: (-4.0, -2.0, -9.0), - lateral: ("npc.archaeos.male.hand_l"), + lateral: ("npc.archaeos.male.hand_r"), ), hand_r: ( offset: (0.0, -2.0, -9.0), @@ -10,7 +10,7 @@ ), leg_l: ( offset: (-6.0, -4.5, -8.0), - lateral: ("npc.archaeos.male.leg_l"), + lateral: ("npc.archaeos.male.leg_r"), ), leg_r: ( offset: (0.0, -4.5, -8.0), @@ -18,7 +18,7 @@ ), foot_l: ( offset: (-11.0, -1.0, -8.0), - lateral: ("npc.archaeos.male.foot_l"), + lateral: ("npc.archaeos.male.foot_r"), ), foot_r: ( offset: (0.0, -1.0, -8.0), @@ -28,7 +28,7 @@ (Archaeos, Female): ( hand_l: ( offset: (-4.0, -2.0, -9.0), - lateral: ("npc.archaeos.male.hand_l"), + lateral: ("npc.archaeos.male.hand_r"), ), hand_r: ( offset: (0.0, -2.0, -9.0), @@ -36,7 +36,7 @@ ), leg_l: ( offset: (-6.0, -4.5, -8.0), - lateral: ("npc.archaeos.male.leg_l"), + lateral: ("npc.archaeos.male.leg_r"), ), leg_r: ( offset: (0.0, -4.5, -8.0), @@ -44,7 +44,7 @@ ), foot_l: ( offset: (-11.0, -1.0, -8.0), - lateral: ("npc.archaeos.male.foot_l"), + lateral: ("npc.archaeos.male.foot_r"), ), foot_r: ( offset: (0.0, -1.0, -8.0), @@ -54,7 +54,7 @@ (Odonto, Male): ( hand_l: ( offset: (-3.0, -3.0, -7.0), - lateral: ("npc.odonto.male.hand_l"), + lateral: ("npc.odonto.male.hand_r"), ), hand_r: ( offset: (0.0, -3.0, -7.0), @@ -62,7 +62,7 @@ ), leg_l: ( offset: (-7.0, -4.5, -4.0), - lateral: ("npc.odonto.male.leg_l"), + lateral: ("npc.odonto.male.leg_r"), ), leg_r: ( offset: (0.0, -4.5, -4.0), @@ -70,7 +70,7 @@ ), foot_l: ( offset: (-8.0, -1.0, -8.0), - lateral: ("npc.odonto.male.foot_l"), + lateral: ("npc.odonto.male.foot_r"), ), foot_r: ( offset: (-6.0, -1.0, -8.0), @@ -80,7 +80,7 @@ (Odonto, Female): ( hand_l: ( offset: (-3.0, -3.0, -7.0), - lateral: ("npc.odonto.male.hand_l"), + lateral: ("npc.odonto.male.hand_r"), ), hand_r: ( offset: (0.0, -3.0, -7.0), @@ -88,7 +88,7 @@ ), leg_l: ( offset: (-7.0, -4.5, -4.0), - lateral: ("npc.odonto.male.leg_l"), + lateral: ("npc.odonto.male.leg_r"), ), leg_r: ( offset: (0.0, -4.5, -4.0), @@ -96,7 +96,7 @@ ), foot_l: ( offset: (-8.0, -1.0, -8.0), - lateral: ("npc.odonto.male.foot_l"), + lateral: ("npc.odonto.male.foot_r"), ), foot_r: ( offset: (-6.0, -1.0, -8.0), @@ -106,7 +106,7 @@ (Sandraptor, Male): ( hand_l: ( offset: (-15.0, -9.0, -8.0), - lateral: ("npc.raptor_sand.male.hand_l"), + lateral: ("npc.raptor_sand.male.hand_r"), ), hand_r: ( offset: (0.0, -9.0, -8.0), @@ -114,7 +114,7 @@ ), leg_l: ( offset: (-5.0, -3.5, -3.5), - lateral: ("npc.raptor_sand.male.leg_l"), + lateral: ("npc.raptor_sand.male.leg_r"), ), leg_r: ( offset: (0.0, -3.5, -3.5), @@ -122,7 +122,7 @@ ), foot_l: ( offset: (-2.5, -4.5, -10.0), - lateral: ("npc.raptor_sand.male.foot_l"), + lateral: ("npc.raptor_sand.male.foot_r"), ), foot_r: ( offset: (-2.5, -4.5, -10.0), @@ -132,7 +132,7 @@ (Sandraptor, Female): ( hand_l: ( offset: (-15.0, -9.0, -8.0), - lateral: ("npc.raptor_sand.male.hand_l"), + lateral: ("npc.raptor_sand.male.hand_r"), ), hand_r: ( offset: (0.0, -9.0, -8.0), @@ -140,7 +140,7 @@ ), leg_l: ( offset: (-5.0, -3.5, -3.5), - lateral: ("npc.raptor_sand.male.leg_l"), + lateral: ("npc.raptor_sand.male.leg_r"), ), leg_r: ( offset: (0.0, -3.5, -3.5), @@ -148,7 +148,7 @@ ), foot_l: ( offset: (-2.5, -4.5, -10.0), - lateral: ("npc.raptor_sand.male.foot_l"), + lateral: ("npc.raptor_sand.male.foot_r"), ), foot_r: ( offset: (-2.5, -4.5, -10.0), @@ -158,7 +158,7 @@ (Snowraptor, Male): ( hand_l: ( offset: (-15.0, -9.0, -8.0), - lateral: ("npc.raptor_snow.male.hand_l"), + lateral: ("npc.raptor_snow.male.hand_r"), ), hand_r: ( offset: (0.0, -9.0, -8.0), @@ -166,7 +166,7 @@ ), leg_l: ( offset: (-5.0, -3.5, -3.5), - lateral: ("npc.raptor_snow.male.leg_l"), + lateral: ("npc.raptor_snow.male.leg_r"), ), leg_r: ( offset: (0.0, -3.5, -3.5), @@ -174,7 +174,7 @@ ), foot_l: ( offset: (-2.5, -4.5, -10.0), - lateral: ("npc.raptor_snow.male.foot_l"), + lateral: ("npc.raptor_snow.male.foot_r"), ), foot_r: ( offset: (-2.5, -4.5, -10.0), @@ -184,7 +184,7 @@ (Snowraptor, Female): ( hand_l: ( offset: (-15.0, -9.0, -8.0), - lateral: ("npc.raptor_snow.male.hand_l"), + lateral: ("npc.raptor_snow.male.hand_r"), ), hand_r: ( offset: (0.0, -9.0, -8.0), @@ -192,7 +192,7 @@ ), leg_l: ( offset: (-5.0, -3.5, -3.5), - lateral: ("npc.raptor_snow.male.leg_l"), + lateral: ("npc.raptor_snow.male.leg_r"), ), leg_r: ( offset: (0.0, -3.5, -3.5), @@ -200,7 +200,7 @@ ), foot_l: ( offset: (-2.5, -4.5, -10.0), - lateral: ("npc.raptor_snow.male.foot_l"), + lateral: ("npc.raptor_snow.male.foot_r"), ), foot_r: ( offset: (-2.5, -4.5, -10.0), @@ -210,15 +210,15 @@ (Woodraptor, Male): ( hand_l: ( offset: (-15.0, -9.0, -8.0), - lateral: ("npc.raptor_wood.male.hand_l"), + lateral: ("npc.raptor_wood.male.hand_r"), ), hand_r: ( offset: (0.0, -9.0, -8.0), lateral: ("npc.raptor_wood.male.hand_r"), ), leg_l: ( - offset: (-2.5, -3.5, -3.5), - lateral: ("npc.raptor_wood.male.leg_l"), + offset: (-5.0, -3.5, -3.5), + lateral: ("npc.raptor_wood.male.leg_r"), ), leg_r: ( offset: (0.0, -3.5, -3.5), @@ -226,7 +226,7 @@ ), foot_l: ( offset: (-2.5, -4.5, -10.0), - lateral: ("npc.raptor_wood.male.foot_l"), + lateral: ("npc.raptor_wood.male.foot_r"), ), foot_r: ( offset: (-2.5, -4.5, -10.0), @@ -236,15 +236,15 @@ (Woodraptor, Female): ( hand_l: ( offset: (-15.0, -9.0, -8.0), - lateral: ("npc.raptor_wood.male.hand_l"), + lateral: ("npc.raptor_wood.male.hand_r"), ), hand_r: ( offset: (0.0, -9.0, -8.0), lateral: ("npc.raptor_wood.male.hand_r"), ), leg_l: ( - offset: (-2.5, -3.5, -3.5), - lateral: ("npc.raptor_wood.male.leg_l"), + offset: (-5.0, -3.5, -3.5), + lateral: ("npc.raptor_wood.male.leg_r"), ), leg_r: ( offset: (0.0, -3.5, -3.5), @@ -252,11 +252,63 @@ ), foot_l: ( offset: (-2.5, -4.5, -10.0), - lateral: ("npc.raptor_wood.male.foot_l"), + lateral: ("npc.raptor_wood.male.foot_r"), ), foot_r: ( offset: (-2.5, -4.5, -10.0), lateral: ("npc.raptor_wood.male.foot_r"), ), ), + (Sunlizard, Male): ( + hand_l: ( + offset: (-4.0, -1.5, -7.0), + lateral: ("npc.sunlizard.male.hand_r"), + ), + hand_r: ( + offset: (0.0, -1.5, -7.0), + lateral: ("npc.sunlizard.male.hand_r"), + ), + leg_l: ( + offset: (-3.0, -2.5, -3.5), + lateral: ("npc.sunlizard.male.leg_r"), + ), + leg_r: ( + offset: (0.0, -2.5, -3.5), + lateral: ("npc.sunlizard.male.leg_r"), + ), + foot_l: ( + offset: (-2.5, -4.0, -9.0), + lateral: ("npc.sunlizard.male.foot_r"), + ), + foot_r: ( + offset: (-2.5, -4.0, -9.0), + lateral: ("npc.sunlizard.male.foot_r"), + ), + ), + (Sunlizard, Female): ( + hand_l: ( + offset: (-4.0, -1.5, -7.0), + lateral: ("npc.sunlizard.male.hand_r"), + ), + hand_r: ( + offset: (0.0, -1.5, -7.0), + lateral: ("npc.sunlizard.male.hand_r"), + ), + leg_l: ( + offset: (-3.0, -2.5, -3.5), + lateral: ("npc.sunlizard.male.leg_r"), + ), + leg_r: ( + offset: (0.0, -2.5, -3.5), + lateral: ("npc.sunlizard.male.leg_r"), + ), + foot_l: ( + offset: (-2.5, -4.0, -9.0), + lateral: ("npc.sunlizard.male.foot_r"), + ), + foot_r: ( + offset: (-2.5, -4.0, -9.0), + lateral: ("npc.sunlizard.male.foot_r"), + ), + ), }) diff --git a/assets/voxygen/voxel/weapon/axe/2haxe_harvester.vox b/assets/voxygen/voxel/weapon/axe/2haxe_harvester.vox new file mode 100644 index 0000000000..c907ecb366 --- /dev/null +++ b/assets/voxygen/voxel/weapon/axe/2haxe_harvester.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b596bf9dd399b158bf996e12d75b15846be3adb2d07bb3467131d8dc7d2766b7 +size 1788 diff --git a/assets/voxygen/voxel/weapon/axe/2haxe_minotaur.vox b/assets/voxygen/voxel/weapon/axe/2haxe_minotaur.vox new file mode 100644 index 0000000000..f8c4cd5649 --- /dev/null +++ b/assets/voxygen/voxel/weapon/axe/2haxe_minotaur.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0e9b3f271457750c4e6d86fd23554322c15439b9583e23322b6143ef1cee86cf +size 3652 diff --git a/assets/voxygen/voxel/weapon/biped_small/bow/adlet.vox b/assets/voxygen/voxel/weapon/biped_small/bow/adlet.vox new file mode 100644 index 0000000000..208e52cf49 --- /dev/null +++ b/assets/voxygen/voxel/weapon/biped_small/bow/adlet.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ef2809ad85372e7662cb5bf787d6054e49b6b749eaf5c2157e12a15649dc3242 +size 1344 diff --git a/assets/voxygen/voxel/weapon/biped_small/bow/haniwa.vox b/assets/voxygen/voxel/weapon/biped_small/bow/haniwa.vox new file mode 100644 index 0000000000..ab4eb277cf --- /dev/null +++ b/assets/voxygen/voxel/weapon/biped_small/bow/haniwa.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:efd4f043a8d15c315102bac1a7266a403cd692390d0ca1214eeedbf7791e5fab +size 1392 diff --git a/assets/voxygen/voxel/weapon/biped_small/bow/myrmidon.vox b/assets/voxygen/voxel/weapon/biped_small/bow/myrmidon.vox new file mode 100644 index 0000000000..f745ea163f --- /dev/null +++ b/assets/voxygen/voxel/weapon/biped_small/bow/myrmidon.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:deae7f15861e22ae34e05b1a0f9827dcdac4eab0e776add388abab489bf4187e +size 1372 diff --git a/assets/voxygen/voxel/weapon/biped_small/bow/sahagin.vox b/assets/voxygen/voxel/weapon/biped_small/bow/sahagin.vox new file mode 100644 index 0000000000..fbfc69f519 --- /dev/null +++ b/assets/voxygen/voxel/weapon/biped_small/bow/sahagin.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7fb76f44481d3dbecbbd2a9c74e98850699368e58807e1fbe2f9e67c921a8c9b +size 1356 diff --git a/assets/voxygen/voxel/weapon/biped_small/spear/adlet.vox b/assets/voxygen/voxel/weapon/biped_small/spear/adlet.vox new file mode 100644 index 0000000000..fdd2d0bd3e --- /dev/null +++ b/assets/voxygen/voxel/weapon/biped_small/spear/adlet.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c691f98dee4882cbca0e81ca89998259369f55c49b03b6f43d5b546d69b93bc8 +size 1288 diff --git a/assets/voxygen/voxel/weapon/biped_small/spear/haniwa.vox b/assets/voxygen/voxel/weapon/biped_small/spear/haniwa.vox new file mode 100644 index 0000000000..5a304c7947 --- /dev/null +++ b/assets/voxygen/voxel/weapon/biped_small/spear/haniwa.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e6dbd0b99fee569fd7d8226db102143fa3e6477a2144741540435d0ac74db974 +size 1352 diff --git a/assets/voxygen/voxel/weapon/biped_small/spear/myrmidon.vox b/assets/voxygen/voxel/weapon/biped_small/spear/myrmidon.vox new file mode 100644 index 0000000000..f33aa0ef48 --- /dev/null +++ b/assets/voxygen/voxel/weapon/biped_small/spear/myrmidon.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e3c906a2c6240593003108d6594ec6c3c564bb198009954a840b168518eb5380 +size 1340 diff --git a/assets/voxygen/voxel/weapon/biped_small/spear/sahagin.vox b/assets/voxygen/voxel/weapon/biped_small/spear/sahagin.vox new file mode 100644 index 0000000000..fe093f417d --- /dev/null +++ b/assets/voxygen/voxel/weapon/biped_small/spear/sahagin.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bf6d16fca51e28ab79b779428bec61032558224cc890b96caba0459f078c96d9 +size 1308 diff --git a/assets/voxygen/voxel/weapon/biped_small/staff/gnoll.vox b/assets/voxygen/voxel/weapon/biped_small/staff/gnoll.vox new file mode 100644 index 0000000000..6118e955a1 --- /dev/null +++ b/assets/voxygen/voxel/weapon/biped_small/staff/gnoll.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0959c5477808297e0cf6ba57c79e17bc13e53e0f39794a447e30829044d25a51 +size 1652 diff --git a/assets/voxygen/voxel/weapon/biped_small/staff/sahagin.vox b/assets/voxygen/voxel/weapon/biped_small/staff/sahagin.vox new file mode 100644 index 0000000000..ea9227af42 --- /dev/null +++ b/assets/voxygen/voxel/weapon/biped_small/staff/sahagin.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:148e3b6c9f16281d557663304e921b86ae9699917b163798b48f8bf5d2c6dc88 +size 1332 diff --git a/assets/voxygen/voxel/weapon/hammer/2hhammer_harvester.vox b/assets/voxygen/voxel/weapon/hammer/2hhammer_harvester.vox new file mode 100644 index 0000000000..c907ecb366 --- /dev/null +++ b/assets/voxygen/voxel/weapon/hammer/2hhammer_harvester.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b596bf9dd399b158bf996e12d75b15846be3adb2d07bb3467131d8dc7d2766b7 +size 1788 diff --git a/assets/voxygen/voxel/weapon/hammer/2hhammer_yeti.vox b/assets/voxygen/voxel/weapon/hammer/2hhammer_yeti.vox new file mode 100644 index 0000000000..92779ac963 --- /dev/null +++ b/assets/voxygen/voxel/weapon/hammer/2hhammer_yeti.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4d8796bf783935984747be7f8ba09b742090b5a63ca052b5158e01ba15dbc53a +size 6064 diff --git a/assets/voxygen/voxel/weapon/npcweapon/cyclops_hammer.vox b/assets/voxygen/voxel/weapon/npcweapon/cyclops_hammer.vox deleted file mode 100644 index 93bf3d1752..0000000000 --- a/assets/voxygen/voxel/weapon/npcweapon/cyclops_hammer.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ef11b80feaf3144e07c4779baa8eaf248e4311e3c927e050193f254ff7136111 -size 29267 diff --git a/common/src/comp/agent.rs b/common/src/comp/agent.rs index b80c4b1c06..ab301d925f 100644 --- a/common/src/comp/agent.rs +++ b/common/src/comp/agent.rs @@ -25,6 +25,7 @@ pub enum Tactic { TailSlap, QuadLowQuick, QuadLowBasic, + QuadLowBeam, QuadMedJump, QuadMedBasic, Lavadrake, @@ -141,6 +142,8 @@ impl<'a> From<&'a Body> for Psyche { quadruped_medium::Species::Zebra => 0.7, quadruped_medium::Species::Antelope => 0.6, quadruped_medium::Species::Horse => 0.7, + quadruped_medium::Species::Cattle => 0.7, + quadruped_medium::Species::Darkhound => 0.9, _ => 0.5, }, Body::QuadrupedLow(quadruped_low) => match quadruped_low.species { @@ -150,6 +153,7 @@ impl<'a> From<&'a Body> for Psyche { quadruped_low::Species::Pangolin => 0.4, _ => 0.6, }, + Body::BipedSmall(_) => 0.5, Body::BirdMedium(_) => 0.5, Body::BirdSmall(_) => 0.4, Body::FishMedium(_) => 0.15, diff --git a/common/src/comp/body.rs b/common/src/comp/body.rs index 742a487adb..9e595d1b67 100644 --- a/common/src/comp/body.rs +++ b/common/src/comp/body.rs @@ -1,4 +1,5 @@ pub mod biped_large; +pub mod biped_small; pub mod bird_medium; pub mod bird_small; pub mod dragon; @@ -38,10 +39,11 @@ make_case_elim!( BirdSmall(body: bird_small::Body) = 6, FishSmall(body: fish_small::Body) = 7, BipedLarge(body: biped_large::Body)= 8, - Object(body: object::Body) = 9, - Golem(body: golem::Body) = 10, - Theropod(body: theropod::Body) = 11, - QuadrupedLow(body: quadruped_low::Body) = 12, + BipedSmall(body: biped_small::Body)= 9, + Object(body: object::Body) = 10, + Golem(body: golem::Body) = 11, + Theropod(body: theropod::Body) = 12, + QuadrupedLow(body: quadruped_low::Body) = 13, } ); @@ -71,6 +73,7 @@ pub struct AllBodies { pub bird_small: BodyData, pub fish_small: BodyData>, pub biped_large: BodyData>, + pub biped_small: BodyData>, pub object: BodyData, pub golem: BodyData>, pub theropod: BodyData>, @@ -91,6 +94,7 @@ impl core::ops::Index for AllBodies &self.fish_medium.body, NpcKind::Clownfish => &self.fish_small.body, NpcKind::Ogre => &self.biped_large.body, + NpcKind::Gnome => &self.biped_small.body, NpcKind::StoneGolem => &self.golem.body, NpcKind::Archaeos => &self.theropod.body, NpcKind::Reddragon => &self.dragon.body, @@ -115,6 +119,7 @@ impl<'a, BodyMeta, SpeciesMeta> core::ops::Index<&'a Body> for AllBodies &self.bird_small.body, Body::FishSmall(_) => &self.fish_small.body, Body::BipedLarge(_) => &self.biped_large.body, + Body::BipedSmall(_) => &self.biped_small.body, Body::Object(_) => &self.object.body, Body::Golem(_) => &self.golem.body, Body::Theropod(_) => &self.theropod.body, @@ -168,6 +173,12 @@ impl Body { quadruped_medium::Species::Deer => 1.5, quadruped_medium::Species::Donkey => 1.5, quadruped_medium::Species::Kelpie => 1.5, + quadruped_medium::Species::Barghest => 1.8, + quadruped_medium::Species::Cattle => 1.8, + quadruped_medium::Species::Highland => 1.8, + quadruped_medium::Species::Yak => 1.8, + quadruped_medium::Species::Panda => 1.8, + quadruped_medium::Species::Bear => 1.8, _ => 1.5, }, Body::QuadrupedLow(body) => match body.species { @@ -177,6 +188,7 @@ impl Body { quadruped_low::Species::Salamander => 2.4, quadruped_low::Species::Pangolin => 2.0, quadruped_low::Species::Lavadrake => 2.5, + quadruped_low::Species::Deadwood => 0.5, _ => 1.6, }, Body::Theropod(body) => match body.species { @@ -193,13 +205,16 @@ impl Body { Body::BirdSmall(_) => 0.6, Body::FishSmall(_) => 0.6, Body::BipedLarge(body) => match body.species { - biped_large::Species::Slysaurok => 2.3, - biped_large::Species::Occultsaurok => 2.8, - biped_large::Species::Mightysaurok => 2.3, - biped_large::Species::Mindflayer => 1.8, - _ => 4.6, + biped_large::Species::Slysaurok => 2.0, + biped_large::Species::Occultsaurok => 2.0, + biped_large::Species::Mightysaurok => 2.0, + biped_large::Species::Mindflayer => 2.2, + biped_large::Species::Minotaur => 3.0, + + _ => 2.3, }, Body::Golem(_) => 2.5, + Body::BipedSmall(_) => 0.75, Body::Object(_) => 0.4, } } @@ -231,6 +246,7 @@ impl Body { quadruped_medium::Species::Lion => 2.0, quadruped_medium::Species::Saber => 2.0, quadruped_medium::Species::Catoblepas => 2.9, + quadruped_medium::Species::Barghest => 2.5, _ => 1.6, }, Body::QuadrupedLow(body) => match body.species { @@ -244,6 +260,7 @@ impl Body { theropod::Species::Snowraptor => 2.6, theropod::Species::Sandraptor => 2.6, theropod::Species::Woodraptor => 2.6, + theropod::Species::Sunlizard => 2.5, _ => 8.0, }, Body::BirdMedium(body) => match body.species { @@ -255,13 +272,19 @@ impl Body { Body::BirdSmall(_) => 1.1, Body::FishSmall(_) => 0.6, Body::BipedLarge(body) => match body.species { - biped_large::Species::Slysaurok => 2.3, - biped_large::Species::Occultsaurok => 2.8, - biped_large::Species::Mightysaurok => 2.3, - biped_large::Species::Mindflayer => 4.8, - _ => 4.6, + biped_large::Species::Slysaurok => 3.4, + biped_large::Species::Occultsaurok => 3.4, + biped_large::Species::Mightysaurok => 3.4, + biped_large::Species::Mindflayer => 6.3, + biped_large::Species::Minotaur => 8.0, + biped_large::Species::Dullahan => 5.5, + biped_large::Species::Cyclops => 6.5, + biped_large::Species::Werewolf => 3.5, + + _ => 6.0, }, Body::Golem(_) => 5.0, + Body::BipedSmall(_) => 1.4, Body::Object(object) => match object { object::Body::Crossbow => 1.7, _ => 1.0, @@ -314,6 +337,12 @@ impl Body { quadruped_medium::Species::Antelope => 300, quadruped_medium::Species::Kelpie => 600, quadruped_medium::Species::Horse => 600, + quadruped_medium::Species::Barghest => 1000, + quadruped_medium::Species::Cattle => 600, + quadruped_medium::Species::Highland => 600, + quadruped_medium::Species::Yak => 600, + quadruped_medium::Species::Panda => 800, + quadruped_medium::Species::Bear => 800, _ => 400, }, Body::BirdMedium(bird_medium) => match bird_medium.species { @@ -337,8 +366,20 @@ impl Body { biped_large::Species::Troll => 1500, biped_large::Species::Dullahan => 2000, biped_large::Species::Mindflayer => 8000, + biped_large::Species::Tidalwarrior => 2500, + biped_large::Species::Yeti => 2000, + biped_large::Species::Minotaur => 5000, + biped_large::Species::Harvester => 2000, _ => 1000, }, + Body::BipedSmall(biped_small) => match biped_small.species { + biped_small::Species::Gnarling => 300, + biped_small::Species::Adlet => 400, + biped_small::Species::Sahagin => 500, + biped_small::Species::Haniwa => 700, + biped_small::Species::Myrmidon => 800, + _ => 600, + }, Body::Object(object) => match object { object::Body::TrainingDummy => 10000, object::Body::Crossbow => 800, @@ -363,6 +404,7 @@ impl Body { quadruped_low::Species::Sandshark => 600, quadruped_low::Species::Hakulaq => 400, quadruped_low::Species::Lavadrake => 900, + quadruped_low::Species::Deadwood => 600, _ => 200, }, @@ -403,6 +445,12 @@ impl Body { quadruped_medium::Species::Antelope => 20, quadruped_medium::Species::Kelpie => 30, quadruped_medium::Species::Horse => 30, + quadruped_medium::Species::Barghest => 50, + quadruped_medium::Species::Cattle => 30, + quadruped_medium::Species::Highland => 30, + quadruped_medium::Species::Yak => 30, + quadruped_medium::Species::Panda => 40, + quadruped_medium::Species::Bear => 40, _ => 20, }, Body::BirdMedium(bird_medium) => match bird_medium.species { @@ -426,8 +474,12 @@ impl Body { biped_large::Species::Troll => 60, biped_large::Species::Dullahan => 120, biped_large::Species::Mindflayer => 250, + biped_large::Species::Tidalwarrior => 90, + biped_large::Species::Yeti => 80, + biped_large::Species::Harvester => 80, _ => 100, }, + Body::BipedSmall(_) => 10, Body::Object(_) => 10, Body::Golem(_) => 260, Body::Theropod(_) => 20, @@ -443,6 +495,7 @@ impl Body { quadruped_low::Species::Maneater => 30, quadruped_low::Species::Sandshark => 40, quadruped_low::Species::Hakulaq => 10, + quadruped_low::Species::Deadwood => 30, _ => 20, }, } @@ -479,7 +532,12 @@ impl Body { } } - pub fn can_strafe(&self) -> bool { matches!(self, Body::Humanoid(_)) } + pub fn can_strafe(&self) -> bool { + matches!( + self, + Body::Humanoid(_) | Body::BipedSmall(_) | Body::BipedLarge(_) + ) + } } impl Component for Body { diff --git a/common/src/comp/body/biped_large.rs b/common/src/comp/body/biped_large.rs index ab751e8cf9..1208021085 100644 --- a/common/src/comp/body/biped_large.rs +++ b/common/src/comp/body/biped_large.rs @@ -44,6 +44,10 @@ make_case_elim!( Mightysaurok = 7, Slysaurok = 8, Mindflayer = 9, + Minotaur = 10, + Tidalwarrior = 11, + Yeti = 12, + Harvester = 13, } ); @@ -62,6 +66,10 @@ pub struct AllSpecies { pub saurok_mighty: SpeciesMeta, pub saurok_sly: SpeciesMeta, pub mindflayer: SpeciesMeta, + pub minotaur: SpeciesMeta, + pub tidalwarrior: SpeciesMeta, + pub yeti: SpeciesMeta, + pub harvester: SpeciesMeta, } impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies { @@ -80,11 +88,15 @@ impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies Species::Mightysaurok => &self.saurok_mighty, Species::Slysaurok => &self.saurok_sly, Species::Mindflayer => &self.mindflayer, + Species::Minotaur => &self.minotaur, + Species::Tidalwarrior => &self.tidalwarrior, + Species::Yeti => &self.yeti, + Species::Harvester => &self.harvester, } } } -pub const ALL_SPECIES: [Species; 10] = [ +pub const ALL_SPECIES: [Species; 14] = [ Species::Ogre, Species::Cyclops, Species::Wendigo, @@ -95,6 +107,10 @@ pub const ALL_SPECIES: [Species; 10] = [ Species::Mightysaurok, Species::Slysaurok, Species::Mindflayer, + Species::Minotaur, + Species::Tidalwarrior, + Species::Yeti, + Species::Harvester, ]; impl<'a, SpeciesMeta: 'a> IntoIterator for &'a AllSpecies { diff --git a/common/src/comp/body/biped_small.rs b/common/src/comp/body/biped_small.rs new file mode 100644 index 0000000000..9746589373 --- /dev/null +++ b/common/src/comp/body/biped_small.rs @@ -0,0 +1,116 @@ +use crate::{make_case_elim, make_proj_elim}; +use rand::{seq::SliceRandom, thread_rng}; +use serde::{Deserialize, Serialize}; + +make_proj_elim!( + body, + #[derive(Copy, Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)] + pub struct Body { + pub species: Species, + pub body_type: BodyType, + } +); + +impl Body { + pub fn random() -> Self { + let mut rng = thread_rng(); + let species = *(&ALL_SPECIES).choose(&mut rng).unwrap(); + Self::random_with(&mut rng, &species) + } + + #[inline] + pub fn random_with(rng: &mut impl rand::Rng, &species: &Species) -> Self { + let body_type = *(&ALL_BODY_TYPES).choose(rng).unwrap(); + Self { species, body_type } + } +} + +impl From for super::Body { + fn from(body: Body) -> Self { super::Body::BipedSmall(body) } +} + +make_case_elim!( + species, + #[derive(Copy, Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)] + #[repr(u32)] + pub enum Species { + Gnome = 0, + Sahagin = 1, + Adlet = 2, + Gnarling = 3, + Mandragora = 4, + Kappa = 5, + Cactid = 6, + Gnoll = 7, + Haniwa = 8, + Myrmidon = 9, + } +); + +/// Data representing per-species generic data. +/// +/// NOTE: Deliberately don't (yet?) implement serialize. +#[derive(Clone, Debug, Deserialize)] +pub struct AllSpecies { + pub gnome: SpeciesMeta, + pub sahagin: SpeciesMeta, + pub adlet: SpeciesMeta, + pub gnarling: SpeciesMeta, + pub mandragora: SpeciesMeta, + pub kappa: SpeciesMeta, + pub cactid: SpeciesMeta, + pub gnoll: SpeciesMeta, + pub haniwa: SpeciesMeta, + pub myrmidon: SpeciesMeta, +} + +impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies { + type Output = SpeciesMeta; + + #[inline] + fn index(&self, &index: &'a Species) -> &Self::Output { + match index { + Species::Gnome => &self.gnome, + Species::Sahagin => &self.sahagin, + Species::Adlet => &self.adlet, + Species::Gnarling => &self.gnarling, + Species::Mandragora => &self.mandragora, + Species::Kappa => &self.kappa, + Species::Cactid => &self.cactid, + Species::Gnoll => &self.gnoll, + Species::Haniwa => &self.haniwa, + Species::Myrmidon => &self.myrmidon, + } + } +} + +pub const ALL_SPECIES: [Species; 10] = [ + Species::Gnome, + Species::Sahagin, + Species::Adlet, + Species::Gnarling, + Species::Mandragora, + Species::Kappa, + Species::Cactid, + Species::Gnoll, + Species::Haniwa, + Species::Myrmidon, +]; + +impl<'a, SpeciesMeta: 'a> IntoIterator for &'a AllSpecies { + type IntoIter = std::iter::Copied>; + type Item = Species; + + fn into_iter(self) -> Self::IntoIter { ALL_SPECIES.iter().copied() } +} + +make_case_elim!( + body_type, + #[derive(Copy, Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)] + #[repr(u32)] + pub enum BodyType { + Female = 0, + Male = 1, + } +); +pub const ALL_BODY_TYPES: [BodyType; 2] = [BodyType::Female, BodyType::Male]; diff --git a/common/src/comp/body/bird_medium.rs b/common/src/comp/body/bird_medium.rs index 26e7e7fa5c..264e6abf05 100644 --- a/common/src/comp/body/bird_medium.rs +++ b/common/src/comp/body/bird_medium.rs @@ -39,7 +39,7 @@ make_case_elim!( Goose = 2, Peacock = 3, Eagle = 4, - Snowyowl = 5, + Owl = 5, Parrot = 6, Cockatrice = 7, } @@ -55,7 +55,7 @@ pub struct AllSpecies { pub goose: SpeciesMeta, pub peacock: SpeciesMeta, pub eagle: SpeciesMeta, - pub snowyowl: SpeciesMeta, + pub owl: SpeciesMeta, pub parrot: SpeciesMeta, pub cockatrice: SpeciesMeta, } @@ -71,7 +71,7 @@ impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies Species::Goose => &self.goose, Species::Peacock => &self.peacock, Species::Eagle => &self.eagle, - Species::Snowyowl => &self.snowyowl, + Species::Owl => &self.owl, Species::Parrot => &self.parrot, Species::Cockatrice => &self.cockatrice, } @@ -84,7 +84,7 @@ pub const ALL_SPECIES: [Species; 8] = [ Species::Goose, Species::Peacock, Species::Eagle, - Species::Snowyowl, + Species::Owl, Species::Parrot, Species::Cockatrice, ]; diff --git a/common/src/comp/body/fish_small.rs b/common/src/comp/body/fish_small.rs index 90c7597436..952a3f5412 100644 --- a/common/src/comp/body/fish_small.rs +++ b/common/src/comp/body/fish_small.rs @@ -35,6 +35,7 @@ make_case_elim!( #[repr(u32)] pub enum Species { Clownfish = 0, + Piranha = 1, } ); @@ -44,6 +45,7 @@ make_case_elim!( #[derive(Clone, Debug, Deserialize)] pub struct AllSpecies { pub clownfish: SpeciesMeta, + pub piranha: 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::Clownfish => &self.clownfish, + Species::Piranha => &self.piranha, } } } -pub const ALL_SPECIES: [Species; 1] = [Species::Clownfish]; +pub const ALL_SPECIES: [Species; 2] = [Species::Clownfish, Species::Piranha]; impl<'a, SpeciesMeta: 'a> IntoIterator for &'a AllSpecies { type IntoIter = std::iter::Copied>; diff --git a/common/src/comp/body/golem.rs b/common/src/comp/body/golem.rs index 2c01ed3914..a0549a5595 100644 --- a/common/src/comp/body/golem.rs +++ b/common/src/comp/body/golem.rs @@ -36,6 +36,7 @@ make_case_elim!( pub enum Species { StoneGolem = 0, Treant = 1, + ClayGolem = 2, } ); @@ -46,6 +47,7 @@ make_case_elim!( pub struct AllSpecies { pub stonegolem: SpeciesMeta, pub treant: SpeciesMeta, + pub claygolem: SpeciesMeta, } impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies { @@ -56,11 +58,12 @@ impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies match index { Species::StoneGolem => &self.stonegolem, Species::Treant => &self.treant, + Species::ClayGolem => &self.claygolem, } } } -pub const ALL_SPECIES: [Species; 2] = [Species::StoneGolem, Species::Treant]; +pub const ALL_SPECIES: [Species; 3] = [Species::StoneGolem, Species::Treant, Species::ClayGolem]; impl<'a, SpeciesMeta: 'a> IntoIterator for &'a AllSpecies { type IntoIter = std::iter::Copied>; diff --git a/common/src/comp/body/quadruped_low.rs b/common/src/comp/body/quadruped_low.rs index 0ad0f137b4..f2c14091e2 100644 --- a/common/src/comp/body/quadruped_low.rs +++ b/common/src/comp/body/quadruped_low.rs @@ -46,6 +46,8 @@ make_case_elim!( Sandshark = 9, Hakulaq = 10, Lavadrake = 11, + Basilisk = 12, + Deadwood = 13, } ); @@ -66,6 +68,8 @@ pub struct AllSpecies { pub sandshark: SpeciesMeta, pub hakulaq: SpeciesMeta, pub lavadrake: SpeciesMeta, + pub basilisk: SpeciesMeta, + pub deadwood: SpeciesMeta, } impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies { @@ -86,11 +90,13 @@ impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies Species::Sandshark => &self.sandshark, Species::Hakulaq => &self.hakulaq, Species::Lavadrake => &self.lavadrake, + Species::Basilisk => &self.basilisk, + Species::Deadwood => &self.deadwood, } } } -pub const ALL_SPECIES: [Species; 12] = [ +pub const ALL_SPECIES: [Species; 14] = [ Species::Crocodile, Species::Alligator, Species::Salamander, @@ -103,6 +109,8 @@ pub const ALL_SPECIES: [Species; 12] = [ Species::Sandshark, Species::Hakulaq, Species::Lavadrake, + Species::Basilisk, + Species::Deadwood, ]; impl<'a, SpeciesMeta: 'a> IntoIterator for &'a AllSpecies { diff --git a/common/src/comp/body/quadruped_medium.rs b/common/src/comp/body/quadruped_medium.rs index c657d289ce..d1b2b89b43 100644 --- a/common/src/comp/body/quadruped_medium.rs +++ b/common/src/comp/body/quadruped_medium.rs @@ -52,6 +52,13 @@ pub enum Species { Antelope = 19, Kelpie = 20, Horse = 21, + Barghest = 22, + Cattle = 23, + Darkhound = 24, + Highland = 25, + Yak = 26, + Panda = 27, + Bear = 28, } /// Data representing per-species generic data. @@ -79,6 +86,13 @@ pub struct AllSpecies { pub antelope: SpeciesMeta, pub kelpie: SpeciesMeta, pub horse: SpeciesMeta, + pub barghest: SpeciesMeta, + pub cattle: SpeciesMeta, + pub darkhound: SpeciesMeta, + pub highland: SpeciesMeta, + pub yak: SpeciesMeta, + pub panda: SpeciesMeta, + pub bear: SpeciesMeta, } impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies { @@ -107,11 +121,18 @@ impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies Species::Antelope => &self.antelope, Species::Kelpie => &self.kelpie, Species::Horse => &self.horse, + Species::Barghest => &self.barghest, + Species::Cattle => &self.cattle, + Species::Darkhound => &self.darkhound, + Species::Highland => &self.highland, + Species::Yak => &self.yak, + Species::Panda => &self.panda, + Species::Bear => &self.bear, } } } -pub const ALL_SPECIES: [Species; 20] = [ +pub const ALL_SPECIES: [Species; 27] = [ Species::Grolgar, Species::Saber, Species::Tiger, @@ -132,6 +153,13 @@ pub const ALL_SPECIES: [Species; 20] = [ Species::Antelope, Species::Kelpie, Species::Horse, + Species::Barghest, + Species::Cattle, + Species::Darkhound, + Species::Highland, + Species::Yak, + Species::Panda, + Species::Bear, ]; 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 90505a7d27..12288bd687 100644 --- a/common/src/comp/body/quadruped_small.rs +++ b/common/src/comp/body/quadruped_small.rs @@ -57,6 +57,7 @@ pub enum Species { Porcupine = 22, Beaver = 23, Hare = 24, + Dog = 25, } /// Data representing per-species generic data. @@ -89,6 +90,7 @@ pub struct AllSpecies { pub porcupine: SpeciesMeta, pub beaver: SpeciesMeta, pub hare: SpeciesMeta, + pub dog: SpeciesMeta, } impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies { @@ -122,11 +124,12 @@ impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies Species::Porcupine => &self.porcupine, Species::Beaver => &self.beaver, Species::Hare => &self.hare, + Species::Dog => &self.dog, } } } -pub const ALL_SPECIES: [Species; 25] = [ +pub const ALL_SPECIES: [Species; 26] = [ Species::Pig, Species::Fox, Species::Sheep, @@ -152,6 +155,7 @@ pub const ALL_SPECIES: [Species; 25] = [ Species::Porcupine, Species::Beaver, Species::Hare, + Species::Dog, ]; 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 c3d1c63e36..54633ec9df 100644 --- a/common/src/comp/body/theropod.rs +++ b/common/src/comp/body/theropod.rs @@ -33,6 +33,7 @@ pub enum Species { Sandraptor = 2, Snowraptor = 3, Woodraptor = 4, + Sunlizard = 5, } /// Data representing per-species generic data. @@ -43,6 +44,7 @@ pub struct AllSpecies { pub raptor_sand: SpeciesMeta, pub raptor_snow: SpeciesMeta, pub raptor_wood: SpeciesMeta, + pub sunlizard: SpeciesMeta, } impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies { @@ -56,16 +58,18 @@ impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies Species::Sandraptor => &self.raptor_sand, Species::Snowraptor => &self.raptor_snow, Species::Woodraptor => &self.raptor_wood, + Species::Sunlizard => &self.sunlizard, } } } -pub const ALL_SPECIES: [Species; 5] = [ +pub const ALL_SPECIES: [Species; 6] = [ Species::Archaeos, Species::Odonto, Species::Sandraptor, Species::Snowraptor, Species::Woodraptor, + Species::Sunlizard, ]; impl<'a, SpeciesMeta: 'a> IntoIterator for &'a AllSpecies { diff --git a/common/src/comp/inventory/item/modular.rs b/common/src/comp/inventory/item/modular.rs index b7239145b9..89f2d7eff4 100644 --- a/common/src/comp/inventory/item/modular.rs +++ b/common/src/comp/inventory/item/modular.rs @@ -36,14 +36,15 @@ impl TagExampleInfo for ModularComponentTag { fn name(&self) -> &'static str { match self.modkind { ModularComponentKind::Damage => match self.toolkind { - ToolKind::Sword => "sword blade", - ToolKind::Axe => "axe head", - ToolKind::Hammer => "hammer head", - ToolKind::Bow => "bow limbs", + ToolKind::Sword | ToolKind::SwordSimple => "sword blade", + ToolKind::Axe | ToolKind::AxeSimple => "axe head", + ToolKind::Hammer | ToolKind::HammerSimple => "hammer head", + ToolKind::Bow | ToolKind::BowSimple => "bow limbs", ToolKind::Dagger => "dagger blade", - ToolKind::Staff => "staff head", + ToolKind::Staff | ToolKind::StaffSimple => "staff head", ToolKind::Sceptre => "sceptre head", // TODO: naming + ToolKind::Spear => "spear damage component", ToolKind::Shield => "shield damage component", ToolKind::Unique(_) => "unique damage component", ToolKind::Debug => "debug damage component", @@ -51,14 +52,15 @@ impl TagExampleInfo for ModularComponentTag { ToolKind::Empty => "empty damage component", }, ModularComponentKind::Held => match self.toolkind { - ToolKind::Sword => "sword hilt", - ToolKind::Axe => "axe shaft", - ToolKind::Hammer => "hammer shaft", - ToolKind::Bow => "bow riser", + ToolKind::Sword | ToolKind::SwordSimple => "sword hilt", + ToolKind::Axe | ToolKind::AxeSimple => "axe shaft", + ToolKind::Hammer | ToolKind::HammerSimple => "hammer shaft", + ToolKind::Bow | ToolKind::BowSimple => "bow riser", ToolKind::Dagger => "dagger grip", - ToolKind::Staff => "staff shaft", + ToolKind::Staff | ToolKind::StaffSimple => "staff shaft", ToolKind::Sceptre => "sceptre shaft", // TODO: naming + ToolKind::Spear => "spear held component", ToolKind::Shield => "shield held component", ToolKind::Unique(_) => "unique held component", ToolKind::Debug => "debug held component", @@ -71,28 +73,46 @@ impl TagExampleInfo for ModularComponentTag { fn exemplar_identifier(&self) -> &'static str { match self.modkind { ModularComponentKind::Damage => match self.toolkind { - ToolKind::Sword => "common.items.tag_examples.modular.damage.sword", - ToolKind::Axe => "common.items.tag_examples.modular.damage.axe", - ToolKind::Hammer => "common.items.tag_examples.modular.damage.hammer", - ToolKind::Bow => "common.items.tag_examples.modular.damage.bow", + ToolKind::Sword | ToolKind::SwordSimple => { + "common.items.tag_examples.modular.damage.sword" + }, + ToolKind::Axe | ToolKind::AxeSimple => { + "common.items.tag_examples.modular.damage.axe" + }, + ToolKind::Hammer | ToolKind::HammerSimple => { + "common.items.tag_examples.modular.damage.hammer" + }, + ToolKind::Bow | ToolKind::BowSimple => { + "common.items.tag_examples.modular.damage.bow" + }, ToolKind::Dagger => "common.items.tag_examples.modular.damage.dagger", - ToolKind::Staff => "common.items.tag_examples.modular.damage.staff", + ToolKind::Staff | ToolKind::StaffSimple => { + "common.items.tag_examples.modular.damage.staff" + }, ToolKind::Sceptre => "common.items.tag_examples.modular.damage.sceptre", ToolKind::Shield => "common.items.tag_examples.modular.damage.shield", + ToolKind::Spear => "common.items.tag_examples.modular.damage.spear", ToolKind::Unique(_) => "common.items.tag_examples.modular.damage.unique", ToolKind::Debug => "common.items.tag_examples.modular.damage.debug", ToolKind::Farming => "common.items.tag_examples.modular.damage.farming", ToolKind::Empty => "common.items.tag_examples.modular.damage.empty", }, ModularComponentKind::Held => match self.toolkind { - ToolKind::Sword => "common.items.tag_examples.modular.held.sword", - ToolKind::Axe => "common.items.tag_examples.modular.held.axe", - ToolKind::Hammer => "common.items.tag_examples.modular.held.hammer", - ToolKind::Bow => "common.items.tag_examples.modular.held.bow", + ToolKind::Sword | ToolKind::SwordSimple => { + "common.items.tag_examples.modular.held.sword" + }, + ToolKind::Axe | ToolKind::AxeSimple => "common.items.tag_examples.modular.held.axe", + ToolKind::Hammer | ToolKind::HammerSimple => { + "common.items.tag_examples.modular.held.hammer" + }, + ToolKind::Bow | ToolKind::BowSimple => "common.items.tag_examples.modular.held.bow", ToolKind::Dagger => "common.items.tag_examples.modular.held.dagger", - ToolKind::Staff => "common.items.tag_examples.modular.held.staff", + ToolKind::Staff | ToolKind::StaffSimple => { + "common.items.tag_examples.modular.held.staff" + }, ToolKind::Sceptre => "common.items.tag_examples.modular.held.sceptre", ToolKind::Shield => "common.items.tag_examples.modular.held.shield", + ToolKind::Spear => "common.items.tag_examples.modular.held.spear", ToolKind::Unique(_) => "common.items.tag_examples.modular.held.unique", ToolKind::Debug => "common.items.tag_examples.modular.held.debug", ToolKind::Farming => "common.items.tag_examples.modular.held.farming", diff --git a/common/src/comp/inventory/item/tool.rs b/common/src/comp/inventory/item/tool.rs index 11dad4f3a9..55bc5f7139 100644 --- a/common/src/comp/inventory/item/tool.rs +++ b/common/src/comp/inventory/item/tool.rs @@ -18,11 +18,17 @@ pub enum ToolKind { Sword, Axe, Hammer, + HammerSimple, //simple tools utilized by small/large biped variants, to simplify movesets + SwordSimple, + StaffSimple, + BowSimple, + AxeSimple, Bow, Dagger, Staff, Sceptre, Shield, + Spear, Unique(UniqueKind), Debug, Farming, @@ -34,11 +40,17 @@ impl ToolKind { pub fn identifier_name(&self) -> &'static str { match self { ToolKind::Sword => "sword", + ToolKind::SwordSimple => "simple sword", ToolKind::Axe => "axe", + ToolKind::AxeSimple => "simple axe", ToolKind::Hammer => "hammer", + ToolKind::HammerSimple => "simple hammer", ToolKind::Bow => "bow", + ToolKind::BowSimple => "simple bow", ToolKind::Dagger => "dagger", ToolKind::Staff => "staff", + ToolKind::StaffSimple => "simple staff", + ToolKind::Spear => "spear", ToolKind::Sceptre => "sceptre", ToolKind::Shield => "shield", ToolKind::Unique(_) => "unique", @@ -369,6 +381,8 @@ impl assets::Compound for AbilityMap { pub enum UniqueKind { StoneGolemFist, BeastClaws, + WendigoMagic, + TidalClaws, QuadMedQuick, QuadMedJump, QuadMedHoof, @@ -379,8 +393,10 @@ pub enum UniqueKind { QuadLowTail, QuadLowQuick, QuadLowBasic, + QuadLowBeam, QuadSmallBasic, TheropodBasic, TheropodBird, ObjectTurret, + WoodenSpear, } diff --git a/common/src/comp/inventory/loadout_builder.rs b/common/src/comp/inventory/loadout_builder.rs index 979be8bab6..242f696139 100644 --- a/common/src/comp/inventory/loadout_builder.rs +++ b/common/src/comp/inventory/loadout_builder.rs @@ -1,10 +1,10 @@ use crate::comp::{ - biped_large, golem, + biped_large, biped_small, golem, inventory::{ loadout::Loadout, slot::{ArmorSlot, EquipSlot}, }, - item::{Item, ItemKind}, + item::{tool::ToolKind, Item, ItemKind}, object, quadruped_low, quadruped_medium, theropod, Body, }; use rand::Rng; @@ -32,6 +32,11 @@ pub struct LoadoutBuilder(Loadout); #[derive(Copy, Clone)] pub enum LoadoutConfig { + Adlet, + Gnarling, + Sahagin, + Haniwa, + Myrmidon, Guard, Villager, Outcast, @@ -83,13 +88,19 @@ impl LoadoutBuilder { "common.items.npc_weapons.unique.stone_golems_fist", )); }, + golem::Species::ClayGolem => { + main_tool = Some(Item::new_from_asset_expect( + "common.items.npc_weapons.unique.stone_golems_fist", + )); + }, _ => {}, }, Body::QuadrupedMedium(quadruped_medium) => match quadruped_medium.species { quadruped_medium::Species::Wolf | quadruped_medium::Species::Grolgar | quadruped_medium::Species::Lion - | quadruped_medium::Species::Bonerattler => { + | quadruped_medium::Species::Bonerattler + | quadruped_medium::Species::Darkhound => { main_tool = Some(Item::new_from_asset_expect( "common.items.npc_weapons.unique.quadmedquick", )); @@ -144,6 +155,11 @@ impl LoadoutBuilder { "common.items.npc_weapons.unique.quadlowbreathe", )); }, + quadruped_low::Species::Deadwood => { + main_tool = Some(Item::new_from_asset_expect( + "common.items.npc_weapons.unique.quadlowbeam", + )); + }, _ => { main_tool = Some(Item::new_from_asset_expect( "common.items.npc_weapons.unique.quadlowbasic", @@ -203,7 +219,7 @@ impl LoadoutBuilder { }, (biped_large::Species::Wendigo, _) => { main_tool = Some(Item::new_from_asset_expect( - "common.items.npc_weapons.unique.beast_claws", + "common.items.npc_weapons.unique.wendigo_magic", )); }, (biped_large::Species::Werewolf, _) => { @@ -226,12 +242,50 @@ impl LoadoutBuilder { "common.items.npc_weapons.staff.mindflayer_staff", )); }, + (biped_large::Species::Minotaur, _) => { + main_tool = Some(Item::new_from_asset_expect( + "common.items.npc_weapons.axe.minotaur_axe", + )); + }, + (biped_large::Species::Tidalwarrior, _) => { + main_tool = Some(Item::new_from_asset_expect( + "common.items.npc_weapons.unique.tidal_claws", + )); + }, + (biped_large::Species::Yeti, _) => { + main_tool = Some(Item::new_from_asset_expect( + "common.items.npc_weapons.hammer.yeti_hammer", + )); + }, + (biped_large::Species::Harvester, _) => { + main_tool = Some(Item::new_from_asset_expect( + "common.items.npc_weapons.hammer.harvester_scythe", + )); + }, }, Body::Object(object::Body::Crossbow) => { main_tool = Some(Item::new_from_asset_expect( "common.items.npc_weapons.unique.turret", )); }, + Body::BipedSmall(biped_small) => match (biped_small.species, biped_small.body_type) + { + (biped_small::Species::Gnome, _) => { + main_tool = Some(Item::new_from_asset_expect( + "common.items.npc_weapons.staff.gnoll", + )); + }, + (biped_small::Species::Adlet, _) => { + main_tool = Some(Item::new_from_asset_expect( + "common.items.npc_weapons.bow.adlet", + )); + }, + _ => { + main_tool = Some(Item::new_from_asset_expect( + "common.items.npc_weapons.spear.wooden_spear", + )); + }, + }, _ => {}, }; } @@ -242,30 +296,204 @@ impl LoadoutBuilder { } else { Some(Item::empty()) }; - + let active_tool_kind = active_item.as_ref().and_then(|i| { + if let ItemKind::Tool(tool) = &i.kind() { + Some(tool.kind) + } else { + None + } + }); // Creates rest of loadout let loadout = if let Some(config) = config { use LoadoutConfig::*; match config { + Adlet => match active_tool_kind { + Some(ToolKind::Bow) => LoadoutBuilder::new() + .active_item(active_item) + .head(Some(Item::new_from_asset_expect( + "common.items.npc_armor.biped_small.adlet.head.adlet_bow", + ))) + .hands(Some(Item::new_from_asset_expect( + "common.items.npc_armor.biped_small.adlet.hand.adlet_bow", + ))) + .feet(Some(Item::new_from_asset_expect( + "common.items.npc_armor.biped_small.adlet.foot.adlet", + ))) + .chest(Some(Item::new_from_asset_expect( + "common.items.npc_armor.biped_small.adlet.chest.adlet_bow", + ))) + .pants(Some(Item::new_from_asset_expect( + "common.items.npc_armor.biped_small.adlet.pants.adlet_bow", + ))) + .belt(Some(Item::new_from_asset_expect( + "common.items.npc_armor.biped_small.adlet.tail.adlet", + ))) + .build(), + Some(ToolKind::Spear) | Some(ToolKind::StaffSimple) => LoadoutBuilder::new() + .active_item(active_item) + .head(Some(Item::new_from_asset_expect( + "common.items.npc_armor.biped_small.adlet.head.adlet_spear", + ))) + .hands(Some(Item::new_from_asset_expect( + "common.items.npc_armor.biped_small.adlet.hand.adlet_spear", + ))) + .feet(Some(Item::new_from_asset_expect( + "common.items.npc_armor.biped_small.adlet.foot.adlet", + ))) + .chest(Some(Item::new_from_asset_expect( + "common.items.npc_armor.biped_small.adlet.chest.adlet_spear", + ))) + .pants(Some(Item::new_from_asset_expect( + "common.items.npc_armor.biped_small.adlet.pants.adlet_spear", + ))) + .belt(Some(Item::new_from_asset_expect( + "common.items.npc_armor.biped_small.adlet.tail.adlet", + ))) + .build(), + _ => LoadoutBuilder::new().active_item(active_item).build(), + }, + Gnarling => match active_tool_kind { + Some(ToolKind::Bow) => LoadoutBuilder::new() + .active_item(active_item) + .head(Some(Item::new_from_asset_expect( + "common.items.npc_armor.biped_small.gnarling.head.gnarling", + ))) + .feet(Some(Item::new_from_asset_expect( + "common.items.npc_armor.biped_small.gnarling.foot.gnarling", + ))) + .hands(Some(Item::new_from_asset_expect( + "common.items.npc_armor.biped_small.gnarling.hand.gnarling", + ))) + .chest(Some(Item::new_from_asset_expect( + "common.items.npc_armor.biped_small.gnarling.chest.gnarling", + ))) + .pants(Some(Item::new_from_asset_expect( + "common.items.npc_armor.biped_small.gnarling.pants.gnarling", + ))) + .belt(Some(Item::new_from_asset_expect( + "common.items.npc_armor.biped_small.gnarling.tail.gnarling", + ))) + .build(), + Some(ToolKind::StaffSimple) => LoadoutBuilder::new() + .active_item(active_item) + .head(Some(Item::new_from_asset_expect( + "common.items.npc_armor.biped_small.gnarling.head.gnarling", + ))) + .feet(Some(Item::new_from_asset_expect( + "common.items.npc_armor.biped_small.gnarling.foot.gnarling", + ))) + .hands(Some(Item::new_from_asset_expect( + "common.items.npc_armor.biped_small.gnarling.hand.gnarling", + ))) + .chest(Some(Item::new_from_asset_expect( + "common.items.npc_armor.biped_small.gnarling.chest.gnarling", + ))) + .pants(Some(Item::new_from_asset_expect( + "common.items.npc_armor.biped_small.gnarling.pants.gnarling", + ))) + .belt(Some(Item::new_from_asset_expect( + "common.items.npc_armor.biped_small.gnarling.tail.gnarling", + ))) + .build(), + Some(ToolKind::Spear) => LoadoutBuilder::new() + .active_item(active_item) + .head(Some(Item::new_from_asset_expect( + "common.items.npc_armor.biped_small.gnarling.head.gnarling", + ))) + .feet(Some(Item::new_from_asset_expect( + "common.items.npc_armor.biped_small.gnarling.foot.gnarling", + ))) + .hands(Some(Item::new_from_asset_expect( + "common.items.npc_armor.biped_small.gnarling.hand.gnarling", + ))) + .chest(Some(Item::new_from_asset_expect( + "common.items.npc_armor.biped_small.gnarling.chest.gnarling", + ))) + .pants(Some(Item::new_from_asset_expect( + "common.items.npc_armor.biped_small.gnarling.pants.gnarling", + ))) + .build(), + _ => LoadoutBuilder::new().active_item(active_item).build(), + }, + Sahagin => LoadoutBuilder::new() + .active_item(active_item) + .head(Some(Item::new_from_asset_expect( + "common.items.npc_armor.biped_small.sahagin.head.sahagin", + ))) + .feet(Some(Item::new_from_asset_expect( + "common.items.npc_armor.biped_small.sahagin.foot.sahagin", + ))) + .hands(Some(Item::new_from_asset_expect( + "common.items.npc_armor.biped_small.sahagin.hand.sahagin", + ))) + .chest(Some(Item::new_from_asset_expect( + "common.items.npc_armor.biped_small.sahagin.chest.sahagin", + ))) + .pants(Some(Item::new_from_asset_expect( + "common.items.npc_armor.biped_small.sahagin.pants.sahagin", + ))) + .belt(Some(Item::new_from_asset_expect( + "common.items.npc_armor.biped_small.sahagin.tail.sahagin", + ))) + .build(), + Haniwa => LoadoutBuilder::new() + .active_item(active_item) + .head(Some(Item::new_from_asset_expect( + "common.items.npc_armor.biped_small.haniwa.head.haniwa", + ))) + .feet(Some(Item::new_from_asset_expect( + "common.items.npc_armor.biped_small.haniwa.foot.haniwa", + ))) + .hands(Some(Item::new_from_asset_expect( + "common.items.npc_armor.biped_small.haniwa.hand.haniwa", + ))) + .chest(Some(Item::new_from_asset_expect( + "common.items.npc_armor.biped_small.haniwa.chest.haniwa", + ))) + .pants(Some(Item::new_from_asset_expect( + "common.items.npc_armor.biped_small.haniwa.pants.haniwa", + ))) + .build(), + Myrmidon => LoadoutBuilder::new() + .active_item(active_item) + .head(Some(Item::new_from_asset_expect( + "common.items.npc_armor.biped_small.myrmidon.head.myrmidon", + ))) + .feet(Some(Item::new_from_asset_expect( + "common.items.npc_armor.biped_small.myrmidon.foot.myrmidon", + ))) + .hands(Some(Item::new_from_asset_expect( + "common.items.npc_armor.biped_small.myrmidon.hand.myrmidon", + ))) + .chest(Some(Item::new_from_asset_expect( + "common.items.npc_armor.biped_small.myrmidon.chest.myrmidon", + ))) + .pants(Some(Item::new_from_asset_expect( + "common.items.npc_armor.biped_small.myrmidon.pants.myrmidon", + ))) + .belt(Some(Item::new_from_asset_expect( + "common.items.npc_armor.biped_small.myrmidon.tail.myrmidon", + ))) + .build(), Guard => LoadoutBuilder::new() .active_item(active_item) .shoulder(Some(Item::new_from_asset_expect( - "common.items.armor.shoulder.steel_0", + "common.items.armor.shoulder.plate_leather_0", ))) .chest(Some(Item::new_from_asset_expect( - "common.items.armor.chest.steel_0", + "common.items.armor.chest.plate_leather_0", ))) .belt(Some(Item::new_from_asset_expect( - "common.items.armor.belt.steel_0", + "common.items.armor.belt.plate_leather_0", ))) .hands(Some(Item::new_from_asset_expect( - "common.items.armor.hand.steel_0", + "common.items.armor.hand.plate_leather_0", ))) .pants(Some(Item::new_from_asset_expect( - "common.items.armor.pants.steel_0", + "common.items.armor.pants.plate_leather_0", ))) .feet(Some(Item::new_from_asset_expect( - "common.items.armor.foot.steel_0", + "common.items.armor.foot.plate_leather_0", ))) .lantern(match rand::thread_rng().gen_range(0..3) { 0 => Some(Item::new_from_asset_expect("common.items.lantern.black_0")), diff --git a/common/src/comp/mod.rs b/common/src/comp/mod.rs index e893baaa39..38d1694b52 100644 --- a/common/src/comp/mod.rs +++ b/common/src/comp/mod.rs @@ -46,9 +46,9 @@ pub use self::{ aura::{Aura, AuraChange, AuraKind, Auras}, beam::{Beam, BeamSegment}, body::{ - biped_large, bird_medium, bird_small, dragon, fish_medium, fish_small, golem, humanoid, - object, quadruped_low, quadruped_medium, quadruped_small, theropod, AllBodies, Body, - BodyData, + biped_large, biped_small, bird_medium, bird_small, dragon, fish_medium, fish_small, golem, + humanoid, object, quadruped_low, quadruped_medium, quadruped_small, theropod, AllBodies, + Body, BodyData, }, buff::{ Buff, BuffCategory, BuffChange, BuffData, BuffEffect, BuffId, BuffKind, BuffSource, Buffs, diff --git a/common/src/comp/projectile.rs b/common/src/comp/projectile.rs index cd7a6ad56d..2a4964b239 100644 --- a/common/src/comp/projectile.rs +++ b/common/src/comp/projectile.rs @@ -3,6 +3,7 @@ use crate::{ Attack, AttackDamage, AttackEffect, CombatBuff, CombatEffect, CombatRequirement, Damage, DamageSource, GroupTarget, Knockback, KnockbackDir, }, + comp::item::Reagent, uid::Uid, Explosion, RadiusEffect, }; @@ -49,6 +50,10 @@ pub enum ProjectileConstructor { radius: f32, energy_regen: f32, }, + Frostball { + damage: f32, + radius: f32, + }, Firebolt { damage: f32, energy_regen: f32, @@ -124,6 +129,29 @@ impl ProjectileConstructor { RadiusEffect::TerrainDestruction(2.0), ], radius, + reagent: Some(Reagent::Red), + }; + Projectile { + hit_solid: vec![Effect::Explode(explosion.clone()), Effect::Vanish], + hit_entity: vec![Effect::Explode(explosion), Effect::Vanish], + time_left: Duration::from_secs(10), + owner, + ignore_group: true, + } + }, + Frostball { damage, radius } => { + let damage = AttackDamage::new( + Damage { + source: DamageSource::Explosion, + value: damage, + }, + Some(GroupTarget::OutOfGroup), + ); + let attack = Attack::default().with_damage(damage); + let explosion = Explosion { + effects: vec![RadiusEffect::Attack(attack)], + radius, + reagent: Some(Reagent::Blue), }; Projectile { hit_solid: vec![Effect::Explode(explosion.clone()), Effect::Vanish], @@ -173,6 +201,7 @@ impl ProjectileConstructor { let explosion = Explosion { effects: vec![RadiusEffect::Attack(attack)], radius, + reagent: Some(Reagent::Green), }; Projectile { hit_solid: vec![Effect::Explode(explosion.clone()), Effect::Vanish], @@ -219,6 +248,14 @@ impl ProjectileConstructor { *energy_regen *= regen; *radius *= range; }, + Frostball { + ref mut damage, + ref mut radius, + .. + } => { + *damage *= power; + *radius *= range; + }, Firebolt { ref mut damage, ref mut energy_regen, diff --git a/common/src/event.rs b/common/src/event.rs index e528677b50..0a73cfa947 100644 --- a/common/src/event.rs +++ b/common/src/event.rs @@ -9,7 +9,7 @@ use crate::{ }; use comp::{ invite::{InviteKind, InviteResponse}, - item::{Item, Reagent}, + item::Item, Ori, Pos, }; use specs::Entity as EcsEntity; @@ -39,7 +39,6 @@ pub enum ServerEvent { pos: Vec3, explosion: Explosion, owner: Option, - reagent: Option, }, Damage { entity: EcsEntity, diff --git a/common/src/explosion.rs b/common/src/explosion.rs index 04296a856b..ac5790b976 100644 --- a/common/src/explosion.rs +++ b/common/src/explosion.rs @@ -1,10 +1,11 @@ -use crate::{combat::Attack, effect::Effect}; +use crate::{combat::Attack, comp::item::Reagent, effect::Effect}; use serde::{Deserialize, Serialize}; #[derive(Clone, Debug, Serialize, Deserialize)] pub struct Explosion { pub effects: Vec, pub radius: f32, + pub reagent: Option, } #[derive(Clone, Debug, Serialize, Deserialize)] diff --git a/common/src/npc.rs b/common/src/npc.rs index 8d68c507e9..d7eebe5f17 100644 --- a/common/src/npc.rs +++ b/common/src/npc.rs @@ -16,13 +16,14 @@ pub enum NpcKind { Clownfish, Marlin, Ogre, + Gnome, Archaeos, StoneGolem, Reddragon, Crocodile, } -pub const ALL_NPCS: [NpcKind; 11] = [ +pub const ALL_NPCS: [NpcKind; 12] = [ NpcKind::Humanoid, NpcKind::Wolf, NpcKind::Pig, @@ -30,6 +31,7 @@ pub const ALL_NPCS: [NpcKind; 11] = [ NpcKind::Clownfish, NpcKind::Marlin, NpcKind::Ogre, + NpcKind::Gnome, NpcKind::Archaeos, NpcKind::StoneGolem, NpcKind::Reddragon, @@ -123,6 +125,7 @@ pub fn kind_to_body(kind: NpcKind) -> Body { NpcKind::Clownfish => comp::fish_small::Body::random().into(), NpcKind::Marlin => comp::fish_medium::Body::random().into(), NpcKind::Ogre => comp::biped_large::Body::random().into(), + NpcKind::Gnome => comp::biped_small::Body::random().into(), NpcKind::Archaeos => comp::theropod::Body::random().into(), NpcKind::StoneGolem => comp::golem::Body::random().into(), NpcKind::Reddragon => comp::dragon::Body::random().into(), @@ -249,6 +252,14 @@ impl NpcBody { comp::biped_large::Body::random_with, ) }) + .or_else(|| { + parse( + s, + NpcKind::Gnome, + &npc_names.biped_small, + comp::biped_small::Body::random_with, + ) + }) .or_else(|| { parse( s, diff --git a/common/src/skillset_builder.rs b/common/src/skillset_builder.rs index 59f44c569b..81b039d882 100644 --- a/common/src/skillset_builder.rs +++ b/common/src/skillset_builder.rs @@ -8,6 +8,11 @@ use tracing::warn; #[derive(Copy, Clone)] pub enum SkillSetConfig { + Adlet, + Gnarling, + Sahagin, + Haniwa, + Myrmidon, Guard, Villager, Outcast, @@ -38,6 +43,81 @@ impl SkillSetBuilder { use SkillSetConfig::*; match config { + Some(Adlet) => { + match active_item { + Some(ToolKind::Bow) => { + // Bow + Self::default() + .with_skill_group(SkillGroupKind::Weapon(ToolKind::Bow)) + .with_skill(Skill::Bow(BowSkill::BDamage), Some(1)) + .with_skill(Skill::Bow(BowSkill::CDamage), Some(1)) + .with_skill(Skill::Bow(BowSkill::CKnockback), Some(1)) + .with_skill(Skill::Bow(BowSkill::CSpeed), Some(1)) + .with_skill(Skill::Bow(BowSkill::CMove), Some(1)) + }, + _ => Self::default(), + } + }, + Some(Gnarling) => { + match active_item { + Some(ToolKind::Bow) => { + // Bow + Self::default() + .with_skill_group(SkillGroupKind::Weapon(ToolKind::Bow)) + .with_skill(Skill::Bow(BowSkill::BDamage), Some(1)) + .with_skill(Skill::Bow(BowSkill::CDamage), Some(1)) + .with_skill(Skill::Bow(BowSkill::CKnockback), Some(1)) + .with_skill(Skill::Bow(BowSkill::CSpeed), Some(1)) + .with_skill(Skill::Bow(BowSkill::CMove), Some(1)) + }, + _ => Self::default(), + } + }, + Some(Sahagin) => { + match active_item { + Some(ToolKind::Bow) => { + // Bow + Self::default() + .with_skill_group(SkillGroupKind::Weapon(ToolKind::Bow)) + .with_skill(Skill::Bow(BowSkill::BDamage), Some(1)) + .with_skill(Skill::Bow(BowSkill::CDamage), Some(1)) + .with_skill(Skill::Bow(BowSkill::CKnockback), Some(1)) + .with_skill(Skill::Bow(BowSkill::CSpeed), Some(1)) + .with_skill(Skill::Bow(BowSkill::CMove), Some(1)) + }, + _ => Self::default(), + } + }, + Some(Haniwa) => { + match active_item { + Some(ToolKind::Bow) => { + // Bow + Self::default() + .with_skill_group(SkillGroupKind::Weapon(ToolKind::Bow)) + .with_skill(Skill::Bow(BowSkill::BDamage), Some(1)) + .with_skill(Skill::Bow(BowSkill::CDamage), Some(1)) + .with_skill(Skill::Bow(BowSkill::CKnockback), Some(1)) + .with_skill(Skill::Bow(BowSkill::CSpeed), Some(1)) + .with_skill(Skill::Bow(BowSkill::CMove), Some(1)) + }, + _ => Self::default(), + } + }, + Some(Myrmidon) => { + match active_item { + Some(ToolKind::Bow) => { + // Bow + Self::default() + .with_skill_group(SkillGroupKind::Weapon(ToolKind::Bow)) + .with_skill(Skill::Bow(BowSkill::BDamage), Some(1)) + .with_skill(Skill::Bow(BowSkill::CDamage), Some(1)) + .with_skill(Skill::Bow(BowSkill::CKnockback), Some(1)) + .with_skill(Skill::Bow(BowSkill::CSpeed), Some(1)) + .with_skill(Skill::Bow(BowSkill::CMove), Some(1)) + }, + _ => Self::default(), + } + }, Some(Guard) => { if let Some(ToolKind::Sword) = active_item { // Sword diff --git a/common/src/states/basic_beam.rs b/common/src/states/basic_beam.rs index 3a740dcb22..844d6b9d11 100644 --- a/common/src/states/basic_beam.rs +++ b/common/src/states/basic_beam.rs @@ -163,20 +163,16 @@ impl CharacterBehavior for Data { }; // Gets offsets let body_offsets = match data.body { - Body::Humanoid(_) => { - Vec3::new( - data.body.radius() + 2.0 * data.inputs.look_dir.x, - data.body.radius() + 2.0 * data.inputs.look_dir.y, - data.body.eye_height(), - ) * 0.55 - }, - _ => { - Vec3::new( - data.body.radius() * 3.0 * data.inputs.look_dir.x, - data.body.radius() * 3.0 * data.inputs.look_dir.y, - data.body.eye_height(), - ) * 0.55 - }, + Body::Humanoid(_) => Vec3::new( + (data.body.radius() + 2.0) * data.inputs.look_dir.x, + (data.body.radius() + 2.0) * data.inputs.look_dir.y, + data.body.eye_height() * 0.55, + ), + _ => Vec3::new( + (data.body.radius() + 3.0) * data.inputs.look_dir.x, + (data.body.radius() + 3.0) * data.inputs.look_dir.y, + data.body.eye_height() * 0.55, + ), }; let pos = Pos(data.pos.0 + body_offsets); // Create beam segment diff --git a/common/src/states/shockwave.rs b/common/src/states/shockwave.rs index 42d80b0216..8cf88ef4e6 100644 --- a/common/src/states/shockwave.rs +++ b/common/src/states/shockwave.rs @@ -147,7 +147,7 @@ impl CharacterBehavior for Data { } }, StageSection::Recover => { - if self.timer < self.static_data.swing_duration { + if self.timer < self.static_data.recover_duration { // Recovers update.character = CharacterState::Shockwave(Data { timer: self diff --git a/common/src/states/utils.rs b/common/src/states/utils.rs index 334f8ae039..51e1623403 100644 --- a/common/src/states/utils.rs +++ b/common/src/states/utils.rs @@ -1,8 +1,9 @@ use crate::{ comp::{ + biped_large, biped_small, inventory::slot::EquipSlot, item::{Hands, ItemKind, Tool, ToolKind}, - quadruped_low, quadruped_medium, + quadruped_low, quadruped_medium, quadruped_small, skills::Skill, theropod, Body, CharacterAbility, CharacterState, LoadoutManip, StateUpdate, }, @@ -37,7 +38,16 @@ impl Body { pub fn base_accel(&self) -> f32 { match self { Body::Humanoid(_) => 100.0, - Body::QuadrupedSmall(_) => 125.0, + Body::QuadrupedSmall(body) => match body.species { + quadruped_small::Species::Turtle => 30.0, + quadruped_small::Species::Axolotl => 70.0, + quadruped_small::Species::Pig => 70.0, + quadruped_small::Species::Sheep => 70.0, + quadruped_small::Species::Cat => 70.0, + quadruped_small::Species::Truffler => 70.0, + quadruped_small::Species::Fungome => 70.0, + _ => 125.0, + }, Body::QuadrupedMedium(quadruped_medium) => match quadruped_medium.species { quadruped_medium::Species::Grolgar => 110.0, quadruped_medium::Species::Saber => 180.0, @@ -59,13 +69,31 @@ impl Body { quadruped_medium::Species::Antelope => 185.0, quadruped_medium::Species::Kelpie => 180.0, quadruped_medium::Species::Horse => 180.0, + quadruped_medium::Species::Barghest => 80.0, + quadruped_medium::Species::Cattle => 80.0, + quadruped_medium::Species::Darkhound => 160.0, + quadruped_medium::Species::Highland => 80.0, + quadruped_medium::Species::Yak => 90.0, + quadruped_medium::Species::Panda => 90.0, + quadruped_medium::Species::Bear => 90.0, + }, + Body::BipedLarge(body) => match body.species { + biped_large::Species::Slysaurok => 100.0, + biped_large::Species::Occultsaurok => 100.0, + biped_large::Species::Mightysaurok => 100.0, + biped_large::Species::Mindflayer => 90.0, + biped_large::Species::Minotaur => 90.0, + _ => 80.0, }, Body::BirdMedium(_) => 80.0, Body::FishMedium(_) => 80.0, Body::Dragon(_) => 250.0, Body::BirdSmall(_) => 75.0, Body::FishSmall(_) => 60.0, - Body::BipedLarge(_) => 75.0, + Body::BipedSmall(biped_small) => match biped_small.species { + biped_small::Species::Haniwa => 65.0, + _ => 80.0, + }, Body::Object(_) => 0.0, Body::Golem(_) => 60.0, Body::Theropod(_) => 135.0, @@ -82,6 +110,8 @@ impl Body { quadruped_low::Species::Sandshark => 160.0, quadruped_low::Species::Hakulaq => 140.0, quadruped_low::Species::Lavadrake => 100.0, + quadruped_low::Species::Basilisk => 120.0, + quadruped_low::Species::Deadwood => 140.0, }, } } @@ -115,7 +145,8 @@ impl Body { Body::Dragon(_) => 5.0, Body::BirdSmall(_) => 35.0, Body::FishSmall(_) => 10.0, - Body::BipedLarge(_) => 12.0, + Body::BipedLarge(_) => 8.0, + Body::BipedSmall(_) => 12.0, Body::Object(_) => 10.0, Body::Golem(_) => 8.0, Body::Theropod(theropod) => match theropod.species { diff --git a/common/sys/src/projectile.rs b/common/sys/src/projectile.rs index fa7dfa4476..329ad2df36 100644 --- a/common/sys/src/projectile.rs +++ b/common/sys/src/projectile.rs @@ -127,7 +127,6 @@ impl<'a> System<'a> for Sys { pos: pos.0, explosion: e, owner: projectile.owner, - reagent: None, }) }, projectile::Effect::Vanish => { @@ -163,7 +162,6 @@ impl<'a> System<'a> for Sys { pos: pos.0, explosion: e, owner: projectile.owner, - reagent: None, }) }, projectile::Effect::Vanish => { diff --git a/server/src/cmd.rs b/server/src/cmd.rs index 79e3047371..0cd6ed1c7d 100644 --- a/server/src/cmd.rs +++ b/server/src/cmd.rs @@ -1374,9 +1374,9 @@ fn handle_explosion( RadiusEffect::TerrainDestruction(power), ], radius: 3.0 * power, + reagent: None, }, owner: ecs.read_storage::().get(target).copied(), - reagent: None, }) }, None => server.notify_client( diff --git a/server/src/events/entity_manipulation.rs b/server/src/events/entity_manipulation.rs index 900ec70fa8..c3aa3a8298 100644 --- a/server/src/events/entity_manipulation.rs +++ b/server/src/events/entity_manipulation.rs @@ -29,7 +29,6 @@ use common::{ }; use common_net::{msg::ServerGeneral, sync::WorldSyncExt}; use common_sys::state::BlockChange; -use comp::item::Reagent; use hashbrown::HashSet; use rand::prelude::*; use specs::{join::Join, saveload::MarkerAllocator, Entity as EcsEntity, WorldExt}; @@ -448,6 +447,7 @@ pub fn handle_destroy(server: &mut Server, entity: EcsEntity, cause: HealthSourc let _ = state .create_object(comp::Pos(pos.0 + Vec3::unit_z() * 0.25), match old_body { Some(common::comp::Body::Humanoid(_)) => object::Body::Pouch, + Some(common::comp::Body::BipedSmall(_)) => object::Body::Pouch, Some(common::comp::Body::Golem(_)) => object::Body::Chest, Some(common::comp::Body::BipedLarge(_)) | Some(common::comp::Body::QuadrupedLow(_)) => object::Body::MeatDrop, @@ -572,24 +572,13 @@ pub fn handle_respawn(server: &Server, entity: EcsEntity) { } #[allow(clippy::blocks_in_if_conditions)] -pub fn handle_explosion( - server: &Server, - pos: Vec3, - explosion: Explosion, - owner: Option, - reagent: Option, -) { +pub fn handle_explosion(server: &Server, pos: Vec3, explosion: Explosion, owner: Option) { // Go through all other entities let ecs = &server.state.ecs(); // Add an outcome - // Uses radius as outcome power, makes negative if explosion has healing effect - let outcome_power = explosion.radius - * if explosion.effects.iter().any(|e| matches!(e, RadiusEffect::Attack(a) if a.effects().any(|e| matches!(e.effect(), combat::CombatEffect::Heal(h) if *h > 0.0)))) { - -1.0 - } else { - 1.0 - }; + // Uses radius as outcome power for now + let outcome_power = explosion.radius; ecs.write_resource::>() .push(Outcome::Explosion { pos, @@ -599,7 +588,7 @@ pub fn handle_explosion( .effects .iter() .any(|e| matches!(e, RadiusEffect::Attack(_))), - reagent, + reagent: explosion.reagent, }); let owner_entity = owner.and_then(|uid| { ecs.read_resource::() diff --git a/server/src/events/mod.rs b/server/src/events/mod.rs index a83689be38..f8adcacfa7 100644 --- a/server/src/events/mod.rs +++ b/server/src/events/mod.rs @@ -64,8 +64,7 @@ impl Server { pos, explosion, owner, - reagent, - } => handle_explosion(&self, pos, explosion, owner, reagent), + } => handle_explosion(&self, pos, explosion, owner), ServerEvent::Shoot { entity, dir, diff --git a/server/src/persistence/json_models.rs b/server/src/persistence/json_models.rs index 99bddbe5ed..0ddfa0269c 100644 --- a/server/src/persistence/json_models.rs +++ b/server/src/persistence/json_models.rs @@ -141,6 +141,12 @@ pub fn skill_to_db_string(skill: comp::skills::Skill) -> String { UnlockGroup(SkillGroupKind::Weapon(ToolKind::Sceptre)) => "Unlock Weapon Sceptre", UnlockGroup(SkillGroupKind::Weapon(ToolKind::Dagger)) | UnlockGroup(SkillGroupKind::Weapon(ToolKind::Shield)) + | UnlockGroup(SkillGroupKind::Weapon(ToolKind::Spear)) + | UnlockGroup(SkillGroupKind::Weapon(ToolKind::HammerSimple)) + | UnlockGroup(SkillGroupKind::Weapon(ToolKind::StaffSimple)) + | UnlockGroup(SkillGroupKind::Weapon(ToolKind::BowSimple)) + | UnlockGroup(SkillGroupKind::Weapon(ToolKind::AxeSimple)) + | UnlockGroup(SkillGroupKind::Weapon(ToolKind::SwordSimple)) | UnlockGroup(SkillGroupKind::Weapon(ToolKind::Debug)) | UnlockGroup(SkillGroupKind::Weapon(ToolKind::Farming)) | UnlockGroup(SkillGroupKind::Weapon(ToolKind::Empty)) @@ -276,6 +282,12 @@ pub fn skill_group_to_db_string(skill_group: comp::skills::SkillGroupKind) -> St Weapon(ToolKind::Sceptre) => "Weapon Sceptre", Weapon(ToolKind::Dagger) | Weapon(ToolKind::Shield) + | Weapon(ToolKind::Spear) + | Weapon(ToolKind::HammerSimple) + | Weapon(ToolKind::StaffSimple) + | Weapon(ToolKind::BowSimple) + | Weapon(ToolKind::AxeSimple) + | Weapon(ToolKind::SwordSimple) | Weapon(ToolKind::Debug) | Weapon(ToolKind::Farming) | Weapon(ToolKind::Empty) diff --git a/server/src/sys/agent.rs b/server/src/sys/agent.rs index 28cccfd9e2..a78fd6d75f 100644 --- a/server/src/sys/agent.rs +++ b/server/src/sys/agent.rs @@ -496,9 +496,14 @@ impl<'a> System<'a> for Sys { } }) { Some(ToolKind::Bow) => Tactic::Bow, + Some(ToolKind::BowSimple) => Tactic::Bow, Some(ToolKind::Staff) => Tactic::Staff, + Some(ToolKind::StaffSimple) => Tactic::Staff, Some(ToolKind::Hammer) => Tactic::Hammer, Some(ToolKind::Sword) => Tactic::Sword, + Some(ToolKind::Spear) => Tactic::Sword, + Some(ToolKind::SwordSimple) => Tactic::Sword, + Some(ToolKind::AxeSimple) => Tactic::Sword, Some(ToolKind::Axe) => Tactic::Axe, Some(ToolKind::Unique(UniqueKind::StoneGolemFist)) => { Tactic::StoneGolemBoss @@ -531,6 +536,7 @@ impl<'a> System<'a> for Sys { Tactic::QuadLowBasic }, Some(ToolKind::Unique(UniqueKind::QuadLowBreathe)) => Tactic::Lavadrake, + Some(ToolKind::Unique(UniqueKind::QuadLowBeam)) => Tactic::Lavadrake, Some(ToolKind::Unique(UniqueKind::TheropodBasic)) => Tactic::Theropod, Some(ToolKind::Unique(UniqueKind::TheropodBird)) => Tactic::Theropod, Some(ToolKind::Unique(UniqueKind::ObjectTurret)) => Tactic::Turret, @@ -1349,7 +1355,7 @@ impl<'a> System<'a> for Sys { do_idle = true; } }, - Tactic::Lavadrake => { + Tactic::Lavadrake | Tactic::QuadLowBeam => { if dist_sqrd < (2.5 * min_attack_dist * scale).powi(2) { inputs.move_dir = Vec2::zero(); inputs.secondary.set_state(true); diff --git a/server/src/sys/object.rs b/server/src/sys/object.rs index afb3574a0f..d2577c0bbc 100644 --- a/server/src/sys/object.rs +++ b/server/src/sys/object.rs @@ -60,9 +60,9 @@ impl<'a> System<'a> for Sys { RadiusEffect::TerrainDestruction(4.0), ], radius: 12.0, + reagent: None, }, owner: *owner, - reagent: None, }); } }, @@ -87,9 +87,9 @@ impl<'a> System<'a> for Sys { RadiusEffect::TerrainDestruction(4.0), ], radius: 12.0, + reagent: Some(*reagent), }, owner: *owner, - reagent: Some(*reagent), }); } }, diff --git a/voxygen/anim/src/biped_large/alpha.rs b/voxygen/anim/src/biped_large/alpha.rs index b05f7bcba0..3ccdc2c8ec 100644 --- a/voxygen/anim/src/biped_large/alpha.rs +++ b/voxygen/anim/src/biped_large/alpha.rs @@ -2,7 +2,10 @@ use super::{ super::{vek::*, Animation}, BipedLargeSkeleton, SkeletonAttr, }; -use common::{comp::item::ToolKind, states::utils::StageSection}; +use common::{ + comp::item::{ToolKind, UniqueKind}, + states::utils::StageSection, +}; use std::f32::consts::PI; pub struct AlphaAnimation; @@ -11,9 +14,10 @@ impl Animation for AlphaAnimation { type Dependency = ( Option, Option, - f32, + Vec3, f64, Option, + f32, ); type Skeleton = BipedLargeSkeleton; @@ -24,123 +28,179 @@ impl Animation for AlphaAnimation { #[allow(clippy::approx_constant)] // TODO: Pending review in #587 fn update_skeleton_inner( skeleton: &Self::Skeleton, - (active_tool_kind, _second_tool_kind, velocity, _global_time, stage_section): Self::Dependency, + (active_tool_kind, _second_tool_kind, velocity, _global_time, stage_section, acc_vel): Self::Dependency, anim_time: f64, rate: &mut f32, s_a: &SkeletonAttr, ) -> Self::Skeleton { *rate = 1.0; let mut next = (*skeleton).clone(); + let speed = Vec2::::from(velocity).magnitude(); - let lab = 1.0; + let lab = 0.65 * s_a.tempo; + let speednorm = (speed / 12.0).powf(0.4); + let foothoril = (acc_vel * lab as f32 + PI * 1.45).sin() * speednorm; + let foothorir = (acc_vel * lab as f32 + PI * (0.45)).sin() * speednorm; + let footrotl = + (((1.0) / (0.5 + (0.5) * ((acc_vel * lab as f32 + PI * 1.4).sin()).powi(2))).sqrt()) + * ((acc_vel * lab as f32 + PI * 1.4).sin()); - let (movement1, movement2, movement3) = match stage_section { + let footrotr = + (((1.0) / (0.5 + (0.5) * ((acc_vel * lab as f32 + PI * 0.4).sin()).powi(2))).sqrt()) + * ((acc_vel * lab as f32 + PI * 0.4).sin()); + let (move1base, move2base, move3) = match stage_section { Some(StageSection::Buildup) => ((anim_time as f32).powf(0.25), 0.0, 0.0), Some(StageSection::Swing) => (1.0, anim_time as f32, 0.0), Some(StageSection::Recover) => (1.0, 1.0, (anim_time as f32).powi(4)), _ => (0.0, 0.0, 0.0), }; + let pullback = 1.0 - move3; + let move1 = move1base * pullback; + let move2 = move2base * pullback; - let foot = (((1.0) - / (0.2 + 0.8 * ((anim_time as f32 * lab as f32 * 2.0 * velocity).sin()).powi(2))) - .sqrt()) - * ((anim_time as f32 * lab as f32 * 2.0 * velocity).sin()); - let slowersmooth = (anim_time as f32 * lab as f32 * 4.0).sin(); - let slower = (((1.0) - / (0.0001 + 0.999 * ((anim_time as f32 * lab as f32 * 4.0).sin()).powi(2))) - .sqrt()) - * ((anim_time as f32 * lab as f32 * 4.0).sin()); + next.shoulder_l.position = Vec3::new( + -s_a.shoulder.0, + s_a.shoulder.1, + s_a.shoulder.2 - foothorir * 1.0, + ); + next.shoulder_l.orientation = + Quaternion::rotation_x(move1 * 0.8 + 0.6 * speednorm + (footrotr * -0.2) * speednorm); - next.torso.position = Vec3::new(0.0, 0.0, 0.1); + next.shoulder_r.position = Vec3::new( + s_a.shoulder.0, + s_a.shoulder.1, + s_a.shoulder.2 - foothoril * 1.0, + ); + next.shoulder_r.orientation = + Quaternion::rotation_x(move1 * 0.8 + 0.6 * speednorm + (footrotl * -0.2) * speednorm); next.torso.orientation = Quaternion::rotation_z(0.0); - match active_tool_kind { - Some(ToolKind::Sword) => { - next.main.position = Vec3::new(0.0, 0.0, 0.0); - next.main.orientation = Quaternion::rotation_x(0.0); - next.hand_l.position = Vec3::new(s_a.shl.0, s_a.shl.1, s_a.shl.2); - next.hand_l.orientation = - Quaternion::rotation_x(s_a.shl.3) * Quaternion::rotation_y(s_a.shl.4); - next.hand_r.position = Vec3::new(s_a.shr.0, s_a.shr.1, s_a.shr.2); - next.hand_r.orientation = - Quaternion::rotation_x(s_a.shr.3) * Quaternion::rotation_y(s_a.shr.4); + next.main.position = Vec3::new(0.0, 0.0, 0.0); + next.main.orientation = Quaternion::rotation_x(0.0); + + next.hand_l.position = Vec3::new(0.0, 0.0, s_a.grip); + next.hand_r.position = Vec3::new(0.0, 0.0, s_a.grip); + + next.hand_l.orientation = Quaternion::rotation_x(0.0); + next.hand_r.orientation = Quaternion::rotation_x(0.0); + + match active_tool_kind { + Some(ToolKind::SwordSimple) => { + next.control_l.position = Vec3::new(-1.0, 1.0, 1.0); + next.control_r.position = Vec3::new(0.0, 2.0, -3.0); + next.head.orientation = Quaternion::rotation_x(move1 * -0.25) + * Quaternion::rotation_z(move1 * -0.2 + move2 * 0.6); + next.control.position = Vec3::new( + -3.0 + move1 * -4.0 + move2 * 5.0, + 5.0 + s_a.grip / 1.2 + move1 * -4.0 + move2 * 8.0, + -4.0 + -s_a.grip / 2.0 + move2 * -5.0, + ); + next.upper_torso.orientation = Quaternion::rotation_z(move1 * 0.5 + move2 * -0.7); + next.lower_torso.orientation = Quaternion::rotation_z(move1 * -0.5 + move2 * 0.7); + next.control_l.orientation = + Quaternion::rotation_x(PI / 2.0 + move1 * -0.5 + move2 * 1.5) + * Quaternion::rotation_y(-0.2); + next.control_r.orientation = + Quaternion::rotation_x(PI / 2.2 + move1 * -0.5 + move2 * 1.5) + * Quaternion::rotation_y(0.2) + * Quaternion::rotation_z(0.0); + + next.control.orientation = + Quaternion::rotation_x(-0.2 + move1 * 0.5 + move2 * -2.0) + * Quaternion::rotation_y(-0.1 + move1 * -0.5 + move2 * 1.0); + }, + Some(ToolKind::HammerSimple) => { + next.control_l.position = Vec3::new(-1.0, 2.0, 12.0 + move2 * -10.0); + next.control_r.position = Vec3::new(1.0, 2.0, -2.0); next.control.position = Vec3::new( - s_a.sc.0, - s_a.sc.1 + movement1 * -4.0 + movement2 * 16.0 + movement3 * -4.0, - s_a.sc.2 + movement1 * 1.0, + 4.0 + move1 * -12.0 + move2 * 20.0, + (s_a.grip / 1.0) + move1 * -3.0 + move2 * 5.0, + (-s_a.grip / 0.8) + move1 * -2.0 + move2 * 8.0, ); - next.control.orientation = Quaternion::rotation_x(s_a.sc.3 + movement1 * -0.5) - * Quaternion::rotation_y( - s_a.sc.4 + movement1 * -1.0 + movement2 * -0.6 + movement3 * 1.0, - ) - * Quaternion::rotation_z(s_a.sc.5 + movement1 * -1.2 + movement2 * 1.3); + next.head.orientation = Quaternion::rotation_x(move1 * -0.25) + * Quaternion::rotation_z(move1 * -0.2 + move2 * 0.6); + next.upper_torso.orientation = Quaternion::rotation_z(move1 * 0.2 + move2 * -0.4); + next.lower_torso.orientation = Quaternion::rotation_z(move1 * -0.2 + move2 * 0.2); - next.upper_torso.orientation = Quaternion::rotation_z( - movement1 * 1.5 + (movement2 * 1.75).sin() * -3.0 + movement3 * 0.5, - ); + next.control_l.orientation = + Quaternion::rotation_x(PI / 2.0 + move2 * 0.8) * Quaternion::rotation_y(-0.0); + next.control_r.orientation = Quaternion::rotation_x(PI / 2.0 + 0.2 + move2 * 0.8) + * Quaternion::rotation_y(0.0) + * Quaternion::rotation_z(0.0); - next.head.position = Vec3::new(0.0 + movement2 * 2.0, s_a.head.0, s_a.head.1); - next.head.orientation = Quaternion::rotation_z( - movement1 * -0.9 + (movement2 * 1.75).sin() * 2.5 + movement3 * -0.5, - ); + next.control.orientation = + Quaternion::rotation_x(-1.0 + move1 * -0.5 + move2 * -0.3) + * Quaternion::rotation_y(-1.8 + move1 * -0.8 + move2 * 3.0) + * Quaternion::rotation_z(move1 * -0.8 + move2 * -0.8); }, - Some(ToolKind::Hammer) => { - next.hand_l.position = Vec3::new(-12.0, 0.0, 10.0); - next.hand_l.orientation = - Quaternion::rotation_x(0.0) * Quaternion::rotation_z(-2.0); - next.hand_r.position = Vec3::new(3.0, 0.0, 10.0); - next.hand_r.orientation = - Quaternion::rotation_x(0.0) * Quaternion::rotation_z(-2.0); - next.main.position = Vec3::new(0.0, 0.0, 0.0); - next.main.orientation = - Quaternion::rotation_y(-1.57) * Quaternion::rotation_z(-1.87); + Some(ToolKind::AxeSimple) => { + next.control_l.position = Vec3::new(-1.0, 2.0, 12.0 + move2 * -10.0); + next.control_r.position = Vec3::new(1.0, 2.0, -2.0); - next.head.orientation = Quaternion::rotation_z(slower * 0.03) - * Quaternion::rotation_x(slowersmooth * 0.1) - * Quaternion::rotation_y(slower * 0.05 + slowersmooth * 0.06) - * Quaternion::rotation_z((slowersmooth * -0.4).max(0.0)); - next.upper_torso.position = Vec3::new(0.0, s_a.upper_torso.0, s_a.upper_torso.1); - next.upper_torso.orientation = - Quaternion::rotation_z(slower * 0.18 + slowersmooth * 0.15) - * Quaternion::rotation_x(0.0 + slower * 0.18 + slowersmooth * 0.15) - * Quaternion::rotation_y(slower * 0.18 + slowersmooth * 0.15); + next.control.position = Vec3::new( + 4.0 + move1 * -12.0 + move2 * 28.0, + (s_a.grip / 1.0) + move1 * -3.0 + move2 * -5.0, + (-s_a.grip / 0.8) + move1 * 2.0 + move2 * 8.0, + ); + next.head.orientation = Quaternion::rotation_x(move1 * -0.25) + * Quaternion::rotation_z(move1 * -0.2 + move2 * 0.6); + next.upper_torso.orientation = Quaternion::rotation_z(move1 * 0.6 + move2 * -0.9); + next.lower_torso.orientation = Quaternion::rotation_z(move1 * -0.6 + move2 * 0.9); - next.lower_torso.orientation = - Quaternion::rotation_z(slower * -0.1 + slowersmooth * -0.075) - * Quaternion::rotation_x(0.0 + slower * -0.1) - * Quaternion::rotation_y(slower * -0.1); + next.control_l.orientation = + Quaternion::rotation_x(PI / 2.0 + move2 * 0.8) * Quaternion::rotation_y(-0.0); + next.control_r.orientation = Quaternion::rotation_x(PI / 2.0 + 0.2 + move2 * 0.8) + * Quaternion::rotation_y(0.0) + * Quaternion::rotation_z(0.0); - if velocity > 0.5 { - next.foot_l.position = Vec3::new(-s_a.foot.0, foot * -6.0, s_a.foot.2); - next.foot_l.orientation = Quaternion::rotation_x(foot * -0.4) - * Quaternion::rotation_z((slower * 0.3).max(0.0)); - - next.foot_r.position = Vec3::new(s_a.foot.0, foot * 6.0, s_a.foot.2); - next.foot_r.orientation = Quaternion::rotation_x(foot * 0.4) - * Quaternion::rotation_z((slower * 0.3).max(0.0)); - next.torso.orientation = Quaternion::rotation_x(-0.15); - } else { - next.foot_l.position = - Vec3::new(-s_a.foot.0, -2.5, s_a.foot.2 + (slower * 2.5).max(0.0)); - next.foot_l.orientation = Quaternion::rotation_x(slower * -0.2 - 0.2) - * Quaternion::rotation_z((slower * 1.0).max(0.0)); - - next.foot_r.position = Vec3::new(s_a.foot.0, 3.5 - slower * 2.0, s_a.foot.2); - next.foot_r.orientation = Quaternion::rotation_x(slower * 0.1) - * Quaternion::rotation_z((slower * 0.5).max(0.0)); - } - - next.control.position = Vec3::new(-8.0, 7.0, 1.0); - next.control.orientation = Quaternion::rotation_x(-1.5 + slower * 1.5) - * Quaternion::rotation_y(slowersmooth * 0.35 - 0.3) - * Quaternion::rotation_z(1.4 + slowersmooth * 0.2); + next.control.orientation = + Quaternion::rotation_x(-1.0 + move1 * -0.5 + move2 * -0.3) + * Quaternion::rotation_y(-1.8 + move1 * -0.4 + move2 * 3.5) + * Quaternion::rotation_z(move1 * -1.0 + move2 * -1.5); }, - Some(ToolKind::Debug) => { - next.hand_l.position = Vec3::new(-7.0, 4.0, 3.0); - next.hand_l.orientation = Quaternion::rotation_x(1.27); - next.main.position = Vec3::new(-5.0, 5.0, 23.0); - next.main.orientation = Quaternion::rotation_x(PI); + Some(ToolKind::Unique(UniqueKind::WendigoMagic)) => { + next.torso.position = Vec3::new(0.0, 0.0, move1 * -0.3); + next.upper_torso.orientation = Quaternion::rotation_x(move1 * -0.5 + move2 * -0.4); + next.lower_torso.orientation = Quaternion::rotation_x(move1 * 0.5 + move2 * 0.4); + + next.control_l.position = + Vec3::new(-9.0 + move2 * 6.0, 19.0 + move1 * 6.0, -13.0 + move1 * 10.5); + next.control_r.position = + Vec3::new(9.0 + move2 * -6.0, 19.0 + move1 * 6.0, -13.0 + move1 * 14.5); + + next.control_l.orientation = Quaternion::rotation_x(PI / 3.0 + move1 * 0.5) + * Quaternion::rotation_y(-0.15) + * Quaternion::rotation_z(move1 * 0.5 + move2 * -0.6); + next.control_r.orientation = Quaternion::rotation_x(PI / 3.0 + move1 * 0.5) + * Quaternion::rotation_y(0.15) + * Quaternion::rotation_z(move1 * -0.5 + move2 * 0.6); + next.head.orientation = Quaternion::rotation_x(move1 * 0.3); + }, + Some(ToolKind::Unique(UniqueKind::TidalClaws)) => { + next.torso.position = Vec3::new(0.0, 0.0, move1 * -0.3); + next.upper_torso.orientation = Quaternion::rotation_x(move1 * -0.5 + move2 * -0.4); + next.lower_torso.orientation = Quaternion::rotation_x(move1 * 0.5 + move2 * 0.4); + + next.shoulder_l.orientation = Quaternion::rotation_x( + move1 * 0.4 + 0.4 * speednorm + (footrotl * -0.2) * speednorm, + ); + next.shoulder_r.orientation = Quaternion::rotation_x( + move1 * 0.4 + 0.4 * speednorm + (footrotl * -0.2) * speednorm, + ); + + next.control_l.position = + Vec3::new(-14.0 + move2 * 9.0, 12.0 + move1 * 6.0, -12.0 + move1 * 9.0); + next.control_r.position = + Vec3::new(14.0 + move2 * -9.0, 12.0 + move1 * 6.0, -12.0 + move1 * 9.0); + + next.control_l.orientation = Quaternion::rotation_x(PI / 3.0 + move1 * 0.5) + * Quaternion::rotation_y(-0.15) + * Quaternion::rotation_z(move1 * 0.5 + move2 * -0.6); + next.control_r.orientation = Quaternion::rotation_x(PI / 3.0 + move1 * 0.5) + * Quaternion::rotation_y(0.15) + * Quaternion::rotation_z(move1 * -0.5 + move2 * 0.6); + next.head.orientation = Quaternion::rotation_x(move1 * 0.3); }, _ => {}, } diff --git a/voxygen/anim/src/biped_large/beam.rs b/voxygen/anim/src/biped_large/beam.rs index 0fa4a173f3..0c0d034666 100644 --- a/voxygen/anim/src/biped_large/beam.rs +++ b/voxygen/anim/src/biped_large/beam.rs @@ -12,8 +12,9 @@ impl Animation for BeamAnimation { Option, Option, f64, - f32, + Vec3, Option, + f32, ); type Skeleton = BipedLargeSkeleton; @@ -24,7 +25,7 @@ impl Animation for BeamAnimation { #[allow(clippy::single_match)] // TODO: Pending review in #587 fn update_skeleton_inner( skeleton: &Self::Skeleton, - (active_tool_kind, _second_tool_kind, _global_time, velocity, stage_section): Self::Dependency, + (active_tool_kind, _second_tool_kind, _global_time, velocity, stage_section, acc_vel): Self::Dependency, anim_time: f64, rate: &mut f32, s_a: &SkeletonAttr, @@ -32,95 +33,89 @@ impl Animation for BeamAnimation { *rate = 1.0; let mut next = (*skeleton).clone(); - let (movement1, movement2, movement3) = match stage_section { - Some(StageSection::Buildup) => (anim_time as f32, 0.0, 0.0), - Some(StageSection::Cast) => (1.0, anim_time as f32, 0.0), - Some(StageSection::Recover) => (1.0, 1.0, anim_time as f32), - _ => (0.0, 0.0, 0.0), - }; + let speed = Vec2::::from(velocity).magnitude(); + + let lab = 0.65 * s_a.tempo; + let speednorm = (speed / 12.0).powf(0.4); + let foothoril = (acc_vel * lab as f32 + PI * 1.45).sin() * speednorm; + let foothorir = (acc_vel * lab as f32 + PI * (0.45)).sin() * speednorm; + let footrotl = + (((1.0) / (0.5 + (0.5) * ((acc_vel * lab as f32 + PI * 1.4).sin()).powi(2))).sqrt()) + * ((acc_vel * lab as f32 + PI * 1.4).sin()) + * speednorm; + + let footrotr = + (((1.0) / (0.5 + (0.5) * ((acc_vel * lab as f32 + PI * 0.4).sin()).powi(2))).sqrt()) + * ((acc_vel * lab as f32 + PI * 0.4).sin()) + * speednorm; + + next.jaw.position = Vec3::new(0.0, s_a.jaw.0, s_a.jaw.1); + next.jaw.orientation = Quaternion::rotation_x(0.0); - next.hand_l.position = Vec3::new(s_a.sthl.0, s_a.sthl.1, s_a.sthl.2); - next.hand_l.orientation = - Quaternion::rotation_x(s_a.sthl.3) * Quaternion::rotation_y(s_a.sthl.4); - next.hand_r.position = Vec3::new(s_a.sthr.0, s_a.sthr.1, s_a.sthl.2); - next.hand_r.orientation = - Quaternion::rotation_x(s_a.sthr.3) * Quaternion::rotation_y(s_a.sthr.4); next.main.position = Vec3::new(0.0, 0.0, 0.0); next.main.orientation = Quaternion::rotation_x(0.0); - next.control.position = Vec3::new(-4.0, 7.0, 4.0); - next.control.orientation = Quaternion::rotation_x(-0.3) - * Quaternion::rotation_y(0.15) - * Quaternion::rotation_z(0.0); + next.hand_l.position = Vec3::new(0.0, 0.0, s_a.grip); + next.hand_r.position = Vec3::new(0.0, 0.0, s_a.grip); + next.hand_l.orientation = Quaternion::rotation_x(0.0); + next.hand_r.orientation = Quaternion::rotation_x(0.0); match active_tool_kind { - Some(ToolKind::Staff) | Some(ToolKind::Sceptre) => { - next.control.position = Vec3::new( - s_a.stc.0 + (movement1 * 26.0) * (1.0 - movement3), - s_a.stc.1 + (movement1 + (movement2 * 8.0).sin() * 2.0) * (1.0 - movement3), - s_a.stc.2 + (movement1 * 16.0) * (1.0 - movement3), - ); - next.control.orientation = - Quaternion::rotation_x(s_a.stc.3 + (movement1 * -0.8) * (1.0 - movement3)) - * Quaternion::rotation_y( - s_a.stc.4 - + (movement1 * -1.4 + (movement2 * 16.0).sin() * 0.07) - * (1.0 - movement3), - ) - * Quaternion::rotation_z( - (movement1 * -1.7 + (movement2 * 8.0 + PI / 4.0).sin() * 0.3) - * (1.0 - movement3), - ); - next.head.orientation = Quaternion::rotation_x(0.0); - - next.hand_l.position = Vec3::new( - 0.0 + (movement1 * -1.0 + (movement2 * 8.0).sin() * 3.5) * (1.0 - movement3), - 0.0 + (movement1 * -8.0 - + (movement2 * 8.0).sin() * -2.0 - + (movement2 * 16.0).sin() * -1.5) - * (1.0 - movement3), - 0.0 + (movement1 * 19.0 + (movement2 * 8.0 + PI / 2.0).sin() * 3.5) - * (1.0 - movement3), - ); - next.hand_l.orientation = - Quaternion::rotation_x(s_a.sthr.3 + (movement1 * -0.3) * (1.0 - movement3)) - * Quaternion::rotation_y( - (movement1 * -1.1 + (movement2 * 8.0 + PI / 2.0).sin() * -0.3) - * (1.0 - movement3), - ) - * Quaternion::rotation_z((movement1 * -2.8) * (1.0 - movement3)); - - next.shoulder_l.orientation = Quaternion::rotation_z(0.2) - * Quaternion::rotation_x( - (movement1 * 0.6 + (movement2 * 8.0 + PI / 2.0).sin() * -0.1) - * (1.0 - movement3), - ); - - next.shoulder_r.orientation = Quaternion::rotation_z(-0.2) - * Quaternion::rotation_x( - (movement1 * 1.1 + (movement2 * 8.0 + PI / 2.0).sin() * -0.1) - * (1.0 - movement3), - ); - - if velocity < 0.5 { - next.head.orientation = - Quaternion::rotation_z(movement1 * -0.5 + (movement2 * 16.0).sin() * 0.05); - - next.foot_l.position = - Vec3::new(-s_a.foot.0, s_a.foot.1 + movement1 * -3.0, s_a.foot.2); - next.foot_l.orientation = Quaternion::rotation_x(movement1 * -0.5) - * Quaternion::rotation_z(movement1 * 0.5); - - next.foot_r.position = - Vec3::new(s_a.foot.0, s_a.foot.1 + movement1 * 4.0, s_a.foot.2); - next.foot_r.orientation = Quaternion::rotation_z(movement1 * 0.5); - next.upper_torso.orientation = - Quaternion::rotation_x(movement1 * -0.2 + (movement2 * 8.0).sin() * 0.01) - * Quaternion::rotation_z(movement1 * 0.1); - next.lower_torso.orientation = Quaternion::rotation_x(movement1 * 0.05) - * Quaternion::rotation_z(movement1 * -0.2); - } else { + Some(ToolKind::StaffSimple) | Some(ToolKind::Sceptre) => { + let (move1base, move2shake, _move2base, move3) = match stage_section { + Some(StageSection::Buildup) => ( + ((anim_time as f32).powf(0.25)).min(1.0), + (anim_time as f32 * 10.0 + PI).sin(), + (anim_time as f32 * 10.0 + PI).sin(), + 0.0, + ), + Some(StageSection::Cast) => ( + 1.0, + (anim_time as f32 * 10.0 + PI).sin(), + (anim_time as f32).powf(0.25), + 0.0, + ), + Some(StageSection::Recover) => (1.0, 1.0, 1.0, anim_time as f32), + _ => (0.0, 0.0, 0.0, 0.0), }; + let pullback = 1.0 - move3; + let move1 = move1base * pullback; + next.control_l.position = Vec3::new(-1.0, 3.0, 12.0); + next.control_r.position = + Vec3::new(1.0 + move1 * 5.0, 2.0 + move1 * 1.0, 2.0 + move1 * 8.0); + + next.control.position = Vec3::new( + -3.0 + move1 * 5.0, + 3.0 + s_a.grip / 1.2 + move1 * 5.0 + move2shake * 1.0, + -11.0 + -s_a.grip / 2.0 + move1 * -4.0, + ); + next.head.orientation = Quaternion::rotation_x(move1 * -0.2); + next.jaw.orientation = Quaternion::rotation_x(0.0); + + next.control_l.orientation = + Quaternion::rotation_x(PI / 2.0) * Quaternion::rotation_y(-0.5); + next.control_r.orientation = Quaternion::rotation_x(PI / 2.5 + move1 * 0.4) + * Quaternion::rotation_y(0.5) + * Quaternion::rotation_z(move1 * 1.2 + move2shake * 0.5); + + next.control.orientation = Quaternion::rotation_x(-0.2 + move1 * -0.2) + * Quaternion::rotation_y(-0.1 + move1 * -0.4); + next.shoulder_l.position = Vec3::new( + -s_a.shoulder.0, + s_a.shoulder.1, + s_a.shoulder.2 - foothorir * 1.0, + ); + next.shoulder_l.orientation = + Quaternion::rotation_x(move1 * 0.2 + 0.3 + 0.8 * speednorm + (footrotr * -0.2)); + next.shoulder_r.position = Vec3::new( + s_a.shoulder.0, + s_a.shoulder.1, + s_a.shoulder.2 - foothoril * 1.0, + ); + next.shoulder_r.orientation = + Quaternion::rotation_x(move1 * 0.2 + 0.3 + 0.6 * speednorm + (footrotl * -0.2)); + next.torso.orientation = Quaternion::rotation_x(move1 * -0.1); + next.torso.position = Vec3::new(0.0, 0.0, move1 * 1.0); }, _ => {}, } diff --git a/voxygen/anim/src/biped_large/beta.rs b/voxygen/anim/src/biped_large/beta.rs index e952d94eae..a517b7559b 100644 --- a/voxygen/anim/src/biped_large/beta.rs +++ b/voxygen/anim/src/biped_large/beta.rs @@ -2,7 +2,11 @@ use super::{ super::{vek::*, Animation}, BipedLargeSkeleton, SkeletonAttr, }; -use common::{comp::item::ToolKind, states::utils::StageSection}; +use common::{ + comp::item::{ToolKind, UniqueKind}, + states::utils::StageSection, +}; +use std::f32::consts::PI; pub struct BetaAnimation; @@ -10,9 +14,10 @@ impl Animation for BetaAnimation { type Dependency = ( Option, Option, - f32, + Vec3, f64, Option, + f32, ); type Skeleton = BipedLargeSkeleton; @@ -22,48 +27,184 @@ impl Animation for BetaAnimation { #[cfg_attr(feature = "be-dyn-lib", export_name = "biped_large_beta")] fn update_skeleton_inner( skeleton: &Self::Skeleton, - (_active_tool_kind, _second_tool_kind, _velocity, _global_time, stage_section): Self::Dependency, + (active_tool_kind, _second_tool_kind, velocity, _global_time, stage_section, acc_vel): Self::Dependency, anim_time: f64, rate: &mut f32, s_a: &SkeletonAttr, ) -> Self::Skeleton { *rate = 1.0; let mut next = (*skeleton).clone(); + let speed = Vec2::::from(velocity).magnitude(); - let (movement1, movement2, movement3) = match stage_section { + let lab = 0.65 * s_a.tempo; + let speednorm = (speed / 12.0).powf(0.4); + let foothoril = (acc_vel * lab as f32 + PI * 1.45).sin() * speednorm; + let foothorir = (acc_vel * lab as f32 + PI * (0.45)).sin() * speednorm; + let footrotl = + (((1.0) / (0.5 + (0.5) * ((acc_vel * lab as f32 + PI * 1.4).sin()).powi(2))).sqrt()) + * ((acc_vel * lab as f32 + PI * 1.4).sin()); + + let footrotr = + (((1.0) / (0.5 + (0.5) * ((acc_vel * lab as f32 + PI * 0.4).sin()).powi(2))).sqrt()) + * ((acc_vel * lab as f32 + PI * 0.4).sin()); + let (move1base, move2base, move3) = match stage_section { Some(StageSection::Buildup) => ((anim_time as f32).powf(0.25), 0.0, 0.0), Some(StageSection::Swing) => (1.0, anim_time as f32, 0.0), - Some(StageSection::Recover) => (1.0, 1.0, (anim_time as f32).powi(4)), + Some(StageSection::Recover) => (1.0, 1.0, (anim_time as f32).powi(6)), _ => (0.0, 0.0, 0.0), }; + let pullback = 1.0 - move3; + let move1 = move1base * pullback; + let move2 = move2base * pullback; + + next.shoulder_l.position = Vec3::new( + -s_a.shoulder.0, + s_a.shoulder.1, + s_a.shoulder.2 - foothorir * 1.0, + ); + next.shoulder_l.orientation = + Quaternion::rotation_x(move1 * 0.8 + 0.6 * speednorm + (footrotr * -0.2) * speednorm); + + next.shoulder_r.position = Vec3::new( + s_a.shoulder.0, + s_a.shoulder.1, + s_a.shoulder.2 - foothoril * 1.0, + ); + next.shoulder_r.orientation = + Quaternion::rotation_x(move1 * 0.8 + 0.6 * speednorm + (footrotl * -0.2) * speednorm); + next.torso.orientation = Quaternion::rotation_z(0.0); next.main.position = Vec3::new(0.0, 0.0, 0.0); next.main.orientation = Quaternion::rotation_x(0.0); - next.hand_l.position = Vec3::new(s_a.shl.0, s_a.shl.1, s_a.shl.2); - next.hand_l.orientation = - Quaternion::rotation_x(s_a.shl.3) * Quaternion::rotation_y(s_a.shl.4); - next.hand_r.position = Vec3::new(s_a.shr.0, s_a.shr.1, s_a.shr.2); - next.hand_r.orientation = - Quaternion::rotation_x(s_a.shr.3) * Quaternion::rotation_y(s_a.shr.4); + next.hand_l.position = Vec3::new(0.0, 0.0, s_a.grip); + next.hand_r.position = Vec3::new(0.0, 0.0, s_a.grip); - next.control.position = Vec3::new( - s_a.sc.0 + (-1.4 + movement1 * -3.0 + movement2 * -2.0) * (1.0 - movement3), - s_a.sc.1 + (-1.4 + movement1 * 3.0 + movement2 * 3.0) * (1.0 - movement3), - s_a.sc.2 + (10.9 + movement1 * 2.5 * (1.0 - movement3)), - ); - next.control.orientation = Quaternion::rotation_x(s_a.sc.3 + (-1.7) * (1.0 - movement3)) - * Quaternion::rotation_y( - s_a.sc.4 + (0.4 + movement1 * 1.5 + movement2 * -2.5) * (1.0 - movement3), - ) - * Quaternion::rotation_z(s_a.sc.5 + (1.67 + movement2 * 1.57) * (1.0 - movement3)); - next.upper_torso.orientation = Quaternion::rotation_x(0.15) - * Quaternion::rotation_y((-0.1) * (1.0 - movement3)) - * Quaternion::rotation_z( - (0.4 + movement1 * 1.5 + movement2 * -2.5) * (1.0 - movement3), - ); - next.head.orientation = Quaternion::rotation_z((-0.4) * (1.0 - movement3)); + next.hand_l.orientation = Quaternion::rotation_x(0.0); + next.hand_r.orientation = Quaternion::rotation_x(0.0); + match active_tool_kind { + Some(ToolKind::SwordSimple) => { + next.control_l.position = Vec3::new(-1.0, 1.0, 1.0); + next.control_r.position = Vec3::new(0.0, 2.0, -3.0); + next.head.orientation = Quaternion::rotation_x(move1 * -0.25) + * Quaternion::rotation_z(move1 * -0.2 + move2 * 0.6); + next.control.position = Vec3::new( + -3.0 + move1 * -4.0 + move2 * 5.0, + 5.0 + s_a.grip / 1.2 + move1 * -4.0 + move2 * 8.0, + -4.0 + -s_a.grip / 2.0 + move2 * -5.0, + ); + next.upper_torso.orientation = + Quaternion::rotation_z(move1base * 0.5 + move2 * -0.7); + next.lower_torso.orientation = + Quaternion::rotation_z(move1base * -0.5 + move2 * 0.7); + next.control_l.orientation = + Quaternion::rotation_x(PI / 2.0 + move1 * -0.5 + move2 * 1.5) + * Quaternion::rotation_y(-0.2); + next.control_r.orientation = + Quaternion::rotation_x(PI / 2.2 + move1 * -0.5 + move2 * 1.5) + * Quaternion::rotation_y(0.2) + * Quaternion::rotation_z(0.0); + + next.control.orientation = + Quaternion::rotation_x(-0.2 + move1 * 0.5 + move2 * -1.5) + * Quaternion::rotation_y(-0.1 + move1 * -0.5 + move2 * 1.0); + }, + Some(ToolKind::HammerSimple) => { + next.control_l.position = Vec3::new(-1.0, 2.0, 12.0 + move2 * -10.0); + next.control_r.position = Vec3::new(1.0, 2.0, -2.0); + + next.control.position = Vec3::new( + 4.0 + move1 * -12.0 + move2 * 20.0, + (s_a.grip / 1.0) + move1 * -3.0 + move2 * 5.0, + (-s_a.grip / 0.8) + move1 * 6.0 + move2 * 8.0, + ); + next.head.orientation = Quaternion::rotation_x(move1 * -0.25) + * Quaternion::rotation_z(move1 * -0.2 + move2 * 0.6); + next.upper_torso.orientation = Quaternion::rotation_z(move1 * 0.6 + move2 * -1.5); + next.lower_torso.orientation = Quaternion::rotation_z(move1 * -0.6 + move2 * 1.5); + + next.control_l.orientation = + Quaternion::rotation_x(PI / 2.0 + move2 * 0.8) * Quaternion::rotation_y(-0.0); + next.control_r.orientation = Quaternion::rotation_x(PI / 2.0 + 0.2 + move2 * 0.8) + * Quaternion::rotation_y(0.0) + * Quaternion::rotation_z(0.0); + + next.control.orientation = + Quaternion::rotation_x(-1.0 + move1 * -1.5 + move2 * -0.3) + * Quaternion::rotation_y(-1.8 + move1 * -0.8 + move2 * 3.0) + * Quaternion::rotation_z(move1 * -0.8 + move2 * -0.8); + }, + Some(ToolKind::AxeSimple) => { + next.control_l.position = Vec3::new(-1.0, 2.0, 12.0 + move2 * -10.0); + next.control_r.position = Vec3::new(1.0, 2.0, -2.0); + + next.control.position = Vec3::new( + 4.0 + move1 * -18.0 + move2 * 20.0, + (s_a.grip / 1.0) + move1 * -3.0 + move2 * 12.0, + (-s_a.grip / 0.8) + move1 * -2.0 + move2 * 4.0, + ); + next.head.orientation = Quaternion::rotation_x(move1 * -0.25) + * Quaternion::rotation_z(move1 * -0.9 + move2 * 0.6); + next.upper_torso.orientation = Quaternion::rotation_z(move1 * 1.2 + move2 * -1.0); + next.lower_torso.orientation = Quaternion::rotation_z(move1 * -1.2 + move2 * 1.0); + + next.control_l.orientation = + Quaternion::rotation_x(PI / 2.0 + move2 * 0.8) * Quaternion::rotation_y(-0.0); + next.control_r.orientation = Quaternion::rotation_x(PI / 2.0 + 0.2 + move2 * 0.8) + * Quaternion::rotation_y(0.0) + * Quaternion::rotation_z(0.0); + + next.control.orientation = + Quaternion::rotation_x(-1.0 + move1 * 0.0 + move2 * -0.8) + * Quaternion::rotation_y(-1.8 + move1 * 3.0 + move2 * -0.9) + * Quaternion::rotation_z(move1 * -0.2 + move2 * -1.5); + }, + Some(ToolKind::Unique(UniqueKind::WendigoMagic)) => { + next.torso.position = Vec3::new(0.0, 0.0, move1 * -0.3); + next.upper_torso.orientation = Quaternion::rotation_x(move1 * -0.5 + move2 * -0.4); + next.lower_torso.orientation = Quaternion::rotation_x(move1 * 0.5 + move2 * 0.4); + + next.control_l.position = + Vec3::new(-9.0 + move2 * 6.0, 19.0 + move1 * 6.0, -13.0 + move1 * 10.5); + next.control_r.position = + Vec3::new(9.0 + move2 * -6.0, 19.0 + move1 * 6.0, -13.0 + move1 * 14.5); + + next.control_l.orientation = Quaternion::rotation_x(PI / 3.0 + move1 * 0.5) + * Quaternion::rotation_y(-0.15) + * Quaternion::rotation_z(move1 * 0.5 + move2 * -0.6); + next.control_r.orientation = Quaternion::rotation_x(PI / 3.0 + move1 * 0.5) + * Quaternion::rotation_y(0.15) + * Quaternion::rotation_z(move1 * -0.5 + move2 * 0.6); + next.head.orientation = Quaternion::rotation_x(move1 * 0.3); + }, + Some(ToolKind::Unique(UniqueKind::TidalClaws)) => { + next.torso.position = Vec3::new(0.0, 0.0, move1 * -0.3); + next.upper_torso.orientation = Quaternion::rotation_x(move1 * -0.5 + move2 * -0.4); + next.lower_torso.orientation = Quaternion::rotation_x(move1 * 0.5 + move2 * 0.4); + + next.shoulder_l.orientation = Quaternion::rotation_x( + move1 * 0.4 + 0.4 * speednorm + (footrotl * -0.2) * speednorm, + ); + next.shoulder_r.orientation = Quaternion::rotation_x( + move1 * 0.4 + 0.4 * speednorm + (footrotl * -0.2) * speednorm, + ); + + next.control_l.position = + Vec3::new(-14.0 + move2 * 9.0, 12.0 + move1 * 6.0, -12.0 + move1 * 9.0); + next.control_r.position = + Vec3::new(14.0 + move2 * -9.0, 12.0 + move1 * 6.0, -12.0 + move1 * 9.0); + + next.control_l.orientation = Quaternion::rotation_x(PI / 3.0 + move1 * 0.5) + * Quaternion::rotation_y(-0.15) + * Quaternion::rotation_z(move1 * 0.5 + move2 * -0.6); + next.control_r.orientation = Quaternion::rotation_x(PI / 3.0 + move1 * 0.5) + * Quaternion::rotation_y(0.15) + * Quaternion::rotation_z(move1 * -0.5 + move2 * 0.6); + next.head.orientation = Quaternion::rotation_x(move1 * 0.3); + }, + _ => {}, + } next } } diff --git a/voxygen/anim/src/biped_large/dash.rs b/voxygen/anim/src/biped_large/dash.rs index ee48b01e56..4de15fdb23 100644 --- a/voxygen/anim/src/biped_large/dash.rs +++ b/voxygen/anim/src/biped_large/dash.rs @@ -11,8 +11,10 @@ impl Animation for DashAnimation { type Dependency = ( Option, Option, + Vec3, f64, Option, + f32, ); type Skeleton = BipedLargeSkeleton; @@ -23,97 +25,118 @@ impl Animation for DashAnimation { #[allow(clippy::single_match)] // TODO: Pending review in #587 fn update_skeleton_inner( skeleton: &Self::Skeleton, - (active_tool_kind, _second_tool_kind, _global_time, stage_section): Self::Dependency, + (active_tool_kind, _second_tool_kind, velocity, _global_time, stage_section, acc_vel): Self::Dependency, anim_time: f64, rate: &mut f32, s_a: &SkeletonAttr, ) -> Self::Skeleton { *rate = 1.0; let mut next = (*skeleton).clone(); + let lab = 0.65 * s_a.tempo; + let speed = Vec2::::from(velocity).magnitude(); - let (movement1, movement2, movement3, _movement4) = match stage_section { - Some(StageSection::Buildup) => (anim_time as f32, 0.0, 0.0, 0.0), - Some(StageSection::Charge) => (1.0, anim_time as f32, 0.0, 0.0), - Some(StageSection::Swing) => (1.0, 1.0, anim_time as f32, 0.0), - Some(StageSection::Recover) => (1.1, 1.0, 1.0, anim_time as f32), + let speednorm = (speed / 12.0).powf(0.4); + let foothoril = (acc_vel * lab as f32 + PI * 1.45).sin() * speednorm; + let foothorir = (acc_vel * lab as f32 + PI * (0.45)).sin() * speednorm; + let footrotl = + (((1.0) / (0.5 + (0.5) * ((acc_vel * lab as f32 + PI * 1.4).sin()).powi(2))).sqrt()) + * ((acc_vel * lab as f32 + PI * 1.4).sin()); + + let footrotr = + (((1.0) / (0.5 + (0.5) * ((acc_vel * lab as f32 + PI * 0.4).sin()).powi(2))).sqrt()) + * ((acc_vel * lab as f32 + PI * 0.4).sin()); + + next.main.position = Vec3::new(0.0, 0.0, 0.0); + next.main.orientation = Quaternion::rotation_x(0.0); + + next.hand_l.position = Vec3::new(0.0, 0.0, s_a.grip); + next.hand_r.position = Vec3::new(0.0, 0.0, s_a.grip); + + next.hand_l.orientation = Quaternion::rotation_x(0.0); + next.hand_r.orientation = Quaternion::rotation_x(0.0); + let (move1base, move2base, move3base, move4) = match stage_section { + Some(StageSection::Buildup) => ((anim_time as f32).powf(0.25), 0.0, 0.0, 0.0), + Some(StageSection::Charge) => (1.0, ((anim_time as f32).powf(4.0)).min(1.0), 0.0, 0.0), + Some(StageSection::Swing) => (1.0, 1.0, (anim_time as f32).powf(4.0), 0.0), + Some(StageSection::Recover) => (1.1, 1.0, 1.0, (anim_time as f32).powf(4.0)), _ => (0.0, 0.0, 0.0, 0.0), }; + let pullback = 1.0 - move4; + let move1 = move1base * pullback; + let move2 = move2base * pullback; + let move3 = move3base * pullback; - fn short(x: f32) -> f32 { - (((5.0) / (1.5 + 3.5 * ((x * 5.0).sin()).powi(2))).sqrt()) * ((x * 5.0).sin()) - } - fn foothoril(x: f32) -> f32 { (x * 5.0 + PI * 1.45).sin() } - fn foothorir(x: f32) -> f32 { (x * 5.0 + PI * (0.45)).sin() } - - fn footvertl(x: f32) -> f32 { (x * 5.0).sin() } - fn footvertr(x: f32) -> f32 { (x * 5.0 + PI).sin() } - - fn footrotl(x: f32) -> f32 { - (((1.0) / (0.05 + (0.95) * ((x * 5.0 + PI * 1.4).sin()).powi(2))).sqrt()) - * ((x * 5.0 + PI * 1.4).sin()) - } - - fn footrotr(x: f32) -> f32 { - (((1.0) / (0.05 + (0.95) * ((x * 5.0 + PI * 0.4).sin()).powi(2))).sqrt()) - * ((x * 5.0 + PI * 0.4).sin()) - } - - fn shortalt(x: f32) -> f32 { (x * 5.0 + PI / 2.0).sin() } - - next.hand_l.position = Vec3::new(-0.75, -1.0, 2.5); - next.hand_l.orientation = Quaternion::rotation_x(1.47) * Quaternion::rotation_y(-0.2); - next.hand_r.position = Vec3::new(0.75, -1.5, -0.5); - next.hand_r.orientation = Quaternion::rotation_x(1.47) * Quaternion::rotation_y(0.3); - next.main.position = Vec3::new(0.0, 0.0, 2.0); - next.main.orientation = Quaternion::rotation_x(-0.1); + next.shoulder_l.position = Vec3::new( + -s_a.shoulder.0, + s_a.shoulder.1, + s_a.shoulder.2 - foothorir * 1.0, + ); + next.shoulder_l.orientation = + Quaternion::rotation_x(0.6 * speednorm + (footrotr * -0.2) * speednorm); + next.shoulder_r.position = Vec3::new( + s_a.shoulder.0, + s_a.shoulder.1, + s_a.shoulder.2 - foothoril * 1.0, + ); + next.shoulder_r.orientation = + Quaternion::rotation_x(0.6 * speednorm + (footrotl * -0.2) * speednorm); + next.torso.orientation = Quaternion::rotation_z(0.0); match active_tool_kind { - //TODO: Inventory - Some(ToolKind::Sword) => { - next.head.position = - Vec3::new(0.0, 0.0 + s_a.head.0, s_a.head.1 + movement2.min(1.0) * 1.0); - next.head.orientation = Quaternion::rotation_x(0.0) - * Quaternion::rotation_y(movement2.min(1.0) * -0.3 + movement3 * 0.3) - * Quaternion::rotation_z(movement1 * -0.9 + movement3 * 1.6); - - next.upper_torso.position = Vec3::new( - 0.0, - s_a.upper_torso.0, - s_a.upper_torso.1 + 2.0 + shortalt(movement2) * -2.5, - ); - next.upper_torso.orientation = - //Quaternion::rotation_x(movement2.min(1.0) * -0.4 + movement3 * 0.4) - //* Quaternion::rotation_y(movement2.min(1.0) * -0.2 + movement3 * 0.3) - Quaternion::rotation_z(movement1 * 1.1 + movement3 * -2.2); - + Some(ToolKind::SwordSimple) => { + next.control_l.position = Vec3::new(-1.0, 1.0, 1.0); + next.control_r.position = Vec3::new(0.0, 2.0, -3.0); + next.head.orientation = Quaternion::rotation_x(move1 * -0.25) + * Quaternion::rotation_z(move1 * -0.2 + move2 * 0.6); next.control.position = Vec3::new( - -7.0 + movement1 * -5.0 + movement3 * -2.0, - 7.0 + movement2.min(1.0) * -2.0, - 2.0 + movement2.min(1.0) * 2.0, + -3.0 + move1 * -2.0 + move2 * 2.0, + 5.0 + s_a.grip / 1.2 + move1 * -4.0 + move2 * 2.0 + move3 * 8.0, + -4.0 + -s_a.grip / 2.0 + move2 * -5.0 + move3 * 5.0, ); - next.control.orientation = - Quaternion::rotation_x(movement1 * -1.0 + movement3 * -0.5) - * Quaternion::rotation_y(movement1 * 1.5 + movement3 * -2.5) + next.upper_torso.orientation = Quaternion::rotation_x(move2 * -0.2 + move3 * 0.2) + * Quaternion::rotation_z(move1 * 0.8 + move3 * -0.7); + next.lower_torso.orientation = Quaternion::rotation_x(move2 * 0.2 + move3 * -0.2) + * Quaternion::rotation_z(move1 * -0.8 + move3 * 0.7); + next.control_l.orientation = + Quaternion::rotation_x(PI / 2.0 + move1 * -0.5 + move2 * 1.5) + * Quaternion::rotation_y(-0.2); + next.control_r.orientation = + Quaternion::rotation_x(PI / 2.2 + move1 * -0.5 + move2 * 1.5) + * Quaternion::rotation_y(0.2) * Quaternion::rotation_z(0.0); - next.lower_torso.orientation = - Quaternion::rotation_z(short(movement2).min(1.0) * 0.25); + next.control.orientation = + Quaternion::rotation_x(-0.2 + move1 * 0.5 + move2 * -1.5 + move3 * -0.2) + * Quaternion::rotation_y(-0.1 + move1 * -0.5 + move2 * 1.5 + move3 * -1.0) + * Quaternion::rotation_z(-move3 * -1.5); + }, + Some(ToolKind::AxeSimple) => { + next.control_l.position = Vec3::new(-1.0, 2.0, 12.0 + move3 * 3.0); + next.control_r.position = Vec3::new(1.0, 2.0, -2.0); - next.foot_l.position = Vec3::new( - -s_a.foot.0, - s_a.foot.1 + movement1 * -12.0 + foothoril(movement2) * -7.5, - s_a.foot.2 + ((footvertl(movement2) * -4.0).max(-1.0)), + next.control.position = Vec3::new( + 4.0 + move1 * -3.0 + move3 * -5.0, + (s_a.grip / 1.0) + move1 * -1.0 + move3 * 1.0 + footrotl * 2.0, + (-s_a.grip / 0.8) + move1 * 2.0 + move3 * -3.0, ); - next.foot_l.orientation = - Quaternion::rotation_x(movement1 * -1.0 + footrotl(movement2) * -0.6); + next.head.orientation = Quaternion::rotation_x(move1 * -0.5 + move3 * 0.5) + * Quaternion::rotation_z(move1 * 0.3 + move3 * 0.3); + next.upper_torso.orientation = Quaternion::rotation_x(move1 * -0.4 + move3 * 0.9) + * Quaternion::rotation_z(move1 * 0.6 + move3 * -1.5); + next.lower_torso.orientation = Quaternion::rotation_y(move1 * -0.2 + move3 * -0.1) + * Quaternion::rotation_x(move1 * 0.4 + move3 * -0.7 + footrotr * 0.1) + * Quaternion::rotation_z(move1 * -0.6 + move3 * 1.6); - next.foot_r.position = Vec3::new( - s_a.foot.0, - s_a.foot.1 + foothorir(movement2) * -7.5, - s_a.foot.2 + ((footvertr(movement2) * -4.0).max(-1.0)), - ); - next.foot_r.orientation = Quaternion::rotation_x(-0.6 + footrotr(movement2) * -0.6) - * Quaternion::rotation_z(-0.2); + next.control_l.orientation = Quaternion::rotation_x(PI / 2.0 + move3 * 0.3) + * Quaternion::rotation_y(move1 * 0.7); + next.control_r.orientation = Quaternion::rotation_x(PI / 2.0 + 0.2 + move3 * -0.2) + * Quaternion::rotation_y(0.0) + * Quaternion::rotation_z(0.0); + + next.control.orientation = + Quaternion::rotation_x(-1.0 + move1 * -0.2 + move3 * -0.2) + * Quaternion::rotation_y(-1.8 + move1 * -0.2 + move3 * -0.2) + * Quaternion::rotation_z(move1 * -0.8 + move3 * -0.1); }, _ => {}, } diff --git a/voxygen/anim/src/biped_large/idle.rs b/voxygen/anim/src/biped_large/idle.rs index b8421f944c..ab32350116 100644 --- a/voxygen/anim/src/biped_large/idle.rs +++ b/voxygen/anim/src/biped_large/idle.rs @@ -25,10 +25,10 @@ impl Animation for IdleAnimation { let mut next = (*skeleton).clone(); let lab = 1.0; - let torso = (anim_time as f32 * lab as f32 + 1.5 * PI).sin(); + let torso = (anim_time as f32 * lab as f32 + 1.5 * PI).sin() * 1.5; - let slower = (anim_time as f32 * 1.0 + PI).sin(); - let slow = (anim_time as f32 * 3.5 + PI).sin(); + let slower = (anim_time as f32 * 2.0 + PI).sin() * 1.5; + let slow = (anim_time as f32 * 7.0 + PI).sin() * 1.5; let look = Vec2::new( ((global_time + anim_time) as f32 / 8.0) @@ -65,7 +65,7 @@ impl Animation for IdleAnimation { next.hand_r.scale = Vec3::one() * 1.04; next.lower_torso.scale = Vec3::one() * 1.02; next.hold.scale = Vec3::one() * 0.0; - next.torso.scale = Vec3::one() / 8.0; + next.torso.scale = Vec3::one() / 8.0 * s_a.scaler; next.head.position = Vec3::new(0.0, s_a.head.0, s_a.head.1 + torso * 0.2); next.head.orientation = @@ -91,19 +91,19 @@ impl Animation for IdleAnimation { Quaternion::rotation_z(0.0 + slow * 0.2) * Quaternion::rotation_x(0.0); match active_tool_kind { - Some(ToolKind::Bow) => { + Some(ToolKind::BowSimple) => { next.main.position = Vec3::new(-2.0, -5.0, -6.0); next.main.orientation = Quaternion::rotation_y(2.5) * Quaternion::rotation_z(1.57); }, - Some(ToolKind::Staff) | Some(ToolKind::Sceptre) => { + Some(ToolKind::StaffSimple) | Some(ToolKind::Sceptre) => { next.main.position = Vec3::new(-6.0, -5.0, -12.0); next.main.orientation = Quaternion::rotation_y(0.6) * Quaternion::rotation_z(1.57); }, - Some(ToolKind::Sword) => { + Some(ToolKind::SwordSimple) => { next.main.position = Vec3::new(-10.0, -8.0, 12.0); next.main.orientation = Quaternion::rotation_y(2.5) * Quaternion::rotation_z(1.57); }, - Some(ToolKind::Hammer) => { + Some(ToolKind::HammerSimple) | Some(ToolKind::AxeSimple) => { next.main.position = Vec3::new(-10.0, -8.0, 12.0); next.main.orientation = Quaternion::rotation_y(2.5) * Quaternion::rotation_z(1.57); }, @@ -119,19 +119,19 @@ impl Animation for IdleAnimation { next.shoulder_r.position = Vec3::new(s_a.shoulder.0, s_a.shoulder.1, s_a.shoulder.2); next.shoulder_r.orientation = Quaternion::rotation_x(breathe); - next.hand_l.position = Vec3::new(-s_a.hand.0, s_a.hand.1, s_a.hand.2 + torso * 0.6); + next.hand_l.position = Vec3::new(-s_a.hand.0, s_a.hand.1, s_a.hand.2 + torso * -0.1); - next.hand_r.position = Vec3::new(s_a.hand.0, s_a.hand.1, s_a.hand.2 + torso * 0.6); + next.hand_r.position = Vec3::new(s_a.hand.0, s_a.hand.1, s_a.hand.2 + torso * -0.1); - next.leg_l.position = Vec3::new(-s_a.leg.0, s_a.leg.1, s_a.leg.2 + torso * 0.2); + next.leg_l.position = Vec3::new(-s_a.leg.0, s_a.leg.1, s_a.leg.2 + torso * -0.2); - next.leg_r.position = Vec3::new(s_a.leg.0, s_a.leg.1, s_a.leg.2 + torso * 0.2); + next.leg_r.position = Vec3::new(s_a.leg.0, s_a.leg.1, s_a.leg.2 + torso * -0.2); next.foot_l.position = Vec3::new(-s_a.foot.0, s_a.foot.1, s_a.foot.2); next.foot_r.position = Vec3::new(s_a.foot.0, s_a.foot.1, s_a.foot.2); - next.torso.position = Vec3::new(0.0, 0.0, 0.0) / 8.0; + next.torso.position = Vec3::new(0.0, 0.0, 0.0) / 8.0 * s_a.scaler; if s_a.float { next.upper_torso.position = Vec3::new( diff --git a/voxygen/anim/src/biped_large/jump.rs b/voxygen/anim/src/biped_large/jump.rs index e2aa7bf7e1..023db4fe62 100644 --- a/voxygen/anim/src/biped_large/jump.rs +++ b/voxygen/anim/src/biped_large/jump.rs @@ -60,19 +60,19 @@ impl Animation for JumpAnimation { next.second.scale = Vec3::one() * 0.0; match active_tool_kind { - Some(ToolKind::Bow) => { + Some(ToolKind::BowSimple) => { next.main.position = Vec3::new(-2.0, -5.0, -6.0); next.main.orientation = Quaternion::rotation_y(2.5) * Quaternion::rotation_z(1.57); }, - Some(ToolKind::Staff) | Some(ToolKind::Sceptre) => { + Some(ToolKind::StaffSimple) | Some(ToolKind::Sceptre) => { next.main.position = Vec3::new(-6.0, -5.0, -12.0); next.main.orientation = Quaternion::rotation_y(0.6) * Quaternion::rotation_z(1.57); }, - Some(ToolKind::Sword) => { + Some(ToolKind::SwordSimple) => { next.main.position = Vec3::new(-10.0, -8.0, 12.0); next.main.orientation = Quaternion::rotation_y(2.5) * Quaternion::rotation_z(1.57); }, - Some(ToolKind::Hammer) => { + Some(ToolKind::HammerSimple) | Some(ToolKind::AxeSimple) => { next.main.position = Vec3::new(-10.0, -8.0, 12.0); next.main.orientation = Quaternion::rotation_y(2.5) * Quaternion::rotation_z(1.57); }, @@ -109,9 +109,9 @@ impl Animation for JumpAnimation { next.foot_r.position = Vec3::new(s_a.foot.0, 5.0 + s_a.foot.1, s_a.foot.2); next.foot_r.orientation = Quaternion::rotation_z(0.0) * Quaternion::rotation_x(0.4); - next.torso.position = Vec3::new(0.0, 0.0, 0.0) / 8.0; + next.torso.position = Vec3::new(0.0, 0.0, 0.0) / 8.0 * s_a.scaler; next.torso.orientation = Quaternion::rotation_z(0.0) * Quaternion::rotation_x(0.0); - next.torso.scale = Vec3::one() / 8.0; + next.torso.scale = Vec3::one() / 8.0 * s_a.scaler; next } diff --git a/voxygen/anim/src/biped_large/mod.rs b/voxygen/anim/src/biped_large/mod.rs index a097139895..47a46ba1a7 100644 --- a/voxygen/anim/src/biped_large/mod.rs +++ b/voxygen/anim/src/biped_large/mod.rs @@ -48,6 +48,8 @@ skeleton_impls!(struct BipedLargeSkeleton { + hold, torso, control, + control_l, + control_r, leg_control_l, leg_control_r, arm_control_l, @@ -72,7 +74,8 @@ impl Skeleton for BipedLargeSkeleton { let torso_mat = base_mat * Mat4::::from(self.torso); let upper_torso_mat = torso_mat * upper_torso; - + let control_l_mat = Mat4::::from(self.control_l); + let control_r_mat = Mat4::::from(self.control_r); let lower_torso_mat = upper_torso_mat * Mat4::::from(self.lower_torso); let leg_l = Mat4::::from(self.leg_l); @@ -86,6 +89,7 @@ impl Skeleton for BipedLargeSkeleton { let head_mat = upper_torso_mat * Mat4::::from(self.head); let control_mat = Mat4::::from(self.control); + let hand_l_mat = Mat4::::from(self.hand_l); *(<&mut [_; Self::BONE_COUNT]>::try_from(&mut buf[0..Self::BONE_COUNT]).unwrap()) = [ @@ -98,8 +102,8 @@ impl Skeleton for BipedLargeSkeleton { make_bone(upper_torso_mat * control_mat * Mat4::::from(self.second)), make_bone(arm_control_l * Mat4::::from(self.shoulder_l)), make_bone(arm_control_r * Mat4::::from(self.shoulder_r)), - make_bone(arm_control_l * control_mat * Mat4::::from(self.hand_l)), - make_bone(arm_control_r * control_mat * Mat4::::from(self.hand_r)), + make_bone(arm_control_l * control_mat * control_l_mat * Mat4::::from(self.hand_l)), + make_bone(arm_control_r * control_mat * control_r_mat * Mat4::::from(self.hand_r)), make_bone(leg_control_l * leg_l), make_bone(leg_control_r * leg_r), make_bone(leg_control_l * Mat4::::from(self.foot_l)), @@ -121,6 +125,9 @@ pub struct SkeletonAttr { hand: (f32, f32, f32), leg: (f32, f32, f32), foot: (f32, f32, f32), + scaler: f32, + tempo: f32, + grip: f32, shl: (f32, f32, f32, f32, f32, f32), shr: (f32, f32, f32, f32, f32, f32), sc: (f32, f32, f32, f32, f32, f32), @@ -160,6 +167,9 @@ impl Default for SkeletonAttr { hand: (0.0, 0.0, 0.0), leg: (0.0, 0.0, 0.0), foot: (0.0, 0.0, 0.0), + scaler: 0.0, + tempo: 0.0, + grip: 0.0, shl: (0.0, 0.0, 0.0, 0.0, 0.0, 0.0), shr: (0.0, 0.0, 0.0, 0.0, 0.0, 0.0), sc: (0.0, 0.0, 0.0, 0.0, 0.0, 0.0), @@ -183,10 +193,10 @@ impl<'a> From<&'a Body> for SkeletonAttr { use comp::biped_large::{BodyType::*, Species::*}; Self { head: match (body.species, body.body_type) { - (Ogre, Male) => (3.0, 9.0), + (Ogre, Male) => (5.0, 6.0), (Ogre, Female) => (1.0, 7.5), (Cyclops, _) => (4.5, 7.5), - (Wendigo, _) => (3.0, 13.5), + (Wendigo, _) => (3.0, 7.5), (Troll, _) => (6.0, 10.0), (Dullahan, _) => (3.0, 6.0), (Werewolf, _) => (11.5, 1.0), @@ -194,6 +204,10 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Mightysaurok, _) => (6.0, 3.5), (Slysaurok, _) => (6.0, 3.5), (Mindflayer, _) => (5.0, 5.5), + (Minotaur, _) => (6.0, 3.0), + (Tidalwarrior, _) => (6.5, 5.0), + (Yeti, _) => (8.5, 4.0), + (Harvester, _) => (6.0, 11.0), }, jaw: match (body.species, body.body_type) { (Ogre, _) => (0.0, 0.0), @@ -206,19 +220,27 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Mightysaurok, _) => (1.0, -2.5), (Slysaurok, _) => (1.0, -2.5), (Mindflayer, _) => (0.0, 0.0), + (Minotaur, _) => (2.0, -4.0), + (Tidalwarrior, _) => (0.0, 0.0), + (Yeti, _) => (-5.0, -5.0), + (Harvester, _) => (-2.0, -7.0), }, upper_torso: match (body.species, body.body_type) { - (Ogre, Male) => (0.0, 28.0), + (Ogre, Male) => (0.0, 27.5), (Ogre, Female) => (0.0, 28.0), (Cyclops, _) => (-2.0, 27.0), (Wendigo, _) => (-1.0, 29.0), (Troll, _) => (-1.0, 26.5), (Dullahan, _) => (0.0, 29.0), (Werewolf, _) => (3.0, 26.0), - (Occultsaurok, _) => (3.0, 23.0), - (Mightysaurok, _) => (3.0, 23.0), - (Slysaurok, _) => (3.0, 23.0), + (Occultsaurok, _) => (3.0, 24.0), + (Mightysaurok, _) => (3.0, 24.0), + (Slysaurok, _) => (3.0, 24.0), (Mindflayer, _) => (0.0, 30.5), + (Minotaur, _) => (-1.0, 31.5), + (Tidalwarrior, _) => (-1.0, 25.0), + (Yeti, _) => (-1.0, 23.5), + (Harvester, _) => (-1.0, 18.0), }, lower_torso: match (body.species, body.body_type) { (Ogre, Male) => (1.0, -7.0), @@ -228,132 +250,199 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Troll, _) => (1.0, -10.5), (Dullahan, _) => (0.0, -6.5), (Werewolf, _) => (1.0, -10.0), - (Occultsaurok, _) => (0.0, -6.0), - (Mightysaurok, _) => (0.0, -6.0), + (Occultsaurok, _) => (0.0, -5.0), + (Mightysaurok, _) => (0.0, -5.0), (Slysaurok, _) => (0.0, -6.0), (Mindflayer, _) => (3.5, -19.5), + (Minotaur, _) => (1.5, -8.5), + (Tidalwarrior, _) => (0.0, -9.5), + (Yeti, _) => (0.0, -6.5), + (Harvester, _) => (-1.0, -4.5), }, tail: match (body.species, body.body_type) { (Werewolf, _) => (-5.5, -2.0), (Occultsaurok, _) => (-4.5, -6.0), (Mightysaurok, _) => (-4.5, -6.0), (Slysaurok, _) => (-4.5, -6.0), - (_, _) => (0.0, 0.0), + (Minotaur, _) => (-3.0, -6.0), + _ => (0.0, 0.0), }, shoulder: match (body.species, body.body_type) { - (Ogre, Male) => (12.0, 0.5, 0.0), - (Ogre, Female) => (8.0, 0.5, -1.0), - (Cyclops, _) => (9.5, 2.5, 2.5), - (Wendigo, _) => (9.0, 0.5, -0.5), - (Troll, _) => (11.0, 0.5, -1.5), - (Dullahan, _) => (14.0, 0.5, 4.5), + (Ogre, Male) => (12.0, 0.5, 3.0), + (Ogre, Female) => (8.0, 0.5, 2.0), + (Cyclops, _) => (9.5, 2.5, 4.5), + (Wendigo, _) => (9.0, 0.5, 2.5), + (Troll, _) => (11.0, 0.5, 4.5), + (Dullahan, _) => (14.0, 0.5, 3.5), (Werewolf, _) => (9.0, 4.0, -3.0), - (Occultsaurok, _) => (7.5, 1.0, -1.5), - (Mightysaurok, _) => (7.5, 1.0, -1.5), - (Slysaurok, _) => (7.5, 1.0, -1.5), + (Occultsaurok, _) => (7.5, 1.0, 1.5), + (Mightysaurok, _) => (7.5, 1.0, 1.5), + (Slysaurok, _) => (7.5, 1.0, 1.5), (Mindflayer, _) => (8.0, 0.5, -1.0), + (Minotaur, _) => (10.0, 1.0, -1.0), + (Tidalwarrior, _) => (14.0, -0.5, 2.0), + (Yeti, _) => (10.5, 1.0, -2.5), + (Harvester, _) => (8.0, 1.0, -1.5), }, hand: match (body.species, body.body_type) { - (Ogre, Male) => (14.5, 0.0, -2.0), + (Ogre, Male) => (14.5, 0.0, -4.0), (Ogre, Female) => (9.0, 0.5, -4.5), (Cyclops, _) => (10.0, 2.0, -0.5), - (Wendigo, _) => (12.0, 0.0, -0.5), - (Troll, _) => (11.5, 0.0, -1.5), + (Wendigo, _) => (12.0, 0.0, -3.5), + (Troll, _) => (11.5, 0.0, -5.5), (Dullahan, _) => (14.5, 0.0, -2.5), (Werewolf, _) => (10.0, 2.5, -11.0), (Occultsaurok, _) => (8.0, 1.5, -5.5), (Mightysaurok, _) => (8.0, 1.5, -5.5), (Slysaurok, _) => (8.0, 1.5, -5.5), (Mindflayer, _) => (9.0, 0.5, -4.5), + (Minotaur, _) => (12.5, 0.5, -7.0), + (Tidalwarrior, _) => (15.5, -0.5, -3.0), + (Yeti, _) => (12.0, 1.5, -6.0), + (Harvester, _) => (11.5, 1.5, -5.5), }, leg: match (body.species, body.body_type) { (Ogre, Male) => (0.0, 0.0, -4.0), (Ogre, Female) => (0.0, 0.0, -2.0), - (Cyclops, _) => (0.0, 0.0, -5.0), + (Cyclops, _) => (0.0, -1.0, -5.0), (Wendigo, _) => (2.0, 2.0, -2.5), (Troll, _) => (5.0, 0.0, -6.0), (Dullahan, _) => (0.0, 0.0, -5.0), (Werewolf, _) => (4.5, 1.0, -5.0), - (Occultsaurok, _) => (3.0, 0.5, -6.0), - (Mightysaurok, _) => (3.0, 0.5, -6.0), - (Slysaurok, _) => (3.0, 0.5, -6.0), + (Occultsaurok, _) => (3.0, 0.5, -4.0), + (Mightysaurok, _) => (3.0, 0.5, -4.0), + (Slysaurok, _) => (3.0, 0.5, -4.0), (Mindflayer, _) => (6.0, -2.0, 6.5), + (Minotaur, _) => (5.0, 0.0, -10.0), + (Tidalwarrior, _) => (2.5, 0.0, -5.5), + (Yeti, _) => (4.0, 0.0, -5.5), + (Harvester, _) => (3.5, 1.0, -4.0), }, foot: match (body.species, body.body_type) { - (Ogre, Male) => (4.0, 1.0, -13.5), + (Ogre, Male) => (4.0, 1.0, -12.0), (Ogre, Female) => (4.0, 0.5, -13.5), - (Cyclops, _) => (4.0, 0.5, -17.0), + (Cyclops, _) => (4.0, 1.5, -17.0), (Wendigo, _) => (5.0, 2.5, -17.0), (Troll, _) => (6.0, 1.5, -13.0), (Dullahan, _) => (4.0, 2.5, -14.0), (Werewolf, _) => (5.5, 3.0, -6.5), - (Occultsaurok, _) => (3.5, 2.0, -12.0), - (Mightysaurok, _) => (3.5, 2.0, -12.0), - (Slysaurok, _) => (3.5, 2.0, -12.0), + (Occultsaurok, _) => (3.5, 3.5, -10.0), + (Mightysaurok, _) => (3.5, 3.5, -10.0), + (Slysaurok, _) => (3.5, 3.5, -10.0), (Mindflayer, _) => (4.5, 1.5, -7.0), + (Minotaur, _) => (6.0, 4.5, -17.5), + (Tidalwarrior, _) => (3.5, 0.5, -10.5), + (Yeti, _) => (4.5, 0.5, -12.5), + (Harvester, _) => (4.5, 0.5, -9.5), + }, + scaler: match (body.species, body.body_type) { + (Ogre, Male) => 1.4, + (Ogre, Female) => 1.4, + (Cyclops, _) => 1.6, + (Wendigo, _) => 1.2, + (Troll, _) => 1.3, + (Dullahan, _) => 1.4, + (Werewolf, _) => 1.2, + (Occultsaurok, _) => 1.2, + (Mightysaurok, _) => 1.2, + (Slysaurok, _) => 1.2, + (Mindflayer, _) => 1.5, + (Minotaur, _) => 2.0, + (Tidalwarrior, _) => 2.0, + (Yeti, _) => 1.5, + (Harvester, _) => 1.5, + }, + tempo: match (body.species, body.body_type) { + (Ogre, Male) => 0.9, + (Ogre, Female) => 0.9, + (Cyclops, _) => 0.8, + (Troll, _) => 0.9, + (Dullahan, _) => 0.8, + (Minotaur, _) => 0.8, + _ => 1.0, + }, + grip: match (body.species, body.body_type) { + (Ogre, Male) => 13.0, + (Ogre, Female) => 8.0, + (Cyclops, _) => 12.0, + (Wendigo, _) => 15.0, + (Troll, _) => 12.0, + (Dullahan, _) => 15.0, + (Werewolf, _) => 13.0, + (Occultsaurok, _) => 10.0, + (Mightysaurok, _) => 10.0, + (Slysaurok, _) => 10.0, + (Mindflayer, _) => 12.0, + (Minotaur, _) => 14.0, + (Tidalwarrior, _) => 14.0, + (Yeti, _) => 12.5, + (Harvester, _) => 7.5, }, shl: match (body.species, body.body_type) { (Dullahan, _) => (-4.75, -11.0, 8.5, 1.47, -0.2, 0.0), (Mightysaurok, _) => (-1.75, -9.0, 3.5, 1.47, -0.2, 0.0), - (_, _) => (-4.75, -1.0, 2.5, 1.47, -0.2, 0.0), + _ => (-4.75, -1.0, 2.5, 1.47, -0.2, 0.0), }, shr: match (body.species, body.body_type) { (Dullahan, _) => (5.75, -11.5, 4.5, 1.47, 0.3, 0.0), (Mightysaurok, _) => (2.75, -9.5, -0.5, 1.47, 0.3, 0.0), - (_, _) => (3.75, -1.5, -0.5, 1.47, 0.3, 0.0), + _ => (3.75, -1.5, -0.5, 1.47, 0.3, 0.0), }, sc: match (body.species, body.body_type) { (Dullahan, _) => (-7.0, 17.0, -16.0, -0.1, 0.0, 0.0), (Mightysaurok, _) => (-7.0, 15.0, -11.0, -0.1, 0.0, 0.0), - (_, _) => (-7.0, 7.0, -10.0, -0.1, 0.0, 0.0), + _ => (-7.0, 7.0, -10.0, -0.1, 0.0, 0.0), }, hhl: match (body.species, body.body_type) { (Ogre, Male) => (-9.0, -10.0, 23.0, 1.57, -0.57, 0.0), (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), - (_, _) => (-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), + _ => (-6.0, -10.0, 17.0, 1.57, -0.57, 0.0), }, hhr: match (body.species, body.body_type) { (Ogre, Male) => (-5.0, -13.0, 0.0, 1.57, -0.57, 0.0), (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), - (_, _) => (-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), + _ => (-6.0, -10.0, 0.0, 1.57, -0.57, 0.0), }, hc: match (body.species, body.body_type) { (Ogre, Male) => (11.5, 9.0, -13.0, -0.57, -1.57, 1.0), (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), - (_, _) => (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), + _ => (8.5, 6.0, -12.0, -0.57, -1.57, 1.0), }, sthl: match (body.species, body.body_type) { (Ogre, Female) => (-1.0, -5.0, 12.0, 1.27, 0.0, 0.0), (Occultsaurok, _) => (-1.0, -7.0, 12.0, 1.27, 0.0, 0.0), (Mindflayer, _) => (1.0, -10.5, 7.0, 1.27, 0.0, 0.0), - (_, _) => (11.0, 5.0, -4.0, 1.27, 0.0, 0.0), + _ => (11.0, 5.0, -4.0, 1.27, 0.0, 0.0), }, sthr: match (body.species, body.body_type) { (Ogre, Female) => (5.0, -3.5, 18.0, 1.57, 0.8, 0.0), (Occultsaurok, _) => (7.0, -3.5, 18.0, 1.57, 0.8, 0.0), (Mindflayer, _) => (7.0, -9.0, 13.0, 1.57, 0.8, 0.0), - (_, _) => (17.0, 7.5, 2.0, 1.57, 0.8, 0.0), + _ => (17.0, 7.5, 2.0, 1.57, 0.8, 0.0), }, stc: match (body.species, body.body_type) { (Ogre, Female) => (-10.0, 7.0, -23.0, -0.3, 0.15, 0.0), (Occultsaurok, _) => (-10.0, 7.0, -22.0, -0.3, 0.15, 0.0), (Mindflayer, _) => (-10.0, 12.5, -22.0, -0.3, 0.15, 0.0), - (_, _) => (-18.0, 1.0, -2.0, -0.3, 0.15, 0.0), + _ => (-18.0, 1.0, -2.0, -0.3, 0.15, 0.0), }, bhl: match (body.species, body.body_type) { (Slysaurok, _) => (-1.0, -12.0, 1.0, 1.57, 0.0, 0.0), - (_, _) => (3.0, 2.5, 0.0, 1.2, -0.6, -0.3), + _ => (3.0, 2.5, 0.0, 1.2, -0.6, -0.3), }, bhr: match (body.species, body.body_type) { (Slysaurok, _) => (0.0, -6.0, -2.0, 1.57, 0.0, 0.0), - (_, _) => (5.9, 5.5, -5.0, 1.2, -0.6, -0.3), + _ => (5.9, 5.5, -5.0, 1.2, -0.6, -0.3), }, bc: match (body.species, body.body_type) { (Slysaurok, _) => (1.0, 13.0, -8.0, 0.0, 1.2, -0.6), - (_, _) => (-7.0, 3.0, -8.0, 0.0, 0.0, 0.0), + _ => (-7.0, 3.0, -8.0, 0.0, 0.0, 0.0), }, beast: matches!((body.species, body.body_type), (Werewolf, _)), float: matches!((body.species, body.body_type), (Mindflayer, _)), diff --git a/voxygen/anim/src/biped_large/run.rs b/voxygen/anim/src/biped_large/run.rs index 105768b303..0cb9948bc4 100644 --- a/voxygen/anim/src/biped_large/run.rs +++ b/voxygen/anim/src/biped_large/run.rs @@ -10,11 +10,12 @@ pub struct RunAnimation; type RunAnimationDependency = ( Option, Option, - f32, + Vec3, Vec3, Vec3, f64, Vec3, + f32, ); impl Animation for RunAnimation { type Dependency = RunAnimationDependency; @@ -34,6 +35,7 @@ impl Animation for RunAnimation { last_ori, global_time, avg_vel, + acc_vel, ): Self::Dependency, anim_time: f64, rate: &mut f32, @@ -45,30 +47,20 @@ impl Animation for RunAnimation { *rate = 1.0; - let lab = 0.65; //.65 - let foothoril = (((1.0) - / (0.4 + (0.6) * ((anim_time as f32 * 16.0 * lab as f32 + PI * 1.4).sin()).powi(2))) - .sqrt()) - * ((anim_time as f32 * 16.0 * lab as f32 + PI * 1.4).sin()); - let foothorir = (((1.0) - / (0.4 + (0.6) * ((anim_time as f32 * 16.0 * lab as f32 + PI * 0.4).sin()).powi(2))) - .sqrt()) - * ((anim_time as f32 * 16.0 * lab as f32 + PI * 0.4).sin()); + let lab = 0.65 * s_a.tempo; + let speednorm = (speed / 12.0).powf(0.6); + let speednormlow = (speed / 12.0).powf(4.0); - let footvertl = (anim_time as f32 * 16.0 * lab as f32).sin(); - let footvertr = (anim_time as f32 * 16.0 * lab as f32 + PI).sin(); - let handhoril = (anim_time as f32 * 16.0 * lab as f32 + PI * 1.4).sin(); - let handhorir = (anim_time as f32 * 16.0 * lab as f32 + PI * 0.4).sin(); + let footvertl = (acc_vel * lab as f32 + PI * -0.2).sin() * speednorm; + let footvertr = (acc_vel * lab as f32 + PI * -1.2).sin() * speednorm; - let footrotl = (((5.0) - / (2.5 + (2.5) * ((anim_time as f32 * 16.0 * lab as f32 + PI * 1.4).sin()).powi(2))) - .sqrt()) - * ((anim_time as f32 * 16.0 * lab as f32 + PI * 1.4).sin()); + let footrotl = + (((1.0) / (0.5 + (0.5) * ((acc_vel * lab as f32 + PI * 1.4).sin()).powi(2))).sqrt()) + * ((acc_vel * lab as f32 + PI * 1.4).sin()); - let footrotr = (((5.0) - / (1.0 + (4.0) * ((anim_time as f32 * 16.0 * lab as f32 + PI * 0.4).sin()).powi(2))) - .sqrt()) - * ((anim_time as f32 * 16.0 * lab as f32 + PI * 0.4).sin()); + let footrotr = + (((1.0) / (0.5 + (0.5) * ((acc_vel * lab as f32 + PI * 0.4).sin()).powi(2))).sqrt()) + * ((acc_vel * lab as f32 + PI * 0.4).sin()); let amplitude = (speed / 21.0).max(0.25); let amplitude2 = (speed * 1.4 / 21.0).sqrt().max(0.6); @@ -76,10 +68,9 @@ impl Animation for RunAnimation { let speedmult = 1.0; let canceler = (speed / 21.0).sqrt(); - let short = (anim_time as f32 * (16.0) * lab as f32 * speedmult + PI * -0.15).sin(); + let short = (acc_vel * lab as f32 * speedmult).sin(); // - let shortalt = - (anim_time as f32 * (16.0) * lab as f32 * speedmult + PI * 3.0 / 8.0 + 0.7).sin(); + let shortalt = (acc_vel * lab as f32 * speedmult + PI * 3.0 + 0.7).sin(); let look = Vec2::new( ((global_time + anim_time) as f32 / 2.0) .floor() @@ -100,28 +91,19 @@ impl Animation for RunAnimation { let shift4 = speedadjust - PI * 3.0 / 4.0 + speedadjust * PI / 2.0; //FL - let foot1a = - (anim_time as f32 * (16.0) * lab as f32 * speedmult + 0.0 + canceler * 0.05 + shift1) - .sin(); //1.5 - let foot1b = - (anim_time as f32 * (16.0) * lab as f32 * speedmult + 1.1 + canceler * 0.05 + shift1) - .sin(); //1.9 + let foot1a = (acc_vel * lab as f32 * speedmult + 0.0 + canceler * 0.05 + shift1).sin(); + let foot1b = (acc_vel * lab as f32 * speedmult + 1.1 + canceler * 0.05 + shift1).sin(); //FR - let foot2a = (anim_time as f32 * (16.0) * lab as f32 * speedmult + shift2).sin(); //1.2 - let foot2b = (anim_time as f32 * (16.0) * lab as f32 * speedmult + 1.1 + shift2).sin(); //1.6 + let foot2a = (acc_vel * lab as f32 * speedmult + shift2).sin(); + let foot2b = (acc_vel * lab as f32 * speedmult + 1.1 + shift2).sin(); //BL - let foot3a = (anim_time as f32 * (16.0) * lab as f32 * speedmult + shift3).sin(); //0.0 - let foot3b = (anim_time as f32 * (16.0) * lab as f32 * speedmult + 0.3 + shift3).sin(); //0.4 + let foot3a = (acc_vel * lab as f32 * speedmult + shift3).sin(); + let foot3b = (acc_vel * lab as f32 * speedmult + 0.3 + shift3).sin(); //BR - let foot4a = - (anim_time as f32 * (16.0) * lab as f32 * speedmult + 0.0 + canceler * 0.05 + shift4) - .sin(); //0.3 - let foot4b = - (anim_time as f32 * (16.0) * lab as f32 * speedmult + 1.57 + canceler * 0.05 + shift4) - .sin(); //0.7 + let foot4a = (acc_vel * lab as f32 * speedmult + 0.0 + canceler * 0.05 + shift4).sin(); + let foot4b = (acc_vel * lab as f32 * speedmult + 1.57 + canceler * 0.05 + shift4).sin(); // - let _slower = (anim_time as f32 * 1.0 + PI).sin(); - let slow = (anim_time as f32 * 3.5 + PI).sin(); + let slow = (acc_vel * lab as f32 * speedmult + PI).sin(); let ori: Vec2 = Vec2::from(orientation); let last_ori = Vec2::from(last_ori); @@ -137,6 +119,18 @@ impl Animation for RunAnimation { 0.0 } * 1.3; + let foothoril = (acc_vel * lab as f32 + PI * 1.45).sin() * speednorm; + let foothorir = (acc_vel * lab as f32 + PI * (0.45)).sin() * speednorm; + let footstrafel = (acc_vel * lab as f32 + PI * 1.45).sin(); + let footstrafer = (acc_vel * lab as f32 + PI * (0.95)).sin(); + let footvertsl = (acc_vel * lab as f32).sin(); + let footvertsr = (acc_vel * lab as f32 + PI * 0.5).sin(); + let direction = velocity.y * -0.098 * orientation.y + velocity.x * -0.098 * orientation.x; + + let side = + (velocity.x * -0.098 * orientation.y + velocity.y * 0.098 * orientation.x) * -1.0; + let sideabs = side.abs(); + let x_tilt = avg_vel.z.atan2(avg_vel.xy().magnitude()); next.jaw.scale = Vec3::one() * 1.02; @@ -145,7 +139,7 @@ impl Animation for RunAnimation { next.hand_l.scale = Vec3::one() * 1.04; next.hand_r.scale = Vec3::one() * 1.04; next.hold.scale = Vec3::one() * 0.0; - next.torso.scale = Vec3::one() / 8.0; + next.torso.scale = Vec3::one() / 8.0 * s_a.scaler; if s_a.beast { next.head.position = Vec3::new(0.0, s_a.head.0, 3.0 + s_a.head.1); @@ -264,27 +258,35 @@ impl Animation for RunAnimation { 0.0, 0.0 + (short * 0.75).max(-2.0), speedavg * 0.15 + (short * 0.75).max(-2.0), - ) / 8.0; + ) / 8.0 + * s_a.scaler; next.torso.orientation = Quaternion::rotation_x(x_tilt + amplitude * short * 0.1 + speedavg * -0.045); } else { next.head.position = Vec3::new(0.0, s_a.head.0, s_a.head.1) * 1.02; - next.head.orientation = - Quaternion::rotation_z(short * -0.18) * Quaternion::rotation_x(-0.05); + next.head.orientation = Quaternion::rotation_z(short * -0.18 * speednorm - tilt * 2.0) + * Quaternion::rotation_x(0.25 * speednorm); - next.upper_torso.position = - Vec3::new(0.0, s_a.upper_torso.0, s_a.upper_torso.1 + shortalt * -1.5); - next.upper_torso.orientation = Quaternion::rotation_z(short * 0.18); + next.upper_torso.position = Vec3::new( + 0.0, + s_a.upper_torso.0, + s_a.upper_torso.1 + shortalt * -1.5 * speednorm, + ); + next.upper_torso.orientation = + Quaternion::rotation_z(short * 0.18 * speednorm + tilt * -1.0) + * Quaternion::rotation_y(tilt); next.lower_torso.position = Vec3::new(0.0, s_a.lower_torso.0, s_a.lower_torso.1); next.lower_torso.orientation = - Quaternion::rotation_z(short * 0.15) * Quaternion::rotation_x(0.14); + Quaternion::rotation_z(short * 0.15 * speednorm + tilt * 0.5) + * Quaternion::rotation_y(tilt * -0.5) + * Quaternion::rotation_x(0.14 * speednorm); next.jaw.position = Vec3::new(0.0, s_a.jaw.0, s_a.jaw.1); next.jaw.orientation = Quaternion::rotation_x(0.0); next.tail.position = Vec3::new(0.0, s_a.tail.0, s_a.tail.1); - next.tail.orientation = Quaternion::rotation_x(shortalt * 0.3); + next.tail.orientation = Quaternion::rotation_x(shortalt * 0.3 * speednorm); next.second.position = Vec3::new(0.0, 0.0, 0.0); next.second.orientation = Quaternion::rotation_x(PI) @@ -292,22 +294,22 @@ impl Animation for RunAnimation { * Quaternion::rotation_z(0.0); match active_tool_kind { - Some(ToolKind::Bow) => { + Some(ToolKind::BowSimple) => { next.main.position = Vec3::new(-2.0, -5.0, -6.0); next.main.orientation = Quaternion::rotation_y(2.5) * Quaternion::rotation_z(1.57); }, - Some(ToolKind::Staff) | Some(ToolKind::Sceptre) => { + Some(ToolKind::StaffSimple) | Some(ToolKind::Sceptre) => { next.main.position = Vec3::new(-6.0, -5.0, -12.0); next.main.orientation = Quaternion::rotation_y(0.6) * Quaternion::rotation_z(1.57); }, - Some(ToolKind::Sword) => { + Some(ToolKind::SwordSimple) => { next.main.position = Vec3::new(-10.0, -8.0, 12.0); next.main.orientation = Quaternion::rotation_y(2.5) * Quaternion::rotation_z(1.57); }, - Some(ToolKind::Hammer) => { + Some(ToolKind::HammerSimple) | Some(ToolKind::AxeSimple) => { next.main.position = Vec3::new(-10.0, -8.0, 12.0); next.main.orientation = Quaternion::rotation_y(2.5) * Quaternion::rotation_z(1.57); @@ -321,86 +323,116 @@ impl Animation for RunAnimation { next.shoulder_l.position = Vec3::new( -s_a.shoulder.0, - s_a.shoulder.1 + foothoril * -3.0, - s_a.shoulder.2, + s_a.shoulder.1, + s_a.shoulder.2 - foothorir * 1.5, ); - next.shoulder_l.orientation = Quaternion::rotation_x(footrotl * -0.36) - * Quaternion::rotation_y(0.1) - * Quaternion::rotation_z(footrotl * 0.3); + next.shoulder_l.orientation = + Quaternion::rotation_x(0.6 * speednormlow + (footrotr * -0.8) * speednorm) + * Quaternion::rotation_y(0.0) + * Quaternion::rotation_z(0.0); next.shoulder_r.position = Vec3::new( s_a.shoulder.0, - s_a.shoulder.1 + foothorir * -3.0, - s_a.shoulder.2, + s_a.shoulder.1, + s_a.shoulder.2 - foothoril * 1.5, ); - next.shoulder_r.orientation = Quaternion::rotation_x(footrotr * -0.36) - * Quaternion::rotation_y(-0.1) - * Quaternion::rotation_z(footrotr * -0.3); + next.shoulder_r.orientation = + Quaternion::rotation_x(0.6 * speednormlow + (footrotl * -0.8) * speednorm) + * Quaternion::rotation_y(0.0); next.hand_l.position = Vec3::new( - -1.0 + -s_a.hand.0, - s_a.hand.1 + foothoril * -4.0, - s_a.hand.2 + foothoril * 1.0, + -s_a.hand.0 + foothorir * -1.3, + 2.0 * speednorm + s_a.hand.1 + foothorir * -5.0, + 1.5 * speednorm + s_a.hand.2 - foothorir * 4.5, ); - next.hand_l.orientation = Quaternion::rotation_x(0.15 + (handhoril * -1.2).max(-0.3)) - * Quaternion::rotation_y(handhoril * -0.1); + next.hand_l.orientation = + Quaternion::rotation_x(0.6 * speednorm + (footrotr * -1.2) * speednorm) + * Quaternion::rotation_y(footrotr * 0.4 * speednorm); next.hand_r.position = Vec3::new( - 1.0 + s_a.hand.0, - s_a.hand.1 + foothorir * -4.0, - s_a.hand.2 + foothorir * 1.0, + s_a.hand.0 + foothoril * 1.3, + 2.0 * speednorm + s_a.hand.1 + foothoril * -5.0, + 1.5 * speednorm + s_a.hand.2 - foothoril * 4.5, ); - next.hand_r.orientation = Quaternion::rotation_x(0.15 + (handhorir * -1.2).max(-0.3)) - * Quaternion::rotation_y(handhorir * 0.1); + next.hand_r.orientation = + Quaternion::rotation_x(0.6 * speednorm + (footrotl * -1.2) * speednorm) + * Quaternion::rotation_y(footrotl * -0.4 * speednorm); - next.leg_l.position = Vec3::new(-s_a.leg.0, s_a.leg.1, s_a.leg.2) * 0.98; - next.leg_l.orientation = - Quaternion::rotation_z(short * 0.18) * Quaternion::rotation_x(foothoril * 0.3); + next.leg_l.position = Vec3::new( + -s_a.leg.0, + s_a.leg.1 + foothoril * -3.5, + s_a.leg.2 + (footvertl * -3.0), + ) * 0.98; + next.leg_l.orientation = Quaternion::rotation_z(short * 0.18 * speednorm) + * Quaternion::rotation_y(tilt * -0.5) + * Quaternion::rotation_x(foothoril * -0.8); - next.leg_r.position = Vec3::new(s_a.leg.0, s_a.leg.1, s_a.leg.2) * 0.98; + next.leg_r.position = Vec3::new( + s_a.leg.0, + s_a.leg.1 + foothorir * -3.5, + s_a.leg.2 + (footvertr * -3.0), + ) * 0.98; - next.leg_r.orientation = - Quaternion::rotation_z(short * 0.18) * Quaternion::rotation_x(foothorir * 0.3); + next.leg_r.orientation = Quaternion::rotation_z(short * 0.18 * speednorm) + * Quaternion::rotation_y(tilt * -0.5) + * Quaternion::rotation_x(foothorir * -0.8); next.foot_l.position = Vec3::new( - -s_a.foot.0, - s_a.foot.1 + foothoril * 8.5, - s_a.foot.2 + ((footvertl * 6.5).max(0.0)), + -s_a.foot.0 + footstrafel * sideabs * 3.0 + tilt * -2.0, + s_a.foot.1 + + (1.0 - sideabs) * (-1.5 * speednorm + foothoril * -10.5) + + (direction * 5.0).max(0.0), + s_a.foot.2 + + (1.0 - sideabs) * (1.0 * speednorm + ((footvertl * -4.1).max(-1.0))) + + side * ((footvertsl * 1.5).max(-1.0)), ); - next.foot_l.orientation = - Quaternion::rotation_x(-0.5 + footrotl * 0.85) * Quaternion::rotation_y(0.0); + next.foot_l.orientation = Quaternion::rotation_x( + (1.0 - sideabs) * (-0.2 + foothoril * -0.9) + sideabs * -0.5, + ) * Quaternion::rotation_y( + tilt * 1.0 + side * 0.3 + side * (foothoril * 0.3), + ) * Quaternion::rotation_z(side * 0.2); next.foot_r.position = Vec3::new( - s_a.foot.0, - s_a.foot.1 + foothorir * 8.5, - s_a.foot.2 + ((footvertr * 6.5).max(0.0)), + s_a.foot.0 + footstrafer * sideabs * 3.0 + tilt * -2.0, + s_a.foot.1 + + (1.0 - sideabs) * (-1.5 * speednorm + foothorir * -10.5) + + (direction * 5.0).max(0.0), + s_a.foot.2 + + (1.0 - sideabs) * (1.0 * speednorm + ((footvertr * -4.1).max(-1.0))) + + side * ((footvertsr * -1.5).max(-1.0)), ); - next.foot_r.orientation = - Quaternion::rotation_x(-0.5 + footrotr * 0.85) * Quaternion::rotation_y(0.0); + next.foot_r.orientation = Quaternion::rotation_x( + (1.0 - sideabs) * (-0.2 + foothorir * -0.9) + sideabs * -0.5, + ) * Quaternion::rotation_y( + tilt * 1.0 + side * 0.3 + side * (foothorir * 0.3), + ) * Quaternion::rotation_z(side * 0.2); next.torso.position = Vec3::new(0.0, 0.0, 0.0) / 8.0; - next.torso.orientation = Quaternion::rotation_x(-0.25); + next.torso.orientation = Quaternion::rotation_x(-0.25 * speednorm); } if s_a.float { next.head.orientation = Quaternion::rotation_x(slow * 0.1); - next.upper_torso.position = - Vec3::new(0.0, s_a.upper_torso.0, s_a.upper_torso.1 + slow * 2.0 + 4.0); - next.upper_torso.orientation = Quaternion::rotation_x(-0.1 + slow * 0.05); - next.lower_torso.orientation = - Quaternion::rotation_z(short * 0.05) * Quaternion::rotation_x(0.14); + next.upper_torso.position = Vec3::new( + 0.0, + s_a.upper_torso.0, + s_a.upper_torso.1 + slow * 2.0 + 4.0 * speednorm, + ); + next.upper_torso.orientation = Quaternion::rotation_x(-0.1 * speednorm + slow * 0.05); + next.lower_torso.orientation = Quaternion::rotation_z(short * 0.05 * speednorm) + * Quaternion::rotation_x(0.14 * speednorm); next.shoulder_l.position = Vec3::new(-s_a.shoulder.0, s_a.shoulder.1, s_a.shoulder.2); - next.shoulder_l.orientation = Quaternion::rotation_x(-0.4 + slow * 0.1); + next.shoulder_l.orientation = Quaternion::rotation_x(-0.4 * speednormlow + slow * 0.1); next.shoulder_r.position = Vec3::new(s_a.shoulder.0, s_a.shoulder.1, s_a.shoulder.2); - next.shoulder_r.orientation = Quaternion::rotation_x(-0.4 + slow * 0.1); + next.shoulder_r.orientation = Quaternion::rotation_x(-0.4 * speednormlow + slow * 0.1); next.hand_l.position = Vec3::new(-s_a.hand.0, s_a.hand.1, s_a.hand.2); - next.hand_l.orientation = Quaternion::rotation_x(-0.4 + slow * 0.1); + next.hand_l.orientation = Quaternion::rotation_x(-0.4 * speednorm + slow * 0.1); next.hand_r.position = Vec3::new(s_a.hand.0, s_a.hand.1, s_a.hand.2); - next.hand_r.orientation = Quaternion::rotation_x(-0.4 + slow * 0.1); + next.hand_r.orientation = Quaternion::rotation_x(-0.4 * speednorm + slow * 0.1); next.foot_l.position = Vec3::new(-s_a.foot.0, s_a.foot.1, s_a.foot.2); - next.foot_l.orientation = Quaternion::rotation_x(-0.5 + slow * 0.1); + next.foot_l.orientation = Quaternion::rotation_x(-0.5 * speednorm + slow * 0.1); next.foot_r.position = Vec3::new(s_a.foot.0, s_a.foot.1, s_a.foot.2); - next.foot_r.orientation = Quaternion::rotation_x(-0.5 + slow * 0.1); + next.foot_r.orientation = Quaternion::rotation_x(-0.5 * speednorm + slow * 0.1); } next diff --git a/voxygen/anim/src/biped_large/shoot.rs b/voxygen/anim/src/biped_large/shoot.rs index 7af7cd9234..a4b5c94976 100644 --- a/voxygen/anim/src/biped_large/shoot.rs +++ b/voxygen/anim/src/biped_large/shoot.rs @@ -2,7 +2,10 @@ use super::{ super::{vek::*, Animation}, BipedLargeSkeleton, SkeletonAttr, }; -use common::{comp::item::ToolKind, states::utils::StageSection}; +use common::{ + comp::item::{ToolKind, UniqueKind}, + states::utils::StageSection, +}; use std::f32::consts::PI; pub struct ShootAnimation; @@ -10,11 +13,12 @@ pub struct ShootAnimation; type ShootAnimationDependency = ( Option, Option, - f32, + Vec3, Vec3, Vec3, f64, Option, + f32, ); impl Animation for ShootAnimation { type Dependency = ShootAnimationDependency; @@ -30,10 +34,11 @@ impl Animation for ShootAnimation { active_tool_kind, _second_tool_kind, velocity, - orientation, - last_ori, + _orientation, + _last_ori, _global_time, stage_section, + acc_vel, ): Self::Dependency, anim_time: f64, rate: &mut f32, @@ -44,140 +49,167 @@ impl Animation for ShootAnimation { let mut next = (*skeleton).clone(); - let lab = 1.0; - let ori: Vec2 = Vec2::from(orientation); - let last_ori = Vec2::from(last_ori); - let tilt = if ::vek::Vec2::new(ori, last_ori) - .map(|o| o.magnitude_squared()) - .map(|m| m > 0.001 && m.is_finite()) - .reduce_and() - && ori.angle_between(last_ori).is_finite() - { - ori.angle_between(last_ori).min(0.2) - * last_ori.determine_side(Vec2::zero(), ori).signum() - } else { - 0.0 - } * 1.3; + let lab = 0.65 * s_a.tempo; + let speednorm = (speed / 12.0).powf(0.4); + let foothoril = (acc_vel * lab as f32 + PI * 1.45).sin() * speednorm; + let foothorir = (acc_vel * lab as f32 + PI * (0.45)).sin() * speednorm; + let footrotl = + (((1.0) / (0.5 + (0.5) * ((acc_vel * lab as f32 + PI * 1.4).sin()).powi(2))).sqrt()) + * ((acc_vel * lab as f32 + PI * 1.4).sin()) + * speednorm; + let footrotr = + (((1.0) / (0.5 + (0.5) * ((acc_vel * lab as f32 + PI * 0.4).sin()).powi(2))).sqrt()) + * ((acc_vel * lab as f32 + PI * 0.4).sin()) + * speednorm; + + next.shoulder_l.position = Vec3::new( + -s_a.shoulder.0, + s_a.shoulder.1, + s_a.shoulder.2 - foothorir * 1.0, + ); + next.shoulder_l.orientation = + Quaternion::rotation_x(0.8 + 1.2 * speednorm + (footrotr * -0.2) * speednorm); + + next.shoulder_r.position = Vec3::new( + s_a.shoulder.0, + s_a.shoulder.1, + s_a.shoulder.2 - foothoril * 1.0, + ); + next.shoulder_r.orientation = + Quaternion::rotation_x(0.8 + 1.2 * speednorm + (footrotl * -0.2) * speednorm); next.jaw.position = Vec3::new(0.0, s_a.jaw.0, s_a.jaw.1); next.jaw.orientation = Quaternion::rotation_x(0.0); + next.main.position = Vec3::new(0.0, 0.0, 0.0); + next.main.orientation = Quaternion::rotation_x(0.0); + + next.hand_l.position = Vec3::new(0.0, 0.0, s_a.grip); + next.hand_r.position = Vec3::new(0.0, 0.0, s_a.grip); + + next.hand_l.orientation = Quaternion::rotation_x(0.0); + next.hand_r.orientation = Quaternion::rotation_x(0.0); match active_tool_kind { - Some(ToolKind::Staff) | Some(ToolKind::Sceptre) => { - let (movement1, movement2, movement3) = match stage_section { - Some(StageSection::Buildup) => (anim_time as f32, 0.0, 0.0), - Some(StageSection::Swing) => (1.0, (anim_time as f32).powf(0.25), 0.0), - Some(StageSection::Recover) => (1.0, 1.0, anim_time as f32), - _ => (0.0, 0.0, 0.0), + Some(ToolKind::StaffSimple) | Some(ToolKind::Sceptre) => { + let (move1base, move1shake, move2base, move3) = match stage_section { + Some(StageSection::Buildup) => ( + anim_time as f32, + (anim_time as f32 * 10.0 + PI).sin(), + 0.0, + 0.0, + ), + Some(StageSection::Swing) => (1.0, 1.0, (anim_time as f32).powf(0.25), 0.0), + Some(StageSection::Recover) => (1.0, 1.0, 1.0, anim_time as f32), + _ => (0.0, 0.0, 0.0, 0.0), }; - let xmove = (movement1 as f32 * 6.0 * lab as f32 + PI).sin(); - let ymove = (movement1 as f32 * 6.0 * lab as f32 + PI * (0.5)).sin(); - next.hand_l.position = Vec3::new(s_a.sthl.0, s_a.sthl.1, s_a.sthl.2); - next.hand_l.orientation = Quaternion::rotation_x(s_a.sthl.3); - - next.hand_r.position = Vec3::new(s_a.sthr.0, s_a.sthr.1, s_a.sthr.2); - next.hand_r.orientation = - Quaternion::rotation_x(s_a.sthr.3) * Quaternion::rotation_y(s_a.sthr.4); - next.shoulder_l.orientation = Quaternion::rotation_z(0.2) - * Quaternion::rotation_x( - (movement1 * (movement2 * 8.0 + PI / 2.0).sin() * -0.1) * (1.0 - movement3), - ); - - next.shoulder_r.orientation = Quaternion::rotation_z(-0.2) - * Quaternion::rotation_x( - 1.0 + movement1 * (movement2 * 8.0 + PI / 2.0).sin() * -0.1, - ); - next.main.position = Vec3::new(0.0, 0.0, 0.0); - next.main.orientation = Quaternion::rotation_y(0.0); + let pullback = 1.0 - move3; + let move1 = move1base * pullback; + let move2 = move2base * pullback; + next.control_l.position = Vec3::new(-1.0, 3.0, 12.0); + next.control_r.position = Vec3::new(1.0, 2.0, 2.0); next.control.position = Vec3::new( - s_a.stc.0 + (xmove * 3.0 + movement1 * -4.0) * (1.0 - movement3), - s_a.stc.1 + (2.0 + ymove * 3.0 + movement2 * 3.0) * (1.0 - movement3), - s_a.stc.2, + -3.0, + 3.0 + s_a.grip / 1.2 + move1 * 4.0 + move2 + move1shake * 2.0 + move2 * -2.0, + -11.0 + -s_a.grip / 2.0 + move1 * 3.0, ); + next.head.orientation = Quaternion::rotation_x(move1 * -0.15) + * Quaternion::rotation_y(move1 * 0.25) + * Quaternion::rotation_z(move1 * 0.25); + next.jaw.orientation = Quaternion::rotation_x(move1 * -0.5); + + next.control_l.orientation = Quaternion::rotation_x(PI / 2.0 + move1 * 0.5) + * Quaternion::rotation_y(move1 * -0.4); + next.control_r.orientation = Quaternion::rotation_x(PI / 2.5 + move1 * 0.5) + * Quaternion::rotation_y(0.5) + * Quaternion::rotation_z(0.0); + next.control.orientation = - Quaternion::rotation_x(s_a.stc.3 + (movement2 * 0.6) * (1.0 - movement3)) - * Quaternion::rotation_y(s_a.stc.4 + (movement1 * 0.5 + movement2 * -0.5)) - * Quaternion::rotation_z( - s_a.stc.5 - - (0.2 + movement1 * -0.5 + movement2 * 0.8) * (1.0 - movement3), - ); - next.upper_torso.orientation = - Quaternion::rotation_z((movement1 * 0.3 + movement2 * 0.2) * (1.0 - movement3)); - next.head.position = Vec3::new(0.0, s_a.head.0, s_a.head.1); - next.head.orientation = Quaternion::rotation_z( - tilt * -2.5 + (movement1 * -0.2 + movement2 * -0.4) * (1.0 - movement3), + Quaternion::rotation_x(-0.2 + move1 * -0.2 + move1shake * 0.1) + * Quaternion::rotation_y(-0.1 + move1 * 0.8 + move2 * -0.3); + next.shoulder_l.position = Vec3::new( + -s_a.shoulder.0, + s_a.shoulder.1, + s_a.shoulder.2 - foothorir * 1.0, + ); + next.shoulder_l.orientation = Quaternion::rotation_x( + move1 * 0.8 + 0.8 * speednorm + (footrotr * -0.2) * speednorm, ); - if speed < 0.5 { - next.lower_torso.orientation = - Quaternion::rotation_x(0.08) * Quaternion::rotation_z(0.0); - - next.foot_l.position = Vec3::new(-s_a.foot.0, s_a.foot.1 - 5.0, s_a.foot.2); - next.foot_l.orientation = Quaternion::rotation_x(-0.5); - - next.foot_r.position = Vec3::new(s_a.foot.0, s_a.foot.1 + 3.0, s_a.foot.2); - next.foot_r.orientation = - Quaternion::rotation_x(0.5) * Quaternion::rotation_z(0.3); - } else { - }; + next.shoulder_r.position = Vec3::new( + s_a.shoulder.0, + s_a.shoulder.1, + s_a.shoulder.2 - foothoril * 1.0, + ); + next.shoulder_r.orientation = + Quaternion::rotation_x(move1 * 0.8 + 0.6 * speednorm + (footrotl * -0.2)); }, - Some(ToolKind::Bow) => { - let (movement1, movement2, movement3) = match stage_section { + Some(ToolKind::BowSimple) => { + let (move1base, move2base, move3) = match stage_section { Some(StageSection::Buildup) => ((anim_time as f32).powf(0.25), 0.0, 0.0), Some(StageSection::Swing) => (1.0, anim_time as f32, 0.0), Some(StageSection::Recover) => (1.0, 1.0, (anim_time as f32).powi(4)), _ => (0.0, 0.0, 0.0), }; - next.main.position = Vec3::new(0.0, 0.0, 0.0); - next.main.orientation = Quaternion::rotation_x(0.0); - next.hand_l.position = Vec3::new( - s_a.bhl.0 + movement2 * -2.0, - s_a.bhl.1 + movement2 * -12.0, - s_a.bhl.2 + movement2 * -3.0, + let pullback = 1.0 - move3; + let move1 = move1base * pullback; + let move2 = move2base * pullback; + next.control_l.position = Vec3::new(-1.0, -2.0 + move2 * -7.0, -3.0); + next.control_r.position = Vec3::new(0.0, 4.0, 1.0); + + next.control.position = Vec3::new( + -1.0 + move1 * 2.0, + 6.0 + s_a.grip / 1.2 + move1 * 7.0, + -5.0 + -s_a.grip / 2.0 + move1 * 8.0, ); - next.hand_l.orientation = Quaternion::rotation_x(s_a.bhl.3); - next.hand_r.position = Vec3::new(s_a.bhr.0, s_a.bhr.1, s_a.bhr.2); - next.hand_r.orientation = Quaternion::rotation_x(s_a.bhr.3); - next.shoulder_l.orientation = Quaternion::rotation_z(0.2) - * Quaternion::rotation_x( - (movement1 * (movement2 * 8.0 + PI / 2.0).sin() * 1.1) * (1.0 - movement3), - ); - next.shoulder_r.orientation = Quaternion::rotation_z(-0.2) - * Quaternion::rotation_x( - 1.5 + movement1 * (movement2 * 8.0 + PI / 2.0).sin() * -0.1, - ); - next.hold.position = - Vec3::new(0.0, -1.0 + movement2 * 2.0, -5.2 + movement2 * -3.0); - next.hold.orientation = Quaternion::rotation_x(-1.57); - next.hold.scale = Vec3::one() * 1.0 * (1.0 - movement2); + next.control_l.orientation = + Quaternion::rotation_x(PI / 2.0 + move2 * 0.4) * Quaternion::rotation_y(-0.2); + next.control_r.orientation = Quaternion::rotation_x(PI / 2.2 + move1 * 0.4) + * Quaternion::rotation_y(0.2) + * Quaternion::rotation_z(0.0); - next.control.position = Vec3::new(s_a.bc.0 + 11.0, s_a.bc.1 + 2.0, s_a.bc.2 + 8.0); - next.control.orientation = - Quaternion::rotation_x(0.0 + (movement2 as f32 * 0.1).sin()) - * Quaternion::rotation_y(s_a.bc.4 - 1.25) - * Quaternion::rotation_z(s_a.bc.5 - 0.2 + (movement2 as f32 * -0.2).sin()); - next.upper_torso.orientation = Quaternion::rotation_z(0.8); - next.head.position = Vec3::new(0.0 - 2.0, s_a.head.0, s_a.head.1); + next.control.orientation = Quaternion::rotation_x(-0.2) + * Quaternion::rotation_y(1.0 + move1 * -0.4) + * Quaternion::rotation_z(-0.3); + next.head.orientation = Quaternion::rotation_z(move1 * 0.25); + next.shoulder_l.position = Vec3::new( + -s_a.shoulder.0, + s_a.shoulder.1, + s_a.shoulder.2 - foothorir * 1.0, + ); + next.shoulder_l.orientation = + Quaternion::rotation_x(move1 * 0.8 + 1.2 * speednorm + (footrotr * -0.2)); - next.head.orientation = - Quaternion::rotation_z(tilt * -2.5 - 0.5 + (movement2 as f32 * 0.2).sin()); - if speed < 0.5 { - next.upper_torso.orientation = - Quaternion::rotation_z(0.8 + (movement2 as f32 * 0.1).sin()); - - next.lower_torso.orientation = Quaternion::rotation_x(0.08) - * Quaternion::rotation_z((movement2 as f32 * -0.15).sin()); - - next.foot_l.position = Vec3::new(-s_a.foot.0, s_a.foot.1 - 5.0, s_a.foot.2); - next.foot_l.orientation = Quaternion::rotation_x(-0.5); - - next.foot_r.position = Vec3::new(s_a.foot.0, s_a.foot.1 + 3.0, s_a.foot.2); - next.foot_r.orientation = - Quaternion::rotation_x(0.5) * Quaternion::rotation_z(0.3); - } else { + next.shoulder_r.position = Vec3::new( + s_a.shoulder.0, + s_a.shoulder.1, + s_a.shoulder.2 - foothoril * 1.0, + ); + next.shoulder_r.orientation = + Quaternion::rotation_x(move1 * 0.8 + 1.2 * speednorm + (footrotl * -0.2)); + }, + Some(ToolKind::Unique(UniqueKind::WendigoMagic)) => { + let (move1base, _move2base, move3) = match stage_section { + Some(StageSection::Buildup) => ((anim_time as f32).powf(0.25), 0.0, 0.0), + Some(StageSection::Swing) => (1.0, anim_time as f32, 0.0), + Some(StageSection::Recover) => (1.0, 1.0, (anim_time as f32).powi(4)), + _ => (0.0, 0.0, 0.0), }; + let pullback = 1.0 - move3; + let move1 = move1base * pullback; + next.control_l.position = + Vec3::new(-9.0 + move1 * 6.0, 19.0 + move1 * 6.0, -13.0 + move1 * 10.5); + next.control_r.position = + Vec3::new(9.0 + move1 * -6.0, 19.0 + move1 * 6.0, -13.0 + move1 * 14.5); + + next.control_l.orientation = Quaternion::rotation_x(PI / 3.0 + move1 * 0.5) + * Quaternion::rotation_y(-0.15) + * Quaternion::rotation_z(move1 * 0.5); + next.control_r.orientation = Quaternion::rotation_x(PI / 3.0 + move1 * 0.5) + * Quaternion::rotation_y(0.15) + * Quaternion::rotation_z(move1 * -0.5); + next.head.orientation = Quaternion::rotation_x(move1 * -0.3); }, _ => {}, } diff --git a/voxygen/anim/src/biped_large/wield.rs b/voxygen/anim/src/biped_large/wield.rs index 77640eeac5..b7bf517c64 100644 --- a/voxygen/anim/src/biped_large/wield.rs +++ b/voxygen/anim/src/biped_large/wield.rs @@ -8,7 +8,7 @@ use std::{f32::consts::PI, ops::Mul}; pub struct WieldAnimation; impl Animation for WieldAnimation { - type Dependency = (Option, Option, f32, f64); + type Dependency = (Option, Option, Vec3, f64, f32); type Skeleton = BipedLargeSkeleton; #[cfg(feature = "use-dyn-lib")] @@ -17,21 +17,28 @@ impl Animation for WieldAnimation { #[cfg_attr(feature = "be-dyn-lib", export_name = "biped_large_wield")] fn update_skeleton_inner( skeleton: &Self::Skeleton, - (active_tool_kind, _second_tool_kind, velocity, global_time): Self::Dependency, + (active_tool_kind, _second_tool_kind, velocity, global_time, acc_vel): Self::Dependency, anim_time: f64, _rate: &mut f32, s_a: &SkeletonAttr, ) -> Self::Skeleton { let mut next = (*skeleton).clone(); + let speed = Vec2::::from(velocity).magnitude(); - let lab = 0.55; - let test = (anim_time as f32 + 36.0 * PI).sin(); + let lab = 0.65 * s_a.tempo; //.65 let torso = (anim_time as f32 * lab as f32 + 1.5 * PI).sin(); + let speednorm = (speed / 12.0).powf(0.4); + let foothoril = (acc_vel * lab as f32 + PI * 1.45).sin() * speednorm; + let foothorir = (acc_vel * lab as f32 + PI * (0.45)).sin() * speednorm; + let footrotl = + (((1.0) / (0.5 + (0.5) * ((acc_vel * lab as f32 + PI * 1.4).sin()).powi(2))).sqrt()) + * ((acc_vel * lab as f32 + PI * 1.4).sin()); + let footrotr = + (((1.0) / (0.5 + (0.5) * ((acc_vel * lab as f32 + PI * 0.4).sin()).powi(2))).sqrt()) + * ((acc_vel * lab as f32 + PI * 0.4).sin()); let slower = (anim_time as f32 * 1.0 + PI).sin(); let slow = (anim_time as f32 * 3.5 + PI).sin(); - let u_slow = (anim_time as f32 * 1.0 + PI).sin(); - let u_slowalt = (anim_time as f32 * 3.0 + PI).cos(); let tailmove = Vec2::new( ((global_time + anim_time) as f32 / 2.0) @@ -74,31 +81,12 @@ impl Animation for WieldAnimation { 0.0 }; - let foothoril = (((1.0) - / (0.4 + (0.6) * ((anim_time as f32 * 16.0 * lab as f32 + PI * 1.4).sin()).powi(2))) - .sqrt()) - * ((anim_time as f32 * 16.0 * lab as f32 + PI * 1.4).sin()); - let foothorir = (((1.0) - / (0.4 + (0.6) * ((anim_time as f32 * 16.0 * lab as f32 + PI * 0.4).sin()).powi(2))) - .sqrt()) - * ((anim_time as f32 * 16.0 * lab as f32 + PI * 0.4).sin()); - let footvertl = (anim_time as f32 * 16.0 * lab as f32).sin(); let footvertr = (anim_time as f32 * 16.0 * lab as f32 + PI).sin(); let handhoril = (anim_time as f32 * 16.0 * lab as f32 + PI * 1.4).sin(); let handhorir = (anim_time as f32 * 16.0 * lab as f32 + PI * 0.4).sin(); - let footrotl = (((5.0) - / (2.5 + (2.5) * ((anim_time as f32 * 16.0 * lab as f32 + PI * 1.4).sin()).powi(2))) - .sqrt()) - * ((anim_time as f32 * 16.0 * lab as f32 + PI * 1.4).sin()); - - let footrotr = (((5.0) - / (1.0 + (4.0) * ((anim_time as f32 * 16.0 * lab as f32 + PI * 0.4).sin()).powi(2))) - .sqrt()) - * ((anim_time as f32 * 16.0 * lab as f32 + PI * 0.4).sin()); - - let short = (anim_time as f32 * lab as f32 * 16.0).sin(); + let short = (acc_vel * lab as f32).sin() * speednorm; let shortalt = (anim_time as f32 * lab as f32 * 16.0 + PI / 2.0).sin(); @@ -107,61 +95,33 @@ impl Animation for WieldAnimation { } else { next.jaw.position = Vec3::new(0.0, s_a.jaw.0 - slower * 0.12, s_a.jaw.1 + slow * 0.2); - next.hand_l.position = - Vec3::new(-s_a.hand.0 - 7.0, s_a.hand.1 - 7.0, s_a.hand.2 + 10.0); - next.hand_l.orientation = Quaternion::rotation_x(0.57) * Quaternion::rotation_z(1.57); - - next.hand_r.position = Vec3::new(s_a.hand.0 - 7.0, s_a.hand.1 - 7.0, s_a.hand.2 + 10.0); - next.hand_r.orientation = Quaternion::rotation_x(0.57) * Quaternion::rotation_z(1.57); - next.hand_r.orientation = Quaternion::rotation_x(0.57) * Quaternion::rotation_z(1.57); - - next.control.position = Vec3::new(7.0, 9.0, -10.0); - next.control.orientation = Quaternion::rotation_x(test * 0.02) - * Quaternion::rotation_y(test * 0.02) - * Quaternion::rotation_z(test * 0.02); - - next.main.position = Vec3::new(0.0, 0.0, 0.0); - next.main.orientation = Quaternion::rotation_y(0.0); next.hold.scale = Vec3::one() * 0.0; - if velocity > 0.5 { - next.head.position = Vec3::new(0.0, s_a.head.0, s_a.head.1) * 1.02; - next.head.orientation = - Quaternion::rotation_z(short * -0.18) * Quaternion::rotation_x(-0.05); + next.main.position = Vec3::new(0.0, 0.0, 0.0); + next.main.orientation = Quaternion::rotation_x(0.0); - next.upper_torso.position = - Vec3::new(0.0, s_a.upper_torso.0, s_a.upper_torso.1 + shortalt * -1.5); - next.upper_torso.orientation = Quaternion::rotation_z(short * 0.18); + next.hand_l.position = Vec3::new(0.0, 0.0, s_a.grip); + next.hand_r.position = Vec3::new(0.0, 0.0, s_a.grip); - next.lower_torso.position = Vec3::new(0.0, s_a.lower_torso.0, s_a.lower_torso.1); - next.lower_torso.orientation = - Quaternion::rotation_z(short * 0.15) * Quaternion::rotation_x(0.14); - - next.tail.position = Vec3::new(0.0, s_a.tail.0, s_a.tail.1); - next.tail.orientation = Quaternion::rotation_z(0.0 + slow * 0.2 + tailmove.x) - * Quaternion::rotation_x(0.0); + next.hand_l.orientation = Quaternion::rotation_x(0.0); + next.hand_r.orientation = Quaternion::rotation_x(0.0); + if speed > 0.5 { next.shoulder_l.position = Vec3::new( -s_a.shoulder.0, - s_a.shoulder.1 + foothoril * -1.0, - s_a.shoulder.2, + s_a.shoulder.1, + s_a.shoulder.2 - foothorir * 1.0, ); - next.shoulder_l.orientation = Quaternion::rotation_x(0.5 + footrotl * -0.16) - * Quaternion::rotation_y(0.1) - * Quaternion::rotation_z(footrotl * 0.1); + next.shoulder_l.orientation = + Quaternion::rotation_x(0.6 * speednorm + (footrotr * -0.2) * speednorm); next.shoulder_r.position = Vec3::new( s_a.shoulder.0, - s_a.shoulder.1 + foothorir * -1.0, - s_a.shoulder.2, + s_a.shoulder.1, + s_a.shoulder.2 - foothoril * 1.0, ); - next.shoulder_r.orientation = Quaternion::rotation_x(0.5 + footrotr * -0.16) - * Quaternion::rotation_y(-0.1) - * Quaternion::rotation_z(footrotr * -0.1); - - next.torso.position = Vec3::new(0.0, 0.0, 0.0) / 8.0; - next.torso.orientation = - Quaternion::rotation_z(0.0) * Quaternion::rotation_x(-0.25); + next.shoulder_r.orientation = + Quaternion::rotation_x(0.6 * speednorm + (footrotl * -0.2) * speednorm); } else { next.head.position = Vec3::new(0.0, s_a.head.0, s_a.head.1) * 1.02; next.head.orientation = @@ -189,91 +149,105 @@ impl Animation for WieldAnimation { next.shoulder_l.position = Vec3::new(-s_a.shoulder.0, s_a.shoulder.1, s_a.shoulder.2); next.shoulder_l.orientation = - Quaternion::rotation_z(0.0) * Quaternion::rotation_x(0.0); + Quaternion::rotation_y(0.0) * Quaternion::rotation_x(0.3); next.shoulder_r.position = Vec3::new(s_a.shoulder.0, s_a.shoulder.1, s_a.shoulder.2); - - next.control.position = Vec3::new(7.0, 9.0, -10.0); - next.control.orientation = Quaternion::rotation_x(test * 0.02) - * Quaternion::rotation_y(test * 0.02) - * Quaternion::rotation_z(test * 0.02); + next.shoulder_r.orientation = + Quaternion::rotation_y(0.0) * Quaternion::rotation_x(0.3); } match active_tool_kind { - Some(ToolKind::Sword) => { - next.hand_l.position = Vec3::new(s_a.shl.0, s_a.shl.1, s_a.shl.2); - next.hand_l.orientation = - Quaternion::rotation_x(s_a.shl.3) * Quaternion::rotation_y(s_a.shl.4); - next.hand_r.position = Vec3::new(s_a.shr.0, s_a.shr.1, s_a.shr.2); - next.hand_r.orientation = - Quaternion::rotation_x(s_a.shr.3) * Quaternion::rotation_y(s_a.shr.4); - next.main.position = Vec3::new(0.0, 0.0, 0.0); - next.main.orientation = Quaternion::rotation_y(0.0); + Some(ToolKind::SwordSimple) => { + next.control_l.position = Vec3::new(-1.0, 1.0, 1.0); + next.control_r.position = Vec3::new(0.0, 2.0, -3.0); - next.control.position = Vec3::new(s_a.sc.0, s_a.sc.1, s_a.sc.2); - next.control.orientation = Quaternion::rotation_x(u_slow * 0.15) - * Quaternion::rotation_z(u_slowalt * 0.08); + next.control.position = Vec3::new( + -3.0, + 5.0 + s_a.grip / 1.2, + -4.0 + -s_a.grip / 2.0 + short * -1.5, + ); + + next.control_l.orientation = + Quaternion::rotation_x(PI / 2.0) * Quaternion::rotation_y(-0.2); + next.control_r.orientation = Quaternion::rotation_x(PI / 2.2) + * Quaternion::rotation_y(0.2) + * Quaternion::rotation_z(0.0); + + next.control.orientation = + Quaternion::rotation_x(-0.2 + short * 0.2) * Quaternion::rotation_y(-0.1); }, - Some(ToolKind::Bow) => { - next.hand_l.position = Vec3::new(s_a.bhl.0, s_a.bhl.1, s_a.bhl.2); - next.hand_l.orientation = Quaternion::rotation_x(s_a.bhl.3) - * Quaternion::rotation_y(s_a.bhl.4) - * Quaternion::rotation_z(s_a.bhl.5); - next.hand_r.position = Vec3::new(s_a.bhr.0, s_a.bhr.1, s_a.bhr.2); - next.hand_r.orientation = Quaternion::rotation_x(s_a.bhr.3) - * Quaternion::rotation_y(s_a.bhr.4) - * Quaternion::rotation_z(s_a.bhr.5); - next.main.position = Vec3::new(0.0, 0.0, 0.0); - next.main.orientation = Quaternion::rotation_y(0.0); + Some(ToolKind::BowSimple) | Some(ToolKind::Bow) => { + next.control_l.position = Vec3::new(-1.0, -2.0, -3.0); + next.control_r.position = Vec3::new(0.0, 4.0, 1.0); - next.hold.position = Vec3::new(0.0, -1.0, -15.2); - next.hold.orientation = Quaternion::rotation_x(-1.57); - next.hold.scale = Vec3::one() * 1.0; + next.control.position = Vec3::new( + -1.0, + 6.0 + s_a.grip / 1.2, + -5.0 + -s_a.grip / 2.0 + short * -1.5, + ); - next.control.position = Vec3::new(s_a.bc.0, s_a.bc.1, s_a.bc.2 - 5.0); - next.control.orientation = Quaternion::rotation_x(u_slow * 0.06) - * Quaternion::rotation_y(s_a.bc.4) - * Quaternion::rotation_z(s_a.bc.5 + u_slowalt * 0.1); + next.control_l.orientation = + Quaternion::rotation_x(PI / 2.0) * Quaternion::rotation_y(-0.2); + next.control_r.orientation = Quaternion::rotation_x(PI / 2.2) + * Quaternion::rotation_y(0.2) + * Quaternion::rotation_z(0.0); + + next.control.orientation = Quaternion::rotation_x(-0.2 + short * 0.2) + * Quaternion::rotation_y(1.0) + * Quaternion::rotation_z(-0.3); }, - Some(ToolKind::Hammer) => { - next.hand_l.position = Vec3::new(s_a.hhl.0, s_a.hhl.1, s_a.hhl.2); - next.hand_l.orientation = Quaternion::rotation_x(s_a.hhl.3) - * Quaternion::rotation_y(s_a.hhl.4) - * Quaternion::rotation_z(s_a.hhl.5); + Some(ToolKind::HammerSimple) | Some(ToolKind::AxeSimple) => { + next.control_l.position = Vec3::new(-1.0, 2.0, 12.0); + next.control_r.position = Vec3::new(1.0, 2.0, -2.0); - next.hand_r.position = Vec3::new(s_a.hhr.0, s_a.hhr.1, s_a.hhr.2); - next.hand_r.orientation = Quaternion::rotation_x(s_a.hhr.3) - * Quaternion::rotation_y(s_a.hhr.4) - * Quaternion::rotation_z(s_a.hhr.5); + next.control.position = + Vec3::new(4.0, 0.0 + s_a.grip / 1.0, -s_a.grip / 0.8 + short * -1.5); - next.control.position = Vec3::new(s_a.hc.0, s_a.hc.1, s_a.hc.2); - next.control.orientation = Quaternion::rotation_x(s_a.hc.3 + test * 0.02) - * Quaternion::rotation_y(s_a.hc.4 + test * 0.02) - * Quaternion::rotation_z(s_a.hc.5 + test * 0.02); + next.control_l.orientation = + Quaternion::rotation_x(PI / 2.0) * Quaternion::rotation_y(-0.0); + next.control_r.orientation = Quaternion::rotation_x(PI / 2.0 + 0.2) + * Quaternion::rotation_y(0.0) + * Quaternion::rotation_z(0.0); - next.main.position = Vec3::new(0.0, 0.0, 0.0); - next.main.orientation = Quaternion::rotation_y(0.0); + next.control.orientation = + Quaternion::rotation_x(-1.0 + short * 0.2) * Quaternion::rotation_y(-1.8); }, - Some(ToolKind::Staff) => { - next.hand_l.position = Vec3::new(s_a.sthl.0, s_a.sthl.1, s_a.sthl.2); - next.hand_l.orientation = - Quaternion::rotation_x(s_a.sthl.3) * Quaternion::rotation_y(s_a.sthl.4); - next.hand_r.position = Vec3::new(s_a.sthr.0, s_a.sthr.1, s_a.sthr.2); - next.hand_r.orientation = - Quaternion::rotation_x(s_a.sthr.3) * Quaternion::rotation_y(s_a.sthr.4); + Some(ToolKind::StaffSimple) => { + next.control_l.position = Vec3::new(-1.0, 3.0, 12.0); + next.control_r.position = Vec3::new(1.0, 2.0, 2.0); - next.shoulder_r.position = - Vec3::new(s_a.shoulder.0, s_a.shoulder.1, s_a.shoulder.2); - next.shoulder_r.orientation = - Quaternion::rotation_z(0.4) * Quaternion::rotation_x(1.0); + next.control.position = Vec3::new( + -3.0, + 3.0 + s_a.grip / 1.2, + -11.0 + -s_a.grip / 2.0 + short * -1.5, + ); - next.main.position = Vec3::new(0.0, 0.0, 0.0); - next.main.orientation = Quaternion::rotation_y(0.0); + next.control_l.orientation = + Quaternion::rotation_x(PI / 2.0) * Quaternion::rotation_y(-0.5); + next.control_r.orientation = Quaternion::rotation_x(PI / 2.5) + * Quaternion::rotation_y(0.5) + * Quaternion::rotation_z(0.0); - next.control.position = Vec3::new(s_a.stc.0, s_a.stc.1, s_a.stc.2); - next.control.orientation = Quaternion::rotation_x(-0.3 + u_slow * 0.1) - * Quaternion::rotation_y(0.15) - * Quaternion::rotation_z(u_slowalt * 0.08); + next.control.orientation = + Quaternion::rotation_x(-0.2 + short * 0.2) * Quaternion::rotation_y(-0.1); + }, + Some(ToolKind::Unique(UniqueKind::WendigoMagic)) => { + next.control_l.position = Vec3::new(-9.0, 19.0, -13.0); + next.control_r.position = Vec3::new(9.0, 19.0, -13.0); + + next.control_l.orientation = + Quaternion::rotation_x(PI / 3.0) * Quaternion::rotation_y(-0.15); + next.control_r.orientation = + Quaternion::rotation_x(PI / 3.0) * Quaternion::rotation_y(0.15); + }, + Some(ToolKind::Unique(UniqueKind::TidalClaws)) => { + next.control_l.position = Vec3::new(-14.0, 12.0, -12.0); + next.control_r.position = Vec3::new(14.0, 12.0, -12.0); + + next.control_l.orientation = + Quaternion::rotation_x(PI / 3.0) * Quaternion::rotation_y(-0.15); + next.control_r.orientation = + Quaternion::rotation_x(PI / 3.0) * Quaternion::rotation_y(0.15); }, Some(ToolKind::Unique(UniqueKind::BeastClaws)) => { next.shoulder_l.position = @@ -288,7 +262,7 @@ impl Animation for WieldAnimation { next.hand_r.position = Vec3::new(s_a.hand.0, s_a.hand.1, s_a.hand.2 + torso * 0.6); - if velocity < 0.5 { + if speed < 0.5 { next.head.position = Vec3::new(0.0, s_a.head.0, s_a.head.1 + torso * 0.2) * 1.02; next.head.orientation = Quaternion::rotation_z(look.x * 0.6) diff --git a/voxygen/anim/src/biped_small/alpha.rs b/voxygen/anim/src/biped_small/alpha.rs new file mode 100644 index 0000000000..a642217e63 --- /dev/null +++ b/voxygen/anim/src/biped_small/alpha.rs @@ -0,0 +1,112 @@ +use super::{ + super::{vek::*, Animation}, + BipedSmallSkeleton, SkeletonAttr, +}; +use common::states::utils::StageSection; +use std::f32::consts::PI; + +pub struct AlphaAnimation; + +type AlphaAnimationDependency = ( + Vec3, + Vec3, + Vec3, + f64, + Vec3, + f32, + Option, + f64, +); + +impl Animation for AlphaAnimation { + type Dependency = AlphaAnimationDependency; + type Skeleton = BipedSmallSkeleton; + + #[cfg(feature = "use-dyn-lib")] + const UPDATE_FN: &'static [u8] = b"biped_small_alpha\0"; + + #[cfg_attr(feature = "be-dyn-lib", export_name = "biped_small_alpha")] + + fn update_skeleton_inner( + skeleton: &Self::Skeleton, + ( + velocity, + _orientation, + _last_ori, + _global_time, + _avg_vel, + _acc_vel, + stage_section, + _timer, + ): Self::Dependency, + anim_time: f64, + _rate: &mut f32, + s_a: &SkeletonAttr, + ) -> Self::Skeleton { + let mut next = (*skeleton).clone(); + let speed = Vec2::::from(velocity).magnitude(); + + let fast = (anim_time as f32 * 10.0).sin(); + let fastalt = (anim_time as f32 * 10.0 + PI / 2.0).sin(); + + let speednorm = speed / 9.4; + let speednormcancel = 1.0 - speednorm; + let anim_time = anim_time.min(1.0); + let (move1base, move2base, move3) = match stage_section { + Some(StageSection::Buildup) => ((anim_time as f32).sqrt(), 0.0, 0.0), + Some(StageSection::Swing) => (1.0, (anim_time as f32).powi(4), 0.0), + Some(StageSection::Recover) => (1.0, 1.0, anim_time as f32), + _ => (0.0, 0.0, 0.0), + }; + let pullback = 1.0 - move3; + let move1abs = move1base * pullback; + let move2abs = move2base * pullback; + + next.head.position = Vec3::new(0.0, s_a.head.0, s_a.head.1); + next.head.orientation = Quaternion::rotation_x(move1abs * 0.2 + move2abs * 0.3) + * Quaternion::rotation_z(move1abs * -0.2 + move2abs * 0.6) + * Quaternion::rotation_y(move1abs * 0.3 + move2abs * -0.5); + next.chest.position = Vec3::new(0.0, s_a.chest.0, s_a.chest.1) / 13.0; + next.chest.orientation = Quaternion::rotation_x(move1abs * -0.2 + move2abs * 0.3) + * Quaternion::rotation_z(move1abs * 0.5 + move2abs * -0.6); + + next.pants.position = Vec3::new(0.0, s_a.pants.0, s_a.pants.1); + next.pants.orientation = Quaternion::rotation_x(move1abs * 0.2 + move2abs * -0.3) + * Quaternion::rotation_z(move1abs * -0.2 + move2abs * 0.2); + + next.main.position = Vec3::new(0.0, 0.0, 0.0); + next.main.orientation = Quaternion::rotation_x(0.0); + + next.hand_l.position = Vec3::new(s_a.grip.0 * 4.0, 0.0, s_a.grip.2); + next.hand_r.position = Vec3::new(-s_a.grip.0 * 4.0, 0.0, s_a.grip.2); + + next.hand_l.orientation = Quaternion::rotation_x(0.0); + next.hand_r.orientation = Quaternion::rotation_x(0.0); + + next.control_l.position = Vec3::new(1.0 - s_a.grip.0 * 2.0, 2.0, -2.0); + next.control_r.position = Vec3::new(-1.0 + s_a.grip.0 * 2.0, 2.0, 2.0); + + next.control.position = Vec3::new( + -3.0 + move1abs * -3.0 + move2abs * 5.0, + s_a.grip.2 + move1abs * -12.0 + move2abs * 17.0, + -s_a.grip.2 / 2.5 + s_a.grip.0 * -2.0 + move2abs * 5.0, + ); + + next.control_l.orientation = + Quaternion::rotation_x(PI / 1.5 + move1abs * -1.5 + move2abs * 2.5) + * Quaternion::rotation_y(-0.3); + next.control_r.orientation = + Quaternion::rotation_x(PI / 1.5 + s_a.grip.0 * 0.2 + move1abs * -1.5 + move2abs * 2.5) + * Quaternion::rotation_y(0.5 + s_a.grip.0 * 0.2); + + next.control.orientation = Quaternion::rotation_x(-1.35 + move1abs * -0.3 + move2abs * 0.5) + * Quaternion::rotation_z(move1abs * 1.0 + move2abs * -1.0) + * Quaternion::rotation_y(move2abs * 0.0); + + next.tail.position = Vec3::new(0.0, s_a.tail.0, s_a.tail.1); + next.tail.orientation = Quaternion::rotation_x(0.05 * fastalt * speednormcancel) + * Quaternion::rotation_z(fast * 0.15 * speednormcancel); + + next + } +} diff --git a/voxygen/anim/src/biped_small/dash.rs b/voxygen/anim/src/biped_small/dash.rs new file mode 100644 index 0000000000..c3e325b9d8 --- /dev/null +++ b/voxygen/anim/src/biped_small/dash.rs @@ -0,0 +1,109 @@ +use super::{ + super::{vek::*, Animation}, + BipedSmallSkeleton, SkeletonAttr, +}; +use common::states::utils::StageSection; +use std::f32::consts::PI; + +pub struct DashAnimation; + +type DashAnimationDependency = ( + Vec3, + Vec3, + Vec3, + f64, + Vec3, + f32, + Option, + f64, +); + +impl Animation for DashAnimation { + type Dependency = DashAnimationDependency; + type Skeleton = BipedSmallSkeleton; + + #[cfg(feature = "use-dyn-lib")] + const UPDATE_FN: &'static [u8] = b"biped_small_dash\0"; + + #[cfg_attr(feature = "be-dyn-lib", export_name = "biped_small_dash")] + + fn update_skeleton_inner( + skeleton: &Self::Skeleton, + ( + velocity, + _orientation, + _last_ori, + _global_time, + _avg_vel, + _acc_vel, + stage_section, + _timer, + ): Self::Dependency, + anim_time: f64, + _rate: &mut f32, + s_a: &SkeletonAttr, + ) -> Self::Skeleton { + let mut next = (*skeleton).clone(); + let speed = Vec2::::from(velocity).magnitude(); + + let fast = (anim_time as f32 * 10.0).sin(); + let fastalt = (anim_time as f32 * 10.0 + PI / 2.0).sin(); + + let speednorm = speed / 9.4; + let speednormcancel = 1.0 - speednorm; + + let (move1base, move2base, move3, move4) = match stage_section { + Some(StageSection::Buildup) => ((anim_time as f32).sqrt(), 0.0, 0.0, 0.0), + Some(StageSection::Charge) => (1.0, (anim_time as f32).powi(4), 0.0, 0.0), + Some(StageSection::Swing) => (1.0, 1.0, (anim_time as f32).powi(4), 0.0), + Some(StageSection::Recover) => (1.0, 1.0, 1.0, anim_time as f32), + _ => (0.0, 0.0, 0.0, 0.0), + }; + let pullback = 1.0 - move4; + let move1abs = move1base * pullback; + let move2abs = move2base * pullback; + + next.head.position = Vec3::new(0.0, s_a.head.0, s_a.head.1); + next.head.orientation = Quaternion::rotation_x(move1abs * 0.6) + * Quaternion::rotation_z(move1abs * -0.0) + * Quaternion::rotation_y(move1abs * 0.3); + next.chest.orientation = Quaternion::rotation_x(move1abs * -0.8); + + next.pants.orientation = Quaternion::rotation_x(move1abs * -0.2); + + next.main.position = Vec3::new(0.0, 0.0, 0.0); + next.main.orientation = Quaternion::rotation_x(0.0); + + next.hand_l.position = Vec3::new(s_a.grip.0 * 4.0, 0.0, s_a.grip.2); + next.hand_r.position = Vec3::new(-s_a.grip.0 * 4.0, 0.0, s_a.grip.2); + + next.hand_l.orientation = Quaternion::rotation_x(0.0); + next.hand_r.orientation = Quaternion::rotation_x(0.0); + + next.control_l.position = Vec3::new(1.0 - s_a.grip.0 * 2.0, 2.0, -2.0); + next.control_r.position = Vec3::new(-1.0 + s_a.grip.0 * 2.0, 2.0, 2.0); + + next.control.position = Vec3::new( + -3.0, + s_a.grip.2 + move1abs * -5.0, + -s_a.grip.2 / 2.5 + s_a.grip.0 * -2.0 + move1abs * 4.0, + ); + + next.control_l.orientation = + Quaternion::rotation_x(PI / 1.5 + move1abs * -0.7 + move3 * 0.7) + * Quaternion::rotation_y(-0.3); + next.control_r.orientation = + Quaternion::rotation_x(PI / 1.5 + s_a.grip.0 * 0.2 + move1abs * -0.7 + move3 * 0.7) + * Quaternion::rotation_y(0.5 + s_a.grip.0 * 0.2); + + next.control.orientation = Quaternion::rotation_x(-1.35 + move1abs * 0.6) + * Quaternion::rotation_z(move1abs * 0.2) + * Quaternion::rotation_y(move2abs * 0.0); + + next.tail.position = Vec3::new(0.0, s_a.tail.0, s_a.tail.1); + next.tail.orientation = Quaternion::rotation_x(0.05 * fastalt * speednormcancel) + * Quaternion::rotation_z(fast * 0.15 * speednormcancel); + + next + } +} diff --git a/voxygen/anim/src/biped_small/idle.rs b/voxygen/anim/src/biped_small/idle.rs new file mode 100644 index 0000000000..740114c55c --- /dev/null +++ b/voxygen/anim/src/biped_small/idle.rs @@ -0,0 +1,49 @@ +use super::{ + super::{vek::*, Animation}, + BipedSmallSkeleton, SkeletonAttr, +}; + +pub struct IdleAnimation; + +type IdleAnimationDependency = (Vec3, Vec3, Vec3, f64, Vec3); + +impl Animation for IdleAnimation { + type Dependency = IdleAnimationDependency; + type Skeleton = BipedSmallSkeleton; + + #[cfg(feature = "use-dyn-lib")] + const UPDATE_FN: &'static [u8] = b"biped_small_idle\0"; + + #[cfg_attr(feature = "be-dyn-lib", export_name = "biped_small_idle")] + + fn update_skeleton_inner( + skeleton: &Self::Skeleton, + (_velocity, _orientation, _last_ori, _global_time, _avg_vel): Self::Dependency, + anim_time: f64, + _rate: &mut f32, + s_a: &SkeletonAttr, + ) -> Self::Skeleton { + let mut next = (*skeleton).clone(); + let slow = (anim_time as f32 * 4.0).sin(); + + next.foot_l.scale = Vec3::one() * s_a.scaler / 11.0; + next.foot_r.scale = Vec3::one() * s_a.scaler / 11.0; + + next.chest.scale = Vec3::one() * s_a.scaler / 11.0; + next.head.position = Vec3::new(0.0, s_a.head.0, s_a.head.1 + slow * -0.1); + + next.chest.position = + Vec3::new(0.0, s_a.chest.0, s_a.chest.1 + slow * 0.3) * s_a.scaler / 11.0; + next.pants.position = Vec3::new(0.0, s_a.pants.0, s_a.pants.1); + next.main.position = Vec3::new(2.0, -3.0, -3.0); + next.main.orientation = Quaternion::rotation_y(-0.5) * Quaternion::rotation_z(1.57); + + next.tail.position = Vec3::new(0.0, s_a.tail.0, s_a.tail.1); + next.hand_l.position = Vec3::new(-s_a.hand.0, s_a.hand.1, s_a.hand.2 + slow * -0.1); + next.hand_r.position = Vec3::new(s_a.hand.0, s_a.hand.1, s_a.hand.2 + slow * -0.1); + next.foot_l.position = Vec3::new(-s_a.foot.0, s_a.foot.1, s_a.foot.2) * s_a.scaler / 11.0; + next.foot_r.position = Vec3::new(s_a.foot.0, s_a.foot.1, s_a.foot.2) * s_a.scaler / 11.0; + + next + } +} diff --git a/voxygen/anim/src/biped_small/mod.rs b/voxygen/anim/src/biped_small/mod.rs new file mode 100644 index 0000000000..8eb9e2cf38 --- /dev/null +++ b/voxygen/anim/src/biped_small/mod.rs @@ -0,0 +1,209 @@ +pub mod alpha; +pub mod dash; +pub mod idle; +pub mod run; +pub mod shoot; +pub mod wield; + +// Reexports +pub use self::{ + alpha::AlphaAnimation, dash::DashAnimation, idle::IdleAnimation, run::RunAnimation, + shoot::ShootAnimation, wield::WieldAnimation, +}; + +use super::{make_bone, vek::*, FigureBoneData, Skeleton}; +use common::comp::{self}; +use core::convert::TryFrom; + +pub type Body = comp::biped_small::Body; + +skeleton_impls!(struct BipedSmallSkeleton { + + head, + + chest, + + pants, + + tail, + + main, + + hand_l, + + hand_r, + + foot_l, + + foot_r, + control, + control_l, + control_r, + +}); + +impl Skeleton for BipedSmallSkeleton { + type Attr = SkeletonAttr; + type Body = Body; + + const BONE_COUNT: usize = 9; + #[cfg(feature = "use-dyn-lib")] + const COMPUTE_FN: &'static [u8] = b"biped_small_compute_mats\0"; + + #[cfg_attr(feature = "be-dyn-lib", export_name = "biped_small_compute_mats")] + fn compute_matrices_inner( + &self, + base_mat: Mat4, + buf: &mut [FigureBoneData; super::MAX_BONE_COUNT], + ) -> Vec3 { + let chest_mat = base_mat * Mat4::::from(self.chest); + let pants_mat = chest_mat * Mat4::::from(self.pants); + let control_mat = chest_mat * Mat4::::from(self.control); + let control_l_mat = Mat4::::from(self.control_l); + let control_r_mat = Mat4::::from(self.control_r); + *(<&mut [_; Self::BONE_COUNT]>::try_from(&mut buf[0..Self::BONE_COUNT]).unwrap()) = [ + make_bone(chest_mat * Mat4::::from(self.head)), + make_bone(chest_mat), + make_bone(pants_mat), + make_bone(pants_mat * Mat4::::from(self.tail)), + make_bone(control_mat * Mat4::::from(self.main)), + make_bone(control_mat * control_l_mat * Mat4::::from(self.hand_l)), + make_bone(control_mat * control_r_mat * Mat4::::from(self.hand_r)), + make_bone(base_mat * Mat4::::from(self.foot_l)), + make_bone(base_mat * Mat4::::from(self.foot_r)), + ]; + Vec3::default() + } +} + +pub struct SkeletonAttr { + head: (f32, f32), + chest: (f32, f32), + pants: (f32, f32), + tail: (f32, f32), + hand: (f32, f32, f32), + foot: (f32, f32, f32), + grip: (f32, f32, f32), + scaler: f32, +} + +impl<'a> std::convert::TryFrom<&'a comp::Body> for SkeletonAttr { + type Error = (); + + fn try_from(body: &'a comp::Body) -> Result { + match body { + comp::Body::BipedSmall(body) => Ok(SkeletonAttr::from(body)), + _ => Err(()), + } + } +} + +impl Default for SkeletonAttr { + fn default() -> Self { + Self { + head: (0.0, 0.0), + chest: (0.0, 0.0), + pants: (0.0, 0.0), + tail: (0.0, 0.0), + hand: (0.0, 0.0, 0.0), + foot: (0.0, 0.0, 0.0), + grip: (0.0, 0.0, 0.0), + scaler: 0.0, + } + } +} + +impl<'a> From<&'a Body> for SkeletonAttr { + fn from(body: &'a Body) -> Self { + use comp::biped_small::Species::*; + Self { + head: match (body.species, body.body_type) { + (Gnome, _) => (-1.0, 9.0), + (Sahagin, _) => (7.0, -3.5), + (Adlet, _) => (0.0, 7.0), + (Gnarling, _) => (0.0, 6.0), + (Mandragora, _) => (-1.0, 9.0), + (Kappa, _) => (8.0, 3.5), + (Cactid, _) => (0.0, 7.0), + (Gnoll, _) => (5.5, -1.0), + (Haniwa, _) => (0.0, 7.0), + (Myrmidon, _) => (0.0, 8.0), + }, + chest: match (body.species, body.body_type) { + (Gnome, _) => (0.0, 9.0), + (Sahagin, _) => (0.0, 15.0), + (Adlet, _) => (0.0, 11.0), + (Gnarling, _) => (0.0, 7.5), + (Mandragora, _) => (0.0, 10.5), + (Kappa, _) => (0.0, 14.5), + (Cactid, _) => (0.0, 7.0), + (Gnoll, _) => (0.0, 15.5), + (Haniwa, _) => (0.0, 11.0), + (Myrmidon, _) => (0.0, 11.0), + }, + pants: match (body.species, body.body_type) { + (Gnome, _) => (0.0, -3.0), + (Sahagin, _) => (0.5, -7.0), + (Adlet, _) => (0.0, -3.0), + (Gnarling, _) => (0.0, -3.0), + (Mandragora, _) => (0.0, -6.5), + (Kappa, _) => (0.0, -3.0), + (Cactid, _) => (0.0, -3.0), + (Gnoll, _) => (0.5, -7.5), + (Haniwa, _) => (0.0, -3.5), + (Myrmidon, _) => (0.0, -3.0), + }, + tail: match (body.species, body.body_type) { + (Gnome, _) => (0.0, 0.0), + (Sahagin, _) => (-2.5, -2.0), + (Adlet, _) => (-4.5, -2.0), + (Gnarling, _) => (-2.0, 1.5), + (Mandragora, _) => (0.0, -1.0), + (Kappa, _) => (0.0, -4.0), + (Cactid, _) => (0.0, 0.0), + (Gnoll, _) => (-2.5, -2.0), + (Haniwa, _) => (-4.5, -2.0), + (Myrmidon, _) => (-2.5, -1.0), + }, + hand: match (body.species, body.body_type) { + (Gnome, _) => (4.0, 0.5, -1.0), + (Sahagin, _) => (3.5, 3.5, -2.0), + (Adlet, _) => (4.5, -0.5, 2.0), + (Gnarling, _) => (4.0, 0.0, 1.5), + (Mandragora, _) => (4.0, -0.5, -2.5), + (Kappa, _) => (4.0, 3.5, -0.5), + (Cactid, _) => (4.0, 0.5, -1.0), + (Gnoll, _) => (3.5, 0.5, -1.0), + (Haniwa, _) => (4.25, -1.0, 1.5), + (Myrmidon, _) => (3.5, 1.5, 2.0), + }, + foot: match (body.species, body.body_type) { + (Gnome, _) => (3.0, 0.0, 4.0), + (Sahagin, _) => (3.0, 1.0, 8.0), + (Adlet, _) => (3.0, 0.5, 7.0), + (Gnarling, _) => (2.5, 1.0, 5.0), + (Mandragora, _) => (3.0, 0.0, 4.0), + (Kappa, _) => (3.0, 3.0, 9.0), + (Cactid, _) => (3.0, 0.0, 5.0), + (Gnoll, _) => (3.0, 1.0, 7.0), + (Haniwa, _) => (3.0, 0.5, 8.0), + (Myrmidon, _) => (3.0, 0.5, 7.0), + }, + grip: match (body.species, body.body_type) { + (Gnome, _) => (0.0, 0.0, 5.0), + (Sahagin, _) => (1.0, 0.0, 13.0), + (Adlet, _) => (0.0, 0.0, 7.0), + (Gnarling, _) => (0.0, 0.0, 7.0), + (Mandragora, _) => (0.0, 0.0, 7.0), + (Kappa, _) => (0.75, 1.0, 12.0), + (Cactid, _) => (0.0, 0.0, 8.0), + (Gnoll, _) => (1.0, 0.0, 9.0), + (Haniwa, _) => (0.0, 0.5, 8.0), + (Myrmidon, _) => (0.0, 0.0, 8.0), + }, + scaler: match (body.species, body.body_type) { + (Gnome, _) => 1.0, + (Sahagin, _) => 1.3, + (Adlet, _) => 1.2, + (Gnarling, _) => 1.0, + (Mandragora, _) => 1.0, + (Kappa, _) => 1.0, + (Cactid, _) => 1.0, + (Gnoll, _) => 1.0, + (Haniwa, _) => 1.4, + (Myrmidon, _) => 1.5, + }, + } + } +} diff --git a/voxygen/anim/src/biped_small/run.rs b/voxygen/anim/src/biped_small/run.rs new file mode 100644 index 0000000000..c6110aece5 --- /dev/null +++ b/voxygen/anim/src/biped_small/run.rs @@ -0,0 +1,173 @@ +use super::{ + super::{vek::*, Animation}, + BipedSmallSkeleton, SkeletonAttr, +}; +use std::{f32::consts::PI, ops::Mul}; + +pub struct RunAnimation; + +type RunAnimationDependency = (Vec3, Vec3, Vec3, f64, Vec3, f32); + +impl Animation for RunAnimation { + type Dependency = RunAnimationDependency; + type Skeleton = BipedSmallSkeleton; + + #[cfg(feature = "use-dyn-lib")] + const UPDATE_FN: &'static [u8] = b"biped_small_run\0"; + + #[cfg_attr(feature = "be-dyn-lib", export_name = "biped_small_run")] + + fn update_skeleton_inner( + skeleton: &Self::Skeleton, + (velocity, orientation, last_ori, global_time, _avg_vel, acc_vel): Self::Dependency, + anim_time: f64, + rate: &mut f32, + s_a: &SkeletonAttr, + ) -> Self::Skeleton { + let mut next = (*skeleton).clone(); + let speed = Vec2::::from(velocity).magnitude(); + *rate = 1.0; + let speednorm = (speed / 9.4).powf(0.4); + + let lab = 1.0; + + let footrotl = (((5.0) + / (0.5 + (5.5) * ((acc_vel * 1.4 * lab as f32 + PI * 1.4).sin()).powi(2))) + .sqrt()) + * ((acc_vel * 1.4 * lab as f32 + PI * 1.4).sin()); + + let footrotr = (((5.0) + / (0.5 + (5.5) * ((acc_vel * 1.4 * lab as f32 + PI * 0.4).sin()).powi(2))) + .sqrt()) + * ((acc_vel * 1.4 * lab as f32 + PI * 0.4).sin()); + + let shortalter = (acc_vel * lab as f32 * 1.4 + PI / -2.0).sin(); + + let foothoril = (acc_vel * 1.4 * lab as f32 + PI * 1.45).sin(); + let foothorir = (acc_vel * 1.4 * lab as f32 + PI * (0.45)).sin(); + let footstrafel = (acc_vel * 1.4 * lab as f32 + PI * 1.45).sin(); + let footstrafer = (acc_vel * 1.4 * lab as f32 + PI * (0.95)).sin(); + + let footvertl = (acc_vel * 1.4 * lab as f32).sin(); + let footvertr = (acc_vel * 1.4 * lab as f32 + PI).sin(); + let footvertsl = (acc_vel * 1.4 * lab as f32).sin(); + let footvertsr = (acc_vel * 1.4 * lab as f32 + PI * 0.5).sin(); + + let shortalt = (acc_vel * lab as f32 * 1.4 + PI / 2.0).sin(); + + let short = (((5.0) / (1.5 + 3.5 * ((acc_vel * lab as f32 * 1.4).sin()).powi(2))).sqrt()) + * ((acc_vel * lab as f32 * 1.4).sin()); + let direction = velocity.y * -0.098 * orientation.y + velocity.x * -0.098 * orientation.x; + + let side = + (velocity.x * -0.098 * orientation.y + velocity.y * 0.098 * orientation.x) * -1.0; + let sideabs = side.abs(); + let ori: Vec2 = Vec2::from(orientation); + let last_ori = Vec2::from(last_ori); + let tilt = if ::vek::Vec2::new(ori, last_ori) + .map(|o| o.magnitude_squared()) + .map(|m| m > 0.001 && m.is_finite()) + .reduce_and() + && ori.angle_between(last_ori).is_finite() + { + ori.angle_between(last_ori).min(0.2) + * last_ori.determine_side(Vec2::zero(), ori).signum() + } else { + 0.0 + } * 1.3; + + let head_look = Vec2::new( + ((global_time + anim_time) as f32 / 18.0) + .floor() + .mul(7331.0) + .sin() + * 0.2, + ((global_time + anim_time) as f32 / 18.0) + .floor() + .mul(1137.0) + .sin() + * 0.1, + ); + next.chest.scale = Vec3::one() * s_a.scaler / 11.0; + next.foot_l.scale = Vec3::one() * s_a.scaler / 11.0; + next.foot_r.scale = Vec3::one() * s_a.scaler / 11.0; + next.head.position = Vec3::new(0.0, -1.0 + s_a.head.0, s_a.head.1 + short * 0.1); + next.head.orientation = + Quaternion::rotation_z(tilt * -2.5 + head_look.x * 0.2 - short * 0.02) + * Quaternion::rotation_x(head_look.y + 0.45 * speednorm); + + next.chest.position = Vec3::new( + 0.0, + s_a.chest.0, + s_a.chest.1 + 1.0 * speednorm + shortalt * -0.8, + ) * s_a.scaler + / 11.0; + next.chest.orientation = Quaternion::rotation_z(short * 0.06 + tilt * -0.6) + * Quaternion::rotation_y(tilt * 1.6) + * Quaternion::rotation_x(shortalter * 0.035 + speednorm * -0.4 + (tilt.abs())); + next.main.position = Vec3::new(2.0, -3.0, -3.0); + next.main.orientation = Quaternion::rotation_y(-0.5) * Quaternion::rotation_z(1.57); + + next.pants.position = Vec3::new(0.0, s_a.pants.0, s_a.pants.1); + next.pants.orientation = Quaternion::rotation_x(0.1 * speednorm) + * Quaternion::rotation_z(short * 0.25 + tilt * -1.5) + * Quaternion::rotation_y(tilt * 0.7); + + next.hand_l.position = Vec3::new( + -s_a.hand.0 + footrotr * -1.3 * speednorm, + 1.0 * speednorm + s_a.hand.1 + footrotr * -2.5 * speednorm, + s_a.hand.2 - footrotr * 1.5 * speednorm, + ); + next.hand_l.orientation = + Quaternion::rotation_x(0.4 * speednorm + (footrotr * -1.2) * speednorm) + * Quaternion::rotation_y(footrotr * 0.4 * speednorm); + + next.hand_r.position = Vec3::new( + s_a.hand.0 + footrotl * 1.3 * speednorm, + 1.0 * speednorm + s_a.hand.1 + footrotl * -2.5 * speednorm, + s_a.hand.2 - footrotl * 1.5 * speednorm, + ); + next.hand_r.orientation = + Quaternion::rotation_x(0.4 * speednorm + (footrotl * -1.2) * speednorm) + * Quaternion::rotation_y(footrotl * -0.4 * speednorm); + + // + next.foot_l.position = Vec3::new( + -s_a.foot.0 + footstrafel * sideabs * 3.0 + tilt * -2.0, + s_a.foot.1 + + (1.0 - sideabs) * (-1.0 * speednorm + footrotl * -2.5 * speednorm) + + (direction * 5.0).max(0.0), + s_a.foot.2 + + (1.0 - sideabs) * (2.0 * speednorm + ((footvertl * -1.1 * speednorm).max(-1.0))) + + side * ((footvertsl * 1.5).max(-1.0)), + ) * s_a.scaler + / 11.0; + next.foot_l.orientation = Quaternion::rotation_x( + (1.0 - sideabs) * (-0.2 * speednorm + foothoril * -0.9 * speednorm) + sideabs * -0.5, + ) * Quaternion::rotation_y( + tilt * 2.0 + side * 0.3 + side * (foothoril * 0.3), + ) * Quaternion::rotation_z(side * 0.2); + + next.foot_r.position = Vec3::new( + s_a.foot.0 + footstrafer * sideabs * 3.0 + tilt * -2.0, + s_a.foot.1 + + (1.0 - sideabs) * (-1.0 * speednorm + footrotr * -2.5 * speednorm) + + (direction * 5.0).max(0.0), + s_a.foot.2 + + (1.0 - sideabs) * (2.0 * speednorm + ((footvertr * -1.1 * speednorm).max(-1.0))) + + side * ((footvertsr * -1.5).max(-1.0)), + ) * s_a.scaler + / 11.0; + next.foot_r.orientation = Quaternion::rotation_x( + (1.0 - sideabs) * (-0.2 * speednorm + foothorir * -0.9 * speednorm) + sideabs * -0.5, + ) * Quaternion::rotation_y( + tilt * 2.0 + side * 0.3 + side * (foothorir * 0.3), + ) * Quaternion::rotation_z(side * 0.2); + + next.head.scale = Vec3::one(); + + next.tail.position = Vec3::new(0.0, s_a.tail.0, s_a.tail.1); + + next + } +} diff --git a/voxygen/anim/src/biped_small/shoot.rs b/voxygen/anim/src/biped_small/shoot.rs new file mode 100644 index 0000000000..20a96336d8 --- /dev/null +++ b/voxygen/anim/src/biped_small/shoot.rs @@ -0,0 +1,153 @@ +use super::{ + super::{vek::*, Animation}, + BipedSmallSkeleton, SkeletonAttr, +}; +use common::{comp::item::ToolKind, states::utils::StageSection}; +use std::f32::consts::PI; + +pub struct ShootAnimation; + +type ShootAnimationDependency = ( + Option, + Vec3, + Vec3, + Vec3, + f64, + Vec3, + f32, + Option, + f64, +); + +impl Animation for ShootAnimation { + type Dependency = ShootAnimationDependency; + type Skeleton = BipedSmallSkeleton; + + #[cfg(feature = "use-dyn-lib")] + const UPDATE_FN: &'static [u8] = b"biped_small_shoot\0"; + + #[cfg_attr(feature = "be-dyn-lib", export_name = "biped_small_shoot")] + + fn update_skeleton_inner( + skeleton: &Self::Skeleton, + ( + active_tool_kind, + velocity, + _orientation, + _last_ori, + _global_time, + _avg_vel, + _acc_vel, + stage_section, + _timer, + ): Self::Dependency, + anim_time: f64, + _rate: &mut f32, + s_a: &SkeletonAttr, + ) -> Self::Skeleton { + let mut next = (*skeleton).clone(); + let speed = Vec2::::from(velocity).magnitude(); + + let fast = (anim_time as f32 * 10.0).sin(); + let fastalt = (anim_time as f32 * 10.0 + PI / 2.0).sin(); + + let speednorm = speed / 9.4; + let speednormcancel = 1.0 - speednorm; + + next.head.position = Vec3::new(0.0, s_a.head.0, s_a.head.1 + fast * -0.1 * speednormcancel); + next.head.orientation = Quaternion::rotation_x(0.45 * speednorm) + * Quaternion::rotation_y(fast * 0.07 * speednormcancel); + next.chest.position = Vec3::new( + 0.0, + s_a.chest.0, + s_a.chest.1 + fastalt * 0.4 * speednormcancel + speednormcancel * -0.5, + ) * s_a.scaler + / 11.0; + + next.pants.position = Vec3::new(0.0, s_a.pants.0, s_a.pants.1); + + next.tail.position = Vec3::new(0.0, s_a.tail.0, s_a.tail.1); + next.tail.orientation = Quaternion::rotation_x(0.05 * fastalt * speednormcancel) + * Quaternion::rotation_z(fast * 0.15 * speednormcancel); + + next.main.position = Vec3::new(0.0, 0.0, 0.0); + next.main.orientation = Quaternion::rotation_x(0.0); + + next.hand_l.position = Vec3::new(s_a.grip.0 * 4.0, 0.0, s_a.grip.2); + next.hand_r.position = Vec3::new(-s_a.grip.0 * 4.0, 0.0, s_a.grip.2); + + next.hand_l.orientation = Quaternion::rotation_x(0.0); + next.hand_r.orientation = Quaternion::rotation_x(0.0); + + match active_tool_kind { + Some(ToolKind::Bow) => { + let (move1base, move2base, move3) = match stage_section { + Some(StageSection::Buildup) => (anim_time as f32, 0.0, 0.0), + Some(StageSection::Swing) => (1.0, (anim_time as f32).powf(0.25), 0.0), + Some(StageSection::Recover) => (1.0, 1.0, anim_time as f32), + _ => (0.0, 0.0, 0.0), + }; + let pullback = 1.0 - move3; + let move1abs = move1base * pullback; + let move2abs = move2base * pullback; + next.control_l.position = Vec3::new( + 1.0 - s_a.grip.0 * 2.0 + move2abs * -4.0, + move2abs * -8.0, + 0.0, + ); + next.control_r.position = Vec3::new(-1.0 + s_a.grip.0 * 2.0, 6.0, -2.0); + + next.control.position = Vec3::new( + -1.0, + 2.0 + move1abs * 3.0 + s_a.grip.2, + 3.0 + move1abs * 7.0 - s_a.grip.2 / 2.5 + s_a.grip.0 * -2.0, + ); + + next.control_l.orientation = + Quaternion::rotation_x(PI / 2.0) * Quaternion::rotation_y(-0.3); + next.control_r.orientation = Quaternion::rotation_x(PI / 2.0 + s_a.grip.0 * 0.2) + * Quaternion::rotation_y(0.5 + s_a.grip.0 * 0.2); + + next.control.orientation = Quaternion::rotation_x(-0.3 + move1abs * 0.4) + * Quaternion::rotation_y(0.5 * speednorm); + }, + Some(ToolKind::Staff) | Some(ToolKind::StaffSimple) => { + let (move1base, _move2base, move3) = match stage_section { + Some(StageSection::Buildup) => ((anim_time as f32).powf(0.25), 0.0, 0.0), + Some(StageSection::Swing) => (1.0, (anim_time as f32).powf(0.25), 0.0), + Some(StageSection::Recover) => (1.0, 1.0, anim_time as f32), + _ => (0.0, 0.0, 0.0), + }; + let pullback = 1.0 - move3; + let move1abs = move1base * pullback; + next.control_l.position = Vec3::new(2.0 - s_a.grip.0 * 2.0, 1.0, 3.0); + next.control_r.position = Vec3::new( + 7.0 + s_a.grip.0 * 2.0 + move1abs * -8.0, + -4.0 + move1abs * 4.0, + 3.0, + ); + + next.control.position = Vec3::new( + -5.0, + -1.0 + s_a.grip.2, + -2.0 + -s_a.grip.2 / 2.5 + s_a.grip.0 * -2.0 + move1abs * 5.0, + ); + + next.control_l.orientation = Quaternion::rotation_x(PI / 2.0 + move1abs * 0.8) + * Quaternion::rotation_y(-0.3) + * Quaternion::rotation_z(-0.3); + next.control_r.orientation = + Quaternion::rotation_x(PI / 2.0 + s_a.grip.0 * 0.2 + move1abs * 0.8) + * Quaternion::rotation_y(-0.4 + s_a.grip.0 * 0.2 + move1abs * 0.8) + * Quaternion::rotation_z(-0.0); + + next.control.orientation = Quaternion::rotation_x(-0.3 + move1abs * -0.6) + * Quaternion::rotation_y(-0.2 * speednorm) + * Quaternion::rotation_z(0.5 + move1abs * 0.6); + }, + _ => {}, + } + + next + } +} diff --git a/voxygen/anim/src/biped_small/wield.rs b/voxygen/anim/src/biped_small/wield.rs new file mode 100644 index 0000000000..28a02adb50 --- /dev/null +++ b/voxygen/anim/src/biped_small/wield.rs @@ -0,0 +1,155 @@ +use super::{ + super::{vek::*, Animation}, + BipedSmallSkeleton, SkeletonAttr, +}; +use common::comp::item::ToolKind; +use std::f32::consts::PI; + +pub struct WieldAnimation; + +type WieldAnimationDependency = ( + Option, + Vec3, + Vec3, + Vec3, + f64, + Vec3, + f32, +); + +impl Animation for WieldAnimation { + type Dependency = WieldAnimationDependency; + type Skeleton = BipedSmallSkeleton; + + #[cfg(feature = "use-dyn-lib")] + const UPDATE_FN: &'static [u8] = b"biped_small_wield\0"; + + #[cfg_attr(feature = "be-dyn-lib", export_name = "biped_small_wield")] + + fn update_skeleton_inner( + skeleton: &Self::Skeleton, + (active_tool_kind, velocity, _orientation, _last_ori, _global_time, _avg_vel, acc_vel): Self::Dependency, + anim_time: f64, + _rate: &mut f32, + s_a: &SkeletonAttr, + ) -> Self::Skeleton { + let mut next = (*skeleton).clone(); + let speed = Vec2::::from(velocity).magnitude(); + + let fastacc = (acc_vel * 2.0).sin(); + let fast = (anim_time as f32 * 10.0).sin(); + let fastalt = (anim_time as f32 * 10.0 + PI / 2.0).sin(); + let slow = (anim_time as f32 * 2.0).sin(); + + let speednorm = speed / 9.4; + let speednormcancel = 1.0 - speednorm; + + next.head.position = Vec3::new(0.0, s_a.head.0, s_a.head.1 + fast * -0.1 * speednormcancel); + next.head.orientation = Quaternion::rotation_x(0.45 * speednorm) + * Quaternion::rotation_y(fast * 0.07 * speednormcancel); + next.chest.position = Vec3::new( + 0.0, + s_a.chest.0, + s_a.chest.1 + fastalt * 0.4 * speednormcancel + speednormcancel * -0.5, + ) * s_a.scaler + / 11.0; + + next.pants.position = Vec3::new(0.0, s_a.pants.0, s_a.pants.1); + + next.tail.position = Vec3::new(0.0, s_a.tail.0, s_a.tail.1); + next.tail.orientation = Quaternion::rotation_x(0.05 * fastalt * speednormcancel) + * Quaternion::rotation_z(fast * 0.15 * speednormcancel); + + next.main.position = Vec3::new(0.0, 0.0, 0.0); + next.main.orientation = Quaternion::rotation_x(0.0); + + next.hand_l.position = Vec3::new(s_a.grip.0 * 4.0, 0.0, s_a.grip.2); + next.hand_r.position = Vec3::new(-s_a.grip.0 * 4.0, 0.0, s_a.grip.2); + + next.hand_l.orientation = Quaternion::rotation_x(0.0); + next.hand_r.orientation = Quaternion::rotation_x(0.0); + + //IMPORTANT: avoid touching any value attached to grip. grip uses the size of + // the hand bones to correct any irrgularities beween species. Changing + // coefficients to grip will have different effects across species + + match active_tool_kind { + Some(ToolKind::Spear) => { + next.control_l.position = Vec3::new(1.0 - s_a.grip.0 * 2.0, 2.0, -2.0); + next.control_r.position = Vec3::new(-1.0 + s_a.grip.0 * 2.0, 2.0, 2.0); + + next.control.position = Vec3::new( + -3.0, + s_a.grip.2, + -s_a.grip.2 / 2.5 + + s_a.grip.0 * -2.0 + + fastacc * 1.5 + + fastalt * 0.5 * speednormcancel + + speednorm * 2.0, + ); + + next.control_l.orientation = + Quaternion::rotation_x(PI / 1.5 + slow * 0.1) * Quaternion::rotation_y(-0.3); + next.control_r.orientation = + Quaternion::rotation_x(PI / 1.5 + slow * 0.1 + s_a.grip.0 * 0.2) + * Quaternion::rotation_y(0.5 + slow * 0.0 + s_a.grip.0 * 0.2); + + next.control.orientation = Quaternion::rotation_x(-1.35 + 0.5 * speednorm); + }, + + Some(ToolKind::Bow) | Some(ToolKind::BowSimple) => { + next.control_l.position = Vec3::new(1.0 - s_a.grip.0 * 2.0, 0.0, 0.0); + next.control_r.position = Vec3::new(-1.0 + s_a.grip.0 * 2.0, 6.0, -2.0); + + next.control.position = Vec3::new( + -1.0, + 2.0 + s_a.grip.2, + 3.0 + -s_a.grip.2 / 2.5 + + s_a.grip.0 * -2.0 + + fastacc * 1.5 + + fastalt * 0.5 * speednormcancel + + speednorm * 2.0, + ); + + next.control_l.orientation = + Quaternion::rotation_x(PI / 2.0 + slow * 0.1) * Quaternion::rotation_y(-0.3); + next.control_r.orientation = + Quaternion::rotation_x(PI / 2.0 + slow * 0.1 + s_a.grip.0 * 0.2) + * Quaternion::rotation_y(0.5 + slow * 0.0 + s_a.grip.0 * 0.2); + + next.control.orientation = Quaternion::rotation_x(-0.3 + 0.5 * speednorm) + * Quaternion::rotation_y(0.5 * speednorm); + }, + Some(ToolKind::Staff) | Some(ToolKind::StaffSimple) => { + next.control_l.position = Vec3::new(2.0 - s_a.grip.0 * 2.0, 1.0, 3.0); + next.control_r.position = + Vec3::new(7.0 + s_a.grip.0 * 2.0, -4.0, 3.0 + speednorm * -3.0); + + next.control.position = Vec3::new( + -5.0, + -1.0 + s_a.grip.2, + -2.0 + -s_a.grip.2 / 2.5 + + s_a.grip.0 * -2.0 + + fastacc * 1.5 + + fastalt * 0.5 * speednormcancel + + speednorm * 2.0, + ); + + next.control_l.orientation = Quaternion::rotation_x(PI / 2.0 + slow * 0.1) + * Quaternion::rotation_y(-0.3) + * Quaternion::rotation_z(-0.3); + next.control_r.orientation = + Quaternion::rotation_x(PI / 2.0 + slow * 0.1 + s_a.grip.0 * 0.2) + * Quaternion::rotation_y(-0.4 + slow * 0.0 + s_a.grip.0 * 0.2) + * Quaternion::rotation_z(-0.0); + + next.control.orientation = Quaternion::rotation_x(-0.3 + 0.2 * speednorm) + * Quaternion::rotation_y(-0.2 * speednorm) + * Quaternion::rotation_z(0.5); + }, + _ => {}, + } + + next + } +} diff --git a/voxygen/anim/src/bird_medium/mod.rs b/voxygen/anim/src/bird_medium/mod.rs index 9f969f47a7..1cc817ea53 100644 --- a/voxygen/anim/src/bird_medium/mod.rs +++ b/voxygen/anim/src/bird_medium/mod.rs @@ -87,7 +87,7 @@ impl Default for SkeletonAttr { impl<'a> From<&'a Body> for SkeletonAttr { fn from(body: &'a Body) -> Self { - use comp::bird_medium::Species::*; + use comp::bird_medium::{BodyType::*, Species::*}; Self { head: match (body.species, body.body_type) { (Duck, _) => (4.0, 3.0), @@ -95,7 +95,8 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Goose, _) => (5.0, 2.5), (Peacock, _) => (1.0, 1.0), (Eagle, _) => (2.5, 5.0), - (Snowyowl, _) => (2.5, 5.0), + (Owl, Male) => (2.5, 5.0), + (Owl, Female) => (2.5, 7.0), (Parrot, _) => (0.5, 4.5), (Cockatrice, _) => (0.0, 4.0), }, @@ -105,7 +106,8 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Goose, _) => (0.0, 8.0), (Peacock, _) => (0.0, 10.0), (Eagle, _) => (0.0, 8.0), - (Snowyowl, _) => (0.0, 4.5), + (Owl, Male) => (0.0, 4.5), + (Owl, Female) => (0.0, 4.5), (Parrot, _) => (0.0, 5.0), (Cockatrice, _) => (0.0, 12.5), }, @@ -115,7 +117,8 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Goose, _) => (-5.0, 3.0), (Peacock, _) => (-5.5, 2.0), (Eagle, _) => (-8.0, -4.0), - (Snowyowl, _) => (-6.0, -2.0), + (Owl, Male) => (-6.0, -2.0), + (Owl, Female) => (-6.0, -2.5), (Parrot, _) => (-8.0, -2.0), (Cockatrice, _) => (-10.0, -2.5), }, @@ -125,7 +128,8 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Goose, _) => (3.75, -1.0, 2.0), (Peacock, _) => (3.0, 0.0, 1.0), (Eagle, _) => (3.0, -8.0, 4.0), - (Snowyowl, _) => (3.5, -5.5, 4.0), + (Owl, Male) => (3.5, -5.5, 4.0), + (Owl, Female) => (3.5, -6.0, 3.5), (Parrot, _) => (2.0, -4.5, 3.0), (Cockatrice, _) => (4.5, -2.5, 1.5), }, @@ -135,19 +139,18 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Goose, _) => (2.0, -1.5, 7.0), (Peacock, _) => (2.0, -2.5, 8.0), (Eagle, _) => (2.0, -2.0, 8.0), - (Snowyowl, _) => (1.5, -2.5, 7.0), + (Owl, Male) => (1.5, -2.5, 7.0), + (Owl, Female) => (1.5, -3.0, 6.5), (Parrot, _) => (1.5, -3.0, 3.0), (Cockatrice, _) => (4.0, -3.5, 12.0), }, feed: match (body.species, body.body_type) { - (Duck, _) => 1.0, - (Chicken, _) => 1.0, (Goose, _) => 1.4, (Peacock, _) => 1.6, (Eagle, _) => 1.2, - (Snowyowl, _) => 1.0, (Parrot, _) => 1.2, (Cockatrice, _) => 1.3, + _ => 1.0, }, } } diff --git a/voxygen/anim/src/character/alpha.rs b/voxygen/anim/src/character/alpha.rs index 3e22f7b6c6..fe776d6c1d 100644 --- a/voxygen/anim/src/character/alpha.rs +++ b/voxygen/anim/src/character/alpha.rs @@ -24,7 +24,7 @@ impl Animation for AlphaAnimation { #[allow(clippy::approx_constant)] // TODO: Pending review in #587 fn update_skeleton_inner( skeleton: &Self::Skeleton, - (active_tool_kind, _second_tool_kind, velocity, _global_time, stage_section): Self::Dependency, + (active_tool_kind, _second_tool_kind, _velocity, _global_time, stage_section): Self::Dependency, anim_time: f64, rate: &mut f32, s_a: &SkeletonAttr, @@ -32,32 +32,17 @@ impl Animation for AlphaAnimation { *rate = 1.0; let mut next = (*skeleton).clone(); - let lab = 1.0; - - let (movement1, movement2, movement3) = match stage_section { + let (move1, move2, move3) = match stage_section { Some(StageSection::Buildup) => ((anim_time as f32).powf(0.25), 0.0, 0.0), Some(StageSection::Swing) => (1.0, anim_time as f32, 0.0), Some(StageSection::Recover) => (1.0, 1.0, (anim_time as f32).powi(4)), _ => (0.0, 0.0, 0.0), }; - let foot = (((1.0) - / (0.2 + 0.8 * ((anim_time as f32 * lab as f32 * 2.0 * velocity).sin()).powi(2))) - .sqrt()) - * ((anim_time as f32 * lab as f32 * 2.0 * velocity).sin()); - let push = anim_time as f32 * lab as f32 * 4.0; - let slow = (((5.0) / (0.4 + 4.6 * ((anim_time as f32 * lab as f32 * 9.0).sin()).powi(2))) - .sqrt()) - * ((anim_time as f32 * lab as f32 * 9.0).sin()); - let slower = (((1.0) - / (0.0001 + 0.999 * ((anim_time as f32 * lab as f32 * 4.0).sin()).powi(2))) - .sqrt()) - * ((anim_time as f32 * lab as f32 * 4.0).sin()); - next.torso.position = Vec3::new(0.0, 0.0, 0.1) * s_a.scaler; next.torso.orientation = Quaternion::rotation_z(0.0); match active_tool_kind { - Some(ToolKind::Sword) => { + Some(ToolKind::Sword) | Some(ToolKind::SwordSimple) => { next.main.position = Vec3::new(0.0, 0.0, 0.0); next.main.orientation = Quaternion::rotation_x(0.0); @@ -70,29 +55,25 @@ impl Animation for AlphaAnimation { next.control.position = Vec3::new( s_a.sc.0, - s_a.sc.1 + movement1 * -4.0 + movement2 * 16.0 + movement3 * -4.0, - s_a.sc.2 + movement1 * 1.0, + s_a.sc.1 + move1 * -4.0 + move2 * 16.0 + move3 * -4.0, + s_a.sc.2 + move1 * 1.0, ); - next.control.orientation = Quaternion::rotation_x(s_a.sc.3 + movement1 * -0.5) - * Quaternion::rotation_y( - s_a.sc.4 + movement1 * -1.0 + movement2 * -0.6 + movement3 * 1.0, - ) - * Quaternion::rotation_z(s_a.sc.5 + movement1 * -1.2 + movement2 * 1.3); + next.control.orientation = Quaternion::rotation_x(s_a.sc.3 + move1 * -0.5) + * Quaternion::rotation_y(s_a.sc.4 + move1 * -1.0 + move2 * -0.6 + move3 * 1.0) + * Quaternion::rotation_z(s_a.sc.5 + move1 * -1.2 + move2 * 1.3); - next.chest.orientation = Quaternion::rotation_z( - movement1 * 1.5 + (movement2 * 1.75).sin() * -3.0 + movement3 * 0.5, - ); + next.chest.orientation = + Quaternion::rotation_z(move1 * 1.5 + (move2 * 1.75).sin() * -3.0 + move3 * 0.5); - next.head.position = Vec3::new(0.0 + movement2 * 2.0, s_a.head.0, s_a.head.1); + next.head.position = Vec3::new(0.0 + move2 * 2.0, s_a.head.0, s_a.head.1); next.head.orientation = Quaternion::rotation_z( - movement1 * -0.9 + (movement2 * 1.75).sin() * 2.5 + movement3 * -0.5, + move1 * -0.9 + (move2 * 1.75).sin() * 2.5 + move3 * -0.5, ); }, Some(ToolKind::Dagger) => { - next.control_l.position = Vec3::new(-10.0 + push * 5.0, 6.0 + push * 5.0, 2.0); - next.control_l.orientation = Quaternion::rotation_x(-1.4 + slow * 0.4) - * Quaternion::rotation_y(slow * -1.3) - * Quaternion::rotation_z(1.4 + slow * -0.5); + next.control_l.position = Vec3::new(-10.0, 6.0, 2.0); + next.control_l.orientation = + Quaternion::rotation_x(-1.4) * Quaternion::rotation_z(1.4); }, Some(ToolKind::Axe) => { next.main.position = Vec3::new(0.0, 0.0, 0.0); @@ -104,45 +85,39 @@ impl Animation for AlphaAnimation { next.hand_r.orientation = Quaternion::rotation_x(s_a.ahr.3) * Quaternion::rotation_z(s_a.ahr.5); - next.head.position = Vec3::new( - 0. + movement2 * 2.0, - s_a.head.0 + movement2 * 2.0, - s_a.head.1, - ); + next.head.position = + Vec3::new(0. + move2 * 2.0, s_a.head.0 + move2 * 2.0, s_a.head.1); - let (movement1, movement2, movement3) = match stage_section { + let (move1, move2, move3) = match stage_section { Some(StageSection::Buildup) => ((anim_time as f32).powf(0.25), 0.0, 0.0), Some(StageSection::Swing) => (1.0, anim_time as f32, 0.0), Some(StageSection::Recover) => (1.0, 1.0, (anim_time as f32).powi(4)), _ => (0.0, 0.0, 0.0), }; next.control.position = Vec3::new( - s_a.ac.0 + movement1 * -1.0 + movement2 * -2.0 + movement3 * 0.0, - s_a.ac.1 + movement1 * -3.0 + movement2 * 3.0 + movement3 * -3.5, - s_a.ac.2 + movement1 * 6.0 + movement2 * -15.0 + movement3 * -2.0, - ); - next.control.orientation = Quaternion::rotation_x( - s_a.ac.3 + movement1 * 0.0 + movement2 * -3.0 + movement3 * 0.4, - ) * Quaternion::rotation_y( - s_a.ac.4 + movement1 * -0.0 + movement2 * -0.6 + movement3 * 0.8, - ) * Quaternion::rotation_z( - s_a.ac.5 + movement1 * -2.0 + movement2 * -1.0 + movement3 * 2.5, + s_a.ac.0 + move1 * -1.0 + move2 * -2.0 + move3 * 0.0, + s_a.ac.1 + move1 * -3.0 + move2 * 3.0 + move3 * -3.5, + s_a.ac.2 + move1 * 6.0 + move2 * -15.0 + move3 * -2.0, ); + next.control.orientation = + Quaternion::rotation_x(s_a.ac.3 + move1 * 0.0 + move2 * -3.0 + move3 * 0.4) + * Quaternion::rotation_y( + s_a.ac.4 + move1 * -0.0 + move2 * -0.6 + move3 * 0.8, + ) + * Quaternion::rotation_z( + s_a.ac.5 + move1 * -2.0 + move2 * -1.0 + move3 * 2.5, + ); next.control.scale = Vec3::one(); - next.chest.orientation = Quaternion::rotation_x( - 0.0 + movement1 * 0.6 + movement2 * -0.6 + movement3 * 0.4, - ) * Quaternion::rotation_y( - 0.0 + movement1 * 0.0 + movement2 * 0.0 + movement3 * 0.0, - ) * Quaternion::rotation_z( - 0.0 + movement1 * 1.5 + movement2 * -2.5 + movement3 * 1.5, - ); - next.head.orientation = Quaternion::rotation_z( - 0.0 + movement1 * -1.5 + movement2 * 2.5 + movement3 * -1.0, - ); + next.chest.orientation = + Quaternion::rotation_x(0.0 + move1 * 0.6 + move2 * -0.6 + move3 * 0.4) + * Quaternion::rotation_y(0.0 + move1 * 0.0 + move2 * 0.0 + move3 * 0.0) + * Quaternion::rotation_z(0.0 + move1 * 1.5 + move2 * -2.5 + move3 * 1.5); + next.head.orientation = + Quaternion::rotation_z(0.0 + move1 * -1.5 + move2 * 2.5 + move3 * -1.0); }, - Some(ToolKind::Hammer) => { - let (movement1, movement2, movement3) = match stage_section { + Some(ToolKind::Hammer) | Some(ToolKind::HammerSimple) => { + let (move1, move2, move3) = match stage_section { Some(StageSection::Buildup) => ((anim_time as f32).powf(0.25), 0.0, 0.0), Some(StageSection::Swing) => (1.0, anim_time as f32, 0.0), Some(StageSection::Recover) => (1.0, 1.0, (anim_time as f32).powi(4)), @@ -150,7 +125,7 @@ impl Animation for AlphaAnimation { }; next.main.position = Vec3::new(0.0, 0.0, 0.0); next.main.orientation = Quaternion::rotation_x(0.0); - next.hand_l.position = Vec3::new(s_a.hhl.0, s_a.hhl.1, s_a.hhl.2); + next.hand_l.position = Vec3::new(s_a.hhl.0, s_a.hhl.1, s_a.hhl.2 + move2 * -7.0); next.hand_l.orientation = Quaternion::rotation_x(s_a.hhl.3) * Quaternion::rotation_y(s_a.hhl.4); next.hand_r.position = Vec3::new(s_a.hhr.0, s_a.hhr.1, s_a.hhr.2); @@ -158,56 +133,26 @@ impl Animation for AlphaAnimation { Quaternion::rotation_x(s_a.hhr.3) * Quaternion::rotation_y(s_a.hhr.4); next.control.position = Vec3::new( - s_a.hc.0 + (movement1 * -13.0) * (1.0 - movement3), - s_a.hc.1 + (movement2 * 5.0) * (1.0 - movement3), + s_a.hc.0 + (move1 * -13.0) * (1.0 - move3), + s_a.hc.1 + (move2 * 5.0) * (1.0 - move3), s_a.hc.2, ); next.control.orientation = - Quaternion::rotation_x(s_a.hc.3 + (movement1 * 1.5 + movement2 * -2.5)) - * (1.0 - movement3) - * Quaternion::rotation_y(s_a.hc.4 + (movement1 * 1.57)) - * (1.0 - movement3) - * Quaternion::rotation_z(s_a.hc.5 + (movement2 * -0.5) * (1.0 - movement3)); + Quaternion::rotation_x(s_a.hc.3 + (move1 * 1.5 + move2 * -2.5)) + * (1.0 - move3) + * Quaternion::rotation_y(s_a.hc.4 + (move1 * 1.57)) + * (1.0 - move3) + * Quaternion::rotation_z(s_a.hc.5 + (move2 * -0.5) * (1.0 - move3)); next.head.position = Vec3::new(0.0, s_a.head.0, s_a.head.1); - next.head.orientation = Quaternion::rotation_x( - (movement1 * 0.3 + movement2 * -0.5) * (1.0 - movement3), - ) * Quaternion::rotation_y(0.0) - * Quaternion::rotation_z( - (movement1 * 0.2 + movement2 * -0.5) * (1.0 - movement3), - ); - next.chest.position = Vec3::new(0.0, s_a.chest.0, s_a.chest.1); - next.chest.orientation = Quaternion::rotation_x( - (movement1 * 0.8 + movement2 * -1.2) * (1.0 - movement3), - ) * Quaternion::rotation_y( - (movement1 * 0.3 + movement2 * -0.4) * (1.0 - movement3), - ) * Quaternion::rotation_z( - (movement1 * 0.5 + movement2 * -0.5) * (1.0 - movement3), - ); - - if velocity > 0.5 { - next.foot_l.position = Vec3::new(-s_a.foot.0, foot * -6.0, s_a.foot.2); - next.foot_l.orientation = Quaternion::rotation_x(foot * -0.4) - * Quaternion::rotation_z((slower * 0.3).max(0.0)); - - next.foot_r.position = Vec3::new(s_a.foot.0, foot * 6.0, s_a.foot.2); - next.foot_r.orientation = Quaternion::rotation_x(foot * 0.4) - * Quaternion::rotation_z((slower * 0.3).max(0.0)); - next.torso.orientation = Quaternion::rotation_x(-0.15); - } else { - next.foot_l.position = - Vec3::new(-s_a.foot.0, -2.5, s_a.foot.2 + (slower * 2.5).max(0.0)); - next.foot_l.orientation = Quaternion::rotation_x(slower * -0.2 - 0.2) - * Quaternion::rotation_z((slower * 1.0).max(0.0)); - - next.foot_r.position = Vec3::new(s_a.foot.0, 3.5 - slower * 2.0, s_a.foot.2); - next.foot_r.orientation = Quaternion::rotation_x(slower * 0.1) - * Quaternion::rotation_z((slower * 0.5).max(0.0)); - - next.belt.orientation = - Quaternion::rotation_x(movement1 * -0.2 + movement2 * 0.2); - next.shorts.orientation = - Quaternion::rotation_x(movement1 * -0.3 + movement2 * 0.3); - } + next.head.orientation = + Quaternion::rotation_x((move1 * 0.1 + move2 * 0.3) * (1.0 - move3)) + * Quaternion::rotation_z((move1 * -0.2 + move2 * 0.2) * (1.0 - move3)); + next.chest.position = + Vec3::new(0.0, s_a.chest.0, s_a.chest.1 + move2 * -2.0 * (1.0 - move3)); + next.chest.orientation = + Quaternion::rotation_x((move1 * 0.4 + move2 * -0.7) * (1.0 - move3)) + * Quaternion::rotation_y((move1 * 0.3 + move2 * -0.4) * (1.0 - move3)) + * Quaternion::rotation_z((move1 * 0.5 + move2 * -0.5) * (1.0 - move3)); }, Some(ToolKind::Debug) => { next.hand_l.position = Vec3::new(-7.0, 4.0, 3.0); diff --git a/voxygen/anim/src/character/beam.rs b/voxygen/anim/src/character/beam.rs index e4015c7131..14a1904f5f 100644 --- a/voxygen/anim/src/character/beam.rs +++ b/voxygen/anim/src/character/beam.rs @@ -32,7 +32,7 @@ impl Animation for BeamAnimation { *rate = 1.0; let mut next = (*skeleton).clone(); - let (movement1, movement2, movement3) = match stage_section { + let (move1, move2, move3) = match stage_section { Some(StageSection::Buildup) => (anim_time as f32, 0.0, 0.0), Some(StageSection::Cast) => (1.0, anim_time as f32, 0.0), Some(StageSection::Recover) => (1.0, 1.0, anim_time as f32), @@ -56,59 +56,53 @@ impl Animation for BeamAnimation { match active_tool_kind { Some(ToolKind::Staff) | Some(ToolKind::Sceptre) => { next.control.position = Vec3::new( - s_a.stc.0 + (movement1 * 16.0) * (1.0 - movement3), - s_a.stc.1 + (movement1 + (movement2 * 8.0).sin() * 2.0) * (1.0 - movement3), - s_a.stc.2 + (movement1 * 10.0) * (1.0 - movement3), + s_a.stc.0 + (move1 * 16.0) * (1.0 - move3), + s_a.stc.1 + (move1 + (move2 * 8.0).sin() * 2.0) * (1.0 - move3), + s_a.stc.2 + (move1 * 10.0) * (1.0 - move3), ); next.control.orientation = - Quaternion::rotation_x(s_a.stc.3 + (movement1 * -1.2) * (1.0 - movement3)) + Quaternion::rotation_x(s_a.stc.3 + (move1 * -1.2) * (1.0 - move3)) * Quaternion::rotation_y( s_a.stc.4 - + (movement1 * -1.4 + (movement2 * 16.0).sin() * 0.07) - * (1.0 - movement3), + + (move1 * -1.4 + (move2 * 16.0).sin() * 0.07) * (1.0 - move3), ) * Quaternion::rotation_z( - (movement1 * -1.7 + (movement2 * 8.0 + PI / 4.0).sin() * 0.3) - * (1.0 - movement3), + (move1 * -1.7 + (move2 * 8.0 + PI / 4.0).sin() * 0.3) * (1.0 - move3), ); next.head.orientation = Quaternion::rotation_x(0.0); next.hand_l.position = Vec3::new( - 0.0 + (movement1 * -1.0 + (movement2 * 8.0).sin() * 3.5) * (1.0 - movement3), - 0.0 + (movement1 * -5.0 - + (movement2 * 8.0).sin() * -2.0 - + (movement2 * 16.0).sin() * -1.5) - * (1.0 - movement3), - -4.0 + (movement1 * 19.0 + (movement2 * 8.0 + PI / 2.0).sin() * 3.5) - * (1.0 - movement3), + 0.0 + (move1 * -1.0 + (move2 * 8.0).sin() * 3.5) * (1.0 - move3), + 0.0 + (move1 * -5.0 + (move2 * 8.0).sin() * -2.0 + (move2 * 16.0).sin() * -1.5) + * (1.0 - move3), + -4.0 + (move1 * 19.0 + (move2 * 8.0 + PI / 2.0).sin() * 3.5) * (1.0 - move3), ); next.hand_l.orientation = - Quaternion::rotation_x(s_a.sthr.3 + (movement1 * -0.3) * (1.0 - movement3)) + Quaternion::rotation_x(s_a.sthr.3 + (move1 * -0.3) * (1.0 - move3)) * Quaternion::rotation_y( - (movement1 * -1.1 + (movement2 * 8.0 + PI / 2.0).sin() * -0.3) - * (1.0 - movement3), + (move1 * -1.1 + (move2 * 8.0 + PI / 2.0).sin() * -0.3) * (1.0 - move3), ) - * Quaternion::rotation_z((movement1 * -2.8) * (1.0 - movement3)); + * Quaternion::rotation_z((move1 * -2.8) * (1.0 - move3)); if velocity < 0.5 { next.head.orientation = - Quaternion::rotation_z(movement1 * -0.5 + (movement2 * 16.0).sin() * 0.05); + Quaternion::rotation_z(move1 * -0.5 + (move2 * 16.0).sin() * 0.05); next.foot_l.position = - Vec3::new(-s_a.foot.0, s_a.foot.1 + movement1 * -3.0, s_a.foot.2); - next.foot_l.orientation = Quaternion::rotation_x(movement1 * -0.5) - * Quaternion::rotation_z(movement1 * 0.5); + Vec3::new(-s_a.foot.0, s_a.foot.1 + move1 * -3.0, s_a.foot.2); + next.foot_l.orientation = + Quaternion::rotation_x(move1 * -0.5) * Quaternion::rotation_z(move1 * 0.5); next.foot_r.position = - Vec3::new(s_a.foot.0, s_a.foot.1 + movement1 * 4.0, s_a.foot.2); - next.foot_r.orientation = Quaternion::rotation_z(movement1 * 0.5); + Vec3::new(s_a.foot.0, s_a.foot.1 + move1 * 4.0, s_a.foot.2); + next.foot_r.orientation = Quaternion::rotation_z(move1 * 0.5); next.chest.orientation = - Quaternion::rotation_x(movement1 * -0.2 + (movement2 * 8.0).sin() * 0.05) - * Quaternion::rotation_z(movement1 * 0.5); - next.belt.orientation = Quaternion::rotation_x(movement1 * 0.1) - * Quaternion::rotation_z(movement1 * -0.1); - next.shorts.orientation = Quaternion::rotation_x(movement1 * 0.2) - * Quaternion::rotation_z(movement1 * -0.2); + Quaternion::rotation_x(move1 * -0.2 + (move2 * 8.0).sin() * 0.05) + * Quaternion::rotation_z(move1 * 0.5); + next.belt.orientation = + Quaternion::rotation_x(move1 * 0.1) * Quaternion::rotation_z(move1 * -0.1); + next.shorts.orientation = + Quaternion::rotation_x(move1 * 0.2) * Quaternion::rotation_z(move1 * -0.2); } else { }; }, diff --git a/voxygen/anim/src/character/beta.rs b/voxygen/anim/src/character/beta.rs index 7255a22667..ba42293d1f 100644 --- a/voxygen/anim/src/character/beta.rs +++ b/voxygen/anim/src/character/beta.rs @@ -30,7 +30,7 @@ impl Animation for BetaAnimation { *rate = 1.0; let mut next = (*skeleton).clone(); - let (movement1, movement2, movement3) = match stage_section { + let (move1, move2, move3) = match stage_section { Some(StageSection::Buildup) => ((anim_time as f32).powf(0.25), 0.0, 0.0), Some(StageSection::Swing) => (1.0, anim_time as f32, 0.0), Some(StageSection::Recover) => (1.0, 1.0, (anim_time as f32).powi(4)), @@ -48,21 +48,17 @@ impl Animation for BetaAnimation { Quaternion::rotation_x(s_a.shr.3) * Quaternion::rotation_y(s_a.shr.4); next.control.position = Vec3::new( - s_a.sc.0 + (-1.4 + movement1 * -3.0 + movement2 * -2.0) * (1.0 - movement3), - s_a.sc.1 + (-1.4 + movement1 * 3.0 + movement2 * 3.0) * (1.0 - movement3), - s_a.sc.2 + (-1.9 + movement1 * 2.5 * (1.0 - movement3)), + s_a.sc.0 + (-1.4 + move1 * -3.0 + move2 * -2.0) * (1.0 - move3), + s_a.sc.1 + (-1.4 + move1 * 3.0 + move2 * 3.0) * (1.0 - move3), + s_a.sc.2 + (-1.9 + move1 * 2.5 * (1.0 - move3)), ); - next.control.orientation = Quaternion::rotation_x(s_a.sc.3 + (-1.7) * (1.0 - movement3)) - * Quaternion::rotation_y( - s_a.sc.4 + (0.4 + movement1 * 1.5 + movement2 * -2.5) * (1.0 - movement3), - ) - * Quaternion::rotation_z(s_a.sc.5 + (1.67 + movement2 * 1.57) * (1.0 - movement3)); + next.control.orientation = Quaternion::rotation_x(s_a.sc.3 + (-1.7) * (1.0 - move3)) + * Quaternion::rotation_y(s_a.sc.4 + (0.4 + move1 * 1.5 + move2 * -2.5) * (1.0 - move3)) + * Quaternion::rotation_z(s_a.sc.5 + (1.67 + move2 * 1.57) * (1.0 - move3)); next.chest.orientation = Quaternion::rotation_x(0.15) - * Quaternion::rotation_y((-0.1) * (1.0 - movement3)) - * Quaternion::rotation_z( - (0.4 + movement1 * 1.5 + movement2 * -2.5) * (1.0 - movement3), - ); - next.head.orientation = Quaternion::rotation_z((-0.4) * (1.0 - movement3)); + * Quaternion::rotation_y((-0.1) * (1.0 - move3)) + * Quaternion::rotation_z((0.4 + move1 * 1.5 + move2 * -2.5) * (1.0 - move3)); + next.head.orientation = Quaternion::rotation_z((-0.4) * (1.0 - move3)); next } diff --git a/voxygen/anim/src/character/charge.rs b/voxygen/anim/src/character/charge.rs deleted file mode 100644 index a64285ca9e..0000000000 --- a/voxygen/anim/src/character/charge.rs +++ /dev/null @@ -1,164 +0,0 @@ -use super::{ - super::{vek::*, Animation}, - CharacterSkeleton, SkeletonAttr, -}; -use common::comp::item::ToolKind; - -pub struct ChargeAnimation; - -impl Animation for ChargeAnimation { - type Dependency = ( - Option, - Option, - f32, - Vec3, - Vec3, - f64, - ); - type Skeleton = CharacterSkeleton; - - #[cfg(feature = "use-dyn-lib")] - const UPDATE_FN: &'static [u8] = b"character_charge\0"; - - #[cfg_attr(feature = "be-dyn-lib", export_name = "character_charge")] - #[allow(clippy::approx_constant)] // TODO: Pending review in #587 - - fn update_skeleton_inner( - skeleton: &Self::Skeleton, - (active_tool_kind, _second_tool_kind, velocity, orientation, last_ori, _global_time): Self::Dependency, - anim_time: f64, - rate: &mut f32, - s_a: &SkeletonAttr, - ) -> Self::Skeleton { - *rate = 1.0; - - let mut next = (*skeleton).clone(); - - let lab = 1.0; - - let foot = (((5.0) / (0.2 + 4.8 * ((anim_time as f32 * lab as f32 * 8.0).sin()).powi(2))) - .sqrt()) - * ((anim_time as f32 * lab as f32 * 8.0).sin()); - let foote = (((5.0) - / (0.5 + 4.5 * ((anim_time as f32 * lab as f32 * 8.0 + 1.57).sin()).powi(2))) - .sqrt()) - * ((anim_time as f32 * lab as f32 * 8.0).sin()); - let stress = - (((5.0) / (0.5 + 4.5 * ((anim_time as f32 * lab as f32 * 20.0).cos()).powi(2))).sqrt()) - * ((anim_time as f32 * lab as f32 * 20.0).cos()); - let quick = (((5.0) / (3.5 + 1.5 * ((anim_time as f32 * lab as f32 * 8.0).sin()).powi(2))) - .sqrt()) - * ((anim_time as f32 * lab as f32 * 8.0).sin()); - let stop = ((anim_time as f32).powf(0.3)).min(1.2); - let stopa = ((anim_time as f32).powf(0.9)).min(5.0); - - let ori: Vec2 = Vec2::from(orientation); - let last_ori = Vec2::from(last_ori); - let tilt = if ::vek::Vec2::new(ori, last_ori) - .map(|o| o.magnitude_squared()) - .map(|m| m > 0.001 && m.is_finite()) - .reduce_and() - && ori.angle_between(last_ori).is_finite() - { - ori.angle_between(last_ori).min(0.2) - * last_ori.determine_side(Vec2::zero(), ori).signum() - } else { - 0.0 - } * 1.3; - - next.head.position = Vec3::new(stop * -2.0, -1.5 + stop * 2.5 + s_a.head.0, s_a.head.1); - next.head.orientation = - Quaternion::rotation_z(stop * -1.0 + tilt * -2.0) * Quaternion::rotation_y(stop * -0.3); - next.head.scale = Vec3::one() * s_a.head_scale; - - next.chest.position = Vec3::new(0.0, s_a.chest.0, s_a.chest.1); - next.chest.orientation = - Quaternion::rotation_z(stop * 1.2 + stress * stop * 0.02 + tilt * -2.0); - - next.belt.position = Vec3::new(0.0, s_a.belt.0, s_a.belt.1); - next.belt.orientation = Quaternion::rotation_z(stop * -0.5 + tilt * 2.0); - - next.shorts.position = Vec3::new(0.0, s_a.shorts.0, s_a.shorts.1); - next.shorts.orientation = Quaternion::rotation_z(stop * -0.7 + tilt * 4.0); - - match active_tool_kind { - Some(ToolKind::Staff) | Some(ToolKind::Sceptre) => { - next.hand_l.position = Vec3::new(s_a.sthl.0, s_a.sthl.1, s_a.sthl.2); - next.hand_l.orientation = Quaternion::rotation_x(s_a.sthl.3); - - next.hand_r.position = Vec3::new(s_a.sthr.0, s_a.sthr.1, s_a.sthr.2); - next.hand_r.orientation = - Quaternion::rotation_x(s_a.sthr.3) * Quaternion::rotation_y(s_a.sthr.4); - - next.main.position = Vec3::new(0.0, 0.0, 0.0); - next.main.orientation = Quaternion::rotation_y(0.0); - - next.control.position = Vec3::new( - s_a.stc.0 + quick * 3.5 * (1.0 / (stopa + 0.1)), - s_a.stc.1, - s_a.stc.2 - stop * 3.0, - ); - next.control.orientation = Quaternion::rotation_x(s_a.stc.3 + stop * -0.2) - * Quaternion::rotation_y(s_a.stc.4) - * Quaternion::rotation_z(s_a.stc.5 + stop * 0.2); - }, - Some(ToolKind::Bow) => { - next.main.position = Vec3::new(0.0, 0.0, 0.0); - next.main.orientation = Quaternion::rotation_x(0.0); - next.hand_l.position = Vec3::new(s_a.bhl.0, s_a.bhl.1, s_a.bhl.2); - next.hand_l.orientation = Quaternion::rotation_x(s_a.bhl.3); - next.hand_r.position = Vec3::new(s_a.bhr.0, s_a.bhr.1, s_a.bhr.2); - next.hand_r.orientation = Quaternion::rotation_x(s_a.bhr.3); - - next.hold.position = Vec3::new(0.0, -1.0, -5.2); - next.hold.orientation = Quaternion::rotation_x(-1.57); - next.hold.scale = Vec3::one() * 1.0; - - next.control.position = Vec3::new( - 3.0 + s_a.bc.0 + stop * 13.0, - -5.0 + s_a.bc.1 + stop * 4.0, - 6.0 + s_a.bc.2, - ); - next.control.orientation = Quaternion::rotation_x(0.2 + s_a.bc.3) - * Quaternion::rotation_y(-0.8 + s_a.bc.4 + stop * -0.4) - * Quaternion::rotation_z(s_a.bc.5 + stop * -0.6); - }, - _ => {}, - } - - if velocity > 0.2 { - next.foot_l.position = Vec3::new( - -s_a.foot.0 - foot * 1.5, - s_a.foot.1 + foote * 2.0, - s_a.foot.2, - ); - next.foot_l.orientation = Quaternion::rotation_x(foote * -0.1) - * Quaternion::rotation_z(0.4) - * Quaternion::rotation_y(0.15); - - next.foot_r.position = Vec3::new( - s_a.foot.0 + foot * 1.5, - s_a.foot.1 + foote * -1.5, - s_a.foot.2, - ); - next.foot_r.orientation = Quaternion::rotation_z(0.4); - } else { - next.foot_l.position = Vec3::new( - -s_a.foot.0, - -2.5 + stop * -1.3, - s_a.foot.2 + tilt * -4.0 * foot, - ); - next.foot_l.orientation = - Quaternion::rotation_x(stop * -0.2 - 0.2 + stop * stress * 0.02) - * Quaternion::rotation_z(stop * 0.1) - * Quaternion::rotation_y(stop * 0.08); - - next.foot_r.position = - Vec3::new(s_a.foot.0, 3.5 + stop * 1.5, s_a.foot.2 + tilt * 4.0 * foot); - next.foot_r.orientation = - Quaternion::rotation_x(stop * 0.1) * Quaternion::rotation_z(stop * 0.1); - } - - next - } -} diff --git a/voxygen/anim/src/character/chargeswing.rs b/voxygen/anim/src/character/chargeswing.rs index 847bdbaf64..995213e70e 100644 --- a/voxygen/anim/src/character/chargeswing.rs +++ b/voxygen/anim/src/character/chargeswing.rs @@ -37,25 +37,32 @@ impl Animation for ChargeswingAnimation { * ((anim_time as f32 * lab as f32 * 8.0).sin()); // end spin stuff - let (movement1, movement2, movement3, tension) = match stage_section { + let (move1base, move2base, move3, tension, test) = match stage_section { Some(StageSection::Charge) => ( (anim_time as f32).min(1.0), 0.0, 0.0, (anim_time as f32 * 18.0 * lab as f32).sin(), + 0.0, ), - Some(StageSection::Swing) => (1.0, anim_time as f32, 0.0, 0.0), - Some(StageSection::Recover) => (1.0, 1.0, (anim_time as f32).powi(4), 0.0), - _ => (0.0, 0.0, 0.0, 0.0), + Some(StageSection::Swing) => ( + 1.0, + (anim_time as f32).powf(0.25), + 0.0, + 0.0, + (anim_time as f32).powi(4), + ), + Some(StageSection::Recover) => (1.0, 1.0, (anim_time as f32).powi(4), 0.0, 1.0), + _ => (0.0, 0.0, 0.0, 0.0, 0.0), }; + let move1 = move1base * (1.0 - move3); + let slowrise = test * (1.0 - move3); + + let move2 = move2base * (1.0 - move3); if let Some(ToolKind::Hammer) = active_tool_kind { next.main.position = Vec3::new(0.0, 0.0, 0.0); next.main.orientation = Quaternion::rotation_x(0.0); - next.hand_l.position = Vec3::new( - s_a.hhl.0, - s_a.hhl.1, - s_a.hhl.2 + (movement2 * -8.0) * (1.0 - movement3), - ); + next.hand_l.position = Vec3::new(s_a.hhl.0, s_a.hhl.1, s_a.hhl.2 + (move2 * -8.0)); next.hand_l.orientation = Quaternion::rotation_x(s_a.hhl.3) * Quaternion::rotation_y(s_a.hhl.4); next.hand_r.position = Vec3::new(s_a.hhr.0, s_a.hhr.1, s_a.hhr.2); @@ -63,27 +70,25 @@ impl Animation for ChargeswingAnimation { Quaternion::rotation_x(s_a.hhr.3) * Quaternion::rotation_y(s_a.hhr.4); next.control.position = Vec3::new( - s_a.hc.0 + (movement1 * -2.0 + movement2 * -3.0) * (1.0 - movement3), - s_a.hc.1 + (movement1 * 2.0 + movement2 * 3.0) * (1.0 - movement3), - s_a.hc.2 + (movement1 * 2.0 + movement2 * 4.0) * (1.0 - movement3), + s_a.hc.0 + (move1 * -2.0 + move2 * -8.0), + s_a.hc.1 + (move1 * 2.0 + move2 * 6.0), + s_a.hc.2 + (move1 * -2.0 + slowrise * 8.0), ); - next.control.orientation = Quaternion::rotation_x(s_a.hc.3+(movement2*4.0)*(1.0-movement3)) - * Quaternion::rotation_y(s_a.hc.4+(tension*0.08+movement1 * 0.7+movement2*-3.5)*(1.0-movement3))//+fire * 0.1 - * Quaternion::rotation_z(s_a.hc.5+(movement1 * 0.2+movement2*-0.5)*(1.0-movement3)); - next.chest.orientation = Quaternion::rotation_z( - short * 0.04 + (movement1 * 2.0 + movement2 * -2.5) * (1.0 - movement3), - ); - next.belt.orientation = - Quaternion::rotation_z(short * 0.08 + (movement1 * -1.0) * (1.0 - movement3)); - next.shorts.orientation = - Quaternion::rotation_z(short * 0.15 + (movement1 * -1.0) * (1.0 - movement3)); + next.control.orientation = Quaternion::rotation_x(s_a.hc.3 + (move2 * 0.0)) + * Quaternion::rotation_y( + s_a.hc.4 + (tension * 0.08 + move1 * 0.7 + move2 * -1.0 + slowrise * 2.0), + ) + * Quaternion::rotation_z(s_a.hc.5 + (move1 * 0.2 + move2 * -1.0)); + next.chest.orientation = + Quaternion::rotation_z(short * 0.04 + (move1 * 2.0 + move2 * -3.5)); + next.belt.orientation = Quaternion::rotation_z(short * 0.08 + (move1 * -1.0)); + next.shorts.orientation = Quaternion::rotation_z(short * 0.15 + (move1 * -1.0)); next.head.position = Vec3::new( - 0.0 + (movement1 * -1.0 + movement2 * 2.0) * (1.0 - movement3), - s_a.head.0 + (movement1 * 1.0) * (1.0 - movement3), + 0.0 + (move1 * -1.0 + move2 * 2.0), + s_a.head.0 + (move1 * 1.0), s_a.head.1, ); - next.head.orientation = - Quaternion::rotation_z((movement1 * -1.5 + movement2 * 2.2) * (1.0 - movement3)); + next.head.orientation = Quaternion::rotation_z(move1 * -1.5 + move2 * 3.2); next.chest.position = Vec3::new(0.0, s_a.chest.0, s_a.chest.1); } next diff --git a/voxygen/anim/src/character/dash.rs b/voxygen/anim/src/character/dash.rs index 4edd33f3e7..7b5f1d3e19 100644 --- a/voxygen/anim/src/character/dash.rs +++ b/voxygen/anim/src/character/dash.rs @@ -34,7 +34,7 @@ impl Animation for DashAnimation { let (movement1, movement2, movement3, movement4) = match stage_section { Some(StageSection::Buildup) => ((anim_time as f32).powf(0.25), 0.0, 0.0, 0.0), Some(StageSection::Charge) => (1.0, anim_time as f32, 0.0, 0.0), - Some(StageSection::Swing) => (1.0, 1.0, anim_time as f32, 0.0), + Some(StageSection::Swing) => (1.0, 1.0, (anim_time as f32).powf(0.01), 0.0), Some(StageSection::Recover) => (1.1, 1.0, 1.0, (anim_time as f32).powi(4)), _ => (0.0, 0.0, 0.0, 0.0), }; @@ -46,21 +46,6 @@ impl Animation for DashAnimation { fn short(x: f32) -> f32 { (((5.0) / (1.5 + 3.5 * ((x * 5.0).sin()).powi(2))).sqrt()) * ((x * 5.0).sin()) } - fn foothoril(x: f32) -> f32 { (x * 5.0 + PI * 1.45).sin() } - fn foothorir(x: f32) -> f32 { (x * 5.0 + PI * (0.45)).sin() } - - fn footvertl(x: f32) -> f32 { (x * 5.0).sin() } - fn footvertr(x: f32) -> f32 { (x * 5.0 + PI).sin() } - - fn footrotl(x: f32) -> f32 { - (((1.0) / (0.05 + (0.95) * ((x * 5.0 + PI * 1.4).sin()).powi(2))).sqrt()) - * ((x * 5.0 + PI * 1.4).sin()) - } - - fn footrotr(x: f32) -> f32 { - (((1.0) / (0.05 + (0.95) * ((x * 5.0 + PI * 0.4).sin()).powi(2))).sqrt()) - * ((x * 5.0 + PI * 0.4).sin()) - } fn shortalt(x: f32) -> f32 { (x * 5.0 + PI / 2.0).sin() } @@ -115,22 +100,6 @@ impl Animation for DashAnimation { next.belt.orientation = Quaternion::rotation_z((short(movement2).min(1.0) * 0.1) * (1.0 - movement4)); - - next.foot_l.position = Vec3::new( - -s_a.foot.0, - s_a.foot.1 + movement1 * -12.0 + foothoril(movement2) * -7.5, - s_a.foot.2 + ((footvertl(movement2) * -4.0).max(-1.0)), - ); - next.foot_l.orientation = - Quaternion::rotation_x(movement1 * -1.0 + footrotl(movement2) * -0.6); - - next.foot_r.position = Vec3::new( - s_a.foot.0, - s_a.foot.1 + foothorir(movement2) * -7.5, - s_a.foot.2 + ((footvertr(movement2) * -4.0).max(-1.0)), - ); - next.foot_r.orientation = Quaternion::rotation_x(-0.6 + footrotr(movement2) * -0.6) - * Quaternion::rotation_z(-0.2); }, _ => {}, } diff --git a/voxygen/anim/src/character/jump.rs b/voxygen/anim/src/character/jump.rs index 76882bbfef..c4c1ae9c08 100644 --- a/voxygen/anim/src/character/jump.rs +++ b/voxygen/anim/src/character/jump.rs @@ -14,6 +14,7 @@ impl Animation for JumpAnimation { (Option, Option), Vec3, Vec3, + Vec3, f64, ); type Skeleton = CharacterSkeleton; @@ -25,7 +26,7 @@ impl Animation for JumpAnimation { fn update_skeleton_inner( skeleton: &Self::Skeleton, - (active_tool_kind, second_tool_kind, hands, orientation, last_ori, global_time): Self::Dependency, + (active_tool_kind, second_tool_kind, hands, velocity, orientation, last_ori, global_time): Self::Dependency, anim_time: f64, _rate: &mut f32, s_a: &SkeletonAttr, @@ -43,6 +44,9 @@ impl Animation for JumpAnimation { let switch = if random > 0.5 { 1.0 } else { -1.0 }; + let speed = Vec2::::from(velocity).magnitude(); + let speednorm = speed / 10.0; + let ori: Vec2 = Vec2::from(orientation); let last_ori = Vec2::from(last_ori); let tilt = if ::vek::Vec2::new(ori, last_ori) @@ -66,16 +70,27 @@ impl Animation for JumpAnimation { Quaternion::rotation_x(0.25 + slow * 0.04) * Quaternion::rotation_z(tilt * -2.5); next.chest.position = Vec3::new(0.0, s_a.chest.0, s_a.chest.1 + 1.0); - next.chest.orientation = Quaternion::rotation_z(tilt * -2.0); + next.chest.orientation = + Quaternion::rotation_x(speednorm * -0.3) * Quaternion::rotation_z(tilt * -2.0); - next.belt.position = Vec3::new(0.0, s_a.belt.0, s_a.belt.1); - next.belt.orientation = Quaternion::rotation_z(tilt * 2.0); + next.belt.position = Vec3::new( + 0.0, + s_a.belt.0 + speednorm * 1.2, + s_a.belt.1 + speednorm * 1.0, + ); + next.belt.orientation = + Quaternion::rotation_x(speednorm * 0.3) * Quaternion::rotation_z(tilt * 2.0); next.back.position = Vec3::new(0.0, s_a.back.0, s_a.back.1); next.back.orientation = Quaternion::rotation_z(0.0); - next.shorts.position = Vec3::new(0.0, s_a.shorts.0, s_a.shorts.1); - next.shorts.orientation = Quaternion::rotation_z(tilt * 3.0); + next.shorts.position = Vec3::new( + 0.0, + s_a.shorts.0 + speednorm * 3.0, + s_a.shorts.1 + speednorm * 2.0, + ); + next.shorts.orientation = + Quaternion::rotation_x(speednorm * 0.5) * Quaternion::rotation_z(tilt * 3.0); if random > 0.5 { next.hand_l.position = Vec3::new( @@ -106,17 +121,17 @@ impl Animation for JumpAnimation { next.foot_l.position = Vec3::new( -s_a.foot.0, - s_a.foot.1 - 6.0 * switch, - 1.0 + s_a.foot.2 + slow * 1.5, + s_a.foot.1 - 5.0 * switch, + 2.0 + s_a.foot.2 + slow * 1.5, ); - next.foot_l.orientation = Quaternion::rotation_x(-1.2 * switch + slow * -0.2 * switch); + next.foot_l.orientation = Quaternion::rotation_x(-0.8 * switch + slow * -0.2 * switch); next.foot_r.position = Vec3::new( s_a.foot.0, - s_a.foot.1 + 6.0 * switch, - 1.0 + s_a.foot.2 + slow * 1.5, + s_a.foot.1 + 5.0 * switch, + 2.0 + s_a.foot.2 + slow * 1.5, ); - next.foot_r.orientation = Quaternion::rotation_x(1.2 * switch + slow * 0.2 * switch); + next.foot_r.orientation = Quaternion::rotation_x(0.8 * switch + slow * 0.2 * switch); next.shoulder_l.position = Vec3::new(-s_a.shoulder.0, s_a.shoulder.1, s_a.shoulder.2); next.shoulder_l.orientation = Quaternion::rotation_x(0.4 * switch); @@ -178,7 +193,7 @@ impl Animation for JumpAnimation { next.hold.scale = Vec3::one() * 0.0; next.torso.position = Vec3::new(0.0, 0.0, 0.0) * s_a.scaler; - next.torso.orientation = Quaternion::rotation_x(-0.2); + next.torso.orientation = Quaternion::rotation_x(0.0); next.torso.scale = Vec3::one() / 11.0 * s_a.scaler; next.second.scale = match hands { diff --git a/voxygen/anim/src/character/leapmelee.rs b/voxygen/anim/src/character/leapmelee.rs index 89fc320472..0a45c738b3 100644 --- a/voxygen/anim/src/character/leapmelee.rs +++ b/voxygen/anim/src/character/leapmelee.rs @@ -31,7 +31,7 @@ impl Animation for LeapAnimation { *rate = 1.0; let mut next = (*skeleton).clone(); - let (movement1, movement2, movement3, movement4) = match stage_section { + let (move1, move2, move3, move4) = match stage_section { Some(StageSection::Buildup) => (anim_time as f32, 0.0, 0.0, 0.0), Some(StageSection::Movement) => (1.0, (anim_time as f32).powf(0.25), 0.0, 0.0), Some(StageSection::Swing) => (1.0, 1.0, (anim_time as f32).powf(0.25), 0.0), @@ -50,38 +50,35 @@ impl Animation for LeapAnimation { next.head.position = Vec3::new(0.0, s_a.head.0, s_a.head.1); next.control.position = Vec3::new( - s_a.hc.0 + movement2 * -10.0 + movement3 * 6.0, - s_a.hc.1 + movement2 * 5.0 + movement3 * 7.0, - s_a.hc.2 + movement2 * 5.0 + movement3 * -10.0, + s_a.hc.0 + move2 * -10.0 + move3 * 6.0, + s_a.hc.1 + move2 * 5.0 + move3 * 7.0, + s_a.hc.2 + move2 * 5.0 + move3 * -10.0, ); next.control.orientation = - Quaternion::rotation_x(s_a.hc.3 + movement2 * 1.57 + movement3 * -2.3) - * Quaternion::rotation_y(s_a.hc.4 + movement2 * 1.3) - * Quaternion::rotation_z(s_a.hc.5 + movement2 * -1.0 + movement3 * 0.5); + Quaternion::rotation_x(s_a.hc.3 + move2 * 1.57 + move3 * -2.3) + * Quaternion::rotation_y(s_a.hc.4 + move2 * 1.3) + * Quaternion::rotation_z(s_a.hc.5 + move2 * -1.0 + move3 * 0.5); next.chest.orientation = - Quaternion::rotation_x( - movement1 * 0.3 + movement2 * 0.3 + movement3 * -0.9 + movement4 * 0.3, - ) * Quaternion::rotation_z(movement1 * 0.5 + movement2 * 0.2 + movement3 * -0.7); + Quaternion::rotation_x(move1 * 0.3 + move2 * 0.3 + move3 * -0.9 + move4 * 0.3) + * Quaternion::rotation_z(move1 * 0.5 + move2 * 0.2 + move3 * -0.7); - next.head.orientation = Quaternion::rotation_x(movement3 * 0.2) - * Quaternion::rotation_y(0.0 + movement2 * -0.1) - * Quaternion::rotation_z(movement1 * -0.4 + movement2 * -0.2 + movement3 * 0.6); - - //next.hand_l.position = Vec3::new(-12.0 + movement3 * 10.0, 0.0, 0.0); + next.head.orientation = Quaternion::rotation_x(move3 * 0.2) + * Quaternion::rotation_y(0.0 + move2 * -0.1) + * Quaternion::rotation_z(move1 * -0.4 + move2 * -0.2 + move3 * 0.6); next.foot_l.position = Vec3::new( -s_a.foot.0, - s_a.foot.1 + movement3 * 13.0, - s_a.foot.2 + movement3 * -2.0, + s_a.foot.1 + move3 * 13.0, + s_a.foot.2 + move3 * -2.0, ); - next.foot_l.orientation = Quaternion::rotation_x(-0.8 + movement3 * 1.7); + next.foot_l.orientation = Quaternion::rotation_x(-0.8 + move3 * 1.7); next.foot_r.position = Vec3::new( s_a.foot.0, - s_a.foot.1 + 8.0 + movement3 * -13.0, - s_a.foot.2 + 5.0 + movement3 * -5.0, + s_a.foot.1 + 8.0 + move3 * -13.0, + s_a.foot.2 + 5.0 + move3 * -5.0, ); - next.foot_r.orientation = Quaternion::rotation_x(0.9 + movement3 * -1.7); + next.foot_r.orientation = Quaternion::rotation_x(0.9 + move3 * -1.7); } else if let Some(ToolKind::Axe) = active_tool_kind { next.hand_l.position = Vec3::new(s_a.ahl.0, s_a.ahl.1, s_a.ahl.2); next.hand_l.orientation = Quaternion::rotation_x(s_a.ahl.3); @@ -93,45 +90,42 @@ impl Animation for LeapAnimation { next.head.position = Vec3::new(0.0, s_a.head.0, s_a.head.1); next.control.position = Vec3::new( - s_a.ac.0 + movement1 * 8.0, - s_a.ac.1 + movement1 * 4.0 + movement3 * 3.0, - s_a.ac.2 + movement1 * 6.0 + movement2 * 1.0 + movement3 * -14.0, + s_a.ac.0 + move1 * 8.0, + s_a.ac.1 + move1 * 4.0 + move3 * 3.0, + s_a.ac.2 + move1 * 6.0 + move2 * 1.0 + move3 * -14.0, ); next.control.orientation = Quaternion::rotation_x( - s_a.ac.3 + movement1 * -2.0 + movement2 * 0.7 + movement3 * -2.3 - ) * Quaternion::rotation_y(s_a.ac.4)// + movement1 * 0.5) - * Quaternion::rotation_z(s_a.ac.5+movement1*PI); // - movement1 * 0.2); + s_a.ac.3 + move1 * -2.0 + move2 * 0.7 + move3 * -2.3 + ) * Quaternion::rotation_y(s_a.ac.4)// + move1 * 0.5) + * Quaternion::rotation_z(s_a.ac.5+move1*PI); // - move1 * 0.2); next.torso.orientation = Quaternion::rotation_x( - -0.3 + movement2 * -1.6 * PI - + movement2 * -0.3 - + movement3 * -0.2 * PI - + movement4 * -0.1 * PI, + -0.3 + move2 * -1.6 * PI + move2 * -0.3 + move3 * -0.2 * PI + move4 * -0.1 * PI, ) * Quaternion::rotation_y(0.0) * Quaternion::rotation_z(0.0); next.head.orientation = - Quaternion::rotation_x(0.0 + movement1 * -0.4 + movement2 * 0.4 + movement3 * 0.2); + Quaternion::rotation_x(0.0 + move1 * -0.4 + move2 * 0.4 + move3 * 0.2); next.foot_l.position = Vec3::new( -s_a.foot.0, - s_a.foot.1 + movement2 * 4.0 + movement3 * -1.0, + s_a.foot.1 + move2 * 4.0 + move3 * -1.0, s_a.foot.2, ); next.foot_r.position = Vec3::new( s_a.foot.0, - s_a.foot.1 + movement2 * 4.0 + movement3 * -8.0, - s_a.foot.2 + movement3 * -3.0, + s_a.foot.1 + move2 * 4.0 + move3 * -8.0, + s_a.foot.2 + move3 * -3.0, ); next.foot_l.orientation = - Quaternion::rotation_x(movement1 * 0.9 - movement2 * 1.0 + movement3 * 1.8); + Quaternion::rotation_x(move1 * 0.9 - move2 * 1.0 + move3 * 1.8); - next.foot_r.orientation = Quaternion::rotation_x(movement1 * 0.9 - movement3 * 1.8); + next.foot_r.orientation = Quaternion::rotation_x(move1 * 0.9 - move3 * 1.8); - next.belt.orientation = Quaternion::rotation_x(movement1 * 0.22 + movement2 * 0.1); - next.shorts.orientation = Quaternion::rotation_x(movement1 * 0.3 + movement2 * 0.1); + next.belt.orientation = Quaternion::rotation_x(move1 * 0.22 + move2 * 0.1); + next.shorts.orientation = Quaternion::rotation_x(move1 * 0.3 + move2 * 0.1); next.chest.position = Vec3::new(0.0, s_a.chest.0, s_a.chest.1); } diff --git a/voxygen/anim/src/character/mod.rs b/voxygen/anim/src/character/mod.rs index bd9a6c5c82..135d142d46 100644 --- a/voxygen/anim/src/character/mod.rs +++ b/voxygen/anim/src/character/mod.rs @@ -2,7 +2,6 @@ pub mod alpha; pub mod beam; pub mod beta; pub mod block; -pub mod charge; pub mod chargeswing; pub mod climb; pub mod dance; @@ -27,19 +26,20 @@ pub mod stand; pub mod stunned; pub mod swim; pub mod swimwield; +pub mod talk; pub mod wield; // Reexports pub use self::{ alpha::AlphaAnimation, beam::BeamAnimation, beta::BetaAnimation, block::BlockAnimation, - charge::ChargeAnimation, chargeswing::ChargeswingAnimation, climb::ClimbAnimation, - dance::DanceAnimation, dash::DashAnimation, equip::EquipAnimation, - glidewield::GlideWieldAnimation, gliding::GlidingAnimation, idle::IdleAnimation, - jump::JumpAnimation, leapmelee::LeapAnimation, repeater::RepeaterAnimation, - roll::RollAnimation, run::RunAnimation, shockwave::ShockwaveAnimation, shoot::ShootAnimation, - sit::SitAnimation, sneak::SneakAnimation, spin::SpinAnimation, spinmelee::SpinMeleeAnimation, - staggered::StaggeredAnimation, stand::StandAnimation, stunned::StunnedAnimation, - swim::SwimAnimation, swimwield::SwimWieldAnimation, wield::WieldAnimation, + chargeswing::ChargeswingAnimation, climb::ClimbAnimation, dance::DanceAnimation, + dash::DashAnimation, equip::EquipAnimation, glidewield::GlideWieldAnimation, + gliding::GlidingAnimation, idle::IdleAnimation, jump::JumpAnimation, leapmelee::LeapAnimation, + repeater::RepeaterAnimation, roll::RollAnimation, run::RunAnimation, + shockwave::ShockwaveAnimation, shoot::ShootAnimation, sit::SitAnimation, sneak::SneakAnimation, + spin::SpinAnimation, spinmelee::SpinMeleeAnimation, staggered::StaggeredAnimation, + stand::StandAnimation, stunned::StunnedAnimation, swim::SwimAnimation, + swimwield::SwimWieldAnimation, talk::TalkAnimation, wield::WieldAnimation, }; use super::{make_bone, vek::*, FigureBoneData, Skeleton}; use common::comp; @@ -117,7 +117,7 @@ impl Skeleton for CharacterSkeleton { make_bone(control_mat * hand_l_mat * Mat4::::from(self.hold)), ]; // NOTE: lantern_mat.cols.w = lantern_mat * Vec4::unit_w() - (head_mat * lantern_mat.cols.w).xyz() + (lantern_mat.cols.w / 13.0).xyz() } } @@ -243,73 +243,73 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Danari, Female) => (-1.5, 7.0), }, chest: match (body.species, body.body_type) { - (_, _) => (0.0, 8.0), + _ => (0.0, 8.0), }, belt: match (body.species, body.body_type) { - (_, _) => (0.0, -2.0), + _ => (0.0, -2.0), }, back: match (body.species, body.body_type) { - (_, _) => (-3.1, 7.25), + _ => (-3.1, 7.25), }, shorts: match (body.species, body.body_type) { - (_, _) => (0.0, -5.0), + _ => (0.0, -5.0), }, hand: match (body.species, body.body_type) { - (_, _) => (7.0, -0.25, 0.5), + _ => (7.0, -0.25, 0.5), }, foot: match (body.species, body.body_type) { - (_, _) => (3.4, 0.5, 2.0), + _ => (3.4, 0.5, 2.0), }, shoulder: match (body.species, body.body_type) { - (_, _) => (5.0, 0.0, 5.0), + _ => (5.0, 0.0, 5.0), }, lantern: match (body.species, body.body_type) { - (_, _) => (5.0, 2.5, 5.5), + _ => (5.0, 2.5, 5.5), }, shl: match (body.species, body.body_type) { - (_, _) => (-0.75, -1.0, 0.5, 1.47, -0.2, 0.0), + _ => (-0.75, -1.0, 0.5, 1.47, -0.2, 0.0), }, shr: match (body.species, body.body_type) { - (_, _) => (0.75, -1.5, -2.5, 1.47, 0.3, 0.0), + _ => (0.75, -1.5, -2.5, 1.47, 0.3, 0.0), }, sc: match (body.species, body.body_type) { - (_, _) => (-7.0, 7.0, 2.0, -0.1, 0.0, 0.0), + _ => (-7.0, 7.0, 2.0, -0.1, 0.0, 0.0), }, hhl: match (body.species, body.body_type) { - (_, _) => (-0.5, -1.0, 10.0, 4.71, 0.0, 0.0), + _ => (-0.5, -1.0, 10.0, 4.71, 0.0, 0.0), }, hhr: match (body.species, body.body_type) { - (_, _) => (0.0, 0.0, 0.0, 4.71, 0.0, 0.0), + _ => (0.0, 0.0, 0.0, 4.71, 0.0, 0.0), }, hc: match (body.species, body.body_type) { - (_, _) => (6.0, 7.0, 1.0, -0.3, -1.57, 3.64), + _ => (6.0, 7.0, 1.0, -0.3, -1.57, 3.64), }, sthl: match (body.species, body.body_type) { - (_, _) => (0.0, 0.0, 6.0, 1.97, 0.0, 0.0), + _ => (0.0, 0.0, 6.0, 1.97, 0.0, 0.0), }, sthr: match (body.species, body.body_type) { - (_, _) => (0.0, 0.0, 0.0, 1.27, 0.2, 0.0), + _ => (0.0, 0.0, 0.0, 1.27, 0.2, 0.0), }, stc: match (body.species, body.body_type) { - (_, _) => (-5.0, 7.0, -2.0, -0.3, 0.15, 0.0), + _ => (-5.0, 7.0, -2.0, -0.3, 0.15, 0.0), }, ahl: match (body.species, body.body_type) { - (_, _) => (-0.5, -1.0, 7.0, 1.17, PI, 0.0), + _ => (-0.5, -1.0, 7.0, 1.17, PI, 0.0), }, ahr: match (body.species, body.body_type) { - (_, _) => (0.0, -1.0, 1.0, -2.0, 0.0, PI), + _ => (0.0, -1.0, 1.0, -2.0, 0.0, PI), }, ac: match (body.species, body.body_type) { - (_, _) => (-8.0, 11.0, 3.0, 2.0, 0.0, 0.0), + _ => (-8.0, 11.0, 3.0, 2.0, 0.0, 0.0), }, bhl: match (body.species, body.body_type) { - (_, _) => (0.0, -4.0, 1.0, 1.57, 0.0, 0.0), + _ => (0.0, -4.0, 1.0, 1.57, 0.0, 0.0), }, bhr: match (body.species, body.body_type) { - (_, _) => (1.0, 2.0, -2.0, 1.57, 0.0, 0.0), + _ => (1.0, 2.0, -2.0, 1.57, 0.0, 0.0), }, bc: match (body.species, body.body_type) { - (_, _) => (-5.0, 9.0, 1.0, 0.0, 1.2, -0.6), + _ => (-5.0, 9.0, 1.0, 0.0, 1.2, -0.6), }, } } diff --git a/voxygen/anim/src/character/repeater.rs b/voxygen/anim/src/character/repeater.rs index bf6d204d0a..75583139ac 100644 --- a/voxygen/anim/src/character/repeater.rs +++ b/voxygen/anim/src/character/repeater.rs @@ -30,7 +30,7 @@ impl Animation for RepeaterAnimation { *rate = 1.0; let mut next = (*skeleton).clone(); - let (movement1, movement2, movement3, _movement4) = match stage_section { + let (move1, move2, move3, _move4) = match stage_section { Some(StageSection::Movement) => (anim_time as f32, 0.0, 0.0, 0.0), Some(StageSection::Buildup) => (1.0, anim_time as f32, 0.0, 0.0), Some(StageSection::Shoot) => (1.0, 1.0, anim_time as f32, 0.0), @@ -52,48 +52,43 @@ impl Animation for RepeaterAnimation { next.hold.position = Vec3::new(1.2, -1.0, -5.2); next.hold.orientation = Quaternion::rotation_x(-1.7) * Quaternion::rotation_z(-0.1); - next.hold.scale = Vec3::one() * 1.0 * (1.0 - movement3); + next.hold.scale = Vec3::one() * 1.0 * (1.0 - move3); next.foot_l.position = Vec3::new( - -s_a.foot.0 + movement1 * -0.75 - 0.75, - s_a.foot.1 + movement1 * 4.0 + 4.0, - s_a.foot.2 + movement1 * 2.5 + 2.5, + -s_a.foot.0 + move1 * -0.75 - 0.75, + s_a.foot.1 + move1 * 4.0 + 4.0, + s_a.foot.2 + move1 * 2.5 + 2.5, ); - next.foot_l.orientation = - Quaternion::rotation_x(movement1 * 0.6 + 0.6 + movement2 * -0.2) - * Quaternion::rotation_z(movement1 * 0.3 + 0.3); + next.foot_l.orientation = Quaternion::rotation_x(move1 * 0.6 + 0.6 + move2 * -0.2) + * Quaternion::rotation_z(move1 * 0.3 + 0.3); next.foot_r.position = Vec3::new( - s_a.foot.0 + movement1 * 0.75 + 0.75, - s_a.foot.1 + movement1 * 4.0 + 4.0, - s_a.foot.2 + movement1 * 2.5 + 2.5, + s_a.foot.0 + move1 * 0.75 + 0.75, + s_a.foot.1 + move1 * 4.0 + 4.0, + s_a.foot.2 + move1 * 2.5 + 2.5, ); - next.foot_r.orientation = - Quaternion::rotation_x(movement1 * 0.6 + 0.6 + movement2 * -0.2) - * Quaternion::rotation_z(movement1 * -0.3 - 0.3); - next.shorts.position = Vec3::new( - 0.0, - s_a.shorts.0 + movement1 * 4.0, - s_a.shorts.1 + movement1 * 1.0, - ); - next.shorts.orientation = Quaternion::rotation_x(movement1 * 0.6); - next.belt.position = Vec3::new(0.0, s_a.belt.0 + movement1 * 2.0, s_a.belt.1); - next.belt.orientation = Quaternion::rotation_x(movement1 * 0.2); + next.foot_r.orientation = Quaternion::rotation_x(move1 * 0.6 + 0.6 + move2 * -0.2) + * Quaternion::rotation_z(move1 * -0.3 - 0.3); + next.shorts.position = + Vec3::new(0.0, s_a.shorts.0 + move1 * 4.0, s_a.shorts.1 + move1 * 1.0); + next.shorts.orientation = Quaternion::rotation_x(move1 * 0.6); + next.belt.position = Vec3::new(0.0, s_a.belt.0 + move1 * 2.0, s_a.belt.1); + next.belt.orientation = Quaternion::rotation_x(move1 * 0.2); next.control.position = Vec3::new( - s_a.bc.0 + movement1 * 5.0, - s_a.bc.1 + movement1 * 3.0, - s_a.bc.2 + movement1 * 1.0, + s_a.bc.0 + move1 * 5.0, + s_a.bc.1 + move1 * 3.0, + s_a.bc.2 + move1 * 1.0, ); - next.control.orientation = Quaternion::rotation_x(s_a.bc.3 + movement1 * 0.4) - * Quaternion::rotation_y(s_a.bc.4 + movement1 * 0.8) + next.control.orientation = Quaternion::rotation_x(s_a.bc.3 + move1 * 0.4) + * Quaternion::rotation_y(s_a.bc.4 + move1 * 0.8) * Quaternion::rotation_z(s_a.bc.5); - next.head.orientation = Quaternion::rotation_y(movement1 * 0.15 + movement2 * 0.05); + next.head.orientation = Quaternion::rotation_y(move1 * 0.15 + move2 * 0.05); next.torso.orientation = - Quaternion::rotation_x(movement1 * 0.1 + movement2 * 0.1 + movement3 * 0.15); + Quaternion::rotation_x(move1 * 0.1 + move2 * 0.1 + move3 * 0.15); next.hand_l.position = Vec3::new( - 2.0 + fire(movement3) * -6.0 - 3.0, - 1.5 + fire(movement3) * -6.0 - 3.0, + 2.0 + fire(move3) * -6.0 - 3.0, + 1.5 + fire(move3) * -6.0 - 3.0, 0.0, ); next.hand_l.orientation = Quaternion::rotation_x(1.20) diff --git a/voxygen/anim/src/character/run.rs b/voxygen/anim/src/character/run.rs index 44025d0af7..3c6621976d 100644 --- a/voxygen/anim/src/character/run.rs +++ b/voxygen/anim/src/character/run.rs @@ -50,7 +50,7 @@ impl Animation for RunAnimation { let speed = Vec2::::from(velocity).magnitude(); *rate = 1.0; let impact = (avg_vel.z).max(-8.0); - let speednorm = speed / 9.4; + let speednorm = (speed / 9.4).powf(0.6); let lab = 1.0; @@ -145,7 +145,7 @@ impl Animation for RunAnimation { next.back.orientation = Quaternion::rotation_x(-0.05 + short * 0.02 + noisea * 0.02 + noiseb * 0.02); - next.shorts.position = Vec3::new(0.0, 0.65 + s_a.shorts.0, 0.65 + s_a.shorts.1); + next.shorts.position = Vec3::new(0.0, 0.65 + s_a.shorts.0, 0.65 * speednorm + s_a.shorts.1); next.shorts.orientation = Quaternion::rotation_x(0.2 * speednorm) * Quaternion::rotation_z(short * 0.25 + tilt * -1.5) * Quaternion::rotation_y(tilt * 0.7); @@ -159,7 +159,11 @@ impl Animation for RunAnimation { Quaternion::rotation_x(0.6 * speednorm + (footrotr * -1.2) * speednorm) * Quaternion::rotation_y(footrotr * 0.4 * speednorm); - next.hand_r.position = -next.hand_l.position; + next.hand_r.position = Vec3::new( + s_a.hand.0 + foothoril * 1.3 * speednorm, + 3.0 * speednorm + s_a.hand.1 + foothoril * -7.0 * speednorm, + 1.5 * speednorm + s_a.hand.2 - foothoril * 5.5 * speednorm, + ); next.hand_r.orientation = Quaternion::rotation_x(0.6 * speednorm + (footrotl * -1.2) * speednorm) * Quaternion::rotation_y(footrotl * -0.4 * speednorm); @@ -175,7 +179,7 @@ impl Animation for RunAnimation { + side * ((footvertsl * 1.5).max(-1.0)), ); next.foot_l.orientation = Quaternion::rotation_x( - (1.0 - sideabs) * (-0.2 + foothoril * -1.3 * speednorm) + sideabs * -0.5, + (1.0 - sideabs) * (-0.2 + foothoril * -0.9 * speednorm) + sideabs * -0.5, ) * Quaternion::rotation_y( tilt * 2.0 + side * 0.3 + side * (foothoril * 0.3), ) * Quaternion::rotation_z(side * 0.2); @@ -190,7 +194,7 @@ impl Animation for RunAnimation { + side * ((footvertsr * -1.5).max(-1.0)), ); next.foot_r.orientation = Quaternion::rotation_x( - (1.0 - sideabs) * (-0.2 + foothorir * -1.3 * speednorm) + sideabs * -0.5, + (1.0 - sideabs) * (-0.2 + foothorir * -0.9 * speednorm) + sideabs * -0.5, ) * Quaternion::rotation_y( tilt * 2.0 + side * 0.3 + side * (foothorir * 0.3), ) * Quaternion::rotation_z(side * 0.2); diff --git a/voxygen/anim/src/character/shockwave.rs b/voxygen/anim/src/character/shockwave.rs index 22569a62da..e8dd676d3b 100644 --- a/voxygen/anim/src/character/shockwave.rs +++ b/voxygen/anim/src/character/shockwave.rs @@ -34,7 +34,7 @@ impl Animation for ShockwaveAnimation { *rate = 1.0; let mut next = (*skeleton).clone(); - let (movement1, movement2, movement3) = match stage_section { + let (move1, move2, move3) = match stage_section { Some(StageSection::Buildup) => (anim_time as f32, 0.0, 0.0), Some(StageSection::Swing) => (1.0, anim_time as f32, 0.0), Some(StageSection::Recover) => (1.0, 1.0, anim_time as f32), @@ -56,53 +56,53 @@ impl Animation for ShockwaveAnimation { next.control.orientation = Quaternion::rotation_x(s_a.stc.3) * Quaternion::rotation_y(s_a.stc.4); - let twist = movement1 * 0.8; + let twist = move1 * 0.8; next.control.position = Vec3::new( - s_a.stc.0 + (movement1 * 5.0) * (1.0 - movement3), - s_a.stc.1 + (movement1 * 5.0) * (1.0 - movement3), - s_a.stc.2 + (movement1 * 10.0 + movement2 * -10.0) * (1.0 - movement3), + s_a.stc.0 + (move1 * 5.0) * (1.0 - move3), + s_a.stc.1 + (move1 * 5.0) * (1.0 - move3), + s_a.stc.2 + (move1 * 10.0 + move2 * -10.0) * (1.0 - move3), ); next.control.orientation = - Quaternion::rotation_x(s_a.stc.3 + (movement1 * 0.8) * (1.0 - movement3)) + Quaternion::rotation_x(s_a.stc.3 + (move1 * 0.8) * (1.0 - move3)) * Quaternion::rotation_y( - s_a.stc.4 + (movement1 * -0.15 + movement2 * -0.15) * (1.0 - movement3), + s_a.stc.4 + (move1 * -0.15 + move2 * -0.15) * (1.0 - move3), ) - * Quaternion::rotation_z((movement1 * 0.8 + movement2 * -0.8) * (1.0 - movement3)); + * Quaternion::rotation_z((move1 * 0.8 + move2 * -0.8) * (1.0 - move3)); - next.head.orientation = Quaternion::rotation_x((movement1 * 0.4) * (1.0 - movement3)) - * Quaternion::rotation_z((twist * 0.2 + movement2 * -0.8) * (1.0 - movement3)); + next.head.orientation = Quaternion::rotation_x((move1 * 0.4) * (1.0 - move3)) + * Quaternion::rotation_z((twist * 0.2 + move2 * -0.8) * (1.0 - move3)); next.chest.position = Vec3::new( 0.0, s_a.chest.0, - s_a.chest.1 + (movement1 * 2.0 + movement2 * -4.0) * (1.0 - movement3), + s_a.chest.1 + (move1 * 2.0 + move2 * -4.0) * (1.0 - move3), ); - next.chest.orientation = Quaternion::rotation_x((movement2 * -0.8) * (1.0 - movement3)) - * Quaternion::rotation_z(twist * -0.2 + movement2 * -0.1 + (1.0 - movement3)); + next.chest.orientation = Quaternion::rotation_x((move2 * -0.8) * (1.0 - move3)) + * Quaternion::rotation_z(twist * -0.2 + move2 * -0.1 + (1.0 - move3)); - next.belt.orientation = Quaternion::rotation_x((movement2 * 0.2) * (1.0 - movement3)) - * Quaternion::rotation_z((twist * 0.6 + movement2 * -0.48) * (1.0 - movement3)); + next.belt.orientation = Quaternion::rotation_x((move2 * 0.2) * (1.0 - move3)) + * Quaternion::rotation_z((twist * 0.6 + move2 * -0.48) * (1.0 - move3)); - next.shorts.orientation = Quaternion::rotation_x((movement2 * 0.3) * (1.0 - movement3)) - * Quaternion::rotation_z((twist + movement2 * -0.8) * (1.0 - movement3)); + next.shorts.orientation = Quaternion::rotation_x((move2 * 0.3) * (1.0 - move3)) + * Quaternion::rotation_z((twist + move2 * -0.8) * (1.0 - move3)); if velocity < 0.5 { next.foot_l.position = Vec3::new( -s_a.foot.0, - s_a.foot.1 + movement1 * -7.0 + movement2 * 7.0, + s_a.foot.1 + move1 * -7.0 + move2 * 7.0, s_a.foot.2, ); - next.foot_l.orientation = Quaternion::rotation_x(movement1 * -0.8 + movement2 * 0.8) - * Quaternion::rotation_z(movement1 * 0.3 + movement2 * -0.3); + next.foot_l.orientation = Quaternion::rotation_x(move1 * -0.8 + move2 * 0.8) + * Quaternion::rotation_z(move1 * 0.3 + move2 * -0.3); next.foot_r.position = Vec3::new( s_a.foot.0, - s_a.foot.1 + movement1 * 5.0 + movement2 * -5.0, + s_a.foot.1 + move1 * 5.0 + move2 * -5.0, s_a.foot.2, ); - next.foot_r.orientation = Quaternion::rotation_y(movement1 * -0.3 + movement2 * 0.3) - * Quaternion::rotation_z(movement1 * 0.4 + movement2 * -0.4); + next.foot_r.orientation = Quaternion::rotation_y(move1 * -0.3 + move2 * 0.3) + * Quaternion::rotation_z(move1 * 0.4 + move2 * -0.4); } next } diff --git a/voxygen/anim/src/character/shoot.rs b/voxygen/anim/src/character/shoot.rs index 8a6a63e269..d16ac15bcd 100644 --- a/voxygen/anim/src/character/shoot.rs +++ b/voxygen/anim/src/character/shoot.rs @@ -63,14 +63,14 @@ impl Animation for ShootAnimation { } * 1.3; match active_tool_kind { Some(ToolKind::Staff) | Some(ToolKind::Sceptre) => { - let (movement1, movement2, movement3) = match stage_section { + let (move1, move2, move3) = match stage_section { Some(StageSection::Buildup) => (anim_time as f32, 0.0, 0.0), Some(StageSection::Swing) => (1.0, (anim_time as f32).powf(0.25), 0.0), Some(StageSection::Recover) => (1.0, 1.0, anim_time as f32), _ => (0.0, 0.0, 0.0), }; - let xmove = (movement1 as f32 * 6.0 * lab as f32 + PI).sin(); - let ymove = (movement1 as f32 * 6.0 * lab as f32 + PI * (0.5)).sin(); + let xmove = (move1 as f32 * 6.0 * lab as f32 + PI).sin(); + let ymove = (move1 as f32 * 6.0 * lab as f32 + PI * (0.5)).sin(); next.hand_l.position = Vec3::new(s_a.sthl.0, s_a.sthl.1, s_a.sthl.2); next.hand_l.orientation = Quaternion::rotation_x(s_a.sthl.3); @@ -82,22 +82,21 @@ impl Animation for ShootAnimation { next.main.orientation = Quaternion::rotation_y(0.0); next.control.position = Vec3::new( - s_a.stc.0 + (xmove * 3.0 + movement1 * -4.0) * (1.0 - movement3), - s_a.stc.1 + (2.0 + ymove * 3.0 + movement2 * 3.0) * (1.0 - movement3), + s_a.stc.0 + (xmove * 3.0 + move1 * -4.0) * (1.0 - move3), + s_a.stc.1 + (2.0 + ymove * 3.0 + move2 * 3.0) * (1.0 - move3), s_a.stc.2, ); next.control.orientation = - Quaternion::rotation_x(s_a.stc.3 + (movement2 * 0.6) * (1.0 - movement3)) - * Quaternion::rotation_y(s_a.stc.4 + (movement1 * 0.5 + movement2 * -0.5)) + Quaternion::rotation_x(s_a.stc.3 + (move2 * 0.6) * (1.0 - move3)) + * Quaternion::rotation_y(s_a.stc.4 + (move1 * 0.5 + move2 * -0.5)) * Quaternion::rotation_z( - s_a.stc.5 - - (0.2 + movement1 * -0.5 + movement2 * 0.8) * (1.0 - movement3), + s_a.stc.5 - (0.2 + move1 * -0.5 + move2 * 0.8) * (1.0 - move3), ); next.chest.orientation = - Quaternion::rotation_z((movement1 * 0.3 + movement2 * 0.2) * (1.0 - movement3)); + Quaternion::rotation_z((move1 * 0.3 + move2 * 0.2) * (1.0 - move3)); next.head.position = Vec3::new(0.0, s_a.head.0, s_a.head.1); next.head.orientation = Quaternion::rotation_z( - tilt * -2.5 + (movement1 * -0.2 + movement2 * -0.4) * (1.0 - movement3), + tilt * -2.5 + (move1 * -0.2 + move2 * -0.4) * (1.0 - move3), ); if speed < 0.5 { @@ -117,7 +116,7 @@ impl Animation for ShootAnimation { }; }, Some(ToolKind::Bow) => { - let (_movement1, movement2, _movement3) = match stage_section { + let (_move1, move2, _move3) = match stage_section { Some(StageSection::Buildup) => ((anim_time as f32).powf(0.25), 0.0, 0.0), Some(StageSection::Swing) => (1.0, anim_time as f32, 0.0), Some(StageSection::Recover) => (1.0, 1.0, (anim_time as f32).powi(4)), @@ -126,37 +125,36 @@ impl Animation for ShootAnimation { next.main.position = Vec3::new(0.0, 0.0, 0.0); next.main.orientation = Quaternion::rotation_x(0.0); next.hand_l.position = Vec3::new( - s_a.bhl.0 + movement2 * -2.0, - s_a.bhl.1 + movement2 * -6.0, - s_a.bhl.2 + movement2 * -3.0, + s_a.bhl.0 + move2 * -2.0, + s_a.bhl.1 + move2 * -6.0, + s_a.bhl.2 + move2 * -3.0, ); next.hand_l.orientation = Quaternion::rotation_x(s_a.bhl.3); next.hand_r.position = Vec3::new(s_a.bhr.0, s_a.bhr.1, s_a.bhr.2); next.hand_r.orientation = Quaternion::rotation_x(s_a.bhr.3); - next.hold.position = Vec3::new(0.0, -1.0 + movement2 * 2.0, -5.2 + movement2 * 7.0); + next.hold.position = Vec3::new(0.0, -1.0 + move2 * 2.0, -5.2 + move2 * 7.0); next.hold.orientation = Quaternion::rotation_x(-1.57); - next.hold.scale = Vec3::one() * 1.0 * (1.0 - movement2); + next.hold.scale = Vec3::one() * 1.0 * (1.0 - move2); next.control.position = Vec3::new(s_a.bc.0 + 11.0, s_a.bc.1 + 2.0, s_a.bc.2 + 8.0); - next.control.orientation = - Quaternion::rotation_x(0.0 + (movement2 as f32 * 0.1).sin()) - * Quaternion::rotation_y(s_a.bc.4 - 1.25) - * Quaternion::rotation_z(s_a.bc.5 - 0.2 + (movement2 as f32 * -0.2).sin()); + next.control.orientation = Quaternion::rotation_x(0.0 + (move2 as f32 * 0.1).sin()) + * Quaternion::rotation_y(s_a.bc.4 - 1.25) + * Quaternion::rotation_z(s_a.bc.5 - 0.2 + (move2 as f32 * -0.2).sin()); next.chest.orientation = Quaternion::rotation_z(0.8); next.head.position = Vec3::new(0.0 - 2.0, s_a.head.0, s_a.head.1); next.head.orientation = - Quaternion::rotation_z(tilt * -2.5 - 0.5 + (movement2 as f32 * 0.2).sin()); + Quaternion::rotation_z(tilt * -2.5 - 0.5 + (move2 as f32 * 0.2).sin()); if speed < 0.5 { next.chest.orientation = - Quaternion::rotation_z(0.8 + (movement2 as f32 * 0.1).sin()); + Quaternion::rotation_z(0.8 + (move2 as f32 * 0.1).sin()); next.belt.orientation = Quaternion::rotation_x(0.07) - * Quaternion::rotation_z((movement2 as f32 * -0.1).sin()); + * Quaternion::rotation_z((move2 as f32 * -0.1).sin()); next.shorts.orientation = Quaternion::rotation_x(0.08) - * Quaternion::rotation_z((movement2 as f32 * -0.15).sin()); + * Quaternion::rotation_z((move2 as f32 * -0.15).sin()); next.foot_l.position = Vec3::new(-s_a.foot.0, s_a.foot.1 - 5.0, s_a.foot.2); next.foot_l.orientation = Quaternion::rotation_x(-0.5); diff --git a/voxygen/anim/src/character/spin.rs b/voxygen/anim/src/character/spin.rs index 1c95ee58ec..fcbe305d22 100644 --- a/voxygen/anim/src/character/spin.rs +++ b/voxygen/anim/src/character/spin.rs @@ -31,23 +31,15 @@ impl Animation for SpinAnimation { *rate = 1.0; let mut next = (*skeleton).clone(); - let lab = 1.0; - let (movement1, movement2, movement3) = match stage_section { + let (movement1base, movement2base, movement3) = match stage_section { Some(StageSection::Buildup) => ((anim_time as f32).powf(0.25), 0.0, 0.0), - Some(StageSection::Swing) => (1.0, (anim_time as f32).powf(1.8), 0.0), + Some(StageSection::Swing) => (1.0, anim_time as f32, 0.0), Some(StageSection::Recover) => (1.0, 1.0, (anim_time as f32).powi(4)), _ => (0.0, 0.0, 0.0), }; - - let foot = (((5.0) - / (1.1 + 3.9 * ((anim_time as f32 * lab as f32 * 10.32).sin()).powi(2))) - .sqrt()) - * ((anim_time as f32 * lab as f32 * 10.32).sin()); - - let decel = (anim_time as f32 * 16.0 * lab as f32).min(PI / 2.0).sin(); - - let spin = (anim_time as f32 * 2.8 * lab as f32).sin(); - let spinhalf = (anim_time as f32 * 1.4 * lab as f32).sin(); + let pullback = 1.0 - movement3; + let movement1 = movement1base * pullback; + let movement2 = movement2base * pullback; next.head.position = Vec3::new(0.0, s_a.head.0, s_a.head.1); @@ -64,25 +56,28 @@ impl Animation for SpinAnimation { Quaternion::rotation_x(s_a.shr.3) * Quaternion::rotation_y(s_a.shr.4); next.control.position = Vec3::new( - s_a.sc.0 + movement1 * 2.0 + movement2 * -4.0 + movement3 * -7.0, - s_a.sc.1 + 8.0 + movement1 * 0.6 + movement3 * -10.0, + s_a.sc.0 + movement1 * 2.0 + movement2 * -12.0 + movement3 * -7.0, + s_a.sc.1 + 8.0 + movement1 * 0.6 + movement2 * -15.0 + movement3 * -10.0, s_a.sc.2 + 1.0 + movement1 * 0.6 + movement2 * 1.5 + movement3 * -4.0, ); next.control.orientation = Quaternion::rotation_x(-0.5 + s_a.sc.3 + movement1 * -1.2) - * Quaternion::rotation_y(s_a.sc.4 - 0.6 + movement1 * 1.0) + * Quaternion::rotation_y( + s_a.sc.4 - 0.6 + movement1 * 0.0 + movement2 * -1.7, + ) * Quaternion::rotation_z(s_a.sc.5 + 0.1 + movement1 * 1.57); next.head.position = Vec3::new( 0.0 + 2.0 + movement2 * -2.0, 2.0 + movement2 * -2.0 + s_a.head.0, s_a.head.1, ); - next.head.orientation = Quaternion::rotation_z(movement2 * -0.4); next.chest.orientation = Quaternion::rotation_x(movement2 * 0.15) - * Quaternion::rotation_y(movement1 * -0.1 + movement2 * 0.3 + movement3 * -0.1) + * Quaternion::rotation_y( + movement1 * -0.1 + movement2 * 0.15 + movement3 * -0.1, + ) * Quaternion::rotation_z( - -1.0 + movement1 * -0.6 + movement2 * 1.5 + movement3 * 0.5, + -1.0 + movement1 * -0.6 + movement2 * 1.0 + movement3 * 0.5, ); next.belt.orientation = Quaternion::rotation_x(movement1 * 0.1) @@ -91,10 +86,8 @@ impl Animation for SpinAnimation { next.shorts.orientation = Quaternion::rotation_x(movement1 * 0.1) * Quaternion::rotation_z(movement2.sin() * 1.5); - next.head.orientation = Quaternion::rotation_y(movement1 * 0.1 - movement2 * -0.1) - * Quaternion::rotation_z(1.07 + movement1 * 0.4 + movement2 * -1.5); - - next.torso.orientation = Quaternion::rotation_z(movement2 * 6.28); + next.head.orientation = Quaternion::rotation_y(movement1 * 0.1 + movement2 * -0.1) + * Quaternion::rotation_z(1.07 + movement1 * 0.4 + movement2 * -1.1); }, Some(ToolKind::Axe) => { @@ -115,111 +108,55 @@ impl Animation for SpinAnimation { }; next.control.position = Vec3::new( - s_a.ac.0 + (-3.0 + movement1 * 0.0 + movement2 * -2.0) * (1.0 - movement3), - s_a.ac.1 + (-3.5 + movement1 * -4.6 + movement2 * 5.0) * (1.0 - movement3), - s_a.ac.2 + (-11.0 + movement1 * 10.0 + movement2 * -4.0) * (1.0 - movement3), + s_a.ac.0 + (-3.0 + movement1 * 0.0 + movement2 * -2.0), + s_a.ac.1 + (-3.5 + movement1 * -4.6 + movement2 * 5.0), + s_a.ac.2 + (-11.0 + movement1 * 10.0 + movement2 * -4.0), ); - next.control.orientation = Quaternion::rotation_x( - s_a.ac.3 + (-2.6 + movement1 * 0.0 + movement2 * -0.6) * (1.0 - movement3), - ) * Quaternion::rotation_y( - s_a.ac.4 + (0.2 + movement1 * -0.5 + movement2 * 0.0) * (1.0 - movement3), - ) * Quaternion::rotation_z( - s_a.ac.5 + (-0.5 + movement1 * -3.0 + movement2 * 0.5) * (1.0 - movement3), - ); - next.chest.position = Vec3::new(0.0, s_a.chest.0, s_a.chest.1); - - next.chest.orientation = - Quaternion::rotation_x((0.4 + movement2 * -0.5) * (1.0 - movement3)) + next.control.orientation = + Quaternion::rotation_x(s_a.ac.3 + (-2.6 + movement1 * 0.0 + movement2 * -0.6)) * Quaternion::rotation_y( - (0.0 + movement1 * -0.1 + movement2 * 0.0) * (1.0 - movement3), + s_a.ac.4 + (0.2 + movement1 * -0.5 + movement2 * 0.0), ) * Quaternion::rotation_z( - (0.5 + movement1 * -0.6 + movement2 * 0.6) * (1.0 - movement3), + s_a.ac.5 + (-0.5 + movement1 * -3.0 + movement2 * 0.5), ); + next.chest.position = Vec3::new(0.0, s_a.chest.0, s_a.chest.1); + + next.chest.orientation = Quaternion::rotation_x(0.4 + movement2 * -0.5) + * Quaternion::rotation_y(movement1 * -0.1 + movement2 * 0.0) + * Quaternion::rotation_z(0.5 + movement1 * -0.6 + movement2 * 0.6); next.belt.orientation = Quaternion::rotation_x(movement1 * -0.2 + movement2 * 0.2); next.shorts.orientation = - Quaternion::rotation_x(0.0 + movement1 * -0.2 + movement2 * 0.2); + Quaternion::rotation_x(movement1 * -0.2 + movement2 * 0.2); - next.head.orientation = - Quaternion::rotation_y(0.0 + movement1 * 0.0 + movement3 * -0.0) - * Quaternion::rotation_z( - (1.0 + movement1 * -0.5 + movement2 * 0.0) * (1.0 - movement3), - ); + next.head.orientation = Quaternion::rotation_y(movement1 * 0.0 + movement3 * -0.0) + * Quaternion::rotation_z(1.0 + movement1 * -0.5 + movement2 * 0.0); next.torso.position = Vec3::new( 0.0, 0.0, - (-1.0 - + 1.0 * (movement1 * 0.5 * PI).sin() - + 1.0 * (movement2 * 0.5 * PI + 0.5 * PI).sin()) - * (1.0 - movement3), - ); - next.torso.orientation = Quaternion::rotation_z( - movement1.powi(2) * -6.0 + movement2 * -1.7 + movement3 * 1.4, + -1.0 + 1.0 * (movement1 * 0.5 * PI).sin() + + 1.0 * (movement2 * 0.5 * PI + 0.5 * PI).sin(), ); + next.torso.orientation = + Quaternion::rotation_z(movement1.powi(2) * -6.0 + movement2 * -1.7); next.foot_l.position = Vec3::new( - -s_a.foot.0 + (movement1 * -1.0 + movement2 * -3.0) * (1.0 - movement3), + -s_a.foot.0 + (movement1 * -1.0 + movement2 * -3.0), s_a.foot.1, - s_a.foot.2 + (movement2 * 6.0) * (1.0 - movement3), + s_a.foot.2 + (movement2 * 6.0), ); - next.foot_l.orientation = - Quaternion::rotation_x((movement1 * 0.2 + movement2 * 0.5) * (1.0 - movement3)) - * Quaternion::rotation_y((movement2 * 0.5) * (1.0 - movement3)); + next.foot_l.orientation = Quaternion::rotation_x(movement1 * 0.2 + movement2 * 0.5) + * Quaternion::rotation_y(movement2 * 0.5); next.foot_r.position = Vec3::new( s_a.foot.0, - s_a.foot.1 + (movement1 * -2.0 + movement2 * -3.0) * (1.0 - movement3), + s_a.foot.1 + (movement1 * -2.0 + movement2 * -3.0), s_a.foot.2, ); - next.foot_r.orientation = Quaternion::rotation_x( - (movement1 * -0.5 + movement2 * -0.5) * (1.0 - movement3), - ); - }, - - Some(ToolKind::Hammer) => { - next.hand_l.position = Vec3::new(-0.75, -1.0, -2.5); - next.hand_l.orientation = Quaternion::rotation_x(1.27); - next.hand_r.position = Vec3::new(0.75, -1.5, -5.5); - next.hand_r.orientation = Quaternion::rotation_x(1.27); - next.main.position = Vec3::new(0.0, 6.0, -1.0); - next.main.orientation = Quaternion::rotation_x(-0.3) - * Quaternion::rotation_y(0.0) - * Quaternion::rotation_z(0.0); - - next.control.position = Vec3::new(-4.5 + spinhalf * 4.0, 11.0, 8.0); - next.control.orientation = Quaternion::rotation_x(-1.7) - * Quaternion::rotation_y(0.2 + spin * -2.0) - * Quaternion::rotation_z(1.4 + spin * 0.1); - next.head.position = Vec3::new(0.0, -1.0 + s_a.head.0 + spin * -0.8, s_a.head.1); - next.head.orientation = Quaternion::rotation_z(spin * -0.25) - * Quaternion::rotation_x(0.0 + spin * -0.1) - * Quaternion::rotation_y(spin * -0.2); - next.chest.position = Vec3::new(0.0, s_a.chest.0, s_a.chest.1); - next.chest.orientation = Quaternion::rotation_z(spin * 0.1) - * Quaternion::rotation_x(0.0 + spin * 0.1) - * Quaternion::rotation_y(decel * -0.2); - - next.belt.position = Vec3::new(0.0, 0.0, -2.0); - next.belt.orientation = next.chest.orientation * -0.1; - - next.shorts.position = Vec3::new(0.0, 0.0, -5.0); - next.belt.orientation = next.chest.orientation * -0.08; - next.torso.orientation = Quaternion::rotation_z((spin * 7.0).max(0.3)); - - next.foot_l.position = Vec3::new(-s_a.foot.0, foot * 1.0, s_a.foot.2); - next.foot_l.orientation = Quaternion::rotation_x(foot * -1.2); - - next.foot_r.position = Vec3::new(s_a.foot.0, foot * -1.0, s_a.foot.2); - next.foot_r.orientation = Quaternion::rotation_x(foot * 1.2); - - next.lantern.orientation = - Quaternion::rotation_x(spin * -0.7 + 0.4) * Quaternion::rotation_y(spin * 0.4); - next.foot_r.orientation = Quaternion::rotation_x(foot * 1.2); - - next.lantern.orientation = - Quaternion::rotation_x(spin * -0.7 + 0.4) * Quaternion::rotation_y(spin * 0.4); + next.foot_r.orientation = + Quaternion::rotation_x(movement1 * -0.5 + movement2 * -0.5); }, _ => {}, } diff --git a/voxygen/anim/src/character/spinmelee.rs b/voxygen/anim/src/character/spinmelee.rs index 26b810d9ff..cba5ca8a50 100644 --- a/voxygen/anim/src/character/spinmelee.rs +++ b/voxygen/anim/src/character/spinmelee.rs @@ -30,7 +30,7 @@ impl Animation for SpinMeleeAnimation { s_a: &SkeletonAttr, ) -> Self::Skeleton { *rate = 1.0; - let (movement1, movement2, movement3) = match stage_section { + let (move1, move2, move3) = match stage_section { Some(StageSection::Buildup) => ((anim_time as f32).powf(0.25), 0.0, 0.0), Some(StageSection::Swing) => (1.0, anim_time as f32, 0.0), Some(StageSection::Recover) => (1.0, 1.0, (anim_time as f32).powf(4.0)), @@ -50,24 +50,19 @@ impl Animation for SpinMeleeAnimation { next.hand_r.orientation = Quaternion::rotation_x(s_a.shr.3) * Quaternion::rotation_y(s_a.shr.4); - next.control.position = Vec3::new(s_a.sc.0, s_a.sc.1, s_a.sc.2 + movement1 * 2.0); + next.control.position = Vec3::new(s_a.sc.0, s_a.sc.1, s_a.sc.2 + move1 * 2.0); next.control.orientation = - Quaternion::rotation_x(s_a.sc.3 + movement1 * -PI / 2.5 + movement3 * PI / 2.0) - * Quaternion::rotation_z( - s_a.sc.5 + movement1 * -PI / 2.0 + movement3 * PI / 2.0, - ); - next.torso.orientation = Quaternion::rotation_z(movement2 * PI * 2.0); + Quaternion::rotation_x(s_a.sc.3 + move1 * -PI / 2.5 + move3 * PI / 2.0) + * Quaternion::rotation_z(s_a.sc.5 + move1 * -PI / 2.0 + move3 * PI / 2.0); + next.torso.orientation = Quaternion::rotation_z(move2 * PI * 2.0); - next.chest.position = Vec3::new( - 0.0, - s_a.chest.0 + movement1 * -2.0, - s_a.chest.1 + movement1 * -3.0, - ); - next.chest.orientation = Quaternion::rotation_x(movement1 * -0.3) - * Quaternion::rotation_y(movement1 * 0.15 + movement3 * -0.15); + next.chest.position = + Vec3::new(0.0, s_a.chest.0 + move1 * -2.0, s_a.chest.1 + move1 * -3.0); + next.chest.orientation = Quaternion::rotation_x(move1 * -0.3) + * Quaternion::rotation_y(move1 * 0.15 + move3 * -0.15); next.head.position = Vec3::new(0.0, s_a.head.0, s_a.head.1); - next.head.orientation = Quaternion::rotation_x(movement1 * 0.2 + movement3 * 0.15) - * Quaternion::rotation_z(movement2 * 0.8 + movement3 * -0.6); + next.head.orientation = Quaternion::rotation_x(move1 * 0.2 + move3 * 0.15) + * Quaternion::rotation_z(move2 * 0.8 + move3 * -0.6); next.belt.orientation = Quaternion::rotation_x(0.1); next.shorts.orientation = Quaternion::rotation_x(0.2); }, @@ -82,63 +77,52 @@ impl Animation for SpinMeleeAnimation { next.hand_r.orientation = Quaternion::rotation_x(s_a.ahr.3) * Quaternion::rotation_z(s_a.ahr.5); - next.control.position = Vec3::new( - s_a.ac.0 + movement1 * 8.0, - s_a.ac.1, - s_a.ac.2 + movement1 * -4.0, - ); + next.control.position = + Vec3::new(s_a.ac.0 + move1 * 8.0, s_a.ac.1, s_a.ac.2 + move1 * -4.0); next.control.orientation = - Quaternion::rotation_x(s_a.ac.3 + movement1 * -0.8 * (1.0 - movement3)) - * Quaternion::rotation_y(s_a.ac.4 + movement1 * -PI * (1.0 - movement3)) - * Quaternion::rotation_z(s_a.ac.5 + movement1 * 1.2 * (1.0 - movement3)); + Quaternion::rotation_x(s_a.ac.3 + move1 * -0.8 * (1.0 - move3)) + * Quaternion::rotation_y(s_a.ac.4 + move1 * -PI * (1.0 - move3)) + * Quaternion::rotation_z(s_a.ac.5 + move1 * 1.2 * (1.0 - move3)); - next.head.orientation = - Quaternion::rotation_x(movement1 * -0.2 * (1.0 - movement3)) - * Quaternion::rotation_z(movement1 * 0.4 * (1.0 - movement3)); - next.head.position = Vec3::new(0.0, s_a.head.0 + movement1 * 2.0, s_a.head.1); + next.head.orientation = Quaternion::rotation_x(move1 * -0.2 * (1.0 - move3)) + * Quaternion::rotation_z(move1 * 0.4 * (1.0 - move3)); + next.head.position = Vec3::new(0.0, s_a.head.0 + move1 * 2.0, s_a.head.1); - next.chest.position = Vec3::new( - 0.0, - s_a.chest.0, - s_a.chest.1 + movement1 * -1.0 * (1.0 - movement3), - ); - next.chest.orientation = - Quaternion::rotation_x(movement1 * 0.3 * (1.0 - movement3)) - * Quaternion::rotation_y(movement1 * 0.3 * (1.0 - movement3)); + next.chest.position = + Vec3::new(0.0, s_a.chest.0, s_a.chest.1 + move1 * -1.0 * (1.0 - move3)); + next.chest.orientation = Quaternion::rotation_x(move1 * 0.3 * (1.0 - move3)) + * Quaternion::rotation_y(move1 * 0.3 * (1.0 - move3)); next.belt.position = Vec3::new( 0.0, 1.0 + s_a.belt.0, - s_a.belt.1 + movement1 * 0.5 * (1.0 - movement3), + s_a.belt.1 + move1 * 0.5 * (1.0 - move3), ); next.belt.orientation = Quaternion::rotation_x(0.15); next.shorts.position = Vec3::new( 0.0, - 1.0 + s_a.shorts.0 + movement1 * 1.0 * (1.0 - movement3), - s_a.shorts.1 + movement1 * 1.0 * (1.0 - movement3), + 1.0 + s_a.shorts.0 + move1 * 1.0 * (1.0 - move3), + s_a.shorts.1 + move1 * 1.0 * (1.0 - move3), ); next.shorts.orientation = - Quaternion::rotation_x(0.15 + 0.15 * movement1 * (1.0 - movement3)); + Quaternion::rotation_x(0.15 + 0.15 * move1 * (1.0 - move3)); - next.torso.orientation = Quaternion::rotation_z( - movement1 * 1.0 * (1.0 - movement3) + movement2 * -2.0 * PI, - ); + next.torso.orientation = + Quaternion::rotation_z(move1 * 1.0 * (1.0 - move3) + move2 * -2.0 * PI); next.foot_l.position = Vec3::new( -s_a.foot.0, - s_a.foot.1 + movement1 * 7.0 * (1.0 - movement3), + s_a.foot.1 + move1 * 7.0 * (1.0 - move3), s_a.foot.2, ); - next.foot_l.orientation = - Quaternion::rotation_x(movement1 * 0.8 * (1.0 - movement3)); + next.foot_l.orientation = Quaternion::rotation_x(move1 * 0.8 * (1.0 - move3)); next.foot_r.position = Vec3::new( s_a.foot.0, - s_a.foot.1 + movement1 * -3.0 * (1.0 - movement3), + s_a.foot.1 + move1 * -3.0 * (1.0 - move3), s_a.foot.2, ); - next.foot_r.orientation = - Quaternion::rotation_x(movement1 * -0.5 * (1.0 - movement3)); + next.foot_r.orientation = Quaternion::rotation_x(move1 * -0.5 * (1.0 - move3)); }, _ => {}, diff --git a/voxygen/anim/src/character/talk.rs b/voxygen/anim/src/character/talk.rs new file mode 100644 index 0000000000..f8e47ec373 --- /dev/null +++ b/voxygen/anim/src/character/talk.rs @@ -0,0 +1,54 @@ +use super::{ + super::{vek::*, Animation}, + CharacterSkeleton, SkeletonAttr, +}; +use common::comp::item::ToolKind; +use std::f32::consts::PI; + +pub struct TalkAnimation; + +impl Animation for TalkAnimation { + type Dependency = (Option, Option, f32, f64); + type Skeleton = CharacterSkeleton; + + #[cfg(feature = "use-dyn-lib")] + const UPDATE_FN: &'static [u8] = b"character_talk\0"; + + #[cfg_attr(feature = "be-dyn-lib", export_name = "character_talk")] + #[allow(clippy::approx_constant)] // TODO: Pending review in #587 + fn update_skeleton_inner( + skeleton: &Self::Skeleton, + (_active_tool_kind, _second_tool_kind, _velocity, _global_time): Self::Dependency, + anim_time: f64, + rate: &mut f32, + s_a: &SkeletonAttr, + ) -> Self::Skeleton { + *rate = 1.0; + let mut next = (*skeleton).clone(); + + let slowa = (anim_time as f32 * 6.0).sin(); + let slowb = (anim_time as f32 * 4.0 + PI / 2.0).sin(); + let slowc = (anim_time as f32 * 12.0 + PI / 2.0).sin(); + + next.head.orientation = Quaternion::rotation_x(slowc * 0.035); + next.hand_l.position = Vec3::new( + -s_a.hand.0 + 0.5 + slowb * 0.5, + s_a.hand.1 + 5.0 + slowc * 1.0, + s_a.hand.2 + 2.0 + slowa * 1.0, + ); + + next.hand_l.orientation = Quaternion::rotation_x(0.0); + + next.hand_r.position = Vec3::new( + s_a.hand.0 - 0.5 + slowb * 0.5, + s_a.hand.1 + 4.0 + slowc * -1.0, + s_a.hand.2 + 2.0 + slowa * 1.0, + ); + next.hand_l.orientation = Quaternion::rotation_y(-0.2 + slowb * 0.2 + slowa * 0.07) + * Quaternion::rotation_x(1.3 + slowa * 0.15); + next.hand_r.orientation = Quaternion::rotation_y(0.2 + slowa * -0.1 + slowb * 0.07) + * Quaternion::rotation_x(1.3 + slowb * -0.15 + slowc * 0.05); + + next + } +} diff --git a/voxygen/anim/src/character/wield.rs b/voxygen/anim/src/character/wield.rs index 510d5e8f19..5082ab4866 100644 --- a/voxygen/anim/src/character/wield.rs +++ b/voxygen/anim/src/character/wield.rs @@ -143,7 +143,7 @@ impl Animation for WieldAnimation { next.shorts.position = Vec3::new(0.0, s_a.shorts.0, s_a.shorts.1); } match active_tool_kind { - Some(ToolKind::Sword) => { + Some(ToolKind::Sword) | Some(ToolKind::SwordSimple) => { next.main.position = Vec3::new(0.0, 0.0, 0.0); next.main.orientation = Quaternion::rotation_x(0.0); @@ -218,7 +218,7 @@ impl Animation for WieldAnimation { * Quaternion::rotation_y(s_a.ac.4) * Quaternion::rotation_z(s_a.ac.5); }, - Some(ToolKind::Hammer) => { + Some(ToolKind::Hammer) | Some(ToolKind::HammerSimple) => { next.main.position = Vec3::new(0.0, 0.0, 0.0); next.main.orientation = Quaternion::rotation_x(0.0); next.hand_l.position = Vec3::new(s_a.hhl.0, s_a.hhl.1, s_a.hhl.2); diff --git a/voxygen/anim/src/fish_small/mod.rs b/voxygen/anim/src/fish_small/mod.rs index ccd2d5be42..0a644da947 100644 --- a/voxygen/anim/src/fish_small/mod.rs +++ b/voxygen/anim/src/fish_small/mod.rs @@ -80,18 +80,23 @@ impl<'a> From<&'a Body> for SkeletonAttr { Self { chest: match (body.species, body.body_type) { (Clownfish, _) => (0.0, 5.0), + (Piranha, _) => (0.0, 5.0), }, tail: match (body.species, body.body_type) { (Clownfish, _) => (-7.5, -0.5), + (Piranha, _) => (-5.5, -0.5), }, fin: match (body.species, body.body_type) { (Clownfish, _) => (2.0, 0.5, 1.0), + (Piranha, _) => (2.0, 0.5, -0.5), }, tempo: match (body.species, body.body_type) { (Clownfish, _) => 5.0, + (Piranha, _) => 5.0, }, amplitude: match (body.species, body.body_type) { (Clownfish, _) => 4.0, + (Piranha, _) => 4.0, }, } } diff --git a/voxygen/anim/src/golem/alpha.rs b/voxygen/anim/src/golem/alpha.rs index d147dfca34..8f58c6f779 100644 --- a/voxygen/anim/src/golem/alpha.rs +++ b/voxygen/anim/src/golem/alpha.rs @@ -2,12 +2,12 @@ use super::{ super::{vek::*, Animation}, GolemSkeleton, SkeletonAttr, }; -use std::f32::consts::PI; +use common::states::utils::StageSection; pub struct AlphaAnimation; impl Animation for AlphaAnimation { - type Dependency = (f32, f64); + type Dependency = (Option, f64, f64); type Skeleton = GolemSkeleton; #[cfg(feature = "use-dyn-lib")] @@ -17,78 +17,69 @@ impl Animation for AlphaAnimation { fn update_skeleton_inner( skeleton: &Self::Skeleton, - (_velocity, global_time): Self::Dependency, + (stage_section, global_time, timer): Self::Dependency, anim_time: f64, _rate: &mut f32, - s_a: &SkeletonAttr, + _s_a: &SkeletonAttr, ) -> Self::Skeleton { let mut next = (*skeleton).clone(); - let lab = 1.0; - - let slower = (((1.0) - / (0.05 + 0.95 * ((anim_time as f32 * lab as f32 * 8.0 - 0.5 * PI).sin()).powi(2))) - .sqrt()) - * ((anim_time as f32 * lab as f32 * 8.0 - 0.5 * PI).sin()) - + 1.0; - let twist = (anim_time as f32 * lab as f32 * 4.0).sin() + 0.5; - - let random = ((((2.0 - * (((global_time as f32 - anim_time as f32) * 10.0) - - (((global_time as f32 - anim_time as f32) * 10.0).round()))) - .abs()) - * 10.0) - .round()) - / 10.0; - - let switch = if random > 0.5 { 1.0 } else { -1.0 }; - - if switch > 0.0 { - next.head.position = Vec3::new(0.0, s_a.head.0, s_a.head.1) * 1.02; - next.head.orientation = Quaternion::rotation_x(-0.2); - - next.upper_torso.position = Vec3::new(0.0, s_a.upper_torso.0, s_a.upper_torso.1) / 8.0; - next.upper_torso.orientation = Quaternion::rotation_z(twist * 1.1); - - next.lower_torso.position = Vec3::new(0.0, s_a.lower_torso.0, s_a.lower_torso.1); - next.lower_torso.orientation = - Quaternion::rotation_z(twist * -1.1) * Quaternion::rotation_x(0.0); - - next.shoulder_l.position = Vec3::new(-s_a.shoulder.0, s_a.shoulder.1, s_a.shoulder.2); - next.shoulder_l.orientation = Quaternion::rotation_z(0.0) * Quaternion::rotation_x(0.0); - - next.shoulder_r.position = Vec3::new(s_a.shoulder.0, s_a.shoulder.1, s_a.shoulder.2); - next.shoulder_r.orientation = Quaternion::rotation_x(slower * 0.4); - - next.hand_l.position = Vec3::new(-s_a.hand.0, s_a.hand.1, s_a.hand.2); - next.hand_l.orientation = Quaternion::rotation_z(0.0) * Quaternion::rotation_x(0.0); - - next.hand_r.position = Vec3::new(s_a.hand.0, s_a.hand.1, s_a.hand.2); - next.hand_r.orientation = Quaternion::rotation_x(slower * 0.35); - } else { - next.head.position = Vec3::new(0.0, s_a.head.0, s_a.head.1) * 1.02; - next.head.orientation = Quaternion::rotation_z(0.0) * Quaternion::rotation_x(-0.2); - - next.upper_torso.position = Vec3::new(0.0, s_a.upper_torso.0, s_a.upper_torso.1) / 8.0; - next.upper_torso.orientation = Quaternion::rotation_z(twist * -1.1); - - next.lower_torso.position = Vec3::new(0.0, s_a.lower_torso.0, s_a.lower_torso.1); - next.lower_torso.orientation = Quaternion::rotation_z(twist * 1.1); - - next.shoulder_l.position = Vec3::new(-s_a.shoulder.0, s_a.shoulder.1, s_a.shoulder.2); - next.shoulder_l.orientation = Quaternion::rotation_x(slower * 0.4); - - next.shoulder_r.position = Vec3::new(s_a.shoulder.0, s_a.shoulder.1, s_a.shoulder.2); - next.shoulder_r.orientation = Quaternion::rotation_z(0.0); - - next.hand_l.position = Vec3::new(-s_a.hand.0, s_a.hand.1, s_a.hand.2); - next.hand_l.orientation = Quaternion::rotation_x(slower * 0.35); - - next.hand_r.position = Vec3::new(s_a.hand.0, s_a.hand.1, s_a.hand.2); - next.hand_r.orientation = Quaternion::rotation_z(0.0) * Quaternion::rotation_x(0.0); + let (move1base, move2base, move3) = match stage_section { + Some(StageSection::Buildup) => ((anim_time as f32).powf(0.25), 0.0, 0.0), + Some(StageSection::Swing) => (1.0, anim_time as f32, 0.0), + Some(StageSection::Recover) => (1.0, 1.0, (anim_time as f32).powf(4.0)), + _ => (0.0, 0.0, 0.0), }; - next.torso.position = Vec3::new(0.0, 0.0, 0.0); - next.torso.orientation = Quaternion::rotation_z(0.0); + + let pullback = 1.0 - move3; + let subtract = global_time - timer; + let check = subtract - subtract.trunc(); + let mirror = (check - 0.5).signum() as f32; + + let move1 = move1base * pullback; + let move2 = move2base * pullback; + if mirror > 0.0 { + next.head.orientation = + Quaternion::rotation_x(-0.2) * Quaternion::rotation_z(move1 * -1.2 + move2 * 2.0); + + next.upper_torso.orientation = Quaternion::rotation_x(move1 * -0.6) + * Quaternion::rotation_z(move1 * 1.2 + move2 * -3.2); + + next.lower_torso.orientation = Quaternion::rotation_z(move1 * -1.2 + move2 * 3.2) + * Quaternion::rotation_x(move1 * 0.6); + + next.shoulder_l.orientation = Quaternion::rotation_y(move1 * 0.8) + * Quaternion::rotation_x(move1 * -1.0 + move2 * 1.6); + + next.shoulder_r.orientation = Quaternion::rotation_x(move1 * 0.4); + + next.hand_l.orientation = + Quaternion::rotation_z(0.0) * Quaternion::rotation_x(move1 * -1.0 + move2 * 1.8); + + next.hand_r.orientation = + Quaternion::rotation_y(move1 * 0.5) * Quaternion::rotation_x(move1 * 0.4); + } else { + next.head.orientation = + Quaternion::rotation_x(-0.2) * Quaternion::rotation_z(move1 * 1.2 + move2 * -2.0); + + next.upper_torso.orientation = Quaternion::rotation_x(move1 * -0.6) + * Quaternion::rotation_z(move1 * -1.2 + move2 * 3.2); + + next.lower_torso.orientation = Quaternion::rotation_z(move1 * 1.2 + move2 * -3.2) + * Quaternion::rotation_x(move1 * 0.6); + + next.shoulder_l.orientation = Quaternion::rotation_x(move1 * 0.4); + + next.shoulder_r.orientation = Quaternion::rotation_y(move1 * -0.8) + * Quaternion::rotation_x(move1 * -1.0 + move2 * 1.6); + + next.hand_l.orientation = + Quaternion::rotation_y(move1 * -0.5) * Quaternion::rotation_x(move1 * 0.4); + + next.hand_r.orientation = + Quaternion::rotation_y(0.0) * Quaternion::rotation_x(move1 * -1.0 + move2 * 1.8); + }; + next.torso.position = Vec3::new(0.0, move1 * 0.7, move1 * -0.3); next } } diff --git a/voxygen/anim/src/golem/idle.rs b/voxygen/anim/src/golem/idle.rs index 7b5945750d..98d2d82ce3 100644 --- a/voxygen/anim/src/golem/idle.rs +++ b/voxygen/anim/src/golem/idle.rs @@ -41,7 +41,7 @@ impl Animation for IdleAnimation { ); next.head.scale = Vec3::one() * 1.02; next.jaw.scale = Vec3::one() * 1.02; - next.upper_torso.scale = Vec3::one() / 8.0; + next.upper_torso.scale = Vec3::one() * s_a.scaler / 8.0; next.hand_l.scale = Vec3::one() * 1.04; next.hand_r.scale = Vec3::one() * 1.04; next.leg_l.scale = Vec3::one() * 1.02; @@ -56,39 +56,32 @@ impl Animation for IdleAnimation { next.jaw.orientation = Quaternion::rotation_x(-0.1 + breathe * 0.1); next.upper_torso.position = - Vec3::new(0.0, s_a.upper_torso.0, s_a.upper_torso.1 + breathe * 0.5) / 8.0; - next.upper_torso.orientation = Quaternion::rotation_z(0.0) * Quaternion::rotation_x(0.0); + Vec3::new(0.0, s_a.upper_torso.0, s_a.upper_torso.1 + breathe * 0.5) * s_a.scaler / 8.0; next.lower_torso.position = Vec3::new(0.0, s_a.lower_torso.0, s_a.lower_torso.1 + breathe * -0.2); - next.lower_torso.orientation = Quaternion::rotation_z(0.0) * Quaternion::rotation_x(0.0); next.shoulder_l.position = Vec3::new(-s_a.shoulder.0, s_a.shoulder.1, s_a.shoulder.2); - next.shoulder_l.orientation = Quaternion::rotation_z(0.0) * Quaternion::rotation_x(-0.2); + next.shoulder_l.orientation = Quaternion::rotation_x(-0.2); next.shoulder_r.position = Vec3::new(s_a.shoulder.0, s_a.shoulder.1, s_a.shoulder.2); - next.shoulder_r.orientation = Quaternion::rotation_z(0.0) * Quaternion::rotation_x(-0.2); + next.shoulder_r.orientation = Quaternion::rotation_x(-0.2); next.hand_l.position = Vec3::new(-s_a.hand.0, s_a.hand.1, s_a.hand.2 + breathe * 0.6); - next.hand_l.orientation = Quaternion::rotation_z(0.0) * Quaternion::rotation_x(0.2); + next.hand_l.orientation = Quaternion::rotation_x(0.2); next.hand_r.position = Vec3::new(s_a.hand.0, s_a.hand.1, s_a.hand.2 + breathe * 0.6); - next.hand_r.orientation = Quaternion::rotation_z(0.0) * Quaternion::rotation_x(0.2); + next.hand_r.orientation = Quaternion::rotation_x(0.2); next.leg_l.position = Vec3::new(-s_a.leg.0, s_a.leg.1, s_a.leg.2 + breathe * -0.2) * 1.02; - next.leg_l.orientation = Quaternion::rotation_z(0.0) * Quaternion::rotation_x(0.0); next.leg_r.position = Vec3::new(s_a.leg.0, s_a.leg.1, s_a.leg.2 + breathe * -0.2) * 1.02; - next.leg_r.orientation = Quaternion::rotation_z(0.0) * Quaternion::rotation_x(0.0); next.foot_l.position = Vec3::new(-s_a.foot.0, s_a.foot.1, s_a.foot.2 + breathe * -0.2); - next.foot_l.orientation = Quaternion::rotation_z(0.0) * Quaternion::rotation_x(0.0); next.foot_r.position = Vec3::new(s_a.foot.0, s_a.foot.1, s_a.foot.2 + breathe * -0.2); - next.foot_r.orientation = Quaternion::rotation_z(0.0) * Quaternion::rotation_x(0.0); next.torso.position = Vec3::new(0.0, 0.0, 0.0); - next.torso.orientation = Quaternion::rotation_z(0.0) * Quaternion::rotation_x(0.0); next } } diff --git a/voxygen/anim/src/golem/jump.rs b/voxygen/anim/src/golem/jump.rs deleted file mode 100644 index 2f9c536c79..0000000000 --- a/voxygen/anim/src/golem/jump.rs +++ /dev/null @@ -1,54 +0,0 @@ -use super::{super::Animation, GolemSkeleton, SkeletonAttr}; -//use std::f32::consts::PI; -use super::super::vek::*; - -pub struct JumpAnimation; - -impl Animation for JumpAnimation { - type Dependency = (f32, f64); - type Skeleton = GolemSkeleton; - - #[cfg(feature = "use-dyn-lib")] - const UPDATE_FN: &'static [u8] = b"golem_jump\0"; - - #[cfg_attr(feature = "be-dyn-lib", export_name = "golem_jump")] - - fn update_skeleton_inner( - skeleton: &Self::Skeleton, - _global_time: Self::Dependency, - _anim_time: f64, - _rate: &mut f32, - s_a: &SkeletonAttr, - ) -> Self::Skeleton { - let mut next = (*skeleton).clone(); - - next.head.scale = Vec3::one() * 1.02; - next.jaw.scale = Vec3::one() * 1.02; - next.upper_torso.scale = Vec3::one() / 8.0; - next.hand_l.scale = Vec3::one() * 1.04; - next.hand_r.scale = Vec3::one() * 1.04; - next.leg_l.scale = Vec3::one() * 1.02; - next.leg_r.scale = Vec3::one() * 1.02; - - next.head.position = Vec3::new(0.0, s_a.head.0, s_a.head.1) * 1.02; - - next.upper_torso.position = Vec3::new(0.0, s_a.upper_torso.0, s_a.upper_torso.1) / 8.0; - - next.shoulder_l.position = Vec3::new(-s_a.shoulder.0, s_a.shoulder.1, s_a.shoulder.2); - - next.shoulder_r.position = Vec3::new(s_a.shoulder.0, s_a.shoulder.1, s_a.shoulder.2); - - next.hand_l.position = Vec3::new(-s_a.hand.0, s_a.hand.1, s_a.hand.2); - - next.hand_r.position = Vec3::new(s_a.hand.0, s_a.hand.1, s_a.hand.2); - - next.leg_l.position = Vec3::new(-s_a.leg.0, s_a.leg.1, s_a.leg.2) * 1.02; - - next.leg_r.position = Vec3::new(s_a.leg.0, s_a.leg.1, s_a.leg.2) * 1.02; - - next.foot_l.position = Vec3::new(-s_a.foot.0, s_a.foot.1, s_a.foot.2) / 8.0; - - next.foot_r.position = Vec3::new(s_a.foot.0, s_a.foot.1, s_a.foot.2) / 8.0; - next - } -} diff --git a/voxygen/anim/src/golem/mod.rs b/voxygen/anim/src/golem/mod.rs index a3bcf69f60..919cda89cf 100644 --- a/voxygen/anim/src/golem/mod.rs +++ b/voxygen/anim/src/golem/mod.rs @@ -1,14 +1,13 @@ pub mod alpha; pub mod idle; -pub mod jump; pub mod run; pub mod shockwave; pub mod spinmelee; // Reexports pub use self::{ - alpha::AlphaAnimation, idle::IdleAnimation, jump::JumpAnimation, run::RunAnimation, - shockwave::ShockwaveAnimation, spinmelee::SpinMeleeAnimation, + alpha::AlphaAnimation, idle::IdleAnimation, run::RunAnimation, shockwave::ShockwaveAnimation, + spinmelee::SpinMeleeAnimation, }; use super::{make_bone, vek::*, FigureBoneData, Skeleton}; @@ -82,6 +81,8 @@ pub struct SkeletonAttr { hand: (f32, f32, f32), leg: (f32, f32, f32), foot: (f32, f32, f32), + scaler: f32, + tempo: f32, } impl<'a> std::convert::TryFrom<&'a comp::Body> for SkeletonAttr { @@ -106,6 +107,8 @@ impl Default for SkeletonAttr { hand: (0.0, 0.0, 0.0), leg: (0.0, 0.0, 0.0), foot: (0.0, 0.0, 0.0), + scaler: 0.0, + tempo: 0.0, } } } @@ -117,34 +120,52 @@ impl<'a> From<&'a Body> for SkeletonAttr { head: match (body.species, body.body_type) { (StoneGolem, _) => (0.0, 2.0), (Treant, _) => (18.0, -8.0), + (ClayGolem, _) => (2.0, 9.0), }, jaw: match (body.species, body.body_type) { (StoneGolem, _) => (0.0, 0.0), (Treant, _) => (-6.5, -1.0), + (ClayGolem, _) => (0.0, 0.0), }, upper_torso: match (body.species, body.body_type) { (StoneGolem, _) => (0.0, 34.5), (Treant, _) => (0.0, 28.5), + (ClayGolem, _) => (0.0, 26.5), }, lower_torso: match (body.species, body.body_type) { (StoneGolem, _) => (0.0, -10.5), (Treant, _) => (0.0, -10.5), + (ClayGolem, _) => (0.0, -4.5), }, shoulder: match (body.species, body.body_type) { (StoneGolem, _) => (8.0, -1.5, 4.0), (Treant, _) => (8.0, 4.5, -3.0), + (ClayGolem, _) => (8.0, 4.5, 3.0), }, hand: match (body.species, body.body_type) { (StoneGolem, _) => (12.5, -1.0, -7.0), (Treant, _) => (8.5, -1.0, -7.0), + (ClayGolem, _) => (8.5, -1.0, -7.0), }, leg: match (body.species, body.body_type) { (StoneGolem, _) => (4.0, 0.0, -3.5), (Treant, _) => (2.0, 9.5, -1.0), + (ClayGolem, _) => (1.0, 0.5, -6.0), }, foot: match (body.species, body.body_type) { (StoneGolem, _) => (3.5, 0.5, -9.5), (Treant, _) => (3.5, -5.0, -8.5), + (ClayGolem, _) => (3.5, -1.0, -8.5), + }, + scaler: match (body.species, body.body_type) { + (StoneGolem, _) => 1.8, + (Treant, _) => 1.8, + (ClayGolem, _) => 1.8, + }, + tempo: match (body.species, body.body_type) { + (StoneGolem, _) => 1.0, + (Treant, _) => 1.0, + (ClayGolem, _) => 1.0, }, } } diff --git a/voxygen/anim/src/golem/run.rs b/voxygen/anim/src/golem/run.rs index 1f37f2f21f..7365851001 100644 --- a/voxygen/anim/src/golem/run.rs +++ b/voxygen/anim/src/golem/run.rs @@ -7,7 +7,7 @@ use std::f32::consts::PI; pub struct RunAnimation; impl Animation for RunAnimation { - type Dependency = (f32, Vec3, Vec3, f64); + type Dependency = (Vec3, Vec3, Vec3, f64, f32); type Skeleton = GolemSkeleton; #[cfg(feature = "use-dyn-lib")] @@ -17,37 +17,43 @@ impl Animation for RunAnimation { fn update_skeleton_inner( skeleton: &Self::Skeleton, - (_velocity, orientation, last_ori, _global_time): Self::Dependency, - anim_time: f64, + (velocity, orientation, last_ori, _global_time, acc_vel): Self::Dependency, + _anim_time: f64, _rate: &mut f32, s_a: &SkeletonAttr, ) -> Self::Skeleton { let mut next = (*skeleton).clone(); + let speed = Vec2::::from(velocity).magnitude(); - let lab = 0.45; //.65 + let lab = 0.45 * s_a.tempo; + let speednorm = (speed / 7.0).powf(0.6); let foothoril = (((1.0) - / (0.4 + (0.6) * ((anim_time as f32 * 16.0 * lab as f32 + PI * 1.4).sin()).powi(2))) + / (0.4 + (0.6) * ((acc_vel * 2.0 * lab as f32 + PI * 1.4).sin()).powi(2))) .sqrt()) - * ((anim_time as f32 * 16.0 * lab as f32 + PI * 1.4).sin()); + * ((acc_vel * 2.0 * lab as f32 + PI * 1.4).sin()) + * speednorm; let foothorir = (((1.0) - / (0.4 + (0.6) * ((anim_time as f32 * 16.0 * lab as f32 + PI * 0.4).sin()).powi(2))) + / (0.4 + (0.6) * ((acc_vel * 2.0 * lab as f32 + PI * 0.4).sin()).powi(2))) .sqrt()) - * ((anim_time as f32 * 16.0 * lab as f32 + PI * 0.4).sin()); - let footvertl = (anim_time as f32 * 16.0 * lab as f32).sin(); - let footvertr = (anim_time as f32 * 16.0 * lab as f32 + PI).sin(); + * ((acc_vel * 2.0 * lab as f32 + PI * 0.4).sin()) + * speednorm; + let footvertl = (acc_vel * 2.0 * lab as f32).sin() * speednorm; + let footvertr = (acc_vel * 2.0 * lab as f32 + PI).sin() * speednorm; - let footrotl = (((5.0) - / (2.5 + (2.5) * ((anim_time as f32 * 16.0 * lab as f32 + PI * 1.4).sin()).powi(2))) + let footrotl = (((1.0) + / (0.5 + (0.5) * ((acc_vel * 2.0 * lab as f32 + PI * 1.4).sin()).powi(2))) .sqrt()) - * ((anim_time as f32 * 16.0 * lab as f32 + PI * 1.4).sin()); + * ((acc_vel * 2.0 * lab as f32 + PI * 1.4).sin()) + * speednorm; - let footrotr = (((5.0) - / (1.0 + (4.0) * ((anim_time as f32 * 16.0 * lab as f32 + PI * 0.4).sin()).powi(2))) + let footrotr = (((1.0) + / (0.2 + (0.8) * ((acc_vel * 2.0 * lab as f32 + PI * 0.4).sin()).powi(2))) .sqrt()) - * ((anim_time as f32 * 16.0 * lab as f32 + PI * 0.4).sin()); + * ((acc_vel * 2.0 * lab as f32 + PI * 0.4).sin()) + * speednorm; - let short = (anim_time as f32 * lab as f32 * 16.0).sin(); - let shortalt = (anim_time as f32 * lab as f32 * 16.0 + PI / 2.0).sin(); + let short = (acc_vel * lab as f32 * 2.0).sin() * speednorm; + let shortalt = (acc_vel * lab as f32 * 2.0 + PI / 2.0).sin() * speednorm; let ori: Vec2 = Vec2::from(orientation); let last_ori = Vec2::from(last_ori); let tilt = if ::vek::Vec2::new(ori, last_ori) @@ -64,19 +70,20 @@ impl Animation for RunAnimation { next.head.scale = Vec3::one() * 1.02; next.jaw.scale = Vec3::one() * 1.02; - next.upper_torso.scale = Vec3::one() / 8.0; + next.upper_torso.scale = Vec3::one() * s_a.scaler / 8.0; next.hand_l.scale = Vec3::one() * 1.04; next.hand_r.scale = Vec3::one() * 1.04; next.leg_l.scale = Vec3::one() * 1.02; next.leg_r.scale = Vec3::one() * 1.02; next.head.position = Vec3::new(0.0, s_a.head.0, s_a.head.1) * 1.02; - next.head.orientation = Quaternion::rotation_z(short * -0.3) * Quaternion::rotation_x(-0.2); + next.head.orientation = + Quaternion::rotation_z(short * -0.3) * Quaternion::rotation_x(-0.2 * speednorm); next.jaw.position = Vec3::new(0.0, s_a.jaw.0, s_a.jaw.1) * 1.02; next.upper_torso.position = - Vec3::new(0.0, s_a.upper_torso.0, s_a.upper_torso.1 + short * 1.0) / 8.0; + Vec3::new(0.0, s_a.upper_torso.0, s_a.upper_torso.1 + short * 1.0) * s_a.scaler / 8.0; next.upper_torso.orientation = Quaternion::rotation_z(tilt * -4.0 + short * 0.40); next.lower_torso.position = Vec3::new(0.0, s_a.lower_torso.0, s_a.lower_torso.1); @@ -85,32 +92,32 @@ impl Animation for RunAnimation { next.shoulder_l.position = Vec3::new(-s_a.shoulder.0, s_a.shoulder.1, s_a.shoulder.2); next.shoulder_l.orientation = Quaternion::rotation_z(footrotl * 0.07) * Quaternion::rotation_y(0.15) - * Quaternion::rotation_x(footrotl * -0.25); + * Quaternion::rotation_x(-0.2 + footrotl * -0.25); next.shoulder_r.position = Vec3::new(s_a.shoulder.0, s_a.shoulder.1, s_a.shoulder.2); next.shoulder_r.orientation = Quaternion::rotation_z(footrotr * -0.07) - * Quaternion::rotation_y(-0.15) - * Quaternion::rotation_x(footrotr * -0.25); + * Quaternion::rotation_y(-0.15 * speednorm) + * Quaternion::rotation_x(-0.2 + footrotr * -0.25); next.hand_l.position = Vec3::new(-s_a.hand.0, s_a.hand.1, s_a.hand.2); next.hand_l.orientation = Quaternion::rotation_x(0.3 + footrotl * -0.06) - * Quaternion::rotation_y(0.1) - * Quaternion::rotation_z(-0.35 + footrotl * -0.1); + * Quaternion::rotation_y(0.1 * speednorm) + * Quaternion::rotation_z(-0.35 * speednorm + footrotl * -0.1); next.hand_r.position = Vec3::new(s_a.hand.0, s_a.hand.1, s_a.hand.2); next.hand_r.orientation = Quaternion::rotation_x(0.3 + footrotr * -0.06) - * Quaternion::rotation_y(-0.1) - * Quaternion::rotation_z(0.35 + footrotr * 0.1); + * Quaternion::rotation_y(-0.1 * speednorm) + * Quaternion::rotation_z(0.35 * speednorm + footrotr * 0.1); next.leg_l.position = Vec3::new(-s_a.leg.0, s_a.leg.1, s_a.leg.2) * 1.02; next.leg_l.orientation = Quaternion::rotation_x(footrotl * 0.3) - * Quaternion::rotation_y(0.1) + * Quaternion::rotation_y(0.1 * speednorm) * Quaternion::rotation_z(footrotl * -0.2); next.leg_r.position = Vec3::new(s_a.leg.0, s_a.leg.1, s_a.leg.2) * 1.02; next.leg_r.orientation = Quaternion::rotation_x(footrotr * 0.3) - * Quaternion::rotation_y(-0.1) + * Quaternion::rotation_y(-0.1 * speednorm) * Quaternion::rotation_z(footrotr * 0.2); next.foot_l.position = Vec3::new( @@ -119,7 +126,7 @@ impl Animation for RunAnimation { s_a.foot.2 + (footvertl * 3.0).max(0.0), ); next.foot_l.orientation = - Quaternion::rotation_x(footrotl * 0.2) * Quaternion::rotation_y(-0.08); + Quaternion::rotation_x(footrotl * 0.2) * Quaternion::rotation_y(-0.08 * speednorm); next.foot_r.position = Vec3::new( s_a.foot.0, @@ -128,10 +135,10 @@ impl Animation for RunAnimation { ); next.foot_r.orientation = Quaternion::rotation_z(0.0) * Quaternion::rotation_x(footrotr * 0.2) - * Quaternion::rotation_y(0.08); + * Quaternion::rotation_y(0.08 * speednorm); next.torso.position = Vec3::new(0.0, 0.0, 0.0); - next.torso.orientation = Quaternion::rotation_x(-0.2); + next.torso.orientation = Quaternion::rotation_x(-0.2 * speednorm); next } } diff --git a/voxygen/anim/src/golem/shockwave.rs b/voxygen/anim/src/golem/shockwave.rs index 1072138087..5f5ef09bee 100644 --- a/voxygen/anim/src/golem/shockwave.rs +++ b/voxygen/anim/src/golem/shockwave.rs @@ -2,12 +2,13 @@ use super::{ super::{vek::*, Animation}, GolemSkeleton, SkeletonAttr, }; +use common::states::utils::StageSection; use std::f32::consts::PI; pub struct ShockwaveAnimation; impl Animation for ShockwaveAnimation { - type Dependency = (f32, f64); + type Dependency = (Option, f32, f64); type Skeleton = GolemSkeleton; #[cfg(feature = "use-dyn-lib")] @@ -17,85 +18,61 @@ impl Animation for ShockwaveAnimation { fn update_skeleton_inner( skeleton: &Self::Skeleton, - (velocity, _global_time): Self::Dependency, + (stage_section, velocity, _global_time): Self::Dependency, anim_time: f64, _rate: &mut f32, s_a: &SkeletonAttr, ) -> Self::Skeleton { let mut next = (*skeleton).clone(); - let lab = 1.0; - let breathe = (anim_time as f32 * lab as f32 + 1.5 * PI).sin(); - let twist = anim_time as f32 * lab as f32 * 2.5; + let (move1base, move2base, move3) = match stage_section { + Some(StageSection::Buildup) => (anim_time as f32, 0.0, 0.0), + Some(StageSection::Swing) => (1.0, anim_time as f32, 0.0), + Some(StageSection::Recover) => (1.0, 1.0, (anim_time as f32).powf(2.0)), + _ => (0.0, 0.0, 0.0), + }; + + let pullback = 1.0 - move3; + let move1 = move1base * pullback; + let move2 = move2base * pullback; - let slower = (((1.0) - / (0.00001 - + 0.9999 * ((anim_time as f32 * lab as f32 * 2.0 - 0.5 * PI).sin()).powi(2))) - .sqrt()) - * ((anim_time as f32 * lab as f32 * 2.0 - 0.5 * PI).sin()) - + 1.0; next.head.position = Vec3::new(0.0, s_a.head.0, s_a.head.1) * 1.02; - next.head.orientation = - Quaternion::rotation_z((-twist * 2.0).max(-PI)) * Quaternion::rotation_x(0.0); + next.head.orientation = Quaternion::rotation_z(move1 * -PI); - next.upper_torso.position = Vec3::new( - 0.0, - s_a.upper_torso.0, - s_a.upper_torso.1 + slower * -3.0 + breathe * 1.0, - ) / 8.0; - next.upper_torso.orientation = - Quaternion::rotation_z((twist * 2.0).min(PI)) * Quaternion::rotation_x(0.0); + next.upper_torso.position = + Vec3::new(0.0, s_a.upper_torso.0, s_a.upper_torso.1 + move2 * -5.0) * s_a.scaler / 8.0; + next.upper_torso.orientation = Quaternion::rotation_z(move1 * -PI); next.lower_torso.position = - Vec3::new(0.0, s_a.lower_torso.0, s_a.lower_torso.1 + slower * 1.0); - next.lower_torso.orientation = - Quaternion::rotation_z((-twist * 2.0).max(-PI)) * Quaternion::rotation_x(0.0); + Vec3::new(0.0, s_a.lower_torso.0, s_a.lower_torso.1 + move2 * 2.0); + next.lower_torso.orientation = Quaternion::rotation_z(move1 * PI); next.shoulder_l.position = Vec3::new( -s_a.shoulder.0 - 2.0, s_a.shoulder.1, - s_a.shoulder.2 - slower * 1.0, + s_a.shoulder.2 + move2 * -1.0, ); - next.shoulder_l.orientation = Quaternion::rotation_y(0.6 + slower * -0.3); + next.shoulder_l.orientation = Quaternion::rotation_y(move1 * 1.0 + move2 * -1.2); next.shoulder_r.position = Vec3::new( s_a.shoulder.0 + 2.0, s_a.shoulder.1, - s_a.shoulder.2 - slower * 1.0, + s_a.shoulder.2 + move2 * -1.0, ); - next.shoulder_r.orientation = Quaternion::rotation_y(-0.6 + slower * 0.3); + next.shoulder_r.orientation = Quaternion::rotation_y(move1 * -1.0 + move2 * 1.2); - next.hand_l.position = Vec3::new( - -s_a.hand.0 - 1.0, - s_a.hand.1, - s_a.hand.2 - slower * 0.5 + breathe * -1.0, - ); - next.hand_l.orientation = Quaternion::rotation_y(-0.6 + slower * 0.3); + next.hand_l.orientation = Quaternion::rotation_y(move1 * -1.0 + move2 * 1.2); - next.hand_r.position = Vec3::new( - s_a.hand.0 + 1.0, - s_a.hand.1, - s_a.hand.2 - slower * 0.5 + breathe * -1.0, - ); next.hand_r.orientation = - Quaternion::rotation_z(0.0) * Quaternion::rotation_y(0.6 + slower * -0.3); + Quaternion::rotation_z(0.0) * Quaternion::rotation_y(move1 * 1.0 + move2 * -1.2); if velocity < 0.5 { - next.leg_l.position = - Vec3::new(-s_a.leg.0, s_a.leg.1, s_a.leg.2 + slower * -0.5) * 1.02; + next.leg_l.position = Vec3::new(-s_a.leg.0, s_a.leg.1, s_a.leg.2 + move2 * 2.0) * 1.02; - next.leg_r.position = Vec3::new(s_a.leg.0, s_a.leg.1, s_a.leg.2 + slower * -0.5) * 1.02; + next.leg_r.position = Vec3::new(s_a.leg.0, s_a.leg.1, s_a.leg.2 + move2 * 2.0) * 1.02; - next.foot_l.position = Vec3::new( - -s_a.foot.0, - s_a.foot.1, - s_a.foot.2 + slower * 2.5 + breathe * -1.0, - ); + next.foot_l.position = Vec3::new(-s_a.foot.0, s_a.foot.1, s_a.foot.2 + move2); - next.foot_r.position = Vec3::new( - s_a.foot.0, - s_a.foot.1, - s_a.foot.2 + slower * 2.5 + breathe * -1.0, - ); + next.foot_r.position = Vec3::new(s_a.foot.0, s_a.foot.1, s_a.foot.2 + move2); } else { } next diff --git a/voxygen/anim/src/golem/spinmelee.rs b/voxygen/anim/src/golem/spinmelee.rs index 7cda164165..9d283a2edb 100644 --- a/voxygen/anim/src/golem/spinmelee.rs +++ b/voxygen/anim/src/golem/spinmelee.rs @@ -38,7 +38,8 @@ impl Animation for SpinMeleeAnimation { next.head.orientation = Quaternion::rotation_z(movement2 * -2.0 * PI) * Quaternion::rotation_x(-0.2); - next.upper_torso.position = Vec3::new(0.0, s_a.upper_torso.0, s_a.upper_torso.1) / 8.0; + next.upper_torso.position = + Vec3::new(0.0, s_a.upper_torso.0, s_a.upper_torso.1) * s_a.scaler / 8.0; next.upper_torso.orientation = Quaternion::rotation_z(movement2 * 2.0 * PI); next.lower_torso.position = diff --git a/voxygen/anim/src/lib.rs b/voxygen/anim/src/lib.rs index ffe1380b00..4e6a9cbbc8 100644 --- a/voxygen/anim/src/lib.rs +++ b/voxygen/anim/src/lib.rs @@ -40,6 +40,7 @@ macro_rules! skeleton_impls { } pub mod biped_large; +pub mod biped_small; pub mod bird_medium; pub mod bird_small; pub mod character; diff --git a/voxygen/anim/src/quadruped_low/mod.rs b/voxygen/anim/src/quadruped_low/mod.rs index e7c936a5d1..1476a30a1b 100644 --- a/voxygen/anim/src/quadruped_low/mod.rs +++ b/voxygen/anim/src/quadruped_low/mod.rs @@ -131,6 +131,8 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Sandshark, _) => (8.5, 0.5), (Hakulaq, _) => (8.0, 10.0), (Lavadrake, _) => (7.0, 8.0), + (Basilisk, _) => (11.0, 13.5), + (Deadwood, _) => (2.0, -3.0), }, head_lower: match (body.species, body.body_type) { (Crocodile, _) => (8.0, 0.0), @@ -146,6 +148,8 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Sandshark, _) => (13.5, -10.5), (Hakulaq, _) => (10.5, 1.0), (Lavadrake, _) => (11.5, -6.0), + (Basilisk, _) => (8.5, -6.5), + (Deadwood, _) => (0.0, 0.0), }, jaw: match (body.species, body.body_type) { (Crocodile, _) => (2.5, -3.0), @@ -161,6 +165,8 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Sandshark, _) => (-8.0, -5.5), (Hakulaq, _) => (-6.5, -4.0), (Lavadrake, _) => (3.0, -5.0), + (Basilisk, _) => (1.5, 1.0), + (Deadwood, _) => (-1.0, 4.0), }, chest: match (body.species, body.body_type) { (Crocodile, _) => (0.0, 5.0), @@ -176,6 +182,8 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Sandshark, _) => (0.0, 20.0), (Hakulaq, _) => (0.0, 13.5), (Lavadrake, _) => (0.0, 16.5), + (Basilisk, _) => (0.0, 16.5), + (Deadwood, _) => (0.0, 12.0), }, tail_rear: match (body.species, body.body_type) { (Crocodile, _) => (-12.5, -1.0), @@ -191,6 +199,8 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Sandshark, _) => (-10.0, 0.5), (Hakulaq, _) => (-9.0, -2.0), (Lavadrake, _) => (-12.0, -2.0), + (Basilisk, _) => (-10.0, -3.0), + (Deadwood, _) => (-15.0, 4.0), }, tail_front: match (body.species, body.body_type) { (Crocodile, _) => (-6.0, 0.0), @@ -206,6 +216,8 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Sandshark, _) => (-13.0, -8.0), (Hakulaq, _) => (-6.0, -5.5), (Lavadrake, _) => (-7.0, -4.5), + (Basilisk, _) => (-2.5, -4.5), + (Deadwood, _) => (-1.0, 4.0), }, feet_f: match (body.species, body.body_type) { (Crocodile, _) => (3.5, 6.0, -1.0), @@ -221,6 +233,8 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Sandshark, _) => (5.5, 2.0, -8.0), (Hakulaq, _) => (4.5, 2.0, -4.5), (Lavadrake, _) => (4.5, 4.0, -6.5), + (Basilisk, _) => (6.5, 4.0, -7.5), + (Deadwood, _) => (3.5, 4.0, -5.0), }, feet_b: match (body.species, body.body_type) { (Crocodile, _) => (3.5, -6.0, -1.0), @@ -236,6 +250,8 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Sandshark, _) => (3.5, -15.0, -14.0), (Hakulaq, _) => (3.5, -8.0, -4.5), (Lavadrake, _) => (3.5, -8.0, -6.5), + (Basilisk, _) => (4.5, -13.0, -7.5), + (Deadwood, _) => (3.5, -6.0, -5.0), }, lean: match (body.species, body.body_type) { (Pangolin, _) => (0.4, 0.0), @@ -247,27 +263,27 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Salamander, _) => (1.4), (Monitor, _) => (1.1), (Asp, _) => (1.4), - (Tortoise, _) => (1.0), (Rocksnapper, _) => (1.4), + (Hakulaq, _) => (1.3), (Pangolin, _) => (1.3), (Maneater, _) => (1.4), - (Sandshark, _) => (1.0), - (Hakulaq, _) => (1.0), (Lavadrake, _) => (1.4), + (Basilisk, _) => (1.6), + _ => (1.0), }, tempo: match (body.species, body.body_type) { (Crocodile, _) => (0.7), (Alligator, _) => (0.7), - (Salamander, _) => (0.75), + (Salamander, _) => (0.85), (Monitor, _) => (1.4), - (Asp, _) => (1.0), (Tortoise, _) => (0.7), (Rocksnapper, _) => (0.7), + (Hakulaq, _) => (1.2), (Pangolin, _) => (1.15), (Maneater, _) => (0.9), - (Sandshark, _) => (1.0), - (Hakulaq, _) => (1.0), (Lavadrake, _) => (1.1), + (Basilisk, _) => (0.8), + _ => (1.0), }, } } diff --git a/voxygen/anim/src/quadruped_low/run.rs b/voxygen/anim/src/quadruped_low/run.rs index b1d1851637..2942df30f7 100644 --- a/voxygen/anim/src/quadruped_low/run.rs +++ b/voxygen/anim/src/quadruped_low/run.rs @@ -7,7 +7,7 @@ use std::f32::consts::PI; pub struct RunAnimation; impl Animation for RunAnimation { - type Dependency = (f32, Vec3, Vec3, f64, Vec3); + type Dependency = (f32, Vec3, Vec3, f64, Vec3, f32); type Skeleton = QuadrupedLowSkeleton; #[cfg(feature = "use-dyn-lib")] @@ -16,46 +16,49 @@ impl Animation for RunAnimation { #[cfg_attr(feature = "be-dyn-lib", export_name = "quadruped_low_run")] fn update_skeleton_inner( skeleton: &Self::Skeleton, - (_velocity, orientation, last_ori, _global_time, avg_vel): Self::Dependency, - anim_time: f64, + (velocity, orientation, last_ori, _global_time, avg_vel, acc_vel): Self::Dependency, + _anim_time: f64, _rate: &mut f32, s_a: &SkeletonAttr, ) -> Self::Skeleton { let mut next = (*skeleton).clone(); + let speed = (Vec2::::from(velocity).magnitude()).min(15.0); - let lab = 0.7 * s_a.tempo; - let x_tilt = avg_vel.z.atan2(avg_vel.xy().magnitude()).max(-0.7); + let speednorm = (speed / 15.0).powf(0.25); - let short = (((1.0) - / (0.72 + 0.28 * ((anim_time as f32 * 16.0 * lab as f32 + PI * 0.25).sin()).powi(2))) - .sqrt()) - * ((anim_time as f32 * 16.0 * lab as f32 + PI * 0.25).sin()); - let shortalt = (anim_time as f32 * 16.0 * lab as f32 + PI * 0.25).sin(); + let lab = 0.8 * s_a.tempo; + let x_tilt = avg_vel.z.atan2(avg_vel.xy().magnitude()).max(-0.7) * speednorm; - let foothoril = (((1.0) - / (0.4 + (0.6) * ((anim_time as f32 * 16.0 * lab as f32 + PI * 1.45).sin()).powi(2))) - .sqrt()) - * ((anim_time as f32 * 16.0 * lab as f32 + PI * 1.45).sin()); - let footvertl = (anim_time as f32 * 16.0 * lab as f32 + PI * 0.0).sin(); + let short = (((1.0) / (0.72 + 0.28 * ((acc_vel * lab as f32 + PI * 0.25).sin()).powi(2))) + .sqrt()) + * ((acc_vel * lab as f32 + PI * 0.25).sin()) + * speednorm; + let shortalt = (acc_vel * lab as f32 + PI * 0.25).sin(); - let foothorir = (((1.0) - / (0.4 + (0.6) * ((anim_time as f32 * 16.0 * lab as f32 + PI * 0.45).sin()).powi(2))) - .sqrt()) - * ((anim_time as f32 * 16.0 * lab as f32 + PI * 0.45).sin()); - let footvertr = (anim_time as f32 * 16.0 * lab as f32 + PI).sin(); + let foothoril = + (((1.0) / (0.4 + (0.6) * ((acc_vel * lab as f32 + PI * 1.45).sin()).powi(2))).sqrt()) + * ((acc_vel * lab as f32 + PI * 1.45).sin()) + * speednorm; + let footvertl = (acc_vel * lab as f32 + PI * 0.0).sin() * speednorm; + + let foothorir = + (((1.0) / (0.4 + (0.6) * ((acc_vel * lab as f32 + PI * 0.45).sin()).powi(2))).sqrt()) + * ((acc_vel * lab as f32 + PI * 0.45).sin()) + * speednorm; + let footvertr = (acc_vel * lab as f32 + PI).sin() * speednorm; //back feet - let foothorilb = (((1.0) - / (0.4 + (0.6) * ((anim_time as f32 * 16.0 * lab as f32 + PI * 1.05).sin()).powi(2))) - .sqrt()) - * ((anim_time as f32 * 16.0 * lab as f32 + PI * 1.05).sin()); - let footvertlb = (anim_time as f32 * 16.0 * lab as f32 + PI * (-0.4)).sin(); + let foothorilb = + (((1.0) / (0.4 + (0.6) * ((acc_vel * lab as f32 + PI * 1.05).sin()).powi(2))).sqrt()) + * ((acc_vel * lab as f32 + PI * 1.05).sin()) + * speednorm; + let footvertlb = (acc_vel * lab as f32 + PI * (-0.4)).sin() * speednorm; - let foothorirb = (((1.0) - / (0.4 + (0.6) * ((anim_time as f32 * 16.0 * lab as f32 + PI * 0.05).sin()).powi(2))) - .sqrt()) - * ((anim_time as f32 * 16.0 * lab as f32 + PI * 0.05).sin()); - let footvertrb = (anim_time as f32 * 16.0 * lab as f32 + PI * 0.6).sin(); + let foothorirb = + (((1.0) / (0.4 + (0.6) * ((acc_vel * lab as f32 + PI * 0.05).sin()).powi(2))).sqrt()) + * ((acc_vel * lab as f32 + PI * 0.05).sin()) + * speednorm; + let footvertrb = (acc_vel * lab as f32 + PI * 0.6).sin() * speednorm; let ori: Vec2 = Vec2::from(orientation); let last_ori = Vec2::from(last_ori); @@ -94,14 +97,14 @@ impl Animation for RunAnimation { s_a.tail_front.1 + s_a.lean.0 * 2.0, ); next.tail_front.orientation = - Quaternion::rotation_z(shortalt * 0.18 * s_a.lean.1 + tilt * 1.8) - * Quaternion::rotation_y(shortalt * 0.1) + Quaternion::rotation_z(shortalt * -0.18 * s_a.lean.1 + tilt * 1.8) + * Quaternion::rotation_y(shortalt * -0.1) * Quaternion::rotation_x(0.06 - s_a.lean.0 * 1.2 + x_tilt * 0.2); next.tail_rear.position = Vec3::new(0.0, s_a.tail_rear.0, s_a.tail_rear.1); next.tail_rear.orientation = - Quaternion::rotation_z(shortalt * 0.25 * s_a.lean.1 + tilt * 1.6) - * Quaternion::rotation_y(shortalt * 0.1) + Quaternion::rotation_z(shortalt * -0.25 * s_a.lean.1 + tilt * 1.6) + * Quaternion::rotation_y(shortalt * 0.08) * Quaternion::rotation_x(-0.04 + x_tilt * 0.5); next.chest.position = Vec3::new(0.0, s_a.chest.0, s_a.chest.1) * s_a.scaler / 11.0; @@ -112,20 +115,20 @@ impl Animation for RunAnimation { next.foot_fl.position = Vec3::new( -s_a.feet_f.0, s_a.feet_f.1 + foothoril * -2.0, - s_a.feet_f.2 + 1.0 + ((footvertl * -1.8).max(-0.0)), + s_a.feet_f.2 + 1.0 * speednorm + ((footvertl * -1.8).max(-0.0)), ); next.foot_fl.orientation = - Quaternion::rotation_x(-0.2 + footvertl * -0.45 * s_a.lean.1 - s_a.lean.0) + Quaternion::rotation_x(-0.2 * speednorm + footvertl * -0.45 * s_a.lean.1 - s_a.lean.0) * Quaternion::rotation_y(tilt * -1.0) * Quaternion::rotation_z(foothoril * 0.4 * s_a.lean.1 + tilt * -2.0); next.foot_fr.position = Vec3::new( s_a.feet_f.0, s_a.feet_f.1 + foothorir * -2.0, - s_a.feet_f.2 + 1.0 + ((footvertr * -1.8).max(-0.0)), + s_a.feet_f.2 + 1.0 * speednorm + ((footvertr * -1.8).max(-0.0)), ); next.foot_fr.orientation = - Quaternion::rotation_x(-0.2 + footvertr * -0.45 * s_a.lean.1 - s_a.lean.0) + Quaternion::rotation_x(-0.2 * speednorm + footvertr * -0.45 * s_a.lean.1 - s_a.lean.0) * Quaternion::rotation_y(tilt * -1.0) * Quaternion::rotation_z(foothorir * -0.4 * s_a.lean.1 + tilt * -2.0); @@ -134,18 +137,20 @@ impl Animation for RunAnimation { s_a.feet_b.1 + foothorilb * -1.0, s_a.feet_b.2 + ((footvertlb * -1.2).max(-0.0)), ); - next.foot_bl.orientation = Quaternion::rotation_x(-0.2 + footvertlb * -0.5 - s_a.lean.0) - * Quaternion::rotation_y(tilt * -1.0) - * Quaternion::rotation_z(foothorilb * 0.4 + tilt * -2.0); + next.foot_bl.orientation = + Quaternion::rotation_x(-0.2 * speednorm + footvertlb * -0.5 - s_a.lean.0) + * Quaternion::rotation_y(tilt * -1.0) + * Quaternion::rotation_z(foothorilb * 0.4 + tilt * -2.0); next.foot_br.position = Vec3::new( s_a.feet_b.0, s_a.feet_b.1 + foothorirb * -1.0, s_a.feet_b.2 + ((footvertrb * -1.2).max(-0.0)), ); - next.foot_br.orientation = Quaternion::rotation_x(-0.2 + footvertrb * -0.5 - s_a.lean.0) - * Quaternion::rotation_y(tilt * -1.0) - * Quaternion::rotation_z(foothorirb * -0.4 + tilt * -2.0); + next.foot_br.orientation = + Quaternion::rotation_x(-0.2 * speednorm + footvertrb * -0.5 - s_a.lean.0) + * Quaternion::rotation_y(tilt * -1.0) + * Quaternion::rotation_z(foothorirb * -0.4 + tilt * -2.0); next } diff --git a/voxygen/anim/src/quadruped_medium/feed.rs b/voxygen/anim/src/quadruped_medium/feed.rs index f136d7ef77..eb0f1f1ef8 100644 --- a/voxygen/anim/src/quadruped_medium/feed.rs +++ b/voxygen/anim/src/quadruped_medium/feed.rs @@ -22,13 +22,12 @@ impl Animation for FeedAnimation { s_a: &SkeletonAttr, ) -> Self::Skeleton { let mut next = (*skeleton).clone(); - let slower = (anim_time as f32 * 1.0 + PI).sin(); let slow = (anim_time as f32 * 3.5 + PI).sin(); let fast = (anim_time as f32 * 5.0).sin(); let faster = (anim_time as f32 * 14.0).sin(); - let transition = (anim_time as f32).min(0.4) / 0.4; + let transition = (((anim_time as f32).powf(2.0)).min(1.0)) * s_a.feed.1; let look = Vec2::new( ((global_time + anim_time) as f32 / 8.0) @@ -43,25 +42,21 @@ impl Animation for FeedAnimation { * 0.25, ); - next.neck.scale = Vec3::one() * 1.02; - next.torso_front.scale = Vec3::one() * s_a.scaler / 11.0; - next.torso_back.scale = Vec3::one() * 0.99; - next.neck.scale = Vec3::one() * 1.02; - next.jaw.scale = Vec3::one() * 1.02; - if s_a.feed.0 { - next.head.position = Vec3::new(0.0, s_a.head.0, s_a.head.1 + slower * 0.2); + next.head.position = Vec3::new( + 0.0, + s_a.head.0, + s_a.head.1 + slower * 0.2 + transition * 1.5, + ); next.head.orientation = Quaternion::rotation_z(0.3 * look.x) - * Quaternion::rotation_x( - fast * 0.05 + faster * 0.08 + 0.8 * s_a.feed.1 * transition, - ); + * Quaternion::rotation_x(fast * 0.05 + faster * 0.08 + transition * -0.5); next.neck.position = Vec3::new( 0.0, - s_a.neck.0, - s_a.neck.1 + slower * 0.1 - 4.0 * transition, + s_a.neck.0 + transition * 1.0, + s_a.neck.1 + slower * 0.1 + transition * 1.5, ); - next.neck.orientation = Quaternion::rotation_x(-2.5 * s_a.feed.1 * transition); + next.neck.orientation = Quaternion::rotation_x(transition * -0.5); next.jaw.position = Vec3::new(0.0, s_a.jaw.0 - slower * 0.12, s_a.jaw.1 + slow * 0.2); next.jaw.orientation = Quaternion::rotation_x((fast * 0.18 + faster * 0.26).min(0.0)); @@ -74,48 +69,68 @@ impl Animation for FeedAnimation { next.jaw.position = Vec3::new(0.0, s_a.jaw.0 - slower * 0.12, s_a.jaw.1 + slow * 0.2 + 0.5); - next.jaw.orientation = Quaternion::rotation_x(slow * 0.05 - 0.08); + next.jaw.orientation = + Quaternion::rotation_x(slow * 0.05 * (anim_time as f32).min(1.0) - 0.08); } next.tail.position = Vec3::new(0.0, s_a.tail.0, s_a.tail.1); next.tail.orientation = Quaternion::rotation_z(0.0 + slow * 0.2 + look.x); - next.torso_front.position = - Vec3::new(0.0, s_a.torso_front.0, s_a.torso_front.1 + slower * 0.3) * s_a.scaler / 11.0; - next.torso_front.orientation = Quaternion::rotation_y(slow * 0.02); + next.torso_front.position = Vec3::new( + 0.0, + s_a.torso_front.0, + s_a.torso_front.1 + slower * 0.3 + transition * -6.0, + ) * s_a.scaler + / 11.0; + next.torso_front.orientation = + Quaternion::rotation_x(transition * -0.7) * Quaternion::rotation_y(slow * 0.02); next.torso_back.position = Vec3::new(0.0, s_a.torso_back.0, s_a.torso_back.1 + slower * 0.2); - next.torso_back.orientation = Quaternion::rotation_y(-slow * 0.005); + next.torso_back.orientation = + Quaternion::rotation_x(transition * 0.5) * Quaternion::rotation_y(-slow * 0.005); next.ears.position = Vec3::new(0.0, s_a.ears.0, s_a.ears.1); next.ears.orientation = Quaternion::rotation_x(0.0 + slower * 0.03); next.leg_fl.position = Vec3::new( -s_a.leg_f.0, - s_a.leg_f.1, - s_a.leg_f.2 + slow * -0.15 + slower * -0.15, + s_a.leg_f.1 + transition * -2.2, + s_a.leg_f.2 + slow * -0.15 + slower * -0.15 + transition * 2.4, ); - next.leg_fl.orientation = Quaternion::rotation_y(slow * -0.02); + next.leg_fl.orientation = + Quaternion::rotation_x(transition * 1.0) * Quaternion::rotation_y(slow * -0.02); next.leg_fr.position = Vec3::new( s_a.leg_f.0, - s_a.leg_f.1, - s_a.leg_f.2 + slow * 0.15 + slower * -0.15, + s_a.leg_f.1 + transition * -2.2, + s_a.leg_f.2 + slow * 0.15 + slower * -0.15 + transition * 2.4, ); - next.leg_fr.orientation = Quaternion::rotation_y(slow * -0.02); + next.leg_fr.orientation = + Quaternion::rotation_x(transition * 1.0) * Quaternion::rotation_y(slow * -0.02); - next.leg_bl.position = Vec3::new(-s_a.leg_b.0, s_a.leg_b.1, s_a.leg_b.2 + slower * -0.3); - next.leg_bl.orientation = Quaternion::rotation_y(slow * -0.02); + next.leg_bl.position = Vec3::new( + -s_a.leg_b.0, + s_a.leg_b.1, + s_a.leg_b.2 + slower * -0.3 + transition * -1.3, + ); + next.leg_bl.orientation = + Quaternion::rotation_x(transition * 0.2) * Quaternion::rotation_y(slow * -0.02); - next.leg_br.position = Vec3::new(s_a.leg_b.0, s_a.leg_b.1, s_a.leg_b.2 + slower * -0.3); - next.leg_br.orientation = Quaternion::rotation_y(slow * -0.02); + next.leg_br.position = Vec3::new( + s_a.leg_b.0, + s_a.leg_b.1, + s_a.leg_b.2 + slower * -0.3 + transition * -1.3, + ); + next.leg_br.orientation = + Quaternion::rotation_x(transition * 0.2) * Quaternion::rotation_y(slow * -0.02); next.foot_fl.position = Vec3::new(-s_a.feet_f.0, s_a.feet_f.1, s_a.feet_f.2 + slower * -0.2); + next.foot_fl.orientation = Quaternion::rotation_x(transition * -0.3); next.foot_fr.position = Vec3::new(s_a.feet_f.0, s_a.feet_f.1, s_a.feet_f.2 + slower * -0.2); - + next.foot_fr.orientation = Quaternion::rotation_x(transition * -0.3); next.foot_bl.position = Vec3::new(-s_a.feet_b.0, s_a.feet_b.1, s_a.feet_b.2 + slower * -0.2); diff --git a/voxygen/anim/src/quadruped_medium/idle.rs b/voxygen/anim/src/quadruped_medium/idle.rs index d2a168bec4..54cafabc67 100644 --- a/voxygen/anim/src/quadruped_medium/idle.rs +++ b/voxygen/anim/src/quadruped_medium/idle.rs @@ -112,7 +112,6 @@ impl Animation for IdleAnimation { next.foot_fl.position = Vec3::new(-s_a.feet_f.0, s_a.feet_f.1, s_a.feet_f.2 + slower * -0.2); - next.foot_fl.orientation = Quaternion::rotation_x(0.0); next.foot_fr.position = Vec3::new(s_a.feet_f.0, s_a.feet_f.1, s_a.feet_f.2 + slower * -0.2); diff --git a/voxygen/anim/src/quadruped_medium/mod.rs b/voxygen/anim/src/quadruped_medium/mod.rs index 10f87dd25c..6e8a02bcae 100644 --- a/voxygen/anim/src/quadruped_medium/mod.rs +++ b/voxygen/anim/src/quadruped_medium/mod.rs @@ -144,7 +144,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { head: match (body.species, body.body_type) { (Grolgar, _) => (0.0, -1.0), (Saber, _) => (5.0, -3.0), - (Tuskram, _) => (2.0, 1.0), + (Tuskram, _) => (0.0, 0.0), (Lion, _) => (4.5, 2.0), (Tarasque, _) => (-4.0, 3.5), (Tiger, _) => (2.0, 1.0), @@ -162,7 +162,15 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Zebra, _) => (3.0, -2.0), (Antelope, _) => (1.5, 2.5), (Kelpie, _) => (4.0, -1.0), - (Horse, _) => (0.5, 1.5), + (Horse, _) => (4.5, 2.5), + (Barghest, _) => (0.5, -2.5), + (Cattle, Male) => (0.5, 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), }, neck: match (body.species, body.body_type) { (Grolgar, _) => (1.0, -1.0), @@ -184,12 +192,20 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Zebra, _) => (1.0, 3.5), (Antelope, _) => (0.5, 2.5), (Kelpie, _) => (2.0, 1.0), - (Horse, _) => (1.5, 1.5), + (Horse, _) => (-2.5, -1.5), + (Barghest, _) => (0.5, -0.5), + (Cattle, Male) => (0.0, 0.0), + (Cattle, Female) => (0.0, 0.0), + (Darkhound, _) => (1.0, 1.5), + (Highland, _) => (0.0, 1.5), + (Yak, _) => (0.0, 0.0), + (Panda, _) => (0.5, 0.0), + (Bear, _) => (0.5, 0.0), }, jaw: match (body.species, body.body_type) { (Grolgar, _) => (7.0, 2.0), (Saber, _) => (2.5, -2.0), - (Tuskram, _) => (5.5, -3.5), + (Tuskram, _) => (4.0, -5.0), (Lion, _) => (3.5, -4.0), (Tarasque, _) => (9.0, -9.5), (Tiger, _) => (3.0, -3.5), @@ -207,11 +223,19 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Antelope, _) => (3.0, 0.5), (Kelpie, _) => (1.0, 1.0), (Horse, _) => (4.0, 1.0), + (Barghest, _) => (6.5, -3.0), + (Cattle, Male) => (5.0, -5.5), + (Cattle, Female) => (5.0, -5.0), + (Darkhound, _) => (2.0, -2.0), + (Highland, _) => (5.0, -6.0), + (Yak, _) => (6.0, -8.0), + (Panda, _) => (3.0, -3.0), + (Bear, _) => (3.5, -2.0), }, tail: match (body.species, body.body_type) { (Grolgar, _) => (-11.5, -0.5), (Saber, _) => (-11.0, 0.0), - (Tuskram, _) => (-9.0, 2.0), + (Tuskram, _) => (-8.0, 2.0), (Lion, _) => (-11.0, 1.0), (Tarasque, _) => (-11.0, 0.0), (Tiger, _) => (-13.5, 3.0), @@ -229,11 +253,19 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Antelope, _) => (-10.0, 2.0), (Kelpie, _) => (-9.0, 3.0), (Horse, _) => (-9.0, 1.5), + (Barghest, _) => (-7.0, -4.0), + (Cattle, Male) => (-8.0, 3.5), + (Cattle, Female) => (-8.0, 5.5), + (Darkhound, _) => (-9.0, -3.0), + (Highland, _) => (-9.0, 5.0), + (Yak, _) => (-8.0, 2.5), + (Panda, _) => (-9.5, 0.0), + (Bear, _) => (-10.0, -0.5), }, torso_front: match (body.species, body.body_type) { (Grolgar, _) => (10.0, 13.0), (Saber, _) => (14.0, 13.0), - (Tuskram, _) => (10.0, 14.5), + (Tuskram, _) => (10.0, 16.0), (Lion, _) => (10.0, 12.5), (Tarasque, _) => (11.5, 17.5), (Tiger, _) => (10.0, 13.0), @@ -251,11 +283,19 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Antelope, _) => (10.0, 14.0), (Kelpie, _) => (10.0, 16.0), (Horse, _) => (7.0, 16.0), + (Barghest, _) => (11.5, 15.5), + (Cattle, Male) => (7.0, 15.5), + (Cattle, Female) => (7.0, 14.5), + (Darkhound, _) => (7.0, 14.0), + (Highland, _) => (7.0, 12.5), + (Yak, _) => (7.0, 15.5), + (Panda, _) => (7.0, 13.5), + (Bear, _) => (7.0, 14.5), }, torso_back: match (body.species, body.body_type) { (Grolgar, _) => (-10.0, 1.5), (Saber, _) => (-13.5, 0.0), - (Tuskram, _) => (-12.5, -2.0), + (Tuskram, _) => (-12.0, -2.5), (Lion, _) => (-12.0, -0.5), (Tarasque, _) => (-14.0, -1.0), (Tiger, _) => (-13.0, -0.5), @@ -273,11 +313,19 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Antelope, _) => (-7.0, 0.0), (Kelpie, _) => (-8.0, -1.0), (Horse, _) => (-8.0, -1.5), + (Barghest, _) => (-9.0, -1.5), + (Cattle, Male) => (-8.0, -0.5), + (Cattle, Female) => (-10.0, -2.0), + (Darkhound, _) => (-12.0, 0.5), + (Highland, _) => (-8.0, -0.5), + (Yak, _) => (-8.0, -0.5), + (Panda, _) => (-11.0, -0.5), + (Bear, _) => (-11.0, -0.5), }, ears: match (body.species, body.body_type) { (Grolgar, _) => (5.0, 8.0), (Saber, _) => (3.0, 5.5), - (Tuskram, _) => (5.5, 12.0), + (Tuskram, _) => (0.0, 0.0), (Lion, _) => (2.0, 3.5), (Tarasque, _) => (12.0, -3.0), (Tiger, _) => (2.5, 4.0), @@ -295,11 +343,19 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Antelope, _) => (2.5, 5.0), (Kelpie, _) => (1.0, 7.5), (Horse, _) => (1.0, 7.0), + (Barghest, _) => (12.0, -3.0), + (Cattle, Male) => (2.0, -1.5), + (Cattle, Female) => (2.0, -1.5), + (Darkhound, _) => (1.0, 2.5), + (Highland, _) => (2.0, -1.5), + (Yak, _) => (3.0, -5.0), + (Panda, _) => (1.0, 4.0), + (Bear, _) => (1.0, 4.0), }, leg_f: match (body.species, body.body_type) { (Grolgar, _) => (7.5, -5.5, -1.0), (Saber, _) => (7.0, -4.0, -2.5), - (Tuskram, _) => (6.0, -6.5, -4.0), + (Tuskram, _) => (8.5, -4.5, -2.0), (Lion, _) => (6.5, -6.5, -1.5), (Tarasque, _) => (7.0, -8.0, -6.0), (Tiger, _) => (6.0, -6.0, -1.5), @@ -317,11 +373,19 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Antelope, _) => (4.0, -4.5, -2.5), (Kelpie, _) => (4.5, -3.5, -3.5), (Horse, _) => (4.5, -2.5, -3.0), + (Barghest, _) => (9.5, 0.0, -2.5), + (Cattle, Male) => (5.5, -2.0, -2.5), + (Cattle, Female) => (5.5, -2.5, -1.0), + (Darkhound, _) => (4.0, -6.5, -2.0), + (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), }, leg_b: match (body.species, body.body_type) { (Grolgar, _) => (6.0, -6.5, -4.0), (Saber, _) => (6.0, -7.0, -3.5), - (Tuskram, _) => (5.0, -4.5, -2.5), + (Tuskram, _) => (6.0, -5.5, -2.5), (Lion, _) => (6.0, -5.0, -1.5), (Tarasque, _) => (6.0, -6.5, -6.5), (Tiger, _) => (6.0, -7.0, -1.0), @@ -339,11 +403,19 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Antelope, _) => (3.5, -7.5, -3.5), (Kelpie, _) => (3.5, -7.0, -2.5), (Horse, _) => (3.5, -7.0, -2.0), + (Barghest, _) => (7.0, -3.5, -5.5), + (Cattle, Male) => (4.0, -7.0, -1.0), + (Cattle, Female) => (4.0, -6.5, 0.0), + (Darkhound, _) => (4.0, -6.5, -3.0), + (Highland, _) => (4.5, -7.0, 0.0), + (Yak, _) => (4.5, -6.0, -1.0), + (Panda, _) => (7.0, -7.0, -2.0), + (Bear, _) => (6.5, -6.5, -2.0), }, feet_f: match (body.species, body.body_type) { (Grolgar, _) => (0.0, 0.0, -4.0), (Saber, _) => (1.0, -3.5, -2.5), - (Tuskram, _) => (0.5, 0.5, -3.0), + (Tuskram, _) => (-1.0, -1.5, -6.0), (Lion, _) => (0.5, 0.5, -3.5), (Tarasque, _) => (1.0, 0.0, -3.0), (Tiger, _) => (0.5, 0.0, -4.5), @@ -361,11 +433,19 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Antelope, _) => (-0.5, 0.0, -3.5), (Kelpie, _) => (-0.5, 0.5, -4.5), (Horse, _) => (-0.5, 0.5, -5.0), + (Barghest, _) => (2.0, 2.5, -6.0), + (Cattle, Male) => (-0.5, 1.0, -5.0), + (Cattle, Female) => (-0.5, 0.5, -5.5), + (Darkhound, _) => (0.0, 0.5, -4.0), + (Highland, _) => (-0.5, 0.5, -4.5), + (Yak, _) => (-0.5, 0.0, -5.0), + (Panda, _) => (-1.0, 2.0, -4.5), + (Bear, _) => (0.0, 2.0, -5.5), }, feet_b: match (body.species, body.body_type) { (Grolgar, _) => (0.5, -1.5, -3.0), (Saber, _) => (1.0, -1.0, -1.0), - (Tuskram, _) => (0.5, -1.0, -2.5), + (Tuskram, _) => (0.5, -1.0, -3.0), (Lion, _) => (0.5, -1.0, -3.0), (Tarasque, _) => (1.5, -1.0, -2.5), (Tiger, _) => (0.5, -1.0, -4.0), @@ -383,6 +463,14 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Antelope, _) => (-0.5, -1.5, -3.5), (Kelpie, _) => (0.5, -0.5, -3.5), (Horse, _) => (0.5, -1.5, -3.5), + (Barghest, _) => (0.5, 1.0, -4.5), + (Cattle, Male) => (-0.5, -0.5, -5.0), + (Cattle, Female) => (-0.5, -1.0, -3.5), + (Darkhound, _) => (0.0, -1.0, -3.5), + (Highland, _) => (-0.5, -0.5, -3.0), + (Yak, _) => (-0.5, -0.5, -5.0), + (Panda, _) => (-0.5, 0.5, -5.0), + (Bear, _) => (0.5, 0.5, -6.0), }, scaler: match (body.species, body.body_type) { (Grolgar, _) => (1.3), @@ -391,43 +479,33 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Lion, _) => (1.3), (Tarasque, _) => (1.3), (Tiger, _) => (1.2), - (Wolf, _) => (1.0), - (Frostfang, _) => (1.0), - (Mouflon, _) => (1.0), (Catoblepas, _) => (1.3), - (Bonerattler, _) => (1.0), - (Deer, _) => (1.0), - (Hirdrasil, _) => (1.0), (Roshwalr, _) => (1.2), - (Donkey, _) => (1.0), - (Camel, _) => (1.0), - (Zebra, _) => (1.0), - (Antelope, _) => (1.0), - (Kelpie, _) => (1.0), - (Horse, _) => (1.0), + (Barghest, _) => (1.5), + (Antelope, _) => (1.2), + (Kelpie, _) => (1.3), + (Donkey, _) => (1.2), + (Horse, _) => (1.4), + (Zebra, _) => (1.3), + (Cattle, _) => (1.7), + (Highland, _) => (1.7), + (Bear, _) => (1.7), + (Yak, _) => (1.7), + (Camel, _) => (1.4), + _ => (1.0), }, startangle: match (body.species, body.body_type) { //changes the default angle of front feet (Grolgar, _) => (-0.3), (Saber, _) => (-0.2), (Tuskram, _) => (0.3), - (Lion, _) => (0.2), + (Lion, _) => (-0.1), (Tarasque, _) => (-0.5), - (Tiger, _) => (0.0), - (Wolf, _) => (0.0), - (Frostfang, _) => (0.0), - (Mouflon, _) => (0.0), (Catoblepas, _) => (-0.5), (Bonerattler, _) => (-0.7), - (Deer, _) => (0.0), - (Hirdrasil, _) => (0.0), (Roshwalr, _) => (-0.3), - (Donkey, _) => (0.0), - (Camel, _) => (0.0), - (Zebra, _) => (0.0), - (Antelope, _) => (0.0), - (Kelpie, _) => (0.0), - (Horse, _) => (0.0), + (Barghest, _) => (-0.5), + _ => (0.0), }, tempo: match (body.species, body.body_type) { (Grolgar, _) => (0.85), @@ -435,55 +513,55 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Tuskram, _) => (0.9), (Lion, _) => (0.95), (Tarasque, _) => (0.95), - (Tiger, _) => (1.0), (Wolf, _) => (1.1), - (Frostfang, _) => (1.0), (Mouflon, _) => (0.85), (Catoblepas, _) => (1.1), - (Bonerattler, _) => (1.0), (Deer, _) => (0.85), (Hirdrasil, _) => (0.85), (Roshwalr, _) => (0.75), (Donkey, _) => (0.85), - (Camel, _) => (1.0), (Zebra, _) => (0.85), - (Antelope, _) => (1.0), (Kelpie, _) => (0.85), (Horse, _) => (0.85), + (Barghest, _) => (0.95), + (Darkhound, _) => (1.1), + (Cattle, _) => (0.8), + (Highland, _) => (0.8), + (Bear, _) => (0.8), + (Yak, _) => (0.8), + (Camel, _) => (1.8), + _ => (1.0), }, spring: match (body.species, body.body_type) { (Grolgar, _) => (0.9), (Saber, _) => (0.9), (Tuskram, _) => (0.9), - (Lion, _) => (1.0), - (Tarasque, _) => (1.0), - (Tiger, _) => (1.0), (Wolf, _) => (1.2), - (Frostfang, _) => (1.0), (Mouflon, _) => (0.9), (Catoblepas, _) => (0.55), (Bonerattler, _) => (1.1), (Deer, _) => (0.9), (Hirdrasil, _) => (1.1), - (Roshwalr, _) => (1.0), (Donkey, _) => (0.85), (Camel, _) => (0.85), (Zebra, _) => (0.85), (Antelope, _) => (1.2), (Kelpie, _) => (0.95), (Horse, _) => (0.85), + (Darkhound, _) => (1.2), + _ => (1.0), }, feed: match (body.species, body.body_type) { (Tuskram, _) => (true, 0.5), - (Mouflon, _) => (true, 1.0), + (Mouflon, _) => (true, 0.7), (Deer, _) => (true, 1.0), (Hirdrasil, _) => (true, 0.9), (Donkey, _) => (false, 1.0), - (Zebra, _) => (false, 1.0), + (Zebra, _) => (true, 1.0), (Antelope, _) => (false, 0.9), (Kelpie, _) => (false, 1.0), (Horse, _) => (true, 0.85), - (_, _) => (false, 0.0), + _ => (false, 0.0), }, } } diff --git a/voxygen/anim/src/quadruped_medium/run.rs b/voxygen/anim/src/quadruped_medium/run.rs index cfe718d469..827099f754 100644 --- a/voxygen/anim/src/quadruped_medium/run.rs +++ b/voxygen/anim/src/quadruped_medium/run.rs @@ -24,13 +24,13 @@ impl Animation for RunAnimation { let mut next = (*skeleton).clone(); let speed = (Vec2::::from(velocity).magnitude()).min(24.0); *rate = 1.0; - //let increasefreqtest = (((1.0/speed)*3.0).round()).min(5.0); - let lab = 0.72; //0.72 - let amplitude = (speed / 24.0).max(0.125); - let amplitude2 = (speed * 1.4 / 24.0).sqrt().max(0.3); - let amplitude3 = (speed / 24.0).sqrt().max(0.175); + let lab = 0.72; + let amplitude = (speed / 24.0).powf(0.6); + let amplitude2 = (speed / 24.0).powf(0.6); + let amplitude3 = (speed / 24.0).powf(0.6); let speedmult = s_a.tempo; - let canceler = (speed / 24.0).sqrt(); + let canceler = (speed / 24.0).powf(0.6); + let short = (((1.0) / (0.72 + 0.28 @@ -90,7 +90,7 @@ impl Animation for RunAnimation { } else { 0.0 } * 1.3; - let x_tilt = avg_vel.z.atan2(avg_vel.xy().magnitude()); + let x_tilt = avg_vel.z.atan2(avg_vel.xy().magnitude()) * canceler; next.neck.scale = Vec3::one() * 1.02; next.jaw.scale = Vec3::one() * 1.02; @@ -106,24 +106,24 @@ impl Animation for RunAnimation { next.ears.scale = Vec3::one() * 1.02; //Gallop - next.head.position = Vec3::new(0.0, s_a.head.0, s_a.head.1); + next.head.position = Vec3::new(0.0, s_a.head.0, s_a.head.1 + shortalt * -0.5); next.head.orientation = Quaternion::rotation_x( - look.y * 0.3 / ((canceler).max(0.5)) + amplitude * short * -0.03 - 0.1, + look.y * 0.3 / ((canceler).max(0.5)) + amplitude * short * 0.05 - 0.1, ) * Quaternion::rotation_z( look.x * 0.3 / ((canceler).max(0.5)) + tilt * -1.2, ) * Quaternion::rotation_y(tilt * 0.8); - next.neck.position = Vec3::new(0.0, s_a.neck.0, s_a.neck.1); + next.neck.position = Vec3::new(0.0, s_a.neck.0, s_a.neck.1 + shortalt * -0.8); next.neck.orientation = Quaternion::rotation_z(tilt * -0.8) - * Quaternion::rotation_x(amplitude * short * -0.05) + * Quaternion::rotation_x(amplitude * short * 0.05) * Quaternion::rotation_y(tilt * 0.3); next.jaw.position = Vec3::new(0.0, s_a.jaw.0, s_a.jaw.1); next.jaw.orientation = Quaternion::rotation_x(0.0); next.tail.position = Vec3::new(0.0, s_a.tail.0, s_a.tail.1); - next.tail.orientation = - Quaternion::rotation_x(amplitude * shortalt * 0.3) * Quaternion::rotation_z(tilt * 1.5); + next.tail.orientation = Quaternion::rotation_x(amplitude * shortalt * -0.3) + * Quaternion::rotation_z(tilt * 1.5); next.torso_front.position = Vec3::new( 0.0, @@ -145,7 +145,7 @@ impl Animation for RunAnimation { s_a.torso_back.0, s_a.torso_back.1 + amplitude * shortalt * 0.2 - 0.2, ); - next.torso_back.orientation = Quaternion::rotation_x(amplitude * short * -0.1) + next.torso_back.orientation = Quaternion::rotation_x(amplitude * short * -0.07) * Quaternion::rotation_z(tilt * 1.8) * Quaternion::rotation_y(tilt * 0.6); diff --git a/voxygen/anim/src/quadruped_small/mod.rs b/voxygen/anim/src/quadruped_small/mod.rs index f48d05c471..322d5d4ccc 100644 --- a/voxygen/anim/src/quadruped_small/mod.rs +++ b/voxygen/anim/src/quadruped_small/mod.rs @@ -68,6 +68,7 @@ pub struct SkeletonAttr { minimize: f32, spring: f32, feed: f32, + lateral: f32, } impl<'a> std::convert::TryFrom<&'a comp::Body> for SkeletonAttr { type Error = (); @@ -94,6 +95,7 @@ impl Default for SkeletonAttr { minimize: 0.0, spring: 0.0, feed: 0.0, + lateral: 0.0, } } } @@ -129,6 +131,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Beaver, _) => (5.5, 0.0), (Hare, Male) => (3.0, 2.0), (Hare, Female) => (2.5, 3.0), + (Dog, _) => (3.0, 4.5), }, chest: match (body.species, body.body_type) { (Pig, _) => (0.0, 6.0), @@ -157,6 +160,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Beaver, _) => (2.0, 6.0), (Hare, Male) => (-2.0, 7.0), (Hare, Female) => (-2.0, 6.0), + (Dog, _) => (-2.0, 9.5), }, feet_f: match (body.species, body.body_type) { (Pig, _) => (4.5, 3.5, -1.0), @@ -185,6 +189,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Beaver, _) => (4.5, 4.5, -4.0), (Hare, Male) => (3.0, 1.0, -3.0), (Hare, Female) => (3.0, 0.5, -4.0), + (Dog, _) => (3.5, 3.0, -2.5), }, feet_b: match (body.species, body.body_type) { (Pig, _) => (3.5, -2.0, 0.0), @@ -213,6 +218,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Beaver, _) => (4.0, -2.5, -3.0), (Hare, Male) => (3.5, -1.0, -2.0), (Hare, Female) => (3.5, -3.0, -2.0), + (Dog, _) => (3.0, -3.5, -2.5), }, tail: match (body.species, body.body_type) { (Pig, _) => (-4.5, 2.5), @@ -235,128 +241,91 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Axolotl, _) => (-4.0, -1.0), (Gecko, _) => (-4.0, 0.0), (Turtle, _) => (-6.0, -2.0), - (Squirrel, _) => (-5.0, 0.0), + (Squirrel, _) => (-4.0, 0.0), (Fungome, _) => (-4.0, -2.0), (Porcupine, _) => (-6.0, 1.0), (Beaver, _) => (-6.5, -1.0), (Hare, Male) => (-4.0, -1.0), (Hare, Female) => (-4.0, 2.0), + (Dog, _) => (-5.0, 0.5), }, scaler: match (body.species, body.body_type) { (Pig, _) => (0.9), (Fox, _) => (0.9), - (Sheep, _) => (1.0), (Boar, _) => (1.1), (Jackalope, _) => (0.8), (Skunk, _) => (0.9), (Cat, _) => (0.8), (Batfox, _) => (1.1), - (Raccoon, _) => (1.0), - (Quokka, _) => (1.0), (Dodarock, _) => (1.2), (Holladon, _) => (1.4), - (Hyena, _) => (1.0), (Rabbit, _) => (0.7), - (Truffler, _) => (1.0), (Frog, _) => (0.7), (Rat, _) => (0.65), (Axolotl, _) => (0.65), (Gecko, _) => (0.7), (Turtle, _) => (0.9), - (Squirrel, _) => (0.7), + (Squirrel, _) => (0.6), (Fungome, _) => (0.9), (Porcupine, _) => (0.8), - (Beaver, _) => (1.0), (Hare, _) => (0.8), + _ => (1.0), }, tempo: match (body.species, body.body_type) { - (Pig, _) => (1.0), - (Fox, _) => (1.0), - (Sheep, _) => (1.0), (Boar, _) => (1.1), - (Jackalope, _) => (1.0), - (Skunk, _) => (1.0), (Cat, _) => (1.1), - (Batfox, _) => (1.0), - (Raccoon, _) => (1.0), (Quokka, _) => (1.2), - (Dodarock, _) => (1.0), - (Holladon, _) => (1.0), (Hyena, _) => (1.1), (Rabbit, _) => (1.15), - (Truffler, _) => (1.0), (Frog, _) => (1.15), (Rat, _) => (1.0), (Axolotl, _) => (1.2), (Gecko, _) => (1.1), - (Turtle, _) => (0.9), + (Turtle, _) => (3.0), (Squirrel, _) => (1.15), - (Fungome, _) => (1.0), (Porcupine, _) => (1.2), (Beaver, _) => (1.2), (Hare, _) => (1.15), + _ => (1.0), }, maximize: match (body.species, body.body_type) { - (Pig, _) => (1.0), (Fox, _) => (1.3), (Sheep, _) => (1.1), (Boar, _) => (1.4), (Jackalope, _) => (1.2), - (Skunk, _) => (1.0), - (Cat, _) => (1.0), - (Batfox, _) => (1.0), - (Raccoon, _) => (1.0), - (Quokka, _) => (1.0), - (Dodarock, _) => (1.0), - (Holladon, _) => (1.0), (Hyena, _) => (1.4), (Rabbit, _) => (1.3), - (Truffler, _) => (1.0), (Frog, _) => (1.3), - (Rat, _) => (1.0), (Axolotl, _) => (0.9), - (Gecko, _) => (1.0), (Turtle, _) => (0.8), - (Squirrel, _) => (1.0), (Fungome, _) => (0.7), - (Porcupine, _) => (1.0), - (Beaver, _) => (1.0), (Hare, _) => (1.3), + _ => (1.0), }, minimize: match (body.species, body.body_type) { (Pig, _) => (0.6), (Fox, _) => (1.3), (Sheep, _) => (0.8), - (Boar, _) => (1.0), (Jackalope, _) => (0.8), (Skunk, _) => (0.9), (Cat, _) => (0.8), - (Batfox, _) => (1.0), - (Raccoon, _) => (1.0), (Quokka, _) => (0.9), (Dodarock, _) => (0.9), (Holladon, _) => (0.7), (Hyena, _) => (1.4), (Rabbit, _) => (0.8), - (Truffler, _) => (1.0), (Frog, _) => (0.8), - (Rat, _) => (1.0), - (Axolotl, _) => (1.0), - (Gecko, _) => (1.0), (Turtle, _) => (0.8), - (Squirrel, _) => (1.0), (Fungome, _) => (0.4), (Porcupine, _) => (0.9), (Beaver, _) => (0.9), (Hare, _) => (0.8), + _ => (1.0), }, spring: match (body.species, body.body_type) { - (Pig, _) => (1.0), - (Fox, _) => (1.0), (Sheep, _) => (1.2), (Boar, _) => (0.8), (Jackalope, _) => (2.2), - (Skunk, _) => (1.0), (Cat, _) => (1.4), (Batfox, _) => (1.1), (Raccoon, _) => (1.1), @@ -367,43 +336,38 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Rabbit, _) => (2.5), (Truffler, _) => (0.8), (Frog, _) => (2.5), - (Rat, _) => (1.0), (Axolotl, _) => (0.8), (Gecko, _) => (0.6), (Turtle, _) => (0.7), - (Squirrel, _) => (1.0), (Fungome, _) => (0.8), (Porcupine, _) => (1.3), (Beaver, _) => (1.3), (Hare, Male) => (2.2), (Hare, Female) => (2.5), + _ => (1.0), }, feed: match (body.species, body.body_type) { - (Pig, _) => (1.0), - (Fox, _) => (1.0), - (Sheep, _) => (1.0), (Boar, _) => (0.6), - (Jackalope, _) => (1.0), (Skunk, _) => (0.8), - (Cat, _) => (1.0), (Batfox, _) => (0.7), (Raccoon, _) => (0.8), - (Quokka, _) => (1.0), (Dodarock, _) => (0.7), - (Holladon, _) => (1.0), - (Hyena, _) => (1.0), (Rabbit, _) => (1.2), (Truffler, _) => (0.6), (Frog, _) => (0.7), - (Rat, _) => (1.0), (Axolotl, _) => (0.8), (Gecko, _) => (0.8), - (Turtle, _) => (0.7), - (Squirrel, _) => (1.0), + (Turtle, _) => (0.5), (Fungome, _) => (0.7), - (Porcupine, _) => (1.0), - (Beaver, _) => (1.0), (Hare, _) => (1.2), + _ => (1.0), + }, + lateral: match (body.species, body.body_type) { + (Axolotl, _) => (1.0), + (Gecko, _) => (1.0), + (Turtle, _) => (1.0), + (Fungome, _) => (1.0), + _ => (0.0), }, } } diff --git a/voxygen/anim/src/quadruped_small/run.rs b/voxygen/anim/src/quadruped_small/run.rs index eb68728eb7..e76a81e557 100644 --- a/voxygen/anim/src/quadruped_small/run.rs +++ b/voxygen/anim/src/quadruped_small/run.rs @@ -7,7 +7,7 @@ use std::f32::consts::PI; pub struct RunAnimation; impl Animation for RunAnimation { - type Dependency = (f32, Vec3, Vec3, f64, Vec3); + type Dependency = (f32, Vec3, Vec3, f64, Vec3, f32); type Skeleton = QuadrupedSmallSkeleton; #[cfg(feature = "use-dyn-lib")] @@ -16,24 +16,26 @@ impl Animation for RunAnimation { #[cfg_attr(feature = "be-dyn-lib", export_name = "quadruped_small_run")] fn update_skeleton_inner( skeleton: &Self::Skeleton, - (_velocity, orientation, last_ori, _global_time, avg_vel): Self::Dependency, - anim_time: f64, + (velocity, orientation, last_ori, _global_time, avg_vel, acc_vel): Self::Dependency, + _anim_time: f64, _rate: &mut f32, s_a: &SkeletonAttr, ) -> Self::Skeleton { let mut next = (*skeleton).clone(); - let lab = 0.6; //6 + let lab = 0.8; //6 + let speed = (Vec2::::from(velocity).magnitude()).min(12.0); + let speednorm = (speed / 12.0).powf(0.4); let speedmult = s_a.tempo; - let short = (anim_time as f32 * 20.0 * lab as f32 * speedmult + PI * 1.0).sin(); - let shortalt = (anim_time as f32 * 20.0 * lab as f32 * speedmult + PI * 0.5).sin(); + let short = (acc_vel * lab as f32 * speedmult + PI * 1.0).sin() * speednorm; + let shortalt = (acc_vel * lab as f32 * speedmult + PI * 0.5).sin() * speednorm; - let footvert = (anim_time as f32 * 20.0 * lab as f32 * speedmult + PI * 0.0).sin(); - let footvertt = (anim_time as f32 * 20.0 * lab as f32 * speedmult + PI * 0.4).sin(); + let footvert = (acc_vel * lab as f32 * speedmult + PI * 0.0).sin() * speednorm; + let footvertt = (acc_vel * lab as f32 * speedmult + PI * 0.4).sin() * speednorm; - let footvertf = (anim_time as f32 * 20.0 * lab as f32 * speedmult + PI * 0.3).sin(); - let footverttf = (anim_time as f32 * 20.0 * lab as f32 * speedmult + PI * 0.7).sin(); + let footvertf = (acc_vel * lab as f32 * speedmult + PI * 0.3).sin() * speednorm; + let footverttf = (acc_vel * lab as f32 * speedmult + PI * 0.7).sin() * speednorm; let ori: Vec2 = Vec2::from(orientation); let last_ori = Vec2::from(last_ori); @@ -48,27 +50,28 @@ impl Animation for RunAnimation { } else { 0.0 } * 1.3; - let x_tilt = avg_vel.z.atan2(avg_vel.xy().magnitude()); - + let x_tilt = avg_vel.z.atan2(avg_vel.xy().magnitude()) * speednorm; + let vertcancel = 1.0 - s_a.lateral; next.leg_fl.scale = Vec3::one() * 1.02; next.leg_fr.scale = Vec3::one() * 1.02; next.leg_bl.scale = Vec3::one() * 1.02; next.leg_br.scale = Vec3::one() * 1.02; next.head.position = Vec3::new(0.0, s_a.head.0, s_a.head.1); - next.head.orientation = Quaternion::rotation_x(x_tilt * -0.5 + short * -0.2) + next.head.orientation = Quaternion::rotation_x(x_tilt * -0.5 + vertcancel * short * -0.2) * Quaternion::rotation_y(tilt * 0.8) - * Quaternion::rotation_z(tilt * -1.2); + * Quaternion::rotation_z(s_a.lateral * -short * 0.2 + tilt * -1.2); next.chest.position = Vec3::new( 0.0, s_a.chest.0, - s_a.chest.1 + 2.0 * s_a.spring + shortalt * 3.0 * s_a.spring, + s_a.chest.1 + 2.0 * speednorm * s_a.spring + shortalt * 3.0 * s_a.spring, ) / 11.0 * s_a.scaler; - next.chest.orientation = Quaternion::rotation_x(short * 0.2 * s_a.spring + x_tilt) - * Quaternion::rotation_y(tilt * 0.8) - * Quaternion::rotation_z(tilt * -1.5); + next.chest.orientation = + Quaternion::rotation_x(vertcancel * short * 0.2 * s_a.spring + x_tilt) + * Quaternion::rotation_y(tilt * 0.8) + * Quaternion::rotation_z(s_a.lateral * short * 0.2 + tilt * -1.5); next.chest.scale = Vec3::one() / 11.0 * s_a.scaler; next.leg_fl.position = Vec3::new( @@ -76,41 +79,45 @@ impl Animation for RunAnimation { s_a.feet_f.1 + footverttf * 3.0 * s_a.minimize, s_a.feet_f.2 + ((footvertf * -1.5).max(-1.0)), ); - next.leg_fl.orientation = Quaternion::rotation_x(0.2 + s_a.maximize * footverttf * 0.65) - * Quaternion::rotation_z(tilt * -0.5) - * Quaternion::rotation_y(tilt * 1.5); + next.leg_fl.orientation = + Quaternion::rotation_x(0.2 * speednorm + s_a.maximize * footverttf * 0.65) + * Quaternion::rotation_z(tilt * -0.5) + * Quaternion::rotation_y(tilt * 1.5); next.leg_fr.position = Vec3::new( s_a.feet_f.0, s_a.feet_f.1 + footvertt * 3.0 * s_a.minimize, s_a.feet_f.2 + ((footvert * -1.5).max(-1.0)), ); - next.leg_fr.orientation = Quaternion::rotation_x(0.2 + s_a.maximize * footvertt * 0.65) - * Quaternion::rotation_z(tilt * -0.5) - * Quaternion::rotation_y(tilt * 1.5); + next.leg_fr.orientation = + Quaternion::rotation_x(0.2 * speednorm + s_a.maximize * footvertt * 0.65) + * Quaternion::rotation_z(tilt * -0.5) + * Quaternion::rotation_y(tilt * 1.5); next.leg_bl.position = Vec3::new( -s_a.feet_b.0, s_a.feet_b.1 + footvertt * -1.4, s_a.feet_b.2 + ((footvert * 1.5).max(-1.0)), ); - next.leg_bl.orientation = Quaternion::rotation_x(-0.25 + s_a.maximize * footvertt * -0.8) - * Quaternion::rotation_y(tilt * 1.5) - * Quaternion::rotation_z(tilt * -1.5); + next.leg_bl.orientation = + Quaternion::rotation_x(-0.25 * speednorm + s_a.maximize * footvertt * -0.8) + * Quaternion::rotation_y(tilt * 1.5) + * Quaternion::rotation_z(tilt * -1.5); next.leg_br.position = Vec3::new( s_a.feet_b.0, s_a.feet_b.1 + footverttf * -1.4, s_a.feet_b.2 + ((footvertf * 1.5).max(-1.0)), ); - next.leg_br.orientation = Quaternion::rotation_x(-0.25 + s_a.maximize * footverttf * -0.8) - * Quaternion::rotation_y(tilt * 1.5) - * Quaternion::rotation_z(tilt * -1.5); + next.leg_br.orientation = + Quaternion::rotation_x(-0.25 * speednorm + s_a.maximize * footverttf * -0.8) + * Quaternion::rotation_y(tilt * 1.5) + * Quaternion::rotation_z(tilt * -1.5); next.tail.position = Vec3::new(0.0, s_a.tail.0, s_a.tail.1); - next.tail.orientation = Quaternion::rotation_x(short * 0.2 + x_tilt) + next.tail.orientation = Quaternion::rotation_x(vertcancel * short * 0.2 + x_tilt) * Quaternion::rotation_y(tilt * 0.8) - * Quaternion::rotation_z(tilt * 1.5); + * Quaternion::rotation_z(s_a.lateral * -short * 0.2 + tilt * 1.5); next } } diff --git a/voxygen/anim/src/theropod/idle.rs b/voxygen/anim/src/theropod/idle.rs index bac0a997d0..bcb1622858 100644 --- a/voxygen/anim/src/theropod/idle.rs +++ b/voxygen/anim/src/theropod/idle.rs @@ -63,7 +63,7 @@ impl Animation for IdleAnimation { next.tail_front.position = Vec3::new(0.0, s_a.tail_front.0, s_a.tail_front.1); next.tail_front.orientation = Quaternion::rotation_x(0.1); - next.tail_back.position = Vec3::new(0.0, s_a.tail_back.0, s_a.tail_back.1 - 0.5); + next.tail_back.position = Vec3::new(0.0, s_a.tail_back.0, s_a.tail_back.1); next.tail_back.orientation = Quaternion::rotation_x(0.1); next.hand_l.position = Vec3::new(-s_a.hand.0, s_a.hand.1, s_a.hand.2); diff --git a/voxygen/anim/src/theropod/mod.rs b/voxygen/anim/src/theropod/mod.rs index 89b131f0f0..200fac9839 100644 --- a/voxygen/anim/src/theropod/mod.rs +++ b/voxygen/anim/src/theropod/mod.rs @@ -127,6 +127,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Sandraptor, _) => (8.0, 5.0), (Snowraptor, _) => (8.0, 5.0), (Woodraptor, _) => (8.0, 5.0), + (Sunlizard, _) => (6.5, 3.5), }, jaw: match (body.species, body.body_type) { (Archaeos, _) => (1.0, -7.0), @@ -134,6 +135,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Sandraptor, _) => (0.0, -4.0), (Snowraptor, _) => (0.0, -4.0), (Woodraptor, _) => (0.0, -4.0), + (Sunlizard, _) => (2.0, -2.5), }, neck: match (body.species, body.body_type) { (Archaeos, _) => (4.5, -2.0), @@ -141,6 +143,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Sandraptor, _) => (4.0, 2.5), (Snowraptor, _) => (4.0, 2.5), (Woodraptor, _) => (4.0, 2.5), + (Sunlizard, _) => (2.5, 1.5), }, chest_front: match (body.species, body.body_type) { (Archaeos, _) => (0.0, 20.0), @@ -148,6 +151,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Sandraptor, _) => (0.0, 15.5), (Snowraptor, _) => (0.0, 15.5), (Woodraptor, _) => (0.0, 15.5), + (Sunlizard, _) => (0.0, 14.0), }, chest_back: match (body.species, body.body_type) { (Archaeos, _) => (-5.5, -1.0), @@ -155,6 +159,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Sandraptor, _) => (-3.0, 0.5), (Snowraptor, _) => (-3.0, 0.5), (Woodraptor, _) => (-3.0, 0.5), + (Sunlizard, _) => (-2.0, 0.0), }, tail_front: match (body.species, body.body_type) { (Archaeos, _) => (-9.0, -1.5), @@ -162,6 +167,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Sandraptor, _) => (-9.5, -1.0), (Snowraptor, _) => (-9.5, -1.0), (Woodraptor, _) => (-9.5, -1.0), + (Sunlizard, _) => (-8.5, -2.0), }, tail_back: match (body.species, body.body_type) { (Archaeos, _) => (-8.0, -0.5), @@ -169,6 +175,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Sandraptor, _) => (-10.5, 0.5), (Snowraptor, _) => (-10.5, 1.0), (Woodraptor, _) => (-10.5, 0.5), + (Sunlizard, _) => (-10.0, -0.5), }, hand: match (body.species, body.body_type) { (Archaeos, _) => (3.0, 0.0, -4.0), @@ -176,20 +183,23 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Sandraptor, _) => (2.5, 3.0, 1.0), (Snowraptor, _) => (2.5, 3.0, 1.0), (Woodraptor, _) => (2.5, 3.0, 1.0), + (Sunlizard, _) => (2.5, 1.5, -0.5), }, leg: match (body.species, body.body_type) { - (Archaeos, _) => (4.5, -3.0, -4.0), - (Odonto, _) => (5.5, -2.5, -4.0), + (Archaeos, _) => (2.5, -3.0, -4.0), + (Odonto, _) => (3.5, -2.5, -4.0), (Sandraptor, _) => (1.5, -2.5, -3.0), (Snowraptor, _) => (1.5, -2.5, -3.0), (Woodraptor, _) => (1.5, -2.5, -3.0), + (Sunlizard, _) => (2.5, -2.5, -3.0), }, foot: match (body.species, body.body_type) { - (Archaeos, _) => (1.0, -0.5, -7.0), - (Odonto, _) => (2.0, -6.5, -3.0), + (Archaeos, _) => (3.0, -0.5, -7.0), + (Odonto, _) => (4.0, -6.5, -3.0), (Sandraptor, _) => (2.0, 0.0, -3.0), (Snowraptor, _) => (2.0, 0.0, -3.0), (Woodraptor, _) => (2.0, 0.0, -3.0), + (Sunlizard, _) => (1.0, -0.5, -2.5), }, scaler: match (body.species, body.body_type) { (Archaeos, _) => (3.0), @@ -197,6 +207,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Sandraptor, _) => (8.0), (Snowraptor, _) => (8.0), (Woodraptor, _) => (8.0), + (Sunlizard, _) => (8.0), }, } } diff --git a/voxygen/anim/src/theropod/run.rs b/voxygen/anim/src/theropod/run.rs index e380ea3e97..c70e1a2511 100644 --- a/voxygen/anim/src/theropod/run.rs +++ b/voxygen/anim/src/theropod/run.rs @@ -6,7 +6,7 @@ use std::f32::consts::PI; pub struct RunAnimation; impl Animation for RunAnimation { - type Dependency = (f32, Vec3, Vec3, f64, Vec3); + type Dependency = (Vec3, Vec3, Vec3, f64, Vec3, f32); type Skeleton = TheropodSkeleton; #[cfg(feature = "use-dyn-lib")] @@ -15,8 +15,8 @@ impl Animation for RunAnimation { #[cfg_attr(feature = "be-dyn-lib", export_name = "theropod_run")] fn update_skeleton_inner( skeleton: &Self::Skeleton, - (velocity, orientation, last_ori, _global_time, avg_vel): Self::Dependency, - anim_time: f64, + (velocity, orientation, last_ori, _global_time, avg_vel, acc_vel): Self::Dependency, + _anim_time: f64, rate: &mut f32, s_a: &SkeletonAttr, ) -> Self::Skeleton { @@ -24,38 +24,31 @@ impl Animation for RunAnimation { let speed = (Vec2::::from(velocity).magnitude()).min(22.0); *rate = 1.0; - let breathe = (anim_time as f32 * 0.8).sin(); - let topspeed = 18.0; + //let speednorm = speed / 13.0; + let speednorm = (speed / 13.0).powf(0.25); - let canceler = speed / topspeed; - let lab = 0.5; //6 - let amplitude2 = (speed * 1.4 / topspeed).max(0.6); - let amplitude3 = (speed / topspeed).max(0.35); - let speedmult = if speed > 0.0 { - 1.2 * (1.0 * 1.0) - } else { - 0.9 * (1.0 * 1.0) - }; + let speedmult = 1.0; + let lab = 0.6; //6 let short = (((1.0) / (0.72 + 0.28 - * ((anim_time as f32 * (16.0) * lab as f32 * speedmult + PI * -0.15 - 0.5) - .sin()) - .powi(2))) + * ((acc_vel * 1.0 * lab as f32 * speedmult + PI * -0.15 - 0.5).sin()) + .powi(2))) .sqrt()) - * ((anim_time as f32 * (16.0) * lab as f32 * speedmult + PI * -0.15 - 0.5).sin()); + * ((acc_vel * 1.0 * lab as f32 * speedmult + PI * -0.15 - 0.5).sin()) + * speednorm; // let shortalt = - (anim_time as f32 * (16.0) * lab as f32 * speedmult + PI * 3.0 / 8.0 - 0.5).sin(); + (acc_vel * 1.0 * lab as f32 * speedmult + PI * 3.0 / 8.0 - 0.5).sin() * speednorm; //FL - let foot1a = (anim_time as f32 * (16.0) * lab as f32 * speedmult + 0.0 + PI).sin(); //1.5 - let foot1b = (anim_time as f32 * (16.0) * lab as f32 * speedmult + 1.57 + PI).sin(); //1.9 + let foot1a = (acc_vel * 1.0 * lab as f32 * speedmult + 0.0 + PI).sin() * speednorm; //1.5 + let foot1b = (acc_vel * 1.0 * lab as f32 * speedmult + 1.57 + PI).sin() * speednorm; //1.9 //FR - let foot2a = (anim_time as f32 * (16.0) * lab as f32 * speedmult).sin(); //1.2 - let foot2b = (anim_time as f32 * (16.0) * lab as f32 * speedmult + 1.57).sin(); //1.6 + let foot2a = (acc_vel * 1.0 * lab as f32 * speedmult).sin() * speednorm; //1.2 + let foot2b = (acc_vel * 1.0 * lab as f32 * speedmult + 1.57).sin() * speednorm; //1.6 let ori: Vec2 = Vec2::from(orientation); let last_ori = Vec2::from(last_ori); let tilt = if ::vek::Vec2::new(ori, last_ori) @@ -69,7 +62,7 @@ impl Animation for RunAnimation { } else { 0.0 } * 1.3; - let x_tilt = avg_vel.z.atan2(avg_vel.xy().magnitude()); + let x_tilt = avg_vel.z.atan2(avg_vel.xy().magnitude()) * speednorm; next.head.scale = Vec3::one() * 1.02; next.neck.scale = Vec3::one() * 0.98; @@ -78,28 +71,27 @@ impl Animation for RunAnimation { next.foot_r.scale = Vec3::one() * 0.96; 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); - next.head.orientation = Quaternion::rotation_x(-0.1 + short * -0.05) + next.head.position = Vec3::new(0.0, s_a.head.0, s_a.head.1); + next.head.orientation = Quaternion::rotation_x(-0.1 * speednorm + short * -0.05) * Quaternion::rotation_y(tilt * 0.8) - * Quaternion::rotation_z(shortalt * -0.2 - tilt * 4.5); + * Quaternion::rotation_z(shortalt * -0.2 - tilt * 2.5); next.jaw.position = Vec3::new(0.0, s_a.jaw.0, s_a.jaw.1); next.jaw.orientation = Quaternion::rotation_x(short * -0.03); next.neck.position = Vec3::new(0.0, s_a.neck.0, s_a.neck.1); - next.neck.orientation = Quaternion::rotation_x(-0.1 + short * -0.04) + next.neck.orientation = Quaternion::rotation_x(-0.1 * speednorm + short * -0.04) * Quaternion::rotation_y(tilt * 0.3) - * Quaternion::rotation_z(shortalt * -0.1 - tilt * 4.2); + * Quaternion::rotation_z(shortalt * -0.1 - tilt * 3.2); next.chest_front.position = Vec3::new( 0.0, s_a.chest_front.0, - s_a.chest_front.1 + short * 0.5 + x_tilt * 10.0 * canceler, + s_a.chest_front.1 + short * 0.5 + x_tilt * 10.0 + 0.5 * speednorm, ) / s_a.scaler; - next.chest_front.orientation = - Quaternion::rotation_x(short * 0.07 + x_tilt * (canceler * 6.0).min(1.0)) - * Quaternion::rotation_y(tilt * 0.8) - * Quaternion::rotation_z(shortalt * 0.15 + tilt * -1.5); + next.chest_front.orientation = Quaternion::rotation_x(short * 0.07 + x_tilt) + * Quaternion::rotation_y(tilt * 0.8) + * Quaternion::rotation_z(shortalt * 0.15 + tilt * -1.5); next.chest_back.position = Vec3::new(0.0, s_a.chest_back.0, s_a.chest_back.1); next.chest_back.orientation = Quaternion::rotation_x(short * -0.04) @@ -115,44 +107,44 @@ impl Animation for RunAnimation { * Quaternion::rotation_z(shortalt * -0.2 + tilt * 1.4); next.hand_l.position = Vec3::new(-s_a.hand.0, s_a.hand.1, s_a.hand.2); - next.hand_l.orientation = Quaternion::rotation_x(-0.2 + amplitude3 * foot2a * 0.3); + next.hand_l.orientation = Quaternion::rotation_x(-0.2 * speednorm + foot2a * 0.3); next.hand_r.position = Vec3::new(s_a.hand.0, s_a.hand.1, s_a.hand.2); - next.hand_r.orientation = Quaternion::rotation_x(-0.2 + amplitude3 * foot1a * 0.3); + next.hand_r.orientation = Quaternion::rotation_x(-0.2 * speednorm + foot1a * 0.3); next.leg_l.position = Vec3::new( - -s_a.leg.0, - s_a.leg.1 + amplitude3 * foot1b * -1.3, - s_a.leg.2 + amplitude3 * foot1a * 1.0, + -s_a.leg.0 + speednorm * 1.5, + s_a.leg.1 + foot1b * -1.3, + s_a.leg.2 + foot1a * 1.0, ); - next.leg_l.orientation = Quaternion::rotation_x(-0.2 + amplitude3 * foot1a * 0.15) + next.leg_l.orientation = Quaternion::rotation_x(-0.2 * speednorm + foot1a * 0.15) * Quaternion::rotation_y(tilt * 0.5) * Quaternion::rotation_z(foot1a * -0.3 + tilt * -0.5); next.leg_r.position = Vec3::new( - s_a.leg.0, - s_a.leg.1 + amplitude3 * foot2b * -1.3, - s_a.leg.2 + amplitude3 * foot2a * 1.0, + s_a.leg.0 + speednorm * -1.5, + s_a.leg.1 + foot2b * -1.3, + s_a.leg.2 + foot2a * 1.0, ); - next.leg_r.orientation = Quaternion::rotation_x(-0.2 + amplitude3 * foot2a * 0.15) + next.leg_r.orientation = Quaternion::rotation_x(-0.2 * speednorm + foot2a * 0.15) * Quaternion::rotation_y(tilt * 0.5) * Quaternion::rotation_z(foot2a * 0.3 + tilt * -0.5); next.foot_l.position = Vec3::new( -s_a.foot.0, - s_a.foot.1 + canceler * -1.0 + amplitude3 * foot1b * -2.0, - s_a.foot.2 + canceler * 2.0 + (foot1a * 1.5).max(0.0) * amplitude2, + s_a.foot.1 + foot1b * -2.0, + s_a.foot.2 + speednorm * 0.5 + (foot1a * 1.5).max(0.0), ); - next.foot_l.orientation = Quaternion::rotation_x(-0.3 + amplitude2 * foot1b * -0.35) + next.foot_l.orientation = Quaternion::rotation_x(-0.2 * speednorm + foot1b * -0.35) * Quaternion::rotation_y(tilt * -1.0) * Quaternion::rotation_z(tilt * -0.5); next.foot_r.position = Vec3::new( s_a.foot.0, - s_a.foot.1 + canceler * -1.0 + amplitude3 * foot2b * -2.0, - s_a.foot.2 + canceler * 2.0 + (foot2a * 1.5).max(0.0) * amplitude2, + s_a.foot.1 + foot2b * -2.0, + s_a.foot.2 + speednorm * 0.5 + (foot2a * 1.5).max(0.0), ); - next.foot_r.orientation = Quaternion::rotation_x(-0.3 + amplitude2 * foot2b * -0.35) + next.foot_r.orientation = Quaternion::rotation_x(-0.2 * speednorm + foot2b * -0.35) * Quaternion::rotation_y(tilt * -1.0); next diff --git a/voxygen/src/audio/sfx/mod.rs b/voxygen/src/audio/sfx/mod.rs index a4afb5a4bb..47183dd40b 100644 --- a/voxygen/src/audio/sfx/mod.rs +++ b/voxygen/src/audio/sfx/mod.rs @@ -91,7 +91,7 @@ use client::Client; use common::{ assets::{self, AssetExt, AssetHandle}, comp::{ - item::{ItemKind, ToolKind}, + item::{ItemKind, Reagent, ToolKind}, object, Body, CharacterAbilityType, InventoryUpdateEvent, }, outcome::Outcome, @@ -298,9 +298,10 @@ impl SfxMgr { pos, power, is_attack, + reagent, .. } => { - let file_ref = if *is_attack && *power < 0.0 { + let file_ref = if *is_attack && matches!(reagent, Some(Reagent::Green)) { "voxygen.audio.sfx.abilities.heal_bomb" } else { "voxygen.audio.sfx.explosion" diff --git a/voxygen/src/hud/util.rs b/voxygen/src/hud/util.rs index cde747dfe4..0056771305 100644 --- a/voxygen/src/hud/util.rs +++ b/voxygen/src/hud/util.rs @@ -153,6 +153,12 @@ fn tool_desc(tool: &Tool, components: &[Item], msm: &MaterialStatManifest, desc: ToolKind::Staff => "Staff", ToolKind::Sceptre => "Sceptre", ToolKind::Shield => "Shield", + ToolKind::Spear => "Spear", + ToolKind::HammerSimple => "HammerSimple", + ToolKind::SwordSimple => "SwordSimple", + ToolKind::StaffSimple => "StaffSimple", + ToolKind::AxeSimple => "AxeSimple", + ToolKind::BowSimple => "BowSimple", ToolKind::Unique(_) => "Unique", ToolKind::Debug => "Debug", ToolKind::Farming => "Farming Tool", diff --git a/voxygen/src/render/pipelines/particle.rs b/voxygen/src/render/pipelines/particle.rs index 224587f429..d5e2cee267 100644 --- a/voxygen/src/render/pipelines/particle.rs +++ b/voxygen/src/render/pipelines/particle.rs @@ -115,6 +115,8 @@ pub enum ParticleMode { FireShockwave = 16, FireBowl = 17, Snow = 18, + Explosion = 19, + Ice = 20, } impl ParticleMode { @@ -139,7 +141,7 @@ impl Instance { } } - pub fn new_beam( + pub fn new_directed( inst_time: f64, lifespan: f32, inst_mode: ParticleMode, diff --git a/voxygen/src/scene/figure/cache.rs b/voxygen/src/scene/figure/cache.rs index c94f3d1540..487a6d2dbe 100644 --- a/voxygen/src/scene/figure/cache.rs +++ b/voxygen/src/scene/figure/cache.rs @@ -86,6 +86,7 @@ pub(super) struct CharacterToolKey { /// Character data that exists in third person only. #[derive(Eq, Hash, PartialEq)] pub(super) struct CharacterThirdPersonKey { + pub head: Option, pub shoulder: Option, pub chest: Option, pub belt: Option, @@ -141,6 +142,17 @@ impl CharacterCacheKey { None } else { Some(CharacterThirdPersonKey { + head: if let Some(ItemKind::Armor(Armor { + kind: ArmorKind::Head(armor), + .. + })) = inventory + .equipped(EquipSlot::Armor(ArmorSlot::Head)) + .map(|i| i.kind()) + { + Some(armor.clone()) + } else { + None + }, shoulder: if let Some(ItemKind::Armor(Armor { kind: ArmorKind::Shoulder(armor), .. diff --git a/voxygen/src/scene/figure/load.rs b/voxygen/src/scene/figure/load.rs index 0f2bf8a2d8..6aca80bb7f 100644 --- a/voxygen/src/scene/figure/load.rs +++ b/voxygen/src/scene/figure/load.rs @@ -3,6 +3,7 @@ use common::{ assets::{self, AssetExt, AssetHandle, DotVoxAsset, Ron}, comp::{ biped_large::{self, BodyType as BLBodyType, Species as BLSpecies}, + biped_small, bird_medium::{self, BodyType as BMBodyType, Species as BMSpecies}, bird_small, dragon::{self, BodyType as DBodyType, Species as DSpecies}, @@ -355,7 +356,7 @@ make_vox_spec!( armor_back: HumArmorBackSpec = "voxygen.voxel.humanoid_armor_back_manifest", armor_pants: HumArmorPantsSpec = "voxygen.voxel.humanoid_armor_pants_manifest", armor_foot: HumArmorFootSpec = "voxygen.voxel.humanoid_armor_foot_manifest", - main_weapon: HumMainWeaponSpec = "voxygen.voxel.humanoid_main_weapon_manifest", + main_weapon: HumMainWeaponSpec = "voxygen.voxel.biped_weapon_manifest", modular_components: HumModularComponentSpec = "voxygen.voxel.humanoid_modular_component_manifest", armor_lantern: HumArmorLanternSpec = "voxygen.voxel.humanoid_lantern_manifest", armor_glider: HumArmorGliderSpec = "voxygen.voxel.humanoid_glider_manifest", @@ -1218,7 +1219,7 @@ impl QuadrupedSmallLateralSpec { return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5)); }, }; - let lateral = graceful_load_segment(&spec.left_front.lateral.0); + let lateral = graceful_load_segment_flipped(&spec.left_front.lateral.0, true); (lateral, Vec3::from(spec.left_front.offset)) } @@ -1250,7 +1251,7 @@ impl QuadrupedSmallLateralSpec { return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5)); }, }; - let lateral = graceful_load_segment(&spec.left_back.lateral.0); + let lateral = graceful_load_segment_flipped(&spec.left_back.lateral.0, true); (lateral, Vec3::from(spec.left_back.offset)) } @@ -1510,7 +1511,7 @@ impl QuadrupedMediumLateralSpec { return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5)); }, }; - let lateral = graceful_load_segment(&spec.leg_fl.lateral.0); + let lateral = graceful_load_segment_flipped(&spec.leg_fl.lateral.0, true); (lateral, Vec3::from(spec.leg_fl.offset)) } @@ -1542,7 +1543,7 @@ impl QuadrupedMediumLateralSpec { return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5)); }, }; - let lateral = graceful_load_segment(&spec.leg_bl.lateral.0); + let lateral = graceful_load_segment_flipped(&spec.leg_bl.lateral.0, true); (lateral, Vec3::from(spec.leg_bl.offset)) } @@ -1574,7 +1575,7 @@ impl QuadrupedMediumLateralSpec { return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5)); }, }; - let lateral = graceful_load_segment(&spec.foot_fl.lateral.0); + let lateral = graceful_load_segment_flipped(&spec.foot_fl.lateral.0, true); (lateral, Vec3::from(spec.foot_fl.offset)) } @@ -1606,7 +1607,7 @@ impl QuadrupedMediumLateralSpec { return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5)); }, }; - let lateral = graceful_load_segment(&spec.foot_bl.lateral.0); + let lateral = graceful_load_segment_flipped(&spec.foot_bl.lateral.0, true); (lateral, Vec3::from(spec.foot_bl.offset)) } @@ -1770,7 +1771,7 @@ impl BirdMediumLateralSpec { return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5)); }, }; - let lateral = graceful_load_segment(&spec.wing_l.lateral.0); + let lateral = graceful_load_segment_flipped(&spec.wing_l.lateral.0, true); (lateral, Vec3::from(spec.wing_l.offset)) } @@ -1802,7 +1803,7 @@ impl BirdMediumLateralSpec { return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5)); }, }; - let lateral = graceful_load_segment(&spec.foot_l.lateral.0); + let lateral = graceful_load_segment_flipped(&spec.foot_l.lateral.0, true); (lateral, Vec3::from(spec.foot_l.offset)) } @@ -2051,7 +2052,7 @@ impl TheropodLateralSpec { return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5)); }, }; - let lateral = graceful_load_segment(&spec.hand_l.lateral.0); + let lateral = graceful_load_segment_flipped(&spec.hand_l.lateral.0, true); (lateral, Vec3::from(spec.hand_l.offset)) } @@ -2083,7 +2084,7 @@ impl TheropodLateralSpec { return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5)); }, }; - let lateral = graceful_load_segment(&spec.leg_l.lateral.0); + let lateral = graceful_load_segment_flipped(&spec.leg_l.lateral.0, true); (lateral, Vec3::from(spec.leg_l.offset)) } @@ -2115,7 +2116,7 @@ impl TheropodLateralSpec { return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5)); }, }; - let lateral = graceful_load_segment(&spec.foot_l.lateral.0); + let lateral = graceful_load_segment_flipped(&spec.foot_l.lateral.0, true); (lateral, Vec3::from(spec.foot_l.offset)) } @@ -2309,7 +2310,7 @@ impl FishMediumLateralSpec { return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5)); }, }; - let lateral = graceful_load_segment(&spec.fin_l.lateral.0); + let lateral = graceful_load_segment_flipped(&spec.fin_l.lateral.0, true); (lateral, Vec3::from(spec.fin_l.offset)) } @@ -2444,7 +2445,7 @@ impl FishSmallLateralSpec { return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5)); }, }; - let lateral = graceful_load_segment(&spec.fin_l.lateral.0); + let lateral = graceful_load_segment_flipped(&spec.fin_l.lateral.0, true); (lateral, Vec3::from(spec.fin_l.offset)) } @@ -2468,6 +2469,280 @@ impl FishSmallLateralSpec { //// +#[derive(Deserialize)] +struct BipedSmallWeaponSpec(HashMap); +#[derive(Deserialize)] +struct BipedSmallArmorHeadSpec(ArmorVoxSpecMap); +#[derive(Deserialize)] +struct BipedSmallArmorHandSpec(ArmorVoxSpecMap); +#[derive(Deserialize)] +struct BipedSmallArmorFootSpec(ArmorVoxSpecMap); +#[derive(Deserialize)] +struct BipedSmallArmorChestSpec(ArmorVoxSpecMap); +#[derive(Deserialize)] +struct BipedSmallArmorPantsSpec(ArmorVoxSpecMap); +#[derive(Deserialize)] +struct BipedSmallArmorTailSpec(ArmorVoxSpecMap); +make_vox_spec!( + biped_small::Body, + struct BipedSmallSpec { + armor_foot: BipedSmallArmorFootSpec = "voxygen.voxel.biped_small_armor_foot_manifest", + weapon: BipedSmallWeaponSpec = "voxygen.voxel.biped_weapon_manifest", + armor_hand: BipedSmallArmorHandSpec = "voxygen.voxel.biped_small_armor_hand_manifest", + armor_chest: BipedSmallArmorChestSpec = "voxygen.voxel.biped_small_armor_chest_manifest", + armor_pants: BipedSmallArmorPantsSpec = "voxygen.voxel.biped_small_armor_pants_manifest", + armor_head: BipedSmallArmorHeadSpec = "voxygen.voxel.biped_small_armor_head_manifest", + armor_tail: BipedSmallArmorTailSpec = "voxygen.voxel.biped_small_armor_tail_manifest", + + }, + |FigureKey { body: _, extra }, spec| { + const DEFAULT_LOADOUT: super::cache::CharacterCacheKey = super::cache::CharacterCacheKey { + third_person: None, + tool: None, + lantern: None, + glider: None, + hand: None, + foot: None, + }; + + // TODO: This is bad code, maybe this method should return Option<_> + let loadout = extra.as_deref().unwrap_or(&DEFAULT_LOADOUT); + let third_person = loadout.third_person.as_ref(); + let tool = loadout.tool.as_ref(); + let hand = loadout.hand.as_deref(); + let foot = loadout.foot.as_deref(); + + +[ + third_person.map(|loadout| { + spec.armor_head.read().0.mesh_head( + loadout.head.as_deref(), + ) + }), + third_person.map(|loadout| { + spec.armor_chest.read().0.mesh_chest( + loadout.chest.as_deref(), + ) + }), + third_person.map(|loadout| { + spec.armor_pants.read().0.mesh_pants( + loadout.pants.as_deref(), + ) + }), + third_person.map(|loadout| { + spec.armor_tail.read().0.mesh_tail( + loadout.belt.as_deref(), + ) + }), + tool.and_then(|tool| tool.active.as_ref()).map(|tool| { + spec.weapon.read().0.mesh_main( + &tool.name, + false, + ) + }), + Some(spec.armor_hand.read().0.mesh_left_hand( + hand, + )), + Some(spec.armor_hand.read().0.mesh_right_hand( + hand, + )), + Some(spec.armor_foot.read().0.mesh_left_foot( + foot, + )), + Some(spec.armor_foot.read().0.mesh_right_foot( + foot, + )), + None, + None, + None, + None, + None, + None, + None, + ] + }, +); + +impl BipedSmallArmorHeadSpec { + fn mesh_head(&self, head: Option<&str>) -> BoneMeshes { + let spec = if let Some(head) = head { + match self.0.map.get(head) { + Some(spec) => spec, + None => { + error!(?head, "No head specification exists"); + return load_mesh("not_found", Vec3::new(-1.5, -1.5, -7.0)); + }, + } + } else { + &self.0.default + }; + + let head_segment = graceful_load_segment(&spec.vox_spec.0); + + let offset = Vec3::new(spec.vox_spec.1[0], spec.vox_spec.1[1], spec.vox_spec.1[2]); + + (head_segment, offset) + } +} +impl BipedSmallArmorChestSpec { + fn mesh_chest(&self, chest: Option<&str>) -> BoneMeshes { + let spec = if let Some(chest) = chest { + match self.0.map.get(chest) { + Some(spec) => spec, + None => { + error!(?chest, "No chest specification exists"); + return load_mesh("not_found", Vec3::new(-1.5, -1.5, -7.0)); + }, + } + } else { + &self.0.default + }; + + let chest_segment = graceful_load_segment(&spec.vox_spec.0); + + let offset = Vec3::new(spec.vox_spec.1[0], spec.vox_spec.1[1], spec.vox_spec.1[2]); + + (chest_segment, offset) + } +} +impl BipedSmallArmorTailSpec { + fn mesh_tail(&self, tail: Option<&str>) -> BoneMeshes { + let spec = if let Some(tail) = tail { + match self.0.map.get(tail) { + Some(spec) => spec, + None => { + error!(?tail, "No tail specification exists"); + return load_mesh("not_found", Vec3::new(-1.5, -1.5, -7.0)); + }, + } + } else { + &self.0.default + }; + + let tail_segment = graceful_load_segment(&spec.vox_spec.0); + + let offset = Vec3::new(spec.vox_spec.1[0], spec.vox_spec.1[1], spec.vox_spec.1[2]); + + (tail_segment, offset) + } +} +impl BipedSmallArmorPantsSpec { + fn mesh_pants(&self, pants: Option<&str>) -> BoneMeshes { + let spec = if let Some(pants) = pants { + match self.0.map.get(pants) { + Some(spec) => spec, + None => { + error!(?pants, "No pants specification exists"); + return load_mesh("not_found", Vec3::new(-1.5, -1.5, -7.0)); + }, + } + } else { + &self.0.default + }; + + let pants_segment = graceful_load_segment(&spec.vox_spec.0); + + let offset = Vec3::new(spec.vox_spec.1[0], spec.vox_spec.1[1], spec.vox_spec.1[2]); + + (pants_segment, offset) + } +} +impl BipedSmallArmorHandSpec { + fn mesh_hand(&self, hand: Option<&str>, flipped: bool) -> BoneMeshes { + let spec = if let Some(hand) = hand { + match self.0.map.get(hand) { + Some(spec) => spec, + None => { + error!(?hand, "No hand specification exists"); + return load_mesh("not_found", Vec3::new(-1.5, -1.5, -7.0)); + }, + } + } else { + &self.0.default + }; + + let hand_segment = if flipped { + graceful_load_segment_flipped(&spec.left.vox_spec.0, true) + } else { + graceful_load_segment(&spec.right.vox_spec.0) + }; + let offset = if flipped { + spec.left.vox_spec.1 + } else { + spec.right.vox_spec.1 + }; + + (hand_segment, Vec3::from(offset)) + } + + fn mesh_left_hand(&self, hand: Option<&str>) -> BoneMeshes { self.mesh_hand(hand, true) } + + fn mesh_right_hand(&self, hand: Option<&str>) -> BoneMeshes { self.mesh_hand(hand, false) } +} +impl BipedSmallArmorFootSpec { + fn mesh_foot(&self, foot: Option<&str>, flipped: bool) -> BoneMeshes { + let spec = if let Some(foot) = foot { + match self.0.map.get(foot) { + Some(spec) => spec, + None => { + error!(?foot, "No foot specification exists"); + return load_mesh("not_found", Vec3::new(-1.5, -1.5, -7.0)); + }, + } + } else { + &self.0.default + }; + + let foot_segment = if flipped { + graceful_load_segment_flipped(&spec.left.vox_spec.0, true) + } else { + graceful_load_segment(&spec.right.vox_spec.0) + }; + let offset = if flipped { + spec.left.vox_spec.1 + } else { + spec.right.vox_spec.1 + }; + + (foot_segment, Vec3::from(offset)) + } + + fn mesh_left_foot(&self, foot: Option<&str>) -> BoneMeshes { self.mesh_foot(foot, true) } + + fn mesh_right_foot(&self, foot: Option<&str>) -> BoneMeshes { self.mesh_foot(foot, false) } +} + +impl BipedSmallWeaponSpec { + fn mesh_main(&self, item_definition_id: &str, flipped: bool) -> BoneMeshes { + let spec = match self.0.get(item_definition_id) { + Some(spec) => spec, + None => { + error!(?item_definition_id, "No tool/weapon specification exists"); + return load_mesh("not_found", Vec3::new(-1.5, -1.5, -7.0)); + }, + }; + + let tool_kind_segment = if flipped { + graceful_load_segment_flipped(&spec.vox_spec.0, true) + } else { + graceful_load_segment(&spec.vox_spec.0) + }; + + let offset = Vec3::new( + if flipped { + 0.0 - spec.vox_spec.1[0] - (tool_kind_segment.sz.x as f32) + } else { + spec.vox_spec.1[0] + }, + spec.vox_spec.1[1], + spec.vox_spec.1[2], + ); + + (tool_kind_segment, offset) + } +} +//// + #[derive(Deserialize)] struct DragonCentralSpec(HashMap<(DSpecies, DBodyType), SidedDCentralVoxSpec>); @@ -2896,7 +3171,6 @@ struct SidedBLCentralVoxSpec { torso_upper: BipedLargeCentralSubSpec, torso_lower: BipedLargeCentralSubSpec, tail: BipedLargeCentralSubSpec, - main: BipedLargeCentralSubSpec, second: BipedLargeCentralSubSpec, } #[derive(Deserialize)] @@ -2924,14 +3198,29 @@ struct BipedLargeLateralSubSpec { offset: [f32; 3], // Should be relative to initial origin lateral: VoxSimple, } - +#[derive(Deserialize)] +struct BipedLargeWeaponSpec(HashMap); make_vox_spec!( biped_large::Body, struct BipedLargeSpec { central: BipedLargeCentralSpec = "voxygen.voxel.biped_large_central_manifest", lateral: BipedLargeLateralSpec = "voxygen.voxel.biped_large_lateral_manifest", + weapon: BipedLargeWeaponSpec = "voxygen.voxel.biped_weapon_manifest", }, - |FigureKey { body, .. }, spec| { + |FigureKey { body, extra }, spec| { + const DEFAULT_LOADOUT: super::cache::CharacterCacheKey = super::cache::CharacterCacheKey { + third_person: None, + tool: None, + lantern: None, + glider: None, + hand: None, + foot: None, + }; + + // TODO: This is bad code, maybe this method should return Option<_> + let loadout = extra.as_deref().unwrap_or(&DEFAULT_LOADOUT); + //let third_person = loadout.third_person.as_ref(); + let tool = loadout.tool.as_ref(); [ Some(spec.central.read().0.mesh_head( body.species, @@ -2953,10 +3242,12 @@ make_vox_spec!( body.species, body.body_type, )), - Some(spec.central.read().0.mesh_main( - body.species, - body.body_type, - )), + tool.and_then(|tool| tool.active.as_ref()).map(|tool| { + spec.weapon.read().0.mesh_main( + &tool.name, + false, + ) + }), Some(spec.central.read().0.mesh_second( body.species, body.body_type, @@ -3079,22 +3370,6 @@ impl BipedLargeCentralSpec { (central, Vec3::from(spec.tail.offset)) } - fn mesh_main(&self, species: BLSpecies, body_type: BLBodyType) -> BoneMeshes { - let spec = match self.0.get(&(species, body_type)) { - Some(spec) => spec, - None => { - error!( - "No main weapon specification exists for the combination of {:?} and {:?}", - species, body_type - ); - return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5)); - }, - }; - let central = graceful_load_segment(&spec.main.central.0); - - (central, Vec3::from(spec.main.offset)) - } - fn mesh_second(&self, species: BLSpecies, body_type: BLBodyType) -> BoneMeshes { let spec = match self.0.get(&(species, body_type)) { Some(spec) => spec, @@ -3240,6 +3515,35 @@ impl BipedLargeLateralSpec { (lateral, Vec3::from(spec.foot_r.offset)) } } +impl BipedLargeWeaponSpec { + fn mesh_main(&self, item_definition_id: &str, flipped: bool) -> BoneMeshes { + let spec = match self.0.get(item_definition_id) { + Some(spec) => spec, + None => { + error!(?item_definition_id, "No tool/weapon specification exists"); + return load_mesh("not_found", Vec3::new(-1.5, -1.5, -7.0)); + }, + }; + + let tool_kind_segment = if flipped { + graceful_load_segment_flipped(&spec.vox_spec.0, true) + } else { + graceful_load_segment(&spec.vox_spec.0) + }; + + let offset = Vec3::new( + if flipped { + 0.0 - spec.vox_spec.1[0] - (tool_kind_segment.sz.x as f32) + } else { + spec.vox_spec.1[0] + }, + spec.vox_spec.1[1], + spec.vox_spec.1[2], + ); + + (tool_kind_segment, offset) + } +} //// #[derive(Deserialize)] struct GolemCentralSpec(HashMap<(GSpecies, GBodyType), SidedGCentralVoxSpec>); @@ -3739,7 +4043,7 @@ impl QuadrupedLowLateralSpec { return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5)); }, }; - let lateral = graceful_load_segment(&spec.front_left.lateral.0); + let lateral = graceful_load_segment_flipped(&spec.front_left.lateral.0, true); (lateral, Vec3::from(spec.front_left.offset)) } @@ -3771,7 +4075,7 @@ impl QuadrupedLowLateralSpec { return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5)); }, }; - let lateral = graceful_load_segment(&spec.back_left.lateral.0); + let lateral = graceful_load_segment_flipped(&spec.back_left.lateral.0, true); (lateral, Vec3::from(spec.back_left.offset)) } diff --git a/voxygen/src/scene/figure/mod.rs b/voxygen/src/scene/figure/mod.rs index 295a3552e5..68cde78921 100644 --- a/voxygen/src/scene/figure/mod.rs +++ b/voxygen/src/scene/figure/mod.rs @@ -18,10 +18,10 @@ use crate::{ }, }; use anim::{ - biped_large::BipedLargeSkeleton, bird_medium::BirdMediumSkeleton, - bird_small::BirdSmallSkeleton, character::CharacterSkeleton, dragon::DragonSkeleton, - fish_medium::FishMediumSkeleton, fish_small::FishSmallSkeleton, golem::GolemSkeleton, - object::ObjectSkeleton, quadruped_low::QuadrupedLowSkeleton, + biped_large::BipedLargeSkeleton, biped_small::BipedSmallSkeleton, + bird_medium::BirdMediumSkeleton, bird_small::BirdSmallSkeleton, character::CharacterSkeleton, + dragon::DragonSkeleton, fish_medium::FishMediumSkeleton, fish_small::FishSmallSkeleton, + golem::GolemSkeleton, object::ObjectSkeleton, quadruped_low::QuadrupedLowSkeleton, quadruped_medium::QuadrupedMediumSkeleton, quadruped_small::QuadrupedSmallSkeleton, theropod::TheropodSkeleton, Animation, Skeleton, }; @@ -53,7 +53,7 @@ use treeculler::{BVol, BoundingSphere}; use vek::*; const DAMAGE_FADE_COEFFICIENT: f64 = 15.0; -const MOVING_THRESHOLD: f32 = 0.7; +const MOVING_THRESHOLD: f32 = 0.2; const MOVING_THRESHOLD_SQR: f32 = MOVING_THRESHOLD * MOVING_THRESHOLD; /// camera data, figure LOD render distance. @@ -98,6 +98,7 @@ struct FigureMgrStates { bird_small_states: HashMap>, fish_small_states: HashMap>, biped_large_states: HashMap>, + biped_small_states: HashMap>, golem_states: HashMap>, object_states: HashMap>, } @@ -116,6 +117,7 @@ impl FigureMgrStates { bird_small_states: HashMap::new(), fish_small_states: HashMap::new(), biped_large_states: HashMap::new(), + biped_small_states: HashMap::new(), golem_states: HashMap::new(), object_states: HashMap::new(), } @@ -172,6 +174,10 @@ impl FigureMgrStates { .biped_large_states .get_mut(&entity) .map(DerefMut::deref_mut), + Body::BipedSmall(_) => self + .biped_small_states + .get_mut(&entity) + .map(DerefMut::deref_mut), Body::Golem(_) => self.golem_states.get_mut(&entity).map(DerefMut::deref_mut), Body::Object(_) => self.object_states.get_mut(&entity).map(DerefMut::deref_mut), } @@ -196,6 +202,7 @@ impl FigureMgrStates { Body::BirdSmall(_) => self.bird_small_states.remove(&entity).map(|e| e.meta), Body::FishSmall(_) => self.fish_small_states.remove(&entity).map(|e| e.meta), Body::BipedLarge(_) => self.biped_large_states.remove(&entity).map(|e| e.meta), + Body::BipedSmall(_) => self.biped_small_states.remove(&entity).map(|e| e.meta), Body::Golem(_) => self.golem_states.remove(&entity).map(|e| e.meta), Body::Object(_) => self.object_states.remove(&entity).map(|e| e.meta), } @@ -214,6 +221,7 @@ impl FigureMgrStates { self.bird_small_states.retain(|k, v| f(k, &mut *v)); self.fish_small_states.retain(|k, v| f(k, &mut *v)); self.biped_large_states.retain(|k, v| f(k, &mut *v)); + self.biped_small_states.retain(|k, v| f(k, &mut *v)); self.golem_states.retain(|k, v| f(k, &mut *v)); self.object_states.retain(|k, v| f(k, &mut *v)); } @@ -231,6 +239,7 @@ impl FigureMgrStates { + self.bird_small_states.len() + self.fish_small_states.len() + self.biped_large_states.len() + + self.biped_small_states.len() + self.golem_states.len() + self.object_states.len() } @@ -290,6 +299,11 @@ impl FigureMgrStates { .iter() .filter(|(_, c)| c.visible()) .count() + + self + .biped_small_states + .iter() + .filter(|(_, c)| c.visible()) + .count() + self .golem_states .iter() @@ -316,6 +330,7 @@ pub struct FigureMgr { fish_medium_model_cache: FigureModelCache, fish_small_model_cache: FigureModelCache, biped_large_model_cache: FigureModelCache, + biped_small_model_cache: FigureModelCache, object_model_cache: FigureModelCache, golem_model_cache: FigureModelCache, states: FigureMgrStates, @@ -336,6 +351,7 @@ impl FigureMgr { fish_medium_model_cache: FigureModelCache::new(), fish_small_model_cache: FigureModelCache::new(), biped_large_model_cache: FigureModelCache::new(), + biped_small_model_cache: FigureModelCache::new(), object_model_cache: FigureModelCache::new(), golem_model_cache: FigureModelCache::new(), states: FigureMgrStates::default(), @@ -365,6 +381,8 @@ impl FigureMgr { .clean(&mut self.col_lights, tick); self.biped_large_model_cache .clean(&mut self.col_lights, tick); + self.biped_small_model_cache + .clean(&mut self.col_lights, tick); self.object_model_cache.clean(&mut self.col_lights, tick); self.golem_model_cache.clean(&mut self.col_lights, tick); } @@ -789,6 +807,7 @@ impl FigureMgr { active_tool_kind, second_tool_kind, hands, + vel.0, // TODO: Update to use the quaternion. ori * anim::vek::Vec3::::unit_y(), state.last_ori * anim::vek::Vec3::::unit_y(), @@ -1308,16 +1327,6 @@ impl FigureMgr { skeleton_attr, ) }, - /* - CharacterState::Charge(_) => { - anim::character::ChargeAnimation::update_skeleton( - &target_base, - (active_tool_kind, time), - state.state_time, - &mut state_animation_rate, - skeleton_attr, - ) - }*/ CharacterState::Equipping { .. } => { anim::character::EquipAnimation::update_skeleton( &target_base, @@ -1327,6 +1336,13 @@ impl FigureMgr { skeleton_attr, ) }, + CharacterState::Talk => anim::character::TalkAnimation::update_skeleton( + &target_base, + (active_tool_kind, second_tool_kind, vel.0.magnitude(), time), + state.state_time, + &mut state_animation_rate, + skeleton_attr, + ), CharacterState::Wielding { .. } => { if physics.in_liquid.is_some() { anim::character::SwimWieldAnimation::update_skeleton( @@ -1499,6 +1515,7 @@ impl FigureMgr { state.last_ori * anim::vek::Vec3::::unit_y(), time, state.avg_vel, + state.acc_vel, ), state.state_time, &mut state_animation_rate, @@ -1515,6 +1532,7 @@ impl FigureMgr { state.last_ori * anim::vek::Vec3::::unit_y(), time, state.avg_vel, + state.acc_vel, ), state.state_time, &mut state_animation_rate, @@ -2029,6 +2047,7 @@ impl FigureMgr { state.last_ori * anim::vek::Vec3::::unit_y(), time, state.avg_vel, + state.acc_vel, ), state.state_time, &mut state_animation_rate, @@ -2044,6 +2063,7 @@ impl FigureMgr { state.last_ori * anim::vek::Vec3::::unit_y(), time, state.avg_vel, + state.acc_vel, ), state.state_time, &mut state_animation_rate, @@ -2519,6 +2539,309 @@ impl FigureMgr { terrain, ); }, + Body::BipedSmall(body) => { + let (model, skeleton_attr) = self.biped_small_model_cache.get_or_create_model( + renderer, + &mut self.col_lights, + *body, + inventory, + tick, + player_camera_mode, + player_character_state, + scene_data.runtime, + ); + + let state = self + .states + .biped_small_states + .entry(entity) + .or_insert_with(|| { + FigureState::new(renderer, BipedSmallSkeleton::default()) + }); + + let (character, last_character) = match (character, last_character) { + (Some(c), Some(l)) => (c, l), + _ => continue, + }; + + if !character.same_variant(&last_character.0) { + state.state_time = 0.0; + } + + let target_base = match ( + physics.on_ground, + vel.0.magnitude_squared() > MOVING_THRESHOLD_SQR, // Moving + physics.in_liquid.is_some(), // In water + ) { + // Idle + (true, false, false) => anim::biped_small::IdleAnimation::update_skeleton( + &BipedSmallSkeleton::default(), + ( + vel.0, + ori * anim::vek::Vec3::::unit_y(), + state.last_ori * anim::vek::Vec3::::unit_y(), + time, + state.avg_vel, + ), + state.state_time, + &mut state_animation_rate, + skeleton_attr, + ), + // Run + (true, true, _) => anim::biped_small::RunAnimation::update_skeleton( + &BipedSmallSkeleton::default(), + ( + vel.0, + ori * anim::vek::Vec3::::unit_y(), + state.last_ori * anim::vek::Vec3::::unit_y(), + time, + state.avg_vel, + state.acc_vel, + ), + state.state_time, + &mut state_animation_rate, + skeleton_attr, + ), + // Jump + (false, _, false) => anim::biped_small::RunAnimation::update_skeleton( + &BipedSmallSkeleton::default(), + ( + vel.0, + ori * anim::vek::Vec3::::unit_y(), + state.last_ori * anim::vek::Vec3::::unit_y(), + time, + state.avg_vel, + state.acc_vel, + ), + state.state_time, + &mut state_animation_rate, + skeleton_attr, + ), + // Swim + (false, _, true) => anim::biped_small::RunAnimation::update_skeleton( + &BipedSmallSkeleton::default(), + ( + vel.0, + ori * anim::vek::Vec3::::unit_y(), + state.last_ori * anim::vek::Vec3::::unit_y(), + time, + state.avg_vel, + state.acc_vel, + ), + state.state_time, + &mut state_animation_rate, + skeleton_attr, + ), + _ => anim::biped_small::IdleAnimation::update_skeleton( + &BipedSmallSkeleton::default(), + ( + vel.0, + ori * anim::vek::Vec3::::unit_y(), + state.last_ori * anim::vek::Vec3::::unit_y(), + time, + state.avg_vel, + ), + state.state_time, + &mut state_animation_rate, + skeleton_attr, + ), + }; + + let target_bones = match &character { + CharacterState::Wielding { .. } => { + anim::biped_small::WieldAnimation::update_skeleton( + &target_base, + ( + active_tool_kind, + vel.0, + ori * anim::vek::Vec3::::unit_y(), + state.last_ori * anim::vek::Vec3::::unit_y(), + time, + state.avg_vel, + state.acc_vel, + ), + state.state_time, + &mut state_animation_rate, + skeleton_attr, + ) + }, + CharacterState::DashMelee(s) => { + let stage_time = s.timer.as_secs_f64(); + let stage_progress = match s.stage_section { + StageSection::Buildup => { + stage_time / s.static_data.buildup_duration.as_secs_f64() + }, + StageSection::Charge => { + stage_time / s.static_data.charge_duration.as_secs_f64() + }, + StageSection::Swing => { + stage_time / s.static_data.swing_duration.as_secs_f64() + }, + StageSection::Recover => { + stage_time / s.static_data.recover_duration.as_secs_f64() + }, + _ => 0.0, + }; + anim::biped_small::DashAnimation::update_skeleton( + &target_base, + ( + vel.0, + ori * anim::vek::Vec3::::unit_y(), + state.last_ori * anim::vek::Vec3::::unit_y(), + time, + state.avg_vel, + state.acc_vel, + Some(s.stage_section), + state.state_time, + ), + stage_progress, + &mut state_animation_rate, + skeleton_attr, + ) + }, + CharacterState::ChargedRanged(s) => { + let stage_time = s.timer.as_secs_f64(); + + let stage_progress = match s.stage_section { + StageSection::Buildup => { + stage_time / s.static_data.buildup_duration.as_secs_f64() + }, + StageSection::Recover => { + stage_time / s.static_data.recover_duration.as_secs_f64() + }, + + _ => 0.0, + }; + anim::biped_small::ShootAnimation::update_skeleton( + &target_base, + ( + active_tool_kind, + vel.0, + ori * anim::vek::Vec3::::unit_y(), + state.last_ori * anim::vek::Vec3::::unit_y(), + time, + state.avg_vel, + state.acc_vel, + Some(s.stage_section), + state.state_time, + ), + stage_progress, + &mut state_animation_rate, + skeleton_attr, + ) + }, + CharacterState::BasicRanged(s) => { + let stage_time = s.timer.as_secs_f64(); + + let stage_progress = match s.stage_section { + StageSection::Buildup => { + stage_time / s.static_data.buildup_duration.as_secs_f64() + }, + StageSection::Recover => { + stage_time / s.static_data.recover_duration.as_secs_f64() + }, + + _ => 0.0, + }; + anim::biped_small::ShootAnimation::update_skeleton( + &target_base, + ( + active_tool_kind, + vel.0, + ori * anim::vek::Vec3::::unit_y(), + state.last_ori * anim::vek::Vec3::::unit_y(), + time, + state.avg_vel, + state.acc_vel, + Some(s.stage_section), + state.state_time, + ), + stage_progress, + &mut state_animation_rate, + skeleton_attr, + ) + }, + CharacterState::ComboMelee(s) => { + let stage_index = (s.stage - 1) as usize; + let stage_time = s.timer.as_secs_f64(); + let stage_progress = match s.stage_section { + StageSection::Buildup => { + stage_time + / s.static_data.stage_data[stage_index] + .base_buildup_duration + .as_secs_f64() + }, + StageSection::Swing => { + stage_time + / s.static_data.stage_data[stage_index] + .base_swing_duration + .as_secs_f64() + }, + StageSection::Recover => { + stage_time + / s.static_data.stage_data[stage_index] + .base_recover_duration + .as_secs_f64() + }, + _ => 0.0, + }; + match s.stage { + 1 => anim::biped_small::AlphaAnimation::update_skeleton( + &target_base, + ( + vel.0, + ori * anim::vek::Vec3::::unit_y(), + state.last_ori * anim::vek::Vec3::::unit_y(), + time, + state.avg_vel, + state.acc_vel, + Some(s.stage_section), + state.state_time, + ), + stage_progress, + &mut state_animation_rate, + skeleton_attr, + ), + _ => anim::biped_small::AlphaAnimation::update_skeleton( + &target_base, + ( + vel.0, + ori * anim::vek::Vec3::::unit_y(), + state.last_ori * anim::vek::Vec3::::unit_y(), + time, + state.avg_vel, + state.acc_vel, + Some(s.stage_section), + state.state_time, + ), + stage_progress, + &mut state_animation_rate, + skeleton_attr, + ), + } + }, + // TODO! + _ => target_base, + }; + + state.skeleton = anim::vek::Lerp::lerp(&state.skeleton, &target_bones, dt_lerp); + state.update( + renderer, + pos.0, + ori, + scale, + col, + dt, + state_animation_rate, + model, + lpindex, + in_frustum, + is_player, + camera, + &mut update_buf, + terrain, + ); + }, Body::Dragon(body) => { let (model, skeleton_attr) = self.dragon_model_cache.get_or_create_model( renderer, @@ -2653,12 +2976,13 @@ impl FigureMgr { (true, true, false) => anim::theropod::RunAnimation::update_skeleton( &TheropodSkeleton::default(), ( - vel.0.magnitude(), + vel.0, // TODO: Update to use the quaternion. ori * anim::vek::Vec3::::unit_y(), state.last_ori * anim::vek::Vec3::::unit_y(), time, state.avg_vel, + state.acc_vel, ), state.state_time, &mut state_animation_rate, @@ -2973,12 +3297,13 @@ impl FigureMgr { ( active_tool_kind, second_tool_kind, - vel.0.magnitude(), + vel.0, // TODO: Update to use the quaternion. ori * anim::vek::Vec3::::unit_y(), state.last_ori * anim::vek::Vec3::::unit_y(), time, state.avg_vel, + state.acc_vel, ), state.state_time, &mut state_animation_rate, @@ -3013,7 +3338,13 @@ impl FigureMgr { CharacterState::Wielding { .. } => { anim::biped_large::WieldAnimation::update_skeleton( &target_base, - (active_tool_kind, second_tool_kind, vel.0.magnitude(), time), + ( + active_tool_kind, + second_tool_kind, + vel.0, + time, + state.acc_vel, + ), state.state_time, &mut state_animation_rate, skeleton_attr, @@ -3025,9 +3356,10 @@ impl FigureMgr { ( active_tool_kind, second_tool_kind, - vel.0.magnitude(), + vel.0, time, None, + state.acc_vel, ), state.state_time, &mut state_animation_rate, @@ -3053,12 +3385,13 @@ impl FigureMgr { ( active_tool_kind, second_tool_kind, - vel.0.magnitude(), + vel.0, // TODO: Update to use the quaternion. ori * anim::vek::Vec3::::unit_y(), state.last_ori * anim::vek::Vec3::::unit_y(), time, Some(s.stage_section), + state.acc_vel, ), stage_progress, &mut state_animation_rate, @@ -3084,12 +3417,13 @@ impl FigureMgr { ( active_tool_kind, second_tool_kind, - vel.0.magnitude(), + vel.0, // TODO: Update to use the quaternion. ori * anim::vek::Vec3::::unit_y(), state.last_ori * anim::vek::Vec3::::unit_y(), time, Some(s.stage_section), + state.acc_vel, ), stage_progress, &mut state_animation_rate, @@ -3118,8 +3452,10 @@ impl FigureMgr { ( active_tool_kind, second_tool_kind, + vel.0, time, Some(s.stage_section), + state.acc_vel, ), stage_progress, &mut state_animation_rate, @@ -3156,21 +3492,24 @@ impl FigureMgr { ( active_tool_kind, second_tool_kind, - vel.0.magnitude(), + vel.0, time, Some(s.stage_section), + state.acc_vel, ), stage_progress, &mut state_animation_rate, skeleton_attr, ), - 2 => anim::biped_large::SpinAnimation::update_skeleton( + 2 => anim::biped_large::BetaAnimation::update_skeleton( &target_base, ( active_tool_kind, second_tool_kind, + vel.0, time, Some(s.stage_section), + state.acc_vel, ), stage_progress, &mut state_animation_rate, @@ -3181,9 +3520,10 @@ impl FigureMgr { ( active_tool_kind, second_tool_kind, - vel.0.magnitude(), + vel.0, time, Some(s.stage_section), + state.acc_vel, ), stage_progress, &mut state_animation_rate, @@ -3313,8 +3653,9 @@ impl FigureMgr { active_tool_kind, second_tool_kind, time, - vel.0.magnitude(), + vel.0, Some(s.stage_section), + state.acc_vel, ), stage_progress, &mut state_animation_rate, @@ -3386,20 +3727,27 @@ impl FigureMgr { (true, true, false) => anim::golem::RunAnimation::update_skeleton( &GolemSkeleton::default(), ( - vel.0.magnitude(), + vel.0, // TODO: Update to use the quaternion. ori * anim::vek::Vec3::::unit_y(), state.last_ori * anim::vek::Vec3::::unit_y(), time, + state.acc_vel, ), state.state_time, &mut state_animation_rate, skeleton_attr, ), // In air - (false, _, false) => anim::golem::JumpAnimation::update_skeleton( + (false, _, false) => anim::golem::RunAnimation::update_skeleton( &GolemSkeleton::default(), - (vel.0.magnitude(), time), + ( + vel.0, + ori * anim::vek::Vec3::::unit_y(), + state.last_ori * anim::vek::Vec3::::unit_y(), + time, + state.acc_vel, + ), state.state_time, &mut state_animation_rate, skeleton_attr, @@ -3414,20 +3762,57 @@ impl FigureMgr { ), }; let target_bones = match &character { - CharacterState::BasicMelee(_) => { + CharacterState::ComboMelee(s) => { + let stage_index = (s.stage - 1) as usize; + let stage_time = s.timer.as_secs_f64(); + let stage_progress = match s.stage_section { + StageSection::Buildup => { + stage_time + / s.static_data.stage_data[stage_index] + .base_buildup_duration + .as_secs_f64() + }, + StageSection::Swing => { + stage_time + / s.static_data.stage_data[stage_index] + .base_swing_duration + .as_secs_f64() + }, + StageSection::Recover => { + stage_time + / s.static_data.stage_data[stage_index] + .base_recover_duration + .as_secs_f64() + }, + _ => 0.0, + }; + anim::golem::AlphaAnimation::update_skeleton( &target_base, - (vel.0.magnitude(), time), - state.state_time, + (Some(s.stage_section), time, state.state_time), + stage_progress, &mut state_animation_rate, skeleton_attr, ) }, - CharacterState::Shockwave(_) => { + CharacterState::Shockwave(s) => { + let stage_time = s.timer.as_secs_f64(); + let stage_progress = match s.stage_section { + StageSection::Buildup => { + stage_time / s.static_data.buildup_duration.as_secs_f64() + }, + StageSection::Swing => { + stage_time / s.static_data.swing_duration.as_secs_f64() + }, + StageSection::Recover => { + stage_time / s.static_data.recover_duration.as_secs_f64() + }, + _ => 0.0, + }; anim::golem::ShockwaveAnimation::update_skeleton( &target_base, - (vel.0.magnitude(), time), - state.state_time, + (Some(s.stage_section), vel.0.magnitude(), time), + stage_progress, &mut state_animation_rate, skeleton_attr, ) @@ -3808,6 +4193,7 @@ impl FigureMgr { fish_medium_model_cache, fish_small_model_cache, biped_large_model_cache, + biped_small_model_cache, object_model_cache, golem_model_cache, states: @@ -3823,6 +4209,7 @@ impl FigureMgr { bird_small_states, fish_small_states, biped_large_states, + biped_small_states, golem_states, object_states, }, @@ -4016,6 +4403,23 @@ impl FigureMgr { ), ) }), + Body::BipedSmall(body) => biped_small_states + .get(&entity) + .filter(|state| filter_state(&*state)) + .map(move |state| { + ( + state.locals(), + state.bone_consts(), + biped_small_model_cache.get_model( + col_lights, + *body, + inventory, + tick, + player_camera_mode, + character_state, + ), + ) + }), Body::Golem(body) => golem_states .get(&entity) .filter(|state| filter_state(&*state)) diff --git a/voxygen/src/scene/mod.rs b/voxygen/src/scene/mod.rs index 339917b173..331537515d 100644 --- a/voxygen/src/scene/mod.rs +++ b/voxygen/src/scene/mod.rs @@ -406,9 +406,9 @@ impl Scene { Outcome::Explosion { pos, power, - radius: _, - is_attack: _, + is_attack, reagent, + .. } => self.event_lights.push(EventLight { light: Light::new( *pos, @@ -416,20 +416,21 @@ impl Scene { Some(Reagent::Blue) => Rgb::new(0.15, 0.4, 1.0), Some(Reagent::Green) => Rgb::new(0.0, 1.0, 0.0), Some(Reagent::Purple) => Rgb::new(0.7, 0.0, 1.0), - Some(Reagent::Red) => Rgb::new(1.0, 0.0, 0.0), - Some(Reagent::Yellow) => Rgb::new(1.0, 1.0, 0.0), - None => { - if *power < 0.0 { - Rgb::new(0.0, 1.0, 0.0) - } else { + Some(Reagent::Red) => { + if *is_attack { Rgb::new(1.0, 0.5, 0.0) + } else { + Rgb::new(1.0, 0.0, 0.0) } }, + Some(Reagent::Yellow) => Rgb::new(1.0, 1.0, 0.0), + None => Rgb::new(1.0, 0.5, 0.0), }, - power.abs() - * match reagent { - Some(_) => 5.0, - None => 2.5, + power + * if *is_attack || reagent.is_none() { + 2.5 + } else { + 5.0 }, ), timeout: match reagent { diff --git a/voxygen/src/scene/particle.rs b/voxygen/src/scene/particle.rs index 83d8ceb793..efd3d3de8e 100644 --- a/voxygen/src/scene/particle.rs +++ b/voxygen/src/scene/particle.rs @@ -62,36 +62,59 @@ impl ParticleMgr { reagent, } => { if *is_attack { - if *power < 0.0 { - self.particles.resize_with( - self.particles.len() + (200.0 * power.abs()) as usize, - || { - Particle::new( - Duration::from_secs(1), - time, - ParticleMode::EnergyNature, - *pos + Vec3::::zero() - .map(|_| rng.gen_range(-1.0..1.0)) - .normalized() - * *radius, - ) - }, - ); - } else { - self.particles.resize_with( - self.particles.len() + (200.0 * power.abs()) as usize, - || { - Particle::new( - Duration::from_secs(1), - time, - ParticleMode::CampfireFire, - *pos + Vec3::::zero() - .map(|_| rng.gen_range(-1.0..1.0)) - .normalized() - * *radius, - ) - }, - ); + match reagent { + Some(Reagent::Green) => { + self.particles.resize_with( + self.particles.len() + (60.0 * power.abs()) as usize, + || { + Particle::new_directed( + Duration::from_secs_f32(rng.gen_range(0.2..3.0)), + time, + ParticleMode::EnergyNature, + *pos, + *pos + Vec3::::zero() + .map(|_| rng.gen_range(-1.0..1.0)) + .normalized() + * rng.gen_range(1.0..*radius), + ) + }, + ); + }, + Some(Reagent::Red) => { + self.particles.resize_with( + self.particles.len() + (75.0 * power.abs()) as usize, + || { + Particle::new_directed( + Duration::from_millis(500), + time, + ParticleMode::Explosion, + *pos, + *pos + Vec3::::zero() + .map(|_| rng.gen_range(-1.0..1.0)) + .normalized() + * *radius, + ) + }, + ); + }, + Some(Reagent::Blue) => { + self.particles.resize_with( + self.particles.len() + (75.0 * power.abs()) as usize, + || { + Particle::new_directed( + Duration::from_millis(500), + time, + ParticleMode::Ice, + *pos, + *pos + Vec3::::zero() + .map(|_| rng.gen_range(-1.0..1.0)) + .normalized() + * *radius, + ) + }, + ); + }, + _ => {}, } } else { self.particles.resize_with( @@ -295,7 +318,7 @@ impl ParticleMgr { Particle::new( Duration::from_millis(250), time, - ParticleMode::EnergyNature, + ParticleMode::CampfireSmoke, pos.0, ) }, @@ -376,6 +399,7 @@ impl ParticleMgr { .join() .filter(|(_, _, b)| b.creation.map_or(true, |c| (c + dt as f64) >= time)) { + // let range = beam.properties.speed * beam.properties.duration.as_secs_f32(); if beam .properties @@ -386,13 +410,64 @@ impl ParticleMgr { // Emit a light when using healing lights.push(Light::new(pos.0, Rgb::new(0.1, 1.0, 0.15), 1.0)); for i in 0..self.scheduler.heartbeats(Duration::from_millis(1)) { - self.particles.push(Particle::new_beam( + self.particles.push(Particle::new_directed( beam.properties.duration, time + i as f64 / 1000.0, ParticleMode::HealingBeam, pos.0, pos.0 + *ori.look_dir() * range, )); + /* + if let CharacterState::BasicBeam(b) = character_state { + if b.stage_section == StageSection::Cast { + if b.static_data.base_hps > 0.0 {// + // Emit a light when using healing + lights.push(Light::new(pos.0 + b.offset, Rgb::new(0.1, 1.0, 0.15), 1.0)); + for i in 0..self.scheduler.heartbeats(Duration::from_millis(1)) { + self.particles.push(Particle::new_directed( + b.static_data.beam_duration, + time + i as f64 / 1000.0, + ParticleMode::HealingBeam, + pos.0 + particle_ori * 0.5 + b.offset, + pos.0 + particle_ori * b.static_data.range + b.offset, + )); + } + } else { + let mut rng = thread_rng(); + let (from, to) = (Vec3::::unit_z(), particle_ori); + let m = Mat3::::rotation_from_to_3d(from, to); + // Emit a light when using flames + lights.push(Light::new( + pos.0 + b.offset, + Rgb::new(1.0, 0.25, 0.05).map(|e| e * rng.gen_range(0.8..1.2)), + 2.0, + )); + self.particles.resize_with( + self.particles.len() + + 2 * usize::from( + self.scheduler.heartbeats(Duration::from_millis(1)), + ), + || { + let phi: f32 = + rng.gen_range(0.0..b.static_data.max_angle.to_radians()); + let theta: f32 = rng.gen_range(0.0..2.0 * PI); + let offset_z = Vec3::new( + phi.sin() * theta.cos(), + phi.sin() * theta.sin(), + phi.cos(), + ); + let random_ori = offset_z * m * Vec3::new(-1.0, -1.0, 1.0); + Particle::new_directed( + b.static_data.beam_duration, + time, + ParticleMode::FlameThrower, + pos.0 + random_ori * 0.5 + b.offset, + pos.0 + random_ori * b.static_data.range + b.offset, + ) + }, + ); + } + */ } } else { let mut rng = thread_rng(); @@ -408,16 +483,16 @@ impl ParticleMgr { self.particles.len() + 2 * usize::from(self.scheduler.heartbeats(Duration::from_millis(1))), || { - let phi: f32 = rng.gen_range(0.0..beam.properties.angle.to_radians()); + let phi: f32 = rng.gen_range(0.0..beam.properties.angle); let theta: f32 = rng.gen_range(0.0..2.0 * PI); let offset_z = Vec3::new(phi.sin() * theta.cos(), phi.sin() * theta.sin(), phi.cos()); let random_ori = offset_z * m * Vec3::new(-1.0, -1.0, 1.0); - Particle::new_beam( + Particle::new_directed( beam.properties.duration, time, ParticleMode::FlameThrower, - pos.0 + random_ori, + pos.0, /* + random_ori */ pos.0 + random_ori * range, ) }, @@ -587,7 +662,7 @@ impl ParticleMgr { let theta = ori_vec.y.atan2(ori_vec.x); let dtheta = radians / distance; - let heartbeats = self.scheduler.heartbeats(Duration::from_millis(1)); + let heartbeats = self.scheduler.heartbeats(Duration::from_millis(2)); for heartbeat in 0..heartbeats { if shockwave.properties.requires_ground { @@ -627,7 +702,7 @@ impl ParticleMgr { + distance * Vec3::new(arc_position.cos(), arc_position.sin(), 0.0); self.particles.push(Particle::new( - Duration::from_secs_f32(distance / 50.0), + Duration::from_secs_f32((distance + 10.0) / 50.0), time, ParticleMode::FireShockwave, position, @@ -805,7 +880,7 @@ impl Particle { } } - fn new_beam( + fn new_directed( lifespan: Duration, time: f64, mode: ParticleMode, @@ -814,7 +889,13 @@ impl Particle { ) -> Self { Particle { alive_until: time + lifespan.as_secs_f64(), - instance: ParticleInstance::new_beam(time, lifespan.as_secs_f32(), mode, pos1, pos2), + instance: ParticleInstance::new_directed( + time, + lifespan.as_secs_f32(), + mode, + pos1, + pos2, + ), } } } diff --git a/world/src/layer/wildlife.rs b/world/src/layer/wildlife.rs index 49b7c1644e..dc083afe85 100644 --- a/world/src/layer/wildlife.rs +++ b/world/src/layer/wildlife.rs @@ -133,13 +133,23 @@ pub fn apply_wildlife_supplement<'a, R: Rng>( Entry { make_entity: |pos, rng| { EntityInfo::at(pos) - .with_body( - quadruped_medium::Body::random_with( + .with_body(match rng.gen_range(0..3) { + 0 => quadruped_medium::Body::random_with( rng, &quadruped_medium::Species::Mouflon, ) .into(), - ) + 1 => quadruped_medium::Body::random_with( + rng, + &quadruped_medium::Species::Yak, + ) + .into(), + _ => quadruped_medium::Body::random_with( + rng, + &quadruped_medium::Species::Highland, + ) + .into(), + }) .with_alignment(Alignment::Wild) }, group_size: 1..4, @@ -150,15 +160,12 @@ pub fn apply_wildlife_supplement<'a, R: Rng>( Entry { make_entity: |pos, rng| { EntityInfo::at(pos) - .with_body(match rng.gen_range(0..5) { + .with_body(match rng.gen_range(0..4) { 0 => { bird_medium::Body::random_with(rng, &bird_medium::Species::Eagle).into() }, - 1 => quadruped_low::Body::random_with(rng, &quadruped_low::Species::Asp) - .into(), - 2 => bird_medium::Body::random_with(rng, &bird_medium::Species::Snowyowl) - .into(), - 3 => quadruped_small::Body { + 1 => bird_medium::Body::random_with(rng, &bird_medium::Species::Owl).into(), + 2 => quadruped_small::Body { species: quadruped_small::Species::Fox, body_type: quadruped_small::BodyType::Female, } @@ -195,15 +202,24 @@ 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..5) { 0 => quadruped_medium::Body::random_with( rng, &quadruped_medium::Species::Tarasque, ) .into(), - 1 => { + 1 => quadruped_medium::Body::random_with( + rng, + &quadruped_medium::Species::Bear, + ) + .into(), + 2 => { theropod::Body::random_with(rng, &theropod::Species::Woodraptor).into() }, + 3 => { + quadruped_low::Body::random_with(rng, &quadruped_low::Species::Deadwood) + .into() + }, _ => quadruped_medium::Body::random_with( rng, &quadruped_medium::Species::Saber, @@ -222,7 +238,7 @@ pub fn apply_wildlife_supplement<'a, R: Rng>( Entry { make_entity: |pos, rng| { EntityInfo::at(pos) - .with_body(match rng.gen_range(0..11) { + .with_body(match rng.gen_range(0..12) { 0 => quadruped_medium::Body::random_with( rng, &quadruped_medium::Species::Deer, @@ -269,6 +285,11 @@ pub fn apply_wildlife_supplement<'a, R: Rng>( &quadruped_medium::Species::Horse, ) .into(), + 10 => quadruped_medium::Body::random_with( + rng, + &quadruped_medium::Species::Cattle, + ) + .into(), _ => bird_medium::Body::random_with(rng, &bird_medium::Species::Chicken) .into(), }) @@ -648,13 +669,15 @@ 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 => quadruped_medium::Body::random_with( rng, &quadruped_medium::Species::Bonerattler, ) .into(), - 1 => { + 1 => quadruped_low::Body::random_with(rng, &quadruped_low::Species::Asp) + .into(), + 2 => { theropod::Body::random_with(rng, &theropod::Species::Sandraptor).into() }, _ => quadruped_low::Body::random_with( @@ -787,9 +810,12 @@ 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 => fish_medium::Body::random_with(rng, &fish_medium::Species::Marlin) .into(), + 1 => { + fish_small::Body::random_with(rng, &fish_small::Species::Piranha).into() + }, _ => fish_small::Body::random_with(rng, &fish_small::Species::Clownfish) .into(), }) diff --git a/world/src/site/dungeon/mod.rs b/world/src/site/dungeon/mod.rs index a1807fcbdd..34430cdd3a 100644 --- a/world/src/site/dungeon/mod.rs +++ b/world/src/site/dungeon/mod.rs @@ -7,6 +7,7 @@ use crate::{ util::{attempt, Grid, RandomField, Sampler, CARDINALS, DIRS}, IndexRef, }; + use common::{ assets::{AssetExt, AssetHandle}, astar::Astar, @@ -598,7 +599,6 @@ impl Floor { .map(|e| e as f32 / 16.0), ) //.do_if(is_giant, |e| e.into_giant()) - .with_body(comp::Body::Humanoid(comp::humanoid::Body::random())) .with_alignment(comp::Alignment::Enemy) .with_loadout_config(loadout_builder::LoadoutConfig::CultistAcolyte) .with_skillset_config(common::skillset_builder::SkillSetConfig::CultistAcolyte) @@ -606,88 +606,147 @@ impl Floor { .with_level(dynamic_rng.gen_range((room.difficulty as f32).powf(1.25) + 3.0..(room.difficulty as f32).powf(1.5) + 4.0).round() as u16); let entity = match room.difficulty { 0 => entity - .with_name("Outcast") - .with_loadout_config(loadout_builder::LoadoutConfig::Outcast) + .with_body(comp::Body::BipedSmall( + comp::biped_small::Body::random_with( + dynamic_rng, + &comp::biped_small::Species::Gnarling, + ), + )) + .with_name("Gnarling") + .with_loadout_config(loadout_builder::LoadoutConfig::Gnarling) .with_skillset_config( - common::skillset_builder::SkillSetConfig::Outcast, + common::skillset_builder::SkillSetConfig::Gnarling, ) .with_loot_drop(comp::Item::new_from_asset_expect(chosen)) .with_main_tool(comp::Item::new_from_asset_expect( - match dynamic_rng.gen_range(0..6) { - 0 => "common.items.weapons.axe.starter_axe", - 1..=2 => "common.items.weapons.sword.starter", - 3 => "common.items.weapons.hammer.starter_hammer", - 4 => "common.items.weapons.staff.starter_staff", - _ => "common.items.weapons.bow.starter", + match dynamic_rng.gen_range(0..5) { + 0 => { + "common.items.npc_weapons.biped_small.gnarling.\ + adlet_bow" + }, + 1 => { + "common.items.npc_weapons.biped_small.gnarling.\ + gnoll_staff" + }, + _ => { + "common.items.npc_weapons.biped_small.gnarling.\ + wooden_spear" + }, }, )), 1 => entity - .with_name("Highwayman") - .with_loadout_config(loadout_builder::LoadoutConfig::Highwayman) + .with_body(comp::Body::BipedSmall( + comp::biped_small::Body::random_with( + dynamic_rng, + &comp::biped_small::Species::Adlet, + ), + )) + .with_name("Adlet") + .with_loadout_config(loadout_builder::LoadoutConfig::Adlet) .with_skillset_config( - common::skillset_builder::SkillSetConfig::Highwayman, + common::skillset_builder::SkillSetConfig::Adlet, ) .with_loot_drop(comp::Item::new_from_asset_expect(chosen)) .with_main_tool(comp::Item::new_from_asset_expect( - match dynamic_rng.gen_range(0..6) { - 0 => "common.items.weapons.axe.worn_iron_axe-0", - 1..=2 => "common.items.weapons.sword.steel-8", - 3 => "common.items.weapons.hammer.worn_iron_hammer-0", - 4 => "common.items.weapons.staff.bone_staff", - _ => "common.items.weapons.bow.hardwood-3", + match dynamic_rng.gen_range(0..5) { + 0 => "common.items.npc_weapons.biped_small.adlet.adlet_bow", + 1 => { + "common.items.npc_weapons.biped_small.adlet.gnoll_staff" + }, + _ => { + "common.items.npc_weapons.biped_small.adlet.\ + wooden_spear" + }, }, )), 2 => entity - .with_name("Bandit") - .with_loadout_config(loadout_builder::LoadoutConfig::Bandit) + .with_body(comp::Body::BipedSmall( + comp::biped_small::Body::random_with( + dynamic_rng, + &comp::biped_small::Species::Sahagin, + ), + )) + .with_name("Sahagin") + .with_loadout_config(loadout_builder::LoadoutConfig::Sahagin) .with_skillset_config( - common::skillset_builder::SkillSetConfig::Bandit, + common::skillset_builder::SkillSetConfig::Sahagin, ) .with_loot_drop(comp::Item::new_from_asset_expect(chosen)) .with_main_tool(comp::Item::new_from_asset_expect( - match dynamic_rng.gen_range(0..6) { - 0 => "common.items.weapons.axe.bronze_axe-0", - 1 => "common.items.weapons.sword.iron-4", - 2 => "common.items.weapons.sword.cultist", - 3 => "common.items.weapons.hammer.bronze_hammer-0", - 4 => "common.items.weapons.staff.bone_staff", - _ => "common.items.weapons.bow.wood-3", + match dynamic_rng.gen_range(0..5) { + 0 => { + "common.items.npc_weapons.biped_small.sahagin.adlet_bow" + }, + 1 => { + "common.items.npc_weapons.biped_small.sahagin.\ + gnoll_staff" + }, + _ => { + "common.items.npc_weapons.biped_small.sahagin.\ + wooden_spear" + }, }, )), 3 => entity - .with_name("Cultist Novice") - .with_loadout_config(loadout_builder::LoadoutConfig::CultistNovice) + .with_body(comp::Body::BipedSmall( + comp::biped_small::Body::random_with( + dynamic_rng, + &comp::biped_small::Species::Haniwa, + ), + )) + .with_name("Haniwa") + .with_loadout_config(loadout_builder::LoadoutConfig::Haniwa) .with_skillset_config( - common::skillset_builder::SkillSetConfig::CultistNovice, + common::skillset_builder::SkillSetConfig::Haniwa, ) .with_loot_drop(comp::Item::new_from_asset_expect(chosen)) .with_main_tool(comp::Item::new_from_asset_expect( - match dynamic_rng.gen_range(0..6) { - 0 => "common.items.weapons.axe.steel_axe-0", - 1..=2 => "common.items.weapons.sword.steel-2", - 3 => "common.items.weapons.hammer.cobalt_hammer-0", - 4 => "common.items.weapons.staff.amethyst_staff", - _ => "common.items.weapons.bow.bone-1", + match dynamic_rng.gen_range(0..5) { + 0 => { + "common.items.npc_weapons.biped_small.haniwa.adlet_bow" + }, + 1 => { + "common.items.npc_weapons.biped_small.haniwa.\ + gnoll_staff" + }, + _ => { + "common.items.npc_weapons.biped_small.haniwa.\ + wooden_spear" + }, }, )), 4 => entity - .with_name("Cultist Acolyte") - .with_loadout_config(loadout_builder::LoadoutConfig::CultistAcolyte) + .with_body(comp::Body::BipedSmall( + comp::biped_small::Body::random_with( + dynamic_rng, + &comp::biped_small::Species::Myrmidon, + ), + )) + .with_name("Myrmidon") + .with_loadout_config(loadout_builder::LoadoutConfig::Myrmidon) .with_skillset_config( - common::skillset_builder::SkillSetConfig::CultistAcolyte, + common::skillset_builder::SkillSetConfig::Myrmidon, ) .with_loot_drop(comp::Item::new_from_asset_expect(chosen)) .with_main_tool(comp::Item::new_from_asset_expect( - match dynamic_rng.gen_range(0..6) { - 0 => "common.items.weapons.axe.malachite_axe-0", - 1..=2 => "common.items.weapons.sword.cultist", - 3 => "common.items.weapons.hammer.cultist_purp_2h-0", - 4 => "common.items.weapons.staff.cultist_staff", - _ => "common.items.weapons.bow.bone-1", + match dynamic_rng.gen_range(0..5) { + 0 => { + "common.items.npc_weapons.biped_small.myrmidon.\ + adlet_bow" + }, + 1 => { + "common.items.npc_weapons.biped_small.myrmidon.\ + gnoll_staff" + }, + _ => { + "common.items.npc_weapons.biped_small.myrmidon.\ + wooden_spear" + }, }, )), 5 => match dynamic_rng.gen_range(0..6) { 0 => entity + .with_body(comp::Body::Humanoid(comp::humanoid::Body::random())) .with_name("Cultist Warlock") .with_loadout_config(loadout_builder::LoadoutConfig::Warlock) .with_skillset_config( @@ -771,104 +830,57 @@ impl Floor { let entity = match room.difficulty { 0 => vec![ EntityInfo::at(tile_wcenter.map(|e| e as f32)) - .with_body(comp::Body::Humanoid( - comp::humanoid::Body::random(), - )) - .with_name("Outcast Leader".to_string()) - .with_loot_drop(comp::Item::new_from_asset_expect(chosen)) - .with_loadout_config(loadout_builder::LoadoutConfig::Outcast) - .with_skillset_config( - common::skillset_builder::SkillSetConfig::Outcast, - ) - .with_scale(2.0) - .with_main_tool(comp::Item::new_from_asset_expect( - match dynamic_rng.gen_range(0..6) { - 0 => "common.items.weapons.axe.worn_iron_axe-0", - 1..=2 => "common.items.weapons.sword.steel-8", - 3 => { - "common.items.weapons.hammer.worn_iron_hammer-0" - }, - 4 => "common.items.weapons.staff.bone_staff", - _ => "common.items.weapons.bow.hardwood-3", - }, - )), - EntityInfo::at(tile_wcenter.map(|e| e as f32)) - .with_body(comp::Body::QuadrupedMedium( - comp::quadruped_medium::Body::random_with( + .with_body(comp::Body::BipedLarge( + comp::biped_large::Body::random_with( dynamic_rng, - &comp::quadruped_medium::Species::Tarasque, + &comp::biped_large::Species::Harvester, ), )) - .with_name("Tarasque".to_string()) + .with_name("Harvester".to_string()) .with_loot_drop(comp::Item::new_from_asset_expect(chosen)), ], 1 => vec![ EntityInfo::at(tile_wcenter.map(|e| e as f32)) - .with_body(comp::Body::Theropod( - comp::theropod::Body::random_with( + .with_body(comp::Body::BipedLarge( + comp::biped_large::Body::random_with( dynamic_rng, - &comp::theropod::Species::Odonto, + &comp::biped_large::Species::Yeti, ), )) - .with_name("Odonto".to_string()) + .with_name("Yeti".to_string()) .with_loot_drop(comp::Item::new_from_asset_expect(chosen)), ], 2 => vec![ EntityInfo::at(tile_wcenter.map(|e| e as f32)) - .with_body(comp::Body::Humanoid( - comp::humanoid::Body::random() + .with_body(comp::Body::BipedLarge( + comp::biped_large::Body::random_with( + dynamic_rng, + &comp::biped_large::Species::Tidalwarrior, + ), )) - .with_name("Bandit Captain".to_string()) - .with_loot_drop(comp::Item::new_from_asset_expect(chosen)) - .with_loadout_config(loadout_builder::LoadoutConfig::Bandit) - .with_skillset_config( - common::skillset_builder::SkillSetConfig::Bandit - ) - .with_scale(2.0) - .with_main_tool(comp::Item::new_from_asset_expect( - match dynamic_rng.gen_range(0..6) { - 0 => "common.items.weapons.axe.steel_axe-0", - 1..=2 => "common.items.weapons.sword.steel-2", - 3 => "common.items.weapons.hammer.cobalt_hammer-0", - 4 => "common.items.weapons.staff.amethyst_staff", - _ => "common.items.weapons.bow.bone-1", - }, - ),); - 2 + .with_name("Tidal Warrior".to_string()) + .with_loot_drop(comp::Item::new_from_asset_expect(chosen)), ], 3 => vec![ - EntityInfo::at(tile_wcenter.map(|e| e as f32)) - .with_body(comp::Body::Humanoid( - comp::humanoid::Body::random() - )) - .with_name("Cultist Acolyte".to_string()) - .with_loot_drop(comp::Item::new_from_asset_expect(chosen)) - .with_loadout_config(loadout_builder::LoadoutConfig::CultistAcolyte) - .with_skillset_config( - common::skillset_builder::SkillSetConfig::CultistAcolyte - ) - .with_scale(2.0) - .with_main_tool(comp::Item::new_from_asset_expect( - match dynamic_rng.gen_range(0..6) { - 0 => "common.items.weapons.axe.malachite_axe-0", - 1..=2 => "common.items.weapons.sword.cultist", - 3 => - "common.items.weapons.hammer.cultist_purp_2h-0", - 4 => "common.items.weapons.staff.cultist_staff", - _ => "common.items.weapons.bow.bone-1", - }, - ),); - 2 - ], - 4 => vec![ EntityInfo::at(tile_wcenter.map(|e| e as f32)) .with_body(comp::Body::Golem( comp::golem::Body::random_with( dynamic_rng, - &comp::golem::Species::StoneGolem, + &comp::golem::Species::ClayGolem, ), )) - .with_name("Stonework Defender".to_string()) + .with_name("Clay Golem".to_string()) + .with_loot_drop(comp::Item::new_from_asset_expect(chosen)), + ], + 4 => vec![ + EntityInfo::at(tile_wcenter.map(|e| e as f32)) + .with_body(comp::Body::BipedLarge( + comp::biped_large::Body::random_with( + dynamic_rng, + &comp::biped_large::Species::Minotaur, + ), + )) + .with_name("Minotaur".to_string()) .with_loot_drop(comp::Item::new_from_asset_expect(chosen)), ], 5 => vec![ @@ -881,7 +893,9 @@ impl Floor { )) .with_name("Mindflayer".to_string()) .with_loot_drop(comp::Item::new_from_asset_expect(chosen)) - .with_skillset_config(common::skillset_builder::SkillSetConfig::Mindflayer), + .with_skillset_config( + common::skillset_builder::SkillSetConfig::Mindflayer, + ), ], _ => { vec![EntityInfo::at(tile_wcenter.map(|e| e as f32)).with_body( @@ -981,13 +995,58 @@ impl Floor { ], 2 => vec![ EntityInfo::at(tile_wcenter.map(|e| e as f32)) - .with_body(comp::Body::QuadrupedMedium( - comp::quadruped_medium::Body::random_with( + .with_body(comp::Body::QuadrupedLow( + comp::quadruped_low::Body::random_with( dynamic_rng, - &comp::quadruped_medium::Species::Tarasque, + &comp::quadruped_low::Species::Hakulaq, ), )) - .with_name("Tarasque".to_string()) + .with_name("Hakulaq".to_string()) + .with_loot_drop(comp::Item::new_from_asset_expect(chosen)), + EntityInfo::at(tile_wcenter.map(|e| e as f32)) + .with_body(comp::Body::QuadrupedLow( + comp::quadruped_low::Body::random_with( + dynamic_rng, + &comp::quadruped_low::Species::Hakulaq, + ), + )) + .with_name("Hakulaq".to_string()) + .with_loot_drop(comp::Item::new_from_asset_expect(chosen)), + EntityInfo::at(tile_wcenter.map(|e| e as f32)) + .with_body(comp::Body::QuadrupedLow( + comp::quadruped_low::Body::random_with( + dynamic_rng, + &comp::quadruped_low::Species::Hakulaq, + ), + )) + .with_name("Hakulaq".to_string()) + .with_loot_drop(comp::Item::new_from_asset_expect(chosen)), + EntityInfo::at(tile_wcenter.map(|e| e as f32)) + .with_body(comp::Body::QuadrupedLow( + comp::quadruped_low::Body::random_with( + dynamic_rng, + &comp::quadruped_low::Species::Hakulaq, + ), + )) + .with_name("Hakulaq".to_string()) + .with_loot_drop(comp::Item::new_from_asset_expect(chosen)), + EntityInfo::at(tile_wcenter.map(|e| e as f32)) + .with_body(comp::Body::QuadrupedLow( + comp::quadruped_low::Body::random_with( + dynamic_rng, + &comp::quadruped_low::Species::Hakulaq, + ), + )) + .with_name("Hakulaq".to_string()) + .with_loot_drop(comp::Item::new_from_asset_expect(chosen)), + EntityInfo::at(tile_wcenter.map(|e| e as f32)) + .with_body(comp::Body::QuadrupedLow( + comp::quadruped_low::Body::random_with( + dynamic_rng, + &comp::quadruped_low::Species::Hakulaq, + ), + )) + .with_name("Hakulaq".to_string()) .with_loot_drop(comp::Item::new_from_asset_expect(chosen)), ], 3 => vec![ @@ -1001,7 +1060,6 @@ impl Floor { .with_skillset_config( common::skillset_builder::SkillSetConfig::CultistAcolyte ) - .with_scale(2.0) .with_main_tool(comp::Item::new_from_asset_expect( match dynamic_rng.gen_range(0..6) { 0 => "common.items.weapons.axe.malachite_axe-0", @@ -1017,19 +1075,19 @@ impl Floor { .with_body(comp::Body::QuadrupedMedium( comp::quadruped_medium::Body::random_with( dynamic_rng, - &comp::quadruped_medium::Species::Wolf, + &comp::quadruped_medium::Species::Darkhound, ), )) - .with_name("Tamed Wolf".to_string()) + .with_name("Tamed Darkhound".to_string()) .with_loot_drop(comp::Item::new_from_asset_expect(chosen)), EntityInfo::at(tile_wcenter.map(|e| e as f32)) .with_body(comp::Body::QuadrupedMedium( comp::quadruped_medium::Body::random_with( dynamic_rng, - &comp::quadruped_medium::Species::Wolf, + &comp::quadruped_medium::Species::Darkhound, ), )) - .with_name("Tamed Wolf".to_string()) + .with_name("Tamed Darkhound".to_string()) .with_loot_drop(comp::Item::new_from_asset_expect(chosen)), ], 4 => vec![