server unequips units now. formatting and cleanup unuseds. fix merge conflict
This commit is contained in:
parent
be29c83bb9
commit
555171d11d
@ -247,7 +247,7 @@ fn main() {
|
||||
NewItemEntity {
|
||||
item: ItemDetail::Unit(
|
||||
item::unit::Unit {
|
||||
unit: item::unit::UnitType::KnightPower,
|
||||
unit: item::unit::UnitType::HeavenlyPower,
|
||||
modifier: Some(item::unit::UnitModifier::PlusPlus),
|
||||
}
|
||||
),
|
||||
|
@ -408,13 +408,9 @@ impl CharacterInventory {
|
||||
let (slot, _) = self.items.iter()
|
||||
.enumerate()
|
||||
.filter(|(_, item)| {
|
||||
if let InventoryItem::Individual(individual_inventory_item) = item {
|
||||
if let ItemDetail::Mag(_) = &individual_inventory_item.item {
|
||||
return individual_inventory_item.equipped
|
||||
}
|
||||
}
|
||||
if let InventoryItem::Individual(individual_inventory_item) = item {if let ItemDetail::Mag(_) = &individual_inventory_item.item {return individual_inventory_item.equipped }}
|
||||
false
|
||||
})
|
||||
})
|
||||
.nth(0)?;
|
||||
Some(InventoryItemHandle {
|
||||
inventory: self,
|
||||
@ -573,5 +569,9 @@ impl CharacterInventory {
|
||||
pub fn iter(&self) -> impl Iterator<Item = &InventoryItem> {
|
||||
self.items.iter()
|
||||
}
|
||||
|
||||
pub fn items(&self) -> &Vec<InventoryItem> {
|
||||
&self.items
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -678,7 +678,6 @@ impl ItemManager {
|
||||
Ok(())
|
||||
}
|
||||
|
||||
|
||||
pub async fn use_item<EG: EntityGateway>(&mut self,
|
||||
used_item: ConsumedItem,
|
||||
entity_gateway: &mut EG,
|
||||
|
@ -1,13 +1,11 @@
|
||||
use libpso::packet::ship::*;
|
||||
use libpso::packet::messages::*;
|
||||
use crate::entity::gateway::EntityGateway;
|
||||
use crate::entity::item::ItemDetail;
|
||||
use crate::entity::item::tool::ToolType;
|
||||
use crate::entity::item::{ItemType};
|
||||
use crate::common::serverstate::ClientId;
|
||||
use crate::common::leveltable::CharacterLevelTable;
|
||||
use crate::ship::ship::{SendShipPacket, ShipError, Rooms, Clients, ItemDropLocation};
|
||||
use crate::ship::location::{ClientLocation, ClientLocationError};
|
||||
use crate::ship::map::{MapArea};
|
||||
use crate::ship::items::{ItemManager, ClientItemId};
|
||||
use crate::ship::packet::builder;
|
||||
|
||||
@ -275,7 +273,7 @@ pub async fn player_used_medical_center<EG>(id: ClientId,
|
||||
clients: &mut Clients)
|
||||
-> Result<Box<dyn Iterator<Item = (ClientId, SendShipPacket)> + Send>, ShipError>
|
||||
where
|
||||
EG: EntityGateway
|
||||
EG: EntityGateway
|
||||
{
|
||||
let client = clients.get_mut(&id).ok_or(ShipError::ClientNotFound(id))?;
|
||||
if client.character.meseta >= 10 {
|
||||
@ -332,7 +330,29 @@ where
|
||||
EG: EntityGateway
|
||||
{
|
||||
let client = clients.get(&id).ok_or(ShipError::ClientNotFound(id))?;
|
||||
item_manager.player_unequips_item(entity_gateway, &client.character, ClientItemId(pkt.item_id)).await?;
|
||||
Ok(Box::new(None.into_iter()))
|
||||
}
|
||||
let equipped_unit_ids: Vec<ClientItemId> = {
|
||||
item_manager.player_unequips_item(entity_gateway, &client.character, ClientItemId(pkt.item_id)).await?;
|
||||
let inventory = item_manager.get_character_inventory(&client.character).unwrap();
|
||||
let ue_item = inventory.get_item_by_id(ClientItemId(pkt.item_id)).ok_or(ShipError::ItemError)?;
|
||||
if let ItemType::Armor(_) = ue_item.item_type() {
|
||||
inventory.items()
|
||||
.iter()
|
||||
.filter(|inv_item| {
|
||||
if let ItemType::Unit(_) = inv_item.item_type() {
|
||||
return inv_item.equipped()
|
||||
}
|
||||
false
|
||||
})
|
||||
.map(|u| u.item_id())
|
||||
.collect()
|
||||
} else {
|
||||
Vec::new()
|
||||
}
|
||||
};
|
||||
|
||||
for unit_id in equipped_unit_ids {
|
||||
item_manager.player_unequips_item(entity_gateway, &client.character, unit_id).await;
|
||||
}
|
||||
|
||||
Ok(Box::new(None.into_iter()))
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user