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 0000000000..09d1f97a07 --- /dev/null +++ b/assets/voxygen/voxel/sprite/misc/lantern_ground_open.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e69543d22dad412516ef8fbb3016b1ace791bff4010157d78d5f4c9a26cd73fc +size 1680 diff --git a/assets/voxygen/voxel/sprite/misc/street_lamp.vox b/assets/voxygen/voxel/sprite/misc/street_lamp.vox index 86e5e4428f..7111fd2ae7 100644 --- a/assets/voxygen/voxel/sprite/misc/street_lamp.vox +++ b/assets/voxygen/voxel/sprite/misc/street_lamp.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:21e014e1e5ccd8fff6364ee19662a3f1a8281f05517358ffa016d5801ba683a5 -size 3280 +oid sha256:9bb8f969cf070ffb45a79af52a77cbfdd31b47e90b77789a67bcaf853304810c +size 3380 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>, pub reeds: Vec>, pub flowers: Vec>, + pub fire_bowls: Vec>, // Note: these are only needed for chunks within the iteraction range so this is a potential // area for optimization pub interactables: Vec>, pub lights: Vec<(Vec3, 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, } } }