diff --git a/assets/common/npc_names.ron b/assets/common/npc_names.ron
index 0339622c22..2056193f41 100644
--- a/assets/common/npc_names.ron
+++ b/assets/common/npc_names.ron
@@ -1120,6 +1120,10 @@
                 keyword: "roc",
                 generic: "Roc"
             ),
+            wyvern_flame: (
+                keyword: "wyvern_flame",
+                generic: "Flame Wyvern"
+            ),
         )
     ),
     quadruped_low: (
diff --git a/assets/voxygen/voxel/bird_large_central_manifest.ron b/assets/voxygen/voxel/bird_large_central_manifest.ron
index a706aa79cf..6617997b69 100644
--- a/assets/voxygen/voxel/bird_large_central_manifest.ron
+++ b/assets/voxygen/voxel/bird_large_central_manifest.ron
@@ -155,4 +155,56 @@
             central: ("npc.roc.male.tail_rear"),
         )
     ),
+    (FlameWyvern, Male): (
+        head: (
+            offset: (-5.5, -5.0, 0.0),
+            central: ("npc.wyvern_flame.male.head"),
+        ),
+        beak: (
+            offset: (-2.5, 0.0, -5.0),
+            central: ("npc.wyvern_flame.male.beak"),
+        ),
+        neck: (
+            offset: (-2.5, 0.0, -3.5),
+            central: ("npc.wyvern_flame.male.neck"),
+        ),
+        chest: (
+            offset: (-6.5, -12.0, -9.0),
+            central: ("npc.wyvern_flame.male.chest"),
+        ),
+        tail_front: (
+            offset: (-2.5, -12.0, -7.0),
+            central: ("npc.wyvern_flame.male.tail_front"),
+        ),
+        tail_rear: (
+            offset: (-4.5, -29.0, -8.0),
+            central: ("npc.wyvern_flame.male.tail_rear"),
+        )
+    ),
+    (FlameWyvern, Female): (
+        head: (
+            offset: (-5.5, -5.0, 0.0),
+            central: ("npc.wyvern_flame.male.head"),
+        ),
+        beak: (
+            offset: (-2.5, 0.0, -5.0),
+            central: ("npc.wyvern_flame.male.beak"),
+        ),
+        neck: (
+            offset: (-2.5, 0.0, -3.5),
+            central: ("npc.wyvern_flame.male.neck"),
+        ),
+        chest: (
+            offset: (-6.5, -12.0, -9.0),
+            central: ("npc.wyvern_flame.male.chest"),
+        ),
+        tail_front: (
+            offset: (-2.5, -12.0, -7.0),
+            central: ("npc.wyvern_flame.male.tail_front"),
+        ),
+        tail_rear: (
+            offset: (-4.5, -29.0, -8.0),
+            central: ("npc.wyvern_flame.male.tail_rear"),
+        )
+    ),
 })
diff --git a/assets/voxygen/voxel/bird_large_lateral_manifest.ron b/assets/voxygen/voxel/bird_large_lateral_manifest.ron
index fadf7ddb56..e0de44612f 100644
--- a/assets/voxygen/voxel/bird_large_lateral_manifest.ron
+++ b/assets/voxygen/voxel/bird_large_lateral_manifest.ron
@@ -251,4 +251,88 @@
             lateral: ("npc.roc.male.foot_r"),
         )
     ),
