From cf8ceb1351c0b5ef9b36828b11fdabbba0b44565 Mon Sep 17 00:00:00 2001 From: Shagnor Date: Thu, 12 Jan 2023 23:12:50 +1100 Subject: [PATCH] Add more NPCs + announce moves to room. --- blastmud_game/src/main.rs | 1 + .../message_handler/user_commands/movement.rs | 41 +++++- .../src/message_handler/user_commands/say.rs | 40 +++--- blastmud_game/src/services.rs | 24 ++++ blastmud_game/src/static_content/npc.rs | 7 +- .../src/static_content/npc/melbs_dog.rs | 121 +++++++++--------- 6 files changed, 152 insertions(+), 82 deletions(-) create mode 100644 blastmud_game/src/services.rs diff --git a/blastmud_game/src/main.rs b/blastmud_game/src/main.rs index 92d4c1ef..a3145946 100644 --- a/blastmud_game/src/main.rs +++ b/blastmud_game/src/main.rs @@ -15,6 +15,7 @@ mod regular_tasks; mod models; mod static_content; mod language; +mod services; pub type DResult = Result>; diff --git a/blastmud_game/src/message_handler/user_commands/movement.rs b/blastmud_game/src/message_handler/user_commands/movement.rs index 5d143741..22d1fd30 100644 --- a/blastmud_game/src/message_handler/user_commands/movement.rs +++ b/blastmud_game/src/message_handler/user_commands/movement.rs @@ -5,15 +5,44 @@ use super::{ }; use async_trait::async_trait; use crate::{ + DResult, regular_tasks::queued_command::{ QueueCommandHandler, QueueCommand, queue_command }, - static_content::room::{self, Direction, ExitType} + static_content::room::{self, Direction, ExitType}, + db::DBTrans, + models::item::Item, + services::broadcast_to_room, }; use std::time; +pub async fn announce_move(trans: &DBTrans, character: &Item, leaving: &Item, arriving: &Item) -> DResult<()> { + let msg_leaving_exp = format!("{} departs towards {}\n", &character.display, &leaving.display); + let msg_leaving_nonexp = format!("{} departs towards {}\n", + character.display_less_explicit + .as_ref() + .unwrap_or(&character.display), + arriving.display_less_explicit + .as_ref() + .unwrap_or(&arriving.display)); + broadcast_to_room(trans, &format!("{}/{}", &leaving.item_type, &leaving.item_code), + None, &msg_leaving_exp, Some(&msg_leaving_nonexp)).await?; + + let msg_arriving_exp = format!("{} arrives from {}\n", &character.display, &leaving.display); + let msg_arriving_nonexp = format!("{} arrives from {}\n", + character.display_less_explicit + .as_ref() + .unwrap_or(&character.display), + leaving.display_less_explicit + .as_ref() + .unwrap_or(&leaving.display)); + broadcast_to_room(trans, &format!("{}/{}", &arriving.item_type, &arriving.item_code), + None, &msg_arriving_exp, Some(&msg_arriving_nonexp)).await?; + Ok(()) +} + pub struct QueueHandler; #[async_trait] impl QueueCommandHandler for QueueHandler { @@ -40,7 +69,6 @@ impl QueueCommandHandler for QueueHandler { let exit = room.exits.iter().find(|ex| ex.direction == *direction) .ok_or_else(|| UserError("There is nothing in that direction".to_owned()))?; - // Ideally we would queue if we were already moving rather than insta-move. match exit.exit_type { ExitType::Free => {} ExitType::Blocked(blocker) => { @@ -55,7 +83,16 @@ impl QueueCommandHandler for QueueHandler { let mut new_player_item = (*player_item).clone(); new_player_item.location = format!("{}/{}", "room", new_room.code); ctx.trans.save_item_model(&new_player_item).await?; + + look::VERB.handle(ctx, "look", "").await?; + + if let Some(old_room_item) = ctx.trans.find_item_by_type_code("room", room.code).await? { + if let Some(new_room_item) = ctx.trans.find_item_by_type_code("room", new_room.code).await? { + announce_move(&ctx.trans, &new_player_item, &old_room_item, &new_room_item).await?; + } + } + Ok(()) } } diff --git a/blastmud_game/src/message_handler/user_commands/say.rs b/blastmud_game/src/message_handler/user_commands/say.rs index cc0b7ad5..c61e488b 100644 --- a/blastmud_game/src/message_handler/user_commands/say.rs +++ b/blastmud_game/src/message_handler/user_commands/say.rs @@ -1,8 +1,11 @@ use super::{VerbContext, UserVerb, UserVerbRef, UResult, UserError, user_error, get_player_item_or_fail, is_likely_explicit}; -use crate::models::item::{Item, ItemFlag}; -use crate::db::DBTrans; +use crate::{ + models::item::{Item, ItemFlag}, + services::broadcast_to_room, + db::DBTrans +}; use async_trait::async_trait; use ansi::{ignore_special_characters, ansi}; @@ -21,21 +24,24 @@ pub async fn say_to_room<'l>( user_error("Your wristpad vibrates and flashes up an error - apparently it has \ been programmed to block your voice from working here.".to_owned())? } - for item in trans.find_items_by_location(location).await? { - if item.item_type != "player" { - continue; - } - if let Some((session, session_dat)) = trans.find_session_for_player(&item.item_code).await? { - if session_dat.less_explicit_mode && is_explicit && from_item.item_code != item.item_code { - continue; - } - trans.queue_for_session(&session, Some(&format!( - ansi!("{} says: \"{}\"\n"), - from_item.display_for_session(&session_dat), - say_what - ))).await?; - } - } + let msg_exp = format!( + ansi!("{} says: \"{}\"\n"), + from_item.display, + say_what + ); + let msg_lessexp = format!( + ansi!("{} says: \"{}\"\n"), + from_item.display_less_explicit.as_ref().unwrap_or(&from_item.display), + say_what + ); + + broadcast_to_room( + trans, + location, + Some(from_item), + &msg_exp, + if is_explicit { None } else { Some(&msg_lessexp) } + ).await?; Ok(()) } diff --git a/blastmud_game/src/services.rs b/blastmud_game/src/services.rs new file mode 100644 index 00000000..3663da65 --- /dev/null +++ b/blastmud_game/src/services.rs @@ -0,0 +1,24 @@ +use crate::{ + models::item::Item, + db::DBTrans, + DResult +}; +pub async fn broadcast_to_room(trans: &DBTrans, location: &str, from_item: Option<&Item>, + message_explicit_ok: &str, message_nonexplicit: Option<&str>) -> DResult<()> { + for item in trans.find_items_by_location(location).await? { + if item.item_type != "player" { + continue; + } + if let Some((session, session_dat)) = trans.find_session_for_player(&item.item_code).await? { + if session_dat.less_explicit_mode && Some(&item.item_code) != from_item.map(|i| &i.item_code) { + if let Some(msg) = message_nonexplicit { + trans.queue_for_session(&session, Some(msg)).await?; + } + return Ok(()); + } + trans.queue_for_session(&session, Some(message_explicit_ok)).await?; + } + } + Ok(()) +} + diff --git a/blastmud_game/src/static_content/npc.rs b/blastmud_game/src/static_content/npc.rs index b01bc81e..f39fbe93 100644 --- a/blastmud_game/src/static_content/npc.rs +++ b/blastmud_game/src/static_content/npc.rs @@ -1,6 +1,6 @@ use super::{StaticItem, StaticTask}; use crate::models::{ - item::Item, + item::{Item, Pronouns}, task::{Task, TaskMeta, TaskRecurrence, TaskDetails} }; use once_cell::sync::OnceCell; @@ -48,7 +48,7 @@ pub struct NPCSayInfo { pub struct NPC { pub code: &'static str, pub name: &'static str, - pub proper_noun: bool, + pub pronouns: Pronouns, pub description: &'static str, pub spawn_location: &'static str, pub message_handler: Option<&'static (dyn NPCMessageHandler + Sync + Send)>, @@ -60,7 +60,7 @@ impl Default for NPC { Self { code: "DEFAULT", name: "default", - proper_noun: true, + pronouns: Pronouns::default_animate(), description: "default", spawn_location: "default", message_handler: None, @@ -120,6 +120,7 @@ pub fn npc_static_items() -> Box> { details: Some(c.description.to_owned()), location: c.spawn_location.to_owned(), is_static: true, + pronouns: c.pronouns.clone(), ..Item::default() }) })) diff --git a/blastmud_game/src/static_content/npc/melbs_dog.rs b/blastmud_game/src/static_content/npc/melbs_dog.rs index 97cac6c8..1698d1b0 100644 --- a/blastmud_game/src/static_content/npc/melbs_dog.rs +++ b/blastmud_game/src/static_content/npc/melbs_dog.rs @@ -1,11 +1,12 @@ use super::NPC; +use crate::models::item::Pronouns; pub fn npc_list() -> Vec { vec!( NPC { code: "melbs_dog_1", name: "feral black dog", - proper_noun: false, + pronouns: Pronouns { is_proper: false, ..Pronouns::default_inanimate() }, description: "A malnourished looking dog. Its skeleton is visible through its thin and patchy fur. It smells terrible, and certainly doesn't look tame.", spawn_location: "room/melbs_elizabethst_collinsst", ..Default::default() @@ -13,7 +14,7 @@ pub fn npc_list() -> Vec { NPC { code: "melbs_dog_2", name: "howling black dog", - proper_noun: false, + pronouns: Pronouns { is_proper: false, ..Pronouns::default_inanimate() }, description: "A malnourished looking dog. Its skeleton is visible through its thin and patchy fur. It smells terrible, and certainly doesn't look tame.", spawn_location: "room/melbs_collinsst_100", ..Default::default() @@ -21,7 +22,7 @@ pub fn npc_list() -> Vec { NPC { code: "melbs_dog_3", name: "ferocious white dog", - proper_noun: false, + pronouns: Pronouns { is_proper: false, ..Pronouns::default_inanimate() }, description: "A malnourished looking dog. Its skeleton is visible through its thin and patchy fur. It smells terrible, and certainly doesn't look tame.", spawn_location: "room/melbs_elizabethst_lonsdalest", ..Default::default() @@ -29,7 +30,7 @@ pub fn npc_list() -> Vec { NPC { code: "melbs_dog_4", name: "mangy grey dog", - proper_noun: false, + pronouns: Pronouns { is_proper: false, ..Pronouns::default_inanimate() }, description: "A malnourished looking dog. Its skeleton is visible through its thin and patchy fur. It smells terrible, and certainly doesn't look tame.", spawn_location: "room/melbs_collinsst_160", ..Default::default() @@ -37,7 +38,7 @@ pub fn npc_list() -> Vec { NPC { code: "melbs_dog_5", name: "howling grey dog", - proper_noun: false, + pronouns: Pronouns { is_proper: false, ..Pronouns::default_inanimate() }, description: "A malnourished looking dog. Its skeleton is visible through its thin and patchy fur. It smells terrible, and certainly doesn't look tame.", spawn_location: "room/melbs_lonsdalest_100", ..Default::default() @@ -45,7 +46,7 @@ pub fn npc_list() -> Vec { NPC { code: "melbs_dog_6", name: "reeking black dog", - proper_noun: false, + pronouns: Pronouns { is_proper: false, ..Pronouns::default_inanimate() }, description: "A malnourished looking dog. Its skeleton is visible through its thin and patchy fur. It smells terrible, and certainly doesn't look tame.", spawn_location: "room/melbs_lonsdalest_120", ..Default::default() @@ -53,7 +54,7 @@ pub fn npc_list() -> Vec { NPC { code: "melbs_dog_7", name: "growling grey dog", - proper_noun: false, + pronouns: Pronouns { is_proper: false, ..Pronouns::default_inanimate() }, description: "A malnourished looking dog. Its skeleton is visible through its thin and patchy fur. It smells terrible, and certainly doesn't look tame.", spawn_location: "room/melbs_williamsst_20", ..Default::default() @@ -61,7 +62,7 @@ pub fn npc_list() -> Vec { NPC { code: "melbs_dog_8", name: "mangy black dog", - proper_noun: false, + pronouns: Pronouns { is_proper: false, ..Pronouns::default_inanimate() }, description: "A malnourished looking dog. Its skeleton is visible through its thin and patchy fur. It smells terrible, and certainly doesn't look tame.", spawn_location: "room/melbs_bourkest_120", ..Default::default() @@ -69,7 +70,7 @@ pub fn npc_list() -> Vec { NPC { code: "melbs_dog_9", name: "howling black dog", - proper_noun: false, + pronouns: Pronouns { is_proper: false, ..Pronouns::default_inanimate() }, description: "A malnourished looking dog. Its skeleton is visible through its thin and patchy fur. It smells terrible, and certainly doesn't look tame.", spawn_location: "room/melbs_collinsst_100", ..Default::default() @@ -77,7 +78,7 @@ pub fn npc_list() -> Vec { NPC { code: "melbs_dog_10", name: "howling brown dog", - proper_noun: false, + pronouns: Pronouns { is_proper: false, ..Pronouns::default_inanimate() }, description: "A malnourished looking dog. Its skeleton is visible through its thin and patchy fur. It smells terrible, and certainly doesn't look tame.", spawn_location: "room/melbs_flindersst_130", ..Default::default() @@ -85,7 +86,7 @@ pub fn npc_list() -> Vec { NPC { code: "melbs_dog_11", name: "ferocious black dog", - proper_noun: false, + pronouns: Pronouns { is_proper: false, ..Pronouns::default_inanimate() }, description: "A malnourished looking dog. Its skeleton is visible through its thin and patchy fur. It smells terrible, and certainly doesn't look tame.", spawn_location: "room/melbs_flindersst_100", ..Default::default() @@ -93,7 +94,7 @@ pub fn npc_list() -> Vec { NPC { code: "melbs_dog_12", name: "mangy grey dog", - proper_noun: false, + pronouns: Pronouns { is_proper: false, ..Pronouns::default_inanimate() }, description: "A malnourished looking dog. Its skeleton is visible through its thin and patchy fur. It smells terrible, and certainly doesn't look tame.", spawn_location: "room/melbs_elizabethst_90", ..Default::default() @@ -101,7 +102,7 @@ pub fn npc_list() -> Vec { NPC { code: "melbs_dog_13", name: "reeking light brown dog", - proper_noun: false, + pronouns: Pronouns { is_proper: false, ..Pronouns::default_inanimate() }, description: "A malnourished looking dog. Its skeleton is visible through its thin and patchy fur. It smells terrible, and certainly doesn't look tame.", spawn_location: "room/melbs_lonsdalest_140", ..Default::default() @@ -109,7 +110,7 @@ pub fn npc_list() -> Vec { NPC { code: "melbs_dog_14", name: "smelly black dog", - proper_noun: false, + pronouns: Pronouns { is_proper: false, ..Pronouns::default_inanimate() }, description: "A malnourished looking dog. Its skeleton is visible through its thin and patchy fur. It smells terrible, and certainly doesn't look tame.", spawn_location: "room/melbs_queenst_20", ..Default::default() @@ -117,7 +118,7 @@ pub fn npc_list() -> Vec { NPC { code: "melbs_dog_15", name: "growling light brown dog", - proper_noun: false, + pronouns: Pronouns { is_proper: false, ..Pronouns::default_inanimate() }, description: "A malnourished looking dog. Its skeleton is visible through its thin and patchy fur. It smells terrible, and certainly doesn't look tame.", spawn_location: "room/melbs_elizabethst_10", ..Default::default() @@ -125,7 +126,7 @@ pub fn npc_list() -> Vec { NPC { code: "melbs_dog_16", name: "howling brown dog", - proper_noun: false, + pronouns: Pronouns { is_proper: false, ..Pronouns::default_inanimate() }, description: "A malnourished looking dog. Its skeleton is visible through its thin and patchy fur. It smells terrible, and certainly doesn't look tame.", spawn_location: "room/melbs_swanstonst_flindersst", ..Default::default() @@ -133,7 +134,7 @@ pub fn npc_list() -> Vec { NPC { code: "melbs_dog_17", name: "feral brown dog", - proper_noun: false, + pronouns: Pronouns { is_proper: false, ..Pronouns::default_inanimate() }, description: "A malnourished looking dog. Its skeleton is visible through its thin and patchy fur. It smells terrible, and certainly doesn't look tame.", spawn_location: "room/melbs_kingst_latrobest", ..Default::default() @@ -141,7 +142,7 @@ pub fn npc_list() -> Vec { NPC { code: "melbs_dog_18", name: "smelly grey dog", - proper_noun: false, + pronouns: Pronouns { is_proper: false, ..Pronouns::default_inanimate() }, description: "A malnourished looking dog. Its skeleton is visible through its thin and patchy fur. It smells terrible, and certainly doesn't look tame.", spawn_location: "room/melbs_kingst_40", ..Default::default() @@ -149,7 +150,7 @@ pub fn npc_list() -> Vec { NPC { code: "melbs_dog_19", name: "feral black dog", - proper_noun: false, + pronouns: Pronouns { is_proper: false, ..Pronouns::default_inanimate() }, description: "A malnourished looking dog. Its skeleton is visible through its thin and patchy fur. It smells terrible, and certainly doesn't look tame.", spawn_location: "room/melbs_elizabethst_60", ..Default::default() @@ -157,7 +158,7 @@ pub fn npc_list() -> Vec { NPC { code: "melbs_dog_20", name: "smelly white dog", - proper_noun: false, + pronouns: Pronouns { is_proper: false, ..Pronouns::default_inanimate() }, description: "A malnourished looking dog. Its skeleton is visible through its thin and patchy fur. It smells terrible, and certainly doesn't look tame.", spawn_location: "room/melbs_swanstonst_120", ..Default::default() @@ -165,7 +166,7 @@ pub fn npc_list() -> Vec { NPC { code: "melbs_dog_21", name: "growling white dog", - proper_noun: false, + pronouns: Pronouns { is_proper: false, ..Pronouns::default_inanimate() }, description: "A malnourished looking dog. Its skeleton is visible through its thin and patchy fur. It smells terrible, and certainly doesn't look tame.", spawn_location: "room/melbs_elizabethst_90", ..Default::default() @@ -173,7 +174,7 @@ pub fn npc_list() -> Vec { NPC { code: "melbs_dog_22", name: "feral light brown dog", - proper_noun: false, + pronouns: Pronouns { is_proper: false, ..Pronouns::default_inanimate() }, description: "A malnourished looking dog. Its skeleton is visible through its thin and patchy fur. It smells terrible, and certainly doesn't look tame.", spawn_location: "room/melbs_lonsdalest_150", ..Default::default() @@ -181,7 +182,7 @@ pub fn npc_list() -> Vec { NPC { code: "melbs_dog_23", name: "mangy grey dog", - proper_noun: false, + pronouns: Pronouns { is_proper: false, ..Pronouns::default_inanimate() }, description: "A malnourished looking dog. Its skeleton is visible through its thin and patchy fur. It smells terrible, and certainly doesn't look tame.", spawn_location: "room/melbs_lonsdalest_150", ..Default::default() @@ -189,7 +190,7 @@ pub fn npc_list() -> Vec { NPC { code: "melbs_dog_24", name: "reeking grey dog", - proper_noun: false, + pronouns: Pronouns { is_proper: false, ..Pronouns::default_inanimate() }, description: "A malnourished looking dog. Its skeleton is visible through its thin and patchy fur. It smells terrible, and certainly doesn't look tame.", spawn_location: "room/melbs_elizabethst_100", ..Default::default() @@ -197,7 +198,7 @@ pub fn npc_list() -> Vec { NPC { code: "melbs_dog_25", name: "smelly grey dog", - proper_noun: false, + pronouns: Pronouns { is_proper: false, ..Pronouns::default_inanimate() }, description: "A malnourished looking dog. Its skeleton is visible through its thin and patchy fur. It smells terrible, and certainly doesn't look tame.", spawn_location: "room/melbs_bourkest_180", ..Default::default() @@ -205,7 +206,7 @@ pub fn npc_list() -> Vec { NPC { code: "melbs_dog_26", name: "growling light brown dog", - proper_noun: false, + pronouns: Pronouns { is_proper: false, ..Pronouns::default_inanimate() }, description: "A malnourished looking dog. Its skeleton is visible through its thin and patchy fur. It smells terrible, and certainly doesn't look tame.", spawn_location: "room/melbs_queenst_100", ..Default::default() @@ -213,7 +214,7 @@ pub fn npc_list() -> Vec { NPC { code: "melbs_dog_27", name: "feral light brown dog", - proper_noun: false, + pronouns: Pronouns { is_proper: false, ..Pronouns::default_inanimate() }, description: "A malnourished looking dog. Its skeleton is visible through its thin and patchy fur. It smells terrible, and certainly doesn't look tame.", spawn_location: "room/melbs_queenst_10", ..Default::default() @@ -221,7 +222,7 @@ pub fn npc_list() -> Vec { NPC { code: "melbs_dog_28", name: "feral grey dog", - proper_noun: false, + pronouns: Pronouns { is_proper: false, ..Pronouns::default_inanimate() }, description: "A malnourished looking dog. Its skeleton is visible through its thin and patchy fur. It smells terrible, and certainly doesn't look tame.", spawn_location: "room/melbs_lonsdalest_160", ..Default::default() @@ -229,7 +230,7 @@ pub fn npc_list() -> Vec { NPC { code: "melbs_dog_29", name: "reeking brown dog", - proper_noun: false, + pronouns: Pronouns { is_proper: false, ..Pronouns::default_inanimate() }, description: "A malnourished looking dog. Its skeleton is visible through its thin and patchy fur. It smells terrible, and certainly doesn't look tame.", spawn_location: "room/melbs_bourkest_110", ..Default::default() @@ -237,7 +238,7 @@ pub fn npc_list() -> Vec { NPC { code: "melbs_dog_30", name: "howling grey dog", - proper_noun: false, + pronouns: Pronouns { is_proper: false, ..Pronouns::default_inanimate() }, description: "A malnourished looking dog. Its skeleton is visible through its thin and patchy fur. It smells terrible, and certainly doesn't look tame.", spawn_location: "room/melbs_queenst_80", ..Default::default() @@ -245,7 +246,7 @@ pub fn npc_list() -> Vec { NPC { code: "melbs_dog_31", name: "howling brown dog", - proper_noun: false, + pronouns: Pronouns { is_proper: false, ..Pronouns::default_inanimate() }, description: "A malnourished looking dog. Its skeleton is visible through its thin and patchy fur. It smells terrible, and certainly doesn't look tame.", spawn_location: "room/melbs_bourkest_160", ..Default::default() @@ -253,7 +254,7 @@ pub fn npc_list() -> Vec { NPC { code: "melbs_dog_32", name: "feral black dog", - proper_noun: false, + pronouns: Pronouns { is_proper: false, ..Pronouns::default_inanimate() }, description: "A malnourished looking dog. Its skeleton is visible through its thin and patchy fur. It smells terrible, and certainly doesn't look tame.", spawn_location: "room/melbs_swanstonst_collinsst", ..Default::default() @@ -261,7 +262,7 @@ pub fn npc_list() -> Vec { NPC { code: "melbs_dog_33", name: "reeking brown dog", - proper_noun: false, + pronouns: Pronouns { is_proper: false, ..Pronouns::default_inanimate() }, description: "A malnourished looking dog. Its skeleton is visible through its thin and patchy fur. It smells terrible, and certainly doesn't look tame.", spawn_location: "room/melbs_kingst_flinderst", ..Default::default() @@ -269,7 +270,7 @@ pub fn npc_list() -> Vec { NPC { code: "melbs_dog_34", name: "reeking white dog", - proper_noun: false, + pronouns: Pronouns { is_proper: false, ..Pronouns::default_inanimate() }, description: "A malnourished looking dog. Its skeleton is visible through its thin and patchy fur. It smells terrible, and certainly doesn't look tame.", spawn_location: "room/melbs_elizabethst_100", ..Default::default() @@ -277,7 +278,7 @@ pub fn npc_list() -> Vec { NPC { code: "melbs_dog_35", name: "growling light brown dog", - proper_noun: false, + pronouns: Pronouns { is_proper: false, ..Pronouns::default_inanimate() }, description: "A malnourished looking dog. Its skeleton is visible through its thin and patchy fur. It smells terrible, and certainly doesn't look tame.", spawn_location: "room/melbs_queenst_110", ..Default::default() @@ -285,7 +286,7 @@ pub fn npc_list() -> Vec { NPC { code: "melbs_dog_36", name: "reeking black dog", - proper_noun: false, + pronouns: Pronouns { is_proper: false, ..Pronouns::default_inanimate() }, description: "A malnourished looking dog. Its skeleton is visible through its thin and patchy fur. It smells terrible, and certainly doesn't look tame.", spawn_location: "room/melbs_williamsst_90", ..Default::default() @@ -293,7 +294,7 @@ pub fn npc_list() -> Vec { NPC { code: "melbs_dog_37", name: "growling black dog", - proper_noun: false, + pronouns: Pronouns { is_proper: false, ..Pronouns::default_inanimate() }, description: "A malnourished looking dog. Its skeleton is visible through its thin and patchy fur. It smells terrible, and certainly doesn't look tame.", spawn_location: "room/melbs_latrobesst_200", ..Default::default() @@ -301,7 +302,7 @@ pub fn npc_list() -> Vec { NPC { code: "melbs_dog_38", name: "feral black dog", - proper_noun: false, + pronouns: Pronouns { is_proper: false, ..Pronouns::default_inanimate() }, description: "A malnourished looking dog. Its skeleton is visible through its thin and patchy fur. It smells terrible, and certainly doesn't look tame.", spawn_location: "room/melbs_queenst_90", ..Default::default() @@ -309,7 +310,7 @@ pub fn npc_list() -> Vec { NPC { code: "melbs_dog_39", name: "mangy black dog", - proper_noun: false, + pronouns: Pronouns { is_proper: false, ..Pronouns::default_inanimate() }, description: "A malnourished looking dog. Its skeleton is visible through its thin and patchy fur. It smells terrible, and certainly doesn't look tame.", spawn_location: "room/melbs_queenst_40", ..Default::default() @@ -317,7 +318,7 @@ pub fn npc_list() -> Vec { NPC { code: "melbs_dog_40", name: "growling white dog", - proper_noun: false, + pronouns: Pronouns { is_proper: false, ..Pronouns::default_inanimate() }, description: "A malnourished looking dog. Its skeleton is visible through its thin and patchy fur. It smells terrible, and certainly doesn't look tame.", spawn_location: "room/melbs_williamsst_40", ..Default::default() @@ -325,7 +326,7 @@ pub fn npc_list() -> Vec { NPC { code: "melbs_dog_41", name: "reeking grey dog", - proper_noun: false, + pronouns: Pronouns { is_proper: false, ..Pronouns::default_inanimate() }, description: "A malnourished looking dog. Its skeleton is visible through its thin and patchy fur. It smells terrible, and certainly doesn't look tame.", spawn_location: "room/melbs_queenst_latrobest", ..Default::default() @@ -333,7 +334,7 @@ pub fn npc_list() -> Vec { NPC { code: "melbs_dog_42", name: "mangy grey dog", - proper_noun: false, + pronouns: Pronouns { is_proper: false, ..Pronouns::default_inanimate() }, description: "A malnourished looking dog. Its skeleton is visible through its thin and patchy fur. It smells terrible, and certainly doesn't look tame.", spawn_location: "room/melbs_flindersst_210", ..Default::default() @@ -341,7 +342,7 @@ pub fn npc_list() -> Vec { NPC { code: "melbs_dog_43", name: "ferocious brown dog", - proper_noun: false, + pronouns: Pronouns { is_proper: false, ..Pronouns::default_inanimate() }, description: "A malnourished looking dog. Its skeleton is visible through its thin and patchy fur. It smells terrible, and certainly doesn't look tame.", spawn_location: "room/melbs_kingst_latrobest", ..Default::default() @@ -349,7 +350,7 @@ pub fn npc_list() -> Vec { NPC { code: "melbs_dog_44", name: "ferocious light brown dog", - proper_noun: false, + pronouns: Pronouns { is_proper: false, ..Pronouns::default_inanimate() }, description: "A malnourished looking dog. Its skeleton is visible through its thin and patchy fur. It smells terrible, and certainly doesn't look tame.", spawn_location: "room/melbs_collinsst_120", ..Default::default() @@ -357,7 +358,7 @@ pub fn npc_list() -> Vec { NPC { code: "melbs_dog_45", name: "ferocious light brown dog", - proper_noun: false, + pronouns: Pronouns { is_proper: false, ..Pronouns::default_inanimate() }, description: "A malnourished looking dog. Its skeleton is visible through its thin and patchy fur. It smells terrible, and certainly doesn't look tame.", spawn_location: "room/melbs_swanstonst_lonsdalest", ..Default::default() @@ -365,7 +366,7 @@ pub fn npc_list() -> Vec { NPC { code: "melbs_dog_46", name: "smelly grey dog", - proper_noun: false, + pronouns: Pronouns { is_proper: false, ..Pronouns::default_inanimate() }, description: "A malnourished looking dog. Its skeleton is visible through its thin and patchy fur. It smells terrible, and certainly doesn't look tame.", spawn_location: "room/melbs_williamsst_30", ..Default::default() @@ -373,7 +374,7 @@ pub fn npc_list() -> Vec { NPC { code: "melbs_dog_47", name: "growling grey dog", - proper_noun: false, + pronouns: Pronouns { is_proper: false, ..Pronouns::default_inanimate() }, description: "A malnourished looking dog. Its skeleton is visible through its thin and patchy fur. It smells terrible, and certainly doesn't look tame.", spawn_location: "room/melbs_lonsdalest_100", ..Default::default() @@ -381,7 +382,7 @@ pub fn npc_list() -> Vec { NPC { code: "melbs_dog_48", name: "ferocious brown dog", - proper_noun: false, + pronouns: Pronouns { is_proper: false, ..Pronouns::default_inanimate() }, description: "A malnourished looking dog. Its skeleton is visible through its thin and patchy fur. It smells terrible, and certainly doesn't look tame.", spawn_location: "room/melbs_latrobest_210", ..Default::default() @@ -389,7 +390,7 @@ pub fn npc_list() -> Vec { NPC { code: "melbs_dog_49", name: "reeking brown dog", - proper_noun: false, + pronouns: Pronouns { is_proper: false, ..Pronouns::default_inanimate() }, description: "A malnourished looking dog. Its skeleton is visible through its thin and patchy fur. It smells terrible, and certainly doesn't look tame.", spawn_location: "room/melbs_latrobest_140", ..Default::default() @@ -397,7 +398,7 @@ pub fn npc_list() -> Vec { NPC { code: "melbs_dog_50", name: "howling grey dog", - proper_noun: false, + pronouns: Pronouns { is_proper: false, ..Pronouns::default_inanimate() }, description: "A malnourished looking dog. Its skeleton is visible through its thin and patchy fur. It smells terrible, and certainly doesn't look tame.", spawn_location: "room/melbs_swanstonst_110", ..Default::default() @@ -405,7 +406,7 @@ pub fn npc_list() -> Vec { NPC { code: "melbs_dog_51", name: "howling black dog", - proper_noun: false, + pronouns: Pronouns { is_proper: false, ..Pronouns::default_inanimate() }, description: "A malnourished looking dog. Its skeleton is visible through its thin and patchy fur. It smells terrible, and certainly doesn't look tame.", spawn_location: "room/melbs_elizabethst_flindersst", ..Default::default() @@ -413,7 +414,7 @@ pub fn npc_list() -> Vec { NPC { code: "melbs_dog_52", name: "growling light brown dog", - proper_noun: false, + pronouns: Pronouns { is_proper: false, ..Pronouns::default_inanimate() }, description: "A malnourished looking dog. Its skeleton is visible through its thin and patchy fur. It smells terrible, and certainly doesn't look tame.", spawn_location: "room/melbs_flindersst_120", ..Default::default() @@ -421,7 +422,7 @@ pub fn npc_list() -> Vec { NPC { code: "melbs_dog_53", name: "ferocious black dog", - proper_noun: false, + pronouns: Pronouns { is_proper: false, ..Pronouns::default_inanimate() }, description: "A malnourished looking dog. Its skeleton is visible through its thin and patchy fur. It smells terrible, and certainly doesn't look tame.", spawn_location: "room/melbs_queenst_110", ..Default::default() @@ -429,7 +430,7 @@ pub fn npc_list() -> Vec { NPC { code: "melbs_dog_54", name: "growling grey dog", - proper_noun: false, + pronouns: Pronouns { is_proper: false, ..Pronouns::default_inanimate() }, description: "A malnourished looking dog. Its skeleton is visible through its thin and patchy fur. It smells terrible, and certainly doesn't look tame.", spawn_location: "room/melbs_flindersst_210", ..Default::default() @@ -437,7 +438,7 @@ pub fn npc_list() -> Vec { NPC { code: "melbs_dog_55", name: "reeking brown dog", - proper_noun: false, + pronouns: Pronouns { is_proper: false, ..Pronouns::default_inanimate() }, description: "A malnourished looking dog. Its skeleton is visible through its thin and patchy fur. It smells terrible, and certainly doesn't look tame.", spawn_location: "room/melbs_williamsst_60", ..Default::default() @@ -445,7 +446,7 @@ pub fn npc_list() -> Vec { NPC { code: "melbs_dog_56", name: "ferocious white dog", - proper_noun: false, + pronouns: Pronouns { is_proper: false, ..Pronouns::default_inanimate() }, description: "A malnourished looking dog. Its skeleton is visible through its thin and patchy fur. It smells terrible, and certainly doesn't look tame.", spawn_location: "room/melbs_queenst_lonsdalest", ..Default::default() @@ -453,7 +454,7 @@ pub fn npc_list() -> Vec { NPC { code: "melbs_dog_57", name: "smelly brown dog", - proper_noun: false, + pronouns: Pronouns { is_proper: false, ..Pronouns::default_inanimate() }, description: "A malnourished looking dog. Its skeleton is visible through its thin and patchy fur. It smells terrible, and certainly doesn't look tame.", spawn_location: "room/melbs_swanstonst_lonsdalest", ..Default::default() @@ -461,7 +462,7 @@ pub fn npc_list() -> Vec { NPC { code: "melbs_dog_58", name: "mangy white dog", - proper_noun: false, + pronouns: Pronouns { is_proper: false, ..Pronouns::default_inanimate() }, description: "A malnourished looking dog. Its skeleton is visible through its thin and patchy fur. It smells terrible, and certainly doesn't look tame.", spawn_location: "room/melbs_williamsst_bourkest", ..Default::default() @@ -469,7 +470,7 @@ pub fn npc_list() -> Vec { NPC { code: "melbs_dog_59", name: "mangy brown dog", - proper_noun: false, + pronouns: Pronouns { is_proper: false, ..Pronouns::default_inanimate() }, description: "A malnourished looking dog. Its skeleton is visible through its thin and patchy fur. It smells terrible, and certainly doesn't look tame.", spawn_location: "room/melbs_latrobest_170", ..Default::default() @@ -477,7 +478,7 @@ pub fn npc_list() -> Vec { NPC { code: "melbs_dog_60", name: "growling brown dog", - proper_noun: false, + pronouns: Pronouns { is_proper: false, ..Pronouns::default_inanimate() }, description: "A malnourished looking dog. Its skeleton is visible through its thin and patchy fur. It smells terrible, and certainly doesn't look tame.", spawn_location: "room/melbs_williamsst_110", ..Default::default()