diff --git a/src/world/custom_ipc_handler.rs b/src/world/custom_ipc_handler.rs index b5722fd..211b1b2 100644 --- a/src/world/custom_ipc_handler.rs +++ b/src/world/custom_ipc_handler.rs @@ -34,6 +34,7 @@ pub async fn handle_custom_ipc(connection: &mut ZoneConnection, data: &CustomIpc } let mut inventory = Inventory::default(); + let (content_id, actor_id); { let mut game_data = connection.gamedata.lock().unwrap(); @@ -45,16 +46,17 @@ pub async fn handle_custom_ipc(connection: &mut ZoneConnection, data: &CustomIpc chara_make.customize.gender, &mut game_data, ); - } - let (content_id, actor_id) = connection.database.create_player_data( - *service_account_id, - name, - chara_make_json, - city_state, - determine_initial_starting_zone(city_state), - inventory, - ); + (content_id, actor_id) = connection.database.create_player_data( + *service_account_id, + name, + chara_make_json, + city_state, + determine_initial_starting_zone(city_state), + inventory, + &mut game_data, + ); + } tracing::info!("Created new player: {content_id} {actor_id}"); diff --git a/src/world/database.rs b/src/world/database.rs index 8722479..de3d5c2 100644 --- a/src/world/database.rs +++ b/src/world/database.rs @@ -179,6 +179,7 @@ impl WorldDatabase { character.city_state.value as u8, 132, Inventory::default(), + game_data, ); let mut player_data = self.find_player_data(actor_id); @@ -483,6 +484,7 @@ impl WorldDatabase { city_state: u8, zone_id: u16, inventory: Inventory, + game_data: &mut GameData, ) -> (u64, u32) { let content_id = Self::generate_content_id(); let actor_id = Self::generate_actor_id(); @@ -492,7 +494,14 @@ impl WorldDatabase { // fill out the initial classjob let chara_make = CharaMake::from_json(chara_make_str); let mut classjob_levels = [0i32; CLASSJOB_ARRAY_SIZE]; - classjob_levels[chara_make.classjob_id as usize] = 1; // inital level + + { + let index = game_data + .get_exp_array_index(chara_make.classjob_id as u16) + .unwrap(); + + classjob_levels[index as usize] = 1; // inital level + } let classjob_exp = [0u32; CLASSJOB_ARRAY_SIZE];