diff --git a/blastmud_game/src/models/item.rs b/blastmud_game/src/models/item.rs index c7f1cfd..da91697 100644 --- a/blastmud_game/src/models/item.rs +++ b/blastmud_game/src/models/item.rs @@ -341,6 +341,7 @@ pub enum ItemFlag { DontListInLook, AllowShare, Invincible, + NoIdlePark, } #[derive(Serialize, Deserialize, Clone, Debug, Eq, PartialEq, Ord, PartialOrd)] diff --git a/blastmud_game/src/services/idlepark.rs b/blastmud_game/src/services/idlepark.rs index 23fe159..9b248d7 100644 --- a/blastmud_game/src/services/idlepark.rs +++ b/blastmud_game/src/services/idlepark.rs @@ -26,7 +26,9 @@ impl TaskHandler for IdleparkTaskHandler { { if let Some((loc_type, loc_code)) = player_item.location.split_once("/") { if let Some(loc) = ctx.trans.find_item_by_type_code(loc_type, loc_code).await? { - if !loc.flags.contains(&ItemFlag::PrivatePlace) { + if !loc.flags.contains(&ItemFlag::PrivatePlace) + && !loc.flags.contains(&ItemFlag::NoIdlePark) + { let mut player_item = (*player_item).clone(); broadcast_to_room(&ctx.trans, &player_item.location, None, &format!( diff --git a/blastmud_game/src/static_content/room/repro_xv.rs b/blastmud_game/src/static_content/room/repro_xv.rs index 1bf2559..8c27160 100644 --- a/blastmud_game/src/static_content/room/repro_xv.rs +++ b/blastmud_game/src/static_content/room/repro_xv.rs @@ -28,7 +28,7 @@ pub fn room_list() -> Vec { exit_type: ExitType::Blocked(Box::new(npc::statbot::ChoiceRoomBlocker)), ..Default::default() }), - item_flags: vec![ItemFlag::NoUrgesHere], + item_flags: vec![ItemFlag::NoUrgesHere, ItemFlag::NoIdlePark], should_caption: true, ..Default::default() }, @@ -68,6 +68,7 @@ pub fn room_list() -> Vec { ..Default::default() }), should_caption: true, + item_flags: vec![ItemFlag::NoIdlePark, ItemFlag::NoSay, ItemFlag::NoSeeContents], ..Default::default() }, Room { diff --git a/blastmud_game/src/static_content/room/special.yaml b/blastmud_game/src/static_content/room/special.yaml index 4412327..f7e75fd 100644 --- a/blastmud_game/src/static_content/room/special.yaml +++ b/blastmud_game/src/static_content/room/special.yaml @@ -18,6 +18,8 @@ z: -1 description: 'The inside of a small pen or cage, with thick steel bars, suitable for holding an animal - or a person - securely, with no chance of escape. It is dimly lit and smells like urine, and is very cramped and indignifying. It looks like the only way out would be with the help of whoever locked you in here. [OOC: consider emailing staff@blastmud.org to discuss your situation]' exits: [] + flags: + - !NoIdlePark - zone: special code: holding1 name: 'Holding Pen #1' @@ -28,6 +30,8 @@ z: -1 description: 'The inside of a small pen or cage, with thick steel bars, suitable for holding an animal - or a person - securely, with no chance of escape. It is dimly lit and smells like urine, and is very cramped and indignifying. It looks like the only way out would be with the help of whoever locked you in here. [OOC: consider emailing staff@blastmud.org to discuss your situation]' exits: [] + flags: + - !NoIdlePark - zone: special code: holding2 name: 'Holding Pen #2' @@ -38,6 +42,8 @@ z: -1 description: 'The inside of a small pen or cage, with thick steel bars, suitable for holding an animal - or a person - securely, with no chance of escape. It is dimly lit and smells like urine, and is very cramped and indignifying. It looks like the only way out would be with the help of whoever locked you in here. [OOC: consider emailing staff@blastmud.org to discuss your situation]' exits: [] + flags: + - !NoIdlePark - zone: special code: holding3 name: 'Holding Pen #3' @@ -48,6 +54,8 @@ z: -1 description: 'The inside of a small pen or cage, with thick steel bars, suitable for holding an animal - or a person - securely, with no chance of escape. It is dimly lit and smells like urine, and is very cramped and indignifying. It looks like the only way out would be with the help of whoever locked you in here. [OOC: consider emailing staff@blastmud.org to discuss your situation]' exits: [] + flags: + - !NoIdlePark - zone: special code: holding4 name: 'Holding Pen #4' @@ -58,6 +66,8 @@ z: -1 description: 'The inside of a small pen or cage, with thick steel bars, suitable for holding an animal - or a person - securely, with no chance of escape. It is dimly lit and smells like urine, and is very cramped and indignifying. It looks like the only way out would be with the help of whoever locked you in here. [OOC: consider emailing staff@blastmud.org to discuss your situation]' exits: [] + flags: + - !NoIdlePark - zone: special code: holding5 name: 'Holding Pen #5' @@ -68,6 +78,8 @@ z: -1 description: 'The inside of a small pen or cage, with thick steel bars, suitable for holding an animal - or a person - securely, with no chance of escape. It is dimly lit and smells like urine, and is very cramped and indignifying. It looks like the only way out would be with the help of whoever locked you in here. [OOC: consider emailing staff@blastmud.org to discuss your situation]' exits: [] + flags: + - !NoIdlePark - zone: special code: holding6 name: 'Holding Pen #6' @@ -78,6 +90,8 @@ z: -1 description: 'The inside of a small pen or cage, with thick steel bars, suitable for holding an animal - or a person - securely, with no chance of escape. It is dimly lit and smells like urine, and is very cramped and indignifying. It looks like the only way out would be with the help of whoever locked you in here. [OOC: consider emailing staff@blastmud.org to discuss your situation]' exits: [] + flags: + - !NoIdlePark - zone: special code: holding7 name: 'Holding Pen #7' @@ -88,6 +102,8 @@ z: -1 description: 'The inside of a small pen or cage, with thick steel bars, suitable for holding an animal - or a person - securely, with no chance of escape. It is dimly lit and smells like urine, and is very cramped and indignifying. It looks like the only way out would be with the help of whoever locked you in here. [OOC: consider emailing staff@blastmud.org to discuss your situation]' exits: [] + flags: + - !NoIdlePark - zone: special code: holding8 name: 'Holding Pen #8' @@ -98,6 +114,8 @@ z: -1 description: 'The inside of a small pen or cage, with thick steel bars, suitable for holding an animal - or a person - securely, with no chance of escape. It is dimly lit and smells like urine, and is very cramped and indignifying. It looks like the only way out would be with the help of whoever locked you in here. [OOC: consider emailing staff@blastmud.org to discuss your situation]' exits: [] + flags: + - !NoIdlePark - zone: special code: holding9 name: 'Holding Pen #9' @@ -108,6 +126,8 @@ z: -1 description: 'The inside of a small pen or cage, with thick steel bars, suitable for holding an animal - or a person - securely, with no chance of escape. It is dimly lit and smells like urine, and is very cramped and indignifying. It looks like the only way out would be with the help of whoever locked you in here. [OOC: consider emailing staff@blastmud.org to discuss your situation]' exits: [] + flags: + - !NoIdlePark - zone: special code: holdinga name: Holding Pen A @@ -118,6 +138,8 @@ z: -1 description: 'The inside of a small pen or cage, with thick steel bars, suitable for holding an animal - or a person - securely, with no chance of escape. It is dimly lit and smells like urine, and is very cramped and indignifying. It looks like the only way out would be with the help of whoever locked you in here. [OOC: consider emailing staff@blastmud.org to discuss your situation]' exits: [] + flags: + - !NoIdlePark - zone: special code: holdingb name: Holding Pen B @@ -128,3 +150,5 @@ z: -1 description: 'The inside of a small pen or cage, with thick steel bars, suitable for holding an animal - or a person - securely, with no chance of escape. It is dimly lit and smells like urine, and is very cramped and indignifying. It looks like the only way out would be with the help of whoever locked you in here. [OOC: consider emailing staff@blastmud.org to discuss your situation]' exits: [] + flags: + - !NoIdlePark diff --git a/schema/schema.sql b/schema/schema.sql index c9e9eaf..df0eb56 100644 --- a/schema/schema.sql +++ b/schema/schema.sql @@ -44,6 +44,7 @@ CREATE TABLE users ( ); CREATE INDEX user_by_listener ON users(current_listener); CREATE INDEX user_by_session ON users(current_session); +CREATE INDEX user_by_idlepark ON users(idle_park_time); CREATE UNLOGGED TABLE sendqueue ( item BIGSERIAL NOT NULL PRIMARY KEY,