From 6f8f42d9fcc3dfe42e83fd9f17fd81227edf474a Mon Sep 17 00:00:00 2001 From: Llywelwyn Date: Tue, 1 Aug 2023 12:28:57 +0100 Subject: [PATCH] Mind component is now properly applied Applied by default to all mobs, unless they have the MINDLESS flag --- src/main.rs | 2 +- src/raws/rawmaster.rs | 6 +++++- src/spawner.rs | 6 +++--- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/main.rs b/src/main.rs index 7f6798e..8e7d1de 100644 --- a/src/main.rs +++ b/src/main.rs @@ -131,8 +131,8 @@ impl State { fn run_systems(&mut self) { let mut mapindex = MapIndexingSystem {}; let mut vis = VisibilitySystem {}; - let mut energy = ai::EnergySystem {}; let mut regen_system = ai::RegenSystem {}; + let mut energy = ai::EnergySystem {}; let mut turn_status_system = ai::TurnStatusSystem {}; let mut quip_system = ai::QuipSystem {}; let mut mob = MonsterAI {}; diff --git a/src/raws/rawmaster.rs b/src/raws/rawmaster.rs index b9a456f..c763202 100644 --- a/src/raws/rawmaster.rs +++ b/src/raws/rawmaster.rs @@ -215,19 +215,20 @@ pub fn spawn_named_mob( let mut xp_value = 1; // New entity with a position, name, combatstats, and viewshed eb = ecs.create_entity().marked::>(); - eb = spawn_position(pos, eb, key, raws); eb = eb.with(Name { name: mob_template.name.clone(), plural: mob_template.name.clone() }); eb = eb.with(Viewshed { visible_tiles: Vec::new(), range: mob_template.vision_range, dirty: true }); if let Some(renderable) = &mob_template.renderable { eb = eb.with(get_renderable_component(renderable)); } + let mut has_mind = true; if let Some(flags) = &mob_template.flags { for flag in flags.iter() { match flag.as_str() { "BLOCKS_TILE" => eb = eb.with(BlocksTile {}), "BYSTANDER" => eb = eb.with(Bystander {}), "MONSTER" => eb = eb.with(Monster {}), + "MINDLESS" => has_mind = false, "SMALL_GROUP" => {} // These flags are for region spawning, "LARGE_GROUP" => {} // and don't matter here (yet)? "MULTIATTACK" => { @@ -238,6 +239,9 @@ pub fn spawn_named_mob( } } } + if has_mind { + eb = eb.with(Mind {}); + } if let Some(quips) = &mob_template.quips { eb = eb.with(Quips { available: quips.clone() }); } diff --git a/src/spawner.rs b/src/spawner.rs index 63b8c1a..033bad8 100644 --- a/src/spawner.rs +++ b/src/spawner.rs @@ -1,7 +1,7 @@ use super::{ - ai::NORMAL_SPEED, gamelog, gamesystem, gamesystem::attr_bonus, random_table::RandomTable, raws, Attribute, - Attributes, Clock, Energy, HungerClock, HungerState, Map, Name, Player, Pool, Pools, Position, Rect, Renderable, - SerializeMe, Skill, Skills, TileType, Viewshed, + ai::NORMAL_SPEED, gamesystem, gamesystem::attr_bonus, random_table::RandomTable, raws, Attribute, Attributes, + Clock, Energy, HungerClock, HungerState, Map, Name, Player, Pool, Pools, Position, Rect, Renderable, SerializeMe, + Skill, Skills, TileType, Viewshed, }; use rltk::{RandomNumberGenerator, RGB}; use specs::prelude::*;