+    (FlameWyvern, Male): (
+        wing_in_l: (
+            offset: (-24.0, -9.0, -4.0),
+            lateral: ("npc.wyvern_flame.male.wing_in_r"),
+        ),
+        wing_in_r: (
+            offset: (0.0,  -9.0, -4.0),
+            lateral: ("npc.wyvern_flame.male.wing_in_r"),
+        ),
+        wing_mid_l: (
+            offset: (-17.0, -27.0, -2.0),
+            lateral: ("npc.wyvern_flame.male.wing_mid_r"),
+        ),
+        wing_mid_r: (
+            offset: (0.0, -27.0, -2.0),
+            lateral: ("npc.wyvern_flame.male.wing_mid_r"),
+        ),
+        wing_out_l: (
+            offset: (-33.0, -31.0, -2.0),
+            lateral: ("npc.wyvern_flame.male.wing_out_r"),
+        ),
+        wing_out_r: (
+            offset: (0.0, -31.0, -2.0),
+            lateral: ("npc.wyvern_flame.male.wing_out_r"),
+        ),
+        leg_l: (
+            offset: (-3.0, -4.5, -5.5),
+            lateral: ("npc.wyvern_flame.male.leg_r"),
+        ),
+        leg_r: (
+            offset: (-3.0, -4.5, -5.5),
+            lateral: ("npc.wyvern_flame.male.leg_r"),
+        ),
+        foot_l: (
+            offset: (-3.5, -6.5, -13.0),
+            lateral: ("npc.wyvern_flame.male.foot_r"),
+        ),
+        foot_r: (
+            offset: (-3.5, -6.5, -13.0),
+            lateral: ("npc.wyvern_flame.male.foot_r"),
+        )
+    ),
+    (FlameWyvern, Female): (
+        wing_in_l: (
+            offset: (-24.0, -9.0, -4.0),
+            lateral: ("npc.wyvern_flame.male.wing_in_r"),
+        ),
+        wing_in_r: (
+            offset: (0.0,  -9.0, -4.0),
+            lateral: ("npc.wyvern_flame.male.wing_in_r"),
+        ),
+        wing_mid_l: (
+            offset: (-17.0, -27.0, -2.0),
+            lateral: ("npc.wyvern_flame.male.wing_mid_r"),
+        ),
+        wing_mid_r: (
+            offset: (0.0, -27.0, -2.0),
+            lateral: ("npc.wyvern_flame.male.wing_mid_r"),
+        ),
+        wing_out_l: (
+            offset: (-33.0, -31.0, -2.0),
+            lateral: ("npc.wyvern_flame.male.wing_out_r"),
+        ),
+        wing_out_r: (
+            offset: (0.0, -31.0, -2.0),
+            lateral: ("npc.wyvern_flame.male.wing_out_r"),
+        ),
+        leg_l: (
+            offset: (-3.0, -4.5, -5.5),
+            lateral: ("npc.wyvern_flame.male.leg_r"),
+        ),
+        leg_r: (
+            offset: (-3.0, -4.5, -5.5),
+            lateral: ("npc.wyvern_flame.male.leg_r"),
+        ),
+        foot_l: (
+            offset: (-3.5, -6.5, -13.0),
+            lateral: ("npc.wyvern_flame.male.foot_r"),
+        ),
+        foot_r: (
+            offset: (-3.5, -6.5, -13.0),
+            lateral: ("npc.wyvern_flame.male.foot_r"),
+        )
+    ),
 })
\ No newline at end of file
diff --git a/assets/voxygen/voxel/npc/wyvern_flame/male/beak.vox b/assets/voxygen/voxel/npc/wyvern_flame/male/beak.vox
new file mode 100644
index 0000000000..63c35a0b70
Binary files /dev/null and b/assets/voxygen/voxel/npc/wyvern_flame/male/beak.vox differ
diff --git a/assets/voxygen/voxel/npc/wyvern_flame/male/chest.vox b/assets/voxygen/voxel/npc/wyvern_flame/male/chest.vox
new file mode 100644
index 0000000000..d8db7a4efe
Binary files /dev/null and b/assets/voxygen/voxel/npc/wyvern_flame/male/chest.vox differ
diff --git a/assets/voxygen/voxel/npc/wyvern_flame/male/foot_r.vox b/assets/voxygen/voxel/npc/wyvern_flame/male/foot_r.vox
new file mode 100644
index 0000000000..eb019aae7f
Binary files /dev/null and b/assets/voxygen/voxel/npc/wyvern_flame/male/foot_r.vox differ
diff --git a/assets/voxygen/voxel/npc/wyvern_flame/male/head.vox b/assets/voxygen/voxel/npc/wyvern_flame/male/head.vox
new file mode 100644
index 0000000000..db59b238e1
Binary files /dev/null and b/assets/voxygen/voxel/npc/wyvern_flame/male/head.vox differ
diff --git a/assets/voxygen/voxel/npc/wyvern_flame/male/leg_r.vox b/assets/voxygen/voxel/npc/wyvern_flame/male/leg_r.vox
new file mode 100644
index 0000000000..6038ee9e9e
Binary files /dev/null and b/assets/voxygen/voxel/npc/wyvern_flame/male/leg_r.vox differ
diff --git a/assets/voxygen/voxel/npc/wyvern_flame/male/neck.vox b/assets/voxygen/voxel/npc/wyvern_flame/male/neck.vox
new file mode 100644
index 0000000000..f3f9e8bcea
Binary files /dev/null and b/assets/voxygen/voxel/npc/wyvern_flame/male/neck.vox differ
diff --git a/assets/voxygen/voxel/npc/wyvern_flame/male/tail_front.vox b/assets/voxygen/voxel/npc/wyvern_flame/male/tail_front.vox
new file mode 100644
index 0000000000..50f9a47e85
Binary files /dev/null and b/assets/voxygen/voxel/npc/wyvern_flame/male/tail_front.vox differ
diff --git a/assets/voxygen/voxel/npc/wyvern_flame/male/tail_rear.vox b/assets/voxygen/voxel/npc/wyvern_flame/male/tail_rear.vox
new file mode 100644
index 0000000000..87053840e6
Binary files /dev/null and b/assets/voxygen/voxel/npc/wyvern_flame/male/tail_rear.vox differ
diff --git a/assets/voxygen/voxel/npc/wyvern_flame/male/wing_in_r.vox b/assets/voxygen/voxel/npc/wyvern_flame/male/wing_in_r.vox
new file mode 100644
index 0000000000..f8a5e13b09
Binary files /dev/null and b/assets/voxygen/voxel/npc/wyvern_flame/male/wing_in_r.vox differ
diff --git a/assets/voxygen/voxel/npc/wyvern_flame/male/wing_mid_r.vox b/assets/voxygen/voxel/npc/wyvern_flame/male/wing_mid_r.vox
new file mode 100644
index 0000000000..ef3a046698
Binary files /dev/null and b/assets/voxygen/voxel/npc/wyvern_flame/male/wing_mid_r.vox differ
diff --git a/assets/voxygen/voxel/npc/wyvern_flame/male/wing_out_r.vox b/assets/voxygen/voxel/npc/wyvern_flame/male/wing_out_r.vox
new file mode 100644
index 0000000000..d93fe5c6c3
Binary files /dev/null and b/assets/voxygen/voxel/npc/wyvern_flame/male/wing_out_r.vox differ
diff --git a/common/src/comp/body.rs b/common/src/comp/body.rs
index fe2243bd0d..ecc6bc3ac2 100644
--- a/common/src/comp/body.rs
+++ b/common/src/comp/body.rs
@@ -492,6 +492,7 @@ impl Body {
                 bird_large::Species::Cockatrice => 4000,
                 bird_large::Species::Phoenix => 6000,
                 bird_large::Species::Roc => 5000,
+                bird_large::Species::FlameWyvern => 6000,
             },
             Body::Humanoid(_) => 750,
             _ => 1000,
