rare_monsters #60
| @ -78,7 +78,7 @@ pub enum MapEnemyError { | ||||
| // making this `pub type` doesn't allow `impl`s to be defined?
 | ||||
| #[derive(Clone, Debug, Serialize, Deserialize)] | ||||
| pub struct RareMonsterAppearTable { | ||||
|     appear_rate: HashMap<MonsterType, f32>, | ||||
|     pub appear_rate: HashMap<MonsterType, f32>, | ||||
| } | ||||
| 
 | ||||
| impl RareMonsterAppearTable { | ||||
|  | ||||
| @ -101,3 +101,23 @@ async fn test_item_ids_reset_when_rejoining_rooms() { | ||||
|         _ => panic!(), | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| #[async_std::test] | ||||
| async fn test_load_rare_monster_default_appear_rates() { | ||||
|     let mut entity_gateway = InMemoryGateway::default(); | ||||
|     let (_user1, _char1) = new_user_character(&mut entity_gateway, "a1", "a").await; | ||||
|     let mut ship = Box::new(ShipServerState::builder() | ||||
|         .gateway(entity_gateway.clone()) | ||||
|         .build()); | ||||
|     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; | ||||
|     
 | ||||
|     // assume episode 1
 | ||||
|     let room = ship.blocks.0[0].rooms[0].as_ref().unwrap(); | ||||
|     println!("rare monster table: {:?}", room.rare_monster_table); | ||||
|     let rates = &*room.rare_monster_table; | ||||
|     for (_monster, rate) in rates.clone().appear_rate { | ||||
|         assert_eq!(rate, 0.001953125f32); // 1/512 = 0.001953125
 | ||||
|     } | ||||
| } | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user