From 8612ad60d6797fd27f0e93cb06454b4c200ba3ee Mon Sep 17 00:00:00 2001
From: Monty Marz <m.marzouq@gmx.de>
Date: Sun, 22 Nov 2020 16:32:18 +0100
Subject: [PATCH] street lamp particles, ground fire bowl, misc fixes

---
 assets/voxygen/shaders/particle-vert.glsl     |  12 ++++++++++++
 .../voxel/sprite/misc/lantern_ground_open.vox | Bin 0 -> 1680 bytes
 .../voxygen/voxel/sprite/misc/street_lamp.vox | Bin 3280 -> 3380 bytes
 assets/voxygen/voxel/sprite_manifest.ron      |  11 +++++++++++
 assets/world/style/colors.ron                 |   2 +-
 common/src/loadout_builder.rs                 |   4 +---
 common/src/terrain/sprite.rs                  |   3 +++
 voxygen/src/hud/minimap.rs                    |   4 ++--
 voxygen/src/render/pipelines/particle.rs      |   1 +
 voxygen/src/scene/particle.rs                 |   8 ++++++++
 voxygen/src/scene/terrain/watcher.rs          |  10 ++++++++--
 11 files changed, 47 insertions(+), 8 deletions(-)
 create mode 100644 assets/voxygen/voxel/sprite/misc/lantern_ground_open.vox

diff --git a/assets/voxygen/shaders/particle-vert.glsl b/assets/voxygen/shaders/particle-vert.glsl
index ad1165c0dd..ba4b815033 100644
--- a/assets/voxygen/shaders/particle-vert.glsl
+++ b/assets/voxygen/shaders/particle-vert.glsl
@@ -54,6 +54,7 @@ const int HEALING_BEAM = 13;
 const int ENERGY_NATURE = 14;
 const int FLAMETHROWER = 15;
 const int FIRE_SHOCKWAVE = 16;
+const int FIRE_BOWL = 17;
 
 // meters per second squared (acceleration)
 const float earth_gravity = 9.807;
@@ -163,6 +164,17 @@ void main() {
             vec4(2, 1.5 + rand5 * 0.5, 0, start_end(1.0, 0.0)),
             spin_in_axis(vec3(rand6, rand7, rand8), rand9 * 3)
         );
