diff --git a/src/entity/gateway/inmemory.rs b/src/entity/gateway/inmemory.rs index cc208b4..41cc851 100644 --- a/src/entity/gateway/inmemory.rs +++ b/src/entity/gateway/inmemory.rs @@ -85,7 +85,15 @@ impl InMemoryGateway { } } ItemDetail::Mag(mag) - } + }, + ItemDetail::Unit(mut unit) => { + if let Some(unit_modifiers) = self.unit_modifiers.lock().unwrap().get(&item.id) { + for unit_modifier in unit_modifiers.iter() { + unit.apply_modifier(unit_modifier); + } + } + ItemDetail::Unit(unit) + }, _ => { item.item } diff --git a/src/entity/item/weapon.rs b/src/entity/item/weapon.rs index 3f7bc88..e338e73 100644 --- a/src/entity/item/weapon.rs +++ b/src/entity/item/weapon.rs @@ -1535,9 +1535,7 @@ impl Weapon { }, WeaponModifier::AddKill{enemy: _} => { if let Some(kills) = self.kills { - println!("{:?} currently has {:?} kills", self.weapon, self.kills); self.kills = Some(kills + 1); - println!("now {:?} has {:?} kills", self.weapon, self.kills); } }, }; @@ -1558,8 +1556,6 @@ impl Weapon { if self.weapon.has_counter() { result[10..12].copy_from_slice(&self.kills.unwrap_or(0u16).to_be_bytes()); result[10] += 0x80; - // TODO: what to do with the 3rd attr? - // self.attrs[2] = None; } else { result[10..12].copy_from_slice(&self.attrs[2].map(|s| s.value()).unwrap_or([0,0])); } diff --git a/src/ship/items/manager.rs b/src/ship/items/manager.rs index e431b42..7af8cd2 100644 --- a/src/ship/items/manager.rs +++ b/src/ship/items/manager.rs @@ -1203,18 +1203,7 @@ impl ItemManager { entity_gateway.add_weapon_modifier(&weapon_entity, wmodifier).await?; } for units in equipped_items.unit.iter().flatten() { - let unit_id = inventory.get_item_by_entity_id(*units).ok_or(ItemManagerError::EntityIdNotInInventory(*units))?.item_id(); - let mut unit_handle = inventory.get_item_handle_by_id(unit_id).ok_or(ItemManagerError::NoSuchItemId(unit_id))?; - let individual_item_u = unit_handle.item_mut() - .ok_or(ItemManagerError::NoSuchItemId(unit_id))? - .individual_mut() - .ok_or(ItemManagerError::WrongItemType(unit_id))?; - let unit = individual_item_u - .unit_mut() - .ok_or(ItemManagerError::WrongItemType(unit_id))?; - let umodifier = UnitModifier::AddKill { enemy: monstertype }; - unit.apply_modifier(&umodifier); entity_gateway.add_unit_modifier(units, umodifier).await?; } entity_gateway.set_character_inventory(&character.id, &inventory.as_inventory_entity(&character.id)).await?;