mirror of
https://gitlab.com/veloren/veloren.git
synced 2024-08-30 18:12:32 +00:00
More spots
This commit is contained in:
parent
7ced7e184e
commit
e05ca1f308
13
assets/common/entity/spot/myrmidon/spear.ron
Normal file
13
assets/common/entity/spot/myrmidon/spear.ron
Normal file
@ -0,0 +1,13 @@
|
||||
EntityConfig (
|
||||
name: Name("Myrmidon Hoplite"),
|
||||
body: RandomWith("myrmidon"),
|
||||
alignment: Alignment(Enemy),
|
||||
|
||||
loot: LootTable("common.loot_tables.dungeon.tier-4.enemy"),
|
||||
|
||||
hands: TwoHanded(Item("common.items.npc_weapons.biped_small.myrmidon.wooden_spear")),
|
||||
|
||||
meta: [
|
||||
LoadoutAsset("common.loadout.dungeon.tier-4.myrmidon"),
|
||||
],
|
||||
)
|
8
assets/world/manifests/spots/jungle/saurok-altar.ron
Normal file
8
assets/world/manifests/spots/jungle/saurok-altar.ron
Normal file
@ -0,0 +1,8 @@
|
||||
#![enable(unwrap_newtypes)]
|
||||
|
||||
[
|
||||
(
|
||||
specifier: "world.structure.natural.saurok-altar",
|
||||
center: (10, 13, 3),
|
||||
),
|
||||
]
|
8
assets/world/manifests/spots/myrmidon-temple.ron
Normal file
8
assets/world/manifests/spots/myrmidon-temple.ron
Normal file
@ -0,0 +1,8 @@
|
||||
#![enable(unwrap_newtypes)]
|
||||
|
||||
[
|
||||
(
|
||||
specifier: "world.structure.natural.myrmidon-temple",
|
||||
center: (13, 23, 5),
|
||||
),
|
||||
]
|
8
assets/world/manifests/spots/rock-circle.ron
Normal file
8
assets/world/manifests/spots/rock-circle.ron
Normal file
@ -0,0 +1,8 @@
|
||||
#![enable(unwrap_newtypes)]
|
||||
|
||||
[
|
||||
(
|
||||
specifier: "world.structure.natural.rock-circle",
|
||||
center: (30, 30, 4),
|
||||
),
|
||||
]
|
8
assets/world/manifests/spots/water/shipwreck.ron
Normal file
8
assets/world/manifests/spots/water/shipwreck.ron
Normal file
@ -0,0 +1,8 @@
|
||||
#![enable(unwrap_newtypes)]
|
||||
|
||||
[
|
||||
(
|
||||
specifier: "world.structure.natural.shipwreck",
|
||||
center: (32, 14, 6),
|
||||
),
|
||||
]
|
@ -3,6 +3,10 @@
|
||||
[
|
||||
(
|
||||
specifier: "world.structure.natural.dwarven_grave",
|
||||
center: (20, 23, 5)
|
||||
center: (20, 23, 5),
|
||||
custom_indices: {
|
||||
151: Filled(GlowingRock, (r: 50, g: 255, b: 210)),
|
||||
152: Filled(GlowingRock, (r: 36, g: 187, b: 151)),
|
||||
},
|
||||
),
|
||||
]
|
||||
|
BIN
assets/world/structure/natural/myrmidon-temple.vox
(Stored with Git LFS)
Normal file
BIN
assets/world/structure/natural/myrmidon-temple.vox
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/world/structure/natural/rock-circle.vox
(Stored with Git LFS)
Normal file
BIN
assets/world/structure/natural/rock-circle.vox
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/world/structure/natural/saurok-altar.vox
(Stored with Git LFS)
Normal file
BIN
assets/world/structure/natural/saurok-altar.vox
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/world/structure/natural/shipwreck.vox
(Stored with Git LFS)
Normal file
BIN
assets/world/structure/natural/shipwreck.vox
(Stored with Git LFS)
Normal file
Binary file not shown.
@ -33,6 +33,9 @@ use vek::*;
|
||||
pub enum Spot {
|
||||
// *Themed Spots*
|
||||
DwarvenGrave,
|
||||
SaurokAltar,
|
||||
RockCircle,
|
||||
MyrmidonTemple,
|
||||
GnarlingTotem,
|
||||
WitchHouse,
|
||||
//BanditCamp,
|
||||
@ -50,6 +53,7 @@ pub enum Spot {
|
||||
DesertBones,
|
||||
AirshipCrash,
|
||||
FruitTree,
|
||||
Shipwreck,
|
||||
}
|
||||
|
||||
// Available Biomes are:
|
||||
@ -67,6 +71,7 @@ pub enum Spot {
|
||||
|
||||
impl Spot {
|
||||
pub fn generate(world: &mut WorldSim) {
|
||||
use BiomeKind::*;
|
||||
// Trees/spawn: false => *No* trees around the spot
|
||||
// Themed Spots -> Act as an introduction to themes of sites
|
||||
Self::generate_spots(
|
||||
@ -79,7 +84,10 @@ impl Spot {
|
||||
&& !c.river.near_water()
|
||||
&& !c.path.0.is_way()
|
||||
&& c.sites.is_empty()
|
||||
&& !matches!(c.get_biome(), BiomeKind::Ocean | BiomeKind::Mountain)
|
||||
&& matches!(
|
||||
c.get_biome(),
|
||||
Grassland | Forest | Taiga | Snowland | Jungle
|
||||
)
|
||||
},
|
||||
false,
|
||||
);
|
||||
@ -93,7 +101,48 @@ impl Spot {
|
||||
&& !c.river.near_water()
|
||||
&& !c.path.0.is_way()
|
||||
&& c.sites.is_empty()
|
||||
&& matches!(c.get_biome(), BiomeKind::Jungle | BiomeKind::Forest)
|
||||
&& matches!(c.get_biome(), Jungle | Forest)
|
||||
},
|
||||
false,
|
||||
);
|
||||
Self::generate_spots(
|
||||
Spot::SaurokAltar,
|
||||
world,
|
||||
2.0,
|
||||
|g, c| {
|
||||
g < 0.25
|
||||
&& !c.near_cliffs()
|
||||
&& !c.river.near_water()
|
||||
&& !c.path.0.is_way()
|
||||
&& c.sites.is_empty()
|
||||
&& matches!(c.get_biome(), Jungle | Forest)
|
||||
},
|
||||
false,
|
||||
);
|
||||
Self::generate_spots(
|
||||
Spot::RockCircle,
|
||||
world,
|
||||
2.0,
|
||||
|g, c| {
|
||||
g < 0.1
|
||||
&& !c.near_cliffs()
|
||||
&& !c.river.near_water()
|
||||
&& !c.path.0.is_way()
|
||||
&& c.sites.is_empty()
|
||||
},
|
||||
false,
|
||||
);
|
||||
Self::generate_spots(
|
||||
Spot::MyrmidonTemple,
|
||||
world,
|
||||
3.0,
|
||||
|g, c| {
|
||||
g < 0.1
|
||||
&& !c.near_cliffs()
|
||||
&& !c.river.near_water()
|
||||
&& !c.path.0.is_way()
|
||||
&& c.sites.is_empty()
|
||||
&& matches!(c.get_biome(), Desert | Jungle)
|
||||
},
|
||||
false,
|
||||
);
|
||||
@ -107,7 +156,7 @@ impl Spot {
|
||||
&& !c.river.near_water()
|
||||
&& !c.path.0.is_way()
|
||||
&& c.sites.is_empty()
|
||||
&& matches!(c.get_biome(), BiomeKind::Forest | BiomeKind::Grassland)
|
||||
&& matches!(c.get_biome(), Forest | Grassland)
|
||||
},
|
||||
false,
|
||||
);
|
||||
@ -123,7 +172,7 @@ impl Spot {
|
||||
&& !c.river.near_water()
|
||||
&& !c.path.0.is_way()
|
||||
&& c.sites.is_empty()
|
||||
&& matches!(c.get_biome(), BiomeKind::Savannah)
|
||||
&& matches!(c.get_biome(), Savannah)
|
||||
},
|
||||
false,
|
||||
);
|
||||
@ -137,7 +186,7 @@ impl Spot {
|
||||
&& !c.river.near_water()
|
||||
&& !c.path.0.is_way()
|
||||
&& c.sites.is_empty()
|
||||
&& matches!(c.get_biome(), BiomeKind::Jungle | BiomeKind::Forest)
|
||||
&& matches!(c.get_biome(), Jungle | Forest)
|
||||
},
|
||||
true,
|
||||
);
|
||||
@ -151,7 +200,7 @@ impl Spot {
|
||||
&& !c.river.near_water()
|
||||
&& !c.path.0.is_way()
|
||||
&& c.sites.is_empty()
|
||||
&& matches!(c.get_biome(), BiomeKind::Desert)
|
||||
&& matches!(c.get_biome(), Desert)
|
||||
},
|
||||
false,
|
||||
);
|
||||
@ -165,10 +214,7 @@ impl Spot {
|
||||
&& !c.river.near_water()
|
||||
&& !c.path.0.is_way()
|
||||
&& c.sites.is_empty()
|
||||
&& !matches!(
|
||||
c.get_biome(),
|
||||
BiomeKind::Mountain | BiomeKind::Void | BiomeKind::Ocean
|
||||
)
|
||||
&& !matches!(c.get_biome(), Mountain | Void | Ocean)
|
||||
},
|
||||
false,
|
||||
);
|
||||
@ -182,7 +228,16 @@ impl Spot {
|
||||
&& !c.river.near_water()
|
||||
&& !c.path.0.is_way()
|
||||
&& c.sites.is_empty()
|
||||
&& matches!(c.get_biome(), BiomeKind::Forest)
|
||||
&& matches!(c.get_biome(), Forest)
|
||||
},
|
||||
true,
|
||||
);
|
||||
Self::generate_spots(
|
||||
Spot::Shipwreck,
|
||||
world,
|
||||
4.0,
|
||||
|g, c| {
|
||||
g < 0.25 && c.is_underwater() && c.sites.is_empty() && c.water_alt > c.alt + 30.0
|
||||
},
|
||||
true,
|
||||
);
|
||||
@ -267,6 +322,29 @@ pub fn apply_spots_to(canvas: &mut Canvas, _dynamic_rng: &mut impl Rng) {
|
||||
entity_radius: 60.0,
|
||||
entities: &[(6..12, "common.entity.spot.bandit_camp.dwarf_grave_robber")],
|
||||
},
|
||||
Spot::SaurokAltar => SpotConfig {
|
||||
base_structures: Some("spots.jungle.saurok-altar"),
|
||||
entity_radius: 6.0,
|
||||
entities: &[
|
||||
(2..4, "common.entity.wild.aggressive.occult_saurok"),
|
||||
(2..4, "common.entity.wild.aggressive.sly_saurok"),
|
||||
(2..4, "common.entity.wild.aggressive.mighty_saurok"),
|
||||
],
|
||||
},
|
||||
Spot::RockCircle => SpotConfig {
|
||||
base_structures: Some("spots.rock-circle"),
|
||||
entity_radius: 20.0,
|
||||
entities: &[
|
||||
(0..2, "common.entity.wild.aggressive.archaeos"),
|
||||
(0..2, "common.entity.wild.aggressive.ntouka"),
|
||||
(0..2, "common.entity.wild.aggressive.dreadhorn"),
|
||||
],
|
||||
},
|
||||
Spot::MyrmidonTemple => SpotConfig {
|
||||
base_structures: Some("spots.myrmidon-temple"),
|
||||
entity_radius: 10.0,
|
||||
entities: &[(8..10, "common.entity.spot.myrmidon.spear")],
|
||||
},
|
||||
Spot::WitchHouse => SpotConfig {
|
||||
base_structures: Some("spots_general.witch_hut"),
|
||||
entity_radius: 1.0,
|
||||
@ -311,6 +389,11 @@ pub fn apply_spots_to(canvas: &mut Canvas, _dynamic_rng: &mut impl Rng) {
|
||||
entity_radius: 2.0,
|
||||
entities: &[(0..2, "common.entity.wild.peaceful.bear")],
|
||||
},
|
||||
Spot::Shipwreck => SpotConfig {
|
||||
base_structures: Some("spots.water.shipwreck"),
|
||||
entity_radius: 2.0,
|
||||
entities: &[(0..2, "common.entity.wild.peaceful.clownfish")],
|
||||
},
|
||||
};
|
||||
// Blit base structure
|
||||
if let Some(base_structures) = spot_config.base_structures {
|
||||
|
Loading…
Reference in New Issue
Block a user