+        } else if (inst_mode == FIRE_BOWL) {
+        f_reflect = 0.0; // Fire doesn't reflect light, it emits it
+        attr = Attr(
+            linear_motion(
+                vec3(normalize(vec2(rand0, rand1)) * 0.1, 0.6),
+                vec3(rand2 * 0.2, rand3 * 0.5, 0.8 + rand4 * 0.5)
+            ),
+            vec3(0.2), // Size
+            vec4(2, 1.5 + rand5 * 0.5, 0, start_end(1.0, 0.0)), // Colour
+            spin_in_axis(vec3(rand6, rand7, rand8), rand9 * 3)
+        );
     } else if (inst_mode == GUN_POWDER_SPARK) {
         attr = Attr(
             linear_motion(
diff --git a/assets/voxygen/voxel/sprite/misc/lantern_ground_open.vox b/assets/voxygen/voxel/sprite/misc/lantern_ground_open.vox
new file mode 100644
index 0000000000000000000000000000000000000000..7505e704b90e4e0cb2666e7af3abd107840b94dd
GIT binary patch
literal 1680
zcmciBe@NVA90%~v^L?J@oAhH@J9T$ndikSyXKeW+f8@5#)NQ)C<t*E7OGa$W;~1^4
zA=_~n+f`&@GZVL<WfmeaW}BE4{b3R^24f5x5roKy=->W`=)ZUG)BcKP|Mi6zZ$8iG
z`Fy|6eebSo|H06hh_pAh?qf*G73pk^wLF+9c-{9mF3Z6~vDUp#W>sWlEj%UC%cWjT
zhAeTfCrWyi63=03reRv9%M^z_a!8XQOD>6KPjil`$&h93GR3e*4rwxE$tAJuS<W#v
z(=aX5Wr{1Faydtu3|VqB>!LhI6wj}Ce#P@Eo?UrLsa}UP8M5SZT^z-;v*)N4O@=IM
zmqfEij%JSxS=KIzVUHZc9vQN%T@uUZS@uYiAxmy%-R1dQu9G3lS}BKTb39FkENkU3
zNogi2!z5+7*K#izvaFTToY$P!oY$P!oM)2KOj3qP%5tyeUNU4^D`hxu_-+i}jp4g7
zoM)2KOj3qP%5pDhGGs|9%NffalMd{9u94sE>Qz@)hg2$syCZ_#mljd%`xC$Wd{|g$
zN9MZH`sKQ^qq*=O4I$KDj_`Orq{TuK_d_Ngg)HVGyIqiXQV<*#Jb6`+l@L6X7Hnjl
zds$H3{s7ueW+QfXBi@~R49zJ)$Ee_yX~CJ>ob3ppAYO!$R0K7%QRI6*6b%IsnJh%b
z_07mTA}Be_dyfgW%?soOK0lcS8QlPx@nK-|Bba(B2Y0sT18t9ER0MPM1N}myrv=j=
z2o|OUH?Fac3MN_vUmXxEpAf`YpY9S2ALDwTpeZcqt`qb%3odfKqdI_iOA(SCWf(hN
ziPVd=80%@m!aFbF*U31_i*vE9vJiWoEyMAyS|r*8>6ZoLuM6hS3u+1iXpNNMNX-^_
z&GqPt<RV_3kD*<qnC;$**z=7@9NmZ1slyoTKY`?{F$}+zz)<=%q?2*@9^QapFo;kn
zgo<zxYPLLqXDY+kUR{p;JL@t0W)Rb#6ye7k5iH*-$47kT?4;o4H-ewP7bN3lxR|cO
z;*}=+_ERUk!E6kD?!&d)ek`N#fBF2?!A)og1^@N)S5;Nv{n~MCt(ZW=z&ZHSeq8@l
zaObe#a#<O|;V^oN`>=QS3?!XIj+cYE3v1tDe}KQ8f&#ozI*J_)BRDqrHa2zV;no+W
zn2Y%_!gu!1_n+C9x!0l2oA7#oGZ&_i{%jWS&3uOszg@!9rv|X&+&K1pJde(+ONd6J
sxGR8U5&nQ)60Cf^cD@z<zW%GvKjG^C>|U8^-m8~cU$3`%<Mrp|FWe1ht^fc4

literal 0
HcmV?d00001

diff --git a/assets/voxygen/voxel/sprite/misc/street_lamp.vox b/assets/voxygen/voxel/sprite/misc/street_lamp.vox
index df920331d69bcbd44c7957c81cd728a3bca5caf9..bf8722bf58dd269372dba1f1f2306d7642b11f84 100644
GIT binary patch
delta 467
zcmXYuy-EW?6oq$Z?!6NsRu=AzBGDqXodj(}EK>M~ATe(sSos2Zhy`CmL_4t)ONn5i
z`Dv^zEEf`3zkmZDXU;j?I}1CEkEwHU(revjS$4GFJw~$Da+aNU`-jbi;Vk{rLVK6}
z?r(z&XZODIYG;+WqEc|asJt&`0t$wALMCLOV0fowN(KtH@K#g;3gu~78&uv!Hb*wc
z${@ISllwSxKJrR@7f>*KAkQVvozMv#C>TDF=gOSYDIF*nK9J`|XLKN-V2cOKpRhe}
zE{(lQBLM}&2bbo#Pkc!ld7sAO(?n5&K%NVoFehmulBSB9q){Nxl}_n2O+}gGZV<?G
zOLJ%G%NsjUwWK4%JnS_-ywuM{T@D-TE8o|v^=CiTZ{3ahWoN5?YPZXS=9TA<ly}X|
EKX*%fpa1{>

delta 341
zcmW;FF;2rU6vlDe&+oaF%ES_zC2#`PZZI%J5zq<=m5Nj30$hMC5;IpobYx~`;27)-
z@xVV=`sK?P$9{+MmDl&TyY|I7cYWF25bk5;++DZ7BL3Hs=d8u<Vc$J3cwwErtv_u$
z#n22Inkh&#2_h7R5Su|F-=HvhQ2s-N!sc#t;~sL{q?4yAA#-!CN*b9$9=v3xWTxcb
z2!+uTe9SdKB70C6J;5vIAj%#TMo;j@o^g(hq>?rd9DmYzn?k8x3KI$wNO&dTt<?9|
U#kY)`<;8edJxbsA<MGky9}eVJ_y7O^

diff --git a/assets/voxygen/voxel/sprite_manifest.ron b/assets/voxygen/voxel/sprite_manifest.ron
index 72354dbcb8..a271d51272 100644
--- a/assets/voxygen/voxel/sprite_manifest.ron
+++ b/assets/voxygen/voxel/sprite_manifest.ron
@@ -2005,6 +2005,17 @@ PotionMinor: Some((
 ],
     wind_sway: 0.0,
 )),
+// Ground Fire Bowls
+FireBowlGround: Some((
+    variations: [
+        (
+            model: "voxygen.voxel.sprite.misc.lantern_ground_open",
+            offset: (-3.5, -3.5, 0.0),
+            lod_axes: (1.0, 1.0, 1.0),
+        ),
+],
+    wind_sway: 0.0,
+)),
 // Underwater Grass
 GrassBlue: Some((
     variations: [
diff --git a/assets/world/style/colors.ron b/assets/world/style/colors.ron
index 6f234e82d0..94c24db425 100644
--- a/assets/world/style/colors.ron
+++ b/assets/world/style/colors.ron
@@ -147,7 +147,7 @@
             plot_dirt: (90, 70, 50),
             plot_grass: (100, 200, 0),
             plot_water: (100, 150, 250),
-            plot_town: (150, 110, 60),
+            plot_town: (90, 70, 50),
             // TODO: Add field furrow stuff.
         ),
     ),
diff --git a/common/src/loadout_builder.rs b/common/src/loadout_builder.rs
index 1891e87492..43a685571e 100644
--- a/common/src/loadout_builder.rs
+++ b/common/src/loadout_builder.rs
@@ -404,9 +404,7 @@ impl LoadoutBuilder {
                             back: None,
                             ring: None,
                             neck: None,
-                            lantern: Some(Item::new_from_asset_expect(
-                                "common.items.lantern.black_0",
-                            )),
+                            lantern: None,
                             glider: None,
                             head: None,
                             tabard: None,
diff --git a/common/src/terrain/sprite.rs b/common/src/terrain/sprite.rs
index f33d4463b4..a9b97918a4 100644
--- a/common/src/terrain/sprite.rs
+++ b/common/src/terrain/sprite.rs
@@ -107,6 +107,7 @@ make_case_elim!(
         GrassBlue = 0x51,
         ChestBurried = 0x52,
         Mud = 0x53,
+        FireBowlGround = 0x54,
     }
 );
 
@@ -125,6 +126,7 @@ impl SpriteKind {
             SpriteKind::StreetLamp => 2.65,
             SpriteKind::Carrot => 0.18,
             SpriteKind::Radish => 0.18,
+            SpriteKind::FireBowlGround => 0.55,
             // TODO: Uncomment this when we have a way to open doors
             // SpriteKind::Door => 3.0,
             SpriteKind::Bed => 1.54,
@@ -234,6 +236,7 @@ impl SpriteKind {
                 | SpriteKind::Beehive
                 | SpriteKind::PotionMinor
                 | SpriteKind::VialEmpty
+                | SpriteKind::FireBowlGround
         )
     }
 }
diff --git a/voxygen/src/hud/minimap.rs b/voxygen/src/hud/minimap.rs
index cdea80e8eb..8f4c705fb6 100644
--- a/voxygen/src/hud/minimap.rs
+++ b/voxygen/src/hud/minimap.rs
@@ -369,11 +369,11 @@ impl<'a> Widget for MiniMap<'a> {
                 let name_len = chunk.meta().name().chars().count();
                 Text::new(chunk.meta().name())
                     .mid_top_with_margin_on(state.ids.mmap_frame, match name_len {
-                        16..=30 => 4.0,
+                        15..=30 => 4.0,
                         _ => 2.0,
                     })
                     .font_size(self.fonts.cyri.scale(match name_len {
-                        0..=16 => 18,
+                        0..=15 => 18,
                         16..=30 => 14,
                         _ => 14,
                     }))
diff --git a/voxygen/src/render/pipelines/particle.rs b/voxygen/src/render/pipelines/particle.rs
index bc71c54e38..86c3d56bc2 100644
--- a/voxygen/src/render/pipelines/particle.rs
+++ b/voxygen/src/render/pipelines/particle.rs
@@ -113,6 +113,7 @@ pub enum ParticleMode {
     EnergyNature = 14,
     FlameThrower = 15,
     FireShockwave = 16,
+    FireBowl = 17,
 }
 
 impl ParticleMode {
diff --git a/voxygen/src/scene/particle.rs b/voxygen/src/scene/particle.rs
index 22e0e3b8b0..20ef430bca 100644
--- a/voxygen/src/scene/particle.rs
+++ b/voxygen/src/scene/particle.rs
@@ -484,6 +484,14 @@ impl ParticleMgr {
                 mode: ParticleMode::CampfireFire,
                 cond: |_| true,
             },
+            BlockParticles {
+                blocks: |boi| &boi.fire_bowls,
+                range: 2,
+                rate: 20.0,
+                lifetime: 0.25,
+                mode: ParticleMode::FireBowl,
+                cond: |_| true,
+            },
             BlockParticles {
                 blocks: |boi| &boi.smokers,
                 range: 8,
diff --git a/voxygen/src/scene/terrain/watcher.rs b/voxygen/src/scene/terrain/watcher.rs
index 6914c3f2e3..7e01763d46 100644
--- a/voxygen/src/scene/terrain/watcher.rs
+++ b/voxygen/src/scene/terrain/watcher.rs
@@ -15,12 +15,15 @@ pub struct BlocksOfInterest {
     pub beehives: Vec<Vec3<i32>>,
     pub reeds: Vec<Vec3<i32>>,
     pub flowers: Vec<Vec3<i32>>,
+    pub fire_bowls: Vec<Vec3<i32>>,
     // Note: these are only needed for chunks within the iteraction range so this is a potential
     // area for optimization
     pub interactables: Vec<Vec3<i32>>,
     pub lights: Vec<(Vec3<i32>, u8)>,
 }
 
+use inline_tweak::*;
+
 impl BlocksOfInterest {
     pub fn from_chunk(chunk: &TerrainChunk) -> Self {
         span!(_guard, "from_chunk", "BlocksOfInterest::from_chunk");
@@ -34,6 +37,7 @@ impl BlocksOfInterest {
         let mut flowers = Vec::new();
         let mut interactables = Vec::new();
         let mut lights = Vec::new();
+        let mut fire_bowls = Vec::new();
 
         chunk
             .vol_iter(
@@ -68,8 +72,9 @@ impl BlocksOfInterest {
                         },
                         // Offset positions to account for block height.
                         // TODO: Is this a good idea?
-                        Some(SpriteKind::StreetLamp) => fires.push(pos + Vec3::unit_z() * 3),
-                        Some(SpriteKind::StreetLampTall) => fires.push(pos + Vec3::unit_z() * 4),
+                        Some(SpriteKind::StreetLamp) => fire_bowls.push(pos + Vec3::unit_z() * 2),
+                        Some(SpriteKind::FireBowlGround) => fire_bowls.push(pos + Vec3::unit_z() * 1),
+                        Some(SpriteKind::StreetLampTall) => fire_bowls.push(pos + Vec3::unit_z() * 4),
                         Some(SpriteKind::Beehive) => beehives.push(pos),
                         Some(SpriteKind::Reed) => reeds.push(pos),
                         Some(SpriteKind::PinkFlower) => flowers.push(pos),
@@ -100,6 +105,7 @@ impl BlocksOfInterest {
             flowers,
             interactables,
             lights,
+            fire_bowls,
         }
     }
 }