diff --git a/assets/common/abilities/ability_set_manifest.ron b/assets/common/abilities/ability_set_manifest.ron index 6a3c4f4f57..7c300eebeb 100644 --- a/assets/common/abilities/ability_set_manifest.ron +++ b/assets/common/abilities/ability_set_manifest.ron @@ -264,6 +264,18 @@ (None, "common.abilities.custom.birdlargefire.fireshockwave"), ], ), + Custom("Bird Large Basic"): ( + primary: "common.abilities.custom.birdlargebreathe.firebomb", + secondary: "common.abilities.custom.birdlargebreathe.triplestrike", + abilities: [ + (None, "common.abilities.custom.birdlargebasic.summontornadoes"), + ], + ), + Custom("Tornado"): ( + primary: "common.abilities.custom.tornado.spin", + secondary: "common.abilities.empty.basic", + abilities: [], + ), Tool(Debug): ( primary: "common.abilities.debug.forwardboost", secondary: "common.abilities.debug.upboost", diff --git a/assets/common/abilities/custom/birdlargebasic/summontornadoes.ron b/assets/common/abilities/custom/birdlargebasic/summontornadoes.ron new file mode 100644 index 0000000000..9ad07751b4 --- /dev/null +++ b/assets/common/abilities/custom/birdlargebasic/summontornadoes.ron @@ -0,0 +1,13 @@ +BasicSummon( + buildup_duration: 0.5, + cast_duration: 1.0, + recover_duration: 0.5, + summon_amount: 6, + summon_info: ( + body: Object(Tornado), + scale: None, + health_scaling: 80, + loadout_config: None, + skillset_config: None, + ), +) \ No newline at end of file diff --git a/assets/common/abilities/custom/tornado/spin.ron b/assets/common/abilities/custom/tornado/spin.ron new file mode 100644 index 0000000000..df0320d9c2 --- /dev/null +++ b/assets/common/abilities/custom/tornado/spin.ron @@ -0,0 +1,19 @@ +SpinMelee( + buildup_duration: 0.2, + swing_duration: 0.6, + recover_duration: 0.2, + base_damage: 70, + base_poise_damage: 25, + knockback: ( strength: 0.0, direction: Away), + range: 3.5, + damage_effect: None, + energy_cost: 100, + is_infinite: true, + movement_behavior: AxeHover, + is_interruptible: false, + forward_speed: 0.0, + num_spins: 1, + specifier: None, + target: Some(OutOfGroup), + damage_kind: Slashing, +) diff --git a/assets/common/items/npc_weapons/unique/birdlargebasic.ron b/assets/common/items/npc_weapons/unique/birdlargebasic.ron new file mode 100644 index 0000000000..a97d610359 --- /dev/null +++ b/assets/common/items/npc_weapons/unique/birdlargebasic.ron @@ -0,0 +1,19 @@ +ItemDef( + name: "Bird Large Basic", + description: "testing123", + kind: Tool(( + kind: Natural, + hands: Two, + stats: Direct(( + equip_time_secs: 0.01, + power: 1.0, + poise_strength: 1.0, + speed: 1.0, + crit_chance: 0.0625, + crit_mult: 1.9142857, + )), + )), + quality: Low, + tags: [], + ability_spec: Some(Custom("Bird Large Basic")), +) \ No newline at end of file diff --git a/assets/common/npc_names.ron b/assets/common/npc_names.ron index 2729cacb40..ca8be884c0 100644 --- a/assets/common/npc_names.ron +++ b/assets/common/npc_names.ron @@ -826,9 +826,17 @@ keyword: "wendigo", generic: "Wendigo" ), - troll: ( - keyword: "troll", - generic: "Troll" + troll_cave: ( + keyword: "troll_cave", + generic: "Cave Troll" + ), + troll_mountain: ( + keyword: "troll_mountain", + generic: "Mountain Troll" + ), + troll_swamp: ( + keyword: "troll_swamp", + generic: "Swamp Troll" ), dullahan: ( keyword: "dullahan", @@ -1080,6 +1088,10 @@ keyword: "cockatrice", generic: "Cockatrice" ), + roc: ( + keyword: "roc", + generic: "Roc" + ), ) ), quadruped_low: ( diff --git a/assets/voxygen/shaders/particle-vert.glsl b/assets/voxygen/shaders/particle-vert.glsl index a97e1bdffe..bb3cc72945 100644 --- a/assets/voxygen/shaders/particle-vert.glsl +++ b/assets/voxygen/shaders/particle-vert.glsl @@ -71,6 +71,7 @@ const int BUBBLES = 29; const int WATER = 30; const int ICE_SPIKES = 31; const int DRIP = 32; +const int TORNADO = 33; // meters per second squared (acceleration) const float earth_gravity = 9.807; @@ -543,6 +544,16 @@ void main() { spin_in_axis(vec3(1,0,0),0) ); break; + case TORNADO: + f_reflect = 0.0; // Fire doesn't reflect light, it emits it + attr = Attr( + //vec3(sin(lifetime * 400.0) * 3.0 * percent(), cos(lifetime * 400.0) * 3.0 * percent(), lifetime * 5.0), + spiral_motion(vec3(0, 0, 5), abs(rand0) + abs(rand1) * percent() * 3.0, percent(), 15.0 * abs(rand2), rand3), + vec3((2.5 * (1 - slow_start(0.05)))), + vec4(1.2 + 0.5 * percent(), 1.2 + 0.5 * percent(), 1.2 + 0.5 * percent(), 2.5), + spin_in_axis(vec3(rand6, rand7, rand8), percent() * 10 + 3 * rand9) + ); + break; default: attr = Attr( linear_motion( diff --git a/assets/voxygen/voxel/biped_large_central_manifest.ron b/assets/voxygen/voxel/biped_large_central_manifest.ron index e002711ae2..4d2830c1b2 100644 --- a/assets/voxygen/voxel/biped_large_central_manifest.ron +++ b/assets/voxygen/voxel/biped_large_central_manifest.ron @@ -156,22 +156,22 @@ central: ("armor.empty"), ) ), - (Troll, Male): ( + (Cavetroll, Male): ( head: ( - offset: (-8.0, -8.5, -9.0), - central: ("npc.troll.male.head"), + offset: (-8.0, -8.0, -8.5), + central: ("npc.troll_cave.male.head"), ), torso_upper: ( - offset: (-8.0, -7.5, -11.0), - central: ("npc.troll.male.torso_upper"), + offset: (-8.0, -9.5, -11.0), + central: ("npc.troll_cave.male.torso_upper"), ), torso_lower: ( - offset: (-6.0, -3.5, -5.0), - central: ("npc.troll.male.torso_lower"), + offset: (-7.0, -5.5, -7.0), + central: ("npc.troll_cave.male.torso_lower"), ), jaw: ( - offset: (-4.0, 0.0, -4.5), - central: ("npc.troll.male.jaw"), + offset: (-5.0, 0.0, -4.5), + central: ("npc.troll_cave.male.jaw"), ), tail: ( offset: (0.0, 0.0, 0.0), @@ -182,22 +182,126 @@ central: ("armor.empty"), ) ), - (Troll, Female): ( + (Cavetroll, Female): ( head: ( - offset: (-8.0, -8.5, -9.0), - central: ("npc.troll.male.head"), + offset: (-8.0, -8.0, -8.5), + central: ("npc.troll_cave.male.head"), ), torso_upper: ( - offset: (-8.0, -7.5, -11.0), - central: ("npc.troll.male.torso_upper"), + offset: (-8.0, -9.5, -11.0), + central: ("npc.troll_cave.male.torso_upper"), ), torso_lower: ( - offset: (-6.0, -3.5, -5.0), - central: ("npc.troll.male.torso_lower"), + offset: (-7.0, -5.5, -7.0), + central: ("npc.troll_cave.male.torso_lower"), + ), + jaw: ( + offset: (-5.0, 0.0, -4.5), + central: ("npc.troll_cave.male.jaw"), + ), + tail: ( + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), + ), + second: ( + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), + ) + ), + (Mountaintroll, Male): ( + head: ( + offset: (-9.0, -8.5, -10.0), + central: ("npc.troll_mountain.male.head"), + ), + torso_upper: ( + offset: (-9.0, -10.0, -14.5), + central: ("npc.troll_mountain.male.torso_upper"), + ), + torso_lower: ( + offset: (-7.0, -5.5, -7.0), + central: ("npc.troll_mountain.male.torso_lower"), ), jaw: ( offset: (-4.0, 0.0, -4.5), - central: ("npc.troll.male.jaw"), + central: ("npc.troll_mountain.male.jaw"), + ), + tail: ( + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), + ), + second: ( + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), + ) + ), + (Mountaintroll, Female): ( + head: ( + offset: (-9.0, -8.5, -10.0), + central: ("npc.troll_mountain.male.head"), + ), + torso_upper: ( + offset: (-9.0, -10.0, -14.5), + central: ("npc.troll_mountain.male.torso_upper"), + ), + torso_lower: ( + offset: (-7.0, -5.5, -7.0), + central: ("npc.troll_mountain.male.torso_lower"), + ), + jaw: ( + offset: (-4.0, 0.0, -4.5), + central: ("npc.troll_mountain.male.jaw"), + ), + tail: ( + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), + ), + second: ( + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), + ) + ), + (Swamptroll, Male): ( + head: ( + offset: (-10.0, -6.5, -6.0), + central: ("npc.troll_swamp.male.head"), + ), + torso_upper: ( + offset: (-9.0, -9.0, -12.5), + central: ("npc.troll_swamp.male.torso_upper"), + ), + torso_lower: ( + offset: (-8.0, -6.5, -10.0), + central: ("npc.troll_swamp.male.torso_lower"), + ), + jaw: ( + offset: (-6.0, 0.0, -4.0), + central: ("npc.troll_swamp.male.jaw"), + ), + tail: ( + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), + ), + second: ( + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), + ) + ), + (Swamptroll, Female): ( + head: ( + offset: (-10.0, -6.5, -6.0), + central: ("npc.troll_swamp.male.head"), + ), + torso_upper: ( + offset: (-9.0, -9.0, -12.5), + central: ("npc.troll_swamp.male.torso_upper"), + ), + torso_lower: ( + offset: (-8.0, -6.5, -10.0), + central: ("npc.troll_swamp.male.torso_lower"), + ), + jaw: ( + offset: (-6.0, 0.0, -4.0), + central: ("npc.troll_swamp.male.jaw"), ), tail: ( offset: (0.0, 0.0, 0.0), diff --git a/assets/voxygen/voxel/biped_large_lateral_manifest.ron b/assets/voxygen/voxel/biped_large_lateral_manifest.ron index 0ba3855037..8c8f0c046b 100644 --- a/assets/voxygen/voxel/biped_large_lateral_manifest.ron +++ b/assets/voxygen/voxel/biped_large_lateral_manifest.ron @@ -203,72 +203,208 @@ lateral: ("npc.wendigo.male.foot_r"), ), ), - (Troll, Male): ( + (Cavetroll, Male): ( shoulder_l: ( - offset: (-5.0, -4.5, -11.0), - lateral: ("npc.troll.male.shoulder_l"), + offset: (-5.5, -4.0, -8.0), + lateral: ("npc.troll_cave.male.shoulder_l"), ), shoulder_r: ( - offset: (-5.0, -4.5, -11.0), - lateral: ("npc.troll.male.shoulder_r"), + offset: (-5.5, -4.0, -8.0), + lateral: ("npc.troll_cave.male.shoulder_r"), ), hand_l: ( - offset: (-3.5, -4.0, -12.0), - lateral: ("npc.troll.male.hand_l"), + offset: (-4.5, -4.0, -14.0), + lateral: ("npc.troll_cave.male.hand_l"), ), hand_r: ( - offset: (-3.5, -4.0, -12.0), - lateral: ("npc.troll.male.hand_r"), + offset: (-4.5, -4.0, -14.0), + lateral: ("npc.troll_cave.male.hand_r"), ), leg_l: ( - offset: (-3.0, -2.5, -4.5), - lateral: ("npc.troll.male.leg_l"), + offset: (-3.0, -3.0, -4.0), + lateral: ("npc.troll_cave.male.leg_l"), ), leg_r: ( - offset: (-3.0, -2.5, -4.5), - lateral: ("npc.troll.male.leg_r"), + offset: (-3.0, -3.0, -4.0), + lateral: ("npc.troll_cave.male.leg_r"), ), foot_l: ( offset: (-3.0, -5.0, -2.5), - lateral: ("npc.troll.male.foot_l"), + lateral: ("npc.troll_cave.male.foot_l"), ), foot_r: ( offset: (-3.0, -5.0, -2.5), - lateral: ("npc.troll.male.foot_r"), + lateral: ("npc.troll_cave.male.foot_r"), ), ), - (Troll, Female): ( + (Cavetroll, Female): ( shoulder_l: ( - offset: (-5.0, -4.5, -11.0), - lateral: ("npc.troll.male.shoulder_l"), + offset: (-5.5, -4.0, -8.0), + lateral: ("npc.troll_cave.male.shoulder_l"), ), shoulder_r: ( - offset: (-5.0, -4.5, -11.0), - lateral: ("npc.troll.male.shoulder_r"), + offset: (-5.5, -4.0, -8.0), + lateral: ("npc.troll_cave.male.shoulder_r"), ), hand_l: ( - offset: (-3.5, -4.0, -12.0), - lateral: ("npc.troll.male.hand_l"), + offset: (-4.5, -4.0, -14.0), + lateral: ("npc.troll_cave.male.hand_l"), ), hand_r: ( - offset: (-3.5, -4.0, -12.0), - lateral: ("npc.troll.male.hand_r"), + offset: (-4.5, -4.0, -14.0), + lateral: ("npc.troll_cave.male.hand_r"), ), leg_l: ( - offset: (-3.0, -2.5, -4.5), - lateral: ("npc.troll.male.leg_l"), + offset: (-3.0, -3.0, -4.0), + lateral: ("npc.troll_cave.male.leg_l"), ), leg_r: ( - offset: (-3.0, -2.5, -4.5), - lateral: ("npc.troll.male.leg_r"), + offset: (-3.0, -3.0, -4.0), + lateral: ("npc.troll_cave.male.leg_r"), ), foot_l: ( offset: (-3.0, -5.0, -2.5), - lateral: ("npc.troll.male.foot_l"), + lateral: ("npc.troll_cave.male.foot_l"), ), foot_r: ( offset: (-3.0, -5.0, -2.5), - lateral: ("npc.troll.male.foot_r"), + lateral: ("npc.troll_cave.male.foot_r"), + ), + ), + (Mountaintroll, Male): ( + shoulder_l: ( + offset: (-6.5, -5.0, -8.5), + lateral: ("npc.troll_mountain.male.shoulder_l"), + ), + shoulder_r: ( + offset: (-6.5, -5.0, -8.5), + lateral: ("npc.troll_mountain.male.shoulder_r"), + ), + hand_l: ( + offset: (-5.0, -4.5, -14.0), + lateral: ("npc.troll_mountain.male.hand_l"), + ), + hand_r: ( + offset: (-5.0, -4.5, -14.0), + lateral: ("npc.troll_mountain.male.hand_r"), + ), + leg_l: ( + offset: (-3.0, -3.0, -4.0), + lateral: ("npc.troll_mountain.male.leg_l"), + ), + leg_r: ( + offset: (-3.0, -3.0, -4.0), + lateral: ("npc.troll_mountain.male.leg_r"), + ), + foot_l: ( + offset: (-3.0, -5.0, -2.5), + lateral: ("npc.troll_mountain.male.foot_l"), + ), + foot_r: ( + offset: (-3.0, -5.0, -2.5), + lateral: ("npc.troll_mountain.male.foot_r"), + ), + ), + (Mountaintroll, Female): ( + shoulder_l: ( + offset: (-6.5, -5.0, -8.5), + lateral: ("npc.troll_mountain.male.shoulder_l"), + ), + shoulder_r: ( + offset: (-6.5, -5.0, -8.5), + lateral: ("npc.troll_mountain.male.shoulder_r"), + ), + hand_l: ( + offset: (-5.0, -4.5, -14.0), + lateral: ("npc.troll_mountain.male.hand_l"), + ), + hand_r: ( + offset: (-5.0, -4.5, -14.0), + lateral: ("npc.troll_mountain.male.hand_r"), + ), + leg_l: ( + offset: (-3.0, -3.0, -4.0), + lateral: ("npc.troll_mountain.male.leg_l"), + ), + leg_r: ( + offset: (-3.0, -3.0, -4.0), + lateral: ("npc.troll_mountain.male.leg_r"), + ), + foot_l: ( + offset: (-3.0, -5.0, -2.5), + lateral: ("npc.troll_mountain.male.foot_l"), + ), + foot_r: ( + offset: (-3.0, -5.0, -2.5), + lateral: ("npc.troll_mountain.male.foot_r"), + ), + ), + (Swamptroll, Male): ( + shoulder_l: ( + offset: (-5.5, -5.0, -8.5), + lateral: ("npc.troll_swamp.male.shoulder_l"), + ), + shoulder_r: ( + offset: (-5.5, -5.0, -8.5), + lateral: ("npc.troll_swamp.male.shoulder_r"), + ), + hand_l: ( + offset: (-5.0, -4.0, -16.0), + lateral: ("npc.troll_swamp.male.hand_l"), + ), + hand_r: ( + offset: (-5.0, -4.0, -16.0), + lateral: ("npc.troll_swamp.male.hand_r"), + ), + leg_l: ( + offset: (-3.0, -3.0, -4.0), + lateral: ("npc.troll_swamp.male.leg_l"), + ), + leg_r: ( + offset: (-3.0, -3.0, -4.0), + lateral: ("npc.troll_swamp.male.leg_r"), + ), + foot_l: ( + offset: (-3.0, -5.0, -2.5), + lateral: ("npc.troll_swamp.male.foot_l"), + ), + foot_r: ( + offset: (-3.0, -5.0, -2.5), + lateral: ("npc.troll_swamp.male.foot_r"), + ), + ), + (Swamptroll, Female): ( + shoulder_l: ( + offset: (-5.5, -5.0, -8.5), + lateral: ("npc.troll_swamp.male.shoulder_l"), + ), + shoulder_r: ( + offset: (-5.5, -5.0, -8.5), + lateral: ("npc.troll_swamp.male.shoulder_r"), + ), + hand_l: ( + offset: (-5.0, -4.0, -16.0), + lateral: ("npc.troll_swamp.male.hand_l"), + ), + hand_r: ( + offset: (-5.0, -4.0, -16.0), + lateral: ("npc.troll_swamp.male.hand_r"), + ), + leg_l: ( + offset: (-3.0, -3.0, -4.0), + lateral: ("npc.troll_swamp.male.leg_l"), + ), + leg_r: ( + offset: (-3.0, -3.0, -4.0), + lateral: ("npc.troll_swamp.male.leg_r"), + ), + foot_l: ( + offset: (-3.0, -5.0, -2.5), + lateral: ("npc.troll_swamp.male.foot_l"), + ), + foot_r: ( + offset: (-3.0, -5.0, -2.5), + lateral: ("npc.troll_swamp.male.foot_r"), ), ), (Dullahan, Male): ( diff --git a/assets/voxygen/voxel/bird_large_central_manifest.ron b/assets/voxygen/voxel/bird_large_central_manifest.ron index f8a0999986..a706aa79cf 100644 --- a/assets/voxygen/voxel/bird_large_central_manifest.ron +++ b/assets/voxygen/voxel/bird_large_central_manifest.ron @@ -103,4 +103,56 @@ central: ("npc.cockatrice.male.tail_rear"), ) ), + (Roc, Male): ( + head: ( + offset: (-4.5, -4.0, -6.0), + central: ("npc.roc.male.head"), + ), + beak: ( + offset: (-3.5, 0.0, -8.0), + central: ("npc.roc.male.beak"), + ), + neck: ( + offset: (-5.5, 0.0, -10.5), + central: ("npc.roc.male.neck"), + ), + chest: ( + offset: (-8.5, -12.5, -13.5), + central: ("npc.roc.male.chest"), + ), + tail_front: ( + offset: (-4.5, -9.0, -8.0), + central: ("npc.roc.male.tail_front"), + ), + tail_rear: ( + offset: (-9.5, -28.0, -6.0), + central: ("npc.roc.male.tail_rear"), + ) + ), + (Roc, Female): ( + head: ( + offset: (-4.5, -4.0, -6.0), + central: ("npc.roc.male.head"), + ), + beak: ( + offset: (-3.5, 0.0, -8.0), + central: ("npc.roc.male.beak"), + ), + neck: ( + offset: (-5.5, 0.0, -10.5), + central: ("npc.roc.male.neck"), + ), + chest: ( + offset: (-8.5, -12.5, -13.5), + central: ("npc.roc.male.chest"), + ), + tail_front: ( + offset: (-4.5, -9.0, -8.0), + central: ("npc.roc.male.tail_front"), + ), + tail_rear: ( + offset: (-9.5, -28.0, -6.0), + central: ("npc.roc.male.tail_rear"), + ) + ), }) diff --git a/assets/voxygen/voxel/bird_large_lateral_manifest.ron b/assets/voxygen/voxel/bird_large_lateral_manifest.ron index 3eca741462..fadf7ddb56 100644 --- a/assets/voxygen/voxel/bird_large_lateral_manifest.ron +++ b/assets/voxygen/voxel/bird_large_lateral_manifest.ron @@ -167,4 +167,88 @@ lateral: ("npc.cockatrice.male.foot_r"), ) ), + (Roc, Male): ( + wing_in_l: ( + offset: (-13.0, -14.0, -2.5), + lateral: ("npc.roc.male.wing_in_r"), + ), + wing_in_r: ( + offset: (0.0, -14.0, -2.5), + lateral: ("npc.roc.male.wing_in_r"), + ), + wing_mid_l: ( + offset: (-11.0, -18.0, -2.0), + lateral: ("npc.roc.male.wing_mid_r"), + ), + wing_mid_r: ( + offset: (0.0, -18.0, -2.0), + lateral: ("npc.roc.male.wing_mid_r"), + ), + wing_out_l: ( + offset: (-20.0, -18.0, -2.0), + lateral: ("npc.roc.male.wing_out_r"), + ), + wing_out_r: ( + offset: (0.0, -18.0, -2.0), + lateral: ("npc.roc.male.wing_out_r"), + ), + leg_l: ( + offset: (-4.0, -5.5, -7.5), + lateral: ("npc.roc.male.leg_r"), + ), + leg_r: ( + offset: (-4.0, -5.5, -7.5), + lateral: ("npc.roc.male.leg_r"), + ), + foot_l: ( + offset: (-5.5, -3.0, -12.0), + lateral: ("npc.roc.male.foot_r"), + ), + foot_r: ( + offset: (-5.5, -3.0, -12.0), + lateral: ("npc.roc.male.foot_r"), + ) + ), + (Roc, Female): ( + wing_in_l: ( + offset: (-13.0, -14.0, -2.5), + lateral: ("npc.roc.male.wing_in_r"), + ), + wing_in_r: ( + offset: (0.0, -14.0, -2.5), + lateral: ("npc.roc.male.wing_in_r"), + ), + wing_mid_l: ( + offset: (-11.0, -18.0, -2.0), + lateral: ("npc.roc.male.wing_mid_r"), + ), + wing_mid_r: ( + offset: (0.0, -18.0, -2.0), + lateral: ("npc.roc.male.wing_mid_r"), + ), + wing_out_l: ( + offset: (-20.0, -18.0, -2.0), + lateral: ("npc.roc.male.wing_out_r"), + ), + wing_out_r: ( + offset: (0.0, -18.0, -2.0), + lateral: ("npc.roc.male.wing_out_r"), + ), + leg_l: ( + offset: (-4.0, -5.5, -7.5), + lateral: ("npc.roc.male.leg_r"), + ), + leg_r: ( + offset: (-4.0, -5.5, -7.5), + lateral: ("npc.roc.male.leg_r"), + ), + foot_l: ( + offset: (-5.5, -3.0, -12.0), + lateral: ("npc.roc.male.foot_r"), + ), + foot_r: ( + offset: (-5.5, -3.0, -12.0), + lateral: ("npc.roc.male.foot_r"), + ) + ), }) \ No newline at end of file diff --git a/assets/voxygen/voxel/npc/roc/male/beak.vox b/assets/voxygen/voxel/npc/roc/male/beak.vox new file mode 100644 index 0000000000..eead2a2c19 --- /dev/null +++ b/assets/voxygen/voxel/npc/roc/male/beak.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:908494c22844e83f749eba053878f7b9a2025dac1ef3645bb5ff7c4c8a319a7a +size 1716 diff --git a/assets/voxygen/voxel/npc/roc/male/chest.vox b/assets/voxygen/voxel/npc/roc/male/chest.vox new file mode 100644 index 0000000000..1f836f255d --- /dev/null +++ b/assets/voxygen/voxel/npc/roc/male/chest.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0fc31c5cc5ad16914dec01999994d4f3c38caf3d5fc2ef38a09d22ba8f07ce45 +size 16556 diff --git a/assets/voxygen/voxel/npc/roc/male/foot_r.vox b/assets/voxygen/voxel/npc/roc/male/foot_r.vox new file mode 100644 index 0000000000..12e6eacd68 --- /dev/null +++ b/assets/voxygen/voxel/npc/roc/male/foot_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:41697e4f9cf309df975058049be4d2b72cbce83e0e48a30fae5245cd368966fc +size 2216 diff --git a/assets/voxygen/voxel/npc/roc/male/head.vox b/assets/voxygen/voxel/npc/roc/male/head.vox new file mode 100644 index 0000000000..b4949cf1fb --- /dev/null +++ b/assets/voxygen/voxel/npc/roc/male/head.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0f5b391704993b817759d13f50f413ca2718c742a542b110fdac48cd27a86d01 +size 3236 diff --git a/assets/voxygen/voxel/npc/roc/male/leg_r.vox b/assets/voxygen/voxel/npc/roc/male/leg_r.vox new file mode 100644 index 0000000000..ec21c11e00 --- /dev/null +++ b/assets/voxygen/voxel/npc/roc/male/leg_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:87045fb82df52741d6b01bdb1712499d58db6ac10a2d1bea5124310219c0e850 +size 3400 diff --git a/assets/voxygen/voxel/npc/roc/male/neck.vox b/assets/voxygen/voxel/npc/roc/male/neck.vox new file mode 100644 index 0000000000..3dce2215a0 --- /dev/null +++ b/assets/voxygen/voxel/npc/roc/male/neck.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d68bc72562b91296c1426ccc4e96df0da1736c257ec5717a1315e9ed3ed9ed38 +size 5768 diff --git a/assets/voxygen/voxel/npc/roc/male/tail_front.vox b/assets/voxygen/voxel/npc/roc/male/tail_front.vox new file mode 100644 index 0000000000..eff23adc77 --- /dev/null +++ b/assets/voxygen/voxel/npc/roc/male/tail_front.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b3ca88120eae851fba31dde22cedce0404d207f539d1d3a1515296bcb1c056e1 +size 2240 diff --git a/assets/voxygen/voxel/npc/roc/male/tail_rear.vox b/assets/voxygen/voxel/npc/roc/male/tail_rear.vox new file mode 100644 index 0000000000..c884b56c4f --- /dev/null +++ b/assets/voxygen/voxel/npc/roc/male/tail_rear.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cc3d03630c67f788a46e463d24cdb8734d67157eca5c06ee3a18fb01ad6b5581 +size 3400 diff --git a/assets/voxygen/voxel/npc/roc/male/wing_in_r.vox b/assets/voxygen/voxel/npc/roc/male/wing_in_r.vox new file mode 100644 index 0000000000..a3a212a3e2 --- /dev/null +++ b/assets/voxygen/voxel/npc/roc/male/wing_in_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ed3f018074a5c18226bcd857ec549bb1558c2c23b558e7a2b3ca89628ad994b8 +size 3112 diff --git a/assets/voxygen/voxel/npc/roc/male/wing_mid_r.vox b/assets/voxygen/voxel/npc/roc/male/wing_mid_r.vox new file mode 100644 index 0000000000..51239e7c94 --- /dev/null +++ b/assets/voxygen/voxel/npc/roc/male/wing_mid_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:afa35e2aaf6c7572db4369aae76892583a0b9d0dac95dc145ec938143261cfba +size 3448 diff --git a/assets/voxygen/voxel/npc/roc/male/wing_out_r.vox b/assets/voxygen/voxel/npc/roc/male/wing_out_r.vox new file mode 100644 index 0000000000..bfd0ff77bb --- /dev/null +++ b/assets/voxygen/voxel/npc/roc/male/wing_out_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0bf07f759bff02d4ce47fff3529fb5abc5806a3fc28763132d266cb17036d5b0 +size 4440 diff --git a/assets/voxygen/voxel/npc/troll/male/foot_l.vox b/assets/voxygen/voxel/npc/troll/male/foot_l.vox deleted file mode 100644 index 4d01fb8f7b..0000000000 --- a/assets/voxygen/voxel/npc/troll/male/foot_l.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:7841f6c64137537d9339ce27f57530714f7da32a05570abc5a53df5755c733bc -size 1772 diff --git a/assets/voxygen/voxel/npc/troll/male/foot_r.vox b/assets/voxygen/voxel/npc/troll/male/foot_r.vox deleted file mode 100644 index 614e74f9e0..0000000000 --- a/assets/voxygen/voxel/npc/troll/male/foot_r.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:dadb50f16c2ecec316b734490125ceec5600dd3814fba5aa7c69b39f3bc6d163 -size 1772 diff --git a/assets/voxygen/voxel/npc/troll/male/hand_l.vox b/assets/voxygen/voxel/npc/troll/male/hand_l.vox deleted file mode 100644 index 0eac100b7e..0000000000 --- a/assets/voxygen/voxel/npc/troll/male/hand_l.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e6499cdfbca1a5fd80a3160709345f486475e531556bbf1967a7597c4adcf493 -size 2912 diff --git a/assets/voxygen/voxel/npc/troll/male/hand_r.vox b/assets/voxygen/voxel/npc/troll/male/hand_r.vox deleted file mode 100644 index 4802cd12a1..0000000000 --- a/assets/voxygen/voxel/npc/troll/male/hand_r.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:65d2871153549e7de7eb336d0d8b2d240c99d97285b44bc80442a37711f85963 -size 2912 diff --git a/assets/voxygen/voxel/npc/troll/male/head.vox b/assets/voxygen/voxel/npc/troll/male/head.vox deleted file mode 100644 index 6d56c9ee94..0000000000 --- a/assets/voxygen/voxel/npc/troll/male/head.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:6090d7c9b1b722fe84eabaaa3fd7b0678dd16b35ac59ffa4f997e8d5fdb52253 -size 4704 diff --git a/assets/voxygen/voxel/npc/troll/male/jaw.vox b/assets/voxygen/voxel/npc/troll/male/jaw.vox deleted file mode 100644 index 23ccf45db1..0000000000 --- a/assets/voxygen/voxel/npc/troll/male/jaw.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:3560d24655bb6dfc1e54e8f526814f99a43d626af7b3fc5a4404acd0093048aa -size 1940 diff --git a/assets/voxygen/voxel/npc/troll/male/leg_l.vox b/assets/voxygen/voxel/npc/troll/male/leg_l.vox deleted file mode 100644 index e80f022e90..0000000000 --- a/assets/voxygen/voxel/npc/troll/male/leg_l.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:dd23c042d142e17a606119472bc52c2e3f773dd83ef8bee9d368baca65320ab6 -size 1664 diff --git a/assets/voxygen/voxel/npc/troll/male/leg_r.vox b/assets/voxygen/voxel/npc/troll/male/leg_r.vox deleted file mode 100644 index 4db2576313..0000000000 --- a/assets/voxygen/voxel/npc/troll/male/leg_r.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:61f27cd9bdf30ac16748abfa090eacc6113097ca73f7e937f9201c40a6bae57a -size 1664 diff --git a/assets/voxygen/voxel/npc/troll/male/shoulder_l.vox b/assets/voxygen/voxel/npc/troll/male/shoulder_l.vox deleted file mode 100644 index f1c7a99037..0000000000 --- a/assets/voxygen/voxel/npc/troll/male/shoulder_l.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:15606bec0680a834eff98efab9a06331c857a2a3dea9f140af3d0dc0ec169af2 -size 2964 diff --git a/assets/voxygen/voxel/npc/troll/male/shoulder_r.vox b/assets/voxygen/voxel/npc/troll/male/shoulder_r.vox deleted file mode 100644 index 535dc664ce..0000000000 --- a/assets/voxygen/voxel/npc/troll/male/shoulder_r.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c111e35534f571b31d72eee59ed8c512c0f9545a55040981f34b473464c51fff -size 2964 diff --git a/assets/voxygen/voxel/npc/troll/male/torso_lower.vox b/assets/voxygen/voxel/npc/troll/male/torso_lower.vox deleted file mode 100644 index e69fe423eb..0000000000 --- a/assets/voxygen/voxel/npc/troll/male/torso_lower.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:04cb99c4a0fe61494d022df4b7a557d00017e3672e3244fe1123a1d6b3b81ac7 -size 2336 diff --git a/assets/voxygen/voxel/npc/troll/male/torso_upper.vox b/assets/voxygen/voxel/npc/troll/male/torso_upper.vox deleted file mode 100644 index 8c900374a4..0000000000 --- a/assets/voxygen/voxel/npc/troll/male/torso_upper.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:4abae28c1df2eaaa2b75fec7b3b754f330f159590a66fd89a69387781de22ab7 -size 10424 diff --git a/assets/voxygen/voxel/npc/troll_cave/male/foot_l.vox b/assets/voxygen/voxel/npc/troll_cave/male/foot_l.vox new file mode 100644 index 0000000000..4c97a42ee0 --- /dev/null +++ b/assets/voxygen/voxel/npc/troll_cave/male/foot_l.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1480dfe9aa192f690217f831b441303546520bf27c9eadc44ef29eb0be3eca60 +size 1792 diff --git a/assets/voxygen/voxel/npc/troll_cave/male/foot_r.vox b/assets/voxygen/voxel/npc/troll_cave/male/foot_r.vox new file mode 100644 index 0000000000..243373daaf --- /dev/null +++ b/assets/voxygen/voxel/npc/troll_cave/male/foot_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4beb7a960e88dce016f74c945918135c983980716d30ee60019d683f0b8c1e48 +size 1792 diff --git a/assets/voxygen/voxel/npc/troll_cave/male/hand_l.vox b/assets/voxygen/voxel/npc/troll_cave/male/hand_l.vox new file mode 100644 index 0000000000..18086a74e3 --- /dev/null +++ b/assets/voxygen/voxel/npc/troll_cave/male/hand_l.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bda1327dced03be263a98b2ddc8d248b6f1df914a3400a48d1b50bb5945557b5 +size 3892 diff --git a/assets/voxygen/voxel/npc/troll_cave/male/hand_r.vox b/assets/voxygen/voxel/npc/troll_cave/male/hand_r.vox new file mode 100644 index 0000000000..770b893669 --- /dev/null +++ b/assets/voxygen/voxel/npc/troll_cave/male/hand_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0f2c60a45ffdf3446e5b84f029050a43405b8daffbba6f4cac14d06e089570bf +size 3892 diff --git a/assets/voxygen/voxel/npc/troll_cave/male/head.vox b/assets/voxygen/voxel/npc/troll_cave/male/head.vox new file mode 100644 index 0000000000..6975647fa5 --- /dev/null +++ b/assets/voxygen/voxel/npc/troll_cave/male/head.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4a7a1c16e75cc3c5422dcbbdabd59516df4a9218559902204226144a38762e2d +size 4860 diff --git a/assets/voxygen/voxel/npc/troll_cave/male/jaw.vox b/assets/voxygen/voxel/npc/troll_cave/male/jaw.vox new file mode 100644 index 0000000000..66b423fb91 --- /dev/null +++ b/assets/voxygen/voxel/npc/troll_cave/male/jaw.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4c365c9c309e55d58cc289da3d5451a24f6b9d312ecb9912e97187f0601d5ca5 +size 2032 diff --git a/assets/voxygen/voxel/npc/troll_cave/male/leg_l.vox b/assets/voxygen/voxel/npc/troll_cave/male/leg_l.vox new file mode 100644 index 0000000000..c5ef8c1c31 --- /dev/null +++ b/assets/voxygen/voxel/npc/troll_cave/male/leg_l.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7c8f500708cdba942b42890741d20b275f7b9f5458ae45fac3813882c19b6fa8 +size 1844 diff --git a/assets/voxygen/voxel/npc/troll_cave/male/leg_r.vox b/assets/voxygen/voxel/npc/troll_cave/male/leg_r.vox new file mode 100644 index 0000000000..7ce31c07a9 --- /dev/null +++ b/assets/voxygen/voxel/npc/troll_cave/male/leg_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:34dfcd5f9ebdfff349942c2533c995e0d07a526374e467acff78dd839a53cf4d +size 1844 diff --git a/assets/voxygen/voxel/npc/troll_cave/male/shoulder_l.vox b/assets/voxygen/voxel/npc/troll_cave/male/shoulder_l.vox new file mode 100644 index 0000000000..46ad49ff2d --- /dev/null +++ b/assets/voxygen/voxel/npc/troll_cave/male/shoulder_l.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2d33ab14221792cbb9867b26d80e78db0ed417d704c2bd95b17d14321cbae7d9 +size 3576 diff --git a/assets/voxygen/voxel/npc/troll_cave/male/shoulder_r.vox b/assets/voxygen/voxel/npc/troll_cave/male/shoulder_r.vox new file mode 100644 index 0000000000..7898013ed7 --- /dev/null +++ b/assets/voxygen/voxel/npc/troll_cave/male/shoulder_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8c98dced3fb3614e412ea30f321936575d9a98bc547e72740766b8e41d0c4e76 +size 3576 diff --git a/assets/voxygen/voxel/npc/troll_cave/male/torso_lower.vox b/assets/voxygen/voxel/npc/troll_cave/male/torso_lower.vox new file mode 100644 index 0000000000..3b2cc83635 --- /dev/null +++ b/assets/voxygen/voxel/npc/troll_cave/male/torso_lower.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b2177e310320e46de10ba867446175bc9d8adc34f4516550b644fdb6c78f66ed +size 3016 diff --git a/assets/voxygen/voxel/npc/troll_cave/male/torso_upper.vox b/assets/voxygen/voxel/npc/troll_cave/male/torso_upper.vox new file mode 100644 index 0000000000..2252446a88 --- /dev/null +++ b/assets/voxygen/voxel/npc/troll_cave/male/torso_upper.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:787fa629bcd7cdec77b7e4fc4bdcfa0830b9cdf5644eb2e06d565ff4a9ea3beb +size 12836 diff --git a/assets/voxygen/voxel/npc/troll_mountain/male/foot_l.vox b/assets/voxygen/voxel/npc/troll_mountain/male/foot_l.vox new file mode 100644 index 0000000000..3a8d7dbdce --- /dev/null +++ b/assets/voxygen/voxel/npc/troll_mountain/male/foot_l.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:10449f2e7f7a32bd1829c32d2efc600b1fd1a5450aefa70be70818c84eba5522 +size 1792 diff --git a/assets/voxygen/voxel/npc/troll_mountain/male/foot_r.vox b/assets/voxygen/voxel/npc/troll_mountain/male/foot_r.vox new file mode 100644 index 0000000000..fb5a17f957 --- /dev/null +++ b/assets/voxygen/voxel/npc/troll_mountain/male/foot_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:78d433a27a4a292dd9b67d301e6ce6ea4feb0a41ac4a5f4fdc6c425b4a7543e7 +size 1792 diff --git a/assets/voxygen/voxel/npc/troll_mountain/male/hand_l.vox b/assets/voxygen/voxel/npc/troll_mountain/male/hand_l.vox new file mode 100644 index 0000000000..c000331be5 --- /dev/null +++ b/assets/voxygen/voxel/npc/troll_mountain/male/hand_l.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2a8fbcde634a5d5c876f649353e456035522144e9fd713dea169d8d20d3b0a9d +size 4380 diff --git a/assets/voxygen/voxel/npc/troll_mountain/male/hand_r.vox b/assets/voxygen/voxel/npc/troll_mountain/male/hand_r.vox new file mode 100644 index 0000000000..563acd4fc5 --- /dev/null +++ b/assets/voxygen/voxel/npc/troll_mountain/male/hand_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:59e83cf8d8cb6241a65ecdc14c84057030f44589ca7557f9a28fff8c17531c87 +size 4380 diff --git a/assets/voxygen/voxel/npc/troll_mountain/male/head.vox b/assets/voxygen/voxel/npc/troll_mountain/male/head.vox new file mode 100644 index 0000000000..53ee848827 --- /dev/null +++ b/assets/voxygen/voxel/npc/troll_mountain/male/head.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f0ee0b6c88e917361d7f035895c85ad2193c3e7596251adb98dc69962dacc4c4 +size 5032 diff --git a/assets/voxygen/voxel/npc/troll_mountain/male/jaw.vox b/assets/voxygen/voxel/npc/troll_mountain/male/jaw.vox new file mode 100644 index 0000000000..6b43d3a792 --- /dev/null +++ b/assets/voxygen/voxel/npc/troll_mountain/male/jaw.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b39d0ae768f6213c4c0446274f7085f484b66e9dbb87bd527147448abcc6df35 +size 1716 diff --git a/assets/voxygen/voxel/npc/troll_mountain/male/leg_l.vox b/assets/voxygen/voxel/npc/troll_mountain/male/leg_l.vox new file mode 100644 index 0000000000..5b69dd1ea5 --- /dev/null +++ b/assets/voxygen/voxel/npc/troll_mountain/male/leg_l.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8d6dd45bed68be177695948a44fb88f8c87112d1757d10d4cd3b823ba4c2cd2b +size 1844 diff --git a/assets/voxygen/voxel/npc/troll_mountain/male/leg_r.vox b/assets/voxygen/voxel/npc/troll_mountain/male/leg_r.vox new file mode 100644 index 0000000000..fff2e85edd --- /dev/null +++ b/assets/voxygen/voxel/npc/troll_mountain/male/leg_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3462c6eeb62e0166543725bc65a0745314042c62470fe5774f1b38de5b6166a0 +size 1844 diff --git a/assets/voxygen/voxel/npc/troll_mountain/male/shoulder_l.vox b/assets/voxygen/voxel/npc/troll_mountain/male/shoulder_l.vox new file mode 100644 index 0000000000..306a820bd7 --- /dev/null +++ b/assets/voxygen/voxel/npc/troll_mountain/male/shoulder_l.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4cbe941566ac9ca3959466198f481a1a4073a36b8329bc4eed5c47eac8213b72 +size 4280 diff --git a/assets/voxygen/voxel/npc/troll_mountain/male/shoulder_r.vox b/assets/voxygen/voxel/npc/troll_mountain/male/shoulder_r.vox new file mode 100644 index 0000000000..10ab7e8e53 --- /dev/null +++ b/assets/voxygen/voxel/npc/troll_mountain/male/shoulder_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fd60e29f9c631a0beeb69950f705df6a110935c413ae3d6aa5d1a94a6a8b97fb +size 4280 diff --git a/assets/voxygen/voxel/npc/troll_mountain/male/torso_lower.vox b/assets/voxygen/voxel/npc/troll_mountain/male/torso_lower.vox new file mode 100644 index 0000000000..f5cdbce07c --- /dev/null +++ b/assets/voxygen/voxel/npc/troll_mountain/male/torso_lower.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0658b7b334a1b1a358dbdfdb717c821fbd6e8e860951d4f80a7a964992db4144 +size 3352 diff --git a/assets/voxygen/voxel/npc/troll_mountain/male/torso_upper.vox b/assets/voxygen/voxel/npc/troll_mountain/male/torso_upper.vox new file mode 100644 index 0000000000..dfd42a133a --- /dev/null +++ b/assets/voxygen/voxel/npc/troll_mountain/male/torso_upper.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:22e91d9fc7ec260437e2b93758c85cce0c8c4964c6dc449b41dc708b8fac5134 +size 17700 diff --git a/assets/voxygen/voxel/npc/troll_swamp/male/foot_l.vox b/assets/voxygen/voxel/npc/troll_swamp/male/foot_l.vox new file mode 100644 index 0000000000..e653439955 --- /dev/null +++ b/assets/voxygen/voxel/npc/troll_swamp/male/foot_l.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7642ee74ae6e7ce95953e5a2d3a8bb943bc5b55f3c0930c995ad2a2655ef5ce9 +size 1792 diff --git a/assets/voxygen/voxel/npc/troll_swamp/male/foot_r.vox b/assets/voxygen/voxel/npc/troll_swamp/male/foot_r.vox new file mode 100644 index 0000000000..71fbf5c5be --- /dev/null +++ b/assets/voxygen/voxel/npc/troll_swamp/male/foot_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:324949b49db1d316abe1dbe73ac4b6df9e6ab1010e59ed516716638dfb4b5ae2 +size 1792 diff --git a/assets/voxygen/voxel/npc/troll_swamp/male/hand_l.vox b/assets/voxygen/voxel/npc/troll_swamp/male/hand_l.vox new file mode 100644 index 0000000000..86817a9b1d --- /dev/null +++ b/assets/voxygen/voxel/npc/troll_swamp/male/hand_l.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6c27c05d8c56968cc23a2bdfb107f7f7860d64d15a5df7ab1d9c40b5abf562b0 +size 3864 diff --git a/assets/voxygen/voxel/npc/troll_swamp/male/hand_r.vox b/assets/voxygen/voxel/npc/troll_swamp/male/hand_r.vox new file mode 100644 index 0000000000..89f24c221d --- /dev/null +++ b/assets/voxygen/voxel/npc/troll_swamp/male/hand_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:257249a24fc89f1005fdaf6c80d9360405178dfff9d3b6c24a597b48d0c14da2 +size 3864 diff --git a/assets/voxygen/voxel/npc/troll_swamp/male/head.vox b/assets/voxygen/voxel/npc/troll_swamp/male/head.vox new file mode 100644 index 0000000000..7aa317ed56 --- /dev/null +++ b/assets/voxygen/voxel/npc/troll_swamp/male/head.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:652e49b00fab3d180ef9c1afb60f55fd11e139df4be2a498ff59261ae3a571de +size 5000 diff --git a/assets/voxygen/voxel/npc/troll_swamp/male/jaw.vox b/assets/voxygen/voxel/npc/troll_swamp/male/jaw.vox new file mode 100644 index 0000000000..817683d5f5 --- /dev/null +++ b/assets/voxygen/voxel/npc/troll_swamp/male/jaw.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d7cc30f4d2a4a394ed269c27824f7ffea58479bc68ecac24571108324569b088 +size 3240 diff --git a/assets/voxygen/voxel/npc/troll_swamp/male/leg_l.vox b/assets/voxygen/voxel/npc/troll_swamp/male/leg_l.vox new file mode 100644 index 0000000000..b20571cd2d --- /dev/null +++ b/assets/voxygen/voxel/npc/troll_swamp/male/leg_l.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:75810c18ae8e9edc2f453cd06e7c53946f70f0f3196f312a29f269d1f7c36653 +size 1844 diff --git a/assets/voxygen/voxel/npc/troll_swamp/male/leg_r.vox b/assets/voxygen/voxel/npc/troll_swamp/male/leg_r.vox new file mode 100644 index 0000000000..06a40b57a4 --- /dev/null +++ b/assets/voxygen/voxel/npc/troll_swamp/male/leg_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:76a925036b31a3ca58a74ab2340c896c12c36c0e2104ae97df94b99f7bfc6225 +size 1844 diff --git a/assets/voxygen/voxel/npc/troll_swamp/male/shoulder_l.vox b/assets/voxygen/voxel/npc/troll_swamp/male/shoulder_l.vox new file mode 100644 index 0000000000..c18e498017 --- /dev/null +++ b/assets/voxygen/voxel/npc/troll_swamp/male/shoulder_l.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9880df256c9aef3efbdfc8398338d342b37a8872414f1d2a440aeed54cce0348 +size 4216 diff --git a/assets/voxygen/voxel/npc/troll_swamp/male/shoulder_r.vox b/assets/voxygen/voxel/npc/troll_swamp/male/shoulder_r.vox new file mode 100644 index 0000000000..51431710c4 --- /dev/null +++ b/assets/voxygen/voxel/npc/troll_swamp/male/shoulder_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d6dd821308ff92b0cdb902d3df6d00570bc97164959babf8dfe177e9c75a751b +size 4208 diff --git a/assets/voxygen/voxel/npc/troll_swamp/male/torso_lower.vox b/assets/voxygen/voxel/npc/troll_swamp/male/torso_lower.vox new file mode 100644 index 0000000000..33ef62a61a --- /dev/null +++ b/assets/voxygen/voxel/npc/troll_swamp/male/torso_lower.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b28a8af5f99d52a8676be3810ba27c485c26cc4efefafeb80087ff5d168fffb9 +size 4256 diff --git a/assets/voxygen/voxel/npc/troll_swamp/male/torso_upper.vox b/assets/voxygen/voxel/npc/troll_swamp/male/torso_upper.vox new file mode 100644 index 0000000000..9d36e25b7e --- /dev/null +++ b/assets/voxygen/voxel/npc/troll_swamp/male/torso_upper.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7a6a36f03d750445c13299892ca9156f2b6da1e582cbb42f0d18bd64b45d49be +size 16488 diff --git a/assets/voxygen/voxel/object_manifest.ron b/assets/voxygen/voxel/object_manifest.ron index 54f85607bb..8f7cfaace4 100644 --- a/assets/voxygen/voxel/object_manifest.ron +++ b/assets/voxygen/voxel/object_manifest.ron @@ -759,4 +759,14 @@ central: ("armor.empty"), ) ), + Tornado: ( + bone0: ( + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), + ), + bone1: ( + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), + ) + ), }) diff --git a/common/src/comp/body.rs b/common/src/comp/body.rs index 2cc9582c5a..10854409bb 100644 --- a/common/src/comp/body.rs +++ b/common/src/comp/body.rs @@ -412,6 +412,7 @@ impl Body { Body::BirdLarge(body) => match body.species { bird_large::Species::Cockatrice => 4000, bird_large::Species::Phoenix => 6000, + bird_large::Species::Roc => 5000, }, Body::Humanoid(_) => 750, _ => 1000, @@ -477,7 +478,9 @@ impl Body { biped_large::Species::Ogre => 3200, biped_large::Species::Cyclops => 3200, biped_large::Species::Wendigo => 2800, - biped_large::Species::Troll => 2400, + biped_large::Species::Cavetroll => 2400, + biped_large::Species::Mountaintroll => 2400, + biped_large::Species::Swamptroll => 2400, biped_large::Species::Dullahan => 3000, biped_large::Species::Mindflayer => 12500, biped_large::Species::Tidalwarrior => 16000, @@ -594,7 +597,9 @@ impl Body { biped_large::Species::Ogre => 70, biped_large::Species::Cyclops => 80, biped_large::Species::Wendigo => 80, - biped_large::Species::Troll => 60, + biped_large::Species::Cavetroll => 60, + biped_large::Species::Mountaintroll => 60, + biped_large::Species::Swamptroll => 60, biped_large::Species::Dullahan => 120, biped_large::Species::Yeti => 0, biped_large::Species::Harvester => 80, diff --git a/common/src/comp/body/biped_large.rs b/common/src/comp/body/biped_large.rs index 3891c0a4f8..d152693658 100644 --- a/common/src/comp/body/biped_large.rs +++ b/common/src/comp/body/biped_large.rs @@ -37,19 +37,21 @@ make_case_elim!( Ogre = 0, Cyclops = 1, Wendigo = 2, - Troll = 3, - Dullahan = 4, - Werewolf = 5, - Occultsaurok = 6, - Mightysaurok = 7, - Slysaurok = 8, - Mindflayer = 9, - Minotaur = 10, - Tidalwarrior = 11, - Yeti = 12, - Harvester = 13, - Blueoni = 14, - Redoni = 15, + Cavetroll = 3, + Mountaintroll = 4, + Swamptroll = 5, + Dullahan = 6, + Werewolf = 7, + Occultsaurok = 8, + Mightysaurok = 9, + Slysaurok = 10, + Mindflayer = 11, + Minotaur = 12, + Tidalwarrior = 13, + Yeti = 14, + Harvester = 15, + Blueoni = 16, + Redoni = 17, } ); @@ -61,7 +63,9 @@ pub struct AllSpecies { pub ogre: SpeciesMeta, pub cyclops: SpeciesMeta, pub wendigo: SpeciesMeta, - pub troll: SpeciesMeta, + pub troll_cave: SpeciesMeta, + pub troll_mountain: SpeciesMeta, + pub troll_swamp: SpeciesMeta, pub dullahan: SpeciesMeta, pub werewolf: SpeciesMeta, pub saurok_occult: SpeciesMeta, @@ -85,7 +89,9 @@ impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies Species::Ogre => &self.ogre, Species::Cyclops => &self.cyclops, Species::Wendigo => &self.wendigo, - Species::Troll => &self.troll, + Species::Cavetroll => &self.troll_cave, + Species::Mountaintroll => &self.troll_mountain, + Species::Swamptroll => &self.troll_swamp, Species::Dullahan => &self.dullahan, Species::Werewolf => &self.werewolf, Species::Occultsaurok => &self.saurok_occult, @@ -102,11 +108,13 @@ impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies } } -pub const ALL_SPECIES: [Species; 16] = [ +pub const ALL_SPECIES: [Species; 18] = [ Species::Ogre, Species::Cyclops, Species::Wendigo, - Species::Troll, + Species::Cavetroll, + Species::Mountaintroll, + Species::Swamptroll, Species::Dullahan, Species::Werewolf, Species::Occultsaurok, diff --git a/common/src/comp/body/bird_large.rs b/common/src/comp/body/bird_large.rs index 629317082a..8d282c0480 100644 --- a/common/src/comp/body/bird_large.rs +++ b/common/src/comp/body/bird_large.rs @@ -36,6 +36,7 @@ make_case_elim!( pub enum Species { Phoenix = 0, Cockatrice = 1, + Roc = 2, } ); @@ -46,6 +47,7 @@ make_case_elim!( pub struct AllSpecies { pub phoenix: SpeciesMeta, pub cockatrice: SpeciesMeta, + pub roc: 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::Phoenix => &self.phoenix, Species::Cockatrice => &self.cockatrice, + Species::Roc => &self.roc, } } } -pub const ALL_SPECIES: [Species; 2] = [Species::Phoenix, Species::Cockatrice]; +pub const ALL_SPECIES: [Species; 3] = [Species::Phoenix, Species::Cockatrice, Species::Roc]; impl<'a, SpeciesMeta: 'a> IntoIterator for &'a AllSpecies { type IntoIter = std::iter::Copied>; diff --git a/common/src/comp/body/object.rs b/common/src/comp/body/object.rs index 95d8978b9d..2cdb72aaac 100644 --- a/common/src/comp/body/object.rs +++ b/common/src/comp/body/object.rs @@ -88,6 +88,7 @@ make_case_elim!( BirdMeat = 73, FishMeat = 74, SmallMeat = 75, + Tornado = 76, } ); @@ -98,7 +99,7 @@ impl Body { } } -pub const ALL_OBJECTS: [Body; 76] = [ +pub const ALL_OBJECTS: [Body; 77] = [ Body::Arrow, Body::Bomb, Body::Scarecrow, @@ -175,6 +176,7 @@ pub const ALL_OBJECTS: [Body; 76] = [ Body::BirdMeat, Body::FishMeat, Body::SmallMeat, + Body::Tornado, ]; impl From for super::Body { @@ -260,6 +262,7 @@ impl Body { Body::BirdMeat => "bird_meat", Body::FishMeat => "fish_meat", Body::SmallMeat => "small_meat", + Body::Tornado => "tornado", } } @@ -357,6 +360,7 @@ impl Body { Body::FishMeat => 10.0, Body::BirdMeat => 10.0, Body::SmallMeat => 10.0, + Body::Tornado => 50.0, }; Mass(m) diff --git a/common/src/comp/inventory/loadout_builder.rs b/common/src/comp/inventory/loadout_builder.rs index eb8fc67148..6f316f1e62 100644 --- a/common/src/comp/inventory/loadout_builder.rs +++ b/common/src/comp/inventory/loadout_builder.rs @@ -253,7 +253,13 @@ fn default_main_tool(body: &Body) -> Item { (biped_large::Species::Ogre, biped_large::BodyType::Female) => Some( Item::new_from_asset_expect("common.items.npc_weapons.staff.ogre_staff"), ), - (biped_large::Species::Troll, _) => Some(Item::new_from_asset_expect( + (biped_large::Species::Cavetroll, _) => Some(Item::new_from_asset_expect( + "common.items.npc_weapons.hammer.troll_hammer", + )), + (biped_large::Species::Mountaintroll, _) => Some(Item::new_from_asset_expect( + "common.items.npc_weapons.hammer.troll_hammer", + )), + (biped_large::Species::Swamptroll, _) => Some(Item::new_from_asset_expect( "common.items.npc_weapons.hammer.troll_hammer", )), (biped_large::Species::Wendigo, _) => Some(Item::new_from_asset_expect( @@ -320,6 +326,9 @@ fn default_main_tool(body: &Body) -> Item { (bird_large::Species::Phoenix, _) => Some(Item::new_from_asset_expect( "common.items.npc_weapons.unique.birdlargefire", )), + (bird_large::Species::Roc, _) => Some(Item::new_from_asset_expect( + "common.items.npc_weapons.unique.birdlargebasic", + )), }, _ => None, }; diff --git a/server/src/events/entity_manipulation.rs b/server/src/events/entity_manipulation.rs index 15dd48bae3..3ce4a8178f 100644 --- a/server/src/events/entity_manipulation.rs +++ b/server/src/events/entity_manipulation.rs @@ -431,7 +431,11 @@ pub fn handle_destroy(server: &mut Server, entity: EcsEntity, cause: HealthSourc biped_large::Species::Wendigo => { "common.loot_tables.creature.biped_large.wendigo" }, - biped_large::Species::Troll => "common.loot_tables.creature.biped_large.troll", + biped_large::Species::Cavetroll + | biped_large::Species::Mountaintroll + | biped_large::Species::Swamptroll => { + "common.loot_tables.creature.biped_large.troll" + }, biped_large::Species::Occultsaurok | biped_large::Species::Mightysaurok | biped_large::Species::Slysaurok => { diff --git a/server/src/sys/agent.rs b/server/src/sys/agent.rs index 152e49030b..d22a68604d 100644 --- a/server/src/sys/agent.rs +++ b/server/src/sys/agent.rs @@ -116,10 +116,12 @@ pub enum Tactic { Mindflayer, BirdLargeBreathe, BirdLargeFire, + BirdLargeBasic, Minotaur, ClayGolem, TidalWarrior, Yeti, + Tornado, } #[derive(SystemData)] @@ -1605,6 +1607,7 @@ impl<'a> AgentData<'a> { "Haniwa Sentry" => Tactic::RotatingTurret, "Bird Large Breathe" => Tactic::BirdLargeBreathe, "Bird Large Fire" => Tactic::BirdLargeFire, + "Bird Large Basic" => Tactic::BirdLargeBasic, "Mindflayer" => Tactic::Mindflayer, "Minotaur" => Tactic::Minotaur, "Clay Golem" => Tactic::ClayGolem, @@ -1833,6 +1836,7 @@ impl<'a> AgentData<'a> { &tgt_data, &read_data, ), + Tactic::Tornado => self.handle_tornado_attack(controller), Tactic::Mindflayer => self.handle_mindflayer_attack( agent, controller, @@ -1855,6 +1859,13 @@ impl<'a> AgentData<'a> { &tgt_data, &read_data, ), + Tactic::BirdLargeBasic => self.handle_birdlarge_basic_attack( + agent, + controller, + &attack_data, + &tgt_data, + &read_data, + ), Tactic::Minotaur => { self.handle_minotaur_attack(agent, controller, &attack_data, &tgt_data, &read_data) }, @@ -2906,6 +2917,12 @@ impl<'a> AgentData<'a> { } } + fn handle_tornado_attack(&self, controller: &mut Controller) { + controller + .actions + .push(ControlAction::basic_input(InputKind::Primary)); + } + fn handle_mindflayer_attack( &self, agent: &mut Agent, @@ -3261,6 +3278,29 @@ impl<'a> AgentData<'a> { } } + fn handle_birdlarge_basic_attack( + &self, + agent: &mut Agent, + controller: &mut Controller, + attack_data: &AttackData, + tgt_data: &TargetData, + read_data: &ReadData, + ) { + if can_see_tgt( + &*read_data.terrain, + self.pos, + tgt_data.pos, + attack_data.dist_sqrd, + ) && attack_data.angle < 15.0 + { + controller + .actions + .push(ControlAction::basic_input(InputKind::Primary)); + } else { + agent.target = None; + } + } + fn handle_minotaur_attack( &self, agent: &mut Agent, diff --git a/voxygen/anim/src/biped_large/mod.rs b/voxygen/anim/src/biped_large/mod.rs index 0db26fca2b..b16f0cb019 100644 --- a/voxygen/anim/src/biped_large/mod.rs +++ b/voxygen/anim/src/biped_large/mod.rs @@ -210,7 +210,9 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Ogre, Female) => (1.0, 7.5), (Cyclops, _) => (9.5, 7.5), (Wendigo, _) => (3.0, 7.5), - (Troll, _) => (6.0, 10.0), + (Cavetroll, _) => (9.0, 7.0), + (Mountaintroll, _) => (13.0, 2.0), + (Swamptroll, _) => (11.0, 2.0), (Dullahan, _) => (3.0, 6.0), (Werewolf, _) => (11.5, 1.0), (Occultsaurok, _) => (6.0, 3.5), @@ -228,7 +230,9 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Ogre, _) => (0.0, 0.0), (Cyclops, _) => (-4.5, -6.0), (Wendigo, _) => (0.0, 0.0), - (Troll, _) => (2.0, -4.0), + (Cavetroll, _) => (0.0, -4.0), + (Mountaintroll, _) => (-1.0, -8.0), + (Swamptroll, _) => (-4.0, -4.5), (Dullahan, _) => (0.0, 0.0), (Werewolf, _) => (5.0, -4.5), (Occultsaurok, _) => (1.0, -2.5), @@ -247,7 +251,9 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Ogre, Female) => (0.0, 28.0), (Cyclops, _) => (-2.0, 31.0), (Wendigo, _) => (-1.0, 29.0), - (Troll, _) => (-1.0, 26.5), + (Cavetroll, _) => (-1.0, 26.5), + (Mountaintroll, _) => (-1.0, 30.5), + (Swamptroll, _) => (-1.0, 28.5), (Dullahan, _) => (0.0, 29.0), (Werewolf, _) => (3.0, 26.0), (Occultsaurok, _) => (3.0, 24.0), @@ -266,7 +272,9 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Ogre, Female) => (0.0, -6.0), (Cyclops, _) => (1.0, -8.5), (Wendigo, _) => (-1.5, -6.0), - (Troll, _) => (1.0, -10.5), + (Cavetroll, _) => (1.0, -9.5), + (Mountaintroll, _) => (1.0, -13.5), + (Swamptroll, _) => (1.5, -11.5), (Dullahan, _) => (0.0, -6.5), (Werewolf, _) => (1.0, -10.0), (Occultsaurok, _) => (0.0, -5.0), @@ -293,7 +301,9 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Ogre, Female) => (8.0, 0.5, 2.0), (Cyclops, _) => (15.0, 3.5, 1.5), (Wendigo, _) => (9.0, 0.5, 2.5), - (Troll, _) => (11.0, 0.5, 4.5), + (Cavetroll, _) => (13.0, 0.0, 0.5), + (Mountaintroll, _) => (14.0, -0.5, -2.0), + (Swamptroll, _) => (14.0, 0.0, 0.0), (Dullahan, _) => (14.0, 0.5, 3.5), (Werewolf, _) => (9.0, 4.0, -3.0), (Occultsaurok, _) => (7.5, 1.0, 1.5), @@ -312,7 +322,9 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Ogre, Female) => (9.0, 0.5, -4.5), (Cyclops, _) => (14.0, 2.0, -5.5), (Wendigo, _) => (12.0, 0.0, -3.5), - (Troll, _) => (11.5, 0.0, -5.5), + (Cavetroll, _) => (13.5, 1.0, -6.0), + (Mountaintroll, _) => (13.5, 0.0, -10.0), + (Swamptroll, _) => (17.0, 1.0, -8.0), (Dullahan, _) => (14.5, 0.0, -2.5), (Werewolf, _) => (10.0, 2.5, -11.0), (Occultsaurok, _) => (8.0, 1.5, -5.5), @@ -331,7 +343,9 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Ogre, Female) => (0.0, 0.0, -2.0), (Cyclops, _) => (4.5, 1.0, -8.5), (Wendigo, _) => (2.0, 2.0, -2.5), - (Troll, _) => (5.0, 0.0, -6.0), + (Cavetroll, _) => (4.5, -1.0, -7.5), + (Mountaintroll, _) => (3.5, 0.0, -7.5), + (Swamptroll, _) => (4.5, -0.5, -7.5), (Dullahan, _) => (0.0, 0.0, -5.0), (Werewolf, _) => (4.5, 1.0, -5.0), (Occultsaurok, _) => (3.0, 0.5, -4.0), @@ -350,7 +364,9 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Ogre, Female) => (4.0, 0.5, -13.5), (Cyclops, _) => (6.0, 3.5, -15.5), (Wendigo, _) => (5.0, 2.5, -17.0), - (Troll, _) => (6.0, 1.5, -13.0), + (Cavetroll, _) => (5.5, 0.0, -14.0), + (Mountaintroll, _) => (4.5, 1.0, -14.0), + (Swamptroll, _) => (5.5, 0.0, -14.0), (Dullahan, _) => (4.0, 2.5, -14.0), (Werewolf, _) => (5.5, 3.0, -6.5), (Occultsaurok, _) => (3.5, 3.5, -10.0), @@ -369,7 +385,9 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Ogre, Female) => 1.12, (Cyclops, _) => 1.28, (Wendigo, _) => 1.1, - (Troll, _) => 1.1, + (Cavetroll, _) => 1.1, + (Mountaintroll, _) => 1.1, + (Swamptroll, _) => 1.1, (Dullahan, _) => 1.12, (Werewolf, _) => 1.0, (Occultsaurok, _) => 1.0, @@ -387,7 +405,9 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Ogre, Male) => 0.9, (Ogre, Female) => 0.9, (Cyclops, _) => 0.8, - (Troll, _) => 0.9, + (Cavetroll, _) => 0.9, + (Mountaintroll, _) => 0.9, + (Swamptroll, _) => 0.9, (Dullahan, _) => 0.8, (Minotaur, _) => 0.8, _ => 1.0, @@ -397,7 +417,9 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Ogre, Female) => (8.0, 0.0), (Cyclops, _) => (12.0, 0.0), (Wendigo, _) => (15.0, 0.0), - (Troll, _) => (12.0, 0.0), + (Cavetroll, _) => (13.0, 1.5), + (Mountaintroll, _) => (13.0, 1.5), + (Swamptroll, _) => (13.0, 1.5), (Dullahan, _) => (15.0, 0.0), (Werewolf, _) => (13.0, 0.0), (Occultsaurok, _) => (10.0, 0.0), @@ -428,29 +450,14 @@ impl<'a> From<&'a Body> for SkeletonAttr { }, 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), - (Yeti, _) => (-6.0, -10.0, 17.0, 1.57, -0.57, 0.0), - (Blueoni, _) => (-6.0, -10.0, 17.0, 1.57, -0.57, 0.0), - (Redoni, _) => (-6.0, -10.0, 17.0, 1.57, -0.57, 0.0), _ => (-6.0, -10.0, 17.0, 1.57, -0.57, 0.0), }, hhr: match (body.species, body.body_type) { (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), - (Yeti, _) => (-6.0, -10.0, 0.0, 1.57, -0.57, 0.0), - (Blueoni, _) => (-6.0, -10.0, 0.0, 1.57, -0.57, 0.0), - (Redoni, _) => (-6.0, -10.0, 0.0, 1.57, -0.57, 0.0), _ => (-6.0, -10.0, 0.0, 1.57, -0.57, 0.0), }, hc: match (body.species, body.body_type) { (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), - (Yeti, _) => (8.5, 6.0, -12.0, -0.57, -1.57, 1.0), - (Blueoni, _) => (8.5, 6.0, -12.0, -0.57, -1.57, 1.0), - (Redoni, _) => (8.5, 6.0, -12.0, -0.57, -1.57, 1.0), _ => (8.5, 6.0, -12.0, -0.57, -1.57, 1.0), }, sthl: match (body.species, body.body_type) { diff --git a/voxygen/anim/src/bird_large/mod.rs b/voxygen/anim/src/bird_large/mod.rs index 55ac715d38..1c4c83663e 100644 --- a/voxygen/anim/src/bird_large/mod.rs +++ b/voxygen/anim/src/bird_large/mod.rs @@ -149,54 +149,67 @@ impl<'a> From<&'a Body> for SkeletonAttr { chest: match (body.species, body.body_type) { (Phoenix, _) => (2.5, 16.0), (Cockatrice, _) => (2.5, 16.0), + (Roc, _) => (2.5, 27.5), }, neck: match (body.species, body.body_type) { (Phoenix, _) => (2.5, -5.5), (Cockatrice, _) => (5.0, -1.5), + (Roc, _) => (9.5, -1.5), }, head: match (body.species, body.body_type) { (Phoenix, _) => (6.0, 12.0), (Cockatrice, _) => (8.0, 4.5), + (Roc, _) => (17.0, -3.5), }, beak: match (body.species, body.body_type) { (Phoenix, _) => (5.0, 3.0), (Cockatrice, _) => (2.0, -3.0), + (Roc, _) => (0.0, -3.0), }, tail_front: match (body.species, body.body_type) { (Phoenix, _) => (-9.5, -1.0), (Cockatrice, _) => (-5.0, -2.5), + (Roc, _) => (-7.5, -3.5), }, tail_rear: match (body.species, body.body_type) { (Phoenix, _) => (-11.0, 0.0), (Cockatrice, _) => (-8.0, -3.0), + (Roc, _) => (-8.0, -3.0), }, wing_in: match (body.species, body.body_type) { (Phoenix, _) => (3.0, 2.5, 2.0), (Cockatrice, _) => (3.5, 7.0, 3.5), + (Roc, _) => (5.5, 7.5, -1.0), }, wing_mid: match (body.species, body.body_type) { (Phoenix, _) => (10.0, 1.0, 0.0), (Cockatrice, _) => (6.0, 0.0, 0.0), + (Roc, _) => (12.0, 1.0, -0.5), }, wing_out: match (body.species, body.body_type) { (Phoenix, _) => (7.0, 2.0, 1.5), (Cockatrice, _) => (4.0, -1.0, 1.0), + (Roc, _) => (10.0, -2.0, 0.0), }, leg: match (body.species, body.body_type) { (Phoenix, _) => (4.0, 1.5, 12.0), (Cockatrice, _) => (3.5, 2.5, 13.0), + (Roc, _) => (5.5, -1.5, 17.5), }, foot: match (body.species, body.body_type) { (Phoenix, _) => (0.5, -0.5, -2.5), (Cockatrice, _) => (0.5, -3.0, -3.0), + (Roc, _) => (2.5, -2.5, -5.5), }, scaler: match (body.species, body.body_type) { (Phoenix, _) => (1.0), (Cockatrice, _) => (1.0), + (Roc, _) => (1.0), }, feed: match (body.species, body.body_type) { (Phoenix, _) => (-0.65), (Cockatrice, _) => (-0.5), + (Roc, _) => (-0.65), }, } } diff --git a/voxygen/src/render/pipelines/particle.rs b/voxygen/src/render/pipelines/particle.rs index 947c861695..381ff30cd2 100644 --- a/voxygen/src/render/pipelines/particle.rs +++ b/voxygen/src/render/pipelines/particle.rs @@ -83,6 +83,7 @@ pub enum ParticleMode { Water = 30, IceSpikes = 31, Drip = 32, + Tornado = 33, } impl ParticleMode { diff --git a/voxygen/src/scene/particle.rs b/voxygen/src/scene/particle.rs index 33452ec101..d21640e0d6 100644 --- a/voxygen/src/scene/particle.rs +++ b/voxygen/src/scene/particle.rs @@ -323,6 +323,9 @@ impl ParticleMgr { Body::Object(object::Body::BoltNature) => { self.maintain_boltnature_particles(scene_data, pos, vel) }, + Body::Object(object::Body::Tornado) => { + self.maintain_tornado_particles(scene_data, pos, vel) + }, Body::Object( object::Body::Bomb | object::Body::FireworkBlue @@ -498,6 +501,26 @@ impl ParticleMgr { ); } + fn maintain_tornado_particles(&mut self, scene_data: &SceneData, pos: &Pos, vel: Option<&Vel>) { + let time = scene_data.state.get_time(); + let dt = scene_data.state.get_delta_time(); + let mut rng = thread_rng(); + + // nature + self.particles.resize_with( + self.particles.len() + usize::from(self.scheduler.heartbeats(Duration::from_millis(5))), + || { + Particle::new( + Duration::from_millis(1000), + time, + ParticleMode::Tornado, + pos.0.map(|e| e + rng.gen_range(-0.25..0.25)) + + vel.map_or(Vec3::zero(), |v| -v.0 * dt * rng.gen::()), + ) + }, + ); + } + fn maintain_bomb_particles(&mut self, scene_data: &SceneData, pos: &Pos, vel: Option<&Vel>) { span!( _guard, diff --git a/world/src/layer/mod.rs b/world/src/layer/mod.rs index 9c12b4c130..bff44eb784 100644 --- a/world/src/layer/mod.rs +++ b/world/src/layer/mod.rs @@ -489,7 +489,7 @@ pub fn apply_caves_supplement<'a>( 0 => comp::biped_large::Species::Blueoni, _ => comp::biped_large::Species::Redoni, }, - _ => comp::biped_large::Species::Troll, + _ => comp::biped_large::Species::Cavetroll, }; comp::biped_large::Body::random_with(dynamic_rng, &species) .into() diff --git a/world/src/layer/wildlife.rs b/world/src/layer/wildlife.rs index f15ec3a9bc..5c240d1235 100644 --- a/world/src/layer/wildlife.rs +++ b/world/src/layer/wildlife.rs @@ -454,9 +454,8 @@ pub fn apply_wildlife_supplement<'a, R: Rng>( 0 => { biped_large::Body::random_with(rng, &biped_large::Species::Ogre).into() }, - 1 => { - biped_large::Body::random_with(rng, &biped_large::Species::Troll).into() - }, + 1 => biped_large::Body::random_with(rng, &biped_large::Species::Swamptroll) + .into(), _ => biped_large::Body::random_with(rng, &biped_large::Species::Cyclops) .into(), })