remove 3rd attr for killcounter weapons and fix tests
This commit is contained in:
		
							parent
							
								
									b4866a3e59
								
							
						
					
					
						commit
						0976bd9ab0
					
				@ -97,21 +97,19 @@ impl RareDropTable {
 | 
			
		||||
    pub fn apply_item_stats<R: Rng>(&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 {
 | 
			
		||||
 | 
			
		||||
@ -79,7 +79,6 @@ pub async fn request_item<EG>(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)
 | 
			
		||||
                })
 | 
			
		||||
 | 
			
		||||
@ -542,7 +542,6 @@ impl<EG: EntityGateway> ShipServerState<EG> {
 | 
			
		||||
                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) => {
 | 
			
		||||
 | 
			
		||||
@ -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]
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user