Add ItemMagicTemplate struct to raws
This commit is contained in:
parent
39be37081b
commit
5a0f7b2b05
@ -6,6 +6,7 @@ use crate::colors;
|
|||||||
|
|
||||||
pub fn tile_glyph(idx: usize, map: &Map) -> (FontCharType, RGB, RGB) {
|
pub fn tile_glyph(idx: usize, map: &Map) -> (FontCharType, RGB, RGB) {
|
||||||
let (glyph, mut fg, mut bg) = match map.depth {
|
let (glyph, mut fg, mut bg) = match map.depth {
|
||||||
|
8 | 9 => get_mushroom_glyph(idx, map),
|
||||||
7 => {
|
7 => {
|
||||||
let x = idx as i32 % map.width;
|
let x = idx as i32 % map.width;
|
||||||
if x > map.width - 16 {
|
if x > map.width - 16 {
|
||||||
|
@ -361,6 +361,7 @@ pub fn level_builder(
|
|||||||
6 => dwarf_fort_builder(new_depth, rng, width, height),
|
6 => dwarf_fort_builder(new_depth, rng, width, height),
|
||||||
7 => mushroom_entrance(new_depth, rng, width, height),
|
7 => mushroom_entrance(new_depth, rng, width, height),
|
||||||
8 => mushroom_builder(new_depth, rng, width, height),
|
8 => mushroom_builder(new_depth, rng, width, height),
|
||||||
|
9 => mushroom_exit(new_depth, rng, width, height),
|
||||||
_ => random_builder(new_depth, rng, width, height),
|
_ => random_builder(new_depth, rng, width, height),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
use super::prefab_builder::prefab_sections::UNDERGROUND_FORT;
|
use super::prefab_builder::prefab_sections::{DROW_ENTRY, UNDERGROUND_FORT};
|
||||||
use super::{
|
use super::{
|
||||||
AreaEndingPosition, AreaStartingPosition, BuilderChain, CellularAutomataBuilder,
|
AreaEndingPosition, AreaStartingPosition, BuilderChain, CellularAutomataBuilder,
|
||||||
CullUnreachable, PrefabBuilder, VoronoiSpawning, WaveformCollapseBuilder, XEnd, XStart, YEnd,
|
CullUnreachable, PrefabBuilder, VoronoiSpawning, WaveformCollapseBuilder, XEnd, XStart, YEnd,
|
||||||
@ -43,3 +43,23 @@ pub fn mushroom_builder(
|
|||||||
|
|
||||||
chain
|
chain
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn mushroom_exit(
|
||||||
|
new_depth: i32,
|
||||||
|
_rng: &mut rltk::RandomNumberGenerator,
|
||||||
|
width: i32,
|
||||||
|
height: i32,
|
||||||
|
) -> BuilderChain {
|
||||||
|
let mut chain = BuilderChain::new(new_depth, width, height, "Into The Mushroom Grove");
|
||||||
|
chain
|
||||||
|
.start_with(CellularAutomataBuilder::new())
|
||||||
|
.with(WaveformCollapseBuilder::new())
|
||||||
|
.with(AreaStartingPosition::new(XStart::Center, YStart::Center))
|
||||||
|
.with(CullUnreachable::new())
|
||||||
|
.with(AreaStartingPosition::new(XStart::Right, YStart::Center))
|
||||||
|
.with(AreaEndingPosition::new(XEnd::Left, YEnd::Center))
|
||||||
|
.with(VoronoiSpawning::new())
|
||||||
|
.with(PrefabBuilder::sectional(DROW_ENTRY));
|
||||||
|
|
||||||
|
chain
|
||||||
|
}
|
||||||
|
@ -101,6 +101,10 @@ impl PrefabBuilder {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
'>' => build_data.map.tiles[idx] = TileType::DownStairs,
|
'>' => build_data.map.tiles[idx] = TileType::DownStairs,
|
||||||
|
'e' => {
|
||||||
|
build_data.map.tiles[idx] = TileType::Floor;
|
||||||
|
build_data.spawn_list.push((idx, "Dark Elf".to_string()));
|
||||||
|
}
|
||||||
'g' => {
|
'g' => {
|
||||||
build_data.map.tiles[idx] = TileType::Floor;
|
build_data.map.tiles[idx] = TileType::Floor;
|
||||||
build_data.spawn_list.push((idx, "Goblin".to_string()));
|
build_data.spawn_list.push((idx, "Goblin".to_string()));
|
||||||
|
@ -103,3 +103,25 @@ const ORC_CAMP_TXT: &str = "
|
|||||||
≈≈≈≈o≈≈≈≈≈
|
≈≈≈≈o≈≈≈≈≈
|
||||||
|
|
||||||
";
|
";
|
||||||
|
|
||||||
|
#[allow(dead_code)]
|
||||||
|
pub const DROW_ENTRY: PrefabSection = PrefabSection {
|
||||||
|
template: DROW_ENTRY_TXT,
|
||||||
|
width: 12,
|
||||||
|
height: 10,
|
||||||
|
placement: (HorizontalPlacement::Center, VerticalPlacement::Center),
|
||||||
|
};
|
||||||
|
|
||||||
|
#[allow(dead_code)]
|
||||||
|
const DROW_ENTRY_TXT: &str = "
|
||||||
|
|
||||||
|
##########
|
||||||
|
# #
|
||||||
|
# > #
|
||||||
|
# #
|
||||||
|
#e #
|
||||||
|
e #
|
||||||
|
#e #
|
||||||
|
##########
|
||||||
|
|
||||||
|
";
|
||||||
|
@ -2,7 +2,7 @@ use std::collections::HashMap;
|
|||||||
|
|
||||||
use ::serde::Deserialize;
|
use ::serde::Deserialize;
|
||||||
|
|
||||||
#[derive(Deserialize, Debug)]
|
#[derive(Deserialize, Debug, Clone)]
|
||||||
pub struct Item {
|
pub struct Item {
|
||||||
pub name: String,
|
pub name: String,
|
||||||
pub renderable: Option<Renderable>,
|
pub renderable: Option<Renderable>,
|
||||||
@ -15,9 +15,10 @@ pub struct Item {
|
|||||||
pub vendor_category: Option<String>,
|
pub vendor_category: Option<String>,
|
||||||
pub magic: Option<MagicItem>,
|
pub magic: Option<MagicItem>,
|
||||||
pub attributes: Option<ItemAttributeBonus>,
|
pub attributes: Option<ItemAttributeBonus>,
|
||||||
|
pub template_magic: Option<ItemMagicTemplate>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Deserialize, Debug)]
|
#[derive(Deserialize, Debug, Clone)]
|
||||||
pub struct Renderable {
|
pub struct Renderable {
|
||||||
pub glyph: String,
|
pub glyph: String,
|
||||||
pub fg: String,
|
pub fg: String,
|
||||||
@ -27,13 +28,13 @@ pub struct Renderable {
|
|||||||
pub y_size: Option<i32>,
|
pub y_size: Option<i32>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Deserialize, Debug)]
|
#[derive(Deserialize, Debug, Clone)]
|
||||||
pub struct Consumable {
|
pub struct Consumable {
|
||||||
pub effects: HashMap<String, String>,
|
pub effects: HashMap<String, String>,
|
||||||
pub charges: Option<i32>,
|
pub charges: Option<i32>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Deserialize, Debug)]
|
#[derive(Deserialize, Debug, Clone)]
|
||||||
pub struct Weapon {
|
pub struct Weapon {
|
||||||
pub range: String,
|
pub range: String,
|
||||||
pub attribute: String,
|
pub attribute: String,
|
||||||
@ -44,23 +45,31 @@ pub struct Weapon {
|
|||||||
pub proc_effects: Option<HashMap<String, String>>,
|
pub proc_effects: Option<HashMap<String, String>>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Deserialize, Debug)]
|
#[derive(Deserialize, Debug, Clone)]
|
||||||
pub struct Wearable {
|
pub struct Wearable {
|
||||||
pub armor_class: f32,
|
pub armor_class: f32,
|
||||||
pub slot: String,
|
pub slot: String,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Deserialize, Debug)]
|
#[derive(Deserialize, Debug, Clone)]
|
||||||
pub struct MagicItem {
|
pub struct MagicItem {
|
||||||
pub class: String,
|
pub class: String,
|
||||||
pub naming: String,
|
pub naming: String,
|
||||||
pub cursed: Option<bool>,
|
pub cursed: Option<bool>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Deserialize, Debug)]
|
#[derive(Deserialize, Debug, Clone)]
|
||||||
pub struct ItemAttributeBonus {
|
pub struct ItemAttributeBonus {
|
||||||
pub might: Option<i32>,
|
pub might: Option<i32>,
|
||||||
pub fitness: Option<i32>,
|
pub fitness: Option<i32>,
|
||||||
pub quickness: Option<i32>,
|
pub quickness: Option<i32>,
|
||||||
pub intelligence: Option<i32>,
|
pub intelligence: Option<i32>,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(Deserialize, Debug, Clone)]
|
||||||
|
pub struct ItemMagicTemplate {
|
||||||
|
pub unidentified_name: String,
|
||||||
|
pub bonus_min: i32,
|
||||||
|
pub bonus_max: i32,
|
||||||
|
pub include_cursed: bool,
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user