@@ -746,7 +747,9 @@ impl Body {
                 Body::QuadrupedLow(q) => matches!(q.species, quadruped_low::Species::Lavadrake),
                 Body::BirdLarge(b) => matches!(
                     b.species,
-                    bird_large::Species::Phoenix | bird_large::Species::Cockatrice
+                    bird_large::Species::Phoenix
+                        | bird_large::Species::Cockatrice
+                        | bird_large::Species::FlameWyvern
                 ),
                 _ => false,
             },
diff --git a/common/src/comp/body/bird_large.rs b/common/src/comp/body/bird_large.rs
index 8d282c0480..361f87263b 100644
--- a/common/src/comp/body/bird_large.rs
+++ b/common/src/comp/body/bird_large.rs
@@ -37,6 +37,7 @@ make_case_elim!(
         Phoenix = 0,
         Cockatrice = 1,
         Roc = 2,
+        FlameWyvern = 3,
     }
 );
 
@@ -48,6 +49,7 @@ pub struct AllSpecies<SpeciesMeta> {
     pub phoenix: SpeciesMeta,
     pub cockatrice: SpeciesMeta,
     pub roc: SpeciesMeta,
+    pub wyvern_flame: SpeciesMeta,
 }
 
 impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies<SpeciesMeta> {
@@ -59,11 +61,17 @@ impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies<SpeciesMeta>
             Species::Phoenix => &self.phoenix,
             Species::Cockatrice => &self.cockatrice,
             Species::Roc => &self.roc,
+            Species::FlameWyvern => &self.wyvern_flame,
         }
     }
 }
 
-pub const ALL_SPECIES: [Species; 3] = [Species::Phoenix, Species::Cockatrice, Species::Roc];
+pub const ALL_SPECIES: [Species; 3] = [
+    Species::Phoenix,
+    Species::Cockatrice,
+    Species::Roc,
+    Species::FlameWyvern,
+    ];
 
 impl<'a, SpeciesMeta: 'a> IntoIterator for &'a AllSpecies<SpeciesMeta> {
     type IntoIter = std::iter::Copied<std::slice::Iter<'static, Self::Item>>;
