From c7457cf0fdf4f337133e0e83afe72abd6de1487a Mon Sep 17 00:00:00 2001 From: GradualSyrup <68757075+GradualSyrup@users.noreply.github.com> Date: Sun, 18 Dec 2022 15:43:40 -0600 Subject: [PATCH] Keep Crafting Table on state load (#448) * Keep Crafting Table on state load * Better Table Reference * Use for..in loop for clearer code * Remove Crafting Table jugeeya edition --- src/training/save_states.rs | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/src/training/save_states.rs b/src/training/save_states.rs index d82409c..485bb0e 100644 --- a/src/training/save_states.rs +++ b/src/training/save_states.rs @@ -261,17 +261,20 @@ pub unsafe fn save_states(module_accessor: &mut app::BattleObjectModuleAccessor) PostureModule::set_pos(module_accessor, &pos); // All articles have ID <= 0x25 - (0..=0x25).for_each(|article_idx| { - if ArticleModule::is_exist(module_accessor, article_idx) { - let article: u64 = ArticleModule::get_article(module_accessor, article_idx); - let article_object_id = - Article::get_battle_object_id(article as *mut app::Article); - ArticleModule::remove_exist_object_id( - module_accessor, - article_object_id as u32, - ); - } - }); + (0..=0x25) + // Don't remove crafting table + .filter(|article_idx| !(fighter_kind == *FIGHTER_KIND_PICKEL && *article_idx == *FIGHTER_PICKEL_GENERATE_ARTICLE_TABLE)) + .for_each(|article_idx| { + if ArticleModule::is_exist(module_accessor, article_idx) { + let article: u64 = ArticleModule::get_article(module_accessor, article_idx); + let article_object_id = + Article::get_battle_object_id(article as *mut app::Article); + ArticleModule::remove_exist_object_id( + module_accessor, + article_object_id as u32, + ); + } + }); let item_mgr = *(ITEM_MANAGER_ADDR as *mut *mut app::ItemManager); (0..ItemManager::get_num_of_active_item_all(item_mgr)).for_each(|item_idx| { let item = ItemManager::get_active_item(item_mgr, item_idx);