1
Fork 0
mirror of https://github.com/redstrate/Kawari.git synced 2025-04-25 08:27:44 +00:00

Fill inventory with racial starting gear

This commit is contained in:
Joshua Goins 2025-03-23 17:49:53 -04:00
parent 8a03c82480
commit 70ec1b99c9
2 changed files with 41 additions and 5 deletions

View file

@ -194,6 +194,7 @@ async fn main() {
// fill inventory
connection.inventory.equip_racial_items(
chara_details.chara_make.customize.race,
chara_details.chara_make.customize.gender,
);
// Send inventory

View file

@ -1,3 +1,10 @@
use physis::{
common::{Language, Platform},
gamedata::GameData,
};
use crate::config::get_config;
#[derive(Default, Copy, Clone)]
pub struct Item {
pub quantity: u32,
@ -57,13 +64,41 @@ impl Inventory {
}
/// Equip the starting items for a given race
pub fn equip_racial_items(&mut self, race_id: u8) {
pub fn equip_racial_items(&mut self, race_id: u8, gender: u8) {
let config = get_config();
let mut game_data =
GameData::from_existing(Platform::Win32, &config.game_location).unwrap();
let exh = game_data.read_excel_sheet_header("Race").unwrap();
let exd = game_data
.read_excel_sheet("Race", &exh, Language::English, 0)
.unwrap();
let world_row = &exd.read_row(&exh, race_id as u32).unwrap()[0];
let get_column = |column_index: usize| {
let physis::exd::ColumnData::Int32(item_id) = &world_row.data[column_index] else {
panic!("Unexpected type!");
};
*item_id
};
if gender == 0 {
self.equipped.body = Item::new(1, get_column(2) as u32);
self.equipped.hands = Item::new(1, get_column(3) as u32);
self.equipped.legs = Item::new(1, get_column(4) as u32);
self.equipped.feet = Item::new(1, get_column(5) as u32);
} else {
self.equipped.body = Item::new(1, get_column(6) as u32);
self.equipped.hands = Item::new(1, get_column(7) as u32);
self.equipped.legs = Item::new(1, get_column(8) as u32);
self.equipped.feet = Item::new(1, get_column(9) as u32);
}
// TODO: don't hardcode
self.equipped.main_hand = Item::new(1, 0x00000641);
self.equipped.body = Item::new(1, 0x00000ba8);
self.equipped.hands = Item::new(1, 0x00000dc1);
self.equipped.legs = Item::new(1, 0x00000ce1);
self.equipped.feet = Item::new(1, 0x00000ea7);
self.equipped.ears = Item::new(1, 0x00003b1b);
self.equipped.neck = Item::new(1, 0x00003b1a);
self.equipped.wrists = Item::new(1, 0x00003b1c);