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:
parent
8a03c82480
commit
70ec1b99c9
2 changed files with 41 additions and 5 deletions
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Add table
Reference in a new issue