diff --git a/common/src/comp/inventory/loadout_builder.rs b/common/src/comp/inventory/loadout_builder.rs
index 052cbb467a..773482a097 100644
--- a/common/src/comp/inventory/loadout_builder.rs
+++ b/common/src/comp/inventory/loadout_builder.rs
@@ -447,6 +447,28 @@ impl LoadoutBuilder {
                 quadruped_low::Species::Tortoise => {
                     Some("common.items.npc_armor.quadruped_low.shell")
                 },
+                Body::BirdLarge(bird_large) => match (bird_large.species, bird_large.body_type) {
+                    (bird_large::Species::Cockatrice, _) => {
+                        main_tool = Some(Item::new_from_asset_expect(
+                            "common.items.npc_weapons.unique.birdlargebreathe",
+                        ));
+                    },
+                    (bird_large::Species::Phoenix, _) => {
+                        main_tool = Some(Item::new_from_asset_expect(
+                            "common.items.npc_weapons.unique.birdlargefire",
+                        ));
+                    },
+                    (bird_large::Species::Roc, _) => {
+                        main_tool = Some(Item::new_from_asset_expect(
+                            "common.items.npc_weapons.unique.birdlargebasic",
+                        ));
+                    },
+                    (bird_large::Species::FlameWyvern, _) => {
+                        main_tool = Some(Item::new_from_asset_expect(
+                            "common.items.npc_weapons.unique.birdlargebreathe",
+                        ));
+                    },
+                },
                 _ => None,
             },
             Body::Theropod(body) => match body.species {
diff --git a/voxygen/anim/src/bird_large/fly.rs b/voxygen/anim/src/bird_large/fly.rs
index acb32f23f0..a3dc9384f6 100644
--- a/voxygen/anim/src/bird_large/fly.rs
+++ b/voxygen/anim/src/bird_large/fly.rs
@@ -98,8 +98,8 @@ impl Animation for FlyAnimation {
 
             next.wing_out_l.position = Vec3::new(-s_a.wing_out.0, s_a.wing_out.1, s_a.wing_out.2);
             next.wing_out_r.position = Vec3::new(s_a.wing_out.0, s_a.wing_out.1, s_a.wing_out.2);
-            next.wing_out_l.orientation = Quaternion::rotation_y(-flap3 * 1.2 - 0.3);
-            next.wing_out_r.orientation = Quaternion::rotation_y(flap3 * 1.2 + 0.3);
+            next.wing_out_l.orientation = Quaternion::rotation_y(-flap3 * 0.6 - 0.3) * Quaternion::rotation_x(-flap2 * 1.4);
+            next.wing_out_r.orientation = Quaternion::rotation_y(flap3 * 0.6 + 0.3) * Quaternion::rotation_x(-flap2 * 1.4);
 
             next.tail_front.position = Vec3::new(0.0, s_a.tail_front.0, s_a.tail_front.1);
             next.tail_front.orientation =
diff --git a/voxygen/anim/src/bird_large/idle.rs b/voxygen/anim/src/bird_large/idle.rs
index c48f0fcf8f..7030506ad5 100644
--- a/voxygen/anim/src/bird_large/idle.rs
+++ b/voxygen/anim/src/bird_large/idle.rs
@@ -48,37 +48,23 @@ impl Animation for IdleAnimation {
         next.chest.orientation = Quaternion::rotation_x(0.0);
 
         next.neck.position = Vec3::new(0.0, s_a.neck.0, s_a.neck.1);
-        next.neck.orientation = Quaternion::rotation_x(0.0);
 
         next.head.position = Vec3::new(0.0, s_a.head.0, s_a.head.1);
-        next.head.orientation = Quaternion::rotation_z(duck_head_look.x)
-            * Quaternion::rotation_x(-duck_head_look.y.abs() + wave_slow_cos * 0.01);
 
         next.beak.position = Vec3::new(0.0, s_a.beak.0, s_a.beak.1);
-        next.beak.orientation = Quaternion::rotation_x(wave_slow_cos * -0.02 - 0.02);
 
         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.6);
+
         next.tail_rear.position = Vec3::new(0.0, s_a.tail_rear.0, s_a.tail_rear.1);
-        next.tail_rear.orientation = Quaternion::rotation_x(-0.2);
 
         next.wing_in_l.position = Vec3::new(-s_a.wing_in.0, s_a.wing_in.1, s_a.wing_in.2);
         next.wing_in_r.position = Vec3::new(s_a.wing_in.0, s_a.wing_in.1, s_a.wing_in.2);
 
-        next.wing_in_l.orientation =
-            Quaternion::rotation_y(-0.8 + wave_slow_cos * 0.06) * Quaternion::rotation_z(0.2);
-        next.wing_in_r.orientation =
-            Quaternion::rotation_y(0.8 - wave_slow_cos * 0.06) * Quaternion::rotation_z(-0.2);
-
         next.wing_mid_l.position = Vec3::new(-s_a.wing_mid.0, s_a.wing_mid.1, s_a.wing_mid.2);
         next.wing_mid_r.position = Vec3::new(s_a.wing_mid.0, s_a.wing_mid.1, s_a.wing_mid.2);
-        next.wing_mid_l.orientation = Quaternion::rotation_y(-0.1) * Quaternion::rotation_z(0.7);
-        next.wing_mid_r.orientation = Quaternion::rotation_y(0.1) * Quaternion::rotation_z(-0.7);
 
         next.wing_out_l.position = Vec3::new(-s_a.wing_out.0, s_a.wing_out.1, s_a.wing_out.2);
         next.wing_out_r.position = Vec3::new(s_a.wing_out.0, s_a.wing_out.1, s_a.wing_out.2);
-        next.wing_out_l.orientation = Quaternion::rotation_y(-0.4) * Quaternion::rotation_z(0.2);
-        next.wing_out_r.orientation = Quaternion::rotation_y(0.4) * Quaternion::rotation_z(-0.2);
 
         next.leg_l.position = Vec3::new(-s_a.leg.0, s_a.leg.1, s_a.leg.2);
         next.leg_l.orientation = Quaternion::rotation_x(0.0);
@@ -86,9 +72,9 @@ impl Animation for IdleAnimation {
         next.leg_r.orientation = Quaternion::rotation_x(0.0);
 
         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.0);
+
         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.0);
+
 
         next
     }
