diff --git a/src/chat.rs b/src/chat.rs index e0ddfe1..53d3f99 100644 --- a/src/chat.rs +++ b/src/chat.rs @@ -887,10 +887,13 @@ fn handle_reply_keys( } pub fn handle_chat_scripts( + mut commands: Commands, + asset_server: Res, mut er_chatscript: EventReader, mut q_actor: Query<(&mut actor::Actor, &mut actor::Suit), Without>, mut q_player: Query< ( + Entity, &mut actor::Actor, &mut actor::Suit, &mut actor::ExperiencesGForce, @@ -906,6 +909,7 @@ pub fn handle_chat_scripts( mut ew_effect: EventWriter, mut ew_achievement: EventWriter, mut ew_playerdies: EventWriter, + mut vars: ResMut, id2pos: Res, id2v: Res, ) { @@ -925,7 +929,7 @@ pub fn handle_chat_scripts( match name { "refilloxygen" => { if let Ok(mut amount) = param1.to_string().parse::() { - for (_, mut suit, _) in q_player.iter_mut() { + for (_, _, mut suit, _) in q_player.iter_mut() { ew_sfx.send(audio::PlaySfxEvent(audio::Sfx::Refill)); if param2.is_empty() { suit.oxygen = (suit.oxygen + amount).clamp(0.0, suit.oxygen_max); @@ -958,7 +962,7 @@ pub fn handle_chat_scripts( } "repairsuit" => { ew_achievement.send(game::AchievementEvent::RepairSuit); - for (_, mut suit, _) in q_player.iter_mut() { + for (_, _, mut suit, _) in q_player.iter_mut() { suit.integrity = 1.0; } } @@ -1007,7 +1011,7 @@ pub fn handle_chat_scripts( } } } - if let Ok((_, mut suit, mut gforce)) = q_player.get_single_mut() { + if let Ok((_, _, mut suit, mut gforce)) = q_player.get_single_mut() { suit.oxygen = suit.oxygen_max; gforce.ignore_gforce_seconds = 1.0; } @@ -1048,6 +1052,22 @@ pub fn handle_chat_scripts( ew_sfx.send(audio::PlaySfxEvent(audio::Sfx::Crash)); ew_playerdies.send(game::PlayerDiesEvent(actor::DamageType::Bullet)); } + "addcatears" => { + if let Ok((player_entity, _, _, _)) = q_player.get_single_mut() { + let mut entitycmd = commands.spawn(( + hud::AugmentedRealityOverlay { + owner: player_entity, + scale: 1.0, + always_visible: true, + }, + world::DespawnOnPlayerDeath, + SpatialBundle::default(), + )); + load_asset("suit_ar_nekomimi", &mut entitycmd, &*asset_server); + ew_sfx.send(audio::PlaySfxEvent(audio::Sfx::Crash)); + vars.set_in_scope("$", "catears", "1".to_string()); + } + } _ => { error!("Error, undefined chat script {name}"); } diff --git a/src/chats/serenity.yaml b/src/chats/serenity.yaml index 33566e3..45b62d6 100644 --- a/src/chats/serenity.yaml +++ b/src/chats/serenity.yaml @@ -913,6 +913,16 @@ sound: cat - Yes. - But I am NOT cute. I am serious and respectable. + - if: "~$$catears" + Are those cat ears real?: + - Yes! They are! + - Not just a virtual AR projection. + - That's really cool!: + - "Thanks :3!" + - Can you attach some cat ears to my space suit too?: + - script: addcatears + - With pleasure! + - Got it!: [] - Can I ask you some general questions?: - ... No. - Bye!: