1
0
Fork 0
mirror of https://codeberg.org/demostf/parser.git synced 2026-06-03 10:14:06 +02:00

fix outer map not using baselines

This commit is contained in:
Robin Appelman 2025-08-07 22:45:59 +02:00
commit 2c113f9a18
2 changed files with 12 additions and 12 deletions

View file

@ -12,7 +12,7 @@ use crate::demo::gameevent_gen::ObjectDestroyedEvent;
use crate::demo::gamevent::GameEvent; use crate::demo::gamevent::GameEvent;
use crate::demo::message::gameevent::GameEventMessage; use crate::demo::message::gameevent::GameEventMessage;
use crate::demo::message::packetentities::{EntityId, PacketEntity}; use crate::demo::message::packetentities::{EntityId, PacketEntity};
use crate::demo::message::Message; use crate::demo::message::{Message, UpdateType};
use crate::demo::packet::datatable::{ParseSendTable, ServerClass, ServerClassName}; use crate::demo::packet::datatable::{ParseSendTable, ServerClass, ServerClassName};
use crate::demo::packet::message::MessagePacketMeta; use crate::demo::packet::message::MessagePacketMeta;
use crate::demo::packet::stringtable::StringTableEntry; use crate::demo::packet::stringtable::StringTableEntry;
@ -158,13 +158,17 @@ impl GameStateAnalyser {
return; return;
}; };
for prop in &entity.props { if entity.update_type == UpdateType::Enter {
if prop.identifier == OUTER || prop.identifier == OUTER2 { if let Some(prop) = entity
let outer = Handle::try_from(&prop.value).unwrap_or_default(); .get_prop_by_identifier(&OUTER, parser_state)
.or_else(|| entity.get_prop_by_identifier(&OUTER2, parser_state))
{
if let Ok(outer) = Handle::try_from(&prop.value) {
self.outer_map.insert(outer, entity.entity_index); self.outer_map.insert(outer, entity.entity_index);
self.outer_map_rev.insert(entity.entity_index, outer); self.outer_map_rev.insert(entity.entity_index, outer);
} }
} }
}
match class_name.as_str() { match class_name.as_str() {
"CTFPlayer" => handle_player_entity(&mut self.state, entity, parser_state), "CTFPlayer" => handle_player_entity(&mut self.state, entity, parser_state),

View file

@ -25,12 +25,8 @@ pub fn handle_medigun_entity(
ty = MedigunType::Vaccinator; ty = MedigunType::Vaccinator;
} }
if let Some(handle) = entity.get_own_prop_value_by_identifier(OUTER) { if let Some(handle) = entity.get_own_prop_value_by_identifier::<Handle>(OUTER) {
if let Some(player) = state if let Some(player) = state.get_player_by_weapon_handle(handle) {
.players
.iter_mut()
.find(|player| player.weapons.contains(&handle))
{
if let PlayerClassData::Medic { medigun, .. } = &mut player.class_data { if let PlayerClassData::Medic { medigun, .. } = &mut player.class_data {
*medigun = ty; *medigun = ty;
} }