From be5717e500c89d3fba67821a19cc4fe88539cccd Mon Sep 17 00:00:00 2001 From: bgkillas Date: Wed, 22 Jan 2025 19:46:06 -0500 Subject: [PATCH] fix egg duping enemys --- ewext/src/modules/entity_sync/diff_model.rs | 16 +++++++++++++++- quant.ew/init.lua | 1 + 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/ewext/src/modules/entity_sync/diff_model.rs b/ewext/src/modules/entity_sync/diff_model.rs index 956039b3..759d6737 100644 --- a/ewext/src/modules/entity_sync/diff_model.rs +++ b/ewext/src/modules/entity_sync/diff_model.rs @@ -23,6 +23,7 @@ use shared::{ }, GameEffectData, NoitaOutbound, PeerId, SpawnOnce, WorldPos, }; +use std::borrow::Cow; use std::mem; use std::num::NonZero; pub(crate) static DES_TAG: &str = "ew_des"; @@ -907,6 +908,7 @@ impl RemoteDiffModel { EntityUpdate::Init(entity_entry, gid) => { if let Some(ent) = self.waiting_for_lid.remove(&gid) { self.tracked.insert(current_lid, ent); + let _ = init_remote_entity(ent, Some(current_lid), Some(gid), false); } self.lid_to_gid.insert(current_lid, gid); self.entity_infos.insert(current_lid, *entity_entry); @@ -1510,7 +1512,7 @@ pub fn init_remote_entity( } for pb2 in entity.iter_all_components_of_type::(None)? { - pb2.set_destroy_body_if_entity_destroyed(true)?; //TODO why?? + pb2.set_destroy_body_if_entity_destroyed(true)?; } for expl in entity.iter_all_components_of_type::(None)? { @@ -1556,6 +1558,18 @@ pub fn init_remote_entity( ghost.set_die_if_no_home(false)?; } + if entity.has_tag("egg_item") { + if let Some(explosion) = + entity.try_get_first_component_including_disabled::(None)? + { + explosion.object_set_value::>( + "config_explosion", + "load_this_entity", + "".into(), + )? + } + } + entity .iter_all_components_of_type_including_disabled::(None)? .for_each(|var| { diff --git a/quant.ew/init.lua b/quant.ew/init.lua index 25f3e09f..b9e5d3cb 100755 --- a/quant.ew/init.lua +++ b/quant.ew/init.lua @@ -270,6 +270,7 @@ function OnProjectileFired( or n == "data/entities/projectiles/deck/black_hole_giga.xml" or n == "data/entities/projectiles/deck/white_hole.xml" or n == "data/entities/projectiles/deck/white_hole_giga.xml" + or string.sub(n, 31) == "data/entities/items/pickup/egg_" or EntityHasTag(projectile_id, "ew_projectile_position_sync") then local body = EntityGetFirstComponentIncludingDisabled(projectile_id, "PhysicsBody2Component")