From 962d7694bd526b021da16b2fa7e257284a5cadb6 Mon Sep 17 00:00:00 2001 From: Monty Marz Date: Sat, 15 Aug 2020 21:05:19 +0200 Subject: [PATCH 01/12] fix social window display --- voxygen/src/hud/social.rs | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/voxygen/src/hud/social.rs b/voxygen/src/hud/social.rs index 77e0a15372..c9642f0786 100644 --- a/voxygen/src/hud/social.rs +++ b/voxygen/src/hud/social.rs @@ -125,7 +125,6 @@ impl<'a> Widget for Social<'a> { fn update(self, args: widget::UpdateArgs) -> Self::Event { let widget::UpdateArgs { state, ui, .. } = args; - let mut events = Vec::new(); let button_tooltip = Tooltip::new({ // Edge images [t, b, r, l] @@ -268,20 +267,27 @@ impl<'a> Widget for Social<'a> { } // Online Tab if let SocialTab::Online = self.show.social_tab { + let players = self.client.player_list.iter().filter(|(_, p)| p.is_online); + let count = players.clone().count(); + let height = if count > 1 { + count as f64 - 1.0 + 20.0 * count as f64 - 1.0 + } else { + 1.0 + }; // Content Alignments Rectangle::fill_with([270.0, 346.0], color::TRANSPARENT) .mid_top_with_margin_on(state.ids.frame, 74.0) .scroll_kids_vertically() .set(state.ids.online_align, ui); - Rectangle::fill_with([133.0, 346.0], color::TRANSPARENT) + Rectangle::fill_with([133.0, height], color::TRANSPARENT) .top_left_with_margins_on(state.ids.online_align, 0.0, 0.0) .crop_kids() .set(state.ids.names_align, ui); - Rectangle::fill_with([39.0, 346.0], color::TRANSPARENT) + Rectangle::fill_with([39.0, height], color::TRANSPARENT) .right_from(state.ids.names_align, 2.0) .crop_kids() .set(state.ids.levels_align, ui); - Rectangle::fill_with([94.0, 346.0], color::TRANSPARENT) + Rectangle::fill_with([94.0, height], color::TRANSPARENT) .right_from(state.ids.levels_align, 2.0) .crop_kids() .set(state.ids.zones_align, ui); @@ -332,8 +338,6 @@ impl<'a> Widget for Social<'a> { // Sort widgets by zone alphabetically } // Online Text - let players = self.client.player_list.iter().filter(|(_, p)| p.is_online); - let count = players.clone().count(); Text::new(&self.localized_strings.get("hud.social.online")) .bottom_left_with_margins_on(state.ids.frame, 18.0, 10.0) .font_id(self.fonts.cyri.conrod_id) From 0bd0de613bc6063605275ea796a3ff4ecba5533b Mon Sep 17 00:00:00 2001 From: Monty Marz Date: Thu, 13 Aug 2020 02:08:34 +0200 Subject: [PATCH 02/12] rounded numbers on healthbars --- voxygen/src/hud/overhead.rs | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/voxygen/src/hud/overhead.rs b/voxygen/src/hud/overhead.rs index 78d6161f79..f7ddf69a2f 100644 --- a/voxygen/src/hud/overhead.rs +++ b/voxygen/src/hud/overhead.rs @@ -155,7 +155,7 @@ impl<'a> Widget for Overhead<'a> { let hp_percentage = self.stats.health.current() as f64 / self.stats.health.maximum() as f64 * 100.0; let level_comp = self.stats.level.level() as i64 - self.own_level as i64; - let name_y = if hp_percentage.abs() > 99.9 { + let name_y = if hp_percentage == 100.0 { MANA_BAR_Y + 20.0 } else if level_comp > 9 { MANA_BAR_Y + 38.0 @@ -163,6 +163,23 @@ impl<'a> Widget for Overhead<'a> { MANA_BAR_Y + 32.0 }; let font_size = if hp_percentage.abs() > 99.9 { 24 } else { 20 }; + let health_current = (self.stats.health.current() / 10) as f64; + let health_max = (self.stats.health.maximum() / 10) as f64; + // Show K for numbers above 10^3 and truncate them + // Show M for numbers above 10^6 and truncate them + let health_cur_txt = match health_current as u32 { + 0..=999 => format!("{}", (health_current).trunc().max(1.0) as u32), + 1000..=999999 => format!("{}K", (health_current / 1000.0).trunc() as u32), + _ => format!( + "{}M", + (health_current as f64 / 10f64.powf(6.0)).trunc() as u32 + ), + }; + let health_max_txt = match health_max as u32 { + 0..=999 => format!("{}", (health_max).trunc() as u32), + 1000..=999999 => format!("{}K", (health_max / 1000.0).trunc() as u32), + _ => format!("{}M", (health_max / 10f64.powf(6.0)).trunc() as u32), + }; // Name Text::new(&self.name) .font_id(self.fonts.cyri.conrod_id) @@ -363,12 +380,7 @@ impl<'a> Widget for Overhead<'a> { })) .parent(id) .set(state.ids.health_bar, ui); - let mut txt = format!( - "{}/{}", - (self.stats.health.current() / 10).max(1) as u32, /* Don't show 0 health for - * living entities */ - self.stats.health.maximum() / 10 as u32, - ); + let mut txt = format!("{}/{}", health_cur_txt, health_max_txt); if self.stats.is_dead { txt = self.voxygen_i18n.get("hud.group.dead").to_string() }; From 54cba3e7f97b81dfb2783f038192c0d9a4a5ff8c Mon Sep 17 00:00:00 2001 From: Monty Marz Date: Thu, 13 Aug 2020 03:56:02 +0200 Subject: [PATCH 03/12] add mushrooms, temporary disable snowy grass --- assets/common/items/armor/neck/neck_0.ron | 2 +- assets/common/items/armor/neck/neck_1.ron | 2 +- world/src/layer/mod.rs | 15 +++++++++++---- 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/assets/common/items/armor/neck/neck_0.ron b/assets/common/items/armor/neck/neck_0.ron index 14b1138acd..cf50e006c7 100644 --- a/assets/common/items/armor/neck/neck_0.ron +++ b/assets/common/items/armor/neck/neck_0.ron @@ -5,7 +5,7 @@ Item( ( kind: Neck("Neck0"), stats: ( - protection: Normal(0.0), + protection: Normal(0.5), ), ) ), diff --git a/assets/common/items/armor/neck/neck_1.ron b/assets/common/items/armor/neck/neck_1.ron index 8f231cc3ce..e650268c91 100644 --- a/assets/common/items/armor/neck/neck_1.ron +++ b/assets/common/items/armor/neck/neck_1.ron @@ -5,7 +5,7 @@ Item( ( kind: Neck("Neck1"), stats: ( - protection: Normal(0.5), + protection: Normal(1.0), ), ) ), diff --git a/world/src/layer/mod.rs b/world/src/layer/mod.rs index d358e6286e..c56a75f03a 100644 --- a/world/src/layer/mod.rs +++ b/world/src/layer/mod.rs @@ -39,6 +39,7 @@ pub fn apply_scatter_to<'a>( ) { use BlockKind::*; #[allow(clippy::type_complexity)] + // TODO: Add back all sprites we had before let scatter: &[(_, bool, fn(&SimChunk) -> (f32, Option<(f32, f32)>))] = &[ // (density, Option<(wavelen, threshold)>) (BlueFlower, false, |c| { @@ -60,10 +61,10 @@ pub fn apply_scatter_to<'a>( ) }), (Twigs, false, |c| { - ((c.tree_density - 0.5).max(0.0) * 0.0025, None) + ((c.tree_density - 0.5).max(0.0) * 0.001, None) }), (Stones, false, |c| { - ((c.rockiness - 0.5).max(0.0) * 0.005, None) + ((c.rockiness - 0.5).max(0.0) * 0.0008, None) }), (ShortGrass, false, |c| { ( @@ -71,6 +72,12 @@ pub fn apply_scatter_to<'a>( Some((48.0, 0.4)), ) }), + (Mushroom, false, |c| { + ( + close(c.temp, 0.3, 0.4).min(close(c.humidity, 0.6, 0.35)) * 0.04, + None, + ) + }), (MediumGrass, false, |c| { ( close(c.temp, 0.0, 0.6).min(close(c.humidity, 0.6, 0.35)) * 0.05, @@ -83,12 +90,12 @@ pub fn apply_scatter_to<'a>( Some((48.0, 0.1)), ) }), - (GrassSnow, false, |c| { + /*(GrassSnow, false, |c| { ( close(c.temp, -0.4, 0.4).min(close(c.rockiness, 0.0, 0.5)) * 0.1, Some((48.0, 0.6)), ) - }), + }),*/ ]; for y in 0..vol.size_xy().y as i32 { From b930c34d8904457054488cb24575831438314511 Mon Sep 17 00:00:00 2001 From: Monty Marz Date: Thu, 13 Aug 2020 21:22:47 +0200 Subject: [PATCH 04/12] agent changes, sprite spawning changes, alignment changes --- assets/voxygen/i18n/en.ron | 4 +- assets/voxygen/voxel/sprite/rocks/rock-0.vox | 4 +- assets/voxygen/voxel/sprite/rocks/rock-1.vox | 4 +- assets/voxygen/voxel/sprite/rocks/rock-2.vox | 4 +- common/src/comp/agent.rs | 85 +++++++++++++++++--- server/src/cmd.rs | 1 + server/src/events/entity_creation.rs | 1 + voxygen/src/hud/mod.rs | 26 ++++-- world/src/layer/mod.rs | 58 ++++++------- world/src/lib.rs | 5 +- world/src/site/dungeon/mod.rs | 8 +- world/src/site/settlement/mod.rs | 2 +- 12 files changed, 143 insertions(+), 59 deletions(-) diff --git a/assets/voxygen/i18n/en.ron b/assets/voxygen/i18n/en.ron index a499419b08..d02cfc6b74 100644 --- a/assets/voxygen/i18n/en.ron +++ b/assets/voxygen/i18n/en.ron @@ -357,7 +357,7 @@ magically infused items?"#, "hud.spell": "Spells", - "hud.free_look_indicator": "Free look active", + "hud.free_look_indicator": "Free look active. Press {key} to disable.", "hud.auto_walk_indicator": "Auto walk active", /// End HUD section @@ -482,7 +482,7 @@ Protection "You can type /group or /g to only chat with players in your current group.", "To send private messages type /tell followed by a player name and your message.", "NPCs with the same level can have a different difficulty.", - "Look at the ground for food, chests and other loot!", + "Keep an eye out for food, chests and other loot spread all around the world!", "Inventory filled with food? Try crafting better food from it!", "Wondering what's there to do? Dungeons are marked with brown spots on the map!", "Don't forget to adjust the graphics for your system. Press 'N' to open the settings.", diff --git a/assets/voxygen/voxel/sprite/rocks/rock-0.vox b/assets/voxygen/voxel/sprite/rocks/rock-0.vox index bd0c85c9be..062fafca92 100644 --- a/assets/voxygen/voxel/sprite/rocks/rock-0.vox +++ b/assets/voxygen/voxel/sprite/rocks/rock-0.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:219f3cfd7e310284e17397a59441cfc79d27281ca09bea8a4740eee4173dab89 -size 1336 +oid sha256:2dc006d7dfc9adda49c235d03a7b80a7bf4ae1adc98b54d1311afc9047f6ae99 +size 1328 diff --git a/assets/voxygen/voxel/sprite/rocks/rock-1.vox b/assets/voxygen/voxel/sprite/rocks/rock-1.vox index ca13137003..4e2e1b8afe 100644 --- a/assets/voxygen/voxel/sprite/rocks/rock-1.vox +++ b/assets/voxygen/voxel/sprite/rocks/rock-1.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2c9365b3ddee1c873a9dbbe0a9e5c86280561562e14cda6540235d9d58bc58d0 -size 1936 +oid sha256:c999ddcf716d52cb7304fccbb15e5d5446f8f67eea04732273f2afc650f9775a +size 1916 diff --git a/assets/voxygen/voxel/sprite/rocks/rock-2.vox b/assets/voxygen/voxel/sprite/rocks/rock-2.vox index 42466dd089..5af72d4a4b 100644 --- a/assets/voxygen/voxel/sprite/rocks/rock-2.vox +++ b/assets/voxygen/voxel/sprite/rocks/rock-2.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:64e5992e0833d6f22ffb833e83ee967b1edb55d52414d45ce3afada7b0fc8e82 -size 1368 +oid sha256:80f106402224ca6fc0d38614afe86d1f7365690fbe5a55d1bbef791d4e0e2c7a +size 1356 diff --git a/common/src/comp/agent.rs b/common/src/comp/agent.rs index 22322b6df0..95b703b0dd 100644 --- a/common/src/comp/agent.rs +++ b/common/src/comp/agent.rs @@ -1,8 +1,11 @@ -use crate::{comp::Body, path::Chaser, sync::Uid}; +use crate::{ + comp::{critter, humanoid, quadruped_low, quadruped_medium, quadruped_small, Body}, + path::Chaser, + sync::Uid, +}; use specs::{Component, Entity as EcsEntity}; use specs_idvs::IdvStorage; use vek::*; - #[derive(Copy, Clone, Debug, PartialEq)] pub enum Alignment { /// Wild animals and gentle giants @@ -15,6 +18,8 @@ pub enum Alignment { Tame, /// Pets you've tamed with a collar Owned(Uid), + /// Passive objects like training dummies + Passive, } impl Alignment { @@ -22,8 +27,13 @@ impl Alignment { pub fn hostile_towards(self, other: Alignment) -> bool { match (self, other) { (Alignment::Enemy, Alignment::Enemy) => false, - (Alignment::Enemy, _) => true, + (Alignment::Enemy, Alignment::Wild) => false, + (Alignment::Enemy, Alignment::Tame) => true, + (Alignment::Wild, Alignment::Enemy) => false, + (Alignment::Wild, Alignment::Wild) => false, + (Alignment::Npc, Alignment::Wild) => true, (_, Alignment::Enemy) => true, + (Alignment::Enemy, _) => true, _ => false, } } @@ -35,8 +45,11 @@ impl Alignment { (Alignment::Owned(a), Alignment::Owned(b)) if a == b => true, (Alignment::Npc, Alignment::Npc) => true, (Alignment::Npc, Alignment::Tame) => true, + (Alignment::Enemy, Alignment::Wild) => true, + (Alignment::Wild, Alignment::Enemy) => true, (Alignment::Tame, Alignment::Npc) => true, (Alignment::Tame, Alignment::Tame) => true, + (_, Alignment::Passive) => true, _ => false, } } @@ -53,25 +66,73 @@ impl Component for Alignment { #[derive(Clone, Debug, Default)] pub struct Psyche { - pub aggro: f32, // 0.0 = always flees, 1.0 = always attacks + pub aggro: f32, // 0.0 = always flees, 1.0 = always attacks, 0.5 = flee at 50% health } - +#[allow(unreachable_patterns)] impl<'a> From<&'a Body> for Psyche { fn from(body: &'a Body) -> Self { Self { aggro: match body { - Body::Humanoid(_) => 0.5, - Body::QuadrupedSmall(_) => 0.35, - Body::QuadrupedMedium(_) => 0.5, - Body::QuadrupedLow(_) => 0.65, + Body::Humanoid(humanoid) => match humanoid.species { + humanoid::Species::Danari => 0.9, + humanoid::Species::Dwarf => 0.9, + humanoid::Species::Elf => 0.95, + humanoid::Species::Human => 0.95, + humanoid::Species::Orc => 1.0, + humanoid::Species::Undead => 1.0, + _ => 1.0, + }, + Body::QuadrupedSmall(quadruped_small) => match quadruped_small.species { + quadruped_small::Species::Pig => 0.8, + quadruped_small::Species::Fox => 0.4, + quadruped_small::Species::Sheep => 0.7, + quadruped_small::Species::Boar => 1.0, + quadruped_small::Species::Jackalope => 0.4, + quadruped_small::Species::Skunk => 0.8, + quadruped_small::Species::Cat => 0.2, + quadruped_small::Species::Batfox => 0.7, + quadruped_small::Species::Raccoon => 0.4, + quadruped_small::Species::Quokka => 0.7, + quadruped_small::Species::Dodarock => 0.9, + quadruped_small::Species::Holladon => 1.0, + quadruped_small::Species::Hyena => 0.4, + quadruped_small::Species::Rabbit => 0.1, + quadruped_small::Species::Truffler => 0.8, + quadruped_small::Species::Frog => 0.6, + _ => 1.0, + }, + Body::QuadrupedMedium(quadruped_medium) => match quadruped_medium.species { + quadruped_medium::Species::Tuskram => 0.8, + quadruped_medium::Species::Frostfang => 0.9, + quadruped_medium::Species::Mouflon => 0.8, + quadruped_medium::Species::Catoblepas => 0.8, + _ => 1.0, + }, + Body::QuadrupedLow(quadruped_low) => match quadruped_low.species { + quadruped_low::Species::Crocodile => 1.0, + quadruped_low::Species::Alligator => 1.0, + quadruped_low::Species::Salamander => 0.8, + quadruped_low::Species::Monitor => 0.9, + quadruped_low::Species::Asp => 0.9, + quadruped_low::Species::Tortoise => 1.0, + quadruped_low::Species::Rocksnapper => 1.0, + quadruped_low::Species::Pangolin => 0.6, + quadruped_low::Species::Maneater => 1.0, + _ => 1.0, + }, Body::BirdMedium(_) => 1.0, - Body::BirdSmall(_) => 0.2, + Body::BirdSmall(_) => 0.4, Body::FishMedium(_) => 0.15, Body::FishSmall(_) => 0.0, Body::BipedLarge(_) => 1.0, - Body::Object(_) => 0.0, + Body::Object(_) => 1.0, Body::Golem(_) => 1.0, - Body::Critter(_) => 0.1, + Body::Critter(critter) => match critter.species { + critter::Species::Axolotl => 1.0, + critter::Species::Turtle => 1.0, + critter::Species::Fungome => 1.0, + _ => 0.4, + }, Body::Dragon(_) => 1.0, }, } diff --git a/server/src/cmd.rs b/server/src/cmd.rs index 2d15bc6921..20612e6a65 100644 --- a/server/src/cmd.rs +++ b/server/src/cmd.rs @@ -624,6 +624,7 @@ fn handle_spawn( Some(comp::group::NPC) }, comp::Alignment::Owned(_) => unreachable!(), + _ => None, } { let _ = server.state.ecs().write_storage().insert(new_entity, group); diff --git a/server/src/events/entity_creation.rs b/server/src/events/entity_creation.rs index 206136aadc..9c89743450 100644 --- a/server/src/events/entity_creation.rs +++ b/server/src/events/entity_creation.rs @@ -44,6 +44,7 @@ pub fn handle_create_npc( Alignment::Npc | Alignment::Tame => Some(group::NPC), // TODO: handle Alignment::Owned(_) => None, + _ => None, }; let entity = server diff --git a/voxygen/src/hud/mod.rs b/voxygen/src/hud/mod.rs index 202aa2dc2b..ddf529cb09 100644 --- a/voxygen/src/hud/mod.rs +++ b/voxygen/src/hud/mod.rs @@ -2109,20 +2109,36 @@ impl Hud { } // Free look indicator - if self.show.free_look { - Text::new(&self.voxygen_i18n.get("hud.free_look_indicator")) + if let Some(freelook_key) = global_state + .settings + .controls + .get_binding(GameInput::FreeLook) + { + if self.show.free_look { + Text::new( + &self + .voxygen_i18n + .get("hud.free_look_indicator") + .replace("{key}", freelook_key.to_string().as_str()), + ) .color(TEXT_BG) - .mid_top_with_margin_on(ui_widgets.window, 100.0) + .mid_top_with_margin_on(ui_widgets.window, 130.0) .font_id(self.fonts.cyri.conrod_id) .font_size(self.fonts.cyri.scale(20)) .set(self.ids.free_look_bg, ui_widgets); - Text::new(&self.voxygen_i18n.get("hud.free_look_indicator")) + Text::new( + &self + .voxygen_i18n + .get("hud.free_look_indicator") + .replace("{key}", freelook_key.to_string().as_str()), + ) .color(KILL_COLOR) .top_left_with_margins_on(self.ids.free_look_bg, -1.0, -1.0) .font_id(self.fonts.cyri.conrod_id) .font_size(self.fonts.cyri.scale(20)) .set(self.ids.free_look_txt, ui_widgets); - } + } + }; // Auto walk indicator if self.show.auto_walk { diff --git a/world/src/layer/mod.rs b/world/src/layer/mod.rs index c56a75f03a..f636b7bdc3 100644 --- a/world/src/layer/mod.rs +++ b/world/src/layer/mod.rs @@ -61,20 +61,20 @@ pub fn apply_scatter_to<'a>( ) }), (Twigs, false, |c| { - ((c.tree_density - 0.5).max(0.0) * 0.001, None) + ((c.tree_density - 0.5).max(0.0) * 0.00001, None) }), (Stones, false, |c| { - ((c.rockiness - 0.5).max(0.0) * 0.0008, None) + ((c.rockiness - 0.5).max(0.0) * 0.00001, None) }), (ShortGrass, false, |c| { ( - close(c.temp, 0.3, 0.4).min(close(c.humidity, 0.6, 0.35)) * 0.05, + close(c.temp, 0.3, 0.4).min(close(c.humidity, 0.6, 0.35)) * 0.09, Some((48.0, 0.4)), ) }), (Mushroom, false, |c| { ( - close(c.temp, 0.3, 0.4).min(close(c.humidity, 0.6, 0.35)) * 0.04, + close(c.temp, 0.3, 0.4).min(close(c.humidity, 0.6, 0.35)) * 0.00001, None, ) }), @@ -375,56 +375,45 @@ pub fn apply_caves_supplement<'a>( let difficulty = cave_depth / 200.0; // Scatter things in caves - if RandomField::new(index.seed).chance(wpos2d.into(), 0.00005 * difficulty) + if RandomField::new(index.seed).chance(wpos2d.into(), 0.000005 * difficulty) && cave_base < surface_z as i32 - 40 { + let is_hostile: bool; let entity = EntityInfo::at(Vec3::new( wpos2d.x as f32, wpos2d.y as f32, cave_base as f32, )) - .with_alignment(comp::Alignment::Enemy) .with_body(match rng.gen_range(0, 6) { 0 => { - let species = match rng.gen_range(0, 2) { + is_hostile = false; + let species = match rng.gen_range(0, 4) { 0 => comp::quadruped_small::Species::Truffler, - _ => comp::quadruped_small::Species::Hyena, + 1 => comp::quadruped_small::Species::Dodarock, + 2 => comp::quadruped_small::Species::Holladon, + _ => comp::quadruped_small::Species::Batfox, }; comp::quadruped_small::Body::random_with(rng, &species).into() }, 1 => { - let species = match rng.gen_range(0, 3) { + is_hostile = false; + let species = match rng.gen_range(0, 5) { 0 => comp::quadruped_medium::Species::Tarasque, - 1 => comp::quadruped_medium::Species::Frostfang, _ => comp::quadruped_medium::Species::Bonerattler, }; comp::quadruped_medium::Body::random_with(rng, &species).into() }, 2 => { - let species = match rng.gen_range(0, 3) { - 0 => comp::quadruped_low::Species::Maneater, + is_hostile = false; + let species = match rng.gen_range(0, 4) { 1 => comp::quadruped_low::Species::Rocksnapper, _ => comp::quadruped_low::Species::Salamander, }; comp::quadruped_low::Body::random_with(rng, &species).into() }, 3 => { - let species = match rng.gen_range(0, 3) { - 0 => comp::critter::Species::Fungome, - 1 => comp::critter::Species::Axolotl, - _ => comp::critter::Species::Rat, - }; - comp::critter::Body::random_with(rng, &species).into() - }, - 4 => { - #[allow(clippy::match_single_binding)] - let species = match rng.gen_range(0, 1) { - _ => comp::golem::Species::StoneGolem, - }; - comp::golem::Body::random_with(rng, &species).into() - }, - _ => { - let species = match rng.gen_range(0, 4) { + is_hostile = true; + let species = match rng.gen_range(0, 8) { 0 => comp::biped_large::Species::Ogre, 1 => comp::biped_large::Species::Cyclops, 2 => comp::biped_large::Species::Wendigo, @@ -432,6 +421,19 @@ pub fn apply_caves_supplement<'a>( }; comp::biped_large::Body::random_with(rng, &species).into() }, + _ => { + is_hostile = false; + let species = match rng.gen_range(0, 5) { + 0 => comp::critter::Species::Fungome, + _ => comp::critter::Species::Rat, + }; + comp::critter::Body::random_with(rng, &species).into() + }, + }) + .with_alignment(if is_hostile { + comp::Alignment::Enemy + } else { + comp::Alignment::Wild }) .with_automatic_name(); diff --git a/world/src/lib.rs b/world/src/lib.rs index 6a1a6e954d..ec171f4608 100644 --- a/world/src/lib.rs +++ b/world/src/lib.rs @@ -237,7 +237,10 @@ impl World { && !sim_chunk.is_underwater() { let entity = EntityInfo::at(gen_entity_pos()) - .with_alignment(comp::Alignment::Wild) + .with_alignment(match rng.gen_range(0, 10) { + 0 => comp::Alignment::Enemy, + _ => comp::Alignment::Wild, + }) .do_if(rng.gen_range(0, 8) == 0, |e| e.into_giant()) .with_body(match rng.gen_range(0, 5) { 0 => comp::Body::QuadrupedMedium(quadruped_medium::Body::random()), diff --git a/world/src/site/dungeon/mod.rs b/world/src/site/dungeon/mod.rs index 4b3fe2f8a7..92fff69a80 100644 --- a/world/src/site/dungeon/mod.rs +++ b/world/src/site/dungeon/mod.rs @@ -473,10 +473,10 @@ impl Floor { .with_automatic_name() .with_main_tool(assets::load_expect_cloned(match rng.gen_range(0, 6) { 0 => "common.items.weapons.axe.starter_axe", - 1 => "common.items.weapons.sword.starter_sword", + 1 => "common.items.weapons.sword.cultist_purp_2h-0", 2 => "common.items.weapons.sword.short_sword_0", - 3 => "common.items.weapons.hammer.hammer_1", - 4 => "common.items.weapons.staff.starter_staff", + 3 => "common.items.weapons.hammer.cultist_purp_2h-0", + 4 => "common.items.weapons.staff.cultist_staff", _ => "common.items.weapons.bow.starter_bow", })); @@ -545,7 +545,7 @@ impl Floor { "common.items.weapons.sword.greatsword_2h_fine-1", ), 10 => comp::Item::expect_from_asset( - "common.items.weapons.sword.greatsword_2h_fine-2", + "common.items.weapons.hammer.cultist_purp_2h-0", ), 11 => comp::Item::expect_from_asset( "common.items.weapons.sword.cultist_purp_2h-0", diff --git a/world/src/site/settlement/mod.rs b/world/src/site/settlement/mod.rs index 50d22b3c52..8f6dcf6ed9 100644 --- a/world/src/site/settlement/mod.rs +++ b/world/src/site/settlement/mod.rs @@ -897,7 +897,7 @@ impl Settlement { }) .with_agency(!is_dummy) .with_alignment(if is_dummy { - comp::Alignment::Wild + comp::Alignment::Passive } else if is_human { comp::Alignment::Npc } else { From 0512c7a7647322a3786852bec1cd770733dfca3d Mon Sep 17 00:00:00 2001 From: Monty Marz Date: Thu, 13 Aug 2020 22:27:07 +0200 Subject: [PATCH 05/12] more variable alignments --- world/src/layer/mod.rs | 4 ++-- world/src/lib.rs | 35 ++++++++++++++++++++++++++--------- 2 files changed, 28 insertions(+), 11 deletions(-) diff --git a/world/src/layer/mod.rs b/world/src/layer/mod.rs index f636b7bdc3..7be65358fd 100644 --- a/world/src/layer/mod.rs +++ b/world/src/layer/mod.rs @@ -396,7 +396,7 @@ pub fn apply_caves_supplement<'a>( comp::quadruped_small::Body::random_with(rng, &species).into() }, 1 => { - is_hostile = false; + is_hostile = true; let species = match rng.gen_range(0, 5) { 0 => comp::quadruped_medium::Species::Tarasque, _ => comp::quadruped_medium::Species::Bonerattler, @@ -404,7 +404,7 @@ pub fn apply_caves_supplement<'a>( comp::quadruped_medium::Body::random_with(rng, &species).into() }, 2 => { - is_hostile = false; + is_hostile = true; let species = match rng.gen_range(0, 4) { 1 => comp::quadruped_low::Species::Rocksnapper, _ => comp::quadruped_low::Species::Salamander, diff --git a/world/src/lib.rs b/world/src/lib.rs index ec171f4608..3cbfed2d87 100644 --- a/world/src/lib.rs +++ b/world/src/lib.rs @@ -236,18 +236,35 @@ impl World { && sim_chunk.chaos < 0.5 && !sim_chunk.is_underwater() { + let is_hostile: bool; let entity = EntityInfo::at(gen_entity_pos()) - .with_alignment(match rng.gen_range(0, 10) { - 0 => comp::Alignment::Enemy, - _ => comp::Alignment::Wild, - }) .do_if(rng.gen_range(0, 8) == 0, |e| e.into_giant()) .with_body(match rng.gen_range(0, 5) { - 0 => comp::Body::QuadrupedMedium(quadruped_medium::Body::random()), - 1 => comp::Body::BirdMedium(bird_medium::Body::random()), - 2 => comp::Body::Critter(critter::Body::random()), - 3 => comp::Body::QuadrupedLow(quadruped_low::Body::random()), - _ => comp::Body::QuadrupedSmall(quadruped_small::Body::random()), + 0 => { + is_hostile = true; + comp::Body::QuadrupedMedium(quadruped_medium::Body::random()) + }, + 1 => { + is_hostile = false; + comp::Body::BirdMedium(bird_medium::Body::random()) + }, + 2 => { + is_hostile = false; + comp::Body::Critter(critter::Body::random()) + }, + 3 => { + is_hostile = false; + comp::Body::QuadrupedLow(quadruped_low::Body::random()) + }, + _ => { + is_hostile = false; + comp::Body::QuadrupedSmall(quadruped_small::Body::random()) + }, + }) + .with_alignment(if is_hostile { + comp::Alignment::Enemy + } else { + comp::Alignment::Wild }) .with_automatic_name(); From 7ab80ef36702343d98056946397e2337cd29b78c Mon Sep 17 00:00:00 2001 From: Monty Marz Date: Fri, 14 Aug 2020 03:22:25 +0200 Subject: [PATCH 06/12] sprite spawning rules --- Cargo.lock | 10 ++ assets/voxygen/i18n/tr_TR.ron | 46 ++----- common/src/comp/agent.rs | 4 +- voxygen/Cargo.toml | 1 + voxygen/src/session.rs | 2 +- world/src/layer/mod.rs | 225 +++++++++++++++++++++++++++++----- world/src/lib.rs | 9 +- 7 files changed, 222 insertions(+), 75 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 259543ab2c..661aa0ae37 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1309,6 +1309,15 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" +[[package]] +name = "format_num" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14ac05eb8d2eb4ed1eeff847911deae077b0b53332465de9d6a26b0ea9961bc8" +dependencies = [ + "regex", +] + [[package]] name = "fsevent" version = "2.0.2" @@ -4766,6 +4775,7 @@ dependencies = [ "dot_vox", "euc", "failure", + "format_num", "gfx", "gfx_device_gl", "gfx_gl", diff --git a/assets/voxygen/i18n/tr_TR.ron b/assets/voxygen/i18n/tr_TR.ron index a0e3a6ab0c..87da2a0ecb 100644 --- a/assets/voxygen/i18n/tr_TR.ron +++ b/assets/voxygen/i18n/tr_TR.ron @@ -65,14 +65,11 @@ VoxygenLocalization( "common.create": "Oluştur", "common.okay": "Tamam", "common.accept": "Kabul Et", - "common.decline": "Reddet", "common.disclaimer": "Uyarı", "common.cancel": "İptal Et", "common.none": "Yok", "common.error": "Hata", "common.fatal_error": "Ölümcül hata", - "common.you": "Sen", - "common.automatic": "Otomatik", // Message when connection to the server is lost "common.connection_lost": r#"Bağlantı koptu! @@ -305,30 +302,23 @@ edince kapat"#, "hud.settings.fluid_rendering_mode.cheap": "Basit", "hud.settings.fluid_rendering_mode.shiny": "Güzel", "hud.settings.cloud_rendering_mode.regular": "Normal", - "hud.settings.particles": "Partiküller", - "hud.settings.resolution": "Çözünürlük", - "hud.settings.bit_depth": "Bit Derinliği", - "hud.settings.refresh_rate": "Yenileme Hızı", "hud.settings.fullscreen": "Tam ekran", "hud.settings.save_window_size": "Pencere boyutunu kaydet", - "hud.settings.music_volume": "Müzik Sesi", - "hud.settings.sound_effect_volume": "Efekt Sesi", - "hud.settings.audio_device": "Ses Aygıtı", - "hud.settings.awaitingkey": "Bir tuşa bas...", "hud.settings.unbound": "Atanmamış", "hud.settings.reset_keybinds": "Varsayılana döndür", - "hud.social": "Diğer Oyuncular", - "hud.social.online": "Çevrimiçi:", + "hud.settings.music_volume": "Müzik Sesi", + "hud.settings.sound_effect_volume": "Efekt Sesi", + "hud.settings.audio_device": "Ses Aygıtı", + + "hud.social": "Sosyal", + "hud.social.online": "Çevrimiçi", "hud.social.friends": "Arkadaşlar", "hud.social.not_yet_available": "Şu anda kullanılabilir değil", "hud.social.faction": "Klan", "hud.social.play_online_fmt": "{nb_player} oyuncu çevrimiçi", - "hud.social.name": "İsim", - "hud.social.level": "Seviye", - "hud.social.zone": "Bölge", "hud.crafting": "Üretim", "hud.crafting.recipes": "Tarifler", @@ -336,19 +326,6 @@ edince kapat"#, "hud.crafting.craft": "Üret", "hud.crafting.tool_cata": "Gerektiriyor:", - "hud.group": "Grup", - "hud.group.invite_to_join": "{name} seni grubuna davet etti!", - "hud.group.invite": "Davet Et", - "hud.group.kick": "Gruptan At", - "hud.group.assign_leader": "Lider Seç", - "hud.group.leave": "Gruptan Ayrıl", - "hud.group.dead" : "Ölü", - "hud.group.out_of_range": "Erişim dışı", - "hud.group.add_friend": "Arkadaşlara Ekle", - "hud.group.link_group": "Grupları Bağla", - "hud.group.in_menu": "Menüde", - "hud.group.members": "Grup Üyeleri", - "hud.spell": "Büyü", "hud.free_look_indicator": "Serbest bakış açık", @@ -391,7 +368,7 @@ edince kapat"#, "gameinput.wallleap": "Duvar Sıçrayışı", "gameinput.togglelantern": "Feneri yak/söndür", "gameinput.mount": "Bin", - "gameinput.chat": "Sohbet", + "gameinput.enter": "Sohbet", "gameinput.command": "Komut", "gameinput.escape": "Oyunu Duraklat", "gameinput.map": "Harita", @@ -407,13 +384,6 @@ edince kapat"#, "gameinput.freelook": "Serbest Bakış", "gameinput.autowalk": "Otomatik Yürüyüş", "gameinput.dance": "Dans et", - "gameinput.select": "Varlık Seç", - "gameinput.acceptgroupinvite": "Grup Davetini Kabul Et", - "gameinput.declinegroupinvite": "Grup Davetini Reddet", - "gameinput.crafting": "Üretim", - "gameinput.sneak": "Eğil", - "gameinput.swimdown": "Aşağı Dal", - "gameinput.swimup": "Yüzeye çık", /// End GameInput section @@ -486,8 +456,6 @@ Koruma "'L-Shift'e basarak Planörünü aç ve gökyüzünü fethet.", "Veloren hala Pre-Alpha'da. Onu geliştirmek için her gün elimizden geleni yapıyoruz!", "Geliştirme Takımına katılmak istiyorsan veya sadece sohbet etmek istiyorsan Discord sunucumuza katıl.", - "Can barında canı sayı olarak görmek istiyorsan, bunu ayarlardan aktifleştirebilirsin.", - "Niteliklerini görmek için envanterindeki 'Nitelikler' düğmesine tıklayabilirsin.", ], "npc.speech.villager_under_attack": [ "Saldırı altındayım, yardım edin!", diff --git a/common/src/comp/agent.rs b/common/src/comp/agent.rs index 95b703b0dd..986ddc57e4 100644 --- a/common/src/comp/agent.rs +++ b/common/src/comp/agent.rs @@ -83,9 +83,9 @@ impl<'a> From<&'a Body> for Psyche { _ => 1.0, }, Body::QuadrupedSmall(quadruped_small) => match quadruped_small.species { - quadruped_small::Species::Pig => 0.8, + quadruped_small::Species::Pig => 0.5, quadruped_small::Species::Fox => 0.4, - quadruped_small::Species::Sheep => 0.7, + quadruped_small::Species::Sheep => 0.5, quadruped_small::Species::Boar => 1.0, quadruped_small::Species::Jackalope => 0.4, quadruped_small::Species::Skunk => 0.8, diff --git a/voxygen/Cargo.toml b/voxygen/Cargo.toml index 459cd9657d..6f00070c09 100644 --- a/voxygen/Cargo.toml +++ b/voxygen/Cargo.toml @@ -47,6 +47,7 @@ gilrs = { version = "0.7", features = ["serde"] } server = { package = "veloren-server", path = "../server", optional = true } # Utility +format_num = "0.1.0" glsl-include = "0.3.1" failure = "0.1.6" dot_vox = "4.0" diff --git a/voxygen/src/session.rs b/voxygen/src/session.rs index c01bce33d0..076b18901b 100644 --- a/voxygen/src/session.rs +++ b/voxygen/src/session.rs @@ -1146,7 +1146,7 @@ impl PlayState for SessionState { } /// Max distance an entity can be "targeted" -const MAX_TARGET_RANGE: f32 = 30.0; +const MAX_TARGET_RANGE: f32 = 150.0; /// Calculate what the cursor is pointing at within the 3d scene #[allow(clippy::type_complexity)] fn under_cursor( diff --git a/world/src/layer/mod.rs b/world/src/layer/mod.rs index 7be65358fd..19b4b0ee6f 100644 --- a/world/src/layer/mod.rs +++ b/world/src/layer/mod.rs @@ -2,7 +2,7 @@ use crate::{ column::ColumnSample, sim::SimChunk, util::{RandomField, Sampler}, - IndexRef, + Index, IndexRef, CONFIG, }; use common::{ assets, comp, @@ -29,7 +29,7 @@ pub struct Colors { fn close(x: f32, tgt: f32, falloff: f32) -> f32 { (1.0 - (x - tgt).abs() / falloff).max(0.0).powf(0.5) } - +const MUSH_FACT: f32 = 0.001; // To balance everything around the mushroom spawning rate pub fn apply_scatter_to<'a>( wpos2d: Vec2, mut get_column: impl FnMut(Vec2) -> Option<&'a ColumnSample<'a>>, @@ -42,60 +42,221 @@ pub fn apply_scatter_to<'a>( // TODO: Add back all sprites we had before let scatter: &[(_, bool, fn(&SimChunk) -> (f32, Option<(f32, f32)>))] = &[ // (density, Option<(wavelen, threshold)>) + // Flowers (BlueFlower, false, |c| { ( - close(c.temp, -0.3, 0.7).min(close(c.humidity, 0.6, 0.35)) * 0.05, - Some((48.0, 0.6)), + close(c.temp, 0.3, 0.4).min(close(c.humidity, CONFIG.forest_hum, 0.35)) + * MUSH_FACT + * 0.5, + Some((48.0, 0.4)), ) }), (PinkFlower, false, |c| { ( - close(c.temp, 0.15, 0.5).min(close(c.humidity, 0.6, 0.35)) * 0.05, - Some((48.0, 0.6)), - ) - }), - (DeadBush, false, |c| { - ( - close(c.temp, 0.8, 0.3).min(close(c.humidity, 0.0, 0.4)) * 0.015, - None, - ) - }), - (Twigs, false, |c| { - ((c.tree_density - 0.5).max(0.0) * 0.00001, None) - }), - (Stones, false, |c| { - ((c.rockiness - 0.5).max(0.0) * 0.00001, None) - }), - (ShortGrass, false, |c| { - ( - close(c.temp, 0.3, 0.4).min(close(c.humidity, 0.6, 0.35)) * 0.09, + close(c.temp, 0.3, 0.4).min(close(c.humidity, CONFIG.forest_hum, 0.35)) + * MUSH_FACT + * 0.5, Some((48.0, 0.4)), ) }), + (PurpleFlower, false, |c| { + ( + close(c.temp, 0.3, 0.4).min(close(c.humidity, CONFIG.forest_hum, 0.35)) + * MUSH_FACT + * 0.5, + Some((48.0, 0.4)), + ) + }), + (RedFlower, false, |c| { + ( + close(c.temp, 0.3, 0.4).min(close(c.humidity, CONFIG.forest_hum, 0.35)) + * MUSH_FACT + * 0.5, + Some((48.0, 0.4)), + ) + }), + (WhiteFlower, false, |c| { + ( + close(c.temp, 0.3, 0.4).min(close(c.humidity, CONFIG.forest_hum, 0.35)) + * MUSH_FACT + * 0.5, + Some((48.0, 0.4)), + ) + }), + (YellowFlower, false, |c| { + ( + close(c.temp, 0.3, 0.4).min(close(c.humidity, CONFIG.forest_hum, 0.35)) + * MUSH_FACT + * 0.5, + Some((48.0, 0.4)), + ) + }), + // Herbs and Spices + (LingonBerry, false, |c| { + ( + close(c.temp, 0.3, 0.4).min(close(c.humidity, CONFIG.forest_hum, 0.35)) + * MUSH_FACT + * 0.5, + None, + ) + }), + (LeafyPlant, false, |c| { + ( + close(c.temp, 0.3, 0.4).min(close(c.humidity, CONFIG.forest_hum, 0.35)) + * MUSH_FACT + * 0.5, + None, + ) + }), + (Fern, false, |c| { + ( + close(c.temp, 0.3, 0.4).min(close(c.humidity, CONFIG.forest_hum, 0.35)) + * MUSH_FACT + * 0.5, + Some((48.0, 0.4)), + ) + }), + (Blueberry, false, |c| { + ( + close(c.temp, CONFIG.temperate_temp, 0.5).min(close( + c.humidity, + CONFIG.forest_hum, + 0.35, + )) * MUSH_FACT + * 0.3, + None, + ) + }), + // Collecable Objects + // Only spawn twigs in temperate forests + (Twigs, false, |c| { + ((c.tree_density - 0.5).max(0.0) * MUSH_FACT, None) + }), + (Stones, false, |c| { + ((c.rockiness - 0.5).max(0.0) * MUSH_FACT, None) + }), + // Don't spawn Mushrooms in snowy regions (Mushroom, false, |c| { ( - close(c.temp, 0.3, 0.4).min(close(c.humidity, 0.6, 0.35)) * 0.00001, + close(c.temp, 0.3, 0.4).min(close(c.humidity, CONFIG.forest_hum, 0.35)) * MUSH_FACT, None, ) }), + // Grass + (ShortGrass, false, |c| { + ( + close(c.temp, 0.0, 0.6).min(close(c.humidity, CONFIG.forest_hum, 0.35)) * 0.05, + Some((48.0, 0.7)), + ) + }), (MediumGrass, false, |c| { ( - close(c.temp, 0.0, 0.6).min(close(c.humidity, 0.6, 0.35)) * 0.05, - Some((48.0, 0.2)), + close(c.temp, 0.0, 0.6).min(close(c.humidity, CONFIG.forest_hum, 0.35)) * 0.05, + Some((48.0, 0.4)), ) }), (LongGrass, false, |c| { ( - close(c.temp, 0.4, 0.4).min(close(c.humidity, 0.8, 0.2)) * 0.05, - Some((48.0, 0.1)), + close(c.temp, 0.4, 0.4).min(close(c.humidity, CONFIG.forest_hum, 0.2)) * 0.05, + Some((48.0, 0.5)), ) }), - /*(GrassSnow, false, |c| { + (WheatGreen, false, |c| { ( - close(c.temp, -0.4, 0.4).min(close(c.rockiness, 0.0, 0.5)) * 0.1, - Some((48.0, 0.6)), + close(c.temp, 0.4, 0.4).min(close(c.humidity, CONFIG.forest_hum, 0.1)) + * MUSH_FACT + * 0.001, + None, ) - }),*/ + }), + (GrassSnow, false, |c| { + ( + close(c.temp, CONFIG.snow_temp - 0.2, 0.4).min(close( + c.humidity, + CONFIG.forest_hum, + 0.5, + )) * 0.01, + Some((48.0, 0.2)), + ) + }), + // Desert Plants + (DeadBush, false, |c| { + ( + close(c.temp, CONFIG.desert_temp + 0.2, 0.3).min(close( + c.humidity, + CONFIG.desert_hum, + 0.3, + )) * MUSH_FACT + * 0.01, + None, + ) + }), + (LargeCactus, false, |c| { + ( + close(c.temp, CONFIG.desert_temp + 0.2, 0.3).min(close( + c.humidity, + CONFIG.desert_hum, + 0.2, + )) * MUSH_FACT + * 0.01, + None, + ) + }), + (BarrelCactus, false, |c| { + ( + close(c.temp, CONFIG.desert_temp + 0.2, 0.3).min(close( + c.humidity, + CONFIG.desert_hum, + 0.2, + )) * MUSH_FACT + * 0.01, + None, + ) + }), + (RoundCactus, false, |c| { + ( + close(c.temp, CONFIG.desert_temp + 0.2, 0.3).min(close( + c.humidity, + CONFIG.desert_hum, + 0.2, + )) * MUSH_FACT + * 0.01, + None, + ) + }), + (ShortCactus, false, |c| { + ( + close(c.temp, CONFIG.desert_temp + 0.2, 0.3).min(close( + c.humidity, + CONFIG.desert_hum, + 0.2, + )) * MUSH_FACT + * 0.01, + None, + ) + }), + (MedFlatCactus, false, |c| { + ( + close(c.temp, CONFIG.desert_temp + 0.2, 0.3).min(close( + c.humidity, + CONFIG.desert_hum, + 0.2, + )) * MUSH_FACT + * 0.01, + None, + ) + }), + (ShortFlatCactus, false, |c| { + ( + close(c.temp, CONFIG.desert_temp + 0.2, 0.3).min(close( + c.humidity, + CONFIG.desert_hum, + 0.2, + )) * MUSH_FACT + * 0.01, + None, + ) + }), ]; for y in 0..vol.size_xy().y as i32 { diff --git a/world/src/lib.rs b/world/src/lib.rs index 3cbfed2d87..e4ab5cdd58 100644 --- a/world/src/lib.rs +++ b/world/src/lib.rs @@ -237,8 +237,13 @@ impl World { && !sim_chunk.is_underwater() { let is_hostile: bool; + let is_giant = if rng.gen_range(0, 8) == 0 { + true + } else { + false + }; let entity = EntityInfo::at(gen_entity_pos()) - .do_if(rng.gen_range(0, 8) == 0, |e| e.into_giant()) + .do_if(is_giant, |e| e.into_giant()) .with_body(match rng.gen_range(0, 5) { 0 => { is_hostile = true; @@ -263,6 +268,8 @@ impl World { }) .with_alignment(if is_hostile { comp::Alignment::Enemy + } else if is_giant { + comp::Alignment::Npc } else { comp::Alignment::Wild }) From 924d09e46c5724f784ef07f722534e0ad545221a Mon Sep 17 00:00:00 2001 From: Sam Date: Fri, 14 Aug 2020 16:55:03 -0500 Subject: [PATCH 07/12] balancing more specific stats Update body.rs more balancing non hostile catoblepas and mouflons quad low more adjustments Animals with enemy alignment now deal correct damage. Made health scaling species-specific. --- assets/common/cave_scatter.ron | 3 +- .../items/npc_armor/back/dungeon_purple-0.ron | 12 + .../items/npc_armor/belt/cultist_belt.ron | 12 + .../npc_armor/chest/cultist_chest_purple.ron | 12 + .../items/npc_armor/foot/cultist_boots.ron | 12 + .../npc_armor/hand/cultist_hands_purple.ron | 12 + .../npc_armor/pants/cultist_legs_purple.ron | 12 + .../shoulder/cultist_shoulder_purple.ron | 12 + .../items/npc_weapons/axe/malachite_axe-0.ron | 13 + .../items/npc_weapons/axe/starter_axe.ron | 13 + .../items/npc_weapons/bow/horn_longbow-0.ron | 13 + .../npc_weapons/dagger/starter_dagger.ron | 13 + .../common/items/npc_weapons/empty/empty.ron | 13 + .../npc_weapons/hammer/cultist_purp_2h-0.ron | 13 + .../npc_weapons/hammer/starter_hammer.ron | 13 + .../items/npc_weapons/shield/shield_1.ron | 13 + .../items/npc_weapons/staff/bone_staff.ron | 13 + .../items/npc_weapons/staff/cultist_staff.ron | 13 + .../npc_weapons/sword/cultist_purp_2h-0.ron | 13 + .../sword/cultist_purp_2h_boss-0.ron | 13 + .../items/npc_weapons/sword/starter_sword.ron | 13 + .../npc_weapons/sword/zweihander_sword_0.ron | 13 + .../common/items/npc_weapons/tool/broom.ron | 13 + .../items/npc_weapons/tool/fishing_rod.ron | 13 + assets/common/items/npc_weapons/tool/hoe.ron | 13 + .../common/items/npc_weapons/tool/pickaxe.ron | 13 + .../items/npc_weapons/tool/pitchfork.ron | 13 + assets/common/items/npc_weapons/tool/rake.ron | 13 + .../items/npc_weapons/tool/shovel-0.ron | 13 + .../items/npc_weapons/tool/shovel-1.ron | 13 + assets/common/recipe_book.ron | 8 +- common/src/comp/agent.rs | 3 +- common/src/comp/body.rs | 379 ++++++++++++++---- common/src/sys/agent.rs | 3 +- server/src/sys/terrain.rs | 21 +- world/src/layer/mod.rs | 42 +- world/src/lib.rs | 29 +- world/src/site/dungeon/mod.rs | 18 +- world/src/site/settlement/mod.rs | 16 +- 39 files changed, 767 insertions(+), 125 deletions(-) create mode 100644 assets/common/items/npc_armor/back/dungeon_purple-0.ron create mode 100644 assets/common/items/npc_armor/belt/cultist_belt.ron create mode 100644 assets/common/items/npc_armor/chest/cultist_chest_purple.ron create mode 100644 assets/common/items/npc_armor/foot/cultist_boots.ron create mode 100644 assets/common/items/npc_armor/hand/cultist_hands_purple.ron create mode 100644 assets/common/items/npc_armor/pants/cultist_legs_purple.ron create mode 100644 assets/common/items/npc_armor/shoulder/cultist_shoulder_purple.ron create mode 100644 assets/common/items/npc_weapons/axe/malachite_axe-0.ron create mode 100644 assets/common/items/npc_weapons/axe/starter_axe.ron create mode 100644 assets/common/items/npc_weapons/bow/horn_longbow-0.ron create mode 100644 assets/common/items/npc_weapons/dagger/starter_dagger.ron create mode 100644 assets/common/items/npc_weapons/empty/empty.ron create mode 100644 assets/common/items/npc_weapons/hammer/cultist_purp_2h-0.ron create mode 100644 assets/common/items/npc_weapons/hammer/starter_hammer.ron create mode 100644 assets/common/items/npc_weapons/shield/shield_1.ron create mode 100644 assets/common/items/npc_weapons/staff/bone_staff.ron create mode 100644 assets/common/items/npc_weapons/staff/cultist_staff.ron create mode 100644 assets/common/items/npc_weapons/sword/cultist_purp_2h-0.ron create mode 100644 assets/common/items/npc_weapons/sword/cultist_purp_2h_boss-0.ron create mode 100644 assets/common/items/npc_weapons/sword/starter_sword.ron create mode 100644 assets/common/items/npc_weapons/sword/zweihander_sword_0.ron create mode 100644 assets/common/items/npc_weapons/tool/broom.ron create mode 100644 assets/common/items/npc_weapons/tool/fishing_rod.ron create mode 100644 assets/common/items/npc_weapons/tool/hoe.ron create mode 100644 assets/common/items/npc_weapons/tool/pickaxe.ron create mode 100644 assets/common/items/npc_weapons/tool/pitchfork.ron create mode 100644 assets/common/items/npc_weapons/tool/rake.ron create mode 100644 assets/common/items/npc_weapons/tool/shovel-0.ron create mode 100644 assets/common/items/npc_weapons/tool/shovel-1.ron diff --git a/assets/common/cave_scatter.ron b/assets/common/cave_scatter.ron index 524ef2ff57..85cc78cfb2 100644 --- a/assets/common/cave_scatter.ron +++ b/assets/common/cave_scatter.ron @@ -7,6 +7,5 @@ (120, Mushroom), (8, ShinyGem), (15, Chest), - (2, Crate), - (0.25, Scarecrow), + (2, Crate), ] diff --git a/assets/common/items/npc_armor/back/dungeon_purple-0.ron b/assets/common/items/npc_armor/back/dungeon_purple-0.ron new file mode 100644 index 0000000000..325c85adcb --- /dev/null +++ b/assets/common/items/npc_armor/back/dungeon_purple-0.ron @@ -0,0 +1,12 @@ +Item( + name: "Purple Cultist Cape", + description: "Smells like dark magic and candles.", + kind: Armor( + ( + kind: Back("DungPurp0"), + stats: ( + protection: Normal(1.0), + ), + ) + ), +) diff --git a/assets/common/items/npc_armor/belt/cultist_belt.ron b/assets/common/items/npc_armor/belt/cultist_belt.ron new file mode 100644 index 0000000000..6b856636c6 --- /dev/null +++ b/assets/common/items/npc_armor/belt/cultist_belt.ron @@ -0,0 +1,12 @@ +Item( + name: "Cultist Belt", + description: "Ceremonial attire used by members.", + kind: Armor( + ( + kind: Belt("Cultist"), + stats: ( + protection: Normal(0.0), + ), + ) + ), +) diff --git a/assets/common/items/npc_armor/chest/cultist_chest_purple.ron b/assets/common/items/npc_armor/chest/cultist_chest_purple.ron new file mode 100644 index 0000000000..ed500e8f1f --- /dev/null +++ b/assets/common/items/npc_armor/chest/cultist_chest_purple.ron @@ -0,0 +1,12 @@ +Item( + name: "Purple Cultist Chest", + description: "Ceremonial attire used by members.", + kind: Armor( + ( + kind: Chest("CultistPurple"), + stats: ( + protection: Normal(5.0), + ), + ) + ), +) diff --git a/assets/common/items/npc_armor/foot/cultist_boots.ron b/assets/common/items/npc_armor/foot/cultist_boots.ron new file mode 100644 index 0000000000..da1de15c1a --- /dev/null +++ b/assets/common/items/npc_armor/foot/cultist_boots.ron @@ -0,0 +1,12 @@ +Item( + name: "Cultist Boots", + description: "Ceremonial attire used by members.", + kind: Armor( + ( + kind: Foot("Cultist"), + stats: ( + protection: Normal(1.0), + ), + ) + ), +) diff --git a/assets/common/items/npc_armor/hand/cultist_hands_purple.ron b/assets/common/items/npc_armor/hand/cultist_hands_purple.ron new file mode 100644 index 0000000000..220c1fab77 --- /dev/null +++ b/assets/common/items/npc_armor/hand/cultist_hands_purple.ron @@ -0,0 +1,12 @@ +Item( + name: "Purple Cultist Gloves", + description: "Ceremonial attire used by members.", + kind: Armor( + ( + kind: Hand("CultistPurple"), + stats: ( + protection: Normal(2.0), + ), + ) + ), +) diff --git a/assets/common/items/npc_armor/pants/cultist_legs_purple.ron b/assets/common/items/npc_armor/pants/cultist_legs_purple.ron new file mode 100644 index 0000000000..0eaf1e95ab --- /dev/null +++ b/assets/common/items/npc_armor/pants/cultist_legs_purple.ron @@ -0,0 +1,12 @@ +Item( + name: "Purple Cultist Skirt", + description: "Ceremonial attire used by members.", + kind: Armor( + ( + kind: Pants("CultistPurple"), + stats: ( + protection: Normal(10.0), + ), + ) + ), +) diff --git a/assets/common/items/npc_armor/shoulder/cultist_shoulder_purple.ron b/assets/common/items/npc_armor/shoulder/cultist_shoulder_purple.ron new file mode 100644 index 0000000000..ccf9691a7d --- /dev/null +++ b/assets/common/items/npc_armor/shoulder/cultist_shoulder_purple.ron @@ -0,0 +1,12 @@ +Item( + name: "Purple Cultist Mantle", + description: "Ceremonial attire used by members.", + kind: Armor( + ( + kind: Shoulder("CultistPurple"), + stats: ( + protection: Normal(5.0), + ), + ) + ), +) diff --git a/assets/common/items/npc_weapons/axe/malachite_axe-0.ron b/assets/common/items/npc_weapons/axe/malachite_axe-0.ron new file mode 100644 index 0000000000..c639db3dd8 --- /dev/null +++ b/assets/common/items/npc_weapons/axe/malachite_axe-0.ron @@ -0,0 +1,13 @@ +Item( + name: "Malachite Axe", + description: "An axe infused with malachite.", + kind: Tool( + ( + kind: Axe("MalachiteAxe0"), + stats: ( + equip_time_millis: 400, + power: 0.50, + ), + ) + ), +) diff --git a/assets/common/items/npc_weapons/axe/starter_axe.ron b/assets/common/items/npc_weapons/axe/starter_axe.ron new file mode 100644 index 0000000000..ccdd0c527c --- /dev/null +++ b/assets/common/items/npc_weapons/axe/starter_axe.ron @@ -0,0 +1,13 @@ +Item( + name: "Notched Axe", + description: "Every dent tells the story of a chopped tree.", + kind: Tool( + ( + kind: Axe("BasicAxe"), + stats: ( + equip_time_millis: 400, + power: 0.50, + ), + ) + ), +) diff --git a/assets/common/items/npc_weapons/bow/horn_longbow-0.ron b/assets/common/items/npc_weapons/bow/horn_longbow-0.ron new file mode 100644 index 0000000000..6c055bfa3e --- /dev/null +++ b/assets/common/items/npc_weapons/bow/horn_longbow-0.ron @@ -0,0 +1,13 @@ +Item( + name: "Horn Bow", + description: "You don't recognize the creature these horns belong to.", + kind: Tool( + ( + kind: Bow("HornLongbow0"), + stats: ( + equip_time_millis: 400, + power: 0.5, + ), + ) + ), +) diff --git a/assets/common/items/npc_weapons/dagger/starter_dagger.ron b/assets/common/items/npc_weapons/dagger/starter_dagger.ron new file mode 100644 index 0000000000..9d24de8e09 --- /dev/null +++ b/assets/common/items/npc_weapons/dagger/starter_dagger.ron @@ -0,0 +1,13 @@ +Item( + name: "Rusty Dagger", + description: "Easily concealed.", + kind: Tool( + ( + kind: Dagger("BasicDagger"), + stats: ( + equip_time_millis: 300, + power: 1.00, + ), + ) + ), +) diff --git a/assets/common/items/npc_weapons/empty/empty.ron b/assets/common/items/npc_weapons/empty/empty.ron new file mode 100644 index 0000000000..489101c9f0 --- /dev/null +++ b/assets/common/items/npc_weapons/empty/empty.ron @@ -0,0 +1,13 @@ +Item( + name: "Empty", + description: "You expected a description?", + kind: Tool ( + ( + kind: Empty, + stats: ( + equip_time_millis: 200, + power: 1.00, + ), + ) + ), +) diff --git a/assets/common/items/npc_weapons/hammer/cultist_purp_2h-0.ron b/assets/common/items/npc_weapons/hammer/cultist_purp_2h-0.ron new file mode 100644 index 0000000000..d384a3eb88 --- /dev/null +++ b/assets/common/items/npc_weapons/hammer/cultist_purp_2h-0.ron @@ -0,0 +1,13 @@ +Item( + name: "Magical Cultist Warhammer", + description: "This belonged to an evil Cult Leader.", + kind: Tool( + ( + kind: Hammer("CultPurp0"), + stats: ( + equip_time_millis: 500, + power: 0.5, + ), + ) + ), +) diff --git a/assets/common/items/npc_weapons/hammer/starter_hammer.ron b/assets/common/items/npc_weapons/hammer/starter_hammer.ron new file mode 100644 index 0000000000..e871d6cc38 --- /dev/null +++ b/assets/common/items/npc_weapons/hammer/starter_hammer.ron @@ -0,0 +1,13 @@ +Item( + name: "Sturdy Old Hammer", + description: "'Property of...' The rest is missing.", + kind: Tool( + ( + kind: Hammer("BasicHammer"), + stats: ( + equip_time_millis: 500, + power: 0.50, + ), + ) + ), +) diff --git a/assets/common/items/npc_weapons/shield/shield_1.ron b/assets/common/items/npc_weapons/shield/shield_1.ron new file mode 100644 index 0000000000..6fe9c4a971 --- /dev/null +++ b/assets/common/items/npc_weapons/shield/shield_1.ron @@ -0,0 +1,13 @@ +Item( + name: "A Tattered Targe", + description: "Should withstand a few more hits, hopefully...", + kind: Tool ( + ( + kind: Shield("BasicShield"), + stats: ( + equip_time_millis: 400, + power: 1.00, + ), + ) + ), +) diff --git a/assets/common/items/npc_weapons/staff/bone_staff.ron b/assets/common/items/npc_weapons/staff/bone_staff.ron new file mode 100644 index 0000000000..a5675f2690 --- /dev/null +++ b/assets/common/items/npc_weapons/staff/bone_staff.ron @@ -0,0 +1,13 @@ +Item( + name: "Bone Staff", + description: "There's a red gem suspended in the bones.", + kind: Tool( + ( + kind: Staff("BoneStaff"), + stats: ( + equip_time_millis: 300, + power: 0.8, + ), + ) + ), +) diff --git a/assets/common/items/npc_weapons/staff/cultist_staff.ron b/assets/common/items/npc_weapons/staff/cultist_staff.ron new file mode 100644 index 0000000000..f4ebacea3f --- /dev/null +++ b/assets/common/items/npc_weapons/staff/cultist_staff.ron @@ -0,0 +1,13 @@ +Item( + name: "Cultist Staff", + description: "The fire gives off no heat.", + kind: Tool( + ( + kind: Staff("CultistStaff"), + stats: ( + equip_time_millis: 300, + power: 0.8, + ), + ) + ), +) diff --git a/assets/common/items/npc_weapons/sword/cultist_purp_2h-0.ron b/assets/common/items/npc_weapons/sword/cultist_purp_2h-0.ron new file mode 100644 index 0000000000..19bcd0369e --- /dev/null +++ b/assets/common/items/npc_weapons/sword/cultist_purp_2h-0.ron @@ -0,0 +1,13 @@ +Item( + name: "Magical Cultist Greatsword", + description: "This belonged to an evil Cult Leader.", + kind: Tool( + ( + kind: Sword("CultPurp0"), + stats: ( + equip_time_millis: 500, + power: 0.5, + ), + ) + ), +) diff --git a/assets/common/items/npc_weapons/sword/cultist_purp_2h_boss-0.ron b/assets/common/items/npc_weapons/sword/cultist_purp_2h_boss-0.ron new file mode 100644 index 0000000000..085690bc07 --- /dev/null +++ b/assets/common/items/npc_weapons/sword/cultist_purp_2h_boss-0.ron @@ -0,0 +1,13 @@ +Item( + name: "Magical Cultist Greatsword", + description: "This belonged to an evil Cult Leader.", + kind: Tool( + ( + kind: Sword("CultPurp0"), + stats: ( + equip_time_millis: 500, + power: 1.0, + ), + ) + ), +) diff --git a/assets/common/items/npc_weapons/sword/starter_sword.ron b/assets/common/items/npc_weapons/sword/starter_sword.ron new file mode 100644 index 0000000000..5eef68dca3 --- /dev/null +++ b/assets/common/items/npc_weapons/sword/starter_sword.ron @@ -0,0 +1,13 @@ +Item( + name: "Battered Sword", + description: "Held together by Rust and hope.", + kind: Tool( + ( + kind: Sword("BasicSword"), + stats: ( + equip_time_millis: 300, + power: 0.50, + ), + ) + ), +) diff --git a/assets/common/items/npc_weapons/sword/zweihander_sword_0.ron b/assets/common/items/npc_weapons/sword/zweihander_sword_0.ron new file mode 100644 index 0000000000..372932187d --- /dev/null +++ b/assets/common/items/npc_weapons/sword/zweihander_sword_0.ron @@ -0,0 +1,13 @@ +Item( + name: "Sturdy Zweihander", + description: "It's a big sword, and sharp too.", + kind: Tool( + ( + kind: Sword("Zweihander0"), + stats: ( + equip_time_millis: 500, + power: 0.6, + ), + ) + ), +) diff --git a/assets/common/items/npc_weapons/tool/broom.ron b/assets/common/items/npc_weapons/tool/broom.ron new file mode 100644 index 0000000000..9b62840b7e --- /dev/null +++ b/assets/common/items/npc_weapons/tool/broom.ron @@ -0,0 +1,13 @@ +Item( + name: "Broom", + description: "It's beginning to fall apart.", + kind: Tool ( + ( + kind: Farming("Broom"), + stats: ( + equip_time_millis: 400, + power: 0.5, + ), + ) + ), +) diff --git a/assets/common/items/npc_weapons/tool/fishing_rod.ron b/assets/common/items/npc_weapons/tool/fishing_rod.ron new file mode 100644 index 0000000000..bf4b3a05c3 --- /dev/null +++ b/assets/common/items/npc_weapons/tool/fishing_rod.ron @@ -0,0 +1,13 @@ +Item( + name: "Fishing Rod", + description: "Smells of fish.", + kind: Tool ( + ( + kind: Farming("FishingRod0"), + stats: ( + equip_time_millis: 400, + power: 0.5, + ), + ) + ), +) diff --git a/assets/common/items/npc_weapons/tool/hoe.ron b/assets/common/items/npc_weapons/tool/hoe.ron new file mode 100644 index 0000000000..2f0ec0f257 --- /dev/null +++ b/assets/common/items/npc_weapons/tool/hoe.ron @@ -0,0 +1,13 @@ +Item( + name: "Hoe", + description: "It's stained with dirt.", + kind: Tool ( + ( + kind: Farming("Hoe0"), + stats: ( + equip_time_millis: 400, + power: 0.50, + ), + ) + ), +) diff --git a/assets/common/items/npc_weapons/tool/pickaxe.ron b/assets/common/items/npc_weapons/tool/pickaxe.ron new file mode 100644 index 0000000000..e9ed64a5e4 --- /dev/null +++ b/assets/common/items/npc_weapons/tool/pickaxe.ron @@ -0,0 +1,13 @@ +Item( + name: "Pickaxe", + description: "It has a chipped edge.", + kind: Tool ( + ( + kind: Farming("Pickaxe0"), + stats: ( + equip_time_millis: 400, + power: 0.50, + ), + ) + ), +) diff --git a/assets/common/items/npc_weapons/tool/pitchfork.ron b/assets/common/items/npc_weapons/tool/pitchfork.ron new file mode 100644 index 0000000000..effc304483 --- /dev/null +++ b/assets/common/items/npc_weapons/tool/pitchfork.ron @@ -0,0 +1,13 @@ +Item( + name: "Pitchfork", + description: "One of the prongs is broken.", + kind: Tool ( + ( + kind: Farming("Pitchfork"), + stats: ( + equip_time_millis: 400, + power: 0.50, + ), + ) + ), +) diff --git a/assets/common/items/npc_weapons/tool/rake.ron b/assets/common/items/npc_weapons/tool/rake.ron new file mode 100644 index 0000000000..9430056099 --- /dev/null +++ b/assets/common/items/npc_weapons/tool/rake.ron @@ -0,0 +1,13 @@ +Item( + name: "Rake", + description: "Held together with twine.", + kind: Tool ( + ( + kind: Farming("Rake"), + stats: ( + equip_time_millis: 400, + power: 0.50, + ), + ) + ), +) diff --git a/assets/common/items/npc_weapons/tool/shovel-0.ron b/assets/common/items/npc_weapons/tool/shovel-0.ron new file mode 100644 index 0000000000..8814156245 --- /dev/null +++ b/assets/common/items/npc_weapons/tool/shovel-0.ron @@ -0,0 +1,13 @@ +Item( + name: "Shovel", + description: "It's covered in manure.", + kind: Tool ( + ( + kind: Farming("Shovel0"), + stats: ( + equip_time_millis: 400, + power: 0.50, + ), + ) + ), +) diff --git a/assets/common/items/npc_weapons/tool/shovel-1.ron b/assets/common/items/npc_weapons/tool/shovel-1.ron new file mode 100644 index 0000000000..01c8bbf3c1 --- /dev/null +++ b/assets/common/items/npc_weapons/tool/shovel-1.ron @@ -0,0 +1,13 @@ +Item( + name: "Shovel", + description: "It's been recently cleaned.", + kind: Tool ( + ( + kind: Farming("Shovel1"), + stats: ( + equip_time_millis: 400, + power: 0.50, + ), + ) + ), +) diff --git a/assets/common/recipe_book.ron b/assets/common/recipe_book.ron index 7e4d6b66d1..5c168ab31a 100644 --- a/assets/common/recipe_book.ron +++ b/assets/common/recipe_book.ron @@ -1,5 +1,5 @@ { - "crafting_hammer": (("common.items.crafting_tools.craftsman_hammer", 1),[("common.items.crafting_ing.twigs", 10), ("common.items.crafting_ing.stones", 10)]), + "crafting_hammer": (("common.items.crafting_tools.craftsman_hammer", 1),[("common.items.crafting_ing.twigs", 14), ("common.items.crafting_ing.stones", 12)]), "mortar_pestle": (("common.items.crafting_tools.mortar_pestle", 1), [("common.items.crafting_ing.stones", 6), ("common.items.food.coconut", 2), ("common.items.crafting_tools.craftsman_hammer", 0)]), "velorite_frag": (("common.items.ore.veloritefrag", 2), [("common.items.ore.velorite", 1), ("common.items.crafting_tools.craftsman_hammer", 0)]), "potion_s": (("common.items.consumable.potion_minor", 1), [("common.items.crafting_ing.empty_vial", 1), ("common.items.ore.veloritefrag", 2)]), @@ -11,7 +11,7 @@ "firework_purple": (("common.items.utility.firework_purple", 1), [("common.items.crafting_ing.twigs", 1), ("common.items.crafting_ing.stones", 1), ("common.items.food.coconut", 1), ("common.items.ore.veloritefrag", 1), ("common.items.crafting_tools.mortar_pestle", 0)]), "firework_red": (("common.items.utility.firework_red", 1), [("common.items.crafting_ing.twigs", 1), ("common.items.crafting_ing.stones", 1), ("common.items.food.coconut", 1), ("common.items.ore.veloritefrag", 1), ("common.items.crafting_tools.mortar_pestle", 0)]), "firework_yellow": (("common.items.utility.firework_yellow", 1), [("common.items.crafting_ing.twigs", 1), ("common.items.crafting_ing.stones", 1), ("common.items.food.coconut", 1), ("common.items.ore.veloritefrag", 1), ("common.items.crafting_tools.mortar_pestle", 0)]), - "apple_shroom_curry": (("common.items.food.apple_mushroom_curry", 1), [("common.items.food.mushroom", 10), ("common.items.food.coconut", 1), ("common.items.food.apple", 5), ("common.items.crafting_tools.mortar_pestle", 0)]), - "apples_stick": (("common.items.food.apple_stick", 1),[("common.items.crafting_ing.twigs", 1), ("common.items.food.apple", 3)]), - "mushroom_stick": (("common.items.food.mushroom_stick", 1),[("common.items.crafting_ing.twigs", 1), ("common.items.food.mushroom", 5)]), + "apple_shroom_curry": (("common.items.food.apple_mushroom_curry", 1), [("common.items.food.mushroom", 8), ("common.items.food.coconut", 1), ("common.items.food.apple", 4), ("common.items.crafting_tools.mortar_pestle", 0)]), + "apples_stick": (("common.items.food.apple_stick", 1),[("common.items.crafting_ing.twigs", 2), ("common.items.food.apple", 2)]), + "mushroom_stick": (("common.items.food.mushroom_stick", 1),[("common.items.crafting_ing.twigs", 2), ("common.items.food.mushroom", 3)]), } diff --git a/common/src/comp/agent.rs b/common/src/comp/agent.rs index 986ddc57e4..1afc6aa059 100644 --- a/common/src/comp/agent.rs +++ b/common/src/comp/agent.rs @@ -31,7 +31,8 @@ impl Alignment { (Alignment::Enemy, Alignment::Tame) => true, (Alignment::Wild, Alignment::Enemy) => false, (Alignment::Wild, Alignment::Wild) => false, - (Alignment::Npc, Alignment::Wild) => true, + (Alignment::Npc, Alignment::Wild) => false, + (Alignment::Npc, Alignment::Enemy) => true, (_, Alignment::Enemy) => true, (Alignment::Enemy, _) => true, _ => false, diff --git a/common/src/comp/body.rs b/common/src/comp/body.rs index 6661bcc766..fd30c24a20 100644 --- a/common/src/comp/body.rs +++ b/common/src/comp/body.rs @@ -179,111 +179,354 @@ impl Body { } } + #[allow(unreachable_patterns)] pub fn base_health(&self) -> u32 { match self { - Body::Humanoid(_) => 520, - Body::QuadrupedSmall(_) => 440, - Body::QuadrupedMedium(_) => 720, - Body::BirdMedium(_) => 360, - Body::FishMedium(_) => 320, - Body::Dragon(_) => 2560, - Body::BirdSmall(_) => 240, - Body::FishSmall(_) => 200, - Body::BipedLarge(_) => 1440, - Body::Object(_) => 1000, - Body::Golem(_) => 1680, - Body::Critter(_) => 320, - Body::QuadrupedLow(_) => 640, + Body::Humanoid(_) => 400, + Body::QuadrupedSmall(quadruped_small) => match quadruped_small.species { + quadruped_small::Species::Boar => 180, + quadruped_small::Species::Batfox => 100, + quadruped_small::Species::Dodarock => 320, + quadruped_small::Species::Holladon => 250, + quadruped_small::Species::Hyena => 150, + quadruped_small::Species::Truffler => 180, + _ => 80, + }, + Body::QuadrupedMedium(quadruped_medium) => match quadruped_medium.species { + quadruped_medium::Species::Grolgar => 300, + quadruped_medium::Species::Saber => 200, + quadruped_medium::Species::Tiger => 200, + quadruped_medium::Species::Tuskram => 300, + quadruped_medium::Species::Lion => 400, + quadruped_medium::Species::Tarasque => 600, + quadruped_medium::Species::Wolf => 200, + quadruped_medium::Species::Frostfang => 400, + quadruped_medium::Species::Mouflon => 300, + quadruped_medium::Species::Catoblepas => 500, + quadruped_medium::Species::Bonerattler => 300, + _ => 200, + }, + Body::BirdMedium(bird_medium) => match bird_medium.species { + bird_medium::Species::Chicken => 50, + bird_medium::Species::Duck => 50, + bird_medium::Species::Goose => 60, + bird_medium::Species::Parrot => 60, + bird_medium::Species::Peacock => 55, + bird_medium::Species::Cockatrice => 110, + bird_medium::Species::Eagle => 110, + _ => 100, + }, + Body::FishMedium(_) => 50, + Body::Dragon(dragon) => match dragon.species { + _ => 5000, + }, + Body::BirdSmall(_) => 50, + Body::FishSmall(_) => 20, + Body::BipedLarge(biped_large) => match biped_large.species { + biped_large::Species::Ogre => 700, + biped_large::Species::Cyclops => 800, + biped_large::Species::Wendigo => 800, + biped_large::Species::Troll => 600, + biped_large::Species::Dullahan => 1200, + _ => 1000, + }, + Body::Object(_) => 10000, + Body::Golem(golem) => match golem.species { + _ => 1500, + }, + Body::Critter(critter) => match critter.species { + _ => 50, + }, + Body::QuadrupedLow(quadruped_low) => match quadruped_low.species { + quadruped_low::Species::Crocodile => 200, + quadruped_low::Species::Alligator => 200, + quadruped_low::Species::Salamander => 100, + quadruped_low::Species::Monitor => 80, + quadruped_low::Species::Asp => 80, + quadruped_low::Species::Tortoise => 200, + quadruped_low::Species::Rocksnapper => 500, + quadruped_low::Species::Pangolin => 60, + quadruped_low::Species::Maneater => 250, + _ => 200, + }, } } + #[allow(unreachable_patterns)] pub fn base_health_increase(&self) -> u32 { match self { Body::Humanoid(_) => 50, - Body::QuadrupedSmall(_) => 40, - Body::QuadrupedMedium(_) => 70, - Body::BirdMedium(_) => 40, - Body::FishMedium(_) => 30, - Body::Dragon(_) => 260, - Body::BirdSmall(_) => 20, - Body::FishSmall(_) => 20, - Body::BipedLarge(_) => 140, - Body::Object(_) => 0, - Body::Golem(_) => 170, - Body::Critter(_) => 30, - Body::QuadrupedLow(_) => 60, + Body::QuadrupedSmall(quadruped_small) => match quadruped_small.species { + quadruped_small::Species::Boar => 20, + quadruped_small::Species::Batfox => 10, + quadruped_small::Species::Dodarock => 30, + quadruped_small::Species::Holladon => 30, + quadruped_small::Species::Hyena => 20, + quadruped_small::Species::Truffler => 20, + _ => 10, + }, + Body::QuadrupedMedium(quadruped_medium) => match quadruped_medium.species { + quadruped_medium::Species::Grolgar => 30, + quadruped_medium::Species::Saber => 20, + quadruped_medium::Species::Tiger => 20, + quadruped_medium::Species::Tuskram => 30, + quadruped_medium::Species::Lion => 40, + quadruped_medium::Species::Tarasque => 60, + quadruped_medium::Species::Wolf => 20, + quadruped_medium::Species::Frostfang => 40, + quadruped_medium::Species::Mouflon => 30, + quadruped_medium::Species::Catoblepas => 50, + quadruped_medium::Species::Bonerattler => 30, + _ => 20, + }, + Body::BirdMedium(bird_medium) => match bird_medium.species { + bird_medium::Species::Chicken => 10, + bird_medium::Species::Duck => 10, + bird_medium::Species::Goose => 10, + bird_medium::Species::Parrot => 10, + bird_medium::Species::Peacock => 10, + bird_medium::Species::Cockatrice => 10, + bird_medium::Species::Eagle => 10, + _ => 10, + }, + Body::FishMedium(_) => 10, + Body::Dragon(dragon) => match dragon.species { + _ => 500, + }, + Body::BirdSmall(_) => 10, + Body::FishSmall(_) => 10, + Body::BipedLarge(biped_large) => match biped_large.species { + biped_large::Species::Ogre => 70, + biped_large::Species::Cyclops => 80, + biped_large::Species::Wendigo => 80, + biped_large::Species::Troll => 60, + biped_large::Species::Dullahan => 120, + _ => 100, + }, + Body::Object(_) => 10, + Body::Golem(golem) => match golem.species { + _ => 150, + }, + Body::Critter(critter) => match critter.species { + _ => 10, + }, + Body::QuadrupedLow(quadruped_low) => match quadruped_low.species { + quadruped_low::Species::Crocodile => 20, + quadruped_low::Species::Alligator => 20, + quadruped_low::Species::Salamander => 10, + quadruped_low::Species::Monitor => 10, + quadruped_low::Species::Asp => 10, + quadruped_low::Species::Tortoise => 20, + quadruped_low::Species::Rocksnapper => 50, + quadruped_low::Species::Pangolin => 10, + quadruped_low::Species::Maneater => 30, + _ => 20, + }, } } + #[allow(unreachable_patterns)] pub fn base_exp(&self) -> u32 { match self { - Body::Humanoid(_) => 15, - Body::QuadrupedSmall(_) => 12, - Body::QuadrupedMedium(_) => 28, - Body::BirdMedium(_) => 10, - Body::FishMedium(_) => 8, - Body::Dragon(_) => 160, - Body::BirdSmall(_) => 5, - Body::FishSmall(_) => 4, - Body::BipedLarge(_) => 75, - Body::Object(_) => 0, - Body::Golem(_) => 75, - Body::Critter(_) => 8, - Body::QuadrupedLow(_) => 24, + Body::Humanoid(_) => 5, + Body::QuadrupedSmall(quadruped_small) => match quadruped_small.species { + quadruped_small::Species::Boar => 6, + quadruped_small::Species::Batfox => 6, + quadruped_small::Species::Dodarock => 6, + quadruped_small::Species::Holladon => 8, + quadruped_small::Species::Hyena => 6, + quadruped_small::Species::Truffler => 6, + _ => 4, + }, + Body::QuadrupedMedium(quadruped_medium) => match quadruped_medium.species { + quadruped_medium::Species::Grolgar => 10, + quadruped_medium::Species::Saber => 8, + quadruped_medium::Species::Tiger => 8, + quadruped_medium::Species::Tuskram => 9, + quadruped_medium::Species::Lion => 10, + quadruped_medium::Species::Tarasque => 16, + quadruped_medium::Species::Wolf => 8, + quadruped_medium::Species::Frostfang => 9, + quadruped_medium::Species::Mouflon => 7, + quadruped_medium::Species::Catoblepas => 10, + quadruped_medium::Species::Bonerattler => 10, + _ => 6, + }, + Body::BirdMedium(bird_medium) => match bird_medium.species { + bird_medium::Species::Chicken => 2, + bird_medium::Species::Duck => 2, + bird_medium::Species::Goose => 4, + bird_medium::Species::Parrot => 4, + bird_medium::Species::Peacock => 5, + _ => 8, + }, + Body::FishMedium(_) => 2, + Body::Dragon(dragon) => match dragon.species { + _ => 1000, + }, + Body::BirdSmall(_) => 2, + Body::FishSmall(_) => 2, + Body::BipedLarge(biped_large) => match biped_large.species { + biped_large::Species::Ogre => 60, + biped_large::Species::Cyclops => 70, + biped_large::Species::Wendigo => 70, + biped_large::Species::Troll => 50, + biped_large::Species::Dullahan => 100, + _ => 100, + }, + Body::Object(_) => 1, + Body::Golem(golem) => match golem.species { + _ => 75, + }, + Body::Critter(critter) => match critter.species { + _ => 2, + }, + Body::QuadrupedLow(quadruped_low) => match quadruped_low.species { + quadruped_low::Species::Crocodile => 10, + quadruped_low::Species::Alligator => 10, + quadruped_low::Species::Salamander => 6, + quadruped_low::Species::Monitor => 4, + quadruped_low::Species::Asp => 4, + quadruped_low::Species::Tortoise => 6, + quadruped_low::Species::Rocksnapper => 12, + quadruped_low::Species::Pangolin => 3, + quadruped_low::Species::Maneater => 14, + _ => 10, + }, } } + #[allow(unreachable_patterns)] pub fn base_exp_increase(&self) -> u32 { match self { - Body::Humanoid(_) => 3, - Body::QuadrupedSmall(_) => 2, - Body::QuadrupedMedium(_) => 6, - Body::BirdMedium(_) => 2, - Body::FishMedium(_) => 2, - Body::Dragon(_) => 32, + Body::Humanoid(_) => 2, + Body::QuadrupedSmall(quadruped_small) => match quadruped_small.species { + _ => 1, + }, + Body::QuadrupedMedium(quadruped_medium) => match quadruped_medium.species { + _ => 1, + }, + Body::BirdMedium(bird_medium) => match bird_medium.species { + _ => 1, + }, + Body::FishMedium(_) => 1, + Body::Dragon(dragon) => match dragon.species { + _ => 32, + }, Body::BirdSmall(_) => 1, Body::FishSmall(_) => 1, - Body::BipedLarge(_) => 15, + Body::BipedLarge(biped_large) => match biped_large.species { + _ => 5, + }, Body::Object(_) => 0, - Body::Golem(_) => 15, - Body::Critter(_) => 2, - Body::QuadrupedLow(_) => 5, + Body::Golem(golem) => match golem.species { + _ => 10, + }, + Body::Critter(critter) => match critter.species { + _ => 1, + }, + Body::QuadrupedLow(quadruped_low) => match quadruped_low.species { + _ => 1, + }, } } + #[allow(unreachable_patterns)] pub fn base_dmg(&self) -> u32 { match self { - Body::Humanoid(_) => 60, - Body::QuadrupedSmall(_) => 80, - Body::QuadrupedMedium(_) => 120, - Body::BirdMedium(_) => 70, - Body::FishMedium(_) => 60, - Body::Dragon(_) => 900, - Body::BirdSmall(_) => 50, - Body::FishSmall(_) => 30, - Body::BipedLarge(_) => 360, + Body::Humanoid(_) => 50, + Body::QuadrupedSmall(quadruped_small) => match quadruped_small.species { + quadruped_small::Species::Dodarock => 30, + quadruped_small::Species::Hyena => 40, + _ => 20, + }, + Body::QuadrupedMedium(quadruped_medium) => match quadruped_medium.species { + quadruped_medium::Species::Grolgar => 50, + quadruped_medium::Species::Lion => 60, + quadruped_medium::Species::Tarasque => 70, + quadruped_medium::Species::Mouflon => 30, + quadruped_medium::Species::Catoblepas => 20, + quadruped_medium::Species::Bonerattler => 50, + _ => 40, + }, + Body::BirdMedium(bird_medium) => match bird_medium.species { + bird_medium::Species::Chicken => 10, + bird_medium::Species::Duck => 10, + bird_medium::Species::Goose => 10, + bird_medium::Species::Parrot => 20, + bird_medium::Species::Peacock => 40, + bird_medium::Species::Cockatrice => 60, + bird_medium::Species::Eagle => 60, + _ => 30, + }, + Body::FishMedium(_) => 10, + Body::Dragon(dragon) => match dragon.species { + _ => 5000, + }, + Body::BirdSmall(_) => 10, + Body::FishSmall(_) => 10, + Body::BipedLarge(biped_large) => match biped_large.species { + biped_large::Species::Ogre => 60, + biped_large::Species::Cyclops => 60, + biped_large::Species::Wendigo => 60, + biped_large::Species::Troll => 60, + biped_large::Species::Dullahan => 80, + _ => 60, + }, Body::Object(_) => 0, - Body::Golem(_) => 360, - Body::Critter(_) => 70, - Body::QuadrupedLow(_) => 110, + Body::Golem(golem) => match golem.species { + _ => 250, + }, + Body::Critter(critter) => match critter.species { + _ => 10, + }, + Body::QuadrupedLow(quadruped_low) => match quadruped_low.species { + quadruped_low::Species::Crocodile => 50, + quadruped_low::Species::Alligator => 50, + quadruped_low::Species::Salamander => 30, + quadruped_low::Species::Monitor => 30, + quadruped_low::Species::Asp => 35, + quadruped_low::Species::Tortoise => 10, + quadruped_low::Species::Rocksnapper => 80, + quadruped_low::Species::Pangolin => 10, + quadruped_low::Species::Maneater => 40, + _ => 20, + }, } } + #[allow(unreachable_patterns)] pub fn base_range(&self) -> f32 { match self { Body::Humanoid(_) => 5.0, - Body::QuadrupedSmall(_) => 4.5, - Body::QuadrupedMedium(_) => 5.5, - Body::BirdMedium(_) => 3.5, + Body::QuadrupedSmall(quadruped_small) => match quadruped_small.species { + _ => 4.5, + }, + Body::QuadrupedMedium(quadruped_medium) => match quadruped_medium.species { + _ => 5.5, + }, + Body::BirdMedium(bird_medium) => match bird_medium.species { + _ => 3.5, + }, Body::FishMedium(_) => 3.5, - Body::Dragon(_) => 12.5, + Body::Dragon(dragon) => match dragon.species { + _ => 12.5, + }, Body::BirdSmall(_) => 3.0, Body::FishSmall(_) => 3.0, - Body::BipedLarge(_) => 10.0, + Body::BipedLarge(biped_large) => match biped_large.species { + _ => 10.0, + }, Body::Object(_) => 3.0, - Body::Golem(_) => 7.5, - Body::Critter(_) => 3.0, - Body::QuadrupedLow(_) => 4.5, + Body::Golem(golem) => match golem.species { + _ => 7.5, + }, + Body::Critter(critter) => match critter.species { + _ => 3.0, + }, + Body::QuadrupedLow(quadruped_low) => match quadruped_low.species { + _ => 4.5, + }, } } } diff --git a/common/src/sys/agent.rs b/common/src/sys/agent.rs index a2fed71eb3..16e940f7f9 100644 --- a/common/src/sys/agent.rs +++ b/common/src/sys/agent.rs @@ -332,7 +332,8 @@ impl<'a> System<'a> for Sys { inputs.move_dir = Vec2::from(bearing) .try_normalized() .unwrap_or(Vec2::zero()) - * speed; + * speed + * 0.6; //Let small/slow animals flee slower than the player inputs.jump.set_state(bearing.z > 1.5); inputs.swimup.set_state(bearing.z > 0.5); inputs.swimdown.set_state(bearing.z < 0.5); diff --git a/server/src/sys/terrain.rs b/server/src/sys/terrain.rs index 65277a7d9a..31a197d1c8 100644 --- a/server/src/sys/terrain.rs +++ b/server/src/sys/terrain.rs @@ -194,25 +194,25 @@ impl<'a> System<'a> for Sys { active_item, second_item: None, shoulder: Some(assets::load_expect_cloned( - "common.items.armor.shoulder.cultist_shoulder_purple", + "common.items.npc_armor.shoulder.cultist_shoulder_purple", )), chest: Some(assets::load_expect_cloned( - "common.items.armor.chest.cultist_chest_purple", + "common.items.npc_armor.chest.cultist_chest_purple", )), belt: Some(assets::load_expect_cloned( - "common.items.armor.belt.cultist_belt", + "common.items.npc_armor.belt.cultist_belt", )), hand: Some(assets::load_expect_cloned( - "common.items.armor.hand.cultist_hands_purple", + "common.items.npc_armor.hand.cultist_hands_purple", )), pants: Some(assets::load_expect_cloned( - "common.items.armor.pants.cultist_legs_purple", + "common.items.npc_armor.pants.cultist_legs_purple", )), foot: Some(assets::load_expect_cloned( - "common.items.armor.foot.cultist_boots", + "common.items.npc_armor.foot.cultist_boots", )), back: Some(assets::load_expect_cloned( - "common.items.armor.back.dungeon_purple-0", + "common.items.npc_armor.back.dungeon_purple-0", )), ring: None, neck: None, @@ -223,6 +223,11 @@ impl<'a> System<'a> for Sys { _ => LoadoutBuilder::animal(entity.body).build(), }; + loadout = match body { + comp::Body::Humanoid(_) => loadout, + _ => LoadoutBuilder::animal(entity.body).build(), + }; + let mut scale = entity.scale; // TODO: Remove this and implement scaling or level depending on stuff like @@ -255,7 +260,7 @@ impl<'a> System<'a> for Sys { loadout = comp::Loadout { active_item: Some(comp::ItemConfig { item: assets::load_expect_cloned( - "common.items.weapons.sword.zweihander_sword_0", + "common.items.npc_weapons.sword.zweihander_sword_0", ), ability1: Some(CharacterAbility::BasicMelee { energy_cost: 0, diff --git a/world/src/layer/mod.rs b/world/src/layer/mod.rs index 19b4b0ee6f..4cc286e2ec 100644 --- a/world/src/layer/mod.rs +++ b/world/src/layer/mod.rs @@ -45,50 +45,50 @@ pub fn apply_scatter_to<'a>( // Flowers (BlueFlower, false, |c| { ( - close(c.temp, 0.3, 0.4).min(close(c.humidity, CONFIG.forest_hum, 0.35)) + close(c.temp, 0.1, 0.2).min(close(c.humidity, CONFIG.forest_hum, 0.35)) * MUSH_FACT - * 0.5, - Some((48.0, 0.4)), + * 0.01, + Some((48.0, 0.2)), ) }), (PinkFlower, false, |c| { ( - close(c.temp, 0.3, 0.4).min(close(c.humidity, CONFIG.forest_hum, 0.35)) + close(c.temp, 0.2, 0.2).min(close(c.humidity, CONFIG.forest_hum, 0.35)) * MUSH_FACT - * 0.5, - Some((48.0, 0.4)), + * 0.01, + Some((48.0, 0.2)), ) }), (PurpleFlower, false, |c| { ( - close(c.temp, 0.3, 0.4).min(close(c.humidity, CONFIG.forest_hum, 0.35)) + close(c.temp, 0.3, 0.2).min(close(c.humidity, CONFIG.forest_hum, 0.35)) * MUSH_FACT - * 0.5, - Some((48.0, 0.4)), + * 0.01, + Some((48.0, 0.2)), ) }), (RedFlower, false, |c| { ( - close(c.temp, 0.3, 0.4).min(close(c.humidity, CONFIG.forest_hum, 0.35)) + close(c.temp, 0.5, 0.2).min(close(c.humidity, CONFIG.forest_hum, 0.35)) * MUSH_FACT - * 0.5, - Some((48.0, 0.4)), + * 0.01, + Some((48.0, 0.2)), ) }), (WhiteFlower, false, |c| { ( - close(c.temp, 0.3, 0.4).min(close(c.humidity, CONFIG.forest_hum, 0.35)) + close(c.temp, 0.0, 0.3).min(close(c.humidity, CONFIG.forest_hum, 0.35)) * MUSH_FACT - * 0.5, - Some((48.0, 0.4)), + * 0.01, + Some((48.0, 0.2)), ) }), (YellowFlower, false, |c| { ( - close(c.temp, 0.3, 0.4).min(close(c.humidity, CONFIG.forest_hum, 0.35)) + close(c.temp, 0.3, 0.2).min(close(c.humidity, CONFIG.forest_hum, 0.35)) * MUSH_FACT - * 0.5, - Some((48.0, 0.4)), + * 0.01, + Some((48.0, 0.2)), ) }), // Herbs and Spices @@ -151,19 +151,19 @@ pub fn apply_scatter_to<'a>( }), (MediumGrass, false, |c| { ( - close(c.temp, 0.0, 0.6).min(close(c.humidity, CONFIG.forest_hum, 0.35)) * 0.05, + close(c.temp, 0.0, 0.5).min(close(c.humidity, CONFIG.forest_hum, 0.35)) * 0.05, Some((48.0, 0.4)), ) }), (LongGrass, false, |c| { ( - close(c.temp, 0.4, 0.4).min(close(c.humidity, CONFIG.forest_hum, 0.2)) * 0.05, + close(c.temp, 0.4, 0.5).min(close(c.humidity, CONFIG.forest_hum, 0.2)) * 0.05, Some((48.0, 0.5)), ) }), (WheatGreen, false, |c| { ( - close(c.temp, 0.4, 0.4).min(close(c.humidity, CONFIG.forest_hum, 0.1)) + close(c.temp, 0.4, 0.2).min(close(c.humidity, CONFIG.forest_hum, 0.1)) * MUSH_FACT * 0.001, None, diff --git a/world/src/lib.rs b/world/src/lib.rs index e4ab5cdd58..9d32ab1442 100644 --- a/world/src/lib.rs +++ b/world/src/lib.rs @@ -242,12 +242,23 @@ impl World { } else { false }; + let quadmed = comp::Body::QuadrupedMedium(quadruped_medium::Body::random()); // Not all of them are hostile so we have to do the rng here + let quadlow = comp::Body::QuadrupedLow(quadruped_low::Body::random()); // Not all of them are hostile so we have to do the rng here let entity = EntityInfo::at(gen_entity_pos()) .do_if(is_giant, |e| e.into_giant()) .with_body(match rng.gen_range(0, 5) { 0 => { - is_hostile = true; - comp::Body::QuadrupedMedium(quadruped_medium::Body::random()) + match quadmed { + comp::Body::QuadrupedMedium(quadruped_medium) => { + match quadruped_medium.species { + quadruped_medium::Species::Catoblepas => is_hostile = false, + quadruped_medium::Species::Mouflon => is_hostile = false, + _ => is_hostile = true, + } + }, + _ => is_hostile = true, + }; + quadmed }, 1 => { is_hostile = false; @@ -258,8 +269,18 @@ impl World { comp::Body::Critter(critter::Body::random()) }, 3 => { - is_hostile = false; - comp::Body::QuadrupedLow(quadruped_low::Body::random()) + match quadlow { + comp::Body::QuadrupedLow(quadruped_low) => { + match quadruped_low.species { + quadruped_low::Species::Crocodile => is_hostile = true, + quadruped_low::Species::Alligator => is_hostile = true, + quadruped_low::Species::Maneater => is_hostile = true, + _ => is_hostile = false, + } + }, + _ => is_hostile = false, + }; + quadlow }, _ => { is_hostile = false; diff --git a/world/src/site/dungeon/mod.rs b/world/src/site/dungeon/mod.rs index 92fff69a80..732cf06759 100644 --- a/world/src/site/dungeon/mod.rs +++ b/world/src/site/dungeon/mod.rs @@ -472,12 +472,12 @@ impl Floor { .with_body(comp::Body::Humanoid(comp::humanoid::Body::random())) .with_automatic_name() .with_main_tool(assets::load_expect_cloned(match rng.gen_range(0, 6) { - 0 => "common.items.weapons.axe.starter_axe", - 1 => "common.items.weapons.sword.cultist_purp_2h-0", - 2 => "common.items.weapons.sword.short_sword_0", - 3 => "common.items.weapons.hammer.cultist_purp_2h-0", - 4 => "common.items.weapons.staff.cultist_staff", - _ => "common.items.weapons.bow.starter_bow", + 0 => "common.items.npc_weapons.axe.malachite_axe-0", + 1 => "common.items.npc_weapons.sword.cultist_purp_2h-0", + 2 => "common.items.npc_weapons.sword.cultist_purp_2h-0", + 3 => "common.items.npc_weapons.hammer.cultist_purp_2h-0", + 4 => "common.items.npc_weapons.staff.cultist_staff", + _ => "common.items.npc_weapons.bow.horn_longbow-0", })); supplement.add_entity(entity); @@ -509,8 +509,10 @@ impl Floor { )) .with_main_tool(assets::load_expect_cloned( match rng.gen_range(0, 1) { - //Add more possible cult leader weapons here - _ => "common.items.weapons.sword.cultist_purp_2h-0", + //Add more possible cult leader npc_weapons here + _ => { + "common.items.npc_weapons.sword.cultist_purp_2h_boss-0" + }, }, )) .with_loot_drop(match rng.gen_range(0, 20) { diff --git a/world/src/site/settlement/mod.rs b/world/src/site/settlement/mod.rs index 8f6dcf6ed9..196f574bad 100644 --- a/world/src/site/settlement/mod.rs +++ b/world/src/site/settlement/mod.rs @@ -906,14 +906,14 @@ impl Settlement { .do_if(is_human && rng.gen(), |entity| { entity.with_main_tool(assets::load_expect_cloned( match rng.gen_range(0, 7) { - 0 => "common.items.weapons.tool.broom", - 1 => "common.items.weapons.tool.hoe", - 2 => "common.items.weapons.tool.pickaxe", - 3 => "common.items.weapons.tool.pitchfork", - 4 => "common.items.weapons.tool.rake", - 5 => "common.items.weapons.tool.shovel-0", - _ => "common.items.weapons.tool.shovel-1", - //_ => "common.items.weapons.bow.starter_bow", TODO: Re-Add this when we have a better way of distributing weapons here + 0 => "common.items.npc_weapons.tool.broom", + 1 => "common.items.npc_weapons.tool.hoe", + 2 => "common.items.npc_weapons.tool.pickaxe", + 3 => "common.items.npc_weapons.tool.pitchfork", + 4 => "common.items.npc_weapons.tool.rake", + 5 => "common.items.npc_weapons.tool.shovel-0", + _ => "common.items.npc_weapons.tool.shovel-1", + //_ => "common.items.npc_weapons.bow.starter_bow", TODO: Re-Add this when we have a better way of distributing npc_weapons here }, )) }) From 55d126861f4a2af9a16c6cf2f543307e5e6b0076 Mon Sep 17 00:00:00 2001 From: Monty Marz Date: Tue, 18 Aug 2020 23:32:34 +0200 Subject: [PATCH 08/12] fix tooltips in char selection, more balancing fix talking animals fix critter exp, stronger villagers biped large balancing more villager balancing, mushroom spawning rate more balancing fix rebase multiple loottables Add tarasque and bonerattler armour Added loot tables for different groups of weapons and armor based off relative strength. Added loot table for cultist boss. Added loot tables for consumables and food. Trimmed down default loot table. remove male and female sign from char creation chest loot tables fix loot tables lootable crates lantern keybinding display more loot tables loot table changes fixed loot tables fix typo more grass rebase fix, better lantern re-add sprite rotation for grass crafting window alignment fix, new streetlamps, new shopsigns, new healing staff height change --- .../common/items/armor/belt/bonerattler.ron | 12 + assets/common/items/armor/belt/tarasque.ron | 12 + .../common/items/armor/chest/bonerattler.ron | 12 + assets/common/items/armor/chest/tarasque.ron | 12 + .../common/items/armor/foot/bonerattler.ron | 12 + assets/common/items/armor/foot/tarasque.ron | 12 + .../common/items/armor/hand/bonerattler.ron | 12 + assets/common/items/armor/hand/tarasque.ron | 12 + assets/common/items/armor/neck/neck_0.ron | 2 +- assets/common/items/armor/neck/neck_1.ron | 2 +- .../common/items/armor/pants/bonerattler.ron | 12 + assets/common/items/armor/pants/tarasque.ron | 12 + .../items/armor/shoulder/bonerattler.ron | 12 + .../common/items/armor/shoulder/tarasque.ron | 12 + .../items/debug/cultist_purp_2h_boss-0.ron | 13 + assets/common/items/lantern/black_0.ron | 2 +- .../items/npc_armor/chest/worker_green_0.ron | 12 + .../items/npc_armor/chest/worker_green_1.ron | 12 + .../items/npc_armor/chest/worker_orange_0.ron | 12 + .../items/npc_armor/chest/worker_orange_1.ron | 12 + .../items/npc_armor/chest/worker_purple_0.ron | 12 + .../items/npc_armor/chest/worker_purple_1.ron | 12 + .../items/npc_armor/chest/worker_red_0.ron | 12 + .../items/npc_armor/chest/worker_red_1.ron | 12 + .../items/npc_armor/chest/worker_yellow_0.ron | 12 + .../items/npc_armor/chest/worker_yellow_1.ron | 12 + .../common/items/npc_weapons/tool/broom.ron | 2 +- .../items/npc_weapons/tool/fishing_rod.ron | 2 +- assets/common/items/npc_weapons/tool/hoe.ron | 2 +- .../common/items/npc_weapons/tool/pickaxe.ron | 2 +- .../items/npc_weapons/tool/pitchfork.ron | 2 +- assets/common/items/npc_weapons/tool/rake.ron | 2 +- .../items/npc_weapons/tool/shovel-0.ron | 2 +- .../items/npc_weapons/tool/shovel-1.ron | 2 +- .../weapons/staff/sceptre_velorite_0.ron | 13 + assets/common/loot_table.ron | 234 ------------------ assets/common/loot_tables/loot_table.ron | 4 + .../loot_tables/loot_table_animal_parts.ron | 3 + .../loot_tables/loot_table_armor_cloth.ron | 38 +++ .../loot_tables/loot_table_armor_heavy.ron | 21 ++ .../loot_tables/loot_table_armor_light.ron | 27 ++ .../loot_tables/loot_table_armor_misc.ron | 10 + .../loot_tables/loot_table_armor_nature.ron | 32 +++ .../loot_table_boss_cultist-leader.ron | 18 ++ .../loot_tables/loot_table_consumables.ron | 14 ++ .../loot_tables/loot_table_crafting.ron | 7 + assets/common/loot_tables/loot_table_food.ron | 11 + .../loot_tables/loot_table_humanoids.ron | 25 ++ .../common/loot_tables/loot_table_rocks.ron | 6 + .../loot_tables/loot_table_villager.ron | 37 +++ .../loot_tables/loot_table_weapon_common.ron | 43 ++++ .../loot_tables/loot_table_weapon_rare.ron | 33 +++ .../loot_table_weapon_uncommon.ron | 68 +++++ assets/common/recipe_book.ron | 1 + assets/voxygen/element/frames/banner_bot.png | 3 + assets/voxygen/element/icons/female.png | 3 - .../voxygen/element/icons/item_leather1.png | 3 + assets/voxygen/element/icons/male.png | 3 - assets/voxygen/i18n/de_DE.ron | 3 +- assets/voxygen/i18n/en.ron | 3 +- assets/voxygen/item_image_manifest.ron | 54 ++++ .../voxygen/voxel/armor/belt/bonerattler.vox | 3 + assets/voxygen/voxel/armor/belt/tarasque.vox | 3 + .../voxygen/voxel/armor/chest/bonerattler.vox | 3 + assets/voxygen/voxel/armor/chest/tarasque.vox | 3 + .../voxygen/voxel/armor/foot/bonerattler.vox | 3 + assets/voxygen/voxel/armor/foot/tarasque.vox | 3 + .../voxel/armor/hand/bonerattler_left.vox | 3 + .../voxel/armor/hand/bonerattler_right.vox | 3 + .../voxel/armor/hand/tarasque_left.vox | 3 + .../voxel/armor/hand/tarasque_right.vox | 3 + .../voxygen/voxel/armor/pants/bonerattler.vox | 3 + assets/voxygen/voxel/armor/pants/tarasque.vox | 3 + .../voxel/armor/shoulder/bonerattler_left.vox | 3 + .../armor/shoulder/bonerattler_right.vox | 3 + .../voxel/armor/shoulder/tarasque_left.vox | 3 + .../voxel/armor/shoulder/tarasque_right.vox | 3 + .../voxel/humanoid_armor_belt_manifest.ron | 8 + .../voxel/humanoid_armor_chest_manifest.ron | 8 + .../voxel/humanoid_armor_foot_manifest.ron | 8 + .../voxel/humanoid_armor_hand_manifest.ron | 20 ++ .../voxel/humanoid_armor_pants_manifest.ron | 8 + .../humanoid_armor_shoulder_manifest.ron | 24 +- .../voxel/humanoid_main_weapon_manifest.ron | 6 +- .../voxel/sprite/furniture/hanging_sign-0.vox | 4 +- .../voxygen/voxel/sprite/misc/street_lamp.vox | 4 +- .../voxygen/voxel/weapon/staff/ore-nature.vox | 3 + .../voxel/weapon/staff/wood-nature.vox | 4 +- common/src/comp/body.rs | 84 +++---- common/src/comp/inventory/item/mod.rs | 24 +- common/src/comp/inventory/item/tool.rs | 23 +- common/src/lottery.rs | 2 +- common/src/terrain/block.rs | 4 +- server/src/events/entity_manipulation.rs | 176 ++++++++++++- server/src/sys/terrain.rs | 32 ++- voxygen/src/hud/crafting.rs | 19 +- voxygen/src/hud/mod.rs | 59 ++++- voxygen/src/hud/overhead.rs | 6 +- voxygen/src/hud/skillbar.rs | 8 + voxygen/src/menu/char_selection/ui.rs | 86 ++++--- voxygen/src/scene/terrain.rs | 2 +- voxygen/src/session.rs | 2 +- world/src/layer/mod.rs | 55 ++-- world/src/lib.rs | 1 + world/src/site/dungeon/mod.rs | 52 +--- .../settlement/building/archetype/house.rs | 9 +- 106 files changed, 1338 insertions(+), 467 deletions(-) create mode 100644 assets/common/items/armor/belt/bonerattler.ron create mode 100644 assets/common/items/armor/belt/tarasque.ron create mode 100644 assets/common/items/armor/chest/bonerattler.ron create mode 100644 assets/common/items/armor/chest/tarasque.ron create mode 100644 assets/common/items/armor/foot/bonerattler.ron create mode 100644 assets/common/items/armor/foot/tarasque.ron create mode 100644 assets/common/items/armor/hand/bonerattler.ron create mode 100644 assets/common/items/armor/hand/tarasque.ron create mode 100644 assets/common/items/armor/pants/bonerattler.ron create mode 100644 assets/common/items/armor/pants/tarasque.ron create mode 100644 assets/common/items/armor/shoulder/bonerattler.ron create mode 100644 assets/common/items/armor/shoulder/tarasque.ron create mode 100644 assets/common/items/debug/cultist_purp_2h_boss-0.ron create mode 100644 assets/common/items/npc_armor/chest/worker_green_0.ron create mode 100644 assets/common/items/npc_armor/chest/worker_green_1.ron create mode 100644 assets/common/items/npc_armor/chest/worker_orange_0.ron create mode 100644 assets/common/items/npc_armor/chest/worker_orange_1.ron create mode 100644 assets/common/items/npc_armor/chest/worker_purple_0.ron create mode 100644 assets/common/items/npc_armor/chest/worker_purple_1.ron create mode 100644 assets/common/items/npc_armor/chest/worker_red_0.ron create mode 100644 assets/common/items/npc_armor/chest/worker_red_1.ron create mode 100644 assets/common/items/npc_armor/chest/worker_yellow_0.ron create mode 100644 assets/common/items/npc_armor/chest/worker_yellow_1.ron create mode 100644 assets/common/items/weapons/staff/sceptre_velorite_0.ron delete mode 100644 assets/common/loot_table.ron create mode 100644 assets/common/loot_tables/loot_table.ron create mode 100644 assets/common/loot_tables/loot_table_animal_parts.ron create mode 100644 assets/common/loot_tables/loot_table_armor_cloth.ron create mode 100644 assets/common/loot_tables/loot_table_armor_heavy.ron create mode 100644 assets/common/loot_tables/loot_table_armor_light.ron create mode 100644 assets/common/loot_tables/loot_table_armor_misc.ron create mode 100644 assets/common/loot_tables/loot_table_armor_nature.ron create mode 100644 assets/common/loot_tables/loot_table_boss_cultist-leader.ron create mode 100644 assets/common/loot_tables/loot_table_consumables.ron create mode 100644 assets/common/loot_tables/loot_table_crafting.ron create mode 100644 assets/common/loot_tables/loot_table_food.ron create mode 100644 assets/common/loot_tables/loot_table_humanoids.ron create mode 100644 assets/common/loot_tables/loot_table_rocks.ron create mode 100644 assets/common/loot_tables/loot_table_villager.ron create mode 100644 assets/common/loot_tables/loot_table_weapon_common.ron create mode 100644 assets/common/loot_tables/loot_table_weapon_rare.ron create mode 100644 assets/common/loot_tables/loot_table_weapon_uncommon.ron create mode 100644 assets/voxygen/element/frames/banner_bot.png delete mode 100644 assets/voxygen/element/icons/female.png create mode 100644 assets/voxygen/element/icons/item_leather1.png delete mode 100644 assets/voxygen/element/icons/male.png create mode 100644 assets/voxygen/voxel/armor/belt/bonerattler.vox create mode 100644 assets/voxygen/voxel/armor/belt/tarasque.vox create mode 100644 assets/voxygen/voxel/armor/chest/bonerattler.vox create mode 100644 assets/voxygen/voxel/armor/chest/tarasque.vox create mode 100644 assets/voxygen/voxel/armor/foot/bonerattler.vox create mode 100644 assets/voxygen/voxel/armor/foot/tarasque.vox create mode 100644 assets/voxygen/voxel/armor/hand/bonerattler_left.vox create mode 100644 assets/voxygen/voxel/armor/hand/bonerattler_right.vox create mode 100644 assets/voxygen/voxel/armor/hand/tarasque_left.vox create mode 100644 assets/voxygen/voxel/armor/hand/tarasque_right.vox create mode 100644 assets/voxygen/voxel/armor/pants/bonerattler.vox create mode 100644 assets/voxygen/voxel/armor/pants/tarasque.vox create mode 100644 assets/voxygen/voxel/armor/shoulder/bonerattler_left.vox create mode 100644 assets/voxygen/voxel/armor/shoulder/bonerattler_right.vox create mode 100644 assets/voxygen/voxel/armor/shoulder/tarasque_left.vox create mode 100644 assets/voxygen/voxel/armor/shoulder/tarasque_right.vox create mode 100644 assets/voxygen/voxel/weapon/staff/ore-nature.vox diff --git a/assets/common/items/armor/belt/bonerattler.ron b/assets/common/items/armor/belt/bonerattler.ron new file mode 100644 index 0000000000..808e808942 --- /dev/null +++ b/assets/common/items/armor/belt/bonerattler.ron @@ -0,0 +1,12 @@ +Item( + name: "Bonerattler Belt", + description: "Made from the strongest bones.", + kind: Armor( + ( + kind: Belt("Bonerattler"), + stats: ( + protection: Normal(0.0), + ), + ) + ), +) diff --git a/assets/common/items/armor/belt/tarasque.ron b/assets/common/items/armor/belt/tarasque.ron new file mode 100644 index 0000000000..848722dd4a --- /dev/null +++ b/assets/common/items/armor/belt/tarasque.ron @@ -0,0 +1,12 @@ +Item( + name: "Tarasque Belt", + description: "As strong as a tarasque shell.", + kind: Armor( + ( + kind: Belt("Tarasque"), + stats: ( + protection: Normal(0.0), + ), + ) + ), +) diff --git a/assets/common/items/armor/chest/bonerattler.ron b/assets/common/items/armor/chest/bonerattler.ron new file mode 100644 index 0000000000..ddc4e00e75 --- /dev/null +++ b/assets/common/items/armor/chest/bonerattler.ron @@ -0,0 +1,12 @@ +Item( + name: "Bonerattler Cuirass", + description: "Made from the strongest bones.", + kind: Armor( + ( + kind: Chest("Bonerattler"), + stats: ( + protection: Normal(25.0), + ), + ) + ), +) \ No newline at end of file diff --git a/assets/common/items/armor/chest/tarasque.ron b/assets/common/items/armor/chest/tarasque.ron new file mode 100644 index 0000000000..ef73a183e7 --- /dev/null +++ b/assets/common/items/armor/chest/tarasque.ron @@ -0,0 +1,12 @@ +Item( + name: "Tarasque Cuirass", + description: "As strong as a tarasque shell.", + kind: Armor( + ( + kind: Chest("Tarasque"), + stats: ( + protection: Normal(25.0), + ), + ) + ), +) \ No newline at end of file diff --git a/assets/common/items/armor/foot/bonerattler.ron b/assets/common/items/armor/foot/bonerattler.ron new file mode 100644 index 0000000000..8226749815 --- /dev/null +++ b/assets/common/items/armor/foot/bonerattler.ron @@ -0,0 +1,12 @@ +Item( + name: "Bonerattler Boots", + description: "Made from the strongest bones.", + kind: Armor( + ( + kind: Foot("Bonerattler"), + stats: ( + protection: Normal(5.0), + ), + ) + ), +) diff --git a/assets/common/items/armor/foot/tarasque.ron b/assets/common/items/armor/foot/tarasque.ron new file mode 100644 index 0000000000..11ad855d63 --- /dev/null +++ b/assets/common/items/armor/foot/tarasque.ron @@ -0,0 +1,12 @@ +Item( + name: "Tarasque Boots", + description: "As strong as a tarasque shell.", + kind: Armor( + ( + kind: Foot("Tarasque"), + stats: ( + protection: Normal(5.0), + ), + ) + ), +) diff --git a/assets/common/items/armor/hand/bonerattler.ron b/assets/common/items/armor/hand/bonerattler.ron new file mode 100644 index 0000000000..46d6816db8 --- /dev/null +++ b/assets/common/items/armor/hand/bonerattler.ron @@ -0,0 +1,12 @@ +Item( + name: "Bonerattler Gauntlets", + description: "Made from the strongest bones.", + kind: Armor( + ( + kind: Hand("Bonerattler"), + stats: ( + protection: Normal(10.0), + ), + ) + ), +) diff --git a/assets/common/items/armor/hand/tarasque.ron b/assets/common/items/armor/hand/tarasque.ron new file mode 100644 index 0000000000..b45f0e558a --- /dev/null +++ b/assets/common/items/armor/hand/tarasque.ron @@ -0,0 +1,12 @@ +Item( + name: "Tarasque Gauntlets", + description: "As strong as a tarasque shell.", + kind: Armor( + ( + kind: Hand("Tarasque"), + stats: ( + protection: Normal(10.0), + ), + ) + ), +) diff --git a/assets/common/items/armor/neck/neck_0.ron b/assets/common/items/armor/neck/neck_0.ron index cf50e006c7..12c315a85a 100644 --- a/assets/common/items/armor/neck/neck_0.ron +++ b/assets/common/items/armor/neck/neck_0.ron @@ -5,7 +5,7 @@ Item( ( kind: Neck("Neck0"), stats: ( - protection: Normal(0.5), + protection: Normal(1.0), ), ) ), diff --git a/assets/common/items/armor/neck/neck_1.ron b/assets/common/items/armor/neck/neck_1.ron index e650268c91..a6b3f8d919 100644 --- a/assets/common/items/armor/neck/neck_1.ron +++ b/assets/common/items/armor/neck/neck_1.ron @@ -5,7 +5,7 @@ Item( ( kind: Neck("Neck1"), stats: ( - protection: Normal(1.0), + protection: Normal(2.0), ), ) ), diff --git a/assets/common/items/armor/pants/bonerattler.ron b/assets/common/items/armor/pants/bonerattler.ron new file mode 100644 index 0000000000..17dcc30fe5 --- /dev/null +++ b/assets/common/items/armor/pants/bonerattler.ron @@ -0,0 +1,12 @@ +Item( + name: "Bonerattler Chausses", + description: "Made from the strongest bones.", + kind: Armor( + ( + kind: Pants("Bonerattler"), + stats: ( + protection: Normal(20.0), + ), + ) + ), +) diff --git a/assets/common/items/armor/pants/tarasque.ron b/assets/common/items/armor/pants/tarasque.ron new file mode 100644 index 0000000000..12e61dc342 --- /dev/null +++ b/assets/common/items/armor/pants/tarasque.ron @@ -0,0 +1,12 @@ +Item( + name: "Tarasque Chausses", + description: "As strong as a tarasque shell.", + kind: Armor( + ( + kind: Pants("Tarasque"), + stats: ( + protection: Normal(20.0), + ), + ) + ), +) diff --git a/assets/common/items/armor/shoulder/bonerattler.ron b/assets/common/items/armor/shoulder/bonerattler.ron new file mode 100644 index 0000000000..892e762b45 --- /dev/null +++ b/assets/common/items/armor/shoulder/bonerattler.ron @@ -0,0 +1,12 @@ +Item( + name: "Bonerattler Shoulder Pad", + description: "Made from the strongest bones.", + kind: Armor( + ( + kind: Shoulder("Bonerattler"), + stats: ( + protection: Normal(15.0), + ), + ) + ), +) diff --git a/assets/common/items/armor/shoulder/tarasque.ron b/assets/common/items/armor/shoulder/tarasque.ron new file mode 100644 index 0000000000..8afbfb9fcf --- /dev/null +++ b/assets/common/items/armor/shoulder/tarasque.ron @@ -0,0 +1,12 @@ +Item( + name: "Tarasque Shoulder Pad", + description: "As strong as a tarasque shell.", + kind: Armor( + ( + kind: Shoulder("Tarasque"), + stats: ( + protection: Normal(15.0), + ), + ) + ), +) diff --git a/assets/common/items/debug/cultist_purp_2h_boss-0.ron b/assets/common/items/debug/cultist_purp_2h_boss-0.ron new file mode 100644 index 0000000000..bdae5745c0 --- /dev/null +++ b/assets/common/items/debug/cultist_purp_2h_boss-0.ron @@ -0,0 +1,13 @@ +Item( + name: "Admin Greatsword", + description: "Shouldn't this be a hammer?", + kind: Tool( + ( + kind: Sword("CultPurp0"), + stats: ( + equip_time_millis: 0, + power: 1000.0, + ), + ) + ), +) diff --git a/assets/common/items/lantern/black_0.ron b/assets/common/items/lantern/black_0.ron index 1b948eca89..f3bb7974e1 100644 --- a/assets/common/items/lantern/black_0.ron +++ b/assets/common/items/lantern/black_0.ron @@ -4,7 +4,7 @@ Item( kind: Lantern( ( kind: "Black0", - color: (r: 255, g: 190, b: 75), + color: (r: 166, g: 100, b: 0), strength_thousandths: 3000, flicker_thousandths: 300, ), diff --git a/assets/common/items/npc_armor/chest/worker_green_0.ron b/assets/common/items/npc_armor/chest/worker_green_0.ron new file mode 100644 index 0000000000..fa343fddb7 --- /dev/null +++ b/assets/common/items/npc_armor/chest/worker_green_0.ron @@ -0,0 +1,12 @@ +Item( + name: "Green Worker Shirt", + description: "Was used by a farmer, until recently.", + kind: Armor( + ( + kind: Chest("WorkerGreen0"), + stats: ( + protection: Normal(80.0), + ), + ) + ), +) diff --git a/assets/common/items/npc_armor/chest/worker_green_1.ron b/assets/common/items/npc_armor/chest/worker_green_1.ron new file mode 100644 index 0000000000..23b84137cf --- /dev/null +++ b/assets/common/items/npc_armor/chest/worker_green_1.ron @@ -0,0 +1,12 @@ +Item( + name: "Green Worker Shirt", + description: "Was used by a farmer, until recently.", + kind: Armor( + ( + kind: Chest("WorkerGreen1"), + stats: ( + protection: Normal(80.0), + ), + ) + ), +) diff --git a/assets/common/items/npc_armor/chest/worker_orange_0.ron b/assets/common/items/npc_armor/chest/worker_orange_0.ron new file mode 100644 index 0000000000..bc07617dcf --- /dev/null +++ b/assets/common/items/npc_armor/chest/worker_orange_0.ron @@ -0,0 +1,12 @@ +Item( + name: "Orange Worker Shirt", + description: "Was used by a farmer, until recently.", + kind: Armor( + ( + kind: Chest("WorkerOrange0"), + stats: ( + protection: Normal(80.0), + ), + ) + ), +) diff --git a/assets/common/items/npc_armor/chest/worker_orange_1.ron b/assets/common/items/npc_armor/chest/worker_orange_1.ron new file mode 100644 index 0000000000..6c605d452c --- /dev/null +++ b/assets/common/items/npc_armor/chest/worker_orange_1.ron @@ -0,0 +1,12 @@ +Item( + name: "Orange Worker Shirt", + description: "Was used by a farmer, until recently.", + kind: Armor( + ( + kind: Chest("WorkerOrange1"), + stats: ( + protection: Normal(80.0), + ), + ) + ), +) diff --git a/assets/common/items/npc_armor/chest/worker_purple_0.ron b/assets/common/items/npc_armor/chest/worker_purple_0.ron new file mode 100644 index 0000000000..6a234e994e --- /dev/null +++ b/assets/common/items/npc_armor/chest/worker_purple_0.ron @@ -0,0 +1,12 @@ +Item( + name: "Purple Worker Shirt", + description: "Was used by a farmer, until recently.", + kind: Armor( + ( + kind: Chest("WorkerPurple0"), + stats: ( + protection: Normal(80.0), + ), + ) + ), +) diff --git a/assets/common/items/npc_armor/chest/worker_purple_1.ron b/assets/common/items/npc_armor/chest/worker_purple_1.ron new file mode 100644 index 0000000000..35bcc56647 --- /dev/null +++ b/assets/common/items/npc_armor/chest/worker_purple_1.ron @@ -0,0 +1,12 @@ +Item( + name: "Purple Worker Shirt", + description: "Was used by a farmer, until recently.", + kind: Armor( + ( + kind: Chest("WorkerPurple1"), + stats: ( + protection: Normal(80.0), + ), + ) + ), +) diff --git a/assets/common/items/npc_armor/chest/worker_red_0.ron b/assets/common/items/npc_armor/chest/worker_red_0.ron new file mode 100644 index 0000000000..bbee3cbc2a --- /dev/null +++ b/assets/common/items/npc_armor/chest/worker_red_0.ron @@ -0,0 +1,12 @@ +Item( + name: "Red Worker Shirt", + description: "Was used by a farmer, until recently.", + kind: Armor( + ( + kind: Chest("WorkerRed0"), + stats: ( + protection: Normal(80.0), + ), + ) + ), +) diff --git a/assets/common/items/npc_armor/chest/worker_red_1.ron b/assets/common/items/npc_armor/chest/worker_red_1.ron new file mode 100644 index 0000000000..4b0966ee51 --- /dev/null +++ b/assets/common/items/npc_armor/chest/worker_red_1.ron @@ -0,0 +1,12 @@ +Item( + name: "Red Worker Shirt", + description: "Was used by a farmer, until recently.", + kind: Armor( + ( + kind: Chest("WorkerRed1"), + stats: ( + protection: Normal(80.0), + ), + ) + ), +) diff --git a/assets/common/items/npc_armor/chest/worker_yellow_0.ron b/assets/common/items/npc_armor/chest/worker_yellow_0.ron new file mode 100644 index 0000000000..d59b94169c --- /dev/null +++ b/assets/common/items/npc_armor/chest/worker_yellow_0.ron @@ -0,0 +1,12 @@ +Item( + name: "Yellow Worker Shirt", + description: "Was used by a farmer, until recently.", + kind: Armor( + ( + kind: Chest("WorkerYellow0"), + stats: ( + protection: Normal(80.0), + ), + ) + ), +) diff --git a/assets/common/items/npc_armor/chest/worker_yellow_1.ron b/assets/common/items/npc_armor/chest/worker_yellow_1.ron new file mode 100644 index 0000000000..d8db355878 --- /dev/null +++ b/assets/common/items/npc_armor/chest/worker_yellow_1.ron @@ -0,0 +1,12 @@ +Item( + name: "Yellow Worker Shirt", + description: "Was used by a farmer, until recently.", + kind: Armor( + ( + kind: Chest("WorkerYellow1"), + stats: ( + protection: Normal(80.0), + ), + ) + ), +) diff --git a/assets/common/items/npc_weapons/tool/broom.ron b/assets/common/items/npc_weapons/tool/broom.ron index 9b62840b7e..dfb46a6da7 100644 --- a/assets/common/items/npc_weapons/tool/broom.ron +++ b/assets/common/items/npc_weapons/tool/broom.ron @@ -6,7 +6,7 @@ Item( kind: Farming("Broom"), stats: ( equip_time_millis: 400, - power: 0.5, + power: 1.5, ), ) ), diff --git a/assets/common/items/npc_weapons/tool/fishing_rod.ron b/assets/common/items/npc_weapons/tool/fishing_rod.ron index bf4b3a05c3..0768f74587 100644 --- a/assets/common/items/npc_weapons/tool/fishing_rod.ron +++ b/assets/common/items/npc_weapons/tool/fishing_rod.ron @@ -6,7 +6,7 @@ Item( kind: Farming("FishingRod0"), stats: ( equip_time_millis: 400, - power: 0.5, + power: 1.5, ), ) ), diff --git a/assets/common/items/npc_weapons/tool/hoe.ron b/assets/common/items/npc_weapons/tool/hoe.ron index 2f0ec0f257..7c66734bbf 100644 --- a/assets/common/items/npc_weapons/tool/hoe.ron +++ b/assets/common/items/npc_weapons/tool/hoe.ron @@ -6,7 +6,7 @@ Item( kind: Farming("Hoe0"), stats: ( equip_time_millis: 400, - power: 0.50, + power: 1.50, ), ) ), diff --git a/assets/common/items/npc_weapons/tool/pickaxe.ron b/assets/common/items/npc_weapons/tool/pickaxe.ron index e9ed64a5e4..303be8c20b 100644 --- a/assets/common/items/npc_weapons/tool/pickaxe.ron +++ b/assets/common/items/npc_weapons/tool/pickaxe.ron @@ -6,7 +6,7 @@ Item( kind: Farming("Pickaxe0"), stats: ( equip_time_millis: 400, - power: 0.50, + power: 1.50, ), ) ), diff --git a/assets/common/items/npc_weapons/tool/pitchfork.ron b/assets/common/items/npc_weapons/tool/pitchfork.ron index effc304483..3ddc68a41b 100644 --- a/assets/common/items/npc_weapons/tool/pitchfork.ron +++ b/assets/common/items/npc_weapons/tool/pitchfork.ron @@ -6,7 +6,7 @@ Item( kind: Farming("Pitchfork"), stats: ( equip_time_millis: 400, - power: 0.50, + power: 1.50, ), ) ), diff --git a/assets/common/items/npc_weapons/tool/rake.ron b/assets/common/items/npc_weapons/tool/rake.ron index 9430056099..774edea21e 100644 --- a/assets/common/items/npc_weapons/tool/rake.ron +++ b/assets/common/items/npc_weapons/tool/rake.ron @@ -6,7 +6,7 @@ Item( kind: Farming("Rake"), stats: ( equip_time_millis: 400, - power: 0.50, + power: 1.50, ), ) ), diff --git a/assets/common/items/npc_weapons/tool/shovel-0.ron b/assets/common/items/npc_weapons/tool/shovel-0.ron index 8814156245..77e7dc26eb 100644 --- a/assets/common/items/npc_weapons/tool/shovel-0.ron +++ b/assets/common/items/npc_weapons/tool/shovel-0.ron @@ -6,7 +6,7 @@ Item( kind: Farming("Shovel0"), stats: ( equip_time_millis: 400, - power: 0.50, + power: 1.50, ), ) ), diff --git a/assets/common/items/npc_weapons/tool/shovel-1.ron b/assets/common/items/npc_weapons/tool/shovel-1.ron index 01c8bbf3c1..ab4f5aae8f 100644 --- a/assets/common/items/npc_weapons/tool/shovel-1.ron +++ b/assets/common/items/npc_weapons/tool/shovel-1.ron @@ -6,7 +6,7 @@ Item( kind: Farming("Shovel1"), stats: ( equip_time_millis: 400, - power: 0.50, + power: 1.50, ), ) ), diff --git a/assets/common/items/weapons/staff/sceptre_velorite_0.ron b/assets/common/items/weapons/staff/sceptre_velorite_0.ron new file mode 100644 index 0000000000..dad5431206 --- /dev/null +++ b/assets/common/items/weapons/staff/sceptre_velorite_0.ron @@ -0,0 +1,13 @@ +Item( + name: "Velorite Sceptre", + description: "Heals your allies with the mystical Velorite aura.", + kind: Tool( + ( + kind: Staff("SceptreVelorite"), + stats: ( + equip_time_millis: 400, + power: 1.0, + ), + ) + ), +) diff --git a/assets/common/loot_table.ron b/assets/common/loot_table.ron deleted file mode 100644 index f0a98900c7..0000000000 --- a/assets/common/loot_table.ron +++ /dev/null @@ -1,234 +0,0 @@ -[ - // All loot rates go here - // food - (3, "common.items.food.cheese"), - (3, "common.items.food.apple"), - (3, "common.items.food.mushroom"), - (1, "common.items.food.coconut"), - // miscellaneous - (0.4, "common.items.ore.velorite"), - (0.6, "common.items.ore.veloritefrag"), - (0.1, "common.items.consumable.potion_minor"), - (0.01, "common.items.utility.collar"), - (0.01, "common.items.utility.bomb_pile"), - (0.1, "common.items.utility.bomb"), - // crafting ingredients - (2, "common.items.crafting_ing.leather_scraps"), - (1, "common.items.crafting_ing.empty_vial"), - // swords - (0.1, "common.items.weapons.sword.starter_sword"), - (0.1, "common.items.weapons.sword.wood_sword"), - (0.1, "common.items.weapons.sword.short_sword_0"), - (0.06, "common.items.weapons.sword.greatsword_2h_dam-0"), - (0.06, "common.items.weapons.sword.greatsword_2h_dam-1"), - (0.06, "common.items.weapons.sword.greatsword_2h_dam-2"), - (0.03, "common.items.weapons.sword.greatsword_2h_simple-0"), - (0.03, "common.items.weapons.sword.greatsword_2h_simple-1"), - (0.03, "common.items.weapons.sword.greatsword_2h_simple-2"), - (0.01, "common.items.weapons.sword.greatsword_2h_orn-0"), - (0.01, "common.items.weapons.sword.greatsword_2h_orn-1"), - (0.01, "common.items.weapons.sword.greatsword_2h_orn-2"), - (0.04, "common.items.weapons.sword.long_2h_dam-0"), - (0.04, "common.items.weapons.sword.long_2h_dam-1"), - (0.04, "common.items.weapons.sword.long_2h_dam-2"), - (0.04, "common.items.weapons.sword.long_2h_dam-3"), - (0.04, "common.items.weapons.sword.long_2h_dam-4"), - (0.04, "common.items.weapons.sword.long_2h_dam-5"), - (0.02, "common.items.weapons.sword.long_2h_simple-0"), - (0.02, "common.items.weapons.sword.long_2h_simple-1"), - (0.02, "common.items.weapons.sword.long_2h_simple-2"), - (0.02, "common.items.weapons.sword.long_2h_simple-3"), - (0.02, "common.items.weapons.sword.long_2h_simple-4"), - (0.02, "common.items.weapons.sword.long_2h_simple-5"), - (0.007, "common.items.weapons.sword.long_2h_orn-0"), - (0.007, "common.items.weapons.sword.long_2h_orn-1"), - (0.007, "common.items.weapons.sword.long_2h_orn-2"), - (0.007, "common.items.weapons.sword.long_2h_orn-3"), - (0.007, "common.items.weapons.sword.long_2h_orn-4"), - (0.007, "common.items.weapons.sword.long_2h_orn-5"), - (0.01, "common.items.weapons.sword.zweihander_sword_0"), - // axes - (0.10, "common.items.weapons.axe.starter_axe"), - (0.10, "common.items.weapons.axe.orc_axe-0"), - (0.04, "common.items.weapons.axe.worn_iron_axe-0"), - (0.04, "common.items.weapons.axe.worn_iron_axe-1"), - (0.04, "common.items.weapons.axe.worn_iron_axe-2"), - (0.04, "common.items.weapons.axe.worn_iron_axe-3"), - (0.04, "common.items.weapons.axe.worn_iron_axe-4"), - (0.10, "common.items.weapons.axe.bronze_axe-0"), - (0.10, "common.items.weapons.axe.bronze_axe-1"), - (0.03, "common.items.weapons.axe.iron_axe-0"), - (0.03, "common.items.weapons.axe.iron_axe-1"), - (0.03, "common.items.weapons.axe.iron_axe-2"), - (0.03, "common.items.weapons.axe.iron_axe-3"), - (0.03, "common.items.weapons.axe.iron_axe-4"), - (0.03, "common.items.weapons.axe.iron_axe-5"), - (0.03, "common.items.weapons.axe.iron_axe-6"), - (0.03, "common.items.weapons.axe.iron_axe-7"), - (0.03, "common.items.weapons.axe.iron_axe-8"), - (0.03, "common.items.weapons.axe.iron_axe-9"), - (0.02, "common.items.weapons.axe.steel_axe-0"), - (0.02, "common.items.weapons.axe.steel_axe-1"), - (0.02, "common.items.weapons.axe.steel_axe-2"), - (0.02, "common.items.weapons.axe.steel_axe-3"), - (0.02, "common.items.weapons.axe.steel_axe-4"), - (0.02, "common.items.weapons.axe.steel_axe-5"), - (0.02, "common.items.weapons.axe.steel_axe-6"), - (0.01, "common.items.weapons.axe.bloodsteel_axe-0"), - (0.01, "common.items.weapons.axe.bloodsteel_axe-1"), - (0.01, "common.items.weapons.axe.bloodsteel_axe-2"), - (0.01, "common.items.weapons.axe.cobalt_axe-0"), - (0.01, "common.items.weapons.axe.malachite_axe-0"), - // healing staff - (0.8, "common.items.weapons.staff.staff_nature"), - // staves - (0.50, "common.items.weapons.staff.starter_staff"), - (0.35, "common.items.weapons.staff.bone_staff"), - (0.15, "common.items.weapons.staff.amethyst_staff"), - //(0.01, "common.items.weapons.staff.cultist_staff"), - // hammers - (0.05, "common.items.weapons.hammer.starter_hammer"), - (0.05, "common.items.weapons.hammer.wood_hammer-0"), - (0.05, "common.items.weapons.hammer.flimsy_hammer"), - (0.05, "common.items.weapons.hammer.stone_hammer-0"), - (0.05, "common.items.weapons.hammer.stone_hammer-1"), - (0.05, "common.items.weapons.hammer.stone_hammer-2"), - (0.05, "common.items.weapons.hammer.stone_hammer-3"), - (0.05, "common.items.weapons.hammer.worn_iron_hammer-0"), - (0.05, "common.items.weapons.hammer.worn_iron_hammer-1"), - (0.05, "common.items.weapons.hammer.worn_iron_hammer-2"), - (0.05, "common.items.weapons.hammer.worn_iron_hammer-3"), - (0.05, "common.items.weapons.hammer.bronze_hammer-0"), - (0.05, "common.items.weapons.hammer.bronze_hammer-1"), - (0.03, "common.items.weapons.hammer.iron_hammer-0"), - (0.03, "common.items.weapons.hammer.iron_hammer-1"), - (0.03, "common.items.weapons.hammer.iron_hammer-2"), - (0.03, "common.items.weapons.hammer.iron_hammer-3"), - (0.03, "common.items.weapons.hammer.iron_hammer-4"), - (0.03, "common.items.weapons.hammer.iron_hammer-5"), - (0.03, "common.items.weapons.hammer.iron_hammer-6"), - (0.03, "common.items.weapons.hammer.iron_hammer-7"), - (0.03, "common.items.weapons.hammer.iron_hammer-8"), - (0.02, "common.items.weapons.hammer.steel_hammer-0"), - (0.02, "common.items.weapons.hammer.steel_hammer-1"), - (0.02, "common.items.weapons.hammer.steel_hammer-2"), - (0.02, "common.items.weapons.hammer.steel_hammer-3"), - (0.02, "common.items.weapons.hammer.steel_hammer-4"), - (0.02, "common.items.weapons.hammer.steel_hammer-5"), - (0.01, "common.items.weapons.hammer.cobalt_hammer-0"), - (0.01, "common.items.weapons.hammer.cobalt_hammer-1"), - (0.01, "common.items.weapons.hammer.runic_hammer"), - (0.01, "common.items.weapons.hammer.ramshead_hammer"), - (0.01, "common.items.weapons.hammer.mjolnir"), - // bows - (0.20, "common.items.weapons.bow.starter_bow"), - (0.15, "common.items.weapons.bow.wood_shortbow-0"), - (0.15, "common.items.weapons.bow.wood_shortbow-1"), - (0.10, "common.items.weapons.bow.leafy_shortbow-0"), - (0.10, "common.items.weapons.bow.wood_longbow-0"), - (0.10, "common.items.weapons.bow.wood_longbow-1"), - (0.08, "common.items.weapons.bow.leafy_longbow-0"), - (0.05, "common.items.weapons.bow.horn_longbow-0"), - (0.03, "common.items.weapons.bow.iron_longbow-0"), - (0.01, "common.items.weapons.bow.rare_longbow"), - // belts - (0.17, "common.items.armor.belt.cloth_blue_0"), - (0.17, "common.items.armor.belt.cloth_green_0"), - (0.17, "common.items.armor.belt.cloth_purple_0"), - (0.08, "common.items.armor.belt.druid"), - (0.06, "common.items.armor.belt.leather_0"), - (0.06, "common.items.armor.belt.leather_2"), - (0.02, "common.items.armor.belt.twig"), - (0.02, "common.items.armor.belt.twigsflowers"), - (0.02, "common.items.armor.belt.twigsleaves"), - (0.03, "common.items.armor.belt.plate_0"), - (0.01, "common.items.armor.belt.steel_0"), - // chests - (0.08, "common.items.armor.chest.cloth_blue_0"), - (0.08, "common.items.armor.chest.cloth_green_0"), - (0.08, "common.items.armor.chest.cloth_purple_0"), - (0.025, "common.items.armor.chest.worker_green_0"), - (0.025, "common.items.armor.chest.worker_green_1"), - (0.025, "common.items.armor.chest.worker_orange_0"), - (0.025, "common.items.armor.chest.worker_orange_1"), - (0.025, "common.items.armor.chest.worker_purple_0"), - (0.025, "common.items.armor.chest.worker_purple_1"), - (0.025, "common.items.armor.chest.worker_red_0"), - (0.025, "common.items.armor.chest.worker_red_1"), - (0.025, "common.items.armor.chest.worker_yellow_0"), - (0.025, "common.items.armor.chest.worker_yellow_1"), - (0.08, "common.items.armor.chest.druid"), - (0.06, "common.items.armor.chest.leather_0"), - (0.06, "common.items.armor.chest.leather_2"), - (0.02, "common.items.armor.chest.twig"), - (0.02, "common.items.armor.chest.twigsflowers"), - (0.02, "common.items.armor.chest.twigsleaves"), - (0.03, "common.items.armor.chest.plate_green_0"), - (0.01, "common.items.armor.chest.steel_0"), - // shoes - (0.15, "common.items.armor.foot.cloth_blue_0"), - (0.15, "common.items.armor.foot.cloth_green_0"), - (0.15, "common.items.armor.foot.cloth_purple_0"), - (0.08, "common.items.armor.foot.druid"), - (0.06, "common.items.armor.foot.leather_0"), - (0.06, "common.items.armor.foot.leather_2"), - (0.02, "common.items.armor.foot.twig"), - (0.02, "common.items.armor.foot.twigsflowers"), - (0.02, "common.items.armor.foot.twigsleaves"), - (0.03, "common.items.armor.foot.plate_0"), - (0.01, "common.items.armor.foot.steel_0"), - // pants - (0.125, "common.items.armor.pants.cloth_blue_0"), - (0.125, "common.items.armor.pants.cloth_green_0"), - (0.125, "common.items.armor.pants.cloth_purple_0"), - (0.125, "common.items.armor.pants.worker_blue_0"), - (0.08, "common.items.armor.pants.druid"), - (0.04, "common.items.armor.pants.leather_0"), - (0.04, "common.items.armor.pants.leather_2"), - (0.04, "common.items.armor.pants.hunting"), - (0.02, "common.items.armor.pants.twig"), - (0.02, "common.items.armor.pants.twigsflowers"), - (0.02, "common.items.armor.pants.twigsleaves"), - (0.03, "common.items.armor.pants.plate_green_0"), - (0.01, "common.items.armor.pants.steel_0"), - // shoulders - (0.125, "common.items.armor.shoulder.cloth_blue_0"), - (0.125, "common.items.armor.shoulder.cloth_blue_1"), - (0.125, "common.items.armor.shoulder.cloth_green_0"), - (0.125, "common.items.armor.shoulder.cloth_purple_0"), - (0.06, "common.items.armor.shoulder.druidshoulder"), - (0.06, "common.items.armor.shoulder.leather_strips"), - (0.04, "common.items.armor.shoulder.leather_0"), - (0.04, "common.items.armor.shoulder.leather_1"), - (0.04, "common.items.armor.shoulder.leather_2"), - (0.01, "common.items.armor.shoulder.twigs"), - (0.01, "common.items.armor.shoulder.twigsflowers"), - (0.01, "common.items.armor.shoulder.twigsleaves"), - (0.01, "common.items.armor.shoulder.leather_iron_0"), - (0.01, "common.items.armor.shoulder.leather_iron_1"), - (0.01, "common.items.armor.shoulder.leather_iron_2"), - (0.01, "common.items.armor.shoulder.leather_iron_3"), - (0.015, "common.items.armor.shoulder.plate_0"), - (0.015, "common.items.armor.shoulder.iron_spikes"), - (0.01, "common.items.armor.shoulder.steel_0"), - //gloves - (0.17, "common.items.armor.hand.cloth_blue_0"), - (0.17, "common.items.armor.hand.cloth_green_0"), - (0.17, "common.items.armor.hand.cloth_purple_0"), - (0.08, "common.items.armor.hand.druid"), - (0.06, "common.items.armor.hand.leather_0"), - (0.06, "common.items.armor.hand.leather_2"), - (0.02, "common.items.armor.hand.twig"), - (0.02, "common.items.armor.hand.twigsflowers"), - (0.02, "common.items.armor.hand.twigsleaves"), - (0.03, "common.items.armor.hand.plate_0"), - (0.01, "common.items.armor.hand.steel_0"), - // rings - (0.6, "common.items.armor.ring.ring_0"), - // capes - (0.6, "common.items.armor.back.short_0"), - (0.7, "common.items.armor.back.short_1"), - // necks - (0.6, "common.items.armor.neck.neck_0"), - (0.4, "common.items.armor.neck.neck_1"), -] diff --git a/assets/common/loot_tables/loot_table.ron b/assets/common/loot_tables/loot_table.ron new file mode 100644 index 0000000000..5787e95a90 --- /dev/null +++ b/assets/common/loot_tables/loot_table.ron @@ -0,0 +1,4 @@ +[ + // Fallback loot table + (1, "common.items.food.cheese"), +] diff --git a/assets/common/loot_tables/loot_table_animal_parts.ron b/assets/common/loot_tables/loot_table_animal_parts.ron new file mode 100644 index 0000000000..6358ba4cbe --- /dev/null +++ b/assets/common/loot_tables/loot_table_animal_parts.ron @@ -0,0 +1,3 @@ +[ + (2, "common.items.crafting_ing.leather_scraps"), +] diff --git a/assets/common/loot_tables/loot_table_armor_cloth.ron b/assets/common/loot_tables/loot_table_armor_cloth.ron new file mode 100644 index 0000000000..5640a27b42 --- /dev/null +++ b/assets/common/loot_tables/loot_table_armor_cloth.ron @@ -0,0 +1,38 @@ +[ + // belts + (0.33, "common.items.armor.belt.cloth_blue_0"), + (0.33, "common.items.armor.belt.cloth_green_0"), + (0.33, "common.items.armor.belt.cloth_purple_0"), + // chests + (0.08, "common.items.armor.chest.cloth_blue_0"), + (0.08, "common.items.armor.chest.cloth_green_0"), + (0.08, "common.items.armor.chest.cloth_purple_0"), + (0.08, "common.items.armor.chest.worker_green_0"), + (0.08, "common.items.armor.chest.worker_green_1"), + (0.08, "common.items.armor.chest.worker_orange_0"), + (0.08, "common.items.armor.chest.worker_orange_1"), + (0.08, "common.items.armor.chest.worker_purple_0"), + (0.08, "common.items.armor.chest.worker_purple_1"), + (0.08, "common.items.armor.chest.worker_red_0"), + (0.08, "common.items.armor.chest.worker_red_1"), + (0.08, "common.items.armor.chest.worker_yellow_0"), + (0.08, "common.items.armor.chest.worker_yellow_1"), + // shoes + (0.33, "common.items.armor.foot.cloth_blue_0"), + (0.33, "common.items.armor.foot.cloth_green_0"), + (0.33, "common.items.armor.foot.cloth_purple_0"), + // pants + (0.25, "common.items.armor.pants.cloth_blue_0"), + (0.25, "common.items.armor.pants.cloth_green_0"), + (0.25, "common.items.armor.pants.cloth_purple_0"), + (0.25, "common.items.armor.pants.worker_blue_0"), + // shoulders + (0.25, "common.items.armor.shoulder.cloth_blue_0"), + (0.25, "common.items.armor.shoulder.cloth_blue_1"), + (0.25, "common.items.armor.shoulder.cloth_green_0"), + (0.25, "common.items.armor.shoulder.cloth_purple_0"), + //gloves + (0.33, "common.items.armor.hand.cloth_blue_0"), + (0.33, "common.items.armor.hand.cloth_green_0"), + (0.33, "common.items.armor.hand.cloth_purple_0"), +] diff --git a/assets/common/loot_tables/loot_table_armor_heavy.ron b/assets/common/loot_tables/loot_table_armor_heavy.ron new file mode 100644 index 0000000000..66afe487b8 --- /dev/null +++ b/assets/common/loot_tables/loot_table_armor_heavy.ron @@ -0,0 +1,21 @@ +[ + // belts + (0.67, "common.items.armor.belt.plate_0"), + (0.33, "common.items.armor.belt.steel_0"), + // chests + (0.67, "common.items.armor.chest.plate_green_0"), + (0.33, "common.items.armor.chest.steel_0"), + // shoes + (0.67, "common.items.armor.foot.plate_0"), + (0.33, "common.items.armor.foot.steel_0"), + // pants + (0.67, "common.items.armor.pants.plate_green_0"), + (0.66, "common.items.armor.pants.steel_0"), + // shoulders + (0.40, "common.items.armor.shoulder.plate_0"), + (0.37, "common.items.armor.shoulder.iron_spikes"), + (0.33, "common.items.armor.shoulder.steel_0"), + //gloves + (0.67, "common.items.armor.hand.plate_0"), + (0.33, "common.items.armor.hand.steel_0"), +] \ No newline at end of file diff --git a/assets/common/loot_tables/loot_table_armor_light.ron b/assets/common/loot_tables/loot_table_armor_light.ron new file mode 100644 index 0000000000..e25ec5760c --- /dev/null +++ b/assets/common/loot_tables/loot_table_armor_light.ron @@ -0,0 +1,27 @@ +[ + // belts + (0.50, "common.items.armor.belt.leather_0"), + (0.50, "common.items.armor.belt.leather_2"), + // chests + (0.50, "common.items.armor.chest.leather_0"), + (0.50, "common.items.armor.chest.leather_2"), + // shoes + (0.50, "common.items.armor.foot.leather_0"), + (0.50, "common.items.armor.foot.leather_2"), + // pants + (0.33, "common.items.armor.pants.leather_0"), + (0.33, "common.items.armor.pants.leather_2"), + (0.33, "common.items.armor.pants.hunting"), + // shoulders + (0.10, "common.items.armor.shoulder.leather_strips"), + (0.20, "common.items.armor.shoulder.leather_0"), + (0.20, "common.items.armor.shoulder.leather_1"), + (0.20, "common.items.armor.shoulder.leather_2"), + (0.07, "common.items.armor.shoulder.leather_iron_0"), + (0.07, "common.items.armor.shoulder.leather_iron_1"), + (0.07, "common.items.armor.shoulder.leather_iron_2"), + (0.07, "common.items.armor.shoulder.leather_iron_3"), + //gloves + (0.50, "common.items.armor.hand.leather_0"), + (0.50, "common.items.armor.hand.leather_2"), +] \ No newline at end of file diff --git a/assets/common/loot_tables/loot_table_armor_misc.ron b/assets/common/loot_tables/loot_table_armor_misc.ron new file mode 100644 index 0000000000..601e013552 --- /dev/null +++ b/assets/common/loot_tables/loot_table_armor_misc.ron @@ -0,0 +1,10 @@ +[ + // rings + (0.50, "common.items.armor.ring.ring_0"), + // capes + (0.25, "common.items.armor.back.short_0"), + (0.25, "common.items.armor.back.short_1"), + // necks + (0.25, "common.items.armor.neck.neck_0"), + (0.25, "common.items.armor.neck.neck_1"), +] \ No newline at end of file diff --git a/assets/common/loot_tables/loot_table_armor_nature.ron b/assets/common/loot_tables/loot_table_armor_nature.ron new file mode 100644 index 0000000000..fa371a7938 --- /dev/null +++ b/assets/common/loot_tables/loot_table_armor_nature.ron @@ -0,0 +1,32 @@ +[ + // belts + (0.40, "common.items.armor.belt.druid"), + (0.20, "common.items.armor.belt.twig"), + (0.20, "common.items.armor.belt.twigsflowers"), + (0.20, "common.items.armor.belt.twigsleaves"), + // chests + (0.40, "common.items.armor.chest.druid"), + (0.20, "common.items.armor.chest.twig"), + (0.20, "common.items.armor.chest.twigsflowers"), + (0.20, "common.items.armor.chest.twigsleaves"), + // shoes + (0.40, "common.items.armor.foot.druid"), + (0.20, "common.items.armor.foot.twig"), + (0.20, "common.items.armor.foot.twigsflowers"), + (0.20, "common.items.armor.foot.twigsleaves"), + // pants + (0.40, "common.items.armor.pants.druid"), + (0.20, "common.items.armor.pants.twig"), + (0.20, "common.items.armor.pants.twigsflowers"), + (0.20, "common.items.armor.pants.twigsleaves"), + // shoulders + (0.40, "common.items.armor.shoulder.druidshoulder"), + (0.20, "common.items.armor.shoulder.twigs"), + (0.20, "common.items.armor.shoulder.twigsflowers"), + (0.20, "common.items.armor.shoulder.twigsleaves"), + //gloves + (0.40, "common.items.armor.hand.druid"), + (0.20, "common.items.armor.hand.twig"), + (0.20, "common.items.armor.hand.twigsflowers"), + (0.20, "common.items.armor.hand.twigsleaves"), +] \ No newline at end of file diff --git a/assets/common/loot_tables/loot_table_boss_cultist-leader.ron b/assets/common/loot_tables/loot_table_boss_cultist-leader.ron new file mode 100644 index 0000000000..b91e0f367d --- /dev/null +++ b/assets/common/loot_tables/loot_table_boss_cultist-leader.ron @@ -0,0 +1,18 @@ +[ + // armor + (1, "common.items.armor.belt.cultist_belt"), + (1, "common.items.armor.chest.cultist_chest_purple"), + (1, "common.items.armor.foot.cultist_boots"), + (1, "common.items.armor.hand.cultist_hands_purple"), + (1, "common.items.armor.pants.cultist_legs_purple"), + (1, "common.items.armor.shoulder.cultist_shoulder_purple"), + (1, "common.items.armor.back.dungeon_purple-0"), + // weapons + (1, "common.items.weapons.staff.cultist_staff"), + (1, "common.items.weapons.hammer.cultist_purp_2h-0"), + (1, "common.items.weapons.sword.cultist_purp_2h-0"), + // misc + (9, "common.items.boss_drops.exp_flask"), + (1, "common.items.boss_drops.lantern"), + (1, "common.items.boss_drops.potions"), +] \ No newline at end of file diff --git a/assets/common/loot_tables/loot_table_consumables.ron b/assets/common/loot_tables/loot_table_consumables.ron new file mode 100644 index 0000000000..f4dfab8089 --- /dev/null +++ b/assets/common/loot_tables/loot_table_consumables.ron @@ -0,0 +1,14 @@ +[ + // potions + (1, "common.items.consumable.potion_minor"), + (0.1, "common.items.consumable.potion_med"), + (0.01, "common.items.consumable.potion_big"), + // bombs + (0.6, "common.items.utility.bomb"), + (0.2, "common.items.utility.bomb_pile"), + // velorite + (1, "common.items.ore.veloritefrag"), + (0.5, "common.items.ore.velorite"), + // misc + (0.1, "common.items.utility.collar"), +] \ No newline at end of file diff --git a/assets/common/loot_tables/loot_table_crafting.ron b/assets/common/loot_tables/loot_table_crafting.ron new file mode 100644 index 0000000000..0e7185ff68 --- /dev/null +++ b/assets/common/loot_tables/loot_table_crafting.ron @@ -0,0 +1,7 @@ +[ + // crafting ingredients + (2, "common.items.crafting_ing.leather_scraps"), + (1, "common.items.crafting_ing.empty_vial"), + (0.10, "common.items.crafting_ing.shiny_gem"), + +] diff --git a/assets/common/loot_tables/loot_table_food.ron b/assets/common/loot_tables/loot_table_food.ron new file mode 100644 index 0000000000..c9db9c6578 --- /dev/null +++ b/assets/common/loot_tables/loot_table_food.ron @@ -0,0 +1,11 @@ +[ + // simple + (3, "common.items.food.cheese"), + (3, "common.items.food.apple"), + (3, "common.items.food.mushroom"), + (1, "common.items.food.coconut"), + // crafted + (0.05, "common.items.food.apple_mushroom_curry"), + (0.10, "common.items.food.apple_stick"), + (0.10, "common.items.food.mushroom_stick"), +] diff --git a/assets/common/loot_tables/loot_table_humanoids.ron b/assets/common/loot_tables/loot_table_humanoids.ron new file mode 100644 index 0000000000..5b25815f1c --- /dev/null +++ b/assets/common/loot_tables/loot_table_humanoids.ron @@ -0,0 +1,25 @@ +[ + // Crafting Ingredients + (1, "common.items.crafting_ing.empty_vial"), + (0.10, "common.items.crafting_ing.shiny_gem"), + // Consumables + (0.2, "common.items.consumable.potion_minor"), + // Utility + (0.05, "common.items.utility.collar"), + // Food + (1, "common.items.food.coconut"), + (0.05, "common.items.food.apple_mushroom_curry"), + (0.10, "common.items.food.apple_stick"), + (0.10, "common.items.food.mushroom_stick"), + // Weapons + (0.15, "common.items.weapons.sword.wood_sword"), + (0.10, "common.items.weapons.axe.worn_iron_axe-0"), + (0.10, "common.items.weapons.axe.worn_iron_axe-1"), + (0.10, "common.items.weapons.axe.worn_iron_axe-2"), + (0.10, "common.items.weapons.axe.worn_iron_axe-3"), + (0.10, "common.items.weapons.axe.worn_iron_axe-4"), + (0.25, "common.items.weapons.staff.staff_nature"), + (0.15, "common.items.weapons.hammer.flimsy_hammer"), + (0.10, "common.items.weapons.hammer.wood_hammer-0"), + (0.25, "common.items.weapons.bow.wood_shortbow-0"), +] diff --git a/assets/common/loot_tables/loot_table_rocks.ron b/assets/common/loot_tables/loot_table_rocks.ron new file mode 100644 index 0000000000..e29e50f7f2 --- /dev/null +++ b/assets/common/loot_tables/loot_table_rocks.ron @@ -0,0 +1,6 @@ +[ + (1, "common.items.crafting_ing.stones"), + (0.10, "common.items.crafting_ing.shiny_gem"), + (0.10, "common.items.ore.velorite"), + (0.20, "common.items.ore.veloritefrag"), +] diff --git a/assets/common/loot_tables/loot_table_villager.ron b/assets/common/loot_tables/loot_table_villager.ron new file mode 100644 index 0000000000..d2eb0f8d25 --- /dev/null +++ b/assets/common/loot_tables/loot_table_villager.ron @@ -0,0 +1,37 @@ +[ + // Crafting Ingredients + (1, "common.items.crafting_ing.empty_vial"), + (0.10, "common.items.crafting_ing.shiny_gem"), + // Consumables + (0.2, "common.items.consumable.potion_minor"), + // Armour + (1, "common.items.armor.chest.worker_green_0"), + (1, "common.items.armor.chest.worker_green_1"), + (1, "common.items.armor.chest.worker_orange_0"), + (1, "common.items.armor.chest.worker_orange_1"), + (1, "common.items.armor.chest.worker_purple_0"), + (1, "common.items.armor.chest.worker_purple_1"), + (1, "common.items.armor.chest.worker_red_0"), + (1, "common.items.armor.chest.worker_red_1"), + (1, "common.items.armor.chest.worker_yellow_0"), + (1, "common.items.armor.chest.worker_yellow_1"), + (1, "common.items.armor.pants.worker_blue_0"), + // Utility + (0.05, "common.items.utility.collar"), + // Food + (0.5, "common.items.food.coconut"), + (0.05, "common.items.food.apple_mushroom_curry"), + (0.10, "common.items.food.apple_stick"), + (0.10, "common.items.food.mushroom_stick"), + // Weapons + (0.15, "common.items.weapons.sword.wood_sword"), + (0.10, "common.items.weapons.axe.worn_iron_axe-0"), + (0.10, "common.items.weapons.axe.worn_iron_axe-1"), + (0.10, "common.items.weapons.axe.worn_iron_axe-2"), + (0.10, "common.items.weapons.axe.worn_iron_axe-3"), + (0.10, "common.items.weapons.axe.worn_iron_axe-4"), + (0.25, "common.items.weapons.staff.staff_nature"), + (0.15, "common.items.weapons.hammer.flimsy_hammer"), + (0.10, "common.items.weapons.hammer.wood_hammer-0"), + (0.25, "common.items.weapons.bow.wood_shortbow-0"), +] diff --git a/assets/common/loot_tables/loot_table_weapon_common.ron b/assets/common/loot_tables/loot_table_weapon_common.ron new file mode 100644 index 0000000000..0ba12913f2 --- /dev/null +++ b/assets/common/loot_tables/loot_table_weapon_common.ron @@ -0,0 +1,43 @@ +[ + // swords + (0.15, "common.items.weapons.sword.starter_sword"), + (0.15, "common.items.weapons.sword.wood_sword"), + (0.07, "common.items.weapons.sword.long_2h_dam-0"), + (0.07, "common.items.weapons.sword.long_2h_dam-1"), + (0.07, "common.items.weapons.sword.long_2h_dam-2"), + (0.07, "common.items.weapons.sword.long_2h_dam-3"), + (0.07, "common.items.weapons.sword.long_2h_dam-4"), + (0.07, "common.items.weapons.sword.long_2h_dam-5"), + (0.10, "common.items.weapons.sword.short_sword_0"), + (0.06, "common.items.weapons.sword.greatsword_2h_dam-0"), + (0.06, "common.items.weapons.sword.greatsword_2h_dam-1"), + (0.06, "common.items.weapons.sword.greatsword_2h_dam-2"), + // axes + (0.30, "common.items.weapons.axe.starter_axe"), + (0.20, "common.items.weapons.axe.orc_axe-0"), + (0.10, "common.items.weapons.axe.worn_iron_axe-0"), + (0.10, "common.items.weapons.axe.worn_iron_axe-1"), + (0.10, "common.items.weapons.axe.worn_iron_axe-2"), + (0.10, "common.items.weapons.axe.worn_iron_axe-3"), + (0.10, "common.items.weapons.axe.worn_iron_axe-4"), + // healing staff + (0.25, "common.items.weapons.staff.staff_nature"), + // staves + (1.00, "common.items.weapons.staff.starter_staff"), + // hammers + (0.15, "common.items.weapons.hammer.starter_hammer"), + (0.15, "common.items.weapons.hammer.flimsy_hammer"), + (0.10, "common.items.weapons.hammer.wood_hammer-0"), + (0.10, "common.items.weapons.hammer.stone_hammer-0"), + (0.10, "common.items.weapons.hammer.stone_hammer-1"), + (0.10, "common.items.weapons.hammer.stone_hammer-2"), + (0.10, "common.items.weapons.hammer.stone_hammer-3"), + (0.05, "common.items.weapons.hammer.worn_iron_hammer-0"), + (0.05, "common.items.weapons.hammer.worn_iron_hammer-1"), + (0.05, "common.items.weapons.hammer.worn_iron_hammer-2"), + (0.05, "common.items.weapons.hammer.worn_iron_hammer-3"), + // bows + (0.50, "common.items.weapons.bow.starter_bow"), + (0.25, "common.items.weapons.bow.wood_shortbow-0"), + (0.25, "common.items.weapons.bow.wood_shortbow-1"), +] \ No newline at end of file diff --git a/assets/common/loot_tables/loot_table_weapon_rare.ron b/assets/common/loot_tables/loot_table_weapon_rare.ron new file mode 100644 index 0000000000..df5fa2a126 --- /dev/null +++ b/assets/common/loot_tables/loot_table_weapon_rare.ron @@ -0,0 +1,33 @@ +[ + // swords + (0.08, "common.items.weapons.sword.long_2h_orn-0"), + (0.08, "common.items.weapons.sword.long_2h_orn-1"), + (0.08, "common.items.weapons.sword.long_2h_orn-2"), + (0.08, "common.items.weapons.sword.long_2h_orn-3"), + (0.08, "common.items.weapons.sword.long_2h_orn-4"), + (0.08, "common.items.weapons.sword.long_2h_orn-5"), + (0.20, "common.items.weapons.sword.zweihander_sword_0"), + (0.10, "common.items.weapons.sword.greatsword_2h_orn-0"), + (0.10, "common.items.weapons.sword.greatsword_2h_orn-1"), + (0.10, "common.items.weapons.sword.greatsword_2h_orn-2"), + // axes + (0.20, "common.items.weapons.axe.bloodsteel_axe-0"), + (0.20, "common.items.weapons.axe.bloodsteel_axe-1"), + (0.20, "common.items.weapons.axe.bloodsteel_axe-2"), + (0.30, "common.items.weapons.axe.cobalt_axe-0"), + (0.10, "common.items.weapons.axe.malachite_axe-0"), + // healing staff + (0.25, "common.items.weapons.staff.staff_nature"), + // staves + (1.00, "common.items.weapons.staff.amethyst_staff"), + // hammers + (0.30, "common.items.weapons.hammer.cobalt_hammer-0"), + (0.30, "common.items.weapons.hammer.cobalt_hammer-1"), + (0.15, "common.items.weapons.hammer.runic_hammer"), + (0.15, "common.items.weapons.hammer.ramshead_hammer"), + (0.10, "common.items.weapons.hammer.mjolnir"), + // bows + (0.60, "common.items.weapons.bow.horn_longbow-0"), + (0.30, "common.items.weapons.bow.iron_longbow-0"), + (0.10, "common.items.weapons.bow.rare_longbow"), +] \ No newline at end of file diff --git a/assets/common/loot_tables/loot_table_weapon_uncommon.ron b/assets/common/loot_tables/loot_table_weapon_uncommon.ron new file mode 100644 index 0000000000..7211863eb4 --- /dev/null +++ b/assets/common/loot_tables/loot_table_weapon_uncommon.ron @@ -0,0 +1,68 @@ +[ + // swords + (0.05, "common.items.weapons.sword.long_2h_simple-0"), + (0.05, "common.items.weapons.sword.long_2h_simple-1"), + (0.05, "common.items.weapons.sword.long_2h_simple-2"), + (0.05, "common.items.weapons.sword.long_2h_simple-3"), + (0.05, "common.items.weapons.sword.long_2h_simple-4"), + (0.05, "common.items.weapons.sword.long_2h_simple-5"), + (0.10, "common.items.weapons.sword.greatsword_2h_simple-0"), + (0.10, "common.items.weapons.sword.greatsword_2h_simple-1"), + (0.10, "common.items.weapons.sword.greatsword_2h_simple-2"), + (0.06, "common.items.weapons.sword.long_2h_fine-0"), + (0.06, "common.items.weapons.sword.long_2h_fine-1"), + (0.06, "common.items.weapons.sword.long_2h_fine-2"), + (0.06, "common.items.weapons.sword.long_2h_fine-3"), + (0.06, "common.items.weapons.sword.long_2h_fine-4"), + (0.06, "common.items.weapons.sword.long_2h_fine-5"), + (0.07, "common.items.weapons.sword.greatsword_2h_fine-0"), + (0.07, "common.items.weapons.sword.greatsword_2h_fine-1"), + (0.07, "common.items.weapons.sword.greatsword_2h_fine-2"), + // axes + (0.15, "common.items.weapons.axe.bronze_axe-0"), + (0.15, "common.items.weapons.axe.bronze_axe-1"), + (0.04, "common.items.weapons.axe.iron_axe-0"), + (0.04, "common.items.weapons.axe.iron_axe-1"), + (0.04, "common.items.weapons.axe.iron_axe-2"), + (0.04, "common.items.weapons.axe.iron_axe-3"), + (0.04, "common.items.weapons.axe.iron_axe-4"), + (0.04, "common.items.weapons.axe.iron_axe-5"), + (0.04, "common.items.weapons.axe.iron_axe-6"), + (0.04, "common.items.weapons.axe.iron_axe-7"), + (0.04, "common.items.weapons.axe.iron_axe-8"), + (0.04, "common.items.weapons.axe.iron_axe-9"), + (0.04, "common.items.weapons.axe.steel_axe-0"), + (0.04, "common.items.weapons.axe.steel_axe-1"), + (0.04, "common.items.weapons.axe.steel_axe-2"), + (0.04, "common.items.weapons.axe.steel_axe-3"), + (0.04, "common.items.weapons.axe.steel_axe-4"), + (0.04, "common.items.weapons.axe.steel_axe-5"), + (0.04, "common.items.weapons.axe.steel_axe-6"), + // healing staff + (0.5, "common.items.weapons.staff.staff_nature"), + // staves + (1.00, "common.items.weapons.staff.bone_staff"), + // hammers + (0.15, "common.items.weapons.hammer.bronze_hammer-0"), + (0.15, "common.items.weapons.hammer.bronze_hammer-1"), + (0.04, "common.items.weapons.hammer.iron_hammer-0"), + (0.04, "common.items.weapons.hammer.iron_hammer-1"), + (0.04, "common.items.weapons.hammer.iron_hammer-2"), + (0.04, "common.items.weapons.hammer.iron_hammer-3"), + (0.04, "common.items.weapons.hammer.iron_hammer-4"), + (0.04, "common.items.weapons.hammer.iron_hammer-5"), + (0.04, "common.items.weapons.hammer.iron_hammer-6"), + (0.04, "common.items.weapons.hammer.iron_hammer-7"), + (0.04, "common.items.weapons.hammer.iron_hammer-8"), + (0.05, "common.items.weapons.hammer.steel_hammer-0"), + (0.05, "common.items.weapons.hammer.steel_hammer-1"), + (0.05, "common.items.weapons.hammer.steel_hammer-2"), + (0.05, "common.items.weapons.hammer.steel_hammer-3"), + (0.05, "common.items.weapons.hammer.steel_hammer-4"), + (0.05, "common.items.weapons.hammer.steel_hammer-5"), + // bows + (0.30, "common.items.weapons.bow.leafy_shortbow-0"), + (0.25, "common.items.weapons.bow.wood_longbow-0"), + (0.25, "common.items.weapons.bow.wood_longbow-1"), + (0.20, "common.items.weapons.bow.leafy_longbow-0"), +] \ No newline at end of file diff --git a/assets/common/recipe_book.ron b/assets/common/recipe_book.ron index 5c168ab31a..1a17d6f0c1 100644 --- a/assets/common/recipe_book.ron +++ b/assets/common/recipe_book.ron @@ -14,4 +14,5 @@ "apple_shroom_curry": (("common.items.food.apple_mushroom_curry", 1), [("common.items.food.mushroom", 8), ("common.items.food.coconut", 1), ("common.items.food.apple", 4), ("common.items.crafting_tools.mortar_pestle", 0)]), "apples_stick": (("common.items.food.apple_stick", 1),[("common.items.crafting_ing.twigs", 2), ("common.items.food.apple", 2)]), "mushroom_stick": (("common.items.food.mushroom_stick", 1),[("common.items.crafting_ing.twigs", 2), ("common.items.food.mushroom", 3)]), + "velorte_sceptre": (("common.items.weapons.staff.sceptre_velorite_0", 1),[("common.items.crafting_ing.twigs", 20), ("common.items.ore.veloritefrag", 10), ("common.items.crafting_ing.shiny_gem", 4), ("common.items.crafting_tools.craftsman_hammer", 0)]), } diff --git a/assets/voxygen/element/frames/banner_bot.png b/assets/voxygen/element/frames/banner_bot.png new file mode 100644 index 0000000000..b1dbcfe112 --- /dev/null +++ b/assets/voxygen/element/frames/banner_bot.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:576f306f0770c69588da97bd135d5ba1ac4ff347a5bee562cc92951e25bc3399 +size 1638 diff --git a/assets/voxygen/element/icons/female.png b/assets/voxygen/element/icons/female.png deleted file mode 100644 index 405f424205..0000000000 --- a/assets/voxygen/element/icons/female.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:44b79da769deb373b40aab595bbab076c4102f1f387eafe88bb760a47c301f5e -size 19028 diff --git a/assets/voxygen/element/icons/item_leather1.png b/assets/voxygen/element/icons/item_leather1.png new file mode 100644 index 0000000000..a96818e076 --- /dev/null +++ b/assets/voxygen/element/icons/item_leather1.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ea821ab4ee7dd73c59a7300b213d8515265dcca290fa4e2532a8009c7ce741d1 +size 1739 diff --git a/assets/voxygen/element/icons/male.png b/assets/voxygen/element/icons/male.png deleted file mode 100644 index 17dbbdeac1..0000000000 --- a/assets/voxygen/element/icons/male.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f940f7e84784c5de5a9a56b4fc91c7ad1687465f3dfe3618a908652bd6df2e31 -size 18428 diff --git a/assets/voxygen/i18n/de_DE.ron b/assets/voxygen/i18n/de_DE.ron index 04e6bffe0f..f5ce2fa8f8 100644 --- a/assets/voxygen/i18n/de_DE.ron +++ b/assets/voxygen/i18n/de_DE.ron @@ -152,7 +152,8 @@ https://account.veloren.net. "hud.you_died": "Ihr seid gestorben.", "hud.waypoint_saved": "Wegpunkt gesichert", - "hud.press_key_to_show_keybindings_fmt": "Drückt {key} um die Tastenbelegung zu zeigen", + "hud.press_key_to_show_keybindings_fmt": "[{key}] Tastenbelegung", + "hud.press_key_to_toggle_lantern_fmt": "[{key}] Laterne", "hud.press_key_to_show_debug_info_fmt": "Drückt {key} um die Debug-Info zu zeigen", "hud.press_key_to_toggle_keybindings_fmt": "Drückt {key} um die Tastenbelegung zu zeigen", "hud.press_key_to_toggle_debug_info_fmt": "Drückt {key} um die Debug-Info zu zeigen", diff --git a/assets/voxygen/i18n/en.ron b/assets/voxygen/i18n/en.ron index d02cfc6b74..2760d7609d 100644 --- a/assets/voxygen/i18n/en.ron +++ b/assets/voxygen/i18n/en.ron @@ -152,7 +152,8 @@ https://account.veloren.net."#, "hud.you_died": "You Died", "hud.waypoint_saved": "Waypoint Saved", - "hud.press_key_to_show_keybindings_fmt": "Press {key} to show keybindings", + "hud.press_key_to_show_keybindings_fmt": "[{key}] Keybindings", + "hud.press_key_to_toggle_lantern_fmt": "[{key}] Lantern", "hud.press_key_to_show_debug_info_fmt": "Press {key} to show debug info", "hud.press_key_to_toggle_keybindings_fmt": "Press {key} to toggle keybindings", "hud.press_key_to_toggle_debug_info_fmt": "Press {key} to toggle debug info", diff --git a/assets/voxygen/item_image_manifest.ron b/assets/voxygen/item_image_manifest.ron index 77d2638409..4d59015e54 100644 --- a/assets/voxygen/item_image_manifest.ron +++ b/assets/voxygen/item_image_manifest.ron @@ -505,6 +505,10 @@ Tool(Staff("Sceptre")): VoxTrans( "voxel.weapon.staff.wood-nature", (1.0, -1.0, 0.0), (-310., 90.0, 0.0), 1.2, + ), + Tool(Staff("SceptreVelorite")): VoxTrans( + "voxel.weapon.staff.ore-nature", + (1.0, -1.0, 0.0), (-310., 90.0, 0.0), 1.15, ), // Shields Tool(Shield("BasicShield")): VoxTrans( @@ -1011,6 +1015,56 @@ "voxel.armor.shoulder.twigsflowers_shoulder_right", (0.0, 0.0, 0.0), (-90.0, 130.0, 0.0), 1.2, ), + //Tarasque Set + Armor(Chest("Tarasque")): VoxTrans( + "voxel.armor.chest.tarasque", + (0.0, 0.0, 0.0), (-90.0, 180.0, 0.0), 1.2, + ), + Armor(Pants("Tarasque")): VoxTrans( + "voxel.armor.pants.tarasque", + (0.0, 0.0, 0.0), (-90.0, 180.0, 0.0), 1.2, + ), + Armor(Belt("Tarasque")): VoxTrans( + "voxel.armor.belt.tarasque", + (0.0, 0.0, 0.0), (-90.0, 180.0, 0.0), 1.4, + ), + Armor(Foot("Tarasque")): VoxTrans( + "voxel.armor.foot.tarasque", + (0.0, 0.0, 0.0), (-95.0, 140.0, 0.0), 1.1, + ), + Armor(Hand("Tarasque")): VoxTrans( + "voxel.armor.hand.tarasque_right", + (0.0, -1.0, 0.0), (-90.0, 135.0, 0.0), 1.0, + ), + Armor(Shoulder("Tarasque")): VoxTrans( + "voxel.armor.shoulder.tarasque_right", + (0.0, 0.0, 0.0), (-90.0, 130.0, 0.0), 1.2, + ), + //Bonerattler Set + Armor(Chest("Bonerattler")): VoxTrans( + "voxel.armor.chest.bonerattler", + (0.0, 0.0, 0.0), (-90.0, 180.0, 0.0), 1.2, + ), + Armor(Pants("Bonerattler")): VoxTrans( + "voxel.armor.pants.bonerattler", + (0.0, 0.0, 0.0), (-90.0, 180.0, 0.0), 1.2, + ), + Armor(Belt("Bonerattler")): VoxTrans( + "voxel.armor.belt.bonerattler", + (0.0, 0.0, 0.0), (-90.0, 180.0, 0.0), 1.4, + ), + Armor(Foot("Bonerattler")): VoxTrans( + "voxel.armor.foot.bonerattler", + (0.0, 0.0, 0.0), (-95.0, 140.0, 0.0), 1.1, + ), + Armor(Hand("Bonerattler")): VoxTrans( + "voxel.armor.hand.bonerattler_right", + (0.0, -1.0, 0.0), (-90.0, 135.0, 0.0), 1.0, + ), + Armor(Shoulder("Bonerattler")): VoxTrans( + "voxel.armor.shoulder.bonerattler_right", + (0.0, 0.0, 0.0), (-90.0, 130.0, 0.0), 1.2, + ), //misc Armor(Pants("Hunting")): VoxTrans( "voxel.armor.pants.grayscale", diff --git a/assets/voxygen/voxel/armor/belt/bonerattler.vox b/assets/voxygen/voxel/armor/belt/bonerattler.vox new file mode 100644 index 0000000000..5a07ba7dd1 --- /dev/null +++ b/assets/voxygen/voxel/armor/belt/bonerattler.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b0f042fc608dbf4b0184fbc888effe47b280ea8de07b46855e7b97c1eb6d9344 +size 1460 diff --git a/assets/voxygen/voxel/armor/belt/tarasque.vox b/assets/voxygen/voxel/armor/belt/tarasque.vox new file mode 100644 index 0000000000..6ed66156c9 --- /dev/null +++ b/assets/voxygen/voxel/armor/belt/tarasque.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6b582508130116bc82a57c86f8b2f038f46e053f0bae3b04b73883df12cf58a5 +size 1472 diff --git a/assets/voxygen/voxel/armor/chest/bonerattler.vox b/assets/voxygen/voxel/armor/chest/bonerattler.vox new file mode 100644 index 0000000000..d516e45bd8 --- /dev/null +++ b/assets/voxygen/voxel/armor/chest/bonerattler.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:340ef35d35982e51f1d11bd0990bbf3e512aad52332026ccc138a81205faef54 +size 2624 diff --git a/assets/voxygen/voxel/armor/chest/tarasque.vox b/assets/voxygen/voxel/armor/chest/tarasque.vox new file mode 100644 index 0000000000..833d657b28 --- /dev/null +++ b/assets/voxygen/voxel/armor/chest/tarasque.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:04b8bc823e3692bec955eb8994d1ce22025500e38adfaabf7d103cfb8dc6a6d5 +size 2944 diff --git a/assets/voxygen/voxel/armor/foot/bonerattler.vox b/assets/voxygen/voxel/armor/foot/bonerattler.vox new file mode 100644 index 0000000000..c6c00b3719 --- /dev/null +++ b/assets/voxygen/voxel/armor/foot/bonerattler.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6acc4e7c074ecfe9280151b8d81541c5310d4ec3d001284ae3e9f19e176ca224 +size 1480 diff --git a/assets/voxygen/voxel/armor/foot/tarasque.vox b/assets/voxygen/voxel/armor/foot/tarasque.vox new file mode 100644 index 0000000000..d07b797f44 --- /dev/null +++ b/assets/voxygen/voxel/armor/foot/tarasque.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d4be8dfb78ff2f0bdcc2c38dbcb8cf72cae1c5e84b29c64fa3239231e5d154e5 +size 1480 diff --git a/assets/voxygen/voxel/armor/hand/bonerattler_left.vox b/assets/voxygen/voxel/armor/hand/bonerattler_left.vox new file mode 100644 index 0000000000..915741468d --- /dev/null +++ b/assets/voxygen/voxel/armor/hand/bonerattler_left.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c5840f02a522774c8999ccded69b20f5de4104ad673bbba744cb03899deb49f4 +size 1240 diff --git a/assets/voxygen/voxel/armor/hand/bonerattler_right.vox b/assets/voxygen/voxel/armor/hand/bonerattler_right.vox new file mode 100644 index 0000000000..3e95dcbe63 --- /dev/null +++ b/assets/voxygen/voxel/armor/hand/bonerattler_right.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:db096bedf5ddf4412b30c005674bcb114f1c64eb6e59450f4cd8d383bf95e9c7 +size 1240 diff --git a/assets/voxygen/voxel/armor/hand/tarasque_left.vox b/assets/voxygen/voxel/armor/hand/tarasque_left.vox new file mode 100644 index 0000000000..d17f99af53 --- /dev/null +++ b/assets/voxygen/voxel/armor/hand/tarasque_left.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1467490474a15d5fe6f26c09aeac7462e1507ecc1d79058bb2bdf5047d5bed8c +size 55771 diff --git a/assets/voxygen/voxel/armor/hand/tarasque_right.vox b/assets/voxygen/voxel/armor/hand/tarasque_right.vox new file mode 100644 index 0000000000..cf510c8d5f --- /dev/null +++ b/assets/voxygen/voxel/armor/hand/tarasque_right.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7b3814791c774ed2c6ff4eedb808a8c014b7016254800a7eb8c5716433dd7c52 +size 1288 diff --git a/assets/voxygen/voxel/armor/pants/bonerattler.vox b/assets/voxygen/voxel/armor/pants/bonerattler.vox new file mode 100644 index 0000000000..829aab954a --- /dev/null +++ b/assets/voxygen/voxel/armor/pants/bonerattler.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d7a1a9485d0833834849a49f53bbf92b61ee2744f0500e6d80951ac1f8617133 +size 1896 diff --git a/assets/voxygen/voxel/armor/pants/tarasque.vox b/assets/voxygen/voxel/armor/pants/tarasque.vox new file mode 100644 index 0000000000..8c3d65b9e1 --- /dev/null +++ b/assets/voxygen/voxel/armor/pants/tarasque.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1a6379161840e44f2c6eb7c1f858a40907dd109b396741fb9f40b7a2a249c7bd +size 2008 diff --git a/assets/voxygen/voxel/armor/shoulder/bonerattler_left.vox b/assets/voxygen/voxel/armor/shoulder/bonerattler_left.vox new file mode 100644 index 0000000000..c5570493ed --- /dev/null +++ b/assets/voxygen/voxel/armor/shoulder/bonerattler_left.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dcdc7b084add4b4bf3933a4df56eeefa406c9cfb2f389aca26f71e53f66b70cd +size 1388 diff --git a/assets/voxygen/voxel/armor/shoulder/bonerattler_right.vox b/assets/voxygen/voxel/armor/shoulder/bonerattler_right.vox new file mode 100644 index 0000000000..c5570493ed --- /dev/null +++ b/assets/voxygen/voxel/armor/shoulder/bonerattler_right.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dcdc7b084add4b4bf3933a4df56eeefa406c9cfb2f389aca26f71e53f66b70cd +size 1388 diff --git a/assets/voxygen/voxel/armor/shoulder/tarasque_left.vox b/assets/voxygen/voxel/armor/shoulder/tarasque_left.vox new file mode 100644 index 0000000000..3247ec5e8a --- /dev/null +++ b/assets/voxygen/voxel/armor/shoulder/tarasque_left.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:676346dbb34ab576bd882b9eeae9d07b0325806783779e8b25807471e6aa5713 +size 55999 diff --git a/assets/voxygen/voxel/armor/shoulder/tarasque_right.vox b/assets/voxygen/voxel/armor/shoulder/tarasque_right.vox new file mode 100644 index 0000000000..5ac2a29065 --- /dev/null +++ b/assets/voxygen/voxel/armor/shoulder/tarasque_right.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:daf3f9d27f98bf0665e7e836365044a3c215c2a6f34f4036340f36c9377684c3 +size 1516 diff --git a/assets/voxygen/voxel/humanoid_armor_belt_manifest.ron b/assets/voxygen/voxel/humanoid_armor_belt_manifest.ron index 1ddab8aa04..bfa38ec946 100644 --- a/assets/voxygen/voxel/humanoid_armor_belt_manifest.ron +++ b/assets/voxygen/voxel/humanoid_armor_belt_manifest.ron @@ -76,5 +76,13 @@ vox_spec: ("armor.belt.twigsflowers_belt", (-4.0, -3.5, -1.0)), color: None ), + "Tarasque":( + vox_spec: ("armor.belt.tarasque", (-5.0, -3.5, 2.0)), + color: None + ), + "Bonerattler":( + vox_spec: ("armor.belt.bonerattler", (-5.0, -4.5, 2.0)), + color: None + ), }, )) diff --git a/assets/voxygen/voxel/humanoid_armor_chest_manifest.ron b/assets/voxygen/voxel/humanoid_armor_chest_manifest.ron index 93eb3a18a7..c17403b4e2 100644 --- a/assets/voxygen/voxel/humanoid_armor_chest_manifest.ron +++ b/assets/voxygen/voxel/humanoid_armor_chest_manifest.ron @@ -134,6 +134,14 @@ vox_spec: ("armor.chest.leather-2", (-7.0, -3.5, 2.0)), color: None ), + "Tarasque":( + vox_spec: ("armor.chest.tarasque", (-8.0, -4.5, 2.0)), + color: None + ), + "Bonerattler":( + vox_spec: ("armor.chest.bonerattler", (-7.0, -4.5, 2.0)), + color: None + ), }, ) ) diff --git a/assets/voxygen/voxel/humanoid_armor_foot_manifest.ron b/assets/voxygen/voxel/humanoid_armor_foot_manifest.ron index ca038be44d..b2432b066d 100644 --- a/assets/voxygen/voxel/humanoid_armor_foot_manifest.ron +++ b/assets/voxygen/voxel/humanoid_armor_foot_manifest.ron @@ -72,5 +72,13 @@ vox_spec: ("armor.foot.twigsflowers_foot", (-2.5, -3.5, -2.0)), color: None ), + "Tarasque":( + vox_spec: ("armor.foot.tarasque", (-2.5, -3.5, -2.0)), + color: None + ), + "Bonerattler":( + vox_spec: ("armor.foot.bonerattler", (-2.5, -3.5, -2.0)), + color: None + ), }, )) diff --git a/assets/voxygen/voxel/humanoid_armor_hand_manifest.ron b/assets/voxygen/voxel/humanoid_armor_hand_manifest.ron index 109dbace12..9cf0fa7a07 100644 --- a/assets/voxygen/voxel/humanoid_armor_hand_manifest.ron +++ b/assets/voxygen/voxel/humanoid_armor_hand_manifest.ron @@ -160,5 +160,25 @@ color: None ) ), + "Tarasque": ( + left: ( + vox_spec: ("armor.hand.tarasque_left", (-2.5, -2.5, -2.5)), + color: None + ), + right: ( + vox_spec: ("armor.hand.tarasque_right", (-2.5, -2.5, -2.5)), + color: None + ) + ), + "Bonerattler": ( + left: ( + vox_spec: ("armor.hand.bonerattler_left", (-1.5, -1.5, -2.5)), + color: None + ), + right: ( + vox_spec: ("armor.hand.bonerattler_right", (-1.5, -1.5, -2.5)), + color: None + ) + ), }, )) diff --git a/assets/voxygen/voxel/humanoid_armor_pants_manifest.ron b/assets/voxygen/voxel/humanoid_armor_pants_manifest.ron index bb15cc6876..9b8e94c453 100644 --- a/assets/voxygen/voxel/humanoid_armor_pants_manifest.ron +++ b/assets/voxygen/voxel/humanoid_armor_pants_manifest.ron @@ -92,5 +92,13 @@ vox_spec: ("armor.pants.twigsflowers_pants", (-6.0, -3.5, 0.0)), color: None ), + "Tarasque":( + vox_spec: ("armor.pants.tarasque", (-6.0, -4.5, 1.0)), + color: None + ), + "Bonerattler":( + vox_spec: ("armor.pants.bonerattler", (-5.0, -3.5, 1.0)), + color: None + ), }, )) diff --git a/assets/voxygen/voxel/humanoid_armor_shoulder_manifest.ron b/assets/voxygen/voxel/humanoid_armor_shoulder_manifest.ron index 873a88adc3..7f9fbc7fb6 100644 --- a/assets/voxygen/voxel/humanoid_armor_shoulder_manifest.ron +++ b/assets/voxygen/voxel/humanoid_armor_shoulder_manifest.ron @@ -249,7 +249,27 @@ right: ( vox_spec: ("armor.shoulder.druid_right", (-2.0, -4.5, -3.0)), color: None - ), - ), + ) + ), + "Tarasque": ( + left: ( + vox_spec: ("armor.shoulder.tarasque_left", (-5.0, -3.5 , 0.0)), + color: None + ), + right: ( + vox_spec: ("armor.shoulder.tarasque_right", (-0.0, -3.5, 0.0)), + color: None + ) + ), + "Bonerattler": ( + left: ( + vox_spec: ("armor.shoulder.bonerattler_left", (-4.0, -3.5 , 1.0)), + color: None + ), + right: ( + vox_spec: ("armor.shoulder.bonerattler_right", (-1.0, -3.5, 1.0)), + color: None + ) + ), }, )) diff --git a/assets/voxygen/voxel/humanoid_main_weapon_manifest.ron b/assets/voxygen/voxel/humanoid_main_weapon_manifest.ron index 96bec81511..5913a9819a 100644 --- a/assets/voxygen/voxel/humanoid_main_weapon_manifest.ron +++ b/assets/voxygen/voxel/humanoid_main_weapon_manifest.ron @@ -543,10 +543,14 @@ color: None ), // Healing staff - Staff("Sceptre"): ( + Staff("Sceptre"): ( vox_spec: ("weapon.staff.wood-nature", (-1.0, -6.0, -5.0)), color: None ), + Staff("SceptreVelorite"): ( + vox_spec: ("weapon.staff.ore-nature", (-1.0, -6.0, -5.0)), + color: None + ), // Misc Debug("Boost"): ( vox_spec: ("weapon.tool.broom_belzeshrub_purple", (-3.0, -4.0, -4.0)), diff --git a/assets/voxygen/voxel/sprite/furniture/hanging_sign-0.vox b/assets/voxygen/voxel/sprite/furniture/hanging_sign-0.vox index 6666e45ec9..11f387ffdc 100644 --- a/assets/voxygen/voxel/sprite/furniture/hanging_sign-0.vox +++ b/assets/voxygen/voxel/sprite/furniture/hanging_sign-0.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a9d01dd0c592aec309008561e5ec826e618fad10a22b05b8a0e3d19a24e84d77 -size 4484 +oid sha256:8e5ebf2bf30d37f6fdf116dab27f5d4bef7a4259741e625eb13b49ff4f084116 +size 2832 diff --git a/assets/voxygen/voxel/sprite/misc/street_lamp.vox b/assets/voxygen/voxel/sprite/misc/street_lamp.vox index 6f738e8bb5..ec36daeb42 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:5909211edd73fe743f81ae280aaf2e6022a3e5d0430a7c79509479401a01dac0 -size 4776 +oid sha256:976da129142c18f06cdf0f4f89d50f328ba9a374985560d22fa1ae944843b0e4 +size 3608 diff --git a/assets/voxygen/voxel/weapon/staff/ore-nature.vox b/assets/voxygen/voxel/weapon/staff/ore-nature.vox new file mode 100644 index 0000000000..772fee747a --- /dev/null +++ b/assets/voxygen/voxel/weapon/staff/ore-nature.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5f6949d842517a5fb70205f613c239ca3a9e32744cda67e5d4d9e16af8a99638 +size 1680 diff --git a/assets/voxygen/voxel/weapon/staff/wood-nature.vox b/assets/voxygen/voxel/weapon/staff/wood-nature.vox index cfb29487b3..772fee747a 100644 --- a/assets/voxygen/voxel/weapon/staff/wood-nature.vox +++ b/assets/voxygen/voxel/weapon/staff/wood-nature.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7d170f609ca3ec724429acdefb3c076f334265a9bed58d644bfb4e202e91ca94 -size 1448 +oid sha256:5f6949d842517a5fb70205f613c239ca3a9e32744cda67e5d4d9e16af8a99638 +size 1680 diff --git a/common/src/comp/body.rs b/common/src/comp/body.rs index fd30c24a20..9bc38b8c30 100644 --- a/common/src/comp/body.rs +++ b/common/src/comp/body.rs @@ -148,7 +148,7 @@ impl Body { Body::Dragon(_) => 2.5, Body::BirdSmall(_) => 0.2, Body::FishSmall(_) => 0.2, - Body::BipedLarge(_) => 2.0, + Body::BipedLarge(_) => 3.0, Body::Golem(_) => 2.5, Body::QuadrupedLow(_) => 1.0, Body::Object(_) => 0.3, @@ -172,7 +172,7 @@ impl Body { Body::Dragon(_) => 5.0, Body::BirdSmall(_) => 0.4, Body::FishSmall(_) => 0.4, - Body::BipedLarge(_) => 4.0, + Body::BipedLarge(_) => 5.0, Body::Golem(_) => 5.0, Body::QuadrupedLow(_) => 0.5, Body::Object(_) => 0.6, @@ -184,36 +184,36 @@ impl Body { match self { Body::Humanoid(_) => 400, Body::QuadrupedSmall(quadruped_small) => match quadruped_small.species { - quadruped_small::Species::Boar => 180, - quadruped_small::Species::Batfox => 100, - quadruped_small::Species::Dodarock => 320, - quadruped_small::Species::Holladon => 250, - quadruped_small::Species::Hyena => 150, - quadruped_small::Species::Truffler => 180, - _ => 80, + quadruped_small::Species::Boar => 360, + quadruped_small::Species::Batfox => 200, + quadruped_small::Species::Dodarock => 640, + quadruped_small::Species::Holladon => 500, + quadruped_small::Species::Hyena => 300, + quadruped_small::Species::Truffler => 360, + _ => 200, }, Body::QuadrupedMedium(quadruped_medium) => match quadruped_medium.species { - quadruped_medium::Species::Grolgar => 300, - quadruped_medium::Species::Saber => 200, - quadruped_medium::Species::Tiger => 200, - quadruped_medium::Species::Tuskram => 300, - quadruped_medium::Species::Lion => 400, - quadruped_medium::Species::Tarasque => 600, - quadruped_medium::Species::Wolf => 200, + quadruped_medium::Species::Grolgar => 600, + quadruped_medium::Species::Saber => 400, + quadruped_medium::Species::Tiger => 400, + quadruped_medium::Species::Tuskram => 600, + quadruped_medium::Species::Lion => 800, + quadruped_medium::Species::Tarasque => 1200, + quadruped_medium::Species::Wolf => 400, quadruped_medium::Species::Frostfang => 400, - quadruped_medium::Species::Mouflon => 300, - quadruped_medium::Species::Catoblepas => 500, - quadruped_medium::Species::Bonerattler => 300, - _ => 200, + quadruped_medium::Species::Mouflon => 500, + quadruped_medium::Species::Catoblepas => 1000, + quadruped_medium::Species::Bonerattler => 400, + _ => 400, }, Body::BirdMedium(bird_medium) => match bird_medium.species { bird_medium::Species::Chicken => 50, bird_medium::Species::Duck => 50, bird_medium::Species::Goose => 60, bird_medium::Species::Parrot => 60, - bird_medium::Species::Peacock => 55, - bird_medium::Species::Cockatrice => 110, - bird_medium::Species::Eagle => 110, + bird_medium::Species::Peacock => 60, + bird_medium::Species::Cockatrice => 400, + bird_medium::Species::Eagle => 400, _ => 100, }, Body::FishMedium(_) => 50, @@ -223,11 +223,11 @@ impl Body { Body::BirdSmall(_) => 50, Body::FishSmall(_) => 20, Body::BipedLarge(biped_large) => match biped_large.species { - biped_large::Species::Ogre => 700, - biped_large::Species::Cyclops => 800, - biped_large::Species::Wendigo => 800, - biped_large::Species::Troll => 600, - biped_large::Species::Dullahan => 1200, + biped_large::Species::Ogre => 2500, + biped_large::Species::Cyclops => 2000, + biped_large::Species::Wendigo => 2000, + biped_large::Species::Troll => 1500, + biped_large::Species::Dullahan => 2000, _ => 1000, }, Body::Object(_) => 10000, @@ -238,15 +238,15 @@ impl Body { _ => 50, }, Body::QuadrupedLow(quadruped_low) => match quadruped_low.species { - quadruped_low::Species::Crocodile => 200, - quadruped_low::Species::Alligator => 200, - quadruped_low::Species::Salamander => 100, - quadruped_low::Species::Monitor => 80, - quadruped_low::Species::Asp => 80, - quadruped_low::Species::Tortoise => 200, - quadruped_low::Species::Rocksnapper => 500, - quadruped_low::Species::Pangolin => 60, - quadruped_low::Species::Maneater => 250, + quadruped_low::Species::Crocodile => 600, + quadruped_low::Species::Alligator => 600, + quadruped_low::Species::Salamander => 400, + quadruped_low::Species::Monitor => 150, + quadruped_low::Species::Asp => 400, + quadruped_low::Species::Tortoise => 600, + quadruped_low::Species::Rocksnapper => 1000, + quadruped_low::Species::Pangolin => 80, + quadruped_low::Species::Maneater => 400, _ => 200, }, } @@ -287,7 +287,7 @@ impl Body { bird_medium::Species::Peacock => 10, bird_medium::Species::Cockatrice => 10, bird_medium::Species::Eagle => 10, - _ => 10, + _ => 20, }, Body::FishMedium(_) => 10, Body::Dragon(dragon) => match dragon.species { @@ -308,7 +308,7 @@ impl Body { _ => 150, }, Body::Critter(critter) => match critter.species { - _ => 10, + _ => 20, }, Body::QuadrupedLow(quadruped_low) => match quadruped_low.species { quadruped_low::Species::Crocodile => 20, @@ -331,7 +331,7 @@ impl Body { Body::Humanoid(_) => 5, Body::QuadrupedSmall(quadruped_small) => match quadruped_small.species { quadruped_small::Species::Boar => 6, - quadruped_small::Species::Batfox => 6, + quadruped_small::Species::Batfox => 2, quadruped_small::Species::Dodarock => 6, quadruped_small::Species::Holladon => 8, quadruped_small::Species::Hyena => 6, @@ -416,11 +416,11 @@ impl Body { Body::BirdSmall(_) => 1, Body::FishSmall(_) => 1, Body::BipedLarge(biped_large) => match biped_large.species { - _ => 5, + _ => 2, }, Body::Object(_) => 0, Body::Golem(golem) => match golem.species { - _ => 10, + _ => 5, }, Body::Critter(critter) => match critter.species { _ => 1, diff --git a/common/src/comp/inventory/item/mod.rs b/common/src/comp/inventory/item/mod.rs index 4a66786a8d..b4164ac03c 100644 --- a/common/src/comp/inventory/item/mod.rs +++ b/common/src/comp/inventory/item/mod.rs @@ -10,6 +10,7 @@ use crate::{ lottery::Lottery, terrain::{Block, BlockKind}, }; +use rand::prelude::*; use serde::{Deserialize, Serialize}; use specs::{Component, FlaggedStorage}; use specs_idvs::IdvStorage; @@ -144,6 +145,7 @@ impl Item { } pub fn try_reclaim_from_block(block: Block) -> Option { + let mut rng = rand::thread_rng(); match block.kind() { BlockKind::Apple => Some(assets::load_expect_cloned("common.items.food.apple")), BlockKind::Mushroom => Some(assets::load_expect_cloned("common.items.food.mushroom")), @@ -171,7 +173,27 @@ impl Item { BlockKind::ShortGrass => Some(assets::load_expect_cloned("common.items.grasses.short")), BlockKind::Coconut => Some(assets::load_expect_cloned("common.items.food.coconut")), BlockKind::Chest => { - let chosen = assets::load_expect::>("common.loot_table"); + let chosen = match rng.gen_range(0, 5) { + 0 => { + assets::load_expect::>("common.loot_tables.loot_table_food") + }, + 1 => assets::load_expect::>( + "common.loot_tables.loot_table_crafting", + ), + 2 => assets::load_expect::>( + "common.loot_tables.loot_table_weapon_uncommon", + ), + 3 => assets::load_expect::>( + "common.loot_tables.loot_table_armor_misc", + ), + _ => assets::load_expect::>("common.loot_tables.loot_table"), + }; + let chosen = chosen.choose(); + Some(assets::load_expect_cloned(chosen)) + }, + BlockKind::Crate => { + let chosen = + assets::load_expect::>("common.loot_tables.loot_table_food"); let chosen = chosen.choose(); Some(assets::load_expect_cloned(chosen)) diff --git a/common/src/comp/inventory/item/tool.rs b/common/src/comp/inventory/item/tool.rs index 335807ad3c..1356a3e636 100644 --- a/common/src/comp/inventory/item/tool.rs +++ b/common/src/comp/inventory/item/tool.rs @@ -227,8 +227,27 @@ impl Tool { buildup_duration: Duration::from_millis(0), recover_duration: Duration::from_millis(1000), base_healthchange: (150.0 * self.base_power()) as i32, - range: 10.0, - max_angle: 45.0, + range: 100.0, + max_angle: 90.0, + }, + ] + } else if kind == "SceptreVelorite" { + vec![ + BasicMelee { + energy_cost: 0, + buildup_duration: Duration::from_millis(0), + recover_duration: Duration::from_millis(300), + base_healthchange: (-10.0 * self.base_power()) as i32, + range: 5.0, + max_angle: 20.0, + }, + BasicMelee { + energy_cost: 350, + buildup_duration: Duration::from_millis(0), + recover_duration: Duration::from_millis(1000), + base_healthchange: (150.0 * self.base_power()) as i32, + range: 100.0, + max_angle: 90.0, }, ] } else { diff --git a/common/src/lottery.rs b/common/src/lottery.rs index 6e4546f88e..f25a5966b7 100644 --- a/common/src/lottery.rs +++ b/common/src/lottery.rs @@ -51,7 +51,7 @@ mod tests { use crate::{assets, comp::Item}; #[test] fn test_loot_table() { - let test = assets::load_expect::>("common.loot_table"); + let test = assets::load_expect::>("common.loot_tables.loot_table"); for (_, item) in test.iter() { assert!( diff --git a/common/src/terrain/block.rs b/common/src/terrain/block.rs index 19e5499dbd..f2899f69a7 100644 --- a/common/src/terrain/block.rs +++ b/common/src/terrain/block.rs @@ -440,6 +440,7 @@ impl BlockKind { BlockKind::Stones => true, BlockKind::Twigs => true, BlockKind::ShinyGem => true, + BlockKind::Crate => true, _ => false, } } @@ -495,8 +496,9 @@ impl Block { | BlockKind::WardrobeSingle | BlockKind::WardrobeDouble | BlockKind::Pot + | BlockKind::Chest | BlockKind::DropGate - | BlockKind::DropGateBottom + | BlockKind::DropGateBottom | BlockKind::Door => Some(self.color[0] & 0b111), _ => None, } diff --git a/server/src/events/entity_manipulation.rs b/server/src/events/entity_manipulation.rs index f03fa99906..1876e67431 100644 --- a/server/src/events/entity_manipulation.rs +++ b/server/src/events/entity_manipulation.rs @@ -1,4 +1,4 @@ -use crate::{client::Client, Server, SpawnPoint, StateExt}; +use crate::{client::Client, comp::quadruped_small, Server, SpawnPoint, StateExt}; use common::{ assets, comp::{ @@ -15,6 +15,7 @@ use common::{ vol::{ReadVol, Vox}, }; use comp::item::Reagent; +use rand::prelude::*; use specs::{join::Join, saveload::MarkerAllocator, Entity as EcsEntity, WorldExt}; use tracing::error; use vek::Vec3; @@ -182,21 +183,182 @@ pub fn handle_destroy(server: &mut Server, entity: EcsEntity, cause: HealthSourc .write_storage::() .insert(entity, comp::CharacterState::default()); } else if state.ecs().read_storage::().contains(entity) { - // Replace npc with loot + // Decide for a loot drop before turning into a lootbag + let old_body = state.ecs().write_storage::().remove(entity); + let mut rng = rand::thread_rng(); + let drop = match old_body { + Some(common::comp::Body::Humanoid(_)) => match rng.gen_range(0, 4) { + 0 => assets::load_expect::>( + "common.loot_tables.loot_table_humanoids", + ), + 1 => assets::load_expect::>( + "common.loot_tables.loot_table_armor_light", + ), + 2 => assets::load_expect::>( + "common.loot_tables.loot_table_armor_cloth", + ), + 3 => assets::load_expect::>( + "common.loot_tables.loot_table_weapon_common", + ), + _ => assets::load_expect::>( + "common.loot_tables.loot_table_humanoids", + ), + }, + Some(common::comp::Body::QuadrupedSmall(quadruped_small)) => { + match quadruped_small.species { + quadruped_small::Species::Dodarock => match rng.gen_range(0, 6) { + 0 => assets::load_expect::>( + "common.loot_tables.loot_table_armor_misc", + ), + 1 => assets::load_expect::>( + "common.loot_tables.loot_table_rocks", + ), + _ => assets::load_expect::>( + "common.loot_tables.loot_table_rocks", + ), + }, + _ => match rng.gen_range(0, 4) { + 0 => assets::load_expect::>( + "common.loot_tables.loot_table_food", + ), + 1 => assets::load_expect::>( + "common.loot_tables.loot_table_armor_misc", + ), + 2 => assets::load_expect::>( + "common.loot_tables.loot_table_animal_parts", + ), + _ => assets::load_expect::>( + "common.loot_tables.loot_table_animal_parts", + ), + }, + } + }, + Some(common::comp::Body::QuadrupedMedium(quadruped_medium)) => { + match quadruped_medium.species { + _ => match rng.gen_range(0, 4) { + 0 => assets::load_expect::>( + "common.loot_tables.loot_table_food", + ), + 1 => assets::load_expect::>( + "common.loot_tables.loot_table_armor_misc", + ), + 2 => assets::load_expect::>( + "common.loot_tables.loot_table_animal_parts", + ), + _ => assets::load_expect::>( + "common.loot_tables.loot_table_animal_parts", + ), + }, + } + }, + Some(common::comp::Body::BirdMedium(bird_medium)) => match bird_medium.species { + _ => match rng.gen_range(0, 3) { + 0 => { + assets::load_expect::>("common.loot_tables.loot_table_food") + }, + 1 => assets::load_expect::>( + "common.loot_tables.loot_table_armor_misc", + ), + _ => assets::load_expect::>("common.loot_tables.loot_table"), + }, + }, + Some(common::comp::Body::BipedLarge(biped_large)) => match biped_large.species { + _ => match rng.gen_range(0, 9) { + 0 => { + assets::load_expect::>("common.loot_tables.loot_table_food") + }, + 1 => assets::load_expect::>( + "common.loot_tables.loot_table_armor_misc", + ), + 2 => assets::load_expect::>( + "common.loot_tables.loot_table_armor_light", + ), + 3 => assets::load_expect::>( + "common.loot_tables.loot_table_armor_heavy", + ), + 4 => assets::load_expect::>( + "common.loot_tables.loot_table_armor_misc", + ), + 5 => assets::load_expect::>( + "common.loot_tables.loot_table_weapon_common", + ), + 6 => assets::load_expect::>( + "common.loot_tables.loot_table_weapon_uncommon", + ), + 7 => assets::load_expect::>( + "common.loot_tables.loot_table_weapon_rare", + ), + _ => assets::load_expect::>("common.loot_tables.loot_table"), + }, + }, + Some(common::comp::Body::Golem(golem)) => match golem.species { + _ => match rng.gen_range(0, 9) { + 0 => { + assets::load_expect::>("common.loot_tables.loot_table_food") + }, + 1 => assets::load_expect::>( + "common.loot_tables.loot_table_armor_misc", + ), + 2 => assets::load_expect::>( + "common.loot_tables.loot_table_armor_light", + ), + 3 => assets::load_expect::>( + "common.loot_tables.loot_table_armor_heavy", + ), + 4 => assets::load_expect::>( + "common.loot_tables.loot_table_armor_misc", + ), + 5 => assets::load_expect::>( + "common.loot_tables.loot_table_weapon_common", + ), + 6 => assets::load_expect::>( + "common.loot_tables.loot_table_weapon_uncommon", + ), + 7 => assets::load_expect::>( + "common.loot_tables.loot_table_weapon_rare", + ), + _ => assets::load_expect::>("common.loot_tables.loot_table"), + }, + }, + Some(common::comp::Body::Critter(critter)) => match critter.species { + _ => match rng.gen_range(0, 3) { + 0 => { + assets::load_expect::>("common.loot_tables.loot_table_food") + }, + 1 => assets::load_expect::>( + "common.loot_tables.loot_table_animal_parts", + ), + _ => assets::load_expect::>("common.loot_tables.loot_table"), + }, + }, + Some(common::comp::Body::Dragon(_)) => { + assets::load_expect::>("common.loot_tables.loot_table_weapon_rare") + }, + Some(common::comp::Body::QuadrupedLow(quadruped_low)) => match quadruped_low.species { + _ => match rng.gen_range(0, 3) { + 0 => { + assets::load_expect::>("common.loot_tables.loot_table_food") + }, + 1 => assets::load_expect::>( + "common.loot_tables.loot_table_animal_parts", + ), + _ => assets::load_expect::>("common.loot_tables.loot_table"), + }, + }, + _ => assets::load_expect::>("common.loot_tables.loot_table"), + }; + let drop = drop.choose(); + // Replace npc with lootbag containing drop let _ = state .ecs() .write_storage() .insert(entity, Body::Object(object::Body::Pouch)); - let mut item_drops = state.ecs().write_storage::(); let item = if let Some(item_drop) = item_drops.get(entity).cloned() { item_drops.remove(entity); item_drop.0 } else { - let chosen = assets::load_expect::>("common.loot_table"); - let chosen = chosen.choose(); - - assets::load_expect_cloned(chosen) + assets::load_expect_cloned(drop) }; let _ = state.ecs().write_storage().insert(entity, item); diff --git a/server/src/sys/terrain.rs b/server/src/sys/terrain.rs index 31a197d1c8..d64b73accf 100644 --- a/server/src/sys/terrain.rs +++ b/server/src/sys/terrain.rs @@ -2,7 +2,7 @@ use super::SysTimer; use crate::{chunk_generator::ChunkGenerator, client::Client, Tick}; use common::{ assets, - comp::{self, item, Alignment, CharacterAbility, ItemConfig, Player, Pos}, + comp::{self, bird_medium, item, Alignment, CharacterAbility, ItemConfig, Player, Pos}, event::{EventBus, ServerEvent}, generation::get_npc_name, msg::ServerMsg, @@ -158,16 +158,16 @@ impl<'a> System<'a> for Sys { shoulder: None, chest: Some(assets::load_expect_cloned( match rand::thread_rng().gen_range(0, 10) { - 0 => "common.items.armor.chest.worker_green_0", - 1 => "common.items.armor.chest.worker_green_1", - 2 => "common.items.armor.chest.worker_red_0", - 3 => "common.items.armor.chest.worker_red_1", - 4 => "common.items.armor.chest.worker_purple_0", - 5 => "common.items.armor.chest.worker_purple_1", - 6 => "common.items.armor.chest.worker_yellow_0", - 7 => "common.items.armor.chest.worker_yellow_1", - 8 => "common.items.armor.chest.worker_orange_0", - _ => "common.items.armor.chest.worker_orange_1", + 0 => "common.items.npc_armor.chest.worker_green_0", + 1 => "common.items.npc_armor.chest.worker_green_1", + 2 => "common.items.npc_armor.chest.worker_red_0", + 3 => "common.items.npc_armor.chest.worker_red_1", + 4 => "common.items.npc_armor.chest.worker_purple_0", + 5 => "common.items.npc_armor.chest.worker_purple_1", + 6 => "common.items.npc_armor.chest.worker_yellow_0", + 7 => "common.items.npc_armor.chest.worker_yellow_1", + 8 => "common.items.npc_armor.chest.worker_orange_0", + _ => "common.items.npc_armor.chest.worker_orange_1", }, )), belt: Some(assets::load_expect_cloned( @@ -312,7 +312,15 @@ impl<'a> System<'a> for Sys { .health .set_to(stats.health.maximum(), comp::HealthSource::Revive); - let can_speak = alignment == comp::Alignment::Npc; + let can_speak = match body { + comp::Body::Humanoid(_) => alignment == comp::Alignment::Npc, + comp::Body::BirdMedium(bird_medium) => match bird_medium.species { + // Parrots like to have a word in this, too... + bird_medium::Species::Parrot => alignment == comp::Alignment::Npc, + _ => false, + }, + _ => false, + }; // TODO: This code sets an appropriate base_damage for the enemy. This doesn't // work because the damage is now saved in an ability diff --git a/voxygen/src/hud/crafting.rs b/voxygen/src/hud/crafting.rs index 99c706a5dc..799e275060 100644 --- a/voxygen/src/hud/crafting.rs +++ b/voxygen/src/hud/crafting.rs @@ -176,6 +176,7 @@ impl<'a> Widget for Crafting<'a> { // Alignment Rectangle::fill_with([136.0, 378.0], color::TRANSPARENT) .top_left_with_margins_on(ids.window_frame, 74.0, 5.0) + .scroll_kids_vertically() .set(ids.align_rec, ui); Rectangle::fill_with([274.0, 340.0], color::TRANSPARENT) .top_right_with_margins_on(ids.window, 74.0, 5.0) @@ -314,24 +315,6 @@ impl<'a> Widget for Crafting<'a> { state.update(|s| s.selected_recipe = Some(name.clone())); } } - // Image BG - /*Rectangle::fill_with([10.0, 10.0], color::TRANSPARENT) - .w_h(20.0, 20.0) - .mid_left_of(state.ids.recipe_names[i]) - .set(state.ids.recipe_img_frame[i], ui); - //Item Image - Image::new( - self.item_imgs - .img_id_or_not_found_img((&recipe.output.0).into()), - ) - .w_h(18.0, 18.0) - .color( - can_perform - .then_some(Some(TEXT_COLOR)) - .unwrap_or(Some(TEXT_GRAY_COLOR)), - ) - .middle_of(state.ids.recipe_img_frame[i]) - .set(state.ids.recipe_img[i], ui);*/ } //Ingredients diff --git a/voxygen/src/hud/mod.rs b/voxygen/src/hud/mod.rs index ddf529cb09..9f4e7e2a71 100644 --- a/voxygen/src/hud/mod.rs +++ b/voxygen/src/hud/mod.rs @@ -192,6 +192,7 @@ widget_ids! { help, help_info, debug_info, + lantern_info, // Window Frames window_frame_0, @@ -430,6 +431,7 @@ impl Show { if !self.esc_menu { self.crafting = open; self.bag = open; + self.map = false; self.want_grab = !open; } } @@ -1582,9 +1584,9 @@ impl Hud { .replace("{key}", help_key.to_string().as_str()), ) .color(TEXT_COLOR) - .top_left_with_margins_on(ui_widgets.window, 5.0, 5.0) + .bottom_left_with_margins_on(ui_widgets.window, 210.0, 10.0) .font_id(self.fonts.cyri.conrod_id) - .font_size(self.fonts.cyri.scale(16)) + .font_size(self.fonts.cyri.scale(12)) .set(self.ids.help_info, ui_widgets); } // Info about Debug Shortcut @@ -1600,11 +1602,29 @@ impl Hud { .replace("{key}", toggle_debug_key.to_string().as_str()), ) .color(TEXT_COLOR) - .down_from(self.ids.help_info, 5.0) + .top_left_with_margins_on(ui_widgets.window, 5.0, 5.0) .font_id(self.fonts.cyri.conrod_id) .font_size(self.fonts.cyri.scale(12)) .set(self.ids.debug_info, ui_widgets); } + // Lantern Key + if let Some(toggle_lantern_key) = global_state + .settings + .controls + .get_binding(GameInput::ToggleLantern) + { + Text::new( + &self + .voxygen_i18n + .get("hud.press_key_to_toggle_lantern_fmt") + .replace("{key}", toggle_lantern_key.to_string().as_str()), + ) + .color(TEXT_COLOR) + .up_from(self.ids.help_info, 2.0) + .font_id(self.fonts.cyri.conrod_id) + .font_size(self.fonts.cyri.scale(12)) + .set(self.ids.lantern_info, ui_widgets); + } } // Help Text @@ -1700,8 +1720,15 @@ impl Hud { { Some(bag::Event::Stats) => self.show.stats = !self.show.stats, Some(bag::Event::Close) => { + self.show.stats = false; self.show.bag(false); - self.force_ungrab = true; + self.show.crafting(false); + if self.show.social == false { + self.show.want_grab = true; + self.force_ungrab = false; + } else { + self.force_ungrab = true + }; }, None => {}, } @@ -1775,8 +1802,15 @@ impl Hud { events.push(Event::CraftRecipe(r)); }, crafting::Event::Close => { + self.show.stats = false; self.show.crafting(false); - self.force_ungrab = true; + self.show.bag(false); + if self.show.social == false { + self.show.want_grab = true; + self.force_ungrab = false; + } else { + self.force_ungrab = true + }; }, } } @@ -1860,6 +1894,8 @@ impl Hud { // Unpause the game if we are on singleplayer so that we can logout #[cfg(feature = "singleplayer")] global_state.unpause(); + self.show.want_grab = true; + self.force_ungrab = false; self.show.settings(false) }, @@ -1996,7 +2032,12 @@ impl Hud { match event { social::Event::Close => { self.show.social(false); - self.force_ungrab = true; + if self.show.bag == false { + self.show.want_grab = true; + self.force_ungrab = false; + } else { + self.force_ungrab = true + }; }, social::Event::ChangeSocialTab(social_tab) => { self.show.open_social_tab(social_tab) @@ -2041,7 +2082,8 @@ impl Hud { { Some(spell::Event::Close) => { self.show.spell(false); - self.force_ungrab = true; + self.show.want_grab = true; + self.force_ungrab = false; }, None => {}, } @@ -2064,7 +2106,8 @@ impl Hud { match event { map::Event::Close => { self.show.map(false); - self.force_ungrab = true; + self.show.want_grab = true; + self.force_ungrab = false; }, map::Event::MapZoom(map_zoom) => { events.push(Event::MapZoom(map_zoom)); diff --git a/voxygen/src/hud/overhead.rs b/voxygen/src/hud/overhead.rs index f7ddf69a2f..5f7d059fcd 100644 --- a/voxygen/src/hud/overhead.rs +++ b/voxygen/src/hud/overhead.rs @@ -193,9 +193,9 @@ impl<'a> Widget for Overhead<'a> { .font_size(font_size) .color(if self.in_group { GROUP_MEMBER - } else { - DEFAULT_NPC - }) + /*} else if targets player { //TODO: Add a way to see if the entity is trying to attack the player, their pet(s) or a member of their group and recolour their nametag accordingly + DEFAULT_NPC*/ + } else {DEFAULT_NPC}) .x_y(0.0, name_y + 1.0) .parent(id) .set(state.ids.name, ui); diff --git a/voxygen/src/hud/skillbar.rs b/voxygen/src/hud/skillbar.rs index 907ac4a5af..08e106cc27 100644 --- a/voxygen/src/hud/skillbar.rs +++ b/voxygen/src/hud/skillbar.rs @@ -700,6 +700,7 @@ impl<'a> Widget for Skillbar<'a> { Some(ToolKind::Bow(_)) => self.imgs.bow_m2, Some(ToolKind::Staff(kind)) => match kind.as_ref() { "Sceptre" => self.imgs.heal_0, + "SceptreVelorite" => self.imgs.heal_0, _ => self.imgs.staff_m2, }, Some(ToolKind::Debug(kind)) => match kind.as_ref() { @@ -726,6 +727,13 @@ impl<'a> Widget for Skillbar<'a> { Color::Rgba(0.3, 0.3, 0.3, 0.8) } }, + "SceptreVelorite" => { + if self.energy.current() as f64 >= 400.0 { + Color::Rgba(1.0, 1.0, 1.0, 1.0) + } else { + Color::Rgba(0.3, 0.3, 0.3, 0.8) + } + }, _ => Color::Rgba(1.0, 1.0, 1.0, 1.0), }, _ => Color::Rgba(1.0, 1.0, 1.0, 1.0), diff --git a/voxygen/src/menu/char_selection/ui.rs b/voxygen/src/menu/char_selection/ui.rs index 526df2c80c..a3fd267cc1 100644 --- a/voxygen/src/menu/char_selection/ui.rs +++ b/voxygen/src/menu/char_selection/ui.rs @@ -44,9 +44,11 @@ widget_ids! { // Background and logo charlist_bg, charlist_frame, + charlist_bottom, + selection_bot, charlist_alignment, selection_scrollbar, - creation_bg, + creation_bot, creation_frame, creation_alignment, server_name_text, @@ -180,8 +182,6 @@ widget_ids! { image_ids! { struct Imgs { - charlist_frame: "voxygen.element.frames.window_4", - server_frame: "voxygen.element.frames.server_frame", // Info Window info_frame: "voxygen.element.frames.info_frame", @@ -192,6 +192,7 @@ image_ids! { delete_button_press: "voxygen.element.buttons.x_red_press", + frame_bot: "voxygen.element.frames.banner_bot", selection: "voxygen.element.frames.selection", selection_hover: "voxygen.element.frames.selection_hover", selection_press: "voxygen.element.frames.selection_press", @@ -210,8 +211,6 @@ image_ids! { staff: "voxygen.element.icons.staff", // Species Icons - male: "voxygen.element.icons.male", - female: "voxygen.element.icons.female", human_m: "voxygen.element.icons.human_m", human_f: "voxygen.element.icons.human_f", orc_m: "voxygen.element.icons.orc_m", @@ -224,6 +223,7 @@ image_ids! { elf_f: "voxygen.element.icons.elf_f", danari_m: "voxygen.element.icons.danari_m", danari_f: "voxygen.element.icons.danari_f", + //unknown: "voxygen.element.icons.missing_icon_grey", // Icon Borders icon_border: "voxygen.element.buttons.border", icon_border_mo: "voxygen.element.buttons.border_mo", @@ -447,6 +447,7 @@ impl CharSelectionUi { }) .title_font_size(self.fonts.cyri.scale(15)) .desc_font_size(self.fonts.cyri.scale(10)) + .parent(ui_widgets.window) .font_id(self.fonts.cyri.conrod_id) .title_text_color(TEXT_COLOR) .desc_text_color(TEXT_COLOR_2); @@ -600,26 +601,21 @@ impl CharSelectionUi { }; // Background for Server Frame - Rectangle::fill_with([386.0, 95.0], color::rgba(0.0, 0.0, 0.0, 0.9)) + Rectangle::fill_with([400.0, 95.0], color::rgba(0.0, 0.0, 0.0, 0.8)) .top_left_with_margins_on(ui_widgets.window, 30.0, 30.0) .set(self.ids.server_frame_bg, ui_widgets); - Image::new(self.imgs.server_frame) - .w_h(400.0, 100.0) - .color(Some(UI_MAIN)) - .middle_of(self.ids.server_frame_bg) - .set(self.ids.server_frame, ui_widgets); // Background for Char List - Rectangle::fill_with([386.0, 788.0], color::rgba(0.0, 0.0, 0.0, 0.8)) - .down_from(self.ids.server_frame_bg, 20.0) - .set(self.ids.charlist_bg, ui_widgets); - Image::new(self.imgs.charlist_frame) - .w_h(400.0, 800.0) - .middle_of(self.ids.charlist_bg) - .color(Some(UI_MAIN)) + Rectangle::fill_with([400.0, 800.0], color::rgba(0.0, 0.0, 0.0, 0.8)) + .down_from(self.ids.server_frame_bg, 5.0) .set(self.ids.charlist_frame, ui_widgets); - Rectangle::fill_with([386.0, 783.0], color::TRANSPARENT) - .middle_of(self.ids.charlist_bg) + Image::new(self.imgs.frame_bot) + .w_h(400.0, 48.0) + .down_from(self.ids.charlist_frame, 0.0) + .color(Some(Color::Rgba(1.0, 1.0, 1.0, 0.8))) + .set(self.ids.selection_bot, ui_widgets); + Rectangle::fill_with([386.0, 800.0], color::TRANSPARENT) + .mid_top_with_margin_on(self.ids.charlist_frame, 2.0) .scroll_kids() .scroll_kids_vertically() .set(self.ids.charlist_alignment, ui_widgets); @@ -951,21 +947,21 @@ impl CharSelectionUi { // Window Rectangle::fill_with( - [386.0, ui_widgets.win_h - ui_widgets.win_h * 0.2], + [400.0, ui_widgets.win_h - ui_widgets.win_h * 0.15], color::rgba(0.0, 0.0, 0.0, 0.8), ) .top_left_with_margins_on(ui_widgets.window, 30.0, 30.0) - .set(self.ids.creation_bg, ui_widgets); - Image::new(self.imgs.charlist_frame) - .w_h(400.0, ui_widgets.win_h - ui_widgets.win_h * 0.19) - .middle_of(self.ids.creation_bg) - .color(Some(UI_MAIN)) - .set(self.ids.charlist_frame, ui_widgets); + .set(self.ids.creation_frame, ui_widgets); + Image::new(self.imgs.frame_bot) + .w_h(400.0, 48.0) + .down_from(self.ids.creation_frame, 0.0) + .color(Some(Color::Rgba(1.0, 1.0, 1.0, 0.8))) + .set(self.ids.creation_bot, ui_widgets); Rectangle::fill_with( - [386.0, ui_widgets.win_h - ui_widgets.win_h * 0.19], + [386.0, ui_widgets.win_h - ui_widgets.win_h * 0.15], color::TRANSPARENT, ) - .middle_of(self.ids.creation_bg) + .mid_top_with_margin_on(self.ids.creation_frame, 10.0) .scroll_kids_vertically() .set(self.ids.creation_alignment, ui_widgets); Scrollbar::y_axis(self.ids.creation_alignment) @@ -974,19 +970,29 @@ impl CharSelectionUi { .rgba(0.33, 0.33, 0.33, 1.0) .set(self.ids.selection_scrollbar, ui_widgets); - // Male/Female/Species Icons - Text::new(&self.voxygen_i18n.get("char_selection.character_creation")) - .mid_top_with_margin_on(self.ids.creation_alignment, 10.0) - .font_size(self.fonts.cyri.scale(24)) - .font_id(self.fonts.cyri.conrod_id) - .color(TEXT_COLOR) - .set(self.ids.bodyspecies_text, ui_widgets); + // BodyType/Species Icons + let body_m_ico = match body.species { + humanoid::Species::Human => self.imgs.human_m, + humanoid::Species::Orc => self.imgs.orc_m, + humanoid::Species::Dwarf => self.imgs.dwarf_m, + humanoid::Species::Elf => self.imgs.elf_m, + humanoid::Species::Undead => self.imgs.undead_m, + humanoid::Species::Danari => self.imgs.danari_m, + }; + let body_f_ico = match body.species { + humanoid::Species::Human => self.imgs.human_f, + humanoid::Species::Orc => self.imgs.orc_f, + humanoid::Species::Dwarf => self.imgs.dwarf_f, + humanoid::Species::Elf => self.imgs.elf_f, + humanoid::Species::Undead => self.imgs.undead_f, + humanoid::Species::Danari => self.imgs.danari_f, + }; // Alignment Rectangle::fill_with([140.0, 72.0], color::TRANSPARENT) .mid_top_with_margin_on(self.ids.creation_alignment, 60.0) .set(self.ids.creation_buttons_alignment_1, ui_widgets); - // Male - Image::new(self.imgs.male) + // Bodytype M + Image::new(body_m_ico) .w_h(70.0, 70.0) .top_left_with_margins_on(self.ids.creation_buttons_alignment_1, 0.0, 0.0) .set(self.ids.male, ui_widgets); @@ -1004,8 +1010,8 @@ impl CharSelectionUi { body.body_type = humanoid::BodyType::Male; body.validate(); } - // Female - Image::new(self.imgs.female) + // Bodytype F + Image::new(body_f_ico) .w_h(70.0, 70.0) .top_right_with_margins_on(self.ids.creation_buttons_alignment_1, 0.0, 0.0) .set(self.ids.female, ui_widgets); diff --git a/voxygen/src/scene/terrain.rs b/voxygen/src/scene/terrain.rs index 47cde9862b..e045467285 100644 --- a/voxygen/src/scene/terrain.rs +++ b/voxygen/src/scene/terrain.rs @@ -2109,7 +2109,7 @@ impl Terrain { make_models( (BlockKind::HangingSign, 0), "voxygen.voxel.sprite.furniture.hanging_sign-0", - Vec3::new(-3.5, -28.0, -4.0), + Vec3::new(-3.5, -16.0, 0.0), Vec3::one(), ), // WallLamp diff --git a/voxygen/src/session.rs b/voxygen/src/session.rs index 076b18901b..f83a6d3583 100644 --- a/voxygen/src/session.rs +++ b/voxygen/src/session.rs @@ -1146,7 +1146,7 @@ impl PlayState for SessionState { } /// Max distance an entity can be "targeted" -const MAX_TARGET_RANGE: f32 = 150.0; +const MAX_TARGET_RANGE: f32 = 300.0; /// Calculate what the cursor is pointing at within the 3d scene #[allow(clippy::type_complexity)] fn under_cursor( diff --git a/world/src/layer/mod.rs b/world/src/layer/mod.rs index 4cc286e2ec..4c2fa96f50 100644 --- a/world/src/layer/mod.rs +++ b/world/src/layer/mod.rs @@ -29,7 +29,7 @@ pub struct Colors { fn close(x: f32, tgt: f32, falloff: f32) -> f32 { (1.0 - (x - tgt).abs() / falloff).max(0.0).powf(0.5) } -const MUSH_FACT: f32 = 0.001; // To balance everything around the mushroom spawning rate +const MUSH_FACT: f32 = 0.0001; // To balance everything around the mushroom spawning rate pub fn apply_scatter_to<'a>( wpos2d: Vec2, mut get_column: impl FnMut(Vec2) -> Option<&'a ColumnSample<'a>>, @@ -130,10 +130,10 @@ pub fn apply_scatter_to<'a>( // Collecable Objects // Only spawn twigs in temperate forests (Twigs, false, |c| { - ((c.tree_density - 0.5).max(0.0) * MUSH_FACT, None) + ((c.tree_density - 0.5).max(0.0) * MUSH_FACT *0.5, None) }), (Stones, false, |c| { - ((c.rockiness - 0.5).max(0.0) * MUSH_FACT, None) + ((c.rockiness - 0.5).max(0.0) * MUSH_FACT *0.5, None) }), // Don't spawn Mushrooms in snowy regions (Mushroom, false, |c| { @@ -145,30 +145,41 @@ pub fn apply_scatter_to<'a>( // Grass (ShortGrass, false, |c| { ( - close(c.temp, 0.0, 0.6).min(close(c.humidity, CONFIG.forest_hum, 0.35)) * 0.05, - Some((48.0, 0.7)), + close(c.temp, 0.3, 0.4).min(close(c.humidity, 0.6, 0.35)) * 0.5, + Some((48.0, 0.4)), ) }), (MediumGrass, false, |c| { ( - close(c.temp, 0.0, 0.5).min(close(c.humidity, CONFIG.forest_hum, 0.35)) * 0.05, - Some((48.0, 0.4)), + close(c.temp, 0.0, 0.6).min(close(c.humidity, 0.6, 0.35)) * 0.5, + Some((48.0, 0.2)), ) }), (LongGrass, false, |c| { ( - close(c.temp, 0.4, 0.5).min(close(c.humidity, CONFIG.forest_hum, 0.2)) * 0.05, - Some((48.0, 0.5)), + close(c.temp, 0.4, 0.4).min(close(c.humidity, 0.8, 0.2)) * 0.5, + Some((48.0, 0.1)), ) }), - (WheatGreen, false, |c| { + // Jungle Sprites + (LongGrass, false, |c| { + ( + close(c.temp, CONFIG.tropical_temp, 0.4).min(close( + c.humidity, + CONFIG.jungle_hum, + 0.6, + )) * 0.5, + Some((60.0, 5.0)), + ) + }), + /*(WheatGreen, false, |c| { ( close(c.temp, 0.4, 0.2).min(close(c.humidity, CONFIG.forest_hum, 0.1)) * MUSH_FACT * 0.001, None, ) - }), + }),*/ (GrassSnow, false, |c| { ( close(c.temp, CONFIG.snow_temp - 0.2, 0.4).min(close( @@ -186,8 +197,8 @@ pub fn apply_scatter_to<'a>( c.humidity, CONFIG.desert_hum, 0.3, - )) * MUSH_FACT - * 0.01, + )) * MUSH_FACT* 0.1, + None, ) }), @@ -197,19 +208,19 @@ pub fn apply_scatter_to<'a>( c.humidity, CONFIG.desert_hum, 0.2, - )) * MUSH_FACT - * 0.01, + )) * MUSH_FACT* 0.1, + None, ) }), - (BarrelCactus, false, |c| { + /*(BarrelCactus, false, |c| { ( close(c.temp, CONFIG.desert_temp + 0.2, 0.3).min(close( c.humidity, CONFIG.desert_hum, 0.2, )) * MUSH_FACT - * 0.01, + * 0.1, None, ) }), @@ -220,7 +231,7 @@ pub fn apply_scatter_to<'a>( CONFIG.desert_hum, 0.2, )) * MUSH_FACT - * 0.01, + * 0.1, None, ) }), @@ -231,7 +242,7 @@ pub fn apply_scatter_to<'a>( CONFIG.desert_hum, 0.2, )) * MUSH_FACT - * 0.01, + * 0.1, None, ) }), @@ -242,7 +253,7 @@ pub fn apply_scatter_to<'a>( CONFIG.desert_hum, 0.2, )) * MUSH_FACT - * 0.01, + * 0.1, None, ) }), @@ -253,10 +264,10 @@ pub fn apply_scatter_to<'a>( CONFIG.desert_hum, 0.2, )) * MUSH_FACT - * 0.01, + * 0.1, None, ) - }), + }),*/ ]; for y in 0..vol.size_xy().y as i32 { diff --git a/world/src/lib.rs b/world/src/lib.rs index 9d32ab1442..105859cb91 100644 --- a/world/src/lib.rs +++ b/world/src/lib.rs @@ -253,6 +253,7 @@ impl World { match quadruped_medium.species { quadruped_medium::Species::Catoblepas => is_hostile = false, quadruped_medium::Species::Mouflon => is_hostile = false, + quadruped_medium::Species::Tuskram => is_hostile = false, _ => is_hostile = true, } }, diff --git a/world/src/site/dungeon/mod.rs b/world/src/site/dungeon/mod.rs index 732cf06759..b6b04c5750 100644 --- a/world/src/site/dungeon/mod.rs +++ b/world/src/site/dungeon/mod.rs @@ -12,6 +12,7 @@ use common::{ astar::Astar, comp, generation::{ChunkSupplement, EntityInfo}, + lottery::Lottery, npc, store::{Id, Store}, terrain::{Block, BlockKind, Structure, TerrainChunkSize}, @@ -498,13 +499,17 @@ impl Floor { boss_spawn_tile + if boss_tile_is_pillar { 1 } else { 0 }; if tile_pos == boss_spawn_tile && tile_wcenter.xy() == wpos2d { + let chosen = assets::load_expect::>( + "common.loot_tables.loot_table_boss_cultist-leader", + ); + let chosen = chosen.choose(); let entity = EntityInfo::at(tile_wcenter.map(|e| e as f32)) .with_scale(4.0) .with_level(rng.gen_range(75, 100)) .with_alignment(comp::Alignment::Enemy) .with_body(comp::Body::Humanoid(comp::humanoid::Body::random())) .with_name(format!( - "{}, Cult Leader", + "{}\nCult Leader", npc::get_npc_name(npc::NpcKind::Humanoid) )) .with_main_tool(assets::load_expect_cloned( @@ -515,50 +520,7 @@ impl Floor { }, }, )) - .with_loot_drop(match rng.gen_range(0, 20) { - 0 => comp::Item::expect_from_asset( - "common.items.boss_drops.lantern", - ), - 1 => comp::Item::expect_from_asset( - "common.items.boss_drops.potions", - ), - 2 => comp::Item::expect_from_asset( - "common.items.armor.belt.cultist_belt", - ), - 3 => comp::Item::expect_from_asset( - "common.items.armor.chest.cultist_chest_purple", - ), - 4 => comp::Item::expect_from_asset( - "common.items.armor.foot.cultist_boots", - ), - 5 => comp::Item::expect_from_asset( - "common.items.armor.hand.cultist_hands_purple", - ), - 6 => comp::Item::expect_from_asset( - "common.items.armor.pants.cultist_legs_purple", - ), - 7 => comp::Item::expect_from_asset( - "common.items.armor.shoulder.cultist_shoulder_purple", - ), - 8 => comp::Item::expect_from_asset( - "common.items.weapons.staff.cultist_staff", - ), - 9 => comp::Item::expect_from_asset( - "common.items.weapons.sword.greatsword_2h_fine-1", - ), - 10 => comp::Item::expect_from_asset( - "common.items.weapons.hammer.cultist_purp_2h-0", - ), - 11 => comp::Item::expect_from_asset( - "common.items.weapons.sword.cultist_purp_2h-0", - ), - 12 => comp::Item::expect_from_asset( - "common.items.armor.back.dungeon_purple-0", - ), - _ => comp::Item::expect_from_asset( - "common.items.boss_drops.exp_flask", - ), - }); + .with_loot_drop(assets::load_expect_cloned(chosen)); supplement.add_entity(entity); } diff --git a/world/src/site/settlement/building/archetype/house.rs b/world/src/site/settlement/building/archetype/house.rs index aa15f844e8..daecf45a11 100644 --- a/world/src/site/settlement/building/archetype/house.rs +++ b/world/src/site/settlement/building/archetype/house.rs @@ -535,6 +535,7 @@ impl Archetype for House { .noise .chance(Vec3::new(center_offset.x, center_offset.y, z), 0.2) { + let mut rng = rand::thread_rng(); let furniture = match self.noise.get(Vec3::new( center_offset.x, center_offset.y, @@ -545,7 +546,13 @@ impl Archetype for House { 1 => BlockKind::ChairSingle, 2 => BlockKind::ChairDouble, 3 => BlockKind::CoatRack, - 4 => BlockKind::Crate, + 4 => { + if rng.gen_range(0, 8) == 0 { + BlockKind::Chest + } else { + BlockKind::Crate + } + }, 6 => BlockKind::DrawerMedium, 7 => BlockKind::DrawerSmall, 8 => BlockKind::TableSide, From 9d2fe79a78fbbf8182322dd21ba9e447becfdea6 Mon Sep 17 00:00:00 2001 From: Sam Date: Tue, 18 Aug 2020 18:31:50 -0500 Subject: [PATCH 09/12] Changes to how critical hits function for melee attacks. Removed ability for explosions to crit. Velorite sceptre now functions as healing staff. --- assets/common/recipe_book.ron | 2 +- common/src/comp/damage.rs | 10 +++++----- voxygen/src/hud/hotbar.rs | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/assets/common/recipe_book.ron b/assets/common/recipe_book.ron index 1a17d6f0c1..093d88366c 100644 --- a/assets/common/recipe_book.ron +++ b/assets/common/recipe_book.ron @@ -14,5 +14,5 @@ "apple_shroom_curry": (("common.items.food.apple_mushroom_curry", 1), [("common.items.food.mushroom", 8), ("common.items.food.coconut", 1), ("common.items.food.apple", 4), ("common.items.crafting_tools.mortar_pestle", 0)]), "apples_stick": (("common.items.food.apple_stick", 1),[("common.items.crafting_ing.twigs", 2), ("common.items.food.apple", 2)]), "mushroom_stick": (("common.items.food.mushroom_stick", 1),[("common.items.crafting_ing.twigs", 2), ("common.items.food.mushroom", 3)]), - "velorte_sceptre": (("common.items.weapons.staff.sceptre_velorite_0", 1),[("common.items.crafting_ing.twigs", 20), ("common.items.ore.veloritefrag", 10), ("common.items.crafting_ing.shiny_gem", 4), ("common.items.crafting_tools.craftsman_hammer", 0)]), + "velorite_sceptre": (("common.items.weapons.staff.sceptre_velorite_0", 1),[("common.items.crafting_ing.twigs", 20), ("common.items.ore.veloritefrag", 10), ("common.items.crafting_ing.shiny_gem", 4), ("common.items.crafting_tools.craftsman_hammer", 0)]), } diff --git a/common/src/comp/damage.rs b/common/src/comp/damage.rs index a1ad714ce0..05cd6919a4 100644 --- a/common/src/comp/damage.rs +++ b/common/src/comp/damage.rs @@ -22,8 +22,9 @@ impl Damage { match self.source { DamageSource::Melee => { // Critical hit + let mut critdamage = 0.0; if rand::random() { - self.healthchange *= 1.2; + critdamage = self.healthchange * 0.3; } // Block if block { @@ -33,6 +34,9 @@ impl Damage { let damage_reduction = loadout.get_damage_reduction(); self.healthchange *= 1.0 - damage_reduction; + // Critical damage applies after armor for melee + self.healthchange += critdamage; + // Min damage if (damage_reduction - 1.0).abs() > f32::EPSILON && self.healthchange > -10.0 { self.healthchange = -10.0; @@ -57,10 +61,6 @@ impl Damage { } }, DamageSource::Explosion => { - // Critical hit - if rand::random() { - self.healthchange *= 1.2; - } // Block if block { self.healthchange *= 1.0 - BLOCK_EFFICIENCY diff --git a/voxygen/src/hud/hotbar.rs b/voxygen/src/hud/hotbar.rs index 21840f79af..9b615530d2 100644 --- a/voxygen/src/hud/hotbar.rs +++ b/voxygen/src/hud/hotbar.rs @@ -78,7 +78,7 @@ impl State { use common::comp::item::{tool::ToolKind, ItemKind}; if let ItemKind::Tool(kind) = kind { if let ToolKind::Staff(kind) = &kind.kind { - kind != "Sceptre" + kind != "Sceptre" && kind != "SceptreVelorite" } else if let ToolKind::Debug(kind) = &kind.kind { kind == "Boost" } else { From e3eb34085facba41424745b99142065205367169 Mon Sep 17 00:00:00 2001 From: Monty Marz Date: Fri, 21 Aug 2020 01:55:18 +0200 Subject: [PATCH 10/12] craftable starting set MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit velorite staff update ore_nature_longbow model fix humanoid colours Update agent.rs improve rng (according to zesterer) slower fleeing More adjustments fix cult leader name more loot tables all kinds of adjustments smöl adjustments --- .../items/armor/back/leather_adventurer.ron | 12 + assets/common/items/armor/back/short_0.ron | 2 +- .../items/armor/belt/leather_adventurer.ron | 12 + .../items/armor/chest/leather_adventurer.ron | 12 + .../items/armor/foot/leather_adventurer.ron | 12 + .../items/armor/hand/leather_adventurer.ron | 12 + .../items/armor/pants/leather_adventurer.ron | 12 + .../items/armor/shoulder/cloth_blue_0.ron | 2 +- .../items/armor/shoulder/cloth_blue_1.ron | 2 +- .../items/armor/shoulder/cloth_green_0.ron | 2 +- .../items/armor/shoulder/cloth_purple_0.ron | 2 +- .../armor/shoulder/leather_adventurer.ron | 12 + assets/common/items/boss_drops/lantern.ron | 4 +- assets/common/items/lantern/black_0.ron | 2 +- assets/common/items/lantern/blue_0.ron | 2 +- assets/common/items/lantern/green_0.ron | 2 +- assets/common/items/lantern/red_0.ron | 2 +- .../npc_weapons/sword/zweihander_sword_0.ron | 2 +- .../weapons/bow/nature_ore_longbow-0.ron | 13 ++ .../items/weapons/bow/wood_shortbow-0.ron | 2 +- .../weapons/staff/sceptre_velorite_0.ron | 2 +- .../common/items/weapons/sword/wood_sword.ron | 4 +- assets/common/loot_tables/loot_table.ron | 2 +- .../loot_tables/loot_table_armor_misc.ron | 2 +- .../loot_table_boss_cultist-leader.ron | 6 +- .../loot_tables/loot_table_cave_large.ron | 56 +++++ .../loot_tables/loot_table_cultists.ron | 206 ++++++++++++++++++ assets/common/recipe_book.ron | 33 ++- assets/voxygen/i18n/en.ron | 2 +- assets/voxygen/item_image_manifest.ron | 10 +- assets/voxygen/shaders/particle-vert.glsl | 4 +- assets/voxygen/voxel/armor/back/short-2.vox | 3 + .../voxel/humanoid_armor_back_manifest.ron | 4 + .../voxel/humanoid_main_weapon_manifest.ron | 6 +- .../voxel/weapon/bow/longbow_ore_nature-0.vox | 3 + common/src/comp/inventory/item/tool.rs | 2 +- common/src/sys/agent.rs | 10 +- server/src/events/entity_creation.rs | 4 +- server/src/events/entity_manipulation.rs | 25 +-- voxygen/src/hud/crafting.rs | 6 +- world/src/layer/mod.rs | 14 +- world/src/site/dungeon/mod.rs | 12 +- world/src/util/random.rs | 2 +- 43 files changed, 467 insertions(+), 74 deletions(-) create mode 100644 assets/common/items/armor/back/leather_adventurer.ron create mode 100644 assets/common/items/armor/belt/leather_adventurer.ron create mode 100644 assets/common/items/armor/chest/leather_adventurer.ron create mode 100644 assets/common/items/armor/foot/leather_adventurer.ron create mode 100644 assets/common/items/armor/hand/leather_adventurer.ron create mode 100644 assets/common/items/armor/pants/leather_adventurer.ron create mode 100644 assets/common/items/armor/shoulder/leather_adventurer.ron create mode 100644 assets/common/items/weapons/bow/nature_ore_longbow-0.ron create mode 100644 assets/common/loot_tables/loot_table_cave_large.ron create mode 100644 assets/common/loot_tables/loot_table_cultists.ron create mode 100644 assets/voxygen/voxel/armor/back/short-2.vox create mode 100644 assets/voxygen/voxel/weapon/bow/longbow_ore_nature-0.vox diff --git a/assets/common/items/armor/back/leather_adventurer.ron b/assets/common/items/armor/back/leather_adventurer.ron new file mode 100644 index 0000000000..4201ca6602 --- /dev/null +++ b/assets/common/items/armor/back/leather_adventurer.ron @@ -0,0 +1,12 @@ +Item( + name: "Agile Cape", + description: "Keeps your shoulders warm.", + kind: Armor( + ( + kind: Back("Short2"), + stats: ( + protection: Normal(0.2), + ), + ) + ), +) diff --git a/assets/common/items/armor/back/short_0.ron b/assets/common/items/armor/back/short_0.ron index c53d6418dd..aefa27f930 100644 --- a/assets/common/items/armor/back/short_0.ron +++ b/assets/common/items/armor/back/short_0.ron @@ -5,7 +5,7 @@ Item( ( kind: Back("Short0"), stats: ( - protection: Normal(0.2), + protection: Normal(0.3), ), ) ), diff --git a/assets/common/items/armor/belt/leather_adventurer.ron b/assets/common/items/armor/belt/leather_adventurer.ron new file mode 100644 index 0000000000..84014ebef2 --- /dev/null +++ b/assets/common/items/armor/belt/leather_adventurer.ron @@ -0,0 +1,12 @@ +Item( + name: "Agile Belt", + description: "", + kind: Armor( + ( + kind: Belt("Leather2"), + stats: ( + protection: Normal(1.0), + ), + ) + ), +) diff --git a/assets/common/items/armor/chest/leather_adventurer.ron b/assets/common/items/armor/chest/leather_adventurer.ron new file mode 100644 index 0000000000..2889d1c7f1 --- /dev/null +++ b/assets/common/items/armor/chest/leather_adventurer.ron @@ -0,0 +1,12 @@ +Item( + name: "Agile Chest", + description: " ", + kind: Armor( + ( + kind: Chest("Leather2"), + stats: ( + protection: Normal(6.0), + ), + ) + ), +) diff --git a/assets/common/items/armor/foot/leather_adventurer.ron b/assets/common/items/armor/foot/leather_adventurer.ron new file mode 100644 index 0000000000..6baffc8086 --- /dev/null +++ b/assets/common/items/armor/foot/leather_adventurer.ron @@ -0,0 +1,12 @@ +Item( + name: "Agile Kickers", + description: "", + kind: Armor( + ( + kind: Foot("Leather2"), + stats: ( + protection: Normal(2.0), + ), + ) + ), +) diff --git a/assets/common/items/armor/hand/leather_adventurer.ron b/assets/common/items/armor/hand/leather_adventurer.ron new file mode 100644 index 0000000000..6b4117119a --- /dev/null +++ b/assets/common/items/armor/hand/leather_adventurer.ron @@ -0,0 +1,12 @@ +Item( + name: "Agile Gauntlets", + description: "", + kind: Armor( + ( + kind: Hand("Leather2"), + stats: ( + protection: Normal(4.0), + ), + ) + ), +) diff --git a/assets/common/items/armor/pants/leather_adventurer.ron b/assets/common/items/armor/pants/leather_adventurer.ron new file mode 100644 index 0000000000..a5be0b07af --- /dev/null +++ b/assets/common/items/armor/pants/leather_adventurer.ron @@ -0,0 +1,12 @@ +Item( + name: "Agile Pantalons", + description: "", + kind: Armor( + ( + kind: Pants("Leather2"), + stats: ( + protection: Normal(8.0), + ), + ) + ), +) diff --git a/assets/common/items/armor/shoulder/cloth_blue_0.ron b/assets/common/items/armor/shoulder/cloth_blue_0.ron index 30a8d609ca..f4a94d3830 100644 --- a/assets/common/items/armor/shoulder/cloth_blue_0.ron +++ b/assets/common/items/armor/shoulder/cloth_blue_0.ron @@ -5,7 +5,7 @@ Item( ( kind: Shoulder("ClothBlue0"), stats: ( - protection: Normal(0.0), + protection: Normal(1.0), ), ) ), diff --git a/assets/common/items/armor/shoulder/cloth_blue_1.ron b/assets/common/items/armor/shoulder/cloth_blue_1.ron index 4cd8b91535..4914b0a328 100644 --- a/assets/common/items/armor/shoulder/cloth_blue_1.ron +++ b/assets/common/items/armor/shoulder/cloth_blue_1.ron @@ -5,7 +5,7 @@ Item( ( kind: Shoulder("ClothBlue1"), stats: ( - protection: Normal(0.0), + protection: Normal(1.0), ), ) ), diff --git a/assets/common/items/armor/shoulder/cloth_green_0.ron b/assets/common/items/armor/shoulder/cloth_green_0.ron index c9c89d70e2..ff3bdcac2a 100644 --- a/assets/common/items/armor/shoulder/cloth_green_0.ron +++ b/assets/common/items/armor/shoulder/cloth_green_0.ron @@ -5,7 +5,7 @@ Item( ( kind: Shoulder("ClothGreen0"), stats: ( - protection: Normal(0.0), + protection: Normal(1.0), ), ) ), diff --git a/assets/common/items/armor/shoulder/cloth_purple_0.ron b/assets/common/items/armor/shoulder/cloth_purple_0.ron index 8cede44f9d..1de3f3abec 100644 --- a/assets/common/items/armor/shoulder/cloth_purple_0.ron +++ b/assets/common/items/armor/shoulder/cloth_purple_0.ron @@ -5,7 +5,7 @@ Item( ( kind: Shoulder("ClothPurple0"), stats: ( - protection: Normal(0.0), + protection: Normal(1.0), ), ) ), diff --git a/assets/common/items/armor/shoulder/leather_adventurer.ron b/assets/common/items/armor/shoulder/leather_adventurer.ron new file mode 100644 index 0000000000..3cc291d335 --- /dev/null +++ b/assets/common/items/armor/shoulder/leather_adventurer.ron @@ -0,0 +1,12 @@ +Item( + name: "Agile Guards", + description: "", + kind: Armor( + ( + kind: Shoulder("Leather1"), + stats: ( + protection: Normal(6.0), + ), + ) + ), +) diff --git a/assets/common/items/boss_drops/lantern.ron b/assets/common/items/boss_drops/lantern.ron index 26228ef77d..85b829d6ca 100644 --- a/assets/common/items/boss_drops/lantern.ron +++ b/assets/common/items/boss_drops/lantern.ron @@ -4,8 +4,8 @@ Item( kind: Lantern( ( kind: "Blue0", - color: (r: 220, g: 220, b: 255), - strength_thousandths: 6500, + color: (r: 128, g: 26, b: 255), + strength_thousandths: 8500, flicker_thousandths: 300, ), ), diff --git a/assets/common/items/lantern/black_0.ron b/assets/common/items/lantern/black_0.ron index f3bb7974e1..9eb9156099 100644 --- a/assets/common/items/lantern/black_0.ron +++ b/assets/common/items/lantern/black_0.ron @@ -4,7 +4,7 @@ Item( kind: Lantern( ( kind: "Black0", - color: (r: 166, g: 100, b: 0), + color: (r: 255, g: 128, b: 26), strength_thousandths: 3000, flicker_thousandths: 300, ), diff --git a/assets/common/items/lantern/blue_0.ron b/assets/common/items/lantern/blue_0.ron index 31231f9e47..a9e88083ed 100644 --- a/assets/common/items/lantern/blue_0.ron +++ b/assets/common/items/lantern/blue_0.ron @@ -4,7 +4,7 @@ Item( kind: Lantern( ( kind: "Blue0", - color: (r: 64, g: 127, b: 153), + color: (r: 255, g: 128, b: 26), strength_thousandths: 4000, flicker_thousandths: 250, ), diff --git a/assets/common/items/lantern/green_0.ron b/assets/common/items/lantern/green_0.ron index 6675d3ff77..8ccb9a38df 100644 --- a/assets/common/items/lantern/green_0.ron +++ b/assets/common/items/lantern/green_0.ron @@ -4,7 +4,7 @@ Item( kind: Lantern( ( kind: "Green0", - color: (r: 192, g: 255, b: 76), + color: (r: 255, g: 128, b: 26), strength_thousandths: 4000, flicker_thousandths: 500, ), diff --git a/assets/common/items/lantern/red_0.ron b/assets/common/items/lantern/red_0.ron index 47ee0b73ba..f320f8afbc 100644 --- a/assets/common/items/lantern/red_0.ron +++ b/assets/common/items/lantern/red_0.ron @@ -4,7 +4,7 @@ Item( kind: Lantern( ( kind: "Red0", - color: (r: 255, g: 127, b: 51), + color: (r: 255, g: 128, b: 26), strength_thousandths: 3500, flicker_thousandths: 1000, ), diff --git a/assets/common/items/npc_weapons/sword/zweihander_sword_0.ron b/assets/common/items/npc_weapons/sword/zweihander_sword_0.ron index 372932187d..35819b476e 100644 --- a/assets/common/items/npc_weapons/sword/zweihander_sword_0.ron +++ b/assets/common/items/npc_weapons/sword/zweihander_sword_0.ron @@ -6,7 +6,7 @@ Item( kind: Sword("Zweihander0"), stats: ( equip_time_millis: 500, - power: 0.6, + power: 0.2, ), ) ), diff --git a/assets/common/items/weapons/bow/nature_ore_longbow-0.ron b/assets/common/items/weapons/bow/nature_ore_longbow-0.ron new file mode 100644 index 0000000000..170d018d34 --- /dev/null +++ b/assets/common/items/weapons/bow/nature_ore_longbow-0.ron @@ -0,0 +1,13 @@ +Item( + name: "Velorite Bow", + description: "Infused with Velorite power.", + kind: Tool( + ( + kind: Bow("NatureOreLongbow"), + stats: ( + equip_time_millis: 400, + power: 2.00, + ), + ) + ), +) diff --git a/assets/common/items/weapons/bow/wood_shortbow-0.ron b/assets/common/items/weapons/bow/wood_shortbow-0.ron index 6cddcfbff2..c655669510 100644 --- a/assets/common/items/weapons/bow/wood_shortbow-0.ron +++ b/assets/common/items/weapons/bow/wood_shortbow-0.ron @@ -6,7 +6,7 @@ Item( kind: Bow("WoodShortbow0"), stats: ( equip_time_millis: 400, - power: 0.75, + power: 1.0, ), ) ), diff --git a/assets/common/items/weapons/staff/sceptre_velorite_0.ron b/assets/common/items/weapons/staff/sceptre_velorite_0.ron index dad5431206..e3fbad60ff 100644 --- a/assets/common/items/weapons/staff/sceptre_velorite_0.ron +++ b/assets/common/items/weapons/staff/sceptre_velorite_0.ron @@ -6,7 +6,7 @@ Item( kind: Staff("SceptreVelorite"), stats: ( equip_time_millis: 400, - power: 1.0, + power: 2.0, ), ) ), diff --git a/assets/common/items/weapons/sword/wood_sword.ron b/assets/common/items/weapons/sword/wood_sword.ron index dc985ebae6..a8b9d3a140 100644 --- a/assets/common/items/weapons/sword/wood_sword.ron +++ b/assets/common/items/weapons/sword/wood_sword.ron @@ -1,12 +1,12 @@ Item( - name: "Wooden Training Sword", + name: "Wooden Sword", description: "It's not sharp.", kind: Tool( ( kind: Sword("WoodTraining"), stats: ( equip_time_millis: 400, - power: 0.50, + power: 1.0, ), ) ), diff --git a/assets/common/loot_tables/loot_table.ron b/assets/common/loot_tables/loot_table.ron index 5787e95a90..9504a3ce9d 100644 --- a/assets/common/loot_tables/loot_table.ron +++ b/assets/common/loot_tables/loot_table.ron @@ -1,4 +1,4 @@ [ // Fallback loot table - (1, "common.items.food.cheese"), + (1, "common.items.food.mushroom"), ] diff --git a/assets/common/loot_tables/loot_table_armor_misc.ron b/assets/common/loot_tables/loot_table_armor_misc.ron index 601e013552..26bebecd6d 100644 --- a/assets/common/loot_tables/loot_table_armor_misc.ron +++ b/assets/common/loot_tables/loot_table_armor_misc.ron @@ -6,5 +6,5 @@ (0.25, "common.items.armor.back.short_1"), // necks (0.25, "common.items.armor.neck.neck_0"), - (0.25, "common.items.armor.neck.neck_1"), + ] \ No newline at end of file diff --git a/assets/common/loot_tables/loot_table_boss_cultist-leader.ron b/assets/common/loot_tables/loot_table_boss_cultist-leader.ron index b91e0f367d..3fa2f313b8 100644 --- a/assets/common/loot_tables/loot_table_boss_cultist-leader.ron +++ b/assets/common/loot_tables/loot_table_boss_cultist-leader.ron @@ -11,8 +11,6 @@ (1, "common.items.weapons.staff.cultist_staff"), (1, "common.items.weapons.hammer.cultist_purp_2h-0"), (1, "common.items.weapons.sword.cultist_purp_2h-0"), - // misc - (9, "common.items.boss_drops.exp_flask"), - (1, "common.items.boss_drops.lantern"), - (1, "common.items.boss_drops.potions"), + // misc + (1, "common.items.boss_drops.lantern"), ] \ No newline at end of file diff --git a/assets/common/loot_tables/loot_table_cave_large.ron b/assets/common/loot_tables/loot_table_cave_large.ron new file mode 100644 index 0000000000..7d5133c374 --- /dev/null +++ b/assets/common/loot_tables/loot_table_cave_large.ron @@ -0,0 +1,56 @@ +[ + // Misc + (0.25, "common.items.armor.neck.neck_1"), + // swords + (0.07, "common.items.weapons.sword.greatsword_2h_fine-1"), + (0.07, "common.items.weapons.sword.greatsword_2h_fine-2"), + (0.08, "common.items.weapons.sword.long_2h_orn-0"), + (0.08, "common.items.weapons.sword.long_2h_orn-1"), + (0.08, "common.items.weapons.sword.long_2h_orn-2"), + (0.08, "common.items.weapons.sword.long_2h_orn-3"), + (0.08, "common.items.weapons.sword.long_2h_orn-4"), + (0.08, "common.items.weapons.sword.long_2h_orn-5"), + (0.20, "common.items.weapons.sword.zweihander_sword_0"), + (0.10, "common.items.weapons.sword.greatsword_2h_orn-0"), + (0.10, "common.items.weapons.sword.greatsword_2h_orn-1"), + (0.10, "common.items.weapons.sword.greatsword_2h_orn-2"), + // axes + (0.20, "common.items.weapons.axe.bloodsteel_axe-0"), + (0.20, "common.items.weapons.axe.bloodsteel_axe-1"), + (0.20, "common.items.weapons.axe.bloodsteel_axe-2"), + (0.30, "common.items.weapons.axe.cobalt_axe-0"), + (0.10, "common.items.weapons.axe.malachite_axe-0"), + (0.04, "common.items.weapons.axe.iron_axe-7"), + (0.04, "common.items.weapons.axe.iron_axe-8"), + (0.04, "common.items.weapons.axe.iron_axe-9"), + (0.04, "common.items.weapons.axe.steel_axe-0"), + (0.04, "common.items.weapons.axe.steel_axe-1"), + (0.04, "common.items.weapons.axe.steel_axe-2"), + (0.04, "common.items.weapons.axe.steel_axe-3"), + (0.04, "common.items.weapons.axe.steel_axe-4"), + (0.04, "common.items.weapons.axe.steel_axe-5"), + (0.04, "common.items.weapons.axe.steel_axe-6"), + // healing staff + (0.5, "common.items.weapons.staff.staff_nature"), + // staves + (1.00, "common.items.weapons.staff.bone_staff"), + (1.00, "common.items.weapons.staff.amethyst_staff"), + (0.1, "common.items.weapons.staff.sceptre_velorite_0"), + // hammers + (0.30, "common.items.weapons.hammer.cobalt_hammer-0"), + (0.30, "common.items.weapons.hammer.cobalt_hammer-1"), + (0.15, "common.items.weapons.hammer.runic_hammer"), + (0.15, "common.items.weapons.hammer.ramshead_hammer"), + (0.04, "common.items.weapons.hammer.iron_hammer-7"), + (0.04, "common.items.weapons.hammer.iron_hammer-8"), + (0.05, "common.items.weapons.hammer.steel_hammer-0"), + (0.05, "common.items.weapons.hammer.steel_hammer-1"), + (0.05, "common.items.weapons.hammer.steel_hammer-2"), + (0.05, "common.items.weapons.hammer.steel_hammer-3"), + (0.05, "common.items.weapons.hammer.steel_hammer-4"), + (0.05, "common.items.weapons.hammer.steel_hammer-5"), + // bows + (0.1, "common.items.weapons.bow.nature_ore_longbow-0"), + + +] \ No newline at end of file diff --git a/assets/common/loot_tables/loot_table_cultists.ron b/assets/common/loot_tables/loot_table_cultists.ron new file mode 100644 index 0000000000..750e241f21 --- /dev/null +++ b/assets/common/loot_tables/loot_table_cultists.ron @@ -0,0 +1,206 @@ +[ + // Food + // simple + (3, "common.items.food.cheese"), + (3, "common.items.food.apple"), + (3, "common.items.food.mushroom"), + (3, "common.items.food.coconut"), + // crafted + (0.5, "common.items.food.apple_mushroom_curry"), + (0.5, "common.items.food.apple_stick"), + (0.5, "common.items.food.mushroom_stick"), + // Misc + (0.25, "common.items.armor.neck.neck_1"), + // Heavy Armour + // belts + (0.5, "common.items.armor.belt.plate_0"), + (0.3, "common.items.armor.belt.steel_0"), + // chests + (0.5, "common.items.armor.chest.plate_green_0"), + (0.3, "common.items.armor.chest.steel_0"), + // shoes + (0.5, "common.items.armor.foot.plate_0"), + (0.3, "common.items.armor.foot.steel_0"), + // pants + (0.5, "common.items.armor.pants.plate_green_0"), + (0.3, "common.items.armor.pants.steel_0"), + // shoulders + (0.40, "common.items.armor.shoulder.plate_0"), + (0.37, "common.items.armor.shoulder.iron_spikes"), + (0.33, "common.items.armor.shoulder.steel_0"), + //gloves + (0.67, "common.items.armor.hand.plate_0"), + (0.33, "common.items.armor.hand.steel_0"), + //Light Armour + // belts + (0.50, "common.items.armor.belt.leather_0"), + (0.50, "common.items.armor.belt.leather_2"), + // chests + (0.50, "common.items.armor.chest.leather_0"), + (0.50, "common.items.armor.chest.leather_2"), + // shoes + (0.50, "common.items.armor.foot.leather_0"), + (0.50, "common.items.armor.foot.leather_2"), + // pants + (0.33, "common.items.armor.pants.leather_0"), + (0.33, "common.items.armor.pants.leather_2"), + (0.33, "common.items.armor.pants.hunting"), + // shoulders + (0.6, "common.items.armor.shoulder.leather_strips"), + (0.4, "common.items.armor.shoulder.leather_0"), + (0.4, "common.items.armor.shoulder.leather_1"), + (0.4, "common.items.armor.shoulder.leather_2"), + (0.3, "common.items.armor.shoulder.leather_iron_0"), + (0.3, "common.items.armor.shoulder.leather_iron_1"), + (0.3, "common.items.armor.shoulder.leather_iron_2"), + (0.3, "common.items.armor.shoulder.leather_iron_3"), + //gloves + (0.50, "common.items.armor.hand.leather_0"), + (0.50, "common.items.armor.hand.leather_2"), + // Common Weapons + // swords + (0.4, "common.items.weapons.sword.wood_sword"), + (0.3, "common.items.weapons.sword.long_2h_dam-0"), + (0.3, "common.items.weapons.sword.long_2h_dam-1"), + (0.3, "common.items.weapons.sword.long_2h_dam-2"), + (0.3, "common.items.weapons.sword.long_2h_dam-3"), + (0.3, "common.items.weapons.sword.long_2h_dam-4"), + (0.3, "common.items.weapons.sword.long_2h_dam-5"), + (0.25, "common.items.weapons.sword.short_sword_0"), + (0.1, "common.items.weapons.sword.greatsword_2h_dam-0"), + (0.1, "common.items.weapons.sword.greatsword_2h_dam-1"), + (0.1, "common.items.weapons.sword.greatsword_2h_dam-2"), + // axes + (0.20, "common.items.weapons.axe.orc_axe-0"), + (0.10, "common.items.weapons.axe.worn_iron_axe-0"), + (0.10, "common.items.weapons.axe.worn_iron_axe-1"), + (0.10, "common.items.weapons.axe.worn_iron_axe-2"), + (0.10, "common.items.weapons.axe.worn_iron_axe-3"), + (0.10, "common.items.weapons.axe.worn_iron_axe-4"), + // healing staff + (0.25, "common.items.weapons.staff.staff_nature"), + // hammers + (0.15, "common.items.weapons.hammer.flimsy_hammer"), + (0.10, "common.items.weapons.hammer.wood_hammer-0"), + (0.10, "common.items.weapons.hammer.stone_hammer-0"), + (0.10, "common.items.weapons.hammer.stone_hammer-1"), + (0.10, "common.items.weapons.hammer.stone_hammer-2"), + (0.10, "common.items.weapons.hammer.stone_hammer-3"), + (0.05, "common.items.weapons.hammer.worn_iron_hammer-0"), + (0.05, "common.items.weapons.hammer.worn_iron_hammer-1"), + (0.05, "common.items.weapons.hammer.worn_iron_hammer-2"), + (0.05, "common.items.weapons.hammer.worn_iron_hammer-3"), + // bows + (0.25, "common.items.weapons.bow.wood_shortbow-0"), + (0.25, "common.items.weapons.bow.wood_shortbow-1"), + // Uncommon Weapons + // swords + (0.05, "common.items.weapons.sword.long_2h_simple-0"), + (0.05, "common.items.weapons.sword.long_2h_simple-1"), + (0.05, "common.items.weapons.sword.long_2h_simple-2"), + (0.05, "common.items.weapons.sword.long_2h_simple-3"), + (0.05, "common.items.weapons.sword.long_2h_simple-4"), + (0.05, "common.items.weapons.sword.long_2h_simple-5"), + (0.10, "common.items.weapons.sword.greatsword_2h_simple-0"), + (0.10, "common.items.weapons.sword.greatsword_2h_simple-1"), + (0.10, "common.items.weapons.sword.greatsword_2h_simple-2"), + (0.06, "common.items.weapons.sword.long_2h_fine-0"), + (0.06, "common.items.weapons.sword.long_2h_fine-1"), + (0.06, "common.items.weapons.sword.long_2h_fine-2"), + (0.06, "common.items.weapons.sword.long_2h_fine-3"), + (0.06, "common.items.weapons.sword.long_2h_fine-4"), + (0.06, "common.items.weapons.sword.long_2h_fine-5"), + (0.07, "common.items.weapons.sword.greatsword_2h_fine-0"), + (0.07, "common.items.weapons.sword.greatsword_2h_fine-1"), + (0.07, "common.items.weapons.sword.greatsword_2h_fine-2"), + // axes + (0.15, "common.items.weapons.axe.bronze_axe-0"), + (0.15, "common.items.weapons.axe.bronze_axe-1"), + (0.04, "common.items.weapons.axe.iron_axe-0"), + (0.04, "common.items.weapons.axe.iron_axe-1"), + (0.04, "common.items.weapons.axe.iron_axe-2"), + (0.04, "common.items.weapons.axe.iron_axe-3"), + (0.04, "common.items.weapons.axe.iron_axe-4"), + (0.04, "common.items.weapons.axe.iron_axe-5"), + (0.04, "common.items.weapons.axe.iron_axe-6"), + (0.04, "common.items.weapons.axe.iron_axe-7"), + (0.04, "common.items.weapons.axe.iron_axe-8"), + (0.04, "common.items.weapons.axe.iron_axe-9"), + (0.04, "common.items.weapons.axe.steel_axe-0"), + (0.04, "common.items.weapons.axe.steel_axe-1"), + (0.04, "common.items.weapons.axe.steel_axe-2"), + (0.04, "common.items.weapons.axe.steel_axe-3"), + (0.04, "common.items.weapons.axe.steel_axe-4"), + (0.04, "common.items.weapons.axe.steel_axe-5"), + (0.04, "common.items.weapons.axe.steel_axe-6"), + // healing staff + (0.5, "common.items.weapons.staff.staff_nature"), + // staves + (1.00, "common.items.weapons.staff.bone_staff"), + // hammers + (0.15, "common.items.weapons.hammer.bronze_hammer-0"), + (0.15, "common.items.weapons.hammer.bronze_hammer-1"), + (0.04, "common.items.weapons.hammer.iron_hammer-0"), + (0.04, "common.items.weapons.hammer.iron_hammer-1"), + (0.04, "common.items.weapons.hammer.iron_hammer-2"), + (0.04, "common.items.weapons.hammer.iron_hammer-3"), + (0.04, "common.items.weapons.hammer.iron_hammer-4"), + (0.04, "common.items.weapons.hammer.iron_hammer-5"), + (0.04, "common.items.weapons.hammer.iron_hammer-6"), + (0.04, "common.items.weapons.hammer.iron_hammer-7"), + (0.04, "common.items.weapons.hammer.iron_hammer-8"), + (0.05, "common.items.weapons.hammer.steel_hammer-0"), + (0.05, "common.items.weapons.hammer.steel_hammer-1"), + (0.05, "common.items.weapons.hammer.steel_hammer-2"), + (0.05, "common.items.weapons.hammer.steel_hammer-3"), + (0.05, "common.items.weapons.hammer.steel_hammer-4"), + (0.05, "common.items.weapons.hammer.steel_hammer-5"), + // bows + (0.30, "common.items.weapons.bow.leafy_shortbow-0"), + (0.25, "common.items.weapons.bow.wood_longbow-0"), + (0.25, "common.items.weapons.bow.wood_longbow-1"), + (0.20, "common.items.weapons.bow.leafy_longbow-0"), + // Rare Weapons + // swords + (0.08, "common.items.weapons.sword.long_2h_orn-0"), + (0.08, "common.items.weapons.sword.long_2h_orn-1"), + (0.08, "common.items.weapons.sword.long_2h_orn-2"), + (0.08, "common.items.weapons.sword.long_2h_orn-3"), + (0.08, "common.items.weapons.sword.long_2h_orn-4"), + (0.08, "common.items.weapons.sword.long_2h_orn-5"), + (0.20, "common.items.weapons.sword.zweihander_sword_0"), + (0.10, "common.items.weapons.sword.greatsword_2h_orn-0"), + (0.10, "common.items.weapons.sword.greatsword_2h_orn-1"), + (0.10, "common.items.weapons.sword.greatsword_2h_orn-2"), + // axes + (0.20, "common.items.weapons.axe.bloodsteel_axe-0"), + (0.20, "common.items.weapons.axe.bloodsteel_axe-1"), + (0.20, "common.items.weapons.axe.bloodsteel_axe-2"), + (0.30, "common.items.weapons.axe.cobalt_axe-0"), + (0.10, "common.items.weapons.axe.malachite_axe-0"), + // healing staff + (0.25, "common.items.weapons.staff.staff_nature"), + // staves + (1.00, "common.items.weapons.staff.amethyst_staff"), + // hammers + (0.01, "common.items.weapons.hammer.cobalt_hammer-0"), + (0.01, "common.items.weapons.hammer.cobalt_hammer-1"), + (0.01, "common.items.weapons.hammer.runic_hammer"), + (0.1, "common.items.weapons.hammer.ramshead_hammer"), + (0.001, "common.items.weapons.hammer.mjolnir"), + // bows + (0.6, "common.items.weapons.bow.horn_longbow-0"), + (0.2, "common.items.weapons.bow.iron_longbow-0"), + (0.10, "common.items.weapons.bow.rare_longbow"), + // cultist set + (0.1, "common.items.armor.belt.cultist_belt"), + (0.01, "common.items.armor.chest.cultist_chest_purple"), + (0.01, "common.items.armor.foot.cultist_boots"), + (0.01, "common.items.armor.hand.cultist_hands_purple"), + (0.01, "common.items.armor.pants.cultist_legs_purple"), + (0.01, "common.items.armor.shoulder.cultist_shoulder_purple"), + (0.005, "common.items.armor.back.dungeon_purple-0"), + (0.1, "common.items.boss_drops.exp_flask"), + (0.2, "common.items.boss_drops.potions"), + +] diff --git a/assets/common/recipe_book.ron b/assets/common/recipe_book.ron index 093d88366c..7277199e25 100644 --- a/assets/common/recipe_book.ron +++ b/assets/common/recipe_book.ron @@ -1,18 +1,35 @@ { + // Tools "crafting_hammer": (("common.items.crafting_tools.craftsman_hammer", 1),[("common.items.crafting_ing.twigs", 14), ("common.items.crafting_ing.stones", 12)]), - "mortar_pestle": (("common.items.crafting_tools.mortar_pestle", 1), [("common.items.crafting_ing.stones", 6), ("common.items.food.coconut", 2), ("common.items.crafting_tools.craftsman_hammer", 0)]), + "mortar_pestle": (("common.items.crafting_tools.mortar_pestle", 1), [("common.items.crafting_ing.stones", 6), ("common.items.food.coconut", 2), ("common.items.crafting_tools.craftsman_hammer", 0)]), + // Ore and more "velorite_frag": (("common.items.ore.veloritefrag", 2), [("common.items.ore.velorite", 1), ("common.items.crafting_tools.craftsman_hammer", 0)]), + //Potions "potion_s": (("common.items.consumable.potion_minor", 1), [("common.items.crafting_ing.empty_vial", 1), ("common.items.ore.veloritefrag", 2)]), "potion_m": (("common.items.consumable.potion_med", 1), [("common.items.consumable.potion_minor", 2), ("common.items.ore.veloritefrag", 4)]), "collar_basic": (("common.items.utility.collar", 1), [("common.items.crafting_ing.leather_scraps", 5), ("common.items.crafting_ing.shiny_gem", 1)]), - "bomb_coconut": (("common.items.utility.bomb", 1), [("common.items.crafting_ing.stones", 10), ("common.items.food.coconut", 2), ("common.items.ore.veloritefrag", 2), ("common.items.crafting_tools.mortar_pestle", 0)]), - "firework_blue": (("common.items.utility.firework_blue", 1), [("common.items.crafting_ing.twigs", 1), ("common.items.crafting_ing.stones", 1), ("common.items.food.coconut", 1), ("common.items.ore.veloritefrag", 1), ("common.items.crafting_tools.mortar_pestle", 0)]), - "firework_green": (("common.items.utility.firework_green", 1), [("common.items.crafting_ing.twigs", 1), ("common.items.crafting_ing.stones", 1), ("common.items.food.coconut", 1), ("common.items.ore.veloritefrag", 1), ("common.items.crafting_tools.mortar_pestle", 0)]), - "firework_purple": (("common.items.utility.firework_purple", 1), [("common.items.crafting_ing.twigs", 1), ("common.items.crafting_ing.stones", 1), ("common.items.food.coconut", 1), ("common.items.ore.veloritefrag", 1), ("common.items.crafting_tools.mortar_pestle", 0)]), - "firework_red": (("common.items.utility.firework_red", 1), [("common.items.crafting_ing.twigs", 1), ("common.items.crafting_ing.stones", 1), ("common.items.food.coconut", 1), ("common.items.ore.veloritefrag", 1), ("common.items.crafting_tools.mortar_pestle", 0)]), - "firework_yellow": (("common.items.utility.firework_yellow", 1), [("common.items.crafting_ing.twigs", 1), ("common.items.crafting_ing.stones", 1), ("common.items.food.coconut", 1), ("common.items.ore.veloritefrag", 1), ("common.items.crafting_tools.mortar_pestle", 0)]), + "bomb_coconut": (("common.items.utility.bomb", 1), [("common.items.crafting_ing.stones", 10), ("common.items.food.coconut", 2), ("common.items.ore.veloritefrag", 2), ("common.items.crafting_tools.mortar_pestle", 0)]), + // Firework + "firework_blue": (("common.items.utility.firework_blue", 1), [("common.items.crafting_ing.twigs", 1), ("common.items.crafting_ing.stones", 1), ("common.items.food.coconut", 1), ("common.items.ore.veloritefrag", 1), ("common.items.crafting_tools.mortar_pestle", 0)]), + "firework_green": (("common.items.utility.firework_green", 1), [("common.items.crafting_ing.twigs", 1), ("common.items.crafting_ing.stones", 1), ("common.items.food.coconut", 1), ("common.items.ore.veloritefrag", 1), ("common.items.crafting_tools.mortar_pestle", 0)]), + "firework_purple": (("common.items.utility.firework_purple", 1), [("common.items.crafting_ing.twigs", 1), ("common.items.crafting_ing.stones", 1), ("common.items.food.coconut", 1), ("common.items.ore.veloritefrag", 1), ("common.items.crafting_tools.mortar_pestle", 0)]), + "firework_red": (("common.items.utility.firework_red", 1), [("common.items.crafting_ing.twigs", 1), ("common.items.crafting_ing.stones", 1), ("common.items.food.coconut", 1), ("common.items.ore.veloritefrag", 1), ("common.items.crafting_tools.mortar_pestle", 0)]), + "firework_yellow": (("common.items.utility.firework_yellow", 1), [("common.items.crafting_ing.twigs", 1), ("common.items.crafting_ing.stones", 1), ("common.items.food.coconut", 1), ("common.items.ore.veloritefrag", 1), ("common.items.crafting_tools.mortar_pestle", 0)]), + // Food "apple_shroom_curry": (("common.items.food.apple_mushroom_curry", 1), [("common.items.food.mushroom", 8), ("common.items.food.coconut", 1), ("common.items.food.apple", 4), ("common.items.crafting_tools.mortar_pestle", 0)]), "apples_stick": (("common.items.food.apple_stick", 1),[("common.items.crafting_ing.twigs", 2), ("common.items.food.apple", 2)]), "mushroom_stick": (("common.items.food.mushroom_stick", 1),[("common.items.crafting_ing.twigs", 2), ("common.items.food.mushroom", 3)]), + // Weapons "velorite_sceptre": (("common.items.weapons.staff.sceptre_velorite_0", 1),[("common.items.crafting_ing.twigs", 20), ("common.items.ore.veloritefrag", 10), ("common.items.crafting_ing.shiny_gem", 4), ("common.items.crafting_tools.craftsman_hammer", 0)]), -} + // Enhanced starting weapons + "better bow": (("common.items.weapons.bow.wood_shortbow-0", 1), [("common.items.crafting_ing.leather_scraps", 8),("common.items.crafting_ing.twigs", 4), ("common.items.crafting_ing.stones", 0)]), + "better sword": (("common.items.weapons.sword.wood_sword", 1), [("common.items.crafting_ing.leather_scraps", 4),("common.items.crafting_ing.twigs", 8), ("common.items.crafting_ing.stones", 0)]), + // Adventurer/Beginner Leather Set + "adventure back": (("common.items.armor.back.leather_adventurer", 1),[("common.items.crafting_ing.leather_scraps", 4)]), + "adventure belt": (("common.items.armor.belt.leather_adventurer", 1),[("common.items.crafting_ing.leather_scraps", 2)]), + "adventure chest": (("common.items.armor.chest.leather_adventurer", 1),[("common.items.crafting_ing.leather_scraps", 12)]), + "adventure feet": (("common.items.armor.foot.leather_adventurer", 1),[("common.items.crafting_ing.leather_scraps", 6)]), + "adventure hands": (("common.items.armor.hand.leather_adventurer", 1),[("common.items.crafting_ing.leather_scraps", 4)]), + "adventure pants": (("common.items.armor.pants.leather_adventurer", 1),[("common.items.crafting_ing.leather_scraps", 8)]), + "adventure shoulder": (("common.items.armor.shoulder.leather_adventurer", 1),[("common.items.crafting_ing.leather_scraps", 12)]), +} diff --git a/assets/voxygen/i18n/en.ron b/assets/voxygen/i18n/en.ron index 2760d7609d..8e95b9df7d 100644 --- a/assets/voxygen/i18n/en.ron +++ b/assets/voxygen/i18n/en.ron @@ -419,7 +419,7 @@ magically infused items?"#, "gameinput.declinegroupinvite": "Decline Group Invite", "gameinput.crafting": "Crafting", "gameinput.sneak": "Sneak", - "gameinput.swimdown": "Dive downwards", + "gameinput.swimdown": "Swim downwards", "gameinput.swimup": "Swim upwards", /// End GameInput section diff --git a/assets/voxygen/item_image_manifest.ron b/assets/voxygen/item_image_manifest.ron index 4d59015e54..3ccf57427c 100644 --- a/assets/voxygen/item_image_manifest.ron +++ b/assets/voxygen/item_image_manifest.ron @@ -44,6 +44,10 @@ "voxel.weapon.bow.longbow_rare", (0.0, 0.0, 0.0), (90.0, 90.0, 0.0), 1.0, ), + Tool(Bow("NatureOreLongbow")): VoxTrans( + "voxel.weapon.bow.longbow_ore_nature-0", + (0.0, 0.0, 0.0), (90.0, 90.0, 0.0), 1.0, + ), // Daggers Tool(Dagger("BasicDagger")): VoxTrans( "voxel.weapon.dagger.dagger_rusty", @@ -1075,7 +1079,7 @@ "voxel.armor.back.short-0", (0.0, 0.0, 0.0), (-90.0, 180.0, 0.0), 1.0, ), - Armor(Back("Short1")): VoxTrans( + Armor(Back("Short1")): VoxTrans( "voxel.armor.back.short-1", (0.0, -2.0, 0.0), (-90.0, 180.0, 0.0), 1.0, ), @@ -1087,6 +1091,10 @@ "voxel.armor.back.dung_purp-0", (0.0, 0.0, 0.0), (-90.0, 180.0, 0.0), 1.0, ), + Armor(Back("Short2")): VoxTrans( + "voxel.armor.back.short-2", + (0.0, -2.0, 0.0), (-90.0, 180.0, 0.0), 1.0, + ), // Rings Armor(Ring("Ring0")): Png( "element.icons.ring-0", diff --git a/assets/voxygen/shaders/particle-vert.glsl b/assets/voxygen/shaders/particle-vert.glsl index 7170fbc6f8..ce36cb7b17 100644 --- a/assets/voxygen/shaders/particle-vert.glsl +++ b/assets/voxygen/shaders/particle-vert.glsl @@ -118,8 +118,8 @@ void main() { } else if (inst_mode == FIRE) { attr = Attr( linear_motion( - vec3(rand0 * 0.25, rand1 * 0.25, 0.3), - vec3(rand2 * 0.1, rand3 * 0.1, 2.0 + rand4 * 1.0) + vec3(rand0 * 0.3, rand1 * 0.3, 0.2), + vec3(rand1 * 0.1, rand3 * 0.1, 3.0 + rand4 * 1.2) ), 1.0, vec4(2, 0.8 + rand5 * 0.3, 0, 1), diff --git a/assets/voxygen/voxel/armor/back/short-2.vox b/assets/voxygen/voxel/armor/back/short-2.vox new file mode 100644 index 0000000000..5b36780184 --- /dev/null +++ b/assets/voxygen/voxel/armor/back/short-2.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4fd947f3506bbd98522206ca650575d998ebc1314dd529e65ff580628bbc846f +size 1368 diff --git a/assets/voxygen/voxel/humanoid_armor_back_manifest.ron b/assets/voxygen/voxel/humanoid_armor_back_manifest.ron index 7b31c4591d..8ab7638b62 100644 --- a/assets/voxygen/voxel/humanoid_armor_back_manifest.ron +++ b/assets/voxygen/voxel/humanoid_armor_back_manifest.ron @@ -20,5 +20,9 @@ vox_spec: ("armor.back.short-1", (-5.0, -1.0, -11.0)), color: None ), + "Short2": ( + vox_spec: ("armor.back.short-2", (-5.0, -1.0, -11.0)), + color: None + ), }, )) diff --git a/assets/voxygen/voxel/humanoid_main_weapon_manifest.ron b/assets/voxygen/voxel/humanoid_main_weapon_manifest.ron index 5913a9819a..8e9d389fee 100644 --- a/assets/voxygen/voxel/humanoid_main_weapon_manifest.ron +++ b/assets/voxygen/voxel/humanoid_main_weapon_manifest.ron @@ -484,6 +484,10 @@ vox_spec: ("weapon.bow.longbow_rare", (-2.0, -6.0, -2.5)), color: None ), + Bow("NatureOreLongbow"): ( + vox_spec: ("weapon.bow.longbow_ore_nature-0", (-2.0, -4.0, -4.5)), + color: None + ), // Farming Equipment Farming("Broom"): ( vox_spec: ("weapon.tool.broom-0", (-1.5, -4.0, -4.0)), @@ -548,7 +552,7 @@ color: None ), Staff("SceptreVelorite"): ( - vox_spec: ("weapon.staff.ore-nature", (-1.0, -6.0, -5.0)), + vox_spec: ("weapon.staff.ore-nature", (-2.0, -6.0, -5.0)), color: None ), // Misc diff --git a/assets/voxygen/voxel/weapon/bow/longbow_ore_nature-0.vox b/assets/voxygen/voxel/weapon/bow/longbow_ore_nature-0.vox new file mode 100644 index 0000000000..f9186b9d80 --- /dev/null +++ b/assets/voxygen/voxel/weapon/bow/longbow_ore_nature-0.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cbd385cd0e9ddf48650149b82de277e258f599c9b6ce6054a6f13c3b2d697538 +size 1756 diff --git a/common/src/comp/inventory/item/tool.rs b/common/src/comp/inventory/item/tool.rs index 1356a3e636..ca0edf991b 100644 --- a/common/src/comp/inventory/item/tool.rs +++ b/common/src/comp/inventory/item/tool.rs @@ -245,7 +245,7 @@ impl Tool { energy_cost: 350, buildup_duration: Duration::from_millis(0), recover_duration: Duration::from_millis(1000), - base_healthchange: (150.0 * self.base_power()) as i32, + base_healthchange: (350.0 * self.base_power()) as i32, range: 100.0, max_angle: 90.0, }, diff --git a/common/src/sys/agent.rs b/common/src/sys/agent.rs index 16e940f7f9..d4a3960518 100644 --- a/common/src/sys/agent.rs +++ b/common/src/sys/agent.rs @@ -146,12 +146,12 @@ impl<'a> System<'a> for Sys { const AVG_FOLLOW_DIST: f32 = 6.0; const MAX_FOLLOW_DIST: f32 = 12.0; - const MAX_CHASE_DIST: f32 = 24.0; + const MAX_CHASE_DIST: f32 = 18.0; const LISTEN_DIST: f32 = 16.0; const SEARCH_DIST: f32 = 48.0; - const SIGHT_DIST: f32 = 128.0; - const MIN_ATTACK_DIST: f32 = 3.5; - const MAX_FLEE_DIST: f32 = 32.0; + const SIGHT_DIST: f32 = 80.0; + const MIN_ATTACK_DIST: f32 = 2.0; + const MAX_FLEE_DIST: f32 = 20.0; let scale = scales.get(entity).map(|s| s.0).unwrap_or(1.0); @@ -333,7 +333,7 @@ impl<'a> System<'a> for Sys { .try_normalized() .unwrap_or(Vec2::zero()) * speed - * 0.6; //Let small/slow animals flee slower than the player + * 0.2; //Let small/slow animals flee slower than the player inputs.jump.set_state(bearing.z > 1.5); inputs.swimup.set_state(bearing.z > 0.5); inputs.swimdown.set_state(bearing.z < 0.5); diff --git a/server/src/events/entity_creation.rs b/server/src/events/entity_creation.rs index 9c89743450..52d02e7de1 100644 --- a/server/src/events/entity_creation.rs +++ b/server/src/events/entity_creation.rs @@ -119,8 +119,8 @@ pub fn handle_create_waypoint(server: &mut Server, pos: Vec3) { .state .create_object(Pos(pos), comp::object::Body::CampfireLit) .with(LightEmitter { - col: Rgb::new(1.0, 0.65, 0.2), - strength: 5.0, + col: Rgb::new(1.0, 0.8, 0.0), + strength: 8.0, flicker: 1.0, animated: true, }) diff --git a/server/src/events/entity_manipulation.rs b/server/src/events/entity_manipulation.rs index 1876e67431..04746c56d1 100644 --- a/server/src/events/entity_manipulation.rs +++ b/server/src/events/entity_manipulation.rs @@ -263,32 +263,25 @@ pub fn handle_destroy(server: &mut Server, entity: EcsEntity, cause: HealthSourc }, }, Some(common::comp::Body::BipedLarge(biped_large)) => match biped_large.species { - _ => match rng.gen_range(0, 9) { + _ => match rng.gen_range(0, 8) { 0 => { assets::load_expect::>("common.loot_tables.loot_table_food") }, 1 => assets::load_expect::>( - "common.loot_tables.loot_table_armor_misc", - ), - 2 => assets::load_expect::>( - "common.loot_tables.loot_table_armor_light", + "common.loot_tables.loot_table_armor_nature", ), 3 => assets::load_expect::>( "common.loot_tables.loot_table_armor_heavy", ), - 4 => assets::load_expect::>( - "common.loot_tables.loot_table_armor_misc", - ), 5 => assets::load_expect::>( - "common.loot_tables.loot_table_weapon_common", - ), - 6 => assets::load_expect::>( "common.loot_tables.loot_table_weapon_uncommon", ), - 7 => assets::load_expect::>( + 6 => assets::load_expect::>( "common.loot_tables.loot_table_weapon_rare", ), - _ => assets::load_expect::>("common.loot_tables.loot_table"), + _ => assets::load_expect::>( + "common.loot_tables.loot_table_cave_large", + ), }, }, Some(common::comp::Body::Golem(golem)) => match golem.species { @@ -322,13 +315,9 @@ pub fn handle_destroy(server: &mut Server, entity: EcsEntity, cause: HealthSourc }, Some(common::comp::Body::Critter(critter)) => match critter.species { _ => match rng.gen_range(0, 3) { - 0 => { - assets::load_expect::>("common.loot_tables.loot_table_food") - }, - 1 => assets::load_expect::>( + _ => assets::load_expect::>( "common.loot_tables.loot_table_animal_parts", ), - _ => assets::load_expect::>("common.loot_tables.loot_table"), }, }, Some(common::comp::Body::Dragon(_)) => { diff --git a/voxygen/src/hud/crafting.rs b/voxygen/src/hud/crafting.rs index 799e275060..1b61ad03f2 100644 --- a/voxygen/src/hud/crafting.rs +++ b/voxygen/src/hud/crafting.rs @@ -405,7 +405,7 @@ impl<'a> Widget for Crafting<'a> { .set(state.ids.ingredient_img[i], ui); // Ingredients text and amount // Don't show inventory amounts above 999 to avoid the widget clipping - let over9k = "999+"; + let over9k = "99+"; let in_inv: &str = &self.inventory.item_count(item).to_string(); // Show Ingredients // Align "Required" Text below last ingredient @@ -429,7 +429,7 @@ impl<'a> Widget for Crafting<'a> { "{}x {} ({})", amount, item.name(), - if self.inventory.item_count(item) > 999 { + if self.inventory.item_count(item) > 99 { over9k } else { in_inv @@ -439,7 +439,7 @@ impl<'a> Widget for Crafting<'a> { Text::new(&input) .right_from(state.ids.ingredient_frame[i], 10.0) .font_id(self.fonts.cyri.conrod_id) - .font_size(self.fonts.cyri.scale(14)) + .font_size(self.fonts.cyri.scale(12)) .color(col) .set(state.ids.ingredients[i], ui); } diff --git a/world/src/layer/mod.rs b/world/src/layer/mod.rs index 4c2fa96f50..403db7ba06 100644 --- a/world/src/layer/mod.rs +++ b/world/src/layer/mod.rs @@ -2,7 +2,7 @@ use crate::{ column::ColumnSample, sim::SimChunk, util::{RandomField, Sampler}, - Index, IndexRef, CONFIG, + IndexRef, CONFIG, }; use common::{ assets, comp, @@ -130,10 +130,10 @@ pub fn apply_scatter_to<'a>( // Collecable Objects // Only spawn twigs in temperate forests (Twigs, false, |c| { - ((c.tree_density - 0.5).max(0.0) * MUSH_FACT *0.5, None) + ((c.tree_density - 0.5).max(0.0) * MUSH_FACT * 0.5, None) }), (Stones, false, |c| { - ((c.rockiness - 0.5).max(0.0) * MUSH_FACT *0.5, None) + ((c.rockiness - 0.5).max(0.0) * MUSH_FACT * 0.5, None) }), // Don't spawn Mushrooms in snowy regions (Mushroom, false, |c| { @@ -197,8 +197,8 @@ pub fn apply_scatter_to<'a>( c.humidity, CONFIG.desert_hum, 0.3, - )) * MUSH_FACT* 0.1, - + )) * MUSH_FACT + * 0.1, None, ) }), @@ -208,8 +208,8 @@ pub fn apply_scatter_to<'a>( c.humidity, CONFIG.desert_hum, 0.2, - )) * MUSH_FACT* 0.1, - + )) * MUSH_FACT + * 0.1, None, ) }), diff --git a/world/src/site/dungeon/mod.rs b/world/src/site/dungeon/mod.rs index b6b04c5750..5ec09e375e 100644 --- a/world/src/site/dungeon/mod.rs +++ b/world/src/site/dungeon/mod.rs @@ -461,6 +461,13 @@ impl Floor { && !tile_is_pillar { // Bad + let chosen = + assets::load_expect::>(match rng.gen_range(0, 5) { + 0 => "common.loot_tables.loot_table_humanoids", + 1 => "common.loot_tables.loot_table_armor_misc", + _ => "common.loot_tables.loot_table_cultists", + }); + let chosen = chosen.choose(); let entity = EntityInfo::at( tile_wcenter.map(|e| e as f32) // Randomly displace them a little @@ -472,6 +479,7 @@ impl Floor { .with_alignment(comp::Alignment::Enemy) .with_body(comp::Body::Humanoid(comp::humanoid::Body::random())) .with_automatic_name() + .with_loot_drop(assets::load_expect_cloned(chosen)) .with_main_tool(assets::load_expect_cloned(match rng.gen_range(0, 6) { 0 => "common.items.npc_weapons.axe.malachite_axe-0", 1 => "common.items.npc_weapons.sword.cultist_purp_2h-0", @@ -509,7 +517,7 @@ impl Floor { .with_alignment(comp::Alignment::Enemy) .with_body(comp::Body::Humanoid(comp::humanoid::Body::random())) .with_name(format!( - "{}\nCult Leader", + "Cult Leader {}", npc::get_npc_name(npc::NpcKind::Humanoid) )) .with_main_tool(assets::load_expect_cloned( @@ -620,7 +628,7 @@ impl Floor { self.tiles.get(tile_pos) { let room = &self.rooms[*room]; - if RandomField::new(room.seed).chance(Vec3::from(pos), room.loot_density) { + if RandomField::new(room.seed).chance(Vec3::from(pos), room.loot_density * 0.5) { BlockMask::new(Block::new(BlockKind::Chest, Rgb::white()), 1) } else { empty diff --git a/world/src/util/random.rs b/world/src/util/random.rs index 15eb502188..aaf6b208e3 100644 --- a/world/src/util/random.rs +++ b/world/src/util/random.rs @@ -10,7 +10,7 @@ impl RandomField { pub const fn new(seed: u32) -> Self { Self { seed } } pub fn chance(&self, pos: Vec3, chance: f32) -> bool { - (self.get(pos) % (1 << 10)) as f32 / ((1 << 10) as f32) < chance + (self.get(pos) % (1 << 16)) as f32 / ((1 << 16) as f32) < chance } } From ce929d2924fa2852ed9163cfc0d92865ca7c6724 Mon Sep 17 00:00:00 2001 From: Monty Marz Date: Fri, 21 Aug 2020 22:37:08 +0200 Subject: [PATCH 11/12] Address comments, clippy and minor adjustments first bunch of comments addressed change order or scatter, paths and caves being applied in worldgen to avoid floating scatter objects campfire adjustments, reduced grass density due to FPS issues readded item descriptions to the crafting window, item desc for craftable armour address comments happy clippy, happy life clippy clippy more clippy fmt revert cargo.toml formatting remove "allow unreachable pattern" fmt --- Cargo.lock | 10 -- .../items/armor/back/leather_adventurer.ron | 2 +- .../items/armor/belt/leather_adventurer.ron | 2 +- .../items/armor/chest/leather_adventurer.ron | 2 +- .../items/armor/foot/leather_adventurer.ron | 2 +- .../items/armor/hand/leather_adventurer.ron | 2 +- .../items/armor/pants/leather_adventurer.ron | 2 +- .../armor/shoulder/leather_adventurer.ron | 4 +- assets/voxygen/i18n/tr_TR.ron | 46 ++++- assets/voxygen/shaders/particle-vert.glsl | 8 +- common/src/comp/agent.rs | 5 - common/src/comp/body.rs | 113 ++++--------- common/src/terrain/block.rs | 2 +- server/src/cmd.rs | 2 +- server/src/events/entity_creation.rs | 11 +- server/src/events/entity_manipulation.rs | 158 ++++++++---------- voxygen/Cargo.toml | 1 - voxygen/src/hud/crafting.rs | 15 +- voxygen/src/hud/mod.rs | 6 +- voxygen/src/hud/overhead.rs | 27 ++- voxygen/src/hud/social.rs | 2 +- world/src/layer/mod.rs | 10 +- world/src/lib.rs | 10 +- 23 files changed, 186 insertions(+), 256 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 661aa0ae37..259543ab2c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1309,15 +1309,6 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" -[[package]] -name = "format_num" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14ac05eb8d2eb4ed1eeff847911deae077b0b53332465de9d6a26b0ea9961bc8" -dependencies = [ - "regex", -] - [[package]] name = "fsevent" version = "2.0.2" @@ -4775,7 +4766,6 @@ dependencies = [ "dot_vox", "euc", "failure", - "format_num", "gfx", "gfx_device_gl", "gfx_gl", diff --git a/assets/common/items/armor/back/leather_adventurer.ron b/assets/common/items/armor/back/leather_adventurer.ron index 4201ca6602..75b55045d4 100644 --- a/assets/common/items/armor/back/leather_adventurer.ron +++ b/assets/common/items/armor/back/leather_adventurer.ron @@ -1,6 +1,6 @@ Item( name: "Agile Cape", - description: "Keeps your shoulders warm.", + description: "'Tightly packed pieces of leather to endure all weather.'", kind: Armor( ( kind: Back("Short2"), diff --git a/assets/common/items/armor/belt/leather_adventurer.ron b/assets/common/items/armor/belt/leather_adventurer.ron index 84014ebef2..fb17f34099 100644 --- a/assets/common/items/armor/belt/leather_adventurer.ron +++ b/assets/common/items/armor/belt/leather_adventurer.ron @@ -1,6 +1,6 @@ Item( name: "Agile Belt", - description: "", + description: "'Tightly packed pieces of leather to endure all weather.'", kind: Armor( ( kind: Belt("Leather2"), diff --git a/assets/common/items/armor/chest/leather_adventurer.ron b/assets/common/items/armor/chest/leather_adventurer.ron index 2889d1c7f1..a2c90a5f69 100644 --- a/assets/common/items/armor/chest/leather_adventurer.ron +++ b/assets/common/items/armor/chest/leather_adventurer.ron @@ -1,6 +1,6 @@ Item( name: "Agile Chest", - description: " ", + description: "'Tightly packed pieces of leather to endure all weather.'", kind: Armor( ( kind: Chest("Leather2"), diff --git a/assets/common/items/armor/foot/leather_adventurer.ron b/assets/common/items/armor/foot/leather_adventurer.ron index 6baffc8086..1b4dea02cd 100644 --- a/assets/common/items/armor/foot/leather_adventurer.ron +++ b/assets/common/items/armor/foot/leather_adventurer.ron @@ -1,6 +1,6 @@ Item( name: "Agile Kickers", - description: "", + description: "'Tightly packed pieces of leather to endure all weather.", kind: Armor( ( kind: Foot("Leather2"), diff --git a/assets/common/items/armor/hand/leather_adventurer.ron b/assets/common/items/armor/hand/leather_adventurer.ron index 6b4117119a..4989e08539 100644 --- a/assets/common/items/armor/hand/leather_adventurer.ron +++ b/assets/common/items/armor/hand/leather_adventurer.ron @@ -1,6 +1,6 @@ Item( name: "Agile Gauntlets", - description: "", + description: "'Tightly packed pieces of leather to endure all weather.'", kind: Armor( ( kind: Hand("Leather2"), diff --git a/assets/common/items/armor/pants/leather_adventurer.ron b/assets/common/items/armor/pants/leather_adventurer.ron index a5be0b07af..994cd00036 100644 --- a/assets/common/items/armor/pants/leather_adventurer.ron +++ b/assets/common/items/armor/pants/leather_adventurer.ron @@ -1,6 +1,6 @@ Item( name: "Agile Pantalons", - description: "", + description: "'Tightly packed pieces of leather to endure all weather.'", kind: Armor( ( kind: Pants("Leather2"), diff --git a/assets/common/items/armor/shoulder/leather_adventurer.ron b/assets/common/items/armor/shoulder/leather_adventurer.ron index 3cc291d335..8fe773a58d 100644 --- a/assets/common/items/armor/shoulder/leather_adventurer.ron +++ b/assets/common/items/armor/shoulder/leather_adventurer.ron @@ -1,9 +1,9 @@ Item( name: "Agile Guards", - description: "", + description: "'Tightly packed pieces of leather to endure all weather.'", kind: Armor( ( - kind: Shoulder("Leather1"), + kind: Shoulder("Leather2"), stats: ( protection: Normal(6.0), ), diff --git a/assets/voxygen/i18n/tr_TR.ron b/assets/voxygen/i18n/tr_TR.ron index 87da2a0ecb..a0e3a6ab0c 100644 --- a/assets/voxygen/i18n/tr_TR.ron +++ b/assets/voxygen/i18n/tr_TR.ron @@ -65,11 +65,14 @@ VoxygenLocalization( "common.create": "Oluştur", "common.okay": "Tamam", "common.accept": "Kabul Et", + "common.decline": "Reddet", "common.disclaimer": "Uyarı", "common.cancel": "İptal Et", "common.none": "Yok", "common.error": "Hata", "common.fatal_error": "Ölümcül hata", + "common.you": "Sen", + "common.automatic": "Otomatik", // Message when connection to the server is lost "common.connection_lost": r#"Bağlantı koptu! @@ -302,23 +305,30 @@ edince kapat"#, "hud.settings.fluid_rendering_mode.cheap": "Basit", "hud.settings.fluid_rendering_mode.shiny": "Güzel", "hud.settings.cloud_rendering_mode.regular": "Normal", + "hud.settings.particles": "Partiküller", + "hud.settings.resolution": "Çözünürlük", + "hud.settings.bit_depth": "Bit Derinliği", + "hud.settings.refresh_rate": "Yenileme Hızı", "hud.settings.fullscreen": "Tam ekran", "hud.settings.save_window_size": "Pencere boyutunu kaydet", - "hud.settings.awaitingkey": "Bir tuşa bas...", - "hud.settings.unbound": "Atanmamış", - "hud.settings.reset_keybinds": "Varsayılana döndür", - "hud.settings.music_volume": "Müzik Sesi", "hud.settings.sound_effect_volume": "Efekt Sesi", "hud.settings.audio_device": "Ses Aygıtı", - "hud.social": "Sosyal", - "hud.social.online": "Çevrimiçi", + "hud.settings.awaitingkey": "Bir tuşa bas...", + "hud.settings.unbound": "Atanmamış", + "hud.settings.reset_keybinds": "Varsayılana döndür", + + "hud.social": "Diğer Oyuncular", + "hud.social.online": "Çevrimiçi:", "hud.social.friends": "Arkadaşlar", "hud.social.not_yet_available": "Şu anda kullanılabilir değil", "hud.social.faction": "Klan", "hud.social.play_online_fmt": "{nb_player} oyuncu çevrimiçi", + "hud.social.name": "İsim", + "hud.social.level": "Seviye", + "hud.social.zone": "Bölge", "hud.crafting": "Üretim", "hud.crafting.recipes": "Tarifler", @@ -326,6 +336,19 @@ edince kapat"#, "hud.crafting.craft": "Üret", "hud.crafting.tool_cata": "Gerektiriyor:", + "hud.group": "Grup", + "hud.group.invite_to_join": "{name} seni grubuna davet etti!", + "hud.group.invite": "Davet Et", + "hud.group.kick": "Gruptan At", + "hud.group.assign_leader": "Lider Seç", + "hud.group.leave": "Gruptan Ayrıl", + "hud.group.dead" : "Ölü", + "hud.group.out_of_range": "Erişim dışı", + "hud.group.add_friend": "Arkadaşlara Ekle", + "hud.group.link_group": "Grupları Bağla", + "hud.group.in_menu": "Menüde", + "hud.group.members": "Grup Üyeleri", + "hud.spell": "Büyü", "hud.free_look_indicator": "Serbest bakış açık", @@ -368,7 +391,7 @@ edince kapat"#, "gameinput.wallleap": "Duvar Sıçrayışı", "gameinput.togglelantern": "Feneri yak/söndür", "gameinput.mount": "Bin", - "gameinput.enter": "Sohbet", + "gameinput.chat": "Sohbet", "gameinput.command": "Komut", "gameinput.escape": "Oyunu Duraklat", "gameinput.map": "Harita", @@ -384,6 +407,13 @@ edince kapat"#, "gameinput.freelook": "Serbest Bakış", "gameinput.autowalk": "Otomatik Yürüyüş", "gameinput.dance": "Dans et", + "gameinput.select": "Varlık Seç", + "gameinput.acceptgroupinvite": "Grup Davetini Kabul Et", + "gameinput.declinegroupinvite": "Grup Davetini Reddet", + "gameinput.crafting": "Üretim", + "gameinput.sneak": "Eğil", + "gameinput.swimdown": "Aşağı Dal", + "gameinput.swimup": "Yüzeye çık", /// End GameInput section @@ -456,6 +486,8 @@ Koruma "'L-Shift'e basarak Planörünü aç ve gökyüzünü fethet.", "Veloren hala Pre-Alpha'da. Onu geliştirmek için her gün elimizden geleni yapıyoruz!", "Geliştirme Takımına katılmak istiyorsan veya sadece sohbet etmek istiyorsan Discord sunucumuza katıl.", + "Can barında canı sayı olarak görmek istiyorsan, bunu ayarlardan aktifleştirebilirsin.", + "Niteliklerini görmek için envanterindeki 'Nitelikler' düğmesine tıklayabilirsin.", ], "npc.speech.villager_under_attack": [ "Saldırı altındayım, yardım edin!", diff --git a/assets/voxygen/shaders/particle-vert.glsl b/assets/voxygen/shaders/particle-vert.glsl index ce36cb7b17..5492b94168 100644 --- a/assets/voxygen/shaders/particle-vert.glsl +++ b/assets/voxygen/shaders/particle-vert.glsl @@ -109,10 +109,10 @@ void main() { attr = Attr( linear_motion( vec3(0.0, 0.0, 0.0), - vec3(rand2 * 0.02, rand3 * 0.02, 1.0 + rand4 * 0.1) + vec3(rand2 * 0.1, rand3 * 0.1, 1.0 + rand4 * 0.1) ), - linear_scale(0.5), - vec4(1, 1, 1, start_end(1.0, 0.0)), + linear_scale(0.2), + vec4(1, 1, 1, start_end(0.1, 0.0)), spin_in_axis(vec3(rand6, rand7, rand8), rand9 * 3 + lifetime * 0.5) ); } else if (inst_mode == FIRE) { @@ -121,7 +121,7 @@ void main() { vec3(rand0 * 0.3, rand1 * 0.3, 0.2), vec3(rand1 * 0.1, rand3 * 0.1, 3.0 + rand4 * 1.2) ), - 1.0, + 1.3, vec4(2, 0.8 + rand5 * 0.3, 0, 1), spin_in_axis(vec3(rand6, rand7, rand8), rand9 * 3) ); diff --git a/common/src/comp/agent.rs b/common/src/comp/agent.rs index 1afc6aa059..218d12240d 100644 --- a/common/src/comp/agent.rs +++ b/common/src/comp/agent.rs @@ -28,7 +28,6 @@ impl Alignment { match (self, other) { (Alignment::Enemy, Alignment::Enemy) => false, (Alignment::Enemy, Alignment::Wild) => false, - (Alignment::Enemy, Alignment::Tame) => true, (Alignment::Wild, Alignment::Enemy) => false, (Alignment::Wild, Alignment::Wild) => false, (Alignment::Npc, Alignment::Wild) => false, @@ -69,7 +68,6 @@ impl Component for Alignment { pub struct Psyche { pub aggro: f32, // 0.0 = always flees, 1.0 = always attacks, 0.5 = flee at 50% health } -#[allow(unreachable_patterns)] impl<'a> From<&'a Body> for Psyche { fn from(body: &'a Body) -> Self { Self { @@ -81,7 +79,6 @@ impl<'a> From<&'a Body> for Psyche { humanoid::Species::Human => 0.95, humanoid::Species::Orc => 1.0, humanoid::Species::Undead => 1.0, - _ => 1.0, }, Body::QuadrupedSmall(quadruped_small) => match quadruped_small.species { quadruped_small::Species::Pig => 0.5, @@ -100,7 +97,6 @@ impl<'a> From<&'a Body> for Psyche { quadruped_small::Species::Rabbit => 0.1, quadruped_small::Species::Truffler => 0.8, quadruped_small::Species::Frog => 0.6, - _ => 1.0, }, Body::QuadrupedMedium(quadruped_medium) => match quadruped_medium.species { quadruped_medium::Species::Tuskram => 0.8, @@ -119,7 +115,6 @@ impl<'a> From<&'a Body> for Psyche { quadruped_low::Species::Rocksnapper => 1.0, quadruped_low::Species::Pangolin => 0.6, quadruped_low::Species::Maneater => 1.0, - _ => 1.0, }, Body::BirdMedium(_) => 1.0, Body::BirdSmall(_) => 0.4, diff --git a/common/src/comp/body.rs b/common/src/comp/body.rs index 9bc38b8c30..7d29f69412 100644 --- a/common/src/comp/body.rs +++ b/common/src/comp/body.rs @@ -217,9 +217,7 @@ impl Body { _ => 100, }, Body::FishMedium(_) => 50, - Body::Dragon(dragon) => match dragon.species { - _ => 5000, - }, + Body::Dragon(_) => 5000, Body::BirdSmall(_) => 50, Body::FishSmall(_) => 20, Body::BipedLarge(biped_large) => match biped_large.species { @@ -231,12 +229,8 @@ impl Body { _ => 1000, }, Body::Object(_) => 10000, - Body::Golem(golem) => match golem.species { - _ => 1500, - }, - Body::Critter(critter) => match critter.species { - _ => 50, - }, + Body::Golem(_) => 1500, + Body::Critter(_) => 50, Body::QuadrupedLow(quadruped_low) => match quadruped_low.species { quadruped_low::Species::Crocodile => 600, quadruped_low::Species::Alligator => 600, @@ -290,9 +284,7 @@ impl Body { _ => 20, }, Body::FishMedium(_) => 10, - Body::Dragon(dragon) => match dragon.species { - _ => 500, - }, + Body::Dragon(_) => 500, Body::BirdSmall(_) => 10, Body::FishSmall(_) => 10, Body::BipedLarge(biped_large) => match biped_large.species { @@ -304,12 +296,8 @@ impl Body { _ => 100, }, Body::Object(_) => 10, - Body::Golem(golem) => match golem.species { - _ => 150, - }, - Body::Critter(critter) => match critter.species { - _ => 20, - }, + Body::Golem(_) => 150, + Body::Critter(_) => 20, Body::QuadrupedLow(quadruped_low) => match quadruped_low.species { quadruped_low::Species::Crocodile => 20, quadruped_low::Species::Alligator => 20, @@ -361,9 +349,7 @@ impl Body { _ => 8, }, Body::FishMedium(_) => 2, - Body::Dragon(dragon) => match dragon.species { - _ => 1000, - }, + Body::Dragon(_) => 1000, Body::BirdSmall(_) => 2, Body::FishSmall(_) => 2, Body::BipedLarge(biped_large) => match biped_large.species { @@ -375,12 +361,8 @@ impl Body { _ => 100, }, Body::Object(_) => 1, - Body::Golem(golem) => match golem.species { - _ => 75, - }, - Body::Critter(critter) => match critter.species { - _ => 2, - }, + Body::Golem(_) => 75, + Body::Critter(_) => 2, Body::QuadrupedLow(quadruped_low) => match quadruped_low.species { quadruped_low::Species::Crocodile => 10, quadruped_low::Species::Alligator => 10, @@ -400,34 +382,18 @@ impl Body { pub fn base_exp_increase(&self) -> u32 { match self { Body::Humanoid(_) => 2, - Body::QuadrupedSmall(quadruped_small) => match quadruped_small.species { - _ => 1, - }, - Body::QuadrupedMedium(quadruped_medium) => match quadruped_medium.species { - _ => 1, - }, - Body::BirdMedium(bird_medium) => match bird_medium.species { - _ => 1, - }, + Body::QuadrupedSmall(_) => 1, + Body::QuadrupedMedium(_) => 1, + Body::BirdMedium(_) => 1, Body::FishMedium(_) => 1, - Body::Dragon(dragon) => match dragon.species { - _ => 32, - }, + Body::Dragon(_) => 32, Body::BirdSmall(_) => 1, Body::FishSmall(_) => 1, - Body::BipedLarge(biped_large) => match biped_large.species { - _ => 2, - }, + Body::BipedLarge(_) => 2, Body::Object(_) => 0, - Body::Golem(golem) => match golem.species { - _ => 5, - }, - Body::Critter(critter) => match critter.species { - _ => 1, - }, - Body::QuadrupedLow(quadruped_low) => match quadruped_low.species { - _ => 1, - }, + Body::Golem(_) => 5, + Body::Critter(_) => 1, + Body::QuadrupedLow(_) => 1, } } @@ -460,9 +426,7 @@ impl Body { _ => 30, }, Body::FishMedium(_) => 10, - Body::Dragon(dragon) => match dragon.species { - _ => 5000, - }, + Body::Dragon(_) => 5000, Body::BirdSmall(_) => 10, Body::FishSmall(_) => 10, Body::BipedLarge(biped_large) => match biped_large.species { @@ -474,12 +438,8 @@ impl Body { _ => 60, }, Body::Object(_) => 0, - Body::Golem(golem) => match golem.species { - _ => 250, - }, - Body::Critter(critter) => match critter.species { - _ => 10, - }, + Body::Golem(_) => 250, + Body::Critter(_) => 10, Body::QuadrupedLow(quadruped_low) => match quadruped_low.species { quadruped_low::Species::Crocodile => 50, quadruped_low::Species::Alligator => 50, @@ -495,38 +455,21 @@ impl Body { } } - #[allow(unreachable_patterns)] pub fn base_range(&self) -> f32 { match self { Body::Humanoid(_) => 5.0, - Body::QuadrupedSmall(quadruped_small) => match quadruped_small.species { - _ => 4.5, - }, - Body::QuadrupedMedium(quadruped_medium) => match quadruped_medium.species { - _ => 5.5, - }, - Body::BirdMedium(bird_medium) => match bird_medium.species { - _ => 3.5, - }, + Body::QuadrupedSmall(_) => 4.5, + Body::QuadrupedMedium(_) => 5.5, + Body::BirdMedium(_) => 3.5, Body::FishMedium(_) => 3.5, - Body::Dragon(dragon) => match dragon.species { - _ => 12.5, - }, + Body::Dragon(_) => 12.5, Body::BirdSmall(_) => 3.0, Body::FishSmall(_) => 3.0, - Body::BipedLarge(biped_large) => match biped_large.species { - _ => 10.0, - }, + Body::BipedLarge(_) => 10.0, Body::Object(_) => 3.0, - Body::Golem(golem) => match golem.species { - _ => 7.5, - }, - Body::Critter(critter) => match critter.species { - _ => 3.0, - }, - Body::QuadrupedLow(quadruped_low) => match quadruped_low.species { - _ => 4.5, - }, + Body::Golem(_) => 7.5, + Body::Critter(_) => 3.0, + Body::QuadrupedLow(_) => 4.5, } } } diff --git a/common/src/terrain/block.rs b/common/src/terrain/block.rs index f2899f69a7..5d7df5cc32 100644 --- a/common/src/terrain/block.rs +++ b/common/src/terrain/block.rs @@ -498,7 +498,7 @@ impl Block { | BlockKind::Pot | BlockKind::Chest | BlockKind::DropGate - | BlockKind::DropGateBottom + | BlockKind::DropGateBottom | BlockKind::Door => Some(self.color[0] & 0b111), _ => None, } diff --git a/server/src/cmd.rs b/server/src/cmd.rs index 20612e6a65..968da28e7d 100644 --- a/server/src/cmd.rs +++ b/server/src/cmd.rs @@ -619,12 +619,12 @@ fn handle_spawn( ); } else if let Some(group) = match alignment { comp::Alignment::Wild => None, + comp::Alignment::Passive => None, comp::Alignment::Enemy => Some(comp::group::ENEMY), comp::Alignment::Npc | comp::Alignment::Tame => { Some(comp::group::NPC) }, comp::Alignment::Owned(_) => unreachable!(), - _ => None, } { let _ = server.state.ecs().write_storage().insert(new_entity, group); diff --git a/server/src/events/entity_creation.rs b/server/src/events/entity_creation.rs index 52d02e7de1..31600f7948 100644 --- a/server/src/events/entity_creation.rs +++ b/server/src/events/entity_creation.rs @@ -1,8 +1,8 @@ use crate::{sys, Server, StateExt}; use common::{ comp::{ - self, Agent, Alignment, Body, Gravity, Item, ItemDrop, LightEmitter, Loadout, Pos, - Projectile, Scale, Stats, Vel, WaypointArea, + self, Agent, Alignment, Body, Gravity, Item, ItemDrop, LightAnimation, LightEmitter, + Loadout, Pos, Projectile, Scale, Stats, Vel, WaypointArea, }, outcome::Outcome, util::Dir, @@ -40,11 +40,11 @@ pub fn handle_create_npc( ) { let group = match alignment { Alignment::Wild => None, + Alignment::Passive => None, Alignment::Enemy => Some(group::ENEMY), Alignment::Npc | Alignment::Tame => Some(group::NPC), // TODO: handle Alignment::Owned(_) => None, - _ => None, }; let entity = server @@ -124,6 +124,11 @@ pub fn handle_create_waypoint(server: &mut Server, pos: Vec3) { flicker: 1.0, animated: true, }) + .with(LightAnimation { + offset: Vec3::new(0.0, 0.0, 2.0), + col: Rgb::new(1.0, 0.8, 0.0), + strength: 8.0, + }) .with(WaypointArea::default()) .build(); } diff --git a/server/src/events/entity_manipulation.rs b/server/src/events/entity_manipulation.rs index 04746c56d1..63598b7077 100644 --- a/server/src/events/entity_manipulation.rs +++ b/server/src/events/entity_manipulation.rs @@ -233,106 +233,80 @@ pub fn handle_destroy(server: &mut Server, entity: EcsEntity, cause: HealthSourc }, } }, - Some(common::comp::Body::QuadrupedMedium(quadruped_medium)) => { - match quadruped_medium.species { - _ => match rng.gen_range(0, 4) { - 0 => assets::load_expect::>( - "common.loot_tables.loot_table_food", - ), - 1 => assets::load_expect::>( - "common.loot_tables.loot_table_armor_misc", - ), - 2 => assets::load_expect::>( - "common.loot_tables.loot_table_animal_parts", - ), - _ => assets::load_expect::>( - "common.loot_tables.loot_table_animal_parts", - ), - }, - } + Some(common::comp::Body::QuadrupedMedium(_)) => match rng.gen_range(0, 4) { + 0 => assets::load_expect::>("common.loot_tables.loot_table_food"), + 1 => assets::load_expect::>( + "common.loot_tables.loot_table_armor_misc", + ), + 2 => assets::load_expect::>( + "common.loot_tables.loot_table_animal_parts", + ), + _ => assets::load_expect::>( + "common.loot_tables.loot_table_animal_parts", + ), }, - Some(common::comp::Body::BirdMedium(bird_medium)) => match bird_medium.species { - _ => match rng.gen_range(0, 3) { - 0 => { - assets::load_expect::>("common.loot_tables.loot_table_food") - }, - 1 => assets::load_expect::>( - "common.loot_tables.loot_table_armor_misc", - ), - _ => assets::load_expect::>("common.loot_tables.loot_table"), - }, + Some(common::comp::Body::BirdMedium(_)) => match rng.gen_range(0, 3) { + 0 => assets::load_expect::>("common.loot_tables.loot_table_food"), + 1 => assets::load_expect::>( + "common.loot_tables.loot_table_armor_misc", + ), + _ => assets::load_expect::>("common.loot_tables.loot_table"), }, - Some(common::comp::Body::BipedLarge(biped_large)) => match biped_large.species { - _ => match rng.gen_range(0, 8) { - 0 => { - assets::load_expect::>("common.loot_tables.loot_table_food") - }, - 1 => assets::load_expect::>( - "common.loot_tables.loot_table_armor_nature", - ), - 3 => assets::load_expect::>( - "common.loot_tables.loot_table_armor_heavy", - ), - 5 => assets::load_expect::>( - "common.loot_tables.loot_table_weapon_uncommon", - ), - 6 => assets::load_expect::>( - "common.loot_tables.loot_table_weapon_rare", - ), - _ => assets::load_expect::>( - "common.loot_tables.loot_table_cave_large", - ), - }, + Some(common::comp::Body::BipedLarge(_)) => match rng.gen_range(0, 8) { + 0 => assets::load_expect::>("common.loot_tables.loot_table_food"), + 1 => assets::load_expect::>( + "common.loot_tables.loot_table_armor_nature", + ), + 3 => assets::load_expect::>( + "common.loot_tables.loot_table_armor_heavy", + ), + 5 => assets::load_expect::>( + "common.loot_tables.loot_table_weapon_uncommon", + ), + 6 => assets::load_expect::>( + "common.loot_tables.loot_table_weapon_rare", + ), + _ => assets::load_expect::>( + "common.loot_tables.loot_table_cave_large", + ), }, - Some(common::comp::Body::Golem(golem)) => match golem.species { - _ => match rng.gen_range(0, 9) { - 0 => { - assets::load_expect::>("common.loot_tables.loot_table_food") - }, - 1 => assets::load_expect::>( - "common.loot_tables.loot_table_armor_misc", - ), - 2 => assets::load_expect::>( - "common.loot_tables.loot_table_armor_light", - ), - 3 => assets::load_expect::>( - "common.loot_tables.loot_table_armor_heavy", - ), - 4 => assets::load_expect::>( - "common.loot_tables.loot_table_armor_misc", - ), - 5 => assets::load_expect::>( - "common.loot_tables.loot_table_weapon_common", - ), - 6 => assets::load_expect::>( - "common.loot_tables.loot_table_weapon_uncommon", - ), - 7 => assets::load_expect::>( - "common.loot_tables.loot_table_weapon_rare", - ), - _ => assets::load_expect::>("common.loot_tables.loot_table"), - }, + Some(common::comp::Body::Golem(_)) => match rng.gen_range(0, 9) { + 0 => assets::load_expect::>("common.loot_tables.loot_table_food"), + 1 => assets::load_expect::>( + "common.loot_tables.loot_table_armor_misc", + ), + 2 => assets::load_expect::>( + "common.loot_tables.loot_table_armor_light", + ), + 3 => assets::load_expect::>( + "common.loot_tables.loot_table_armor_heavy", + ), + 4 => assets::load_expect::>( + "common.loot_tables.loot_table_armor_misc", + ), + 5 => assets::load_expect::>( + "common.loot_tables.loot_table_weapon_common", + ), + 6 => assets::load_expect::>( + "common.loot_tables.loot_table_weapon_uncommon", + ), + 7 => assets::load_expect::>( + "common.loot_tables.loot_table_weapon_rare", + ), + _ => assets::load_expect::>("common.loot_tables.loot_table"), }, - Some(common::comp::Body::Critter(critter)) => match critter.species { - _ => match rng.gen_range(0, 3) { - _ => assets::load_expect::>( - "common.loot_tables.loot_table_animal_parts", - ), - }, + Some(common::comp::Body::Critter(_)) => { + assets::load_expect::>("common.loot_tables.loot_table_animal_parts") }, Some(common::comp::Body::Dragon(_)) => { assets::load_expect::>("common.loot_tables.loot_table_weapon_rare") }, - Some(common::comp::Body::QuadrupedLow(quadruped_low)) => match quadruped_low.species { - _ => match rng.gen_range(0, 3) { - 0 => { - assets::load_expect::>("common.loot_tables.loot_table_food") - }, - 1 => assets::load_expect::>( - "common.loot_tables.loot_table_animal_parts", - ), - _ => assets::load_expect::>("common.loot_tables.loot_table"), - }, + Some(common::comp::Body::QuadrupedLow(_)) => match rng.gen_range(0, 3) { + 0 => assets::load_expect::>("common.loot_tables.loot_table_food"), + 1 => assets::load_expect::>( + "common.loot_tables.loot_table_animal_parts", + ), + _ => assets::load_expect::>("common.loot_tables.loot_table"), }, _ => assets::load_expect::>("common.loot_tables.loot_table"), }; diff --git a/voxygen/Cargo.toml b/voxygen/Cargo.toml index 6f00070c09..459cd9657d 100644 --- a/voxygen/Cargo.toml +++ b/voxygen/Cargo.toml @@ -47,7 +47,6 @@ gilrs = { version = "0.7", features = ["serde"] } server = { package = "veloren-server", path = "../server", optional = true } # Utility -format_num = "0.1.0" glsl-include = "0.3.1" failure = "0.1.6" dot_vox = "4.0" diff --git a/voxygen/src/hud/crafting.rs b/voxygen/src/hud/crafting.rs index 1b61ad03f2..226dbec811 100644 --- a/voxygen/src/hud/crafting.rs +++ b/voxygen/src/hud/crafting.rs @@ -246,24 +246,20 @@ impl<'a> Widget for Crafting<'a> { { let output_text = format!("x{}", &recipe.output.1.to_string()); // Output Image + let (title, desc) = super::util::item_text(&recipe.output.0); Button::image( self.item_imgs .img_id_or_not_found_img((&recipe.output.0).into()), ) .w_h(55.0, 55.0) .middle_of(state.ids.output_img_frame) - .label(if recipe.output.1 > 1 {&output_text} else {""}) // Only show output amount for amounts > 1 + .label(&output_text) .label_color(TEXT_COLOR) .label_font_size(self.fonts.cyri.scale(14)) .label_font_id(self.fonts.cyri.conrod_id) .label_y(conrod_core::position::Relative::Scalar(-24.0)) .label_x(conrod_core::position::Relative::Scalar(24.0)) - .with_tooltip( - self.tooltip_manager, - recipe.output.0.name(), - recipe.output.0.description(), - &item_tooltip, - ) + .with_tooltip(self.tooltip_manager, title, &*desc, &item_tooltip) .set(state.ids.output_img, ui); } }, @@ -395,13 +391,12 @@ impl<'a> Widget for Crafting<'a> { }; frame.set(state.ids.ingredient_frame[i], ui); //Item Image - let title = item.name(); - let desc = item.description(); + let (title, desc) = super::util::item_text(&item); Button::image(self.item_imgs.img_id_or_not_found_img(item.into())) .w_h(22.0, 22.0) .middle_of(state.ids.ingredient_frame[i]) //.image_color(col) - .with_tooltip(self.tooltip_manager, title, desc, &item_tooltip) + .with_tooltip(self.tooltip_manager, title, &*desc, &item_tooltip) .set(state.ids.ingredient_img[i], ui); // Ingredients text and amount // Don't show inventory amounts above 999 to avoid the widget clipping diff --git a/voxygen/src/hud/mod.rs b/voxygen/src/hud/mod.rs index 9f4e7e2a71..b5a2bb8db8 100644 --- a/voxygen/src/hud/mod.rs +++ b/voxygen/src/hud/mod.rs @@ -1723,7 +1723,7 @@ impl Hud { self.show.stats = false; self.show.bag(false); self.show.crafting(false); - if self.show.social == false { + if !self.show.social { self.show.want_grab = true; self.force_ungrab = false; } else { @@ -1805,7 +1805,7 @@ impl Hud { self.show.stats = false; self.show.crafting(false); self.show.bag(false); - if self.show.social == false { + if !self.show.social { self.show.want_grab = true; self.force_ungrab = false; } else { @@ -2032,7 +2032,7 @@ impl Hud { match event { social::Event::Close => { self.show.social(false); - if self.show.bag == false { + if !self.show.bag { self.show.want_grab = true; self.force_ungrab = false; } else { diff --git a/voxygen/src/hud/overhead.rs b/voxygen/src/hud/overhead.rs index 5f7d059fcd..25bdc5e06a 100644 --- a/voxygen/src/hud/overhead.rs +++ b/voxygen/src/hud/overhead.rs @@ -155,7 +155,9 @@ impl<'a> Widget for Overhead<'a> { let hp_percentage = self.stats.health.current() as f64 / self.stats.health.maximum() as f64 * 100.0; let level_comp = self.stats.level.level() as i64 - self.own_level as i64; - let name_y = if hp_percentage == 100.0 { + let health_current = (self.stats.health.current() / 10) as f64; + let health_max = (self.stats.health.maximum() / 10) as f64; + let name_y = if (health_current - health_max).abs() < 1e-6 { MANA_BAR_Y + 20.0 } else if level_comp > 9 { MANA_BAR_Y + 38.0 @@ -163,22 +165,17 @@ impl<'a> Widget for Overhead<'a> { MANA_BAR_Y + 32.0 }; let font_size = if hp_percentage.abs() > 99.9 { 24 } else { 20 }; - let health_current = (self.stats.health.current() / 10) as f64; - let health_max = (self.stats.health.maximum() / 10) as f64; // Show K for numbers above 10^3 and truncate them // Show M for numbers above 10^6 and truncate them let health_cur_txt = match health_current as u32 { - 0..=999 => format!("{}", (health_current).trunc().max(1.0) as u32), - 1000..=999999 => format!("{}K", (health_current / 1000.0).trunc() as u32), - _ => format!( - "{}M", - (health_current as f64 / 10f64.powf(6.0)).trunc() as u32 - ), + 0..=999 => format!("{:.0}", health_current.max(1.0)), + 1000..=999999 => format!("{:.0}K", (health_current / 1000.0).max(1.0)), + _ => format!("{:.0}M", (health_current as f64 / 1.0e6).max(1.0)), }; let health_max_txt = match health_max as u32 { - 0..=999 => format!("{}", (health_max).trunc() as u32), - 1000..=999999 => format!("{}K", (health_max / 1000.0).trunc() as u32), - _ => format!("{}M", (health_max / 10f64.powf(6.0)).trunc() as u32), + 0..=999 => format!("{:.0}", health_max.max(1.0)), + 1000..=999999 => format!("{:.0}K", (health_max / 1000.0).max(1.0)), + _ => format!("{:.0}M", (health_max as f64 / 1.0e6).max(1.0)), }; // Name Text::new(&self.name) @@ -194,8 +191,10 @@ impl<'a> Widget for Overhead<'a> { .color(if self.in_group { GROUP_MEMBER /*} else if targets player { //TODO: Add a way to see if the entity is trying to attack the player, their pet(s) or a member of their group and recolour their nametag accordingly - DEFAULT_NPC*/ - } else {DEFAULT_NPC}) + DEFAULT_NPC*/ + } else { + DEFAULT_NPC + }) .x_y(0.0, name_y + 1.0) .parent(id) .set(state.ids.name, ui); diff --git a/voxygen/src/hud/social.rs b/voxygen/src/hud/social.rs index c9642f0786..82d570a15b 100644 --- a/voxygen/src/hud/social.rs +++ b/voxygen/src/hud/social.rs @@ -344,7 +344,7 @@ impl<'a> Widget for Social<'a> { .font_size(self.fonts.cyri.scale(14)) .color(TEXT_COLOR) .set(state.ids.online_txt, ui); - Text::new(&(count - 1).to_string()) + Text::new(&count.to_string()) .right_from(state.ids.online_txt, 5.0) .font_id(self.fonts.cyri.conrod_id) .font_size(self.fonts.cyri.scale(14)) diff --git a/world/src/layer/mod.rs b/world/src/layer/mod.rs index 403db7ba06..c47c7336da 100644 --- a/world/src/layer/mod.rs +++ b/world/src/layer/mod.rs @@ -145,19 +145,19 @@ pub fn apply_scatter_to<'a>( // Grass (ShortGrass, false, |c| { ( - close(c.temp, 0.3, 0.4).min(close(c.humidity, 0.6, 0.35)) * 0.5, + close(c.temp, 0.3, 0.4).min(close(c.humidity, 0.6, 0.35)) * 0.05, Some((48.0, 0.4)), ) }), (MediumGrass, false, |c| { ( - close(c.temp, 0.0, 0.6).min(close(c.humidity, 0.6, 0.35)) * 0.5, + close(c.temp, 0.0, 0.6).min(close(c.humidity, 0.6, 0.35)) * 0.05, Some((48.0, 0.2)), ) }), (LongGrass, false, |c| { ( - close(c.temp, 0.4, 0.4).min(close(c.humidity, 0.8, 0.2)) * 0.5, + close(c.temp, 0.4, 0.4).min(close(c.humidity, 0.8, 0.2)) * 0.08, Some((48.0, 0.1)), ) }), @@ -168,7 +168,7 @@ pub fn apply_scatter_to<'a>( c.humidity, CONFIG.jungle_hum, 0.6, - )) * 0.5, + )) * 0.08, Some((60.0, 5.0)), ) }), @@ -508,7 +508,7 @@ pub fn apply_caves_to<'a>( } } } - +#[allow(clippy::eval_order_dependence)] pub fn apply_caves_supplement<'a>( rng: &mut impl Rng, wpos2d: Vec2, diff --git a/world/src/lib.rs b/world/src/lib.rs index 105859cb91..80670bbd64 100644 --- a/world/src/lib.rs +++ b/world/src/lib.rs @@ -105,6 +105,7 @@ impl World { pub fn sample_blocks(&self) -> BlockGen { BlockGen::new(ColumnGen::new(&self.sim)) } #[allow(clippy::or_fun_call)] // TODO: Pending review in #587 + #[allow(clippy::eval_order_dependence)] pub fn generate_chunk( &self, index: IndexRef, @@ -205,9 +206,9 @@ impl World { let mut rng = rand::thread_rng(); // Apply layers (paths, caves, etc.) + layer::apply_caves_to(chunk_wpos2d, sample_get, &mut chunk, index); layer::apply_scatter_to(chunk_wpos2d, sample_get, &mut chunk, index, sim_chunk); layer::apply_paths_to(chunk_wpos2d, sample_get, &mut chunk, index); - layer::apply_caves_to(chunk_wpos2d, sample_get, &mut chunk, index); // Apply site generation sim_chunk.sites.iter().for_each(|site| { @@ -236,12 +237,9 @@ impl World { && sim_chunk.chaos < 0.5 && !sim_chunk.is_underwater() { + // TODO: REFACTOR: Define specific alignments in a config file instead of here let is_hostile: bool; - let is_giant = if rng.gen_range(0, 8) == 0 { - true - } else { - false - }; + let is_giant = rng.gen_range(0, 8) == 0; let quadmed = comp::Body::QuadrupedMedium(quadruped_medium::Body::random()); // Not all of them are hostile so we have to do the rng here let quadlow = comp::Body::QuadrupedLow(quadruped_low::Body::random()); // Not all of them are hostile so we have to do the rng here let entity = EntityInfo::at(gen_entity_pos()) From 8646c1add5c7d71c7fe59e0ff0f8374ced5e3635 Mon Sep 17 00:00:00 2001 From: Monty Marz Date: Sat, 22 Aug 2020 00:17:44 +0200 Subject: [PATCH 12/12] fix particles rendering before water revert changes to campfires -> Address in another MR! --- assets/voxygen/shaders/particle-vert.glsl | 12 ++++++------ voxygen/src/scene/mod.rs | 6 +++--- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/assets/voxygen/shaders/particle-vert.glsl b/assets/voxygen/shaders/particle-vert.glsl index 5492b94168..7170fbc6f8 100644 --- a/assets/voxygen/shaders/particle-vert.glsl +++ b/assets/voxygen/shaders/particle-vert.glsl @@ -109,19 +109,19 @@ void main() { attr = Attr( linear_motion( vec3(0.0, 0.0, 0.0), - vec3(rand2 * 0.1, rand3 * 0.1, 1.0 + rand4 * 0.1) + vec3(rand2 * 0.02, rand3 * 0.02, 1.0 + rand4 * 0.1) ), - linear_scale(0.2), - vec4(1, 1, 1, start_end(0.1, 0.0)), + linear_scale(0.5), + vec4(1, 1, 1, start_end(1.0, 0.0)), spin_in_axis(vec3(rand6, rand7, rand8), rand9 * 3 + lifetime * 0.5) ); } else if (inst_mode == FIRE) { attr = Attr( linear_motion( - vec3(rand0 * 0.3, rand1 * 0.3, 0.2), - vec3(rand1 * 0.1, rand3 * 0.1, 3.0 + rand4 * 1.2) + vec3(rand0 * 0.25, rand1 * 0.25, 0.3), + vec3(rand2 * 0.1, rand3 * 0.1, 2.0 + rand4 * 1.0) ), - 1.3, + 1.0, vec4(2, 0.8 + rand5 * 0.3, 0, 1), spin_in_axis(vec3(rand6, rand7, rand8), rand9 * 3) ); diff --git a/voxygen/src/scene/mod.rs b/voxygen/src/scene/mod.rs index f01ba9ec65..eb2ac72d2c 100644 --- a/voxygen/src/scene/mod.rs +++ b/voxygen/src/scene/mod.rs @@ -1022,9 +1022,6 @@ impl Scene { // Render the skybox. renderer.render_skybox(&self.skybox.model, global, &self.skybox.locals, lod); - // Render particle effects. - self.particle_mgr.render(renderer, scene_data, global, lod); - self.terrain.render_translucent( renderer, global, @@ -1034,6 +1031,9 @@ impl Scene { scene_data.sprite_render_distance, ); + // Render particle effects. + self.particle_mgr.render(renderer, scene_data, global, lod); + renderer.render_post_process( &self.postprocess.model, &global.globals,