From 0976bd9ab0d2a42c05890374fc9d0dc65c97b83b Mon Sep 17 00:00:00 2001 From: andy Date: Tue, 24 May 2022 00:15:06 +0000 Subject: [PATCH] remove 3rd attr for killcounter weapons and fix tests --- src/ship/drops/rare_drop_table.rs | 18 ++++--- src/ship/packet/handler/direct_message.rs | 4 -- src/ship/ship.rs | 1 - tests/test_unseal_items.rs | 58 ++--------------------- 4 files changed, 12 insertions(+), 69 deletions(-) diff --git a/src/ship/drops/rare_drop_table.rs b/src/ship/drops/rare_drop_table.rs index 376fc6e..dce35e3 100644 --- a/src/ship/drops/rare_drop_table.rs +++ b/src/ship/drops/rare_drop_table.rs @@ -97,21 +97,19 @@ impl RareDropTable { pub fn apply_item_stats(&self, map_area: &MapArea, item: RareDropItem, rng: &mut R) -> ItemDropType { match item { RareDropItem::Weapon(weapon) => { - ItemDropType::Weapon(Weapon { + let mut dropped_weapon = Weapon { weapon, special: None, grind: 0, attrs: self.attribute_table.generate_rare_attributes(map_area, rng), tekked: false, - kills: { - if weapon.has_counter() { - Some(0) - } else { - None - } - }, - }) - + kills: None, + }; + if dropped_weapon.weapon.has_counter() { + dropped_weapon.attrs[2] = None; + dropped_weapon.kills = Some(0); + }; + ItemDropType::Weapon(dropped_weapon) }, RareDropItem::Armor(armor) => { ItemDropType::Armor(Armor { diff --git a/src/ship/packet/handler/direct_message.rs b/src/ship/packet/handler/direct_message.rs index 030e45e..03206d1 100644 --- a/src/ship/packet/handler/direct_message.rs +++ b/src/ship/packet/handler/direct_message.rs @@ -79,7 +79,6 @@ pub async fn request_item(id: ClientId, where EG: EntityGateway { - println!("src::ship::packet::handler::request_item() - requesting an item!"); let room_id = client_location.get_room(id).map_err(|err| -> ClientLocationError { err.into() })?; let room = rooms.get_mut(room_id.0) .ok_or(ShipError::InvalidRoom(room_id.0 as u32))? @@ -87,9 +86,7 @@ where .ok_or(ShipError::InvalidRoom(room_id.0 as u32))?; let monster = room.maps.enemy_by_id(request_item.enemy_id as usize)?; - println!("room id: {:?}, monster: {:?}", room_id, monster); if monster.dropped_item { - println!("monster {:?} already dropped an item!", monster); return Err(ShipError::MonsterAlreadyDroppedItem(id, request_item.enemy_id).into()) } @@ -98,7 +95,6 @@ where let client_and_drop = clients_in_area.into_iter() .filter_map(|area_client| { if room.redbox { - println!("red box mode is currently enabled. dropping red box!"); room.drop_table.get_rare_drop(&monster.map_area, &monster.monster).map(|item_drop_type| { (area_client, item_drop_type) }) diff --git a/src/ship/ship.rs b/src/ship/ship.rs index 2c07ebd..db33110 100644 --- a/src/ship/ship.rs +++ b/src/ship/ship.rs @@ -542,7 +542,6 @@ impl ShipServerState { handler::direct_message::guildcard_send(id, guildcard_send, target, &block.client_location, &self.clients) }, GameMessage::RequestItem(request_item) => { - println!("someone requested an item from the ship!"); handler::direct_message::request_item(id, request_item, &mut self.entity_gateway, &block.client_location, &mut self.clients, &mut block.rooms, &mut self.item_manager).await? }, GameMessage::PickupItem(pickup_item) => { diff --git a/tests/test_unseal_items.rs b/tests/test_unseal_items.rs index 654a670..7964610 100644 --- a/tests/test_unseal_items.rs +++ b/tests/test_unseal_items.rs @@ -40,58 +40,11 @@ async fn test_item_drops_with_kill_counter() { join_lobby(&mut ship, ClientId(1)).await; create_ep2_room_with_difficulty(&mut ship, ClientId(1), "room", "", Difficulty::Ultimate).await; - // ship.handle(ClientId(1), &RecvShipPacket()).await.unwrap().for_each(drop); - - // ship.handle(ClientId(1), &RecvShipPacket::Message(Message::new(GameMessage::PlayerWarpingToFloor(PlayerWarpingToFloor{ - // client: 0, - // target: 0, - // area: 9, // seaside - // data: 0, - // })))).await.unwrap().for_each(drop); - - - // ship.handle(ClientId(1), &RecvShipPacket::Message(Message::new(GameMessage::PlayerWarping(PlayerWarping{ - // client: 0, - // target: 0, - // })))).await.unwrap().for_each(drop); - - // ship.handle(ClientId(1), &RecvShipPacket::Message(Message::new(GameMessage::PlayerLoadedIn(PlayerLoadedIn{ - // client: 0, - // target: 0, - // unknown1: [0,0], - // rotation: 0, - // area: 9, - // room: 1, - // x: 100.0, - // y: 10.0, - // z: -20.0, - // })))).await.unwrap().for_each(drop); - - // ship.handle(ClientId(1), &RecvShipPacket::Message(Message::new(GameMessage::PlayerChangedMap2(PlayerChangedMap2{ - // client: 0, - // target: 0, - // map_area: 9, - // _unknown1: 0, - // })))).await.unwrap().for_each(drop); - - // ship.handle(ClientId(1), &RecvShipPacket::Message(Message::new(GameMessage::PlayerSpawnedIntoArea(PlayerSpawnedIntoArea{ - // client: 0, - // target: 0, - // })))).await.unwrap().for_each(drop); - - // ship.handle(ClientId(1), &RecvShipPacket::Message(Message::new(GameMessage::PlayerDoneChangingMap(PlayerDoneChangingMap{ - // client: 0, - // target: 0, - // })))).await.unwrap().for_each(drop); - let room = ship.blocks.0[0].rooms[0].as_mut().unwrap(); room.toggle_redbox_mode(); // enable redbox mode for sjs - // println!("room redbox mode: {:?}", room.redbox); - // println!("room.mode: {:?}", room.mode); - // println!("killing gigue for sjs!"); let gigue_id = room.maps.get_enemy_id_by_monster_type(MonsterType::GiGue).unwrap(); - // println!("found gigue id: {:?}!", gigue_id); + let packets = ship.handle(ClientId(1), &RecvShipPacket::DirectMessage(DirectMessage::new(0, GameMessage::RequestItem(RequestItem { client: 0, target: 0, @@ -108,7 +61,7 @@ async fn test_item_drops_with_kill_counter() { SendShipPacket::Message(Message {msg: GameMessage::ItemDrop(item_drop)}) => { assert_eq!(item_drop.item_bytes[10], 0x80) } - _ => panic!("") + _ => panic!("SJS didn't drop with the expected value! attr[2] should be 0x80 (128) for 0 kills") } } @@ -156,18 +109,15 @@ async fn test_all_equipped_kill_counters_increase_per_kill() { unit: [Some(p1_inv[1].id), None, None, None], mag: None, }; + entity_gateway.set_character_equips(&char1.id, &equipped).await.unwrap(); entity_gateway.set_character_inventory(&char1.id, &item::InventoryEntity::new(p1_inv)).await.unwrap(); - - - - log_in_char(&mut ship, ClientId(1), "a1", "a").await; join_lobby(&mut ship, ClientId(1)).await; create_room(&mut ship, ClientId(1), "room", "").await; - + assert!(true); } // #[async_std::test]