mirror of
https://github.com/redstrate/Kawari.git
synced 2025-04-26 00:37: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
|
// fill inventory
|
||||||
connection.inventory.equip_racial_items(
|
connection.inventory.equip_racial_items(
|
||||||
chara_details.chara_make.customize.race,
|
chara_details.chara_make.customize.race,
|
||||||
|
chara_details.chara_make.customize.gender,
|
||||||
);
|
);
|
||||||
|
|
||||||
// Send inventory
|
// Send inventory
|
||||||
|
|
|
@ -1,3 +1,10 @@
|
||||||
|
use physis::{
|
||||||
|
common::{Language, Platform},
|
||||||
|
gamedata::GameData,
|
||||||
|
};
|
||||||
|
|
||||||
|
use crate::config::get_config;
|
||||||
|
|
||||||
#[derive(Default, Copy, Clone)]
|
#[derive(Default, Copy, Clone)]
|
||||||
pub struct Item {
|
pub struct Item {
|
||||||
pub quantity: u32,
|
pub quantity: u32,
|
||||||
|
@ -57,13 +64,41 @@ impl Inventory {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Equip the starting items for a given race
|
/// 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
|
// TODO: don't hardcode
|
||||||
self.equipped.main_hand = Item::new(1, 0x00000641);
|
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.ears = Item::new(1, 0x00003b1b);
|
||||||
self.equipped.neck = Item::new(1, 0x00003b1a);
|
self.equipped.neck = Item::new(1, 0x00003b1a);
|
||||||
self.equipped.wrists = Item::new(1, 0x00003b1c);
|
self.equipped.wrists = Item::new(1, 0x00003b1c);
|
||||||
|
|
Loading…
Add table
Reference in a new issue