diff --git a/voxygen/anim/src/bird_large/mod.rs b/voxygen/anim/src/bird_large/mod.rs
index 432cd57338..46903e43c3 100644
--- a/voxygen/anim/src/bird_large/mod.rs
+++ b/voxygen/anim/src/bird_large/mod.rs
@@ -165,66 +165,79 @@ impl<'a> From<&'a Body> for SkeletonAttr {
                 (Phoenix, _) => (2.5, 16.0),
                 (Cockatrice, _) => (2.5, 16.0),
                 (Roc, _) => (2.5, 27.5),
+                (FlameWyvern, _) => (2.5, 23.0),
             },
             neck: match (body.species, body.body_type) {
                 (Phoenix, _) => (2.5, -5.5),
                 (Cockatrice, _) => (5.0, -1.5),
                 (Roc, _) => (9.5, -1.5),
+                (FlameWyvern, _) => (11.0, -0.5),
             },
             head: match (body.species, body.body_type) {
                 (Phoenix, _) => (6.0, 12.0),
                 (Cockatrice, _) => (8.0, 4.5),
                 (Roc, _) => (17.0, -3.5),
+                (FlameWyvern, _) => (10.0, -1.5),
             },
             beak: match (body.species, body.body_type) {
                 (Phoenix, _) => (5.0, 3.0),
                 (Cockatrice, _) => (2.0, -3.0),
                 (Roc, _) => (0.0, -3.0),
+                (FlameWyvern, _) => (-1.0, 2.0),
             },
             tail_front: match (body.species, body.body_type) {
                 (Phoenix, _) => (-9.5, -1.0),
                 (Cockatrice, _) => (-5.0, -2.5),
                 (Roc, _) => (-7.5, -3.5),
+                (FlameWyvern, _) => (-10.0, -5.0),
             },
             tail_rear: match (body.species, body.body_type) {
                 (Phoenix, _) => (-11.0, 0.0),
                 (Cockatrice, _) => (-8.0, -3.0),
                 (Roc, _) => (-8.0, -3.0),
+                (FlameWyvern, _) => (-11.0, -1.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),
+                (FlameWyvern, _) => (5.5, 5.0, -2.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),
+                (FlameWyvern, _) => (19.0, 15.0, -1.0),
             },
             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),
+                (FlameWyvern, _) => (1.0, 1.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),
+                (FlameWyvern, _) => (5.5, -2.0, 15.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),
+                (FlameWyvern, _) => (0.5, 0.0, -3.5),
             },
             scaler: match (body.species, body.body_type) {
                 (Phoenix, _) => (1.0),
                 (Cockatrice, _) => (1.0),
                 (Roc, _) => (1.0),
+                (FlameWyvern, _) => (1.0),
             },
             feed: match (body.species, body.body_type) {
                 (Phoenix, _) => (-0.65),
                 (Cockatrice, _) => (-0.5),
                 (Roc, _) => (-0.4),
+                (FlameWyvern, _) => (-0.65),
             },
         }
     }