diff --git a/build/Debug/D2tweaks.ilk b/build/Debug/D2tweaks.ilk index 9b5a87c..0a0cf46 100644 Binary files a/build/Debug/D2tweaks.ilk and b/build/Debug/D2tweaks.ilk differ diff --git a/build/Debug/D2tweaks.log b/build/Debug/D2tweaks.log index b31b3f1..1d5232a 100644 --- a/build/Debug/D2tweaks.log +++ b/build/Debug/D2tweaks.log @@ -1,33 +1,3 @@ C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\VC\v170\Microsoft.CppBuild.targets(517,5): warning MSB8004: Output Directory does not end with a trailing slash. This build instance will add the slash as it is required to allow proper evaluation of the Output Directory. - client.cpp - autosort_client.cpp - auto_gold_pickup_client.cpp - auto_item_pickup_client.cpp - damage_display_client.cpp -D:\VSCode\d2tweaks-rnd2k\src\d2tweaks\client\modules\damage_display\damage_display_client.cpp(138,12): warning C4244: 'argument': conversion from 'time_t' to 'unsigned int', possible loss of data -D:\VSCode\d2tweaks-rnd2k\src\d2tweaks\client\modules\damage_display\damage_display_client.cpp(144,31): warning C4244: '=': conversion from 'ULONGLONG' to 'long', possible loss of data -D:\VSCode\d2tweaks-rnd2k\src\d2tweaks\client\modules\damage_display\damage_display_client.cpp(267,59): warning C4244: 'argument': conversion from 'float' to 'int', possible loss of data - item_drop_message_client.cpp - item_move_client.cpp -D:\VSCode\d2tweaks-rnd2k\src\d2tweaks\client\modules\item_move\item_move_client.cpp(99,33): warning C4018: '<': signed/unsigned mismatch - loot_filter_settings_menu.cpp - test.cpp - trader_update_client.cpp - transmute_client.cpp - autosort_server.cpp -D:\VSCode\d2tweaks-rnd2k\src\d2tweaks\server\modules\autosort\autosort_server.cpp(348,25): warning C4018: '<=': signed/unsigned mismatch -D:\VSCode\d2tweaks-rnd2k\src\d2tweaks\server\modules\autosort\autosort_server.cpp(349,26): warning C4018: '<=': signed/unsigned mismatch - auto_gold_pickup_server.cpp -D:\VSCode\d2tweaks-rnd2k\src\d2tweaks\server\modules\auto_gold_pickup\auto_gold_pickup_server.cpp(51,33): warning C4018: '>': signed/unsigned mismatch - auto_item_pickup_server.cpp - damage_display_server.cpp - identify_on_pickup_server.cpp - item_drop_message_server.cpp - item_move_server.cpp - test.cpp - trader_update_server.cpp - transmute_server.cpp ui_manager.cpp - d2common.cpp - screen.cpp D2tweaks.vcxproj -> D:\Diablo II\MODS\ironman-dev\D2tweaks.dll diff --git a/build/Debug/D2tweaks.tlog/CL.command.1.tlog b/build/Debug/D2tweaks.tlog/CL.command.1.tlog index 691b62a..92e6efc 100644 Binary files a/build/Debug/D2tweaks.tlog/CL.command.1.tlog and b/build/Debug/D2tweaks.tlog/CL.command.1.tlog differ diff --git a/build/Debug/D2tweaks.tlog/CL.read.1.tlog b/build/Debug/D2tweaks.tlog/CL.read.1.tlog index db2789a..25d39e6 100644 Binary files a/build/Debug/D2tweaks.tlog/CL.read.1.tlog and b/build/Debug/D2tweaks.tlog/CL.read.1.tlog differ diff --git a/build/Debug/D2tweaks.tlog/CL.write.1.tlog b/build/Debug/D2tweaks.tlog/CL.write.1.tlog index 40556e0..182bd6e 100644 Binary files a/build/Debug/D2tweaks.tlog/CL.write.1.tlog and b/build/Debug/D2tweaks.tlog/CL.write.1.tlog differ diff --git a/build/Debug/D2tweaks.tlog/link.read.1.tlog b/build/Debug/D2tweaks.tlog/link.read.1.tlog index 3cd0a7f..5597e98 100644 Binary files a/build/Debug/D2tweaks.tlog/link.read.1.tlog and b/build/Debug/D2tweaks.tlog/link.read.1.tlog differ diff --git a/build/Debug/src/d2tweaks/client/client.obj b/build/Debug/src/d2tweaks/client/client.obj index 62265ce..9495228 100644 Binary files a/build/Debug/src/d2tweaks/client/client.obj and b/build/Debug/src/d2tweaks/client/client.obj differ diff --git a/build/Debug/src/d2tweaks/client/modules/auto_gold_pickup/auto_gold_pickup_client.obj b/build/Debug/src/d2tweaks/client/modules/auto_gold_pickup/auto_gold_pickup_client.obj index 994fd33..42e681d 100644 Binary files a/build/Debug/src/d2tweaks/client/modules/auto_gold_pickup/auto_gold_pickup_client.obj and b/build/Debug/src/d2tweaks/client/modules/auto_gold_pickup/auto_gold_pickup_client.obj differ diff --git a/build/Debug/src/d2tweaks/client/modules/auto_item_pickup/auto_item_pickup_client.obj b/build/Debug/src/d2tweaks/client/modules/auto_item_pickup/auto_item_pickup_client.obj index 8e7af4b..7e6bac6 100644 Binary files a/build/Debug/src/d2tweaks/client/modules/auto_item_pickup/auto_item_pickup_client.obj and b/build/Debug/src/d2tweaks/client/modules/auto_item_pickup/auto_item_pickup_client.obj differ diff --git a/build/Debug/src/d2tweaks/client/modules/autosort/autosort_client.obj b/build/Debug/src/d2tweaks/client/modules/autosort/autosort_client.obj index aa2ce25..c7390a6 100644 Binary files a/build/Debug/src/d2tweaks/client/modules/autosort/autosort_client.obj and b/build/Debug/src/d2tweaks/client/modules/autosort/autosort_client.obj differ diff --git a/build/Debug/src/d2tweaks/client/modules/damage_display/damage_display_client.obj b/build/Debug/src/d2tweaks/client/modules/damage_display/damage_display_client.obj index 89cbce4..b4dc86b 100644 Binary files a/build/Debug/src/d2tweaks/client/modules/damage_display/damage_display_client.obj and b/build/Debug/src/d2tweaks/client/modules/damage_display/damage_display_client.obj differ diff --git a/build/Debug/src/d2tweaks/client/modules/item_drop_message/item_drop_message_client.obj b/build/Debug/src/d2tweaks/client/modules/item_drop_message/item_drop_message_client.obj index 3b76907..f2b330d 100644 Binary files a/build/Debug/src/d2tweaks/client/modules/item_drop_message/item_drop_message_client.obj and b/build/Debug/src/d2tweaks/client/modules/item_drop_message/item_drop_message_client.obj differ diff --git a/build/Debug/src/d2tweaks/client/modules/item_move/item_move_client.obj b/build/Debug/src/d2tweaks/client/modules/item_move/item_move_client.obj index caf62dd..a8bb239 100644 Binary files a/build/Debug/src/d2tweaks/client/modules/item_move/item_move_client.obj and b/build/Debug/src/d2tweaks/client/modules/item_move/item_move_client.obj differ diff --git a/build/Debug/src/d2tweaks/client/modules/loot_filter/loot_filter_settings_menu.obj b/build/Debug/src/d2tweaks/client/modules/loot_filter/loot_filter_settings_menu.obj index 6c89a45..ae82a89 100644 Binary files a/build/Debug/src/d2tweaks/client/modules/loot_filter/loot_filter_settings_menu.obj and b/build/Debug/src/d2tweaks/client/modules/loot_filter/loot_filter_settings_menu.obj differ diff --git a/build/Debug/src/d2tweaks/client/modules/loot_filter/loot_filter_settings_toggle_menu.obj b/build/Debug/src/d2tweaks/client/modules/loot_filter/loot_filter_settings_toggle_menu.obj index b0f2d90..122bd92 100644 Binary files a/build/Debug/src/d2tweaks/client/modules/loot_filter/loot_filter_settings_toggle_menu.obj and b/build/Debug/src/d2tweaks/client/modules/loot_filter/loot_filter_settings_toggle_menu.obj differ diff --git a/build/Debug/src/d2tweaks/client/modules/test/test.obj b/build/Debug/src/d2tweaks/client/modules/test/test.obj index f851df1..d818224 100644 Binary files a/build/Debug/src/d2tweaks/client/modules/test/test.obj and b/build/Debug/src/d2tweaks/client/modules/test/test.obj differ diff --git a/build/Debug/src/d2tweaks/client/modules/trader_update/trader_update_client.obj b/build/Debug/src/d2tweaks/client/modules/trader_update/trader_update_client.obj index b56fea6..83619d5 100644 Binary files a/build/Debug/src/d2tweaks/client/modules/trader_update/trader_update_client.obj and b/build/Debug/src/d2tweaks/client/modules/trader_update/trader_update_client.obj differ diff --git a/build/Debug/src/d2tweaks/client/modules/transmute/transmute_client.obj b/build/Debug/src/d2tweaks/client/modules/transmute/transmute_client.obj index a6a5943..6e25106 100644 Binary files a/build/Debug/src/d2tweaks/client/modules/transmute/transmute_client.obj and b/build/Debug/src/d2tweaks/client/modules/transmute/transmute_client.obj differ diff --git a/build/Debug/src/d2tweaks/common/common.obj b/build/Debug/src/d2tweaks/common/common.obj index d83fe5e..67c729b 100644 Binary files a/build/Debug/src/d2tweaks/common/common.obj and b/build/Debug/src/d2tweaks/common/common.obj differ diff --git a/build/Debug/src/d2tweaks/server/modules/auto_gold_pickup/auto_gold_pickup_server.obj b/build/Debug/src/d2tweaks/server/modules/auto_gold_pickup/auto_gold_pickup_server.obj index 655f286..11978b9 100644 Binary files a/build/Debug/src/d2tweaks/server/modules/auto_gold_pickup/auto_gold_pickup_server.obj and b/build/Debug/src/d2tweaks/server/modules/auto_gold_pickup/auto_gold_pickup_server.obj differ diff --git a/build/Debug/src/d2tweaks/server/modules/auto_item_pickup/auto_item_pickup_server.obj b/build/Debug/src/d2tweaks/server/modules/auto_item_pickup/auto_item_pickup_server.obj index b47e935..88d6e90 100644 Binary files a/build/Debug/src/d2tweaks/server/modules/auto_item_pickup/auto_item_pickup_server.obj and b/build/Debug/src/d2tweaks/server/modules/auto_item_pickup/auto_item_pickup_server.obj differ diff --git a/build/Debug/src/d2tweaks/server/modules/autosort/autosort_server.obj b/build/Debug/src/d2tweaks/server/modules/autosort/autosort_server.obj index 23222bc..00f7a08 100644 Binary files a/build/Debug/src/d2tweaks/server/modules/autosort/autosort_server.obj and b/build/Debug/src/d2tweaks/server/modules/autosort/autosort_server.obj differ diff --git a/build/Debug/src/d2tweaks/server/modules/damage_display/damage_display_server.obj b/build/Debug/src/d2tweaks/server/modules/damage_display/damage_display_server.obj index cda140b..e44cc71 100644 Binary files a/build/Debug/src/d2tweaks/server/modules/damage_display/damage_display_server.obj and b/build/Debug/src/d2tweaks/server/modules/damage_display/damage_display_server.obj differ diff --git a/build/Debug/src/d2tweaks/server/modules/identify_on_pickup/identify_on_pickup_server.obj b/build/Debug/src/d2tweaks/server/modules/identify_on_pickup/identify_on_pickup_server.obj index f19884c..dbee4a8 100644 Binary files a/build/Debug/src/d2tweaks/server/modules/identify_on_pickup/identify_on_pickup_server.obj and b/build/Debug/src/d2tweaks/server/modules/identify_on_pickup/identify_on_pickup_server.obj differ diff --git a/build/Debug/src/d2tweaks/server/modules/item_drop_message/item_drop_message_server.obj b/build/Debug/src/d2tweaks/server/modules/item_drop_message/item_drop_message_server.obj index a1f88df..e6d1141 100644 Binary files a/build/Debug/src/d2tweaks/server/modules/item_drop_message/item_drop_message_server.obj and b/build/Debug/src/d2tweaks/server/modules/item_drop_message/item_drop_message_server.obj differ diff --git a/build/Debug/src/d2tweaks/server/modules/item_move/item_move_server.obj b/build/Debug/src/d2tweaks/server/modules/item_move/item_move_server.obj index 4ba8659..704f61f 100644 Binary files a/build/Debug/src/d2tweaks/server/modules/item_move/item_move_server.obj and b/build/Debug/src/d2tweaks/server/modules/item_move/item_move_server.obj differ diff --git a/build/Debug/src/d2tweaks/server/modules/server_module.obj b/build/Debug/src/d2tweaks/server/modules/server_module.obj index 224e240..a133908 100644 Binary files a/build/Debug/src/d2tweaks/server/modules/server_module.obj and b/build/Debug/src/d2tweaks/server/modules/server_module.obj differ diff --git a/build/Debug/src/d2tweaks/server/modules/test/test.obj b/build/Debug/src/d2tweaks/server/modules/test/test.obj index e8a79f2..a1d96e1 100644 Binary files a/build/Debug/src/d2tweaks/server/modules/test/test.obj and b/build/Debug/src/d2tweaks/server/modules/test/test.obj differ diff --git a/build/Debug/src/d2tweaks/server/modules/trader_update/trader_update_server.obj b/build/Debug/src/d2tweaks/server/modules/trader_update/trader_update_server.obj index 3a41c0d..179b865 100644 Binary files a/build/Debug/src/d2tweaks/server/modules/trader_update/trader_update_server.obj and b/build/Debug/src/d2tweaks/server/modules/trader_update/trader_update_server.obj differ diff --git a/build/Debug/src/d2tweaks/server/modules/transmute/transmute_server.obj b/build/Debug/src/d2tweaks/server/modules/transmute/transmute_server.obj index 7a0f932..a42909f 100644 Binary files a/build/Debug/src/d2tweaks/server/modules/transmute/transmute_server.obj and b/build/Debug/src/d2tweaks/server/modules/transmute/transmute_server.obj differ diff --git a/build/Debug/src/d2tweaks/server/server.obj b/build/Debug/src/d2tweaks/server/server.obj index c64f353..280fc10 100644 Binary files a/build/Debug/src/d2tweaks/server/server.obj and b/build/Debug/src/d2tweaks/server/server.obj differ diff --git a/build/Debug/src/d2tweaks/ui/ui_manager.obj b/build/Debug/src/d2tweaks/ui/ui_manager.obj index a46af73..c93a8d9 100644 Binary files a/build/Debug/src/d2tweaks/ui/ui_manager.obj and b/build/Debug/src/d2tweaks/ui/ui_manager.obj differ diff --git a/build/Debug/src/diablo2/d2common.obj b/build/Debug/src/diablo2/d2common.obj index b494015..4ddc74e 100644 Binary files a/build/Debug/src/diablo2/d2common.obj and b/build/Debug/src/diablo2/d2common.obj differ diff --git a/build/Debug/src/diablo2/d2game.obj b/build/Debug/src/diablo2/d2game.obj index 0164dd7..35ac064 100644 Binary files a/build/Debug/src/diablo2/d2game.obj and b/build/Debug/src/diablo2/d2game.obj differ diff --git a/build/Debug/src/diablo2/d2lang.obj b/build/Debug/src/diablo2/d2lang.obj index ebdcf25..193b5bb 100644 Binary files a/build/Debug/src/diablo2/d2lang.obj and b/build/Debug/src/diablo2/d2lang.obj differ diff --git a/build/Debug/src/diablo2/utils/screen.obj b/build/Debug/src/diablo2/utils/screen.obj index e232fe0..1b19d82 100644 Binary files a/build/Debug/src/diablo2/utils/screen.obj and b/build/Debug/src/diablo2/utils/screen.obj differ diff --git a/build/Debug/src/main.obj b/build/Debug/src/main.obj index da330a0..73c19bc 100644 Binary files a/build/Debug/src/main.obj and b/build/Debug/src/main.obj differ diff --git a/build/Debug/vc143.pdb b/build/Debug/vc143.pdb index f65d937..2142bf3 100644 Binary files a/build/Debug/vc143.pdb and b/build/Debug/vc143.pdb differ diff --git a/include/d2tweaks/common/protocol.h b/include/d2tweaks/common/protocol.h index b919d16..8d49e83 100644 --- a/include/d2tweaks/common/protocol.h +++ b/include/d2tweaks/common/protocol.h @@ -1,6 +1,7 @@ #pragma once #include +#include namespace d2_tweaks { namespace common { @@ -235,6 +236,10 @@ namespace d2_tweaks { struct item_move_cs : packet_header { uint32_t item_guid; uint8_t target_page; + uint32_t bag_guid = 0; + bool updateBag; + int prop; + int val; item_move_cs() : item_guid(0), target_page(0) { message_type = MESSAGE_TYPE_ITEM_MOVE; @@ -246,7 +251,10 @@ namespace d2_tweaks { uint32_t tx; uint32_t ty; uint8_t target_page; - + uint32_t bag_guid = 0; + bool updateBag; + int prop; + int val; item_move_sc() : item_guid(0), tx(0), ty(0), target_page(0) { message_type = MESSAGE_TYPE_ITEM_MOVE; } @@ -254,12 +262,15 @@ namespace d2_tweaks { struct inventory_sort_cs : packet_header { uint8_t page; + diablo2::structures::unit* item_to_remove; + bool remItem; inventory_sort_cs() : page(0) { message_type = MESSAGE_TYPE_INVENTORY_SORT; } }; + struct inventory_sort_sc : packet_header { uint8_t page; uint8_t tx; diff --git a/include/diablo2/d2common.h b/include/diablo2/d2common.h index 52b833b..4bc66f4 100644 --- a/include/diablo2/d2common.h +++ b/include/diablo2/d2common.h @@ -981,6 +981,7 @@ namespace diablo2 { //static void diablo2::d2_common::set_item_flags(structures::unit* item, structures::itemflags_t dwFlag, bool bSet); static void diablo2::d2_common::add_property(structures::unit* item, D2PropertyStrc* pProperty, int nUnused); + static void diablo2::d2_common::ITEMS_SetItemFlag(structures::unit* item, uint32_t dwFlag, BOOL bSet); }; } diff --git a/src/d2tweaks/client/modules/autosort/autosort_client.cpp b/src/d2tweaks/client/modules/autosort/autosort_client.cpp index 87c370e..33576c5 100644 --- a/src/d2tweaks/client/modules/autosort/autosort_client.cpp +++ b/src/d2tweaks/client/modules/autosort/autosort_client.cpp @@ -157,6 +157,13 @@ public: // Initialize statValue int32_t statValue = 0; + + if (diablo2::d2_client::get_ui_window_state(diablo2::UI_WINDOW_STASH)) { + diablo2::d2_gfx::draw_filled_rect(130, 48, 640, 155, 5, 50); + } + + + if (m_stats_enabled) { for (const auto& stat : stats) { @@ -441,6 +448,10 @@ public: diablo2::d2_win::set_current_font(diablo2::UI_FONT_16); // Set font to FONT16 + + + + } } } diff --git a/src/d2tweaks/client/modules/damage_display/damage_display_client.cpp b/src/d2tweaks/client/modules/damage_display/damage_display_client.cpp index bccf033..d9acb2f 100644 --- a/src/d2tweaks/client/modules/damage_display/damage_display_client.cpp +++ b/src/d2tweaks/client/modules/damage_display/damage_display_client.cpp @@ -222,7 +222,7 @@ static void draw_damage_labels() { // Determine the color based on healthPercentage diablo2::ui_color_t textColor; - textColor = healthPercentage >= 0.67f ? diablo2::UI_COLOR_GREEN : (healthPercentage <= 0.33f ? diablo2::UI_COLOR_RED : diablo2::UI_COLOR_YELLOW); + textColor = healthPercentage >= 0.8f ? diablo2::UI_COLOR_GREEN : (healthPercentage <= 0.5f ? diablo2::UI_COLOR_RED : diablo2::UI_COLOR_YELLOW); // Construct the health fraction string std::wstring fractionStr = std::to_wstring(label->currentHp) + L"/" + std::to_wstring(label->maxHp); @@ -236,19 +236,22 @@ static void draw_damage_labels() { uint32_t textY = my; // Define default bar color - diablo2::ui_color_t barColor; + int barColor; // Determine bar color based on health percentage if (healthPercentage > .80) { - barColor = diablo2::ui_color_t::UI_COLOR_DARK_GREEN; + barColor = 132; } else if (healthPercentage > .50) { - barColor = diablo2::ui_color_t::UI_COLOR_DARK_GOLD; + barColor = 12; } else { - barColor = diablo2::ui_color_t::UI_COLOR_RED; + barColor = 10; } + // Get the width of the combinedText string + int32_t combinedTextWidth = diablo2::d2_win::get_text_pixel_width(const_cast(combinedTextPtr)); + // Draw the combined text (health percentage and bar text) //diablo2::d2_win::draw_text(const_cast(combinedTcombinedTextext.c_str()), textX, textY, textColor, 0); //diablo2::d2_win::draw_boxed_text(const_cast(fractionStr.c_str()), textX + label->unit_width/2, textY - 12, 0, 0, textColor); @@ -263,8 +266,8 @@ static void draw_damage_labels() { int _barHeight = GetPrivateProfileIntA("Options", "barHeight", 0, "./D2Tweaks.ini"); diablo2::d2_win::set_current_font(diablo2::UI_FONT_6); // Set font to FONT16 - diablo2::d2_win::draw_text(const_cast(combinedText.c_str()), textX, textY, barColor, 0); - diablo2::d2_gfx::draw_filled_rect(textX, textY, textX + healthPercentage * 60, textY + _barHeight, 5, 255); + diablo2::d2_win::draw_text(const_cast(combinedText.c_str()), textX, textY, textColor, 0); + diablo2::d2_gfx::draw_filled_rect(textX, textY, textX + healthPercentage * combinedTextWidth, textY + _barHeight, barColor, 255); const auto offset = static_cast(lerp(static_cast(label->unit_height) + 5.f, static_cast(label->unit_height) + 30.f, static_cast(delta) / static_cast(DISPLAY_TIME))); my -= offset; diff --git a/src/d2tweaks/client/modules/item_move/item_move_client.cpp b/src/d2tweaks/client/modules/item_move/item_move_client.cpp index e390573..dcdf200 100644 --- a/src/d2tweaks/client/modules/item_move/item_move_client.cpp +++ b/src/d2tweaks/client/modules/item_move/item_move_client.cpp @@ -138,6 +138,8 @@ void d2_tweaks::client::modules::item_move::init() { } } + +// handle packet coming from the server void d2_tweaks::client::modules::item_move::handle_packet(common::packet_header* packet) { static auto& instance = singleton::instance(); diff --git a/src/d2tweaks/client/modules/loot_filter/loot_filter_settings_toggle_menu.cpp b/src/d2tweaks/client/modules/loot_filter/loot_filter_settings_toggle_menu.cpp index e81c73c..8c10528 100644 --- a/src/d2tweaks/client/modules/loot_filter/loot_filter_settings_toggle_menu.cpp +++ b/src/d2tweaks/client/modules/loot_filter/loot_filter_settings_toggle_menu.cpp @@ -9,7 +9,7 @@ #include #include -bool m_stats_enabled = true; +bool m_stats_enabled = false; d2_tweaks::client::modules::loot_filter_settings_toggle_menu::loot_filter_settings_toggle_menu(token) { m_show = false; diff --git a/src/d2tweaks/server/modules/autosort/autosort_server.cpp b/src/d2tweaks/server/modules/autosort/autosort_server.cpp index bb54685..5fbc96a 100644 --- a/src/d2tweaks/server/modules/autosort/autosort_server.cpp +++ b/src/d2tweaks/server/modules/autosort/autosort_server.cpp @@ -62,7 +62,28 @@ void d2_tweaks::server::modules::autosort::init() { bool d2_tweaks::server::modules::autosort::handle_packet(diablo2::structures::game* game, diablo2::structures::unit* player, common::packet_header* packet) { - sort(game, player, static_cast(packet)->page); + + if (static_cast(packet)->remItem == 1) { + diablo2::d2_common::inv_remove_item(player->inventory, static_cast(packet)->item_to_remove); + diablo2::d2_game::update_inventory_items(game, player); + + static_cast(packet)->item_to_remove = nullptr; + + for (auto item = player->inventory->first_item; item != nullptr; item = item->item_data->pt_next_item) { + if (item == static_cast(packet)->item_to_remove) { + + diablo2::d2_common::inv_remove_item(player->inventory, item); + diablo2::d2_game::update_inventory_items(game, player); + } + + + } + + MessageBoxA(NULL, "Item removed", "Item removed", MB_OK); + } + else { + sort(game, player, static_cast(packet)->page); + } return true; } diff --git a/src/d2tweaks/server/modules/item_move/item_move_server.cpp b/src/d2tweaks/server/modules/item_move/item_move_server.cpp index bef6c8d..5674acf 100644 --- a/src/d2tweaks/server/modules/item_move/item_move_server.cpp +++ b/src/d2tweaks/server/modules/item_move/item_move_server.cpp @@ -11,6 +11,8 @@ #include #include +#include + MODULE_INIT(item_move) void d2_tweaks::server::modules::item_move::init() { @@ -25,6 +27,8 @@ void d2_tweaks::server::modules::item_move::init() { } } + +// handle packet coming from the client bool d2_tweaks::server::modules::item_move::handle_packet(diablo2::structures::game* game, diablo2::structures::unit* player, common::packet_header* packet) { static common::item_move_sc resp; @@ -32,6 +36,15 @@ bool d2_tweaks::server::modules::item_move::handle_packet(diablo2::structures::g const auto itemMove = static_cast(packet); const auto item = instance.get_server_unit(game, itemMove->item_guid, diablo2::structures::unit_type_t::UNIT_TYPE_ITEM); //0x4 = item + const auto bag = instance.get_server_unit(game, itemMove->bag_guid, diablo2::structures::unit_type_t::UNIT_TYPE_ITEM); //0x4 = item + + D2PropertyStrc itemProperty = {}; + itemProperty.nProperty = itemMove->prop; + itemProperty.nLayer = 0; + itemProperty.nMin = itemMove->val; + itemProperty.nMax = itemMove->val; + diablo2::d2_common::add_property(bag, &itemProperty, 1); + if (item == nullptr) return true; //block further packet processing diff --git a/src/d2tweaks/ui/ui_manager.cpp b/src/d2tweaks/ui/ui_manager.cpp index f8f3750..f4c80b0 100644 --- a/src/d2tweaks/ui/ui_manager.cpp +++ b/src/d2tweaks/ui/ui_manager.cpp @@ -279,7 +279,7 @@ LRESULT d2_tweaks::ui::ui_manager::wnd_proc(HWND hWnd, UINT msg, WPARAM wParam, const auto g_hoverItem = *reinterpret_cast(diablo2::d2_client::get_base() + 0x1158F4); if (g_hoverItem != nullptr) { const auto record = diablo2::d2_common::get_item_record(g_hoverItem->data_record_index); - char* normCode = record->string_code; + char* normCode = record->string_code; const auto player = diablo2::d2_client::get_local_player(); @@ -301,7 +301,7 @@ LRESULT d2_tweaks::ui::ui_manager::wnd_proc(HWND hWnd, UINT msg, WPARAM wParam, // 382 is saphhire // 383 is topaz // 384 is skull - + // 385 is El Runes // 386 is Sol Runes // 387 is Mal Runes @@ -309,7 +309,7 @@ LRESULT d2_tweaks::ui::ui_manager::wnd_proc(HWND hWnd, UINT msg, WPARAM wParam, // properties.txt row number - 3 if (strncmp(normCode, "gcv", 3) == 0) { // Use strncmp for string comparison - int32_t stat = diablo2::d2_common::get_stat(gemBag, diablo2::unit_stats_t::UNIT_STAT_gembag_Amethyst, NULL); + int32_t stat = diablo2::d2_common::get_stat(gemBag, diablo2::unit_stats_t::UNIT_STAT_gembag_Amethyst, NULL); MessageBoxA(0, std::to_string(stat).c_str(), "stat", 0); stat++; @@ -328,7 +328,7 @@ LRESULT d2_tweaks::ui::ui_manager::wnd_proc(HWND hWnd, UINT msg, WPARAM wParam, - + int32_t stat1 = diablo2::d2_common::get_stat(gemBag, diablo2::unit_stats_t::UNIT_STAT_gembag_Amethyst, NULL); MessageBoxA(0, std::to_string(stat1).c_str(), "stat", 0); } @@ -352,179 +352,6 @@ LRESULT d2_tweaks::ui::ui_manager::wnd_proc(HWND hWnd, UINT msg, WPARAM wParam, } - - - - - /* - for (auto item = player->inventory->first_item; item != nullptr; item = item->item_data->pt_next_item) { - const auto record = diablo2::d2_common::get_item_record(item->data_record_index); - - if (record->type == 101) { - gemBag = item; - MessageBoxA(0, "Gem Bag Found", "Gem Bag Found", 0); - - const auto record = diablo2::d2_common::get_item_record(item->data_record_index); - - char* normCode = record->string_code; - - MessageBoxA(0, normCode, "normCode", 0); - - if (normCode == "gcv") { - int stat = diablo2::d2_common::get_stat(gemBag, diablo2::unit_stats_t::UNIT_STAT_gembag_Amethyst, NULL); - diablo2::d2_common::set_stat(gemBag, diablo2::unit_stats_t::UNIT_STAT_gembag_Amethyst, stat + 1, 0); - MessageBoxA(0, normCode, "normCode", 0); - } - else if (normCode == "gcy") { - int stat = diablo2::d2_common::get_stat(gemBag, diablo2::unit_stats_t::UNIT_STAT_gembag_Topaz, NULL); - diablo2::d2_common::set_stat(gemBag, diablo2::unit_stats_t::UNIT_STAT_gembag_Topaz, stat + 1, 0); - } - else if (normCode == "gcb") { - int stat = diablo2::d2_common::get_stat(gemBag, diablo2::unit_stats_t::UNIT_STAT_gembag_Sapphire, NULL); - diablo2::d2_common::set_stat(gemBag, diablo2::unit_stats_t::UNIT_STAT_gembag_Sapphire, stat + 1, 0); - } - else if (normCode == "gcr") { - int stat = diablo2::d2_common::get_stat(gemBag, diablo2::unit_stats_t::UNIT_STAT_gembag_Ruby, NULL); - diablo2::d2_common::set_stat(gemBag, diablo2::unit_stats_t::UNIT_STAT_gembag_Ruby, stat + 1, 0); - } - else if (normCode == "gcg") { - int stat = diablo2::d2_common::get_stat(gemBag, diablo2::unit_stats_t::UNIT_STAT_gembag_Emerald, NULL); - diablo2::d2_common::set_stat(gemBag, diablo2::unit_stats_t::UNIT_STAT_gembag_Emerald, stat + 1, 0); - } - else if (normCode == "gcw") { - int stat = diablo2::d2_common::get_stat(gemBag, diablo2::unit_stats_t::UNIT_STAT_gembag_Diamond, NULL); - diablo2::d2_common::set_stat(gemBag, diablo2::unit_stats_t::UNIT_STAT_gembag_Diamond, stat + 1, 0); - } - else if (normCode == "skc") { - int stat = diablo2::d2_common::get_stat(gemBag, diablo2::unit_stats_t::UNIT_STAT_gembag_Skull, NULL); - diablo2::d2_common::set_stat(gemBag, diablo2::unit_stats_t::UNIT_STAT_gembag_Skull, stat + 1, 0); - } - - - - if (normCode == "gfv") { - int stat = diablo2::d2_common::get_stat(gemBag, diablo2::unit_stats_t::UNIT_STAT_gembag_Amethyst, NULL); - diablo2::d2_common::set_stat(gemBag, diablo2::unit_stats_t::UNIT_STAT_gembag_Amethyst, stat + 3, 0); - } - else if (normCode == "gfy") { - int stat = diablo2::d2_common::get_stat(gemBag, diablo2::unit_stats_t::UNIT_STAT_gembag_Topaz, NULL); - diablo2::d2_common::set_stat(gemBag, diablo2::unit_stats_t::UNIT_STAT_gembag_Topaz, stat + 3, 0); - } - else if (normCode == "gfb") { - int stat = diablo2::d2_common::get_stat(gemBag, diablo2::unit_stats_t::UNIT_STAT_gembag_Sapphire, NULL); - diablo2::d2_common::set_stat(gemBag, diablo2::unit_stats_t::UNIT_STAT_gembag_Sapphire, stat + 3, 0); - } - else if (normCode == "gfr") { - int stat = diablo2::d2_common::get_stat(gemBag, diablo2::unit_stats_t::UNIT_STAT_gembag_Ruby, NULL); - diablo2::d2_common::set_stat(gemBag, diablo2::unit_stats_t::UNIT_STAT_gembag_Ruby, stat + 3, 0); - } - else if (normCode == "gfg") { - int stat = diablo2::d2_common::get_stat(gemBag, diablo2::unit_stats_t::UNIT_STAT_gembag_Emerald, NULL); - diablo2::d2_common::set_stat(gemBag, diablo2::unit_stats_t::UNIT_STAT_gembag_Emerald, stat + 3, 0); - } - else if (normCode == "gfw") { - int stat = diablo2::d2_common::get_stat(gemBag, diablo2::unit_stats_t::UNIT_STAT_gembag_Diamond, NULL); - diablo2::d2_common::set_stat(gemBag, diablo2::unit_stats_t::UNIT_STAT_gembag_Diamond, stat + 3, 0); - } - else if (normCode == "skf") { - int stat = diablo2::d2_common::get_stat(gemBag, diablo2::unit_stats_t::UNIT_STAT_gembag_Skull, NULL); - diablo2::d2_common::set_stat(gemBag, diablo2::unit_stats_t::UNIT_STAT_gembag_Skull, stat + 3, 0); - } - - - if (normCode == "gsv") { - int stat = diablo2::d2_common::get_stat(gemBag, diablo2::unit_stats_t::UNIT_STAT_gembag_Amethyst, NULL); - diablo2::d2_common::set_stat(gemBag, diablo2::unit_stats_t::UNIT_STAT_gembag_Amethyst, stat + 9, 0); - } - else if (normCode == "gsy") { - int stat = diablo2::d2_common::get_stat(gemBag, diablo2::unit_stats_t::UNIT_STAT_gembag_Topaz, NULL); - diablo2::d2_common::set_stat(gemBag, diablo2::unit_stats_t::UNIT_STAT_gembag_Topaz, stat + 9, 0); - } - else if (normCode == "gsb") { - int stat = diablo2::d2_common::get_stat(gemBag, diablo2::unit_stats_t::UNIT_STAT_gembag_Sapphire, NULL); - diablo2::d2_common::set_stat(gemBag, diablo2::unit_stats_t::UNIT_STAT_gembag_Sapphire, stat + 9, 0); - } - else if (normCode == "gsr") { - int stat = diablo2::d2_common::get_stat(gemBag, diablo2::unit_stats_t::UNIT_STAT_gembag_Ruby, NULL); - diablo2::d2_common::set_stat(gemBag, diablo2::unit_stats_t::UNIT_STAT_gembag_Ruby, stat + 9, 0); - } - else if (normCode == "gsg") { - int stat = diablo2::d2_common::get_stat(gemBag, diablo2::unit_stats_t::UNIT_STAT_gembag_Emerald, NULL); - diablo2::d2_common::set_stat(gemBag, diablo2::unit_stats_t::UNIT_STAT_gembag_Emerald, stat + 9, 0); - } - else if (normCode == "gsw") { - int stat = diablo2::d2_common::get_stat(gemBag, diablo2::unit_stats_t::UNIT_STAT_gembag_Diamond, NULL); - diablo2::d2_common::set_stat(gemBag, diablo2::unit_stats_t::UNIT_STAT_gembag_Diamond, stat + 9, 0); - } - else if (normCode == "sku") { - int stat = diablo2::d2_common::get_stat(gemBag, diablo2::unit_stats_t::UNIT_STAT_gembag_Skull, NULL); - diablo2::d2_common::set_stat(gemBag, diablo2::unit_stats_t::UNIT_STAT_gembag_Skull, stat + 9, 0); - } - - - if (normCode == "gzv") { - int stat = diablo2::d2_common::get_stat(gemBag, diablo2::unit_stats_t::UNIT_STAT_gembag_Amethyst, NULL); - diablo2::d2_common::set_stat(gemBag, diablo2::unit_stats_t::UNIT_STAT_gembag_Amethyst, stat + 27, 0); - } - else if (normCode == "gly") { - int stat = diablo2::d2_common::get_stat(gemBag, diablo2::unit_stats_t::UNIT_STAT_gembag_Topaz, NULL); - diablo2::d2_common::set_stat(gemBag, diablo2::unit_stats_t::UNIT_STAT_gembag_Topaz, stat + 27, 0); - } - else if (normCode == "glb") { - int stat = diablo2::d2_common::get_stat(gemBag, diablo2::unit_stats_t::UNIT_STAT_gembag_Sapphire, NULL); - diablo2::d2_common::set_stat(gemBag, diablo2::unit_stats_t::UNIT_STAT_gembag_Sapphire, stat + 27, 0); - } - else if (normCode == "glr") { - int stat = diablo2::d2_common::get_stat(gemBag, diablo2::unit_stats_t::UNIT_STAT_gembag_Ruby, NULL); - diablo2::d2_common::set_stat(gemBag, diablo2::unit_stats_t::UNIT_STAT_gembag_Ruby, stat + 27, 0); - } - else if (normCode == "glg") { - int stat = diablo2::d2_common::get_stat(gemBag, diablo2::unit_stats_t::UNIT_STAT_gembag_Emerald, NULL); - diablo2::d2_common::set_stat(gemBag, diablo2::unit_stats_t::UNIT_STAT_gembag_Emerald, stat + 27, 0); - } - else if (normCode == "glw") { - int stat = diablo2::d2_common::get_stat(gemBag, diablo2::unit_stats_t::UNIT_STAT_gembag_Diamond, NULL); - diablo2::d2_common::set_stat(gemBag, diablo2::unit_stats_t::UNIT_STAT_gembag_Diamond, stat + 27, 0); - } - else if (normCode == "skl") { - int stat = diablo2::d2_common::get_stat(gemBag, diablo2::unit_stats_t::UNIT_STAT_gembag_Skull, NULL); - diablo2::d2_common::set_stat(gemBag, diablo2::unit_stats_t::UNIT_STAT_gembag_Skull, stat + 27, 0); - } - - - if (normCode == "gpv") { - int stat = diablo2::d2_common::get_stat(gemBag, diablo2::unit_stats_t::UNIT_STAT_gembag_Amethyst, NULL); - diablo2::d2_common::set_stat(gemBag, diablo2::unit_stats_t::UNIT_STAT_gembag_Amethyst, stat + 81, 0); - } - else if (normCode == "gpy") { - int stat = diablo2::d2_common::get_stat(gemBag, diablo2::unit_stats_t::UNIT_STAT_gembag_Topaz, NULL); - diablo2::d2_common::set_stat(gemBag, diablo2::unit_stats_t::UNIT_STAT_gembag_Topaz, stat + 81, 0); - } - else if (normCode == "gpb") { - int stat = diablo2::d2_common::get_stat(gemBag, diablo2::unit_stats_t::UNIT_STAT_gembag_Sapphire, NULL); - diablo2::d2_common::set_stat(gemBag, diablo2::unit_stats_t::UNIT_STAT_gembag_Sapphire, stat + 81, 0); - } - else if (normCode == "gpr") { - int stat = diablo2::d2_common::get_stat(gemBag, diablo2::unit_stats_t::UNIT_STAT_gembag_Ruby, NULL); - diablo2::d2_common::set_stat(gemBag, diablo2::unit_stats_t::UNIT_STAT_gembag_Ruby, stat + 81, 0); - } - else if (normCode == "gpg") { - int stat = diablo2::d2_common::get_stat(gemBag, diablo2::unit_stats_t::UNIT_STAT_gembag_Emerald, NULL); - diablo2::d2_common::set_stat(gemBag, diablo2::unit_stats_t::UNIT_STAT_gembag_Emerald, stat + 81, 0); - } - else if (normCode == "gpw") { - int stat = diablo2::d2_common::get_stat(gemBag, diablo2::unit_stats_t::UNIT_STAT_gembag_Diamond, NULL); - diablo2::d2_common::set_stat(gemBag, diablo2::unit_stats_t::UNIT_STAT_gembag_Diamond, stat + 81, 0); - } - else if (normCode == "skz") { - int stat = diablo2::d2_common::get_stat(gemBag, diablo2::unit_stats_t::UNIT_STAT_gembag_Skull, NULL); - diablo2::d2_common::set_stat(gemBag, diablo2::unit_stats_t::UNIT_STAT_gembag_Skull, stat + 81, 0); - } - - } - - } - */ } @@ -544,25 +371,24 @@ LRESULT d2_tweaks::ui::ui_manager::wnd_proc(HWND hWnd, UINT msg, WPARAM wParam, case WM_RBUTTONDOWN: { - + int32_t gemBagGuid = 0; const auto g_hoverItem = *reinterpret_cast(diablo2::d2_client::get_base() + 0x1158F4); if (g_hoverItem != nullptr) { const auto record = diablo2::d2_common::get_item_record(g_hoverItem->data_record_index); char* normCode = record->string_code; const auto player = diablo2::d2_client::get_local_player(); - - - const auto pInventory = player->inventory; + auto pInventory = player->inventory; std::vector items; - diablo2::structures::unit* gemBag{}; + diablo2::structures::unit* gemBag{}; // get the gembag item for (auto item = player->inventory->first_item; item != nullptr; item = item->item_data->pt_next_item) { const auto record = diablo2::d2_common::get_item_record(item->data_record_index); if (record->type == 101) { gemBag = item; + gemBagGuid = gemBag->guid; } } @@ -580,48 +406,801 @@ LRESULT d2_tweaks::ui::ui_manager::wnd_proc(HWND hWnd, UINT msg, WPARAM wParam, // properties.txt row number - 3 - if (strncmp(normCode, "gcv", 3) == 0) { // Use strncmp for string comparison - int32_t stat = diablo2::d2_common::get_stat(gemBag, diablo2::unit_stats_t::UNIT_STAT_gembag_Amethyst, NULL); - //MessageBoxA(0, std::to_string(stat).c_str(), "stat", 0); + if (strncmp(normCode, "gcv", 3) == 0) { + D2PropertyStrc itemProperty = {}; + itemProperty.nProperty = 382 - 3; + itemProperty.nLayer = 0; + itemProperty.nMin = 1; + itemProperty.nMax = 1; + diablo2::d2_common::add_property(gemBag, &itemProperty, 0); + diablo2::d2_client::play_sound(record->drop_sound, nullptr, 0, 0, 0); + diablo2::d2_common::inv_remove_item(pInventory, g_hoverItem); + } - stat++; + if (strncmp(normCode, "gcw", 3) == 0) { + D2PropertyStrc itemProperty = {}; + itemProperty.nProperty = 383 - 3; + itemProperty.nLayer = 0; + itemProperty.nMin = 1; + itemProperty.nMax = 1; + diablo2::d2_common::add_property(gemBag, &itemProperty, 0); + diablo2::d2_client::play_sound(record->drop_sound, nullptr, 0, 0, 0); + diablo2::d2_common::inv_remove_item(pInventory, g_hoverItem); + } + + if (strncmp(normCode, "gcg", 3) == 0) { + D2PropertyStrc itemProperty = {}; + itemProperty.nProperty = 384 - 3; + itemProperty.nLayer = 0; + itemProperty.nMin = 1; + itemProperty.nMax = 1; + diablo2::d2_common::add_property(gemBag, &itemProperty, 0); + diablo2::d2_client::play_sound(record->drop_sound, nullptr, 0, 0, 0); + diablo2::d2_common::inv_remove_item(pInventory, g_hoverItem); + } + + if (strncmp(normCode, "gcr", 3) == 0) { + D2PropertyStrc itemProperty = {}; + itemProperty.nProperty = 381 - 3; + itemProperty.nLayer = 0; + itemProperty.nMin = 1; + itemProperty.nMax = 1; + diablo2::d2_common::add_property(gemBag, &itemProperty, 0); + diablo2::d2_client::play_sound(record->drop_sound, nullptr, 0, 0, 0); + diablo2::d2_common::inv_remove_item(pInventory, g_hoverItem); + } + + if (strncmp(normCode, "gcb", 3) == 0) { + D2PropertyStrc itemProperty = {}; + itemProperty.nProperty = 385 - 3; + itemProperty.nLayer = 0; + itemProperty.nMin = 1; + itemProperty.nMax = 1; + diablo2::d2_common::add_property(gemBag, &itemProperty, 0); + diablo2::d2_client::play_sound(record->drop_sound, nullptr, 0, 0, 0); + diablo2::d2_common::inv_remove_item(pInventory, g_hoverItem); + } + + if (strncmp(normCode, "skc", 3) == 0) { + D2PropertyStrc itemProperty = {}; + itemProperty.nProperty = 387 - 3; + itemProperty.nLayer = 0; + itemProperty.nMin = 1; + itemProperty.nMax = 1; + diablo2::d2_common::add_property(gemBag, &itemProperty, 0); + diablo2::d2_client::play_sound(record->drop_sound, nullptr, 0, 0, 0); + diablo2::d2_common::inv_remove_item(pInventory, g_hoverItem); + } + + if (strncmp(normCode, "gcy", 3) == 0) { + D2PropertyStrc itemProperty = {}; + itemProperty.nProperty = 386 - 3; + itemProperty.nLayer = 0; + itemProperty.nMin = 1; + itemProperty.nMax = 1; + diablo2::d2_common::add_property(gemBag, &itemProperty, 0); + diablo2::d2_client::play_sound(record->drop_sound, nullptr, 0, 0, 0); + diablo2::d2_common::inv_remove_item(pInventory, g_hoverItem); + } + + if (strncmp(normCode, "gfv", 3) == 0) { + D2PropertyStrc itemProperty = {}; + itemProperty.nProperty = 382 - 3; + itemProperty.nLayer = 0; + itemProperty.nMin = 3; + itemProperty.nMax = 3; + diablo2::d2_common::add_property(gemBag, &itemProperty, 0); + diablo2::d2_client::play_sound(record->drop_sound, nullptr, 0, 0, 0); + diablo2::d2_common::inv_remove_item(pInventory, g_hoverItem); + } + + if (strncmp(normCode, "gfw", 3) == 0) { + D2PropertyStrc itemProperty = {}; + itemProperty.nProperty = 383 - 3; + itemProperty.nLayer = 0; + itemProperty.nMin = 3; + itemProperty.nMax = 3; + diablo2::d2_common::add_property(gemBag, &itemProperty, 0); + diablo2::d2_client::play_sound(record->drop_sound, nullptr, 0, 0, 0); + diablo2::d2_common::inv_remove_item(pInventory, g_hoverItem); + } + + if (strncmp(normCode, "gfg", 3) == 0) { + D2PropertyStrc itemProperty = {}; + itemProperty.nProperty = 384 - 3; + itemProperty.nLayer = 0; + itemProperty.nMin = 3; + itemProperty.nMax = 3; + diablo2::d2_common::add_property(gemBag, &itemProperty, 0); + diablo2::d2_client::play_sound(record->drop_sound, nullptr, 0, 0, 0); + diablo2::d2_common::inv_remove_item(pInventory, g_hoverItem); + } + + if (strncmp(normCode, "gfr", 3) == 0) { + D2PropertyStrc itemProperty = {}; + itemProperty.nProperty = 381 - 3; + itemProperty.nLayer = 0; + itemProperty.nMin = 3; + itemProperty.nMax = 3; + diablo2::d2_common::add_property(gemBag, &itemProperty, 0); + diablo2::d2_client::play_sound(record->drop_sound, nullptr, 0, 0, 0); + diablo2::d2_common::inv_remove_item(pInventory, g_hoverItem); + } + + if (strncmp(normCode, "gfb", 3) == 0) { + D2PropertyStrc itemProperty = {}; + itemProperty.nProperty = 385 - 3; + itemProperty.nLayer = 0; + itemProperty.nMin = 3; + itemProperty.nMax = 3; + diablo2::d2_common::add_property(gemBag, &itemProperty, 0); + diablo2::d2_client::play_sound(record->drop_sound, nullptr, 0, 0, 0); + diablo2::d2_common::inv_remove_item(pInventory, g_hoverItem); + } + + if (strncmp(normCode, "skf", 3) == 0) { + D2PropertyStrc itemProperty = {}; + itemProperty.nProperty = 387 - 3; + itemProperty.nLayer = 0; + itemProperty.nMin = 3; + itemProperty.nMax = 3; + diablo2::d2_common::add_property(gemBag, &itemProperty, 0); + diablo2::d2_client::play_sound(record->drop_sound, nullptr, 0, 0, 0); + diablo2::d2_common::inv_remove_item(pInventory, g_hoverItem); + } + + if (strncmp(normCode, "gfy", 3) == 0) { + D2PropertyStrc itemProperty = {}; + itemProperty.nProperty = 386 - 3; + itemProperty.nLayer = 0; + itemProperty.nMin = 3; + itemProperty.nMax = 3; + diablo2::d2_common::add_property(gemBag, &itemProperty, 0); + diablo2::d2_client::play_sound(record->drop_sound, nullptr, 0, 0, 0); + diablo2::d2_common::inv_remove_item(pInventory, g_hoverItem); + } + + if (strncmp(normCode, "gsv", 3) == 0) { + D2PropertyStrc itemProperty = {}; + itemProperty.nProperty = 382 - 3; + itemProperty.nLayer = 0; + itemProperty.nMin = 9; + itemProperty.nMax = 9; + diablo2::d2_common::add_property(gemBag, &itemProperty, 0); + diablo2::d2_client::play_sound(record->drop_sound, nullptr, 0, 0, 0); + diablo2::d2_common::inv_remove_item(pInventory, g_hoverItem); + } + + if (strncmp(normCode, "gsw", 3) == 0) { + D2PropertyStrc itemProperty = {}; + itemProperty.nProperty = 383 - 3; + itemProperty.nLayer = 0; + itemProperty.nMin = 9; + itemProperty.nMax = 9; + diablo2::d2_common::add_property(gemBag, &itemProperty, 0); + diablo2::d2_client::play_sound(record->drop_sound, nullptr, 0, 0, 0); + diablo2::d2_common::inv_remove_item(pInventory, g_hoverItem); + } + + if (strncmp(normCode, "gsg", 3) == 0) { + D2PropertyStrc itemProperty = {}; + itemProperty.nProperty = 384 - 3; + itemProperty.nLayer = 0; + itemProperty.nMin = 9; + itemProperty.nMax = 9; + diablo2::d2_common::add_property(gemBag, &itemProperty, 0); + diablo2::d2_client::play_sound(record->drop_sound, nullptr, 0, 0, 0); + diablo2::d2_common::inv_remove_item(pInventory, g_hoverItem); + } + + if (strncmp(normCode, "gsr", 3) == 0) { + D2PropertyStrc itemProperty = {}; + itemProperty.nProperty = 381 - 3; + itemProperty.nLayer = 0; + itemProperty.nMin = 9; + itemProperty.nMax = 9; + diablo2::d2_common::add_property(gemBag, &itemProperty, 0); + diablo2::d2_client::play_sound(record->drop_sound, nullptr, 0, 0, 0); + diablo2::d2_common::inv_remove_item(pInventory, g_hoverItem); + } + + if (strncmp(normCode, "gsb", 3) == 0) { + D2PropertyStrc itemProperty = {}; + itemProperty.nProperty = 385 - 3; + itemProperty.nLayer = 0; + itemProperty.nMin = 9; + itemProperty.nMax = 9; + diablo2::d2_common::add_property(gemBag, &itemProperty, 0); + diablo2::d2_client::play_sound(record->drop_sound, nullptr, 0, 0, 0); + diablo2::d2_common::inv_remove_item(pInventory, g_hoverItem); + } + + if (strncmp(normCode, "sku", 3) == 0) { + D2PropertyStrc itemProperty = {}; + itemProperty.nProperty = 387 - 3; + itemProperty.nLayer = 0; + itemProperty.nMin = 9; + itemProperty.nMax = 9; + diablo2::d2_common::add_property(gemBag, &itemProperty, 0); + diablo2::d2_client::play_sound(record->drop_sound, nullptr, 0, 0, 0); + diablo2::d2_common::inv_remove_item(pInventory, g_hoverItem); + } + + if (strncmp(normCode, "gsy", 3) == 0) { + D2PropertyStrc itemProperty = {}; + itemProperty.nProperty = 386 - 3; + itemProperty.nLayer = 0; + itemProperty.nMin = 9; + itemProperty.nMax = 9; + diablo2::d2_common::add_property(gemBag, &itemProperty, 0); + diablo2::d2_client::play_sound(record->drop_sound, nullptr, 0, 0, 0); + diablo2::d2_common::inv_remove_item(pInventory, g_hoverItem); + } + + if (strncmp(normCode, "gzv", 3) == 0) { + D2PropertyStrc itemProperty = {}; + itemProperty.nProperty = 382 - 3; + itemProperty.nLayer = 0; + itemProperty.nMin = 27; + itemProperty.nMax = 27; + diablo2::d2_common::add_property(gemBag, &itemProperty, 0); + diablo2::d2_client::play_sound(record->drop_sound, nullptr, 0, 0, 0); + diablo2::d2_common::inv_remove_item(pInventory, g_hoverItem); + } + + if (strncmp(normCode, "glw", 3) == 0) { + D2PropertyStrc itemProperty = {}; + itemProperty.nProperty = 383 - 3; + itemProperty.nLayer = 0; + itemProperty.nMin = 27; + itemProperty.nMax = 27; + diablo2::d2_common::add_property(gemBag, &itemProperty, 0); + diablo2::d2_client::play_sound(record->drop_sound, nullptr, 0, 0, 0); + diablo2::d2_common::inv_remove_item(pInventory, g_hoverItem); + } + + if (strncmp(normCode, "glg", 3) == 0) { + D2PropertyStrc itemProperty = {}; + itemProperty.nProperty = 384 - 3; + itemProperty.nLayer = 0; + itemProperty.nMin = 27; + itemProperty.nMax = 27; + diablo2::d2_common::add_property(gemBag, &itemProperty, 0); + diablo2::d2_client::play_sound(record->drop_sound, nullptr, 0, 0, 0); + diablo2::d2_common::inv_remove_item(pInventory, g_hoverItem); + } + + if (strncmp(normCode, "glr", 3) == 0) { + D2PropertyStrc itemProperty = {}; + itemProperty.nProperty = 381 - 3; + itemProperty.nLayer = 0; + itemProperty.nMin = 27; + itemProperty.nMax = 27; + diablo2::d2_common::add_property(gemBag, &itemProperty, 0); + diablo2::d2_client::play_sound(record->drop_sound, nullptr, 0, 0, 0); + diablo2::d2_common::inv_remove_item(pInventory, g_hoverItem); + } + + if (strncmp(normCode, "glb", 3) == 0) { + D2PropertyStrc itemProperty = {}; + itemProperty.nProperty = 385 - 3; + itemProperty.nLayer = 0; + itemProperty.nMin = 27; + itemProperty.nMax = 27; + diablo2::d2_common::add_property(gemBag, &itemProperty, 0); + diablo2::d2_client::play_sound(record->drop_sound, nullptr, 0, 0, 0); + diablo2::d2_common::inv_remove_item(pInventory, g_hoverItem); + } + + if (strncmp(normCode, "skl", 3) == 0) { + D2PropertyStrc itemProperty = {}; + itemProperty.nProperty = 387 - 3; + itemProperty.nLayer = 0; + itemProperty.nMin = 27; + itemProperty.nMax = 27; + diablo2::d2_common::add_property(gemBag, &itemProperty, 0); + diablo2::d2_client::play_sound(record->drop_sound, nullptr, 0, 0, 0); + diablo2::d2_common::inv_remove_item(pInventory, g_hoverItem); + } + + if (strncmp(normCode, "gly", 3) == 0) { + D2PropertyStrc itemProperty = {}; + itemProperty.nProperty = 386 - 3; + itemProperty.nLayer = 0; + itemProperty.nMin = 27; + itemProperty.nMax = 27; + diablo2::d2_common::add_property(gemBag, &itemProperty, 0); + diablo2::d2_client::play_sound(record->drop_sound, nullptr, 0, 0, 0); + diablo2::d2_common::inv_remove_item(pInventory, g_hoverItem); + } + + if (strncmp(normCode, "gpv", 3) == 0) { + D2PropertyStrc itemProperty = {}; + itemProperty.nProperty = 382 - 3; + itemProperty.nLayer = 0; + itemProperty.nMin = 81; + itemProperty.nMax = 81; + diablo2::d2_common::add_property(gemBag, &itemProperty, 0); + diablo2::d2_client::play_sound(record->drop_sound, nullptr, 0, 0, 0); + diablo2::d2_common::inv_remove_item(pInventory, g_hoverItem); + } + + if (strncmp(normCode, "gpw", 3) == 0) { + D2PropertyStrc itemProperty = {}; + itemProperty.nProperty = 383 - 3; + itemProperty.nLayer = 0; + itemProperty.nMin = 81; + itemProperty.nMax = 81; + diablo2::d2_common::add_property(gemBag, &itemProperty, 0); + diablo2::d2_client::play_sound(record->drop_sound, nullptr, 0, 0, 0); + diablo2::d2_common::inv_remove_item(pInventory, g_hoverItem); + } + + if (strncmp(normCode, "gpg", 3) == 0) { + D2PropertyStrc itemProperty = {}; + itemProperty.nProperty = 384 - 3; + itemProperty.nLayer = 0; + itemProperty.nMin = 81; + itemProperty.nMax = 81; + diablo2::d2_common::add_property(gemBag, &itemProperty, 0); + diablo2::d2_client::play_sound(record->drop_sound, nullptr, 0, 0, 0); + diablo2::d2_common::inv_remove_item(pInventory, g_hoverItem); + } + + if (strncmp(normCode, "gpr", 3) == 0) { + D2PropertyStrc itemProperty = {}; + itemProperty.nProperty = 381 - 3; + itemProperty.nLayer = 0; + itemProperty.nMin = 81; + itemProperty.nMax = 81; + diablo2::d2_common::add_property(gemBag, &itemProperty, 0); + diablo2::d2_client::play_sound(record->drop_sound, nullptr, 0, 0, 0); + diablo2::d2_common::inv_remove_item(pInventory, g_hoverItem); + } + + if (strncmp(normCode, "gpb", 3) == 0) { + D2PropertyStrc itemProperty = {}; + itemProperty.nProperty = 385 - 3; + itemProperty.nLayer = 0; + itemProperty.nMin = 81; + itemProperty.nMax = 81; + diablo2::d2_common::add_property(gemBag, &itemProperty, 0); + diablo2::d2_client::play_sound(record->drop_sound, nullptr, 0, 0, 0); + diablo2::d2_common::inv_remove_item(pInventory, g_hoverItem); + } + + if (strncmp(normCode, "skz", 3) == 0) { + D2PropertyStrc itemProperty = {}; + itemProperty.nProperty = 387 - 3; + itemProperty.nLayer = 0; + itemProperty.nMin = 81; + itemProperty.nMax = 81; + diablo2::d2_common::add_property(gemBag, &itemProperty, 0); + diablo2::d2_client::play_sound(record->drop_sound, nullptr, 0, 0, 0); + diablo2::d2_common::inv_remove_item(pInventory, g_hoverItem); + } + + if (strncmp(normCode, "gpy", 3) == 0) { + D2PropertyStrc itemProperty = {}; + itemProperty.nProperty = 386 - 3; + itemProperty.nLayer = 0; + itemProperty.nMin = 81; + itemProperty.nMax = 81; + diablo2::d2_common::add_property(gemBag, &itemProperty, 0); + diablo2::d2_client::play_sound(record->drop_sound, nullptr, 0, 0, 0); + diablo2::d2_common::inv_remove_item(pInventory, g_hoverItem); + } + // Runes + if (strncmp(normCode, "r01", 3) == 0) { D2PropertyStrc itemProperty = {}; - - itemProperty.nProperty = 382 - 3; + itemProperty.nProperty = 385; itemProperty.nLayer = 0; itemProperty.nMin = 1; itemProperty.nMax = 1; - - - //diablo2::d2_common::set_stat(gemBag, diablo2::unit_stats_t::UNIT_STAT_gembag_Amethyst, stat, 0); diablo2::d2_common::add_property(gemBag, &itemProperty, 0); - - + diablo2::d2_client::play_sound(record->drop_sound, nullptr, 0, 0, 0); diablo2::d2_common::inv_remove_item(pInventory, g_hoverItem); - - - - int32_t stat1 = diablo2::d2_common::get_stat(gemBag, diablo2::unit_stats_t::UNIT_STAT_gembag_Amethyst, NULL); - //MessageBoxA(0, std::to_string(stat1).c_str(), "stat", 0); + diablo2::d2_common::inv_update_item(player->inventory, g_hoverItem, false); } + if (strncmp(normCode, "r02", 3) == 0) { + D2PropertyStrc itemProperty = {}; + itemProperty.nProperty = 385; + itemProperty.nLayer = 0; + itemProperty.nMin = 3; + itemProperty.nMax = 3; + diablo2::d2_common::add_property(gemBag, &itemProperty, 0); + diablo2::d2_client::play_sound(record->drop_sound, nullptr, 0, 0, 0); + diablo2::d2_common::inv_remove_item(pInventory, g_hoverItem); + diablo2::d2_common::inv_update_item(player->inventory, g_hoverItem, false); + } + if (strncmp(normCode, "r03", 3) == 0) { + D2PropertyStrc itemProperty = {}; + itemProperty.nProperty = 385; + itemProperty.nLayer = 0; + itemProperty.nMin = 9; + itemProperty.nMax = 9; + diablo2::d2_common::add_property(gemBag, &itemProperty, 0); + diablo2::d2_client::play_sound(record->drop_sound, nullptr, 0, 0, 0); + diablo2::d2_common::inv_remove_item(pInventory, g_hoverItem); + diablo2::d2_common::inv_update_item(player->inventory, g_hoverItem, false); + } + if (strncmp(normCode, "r04", 3) == 0) { + D2PropertyStrc itemProperty = {}; + itemProperty.nProperty = 385; + itemProperty.nLayer = 0; + itemProperty.nMin = 27; + itemProperty.nMax = 27; + diablo2::d2_common::add_property(gemBag, &itemProperty, 0); + diablo2::d2_client::play_sound(record->drop_sound, nullptr, 0, 0, 0); + diablo2::d2_common::inv_remove_item(pInventory, g_hoverItem); + diablo2::d2_common::inv_update_item(player->inventory, g_hoverItem, false); + } - // check to see if gembag is actually right - //const auto bagrecord = diablo2::d2_common::get_item_record(gemBag->data_record_index); - //char* bagcode = bagrecord->string_code; - //MessageBoxA(0, bagcode, "bag code", 0); + if (strncmp(normCode, "r05", 3) == 0) { + D2PropertyStrc itemProperty = {}; + itemProperty.nProperty = 385; + itemProperty.nLayer = 0; + itemProperty.nMin = 81; + itemProperty.nMax = 81; + diablo2::d2_common::add_property(gemBag, &itemProperty, 0); + diablo2::d2_client::play_sound(record->drop_sound, nullptr, 0, 0, 0); + diablo2::d2_common::inv_remove_item(pInventory, g_hoverItem); + diablo2::d2_common::inv_update_item(player->inventory, g_hoverItem, false); + } + if (strncmp(normCode, "r06", 3) == 0) { + D2PropertyStrc itemProperty = {}; + itemProperty.nProperty = 385; + itemProperty.nLayer = 0; + itemProperty.nMin = 243; + itemProperty.nMax = 243; + diablo2::d2_common::add_property(gemBag, &itemProperty, 0); + diablo2::d2_client::play_sound(record->drop_sound, nullptr, 0, 0, 0); + diablo2::d2_common::inv_remove_item(pInventory, g_hoverItem); + diablo2::d2_common::inv_update_item(player->inventory, g_hoverItem, false); + } - //if (normCode == "gcv") { - // int stat = diablo2::d2_common::get_stat(gemBag, diablo2::unit_stats_t::UNIT_STAT_gembag_Amethyst, NULL); - // diablo2::d2_common::set_stat(gemBag, diablo2::unit_stats_t::UNIT_STAT_gembag_Amethyst, stat + 1, 0); - // MessageBoxA(0, normCode, "normCode", 0); - //} + if (strncmp(normCode, "r07", 3) == 0) { + D2PropertyStrc itemProperty = {}; + itemProperty.nProperty = 385; + itemProperty.nLayer = 0; + itemProperty.nMin = 729; + itemProperty.nMax = 729; + diablo2::d2_common::add_property(gemBag, &itemProperty, 0); + diablo2::d2_client::play_sound(record->drop_sound, nullptr, 0, 0, 0); + diablo2::d2_common::inv_remove_item(pInventory, g_hoverItem); + diablo2::d2_common::inv_update_item(player->inventory, g_hoverItem, false); + } + if (strncmp(normCode, "r08", 3) == 0) { + D2PropertyStrc itemProperty = {}; + itemProperty.nProperty = 385; + itemProperty.nLayer = 0; + itemProperty.nMin = 2187; + itemProperty.nMax = 2187; + diablo2::d2_common::add_property(gemBag, &itemProperty, 0); + diablo2::d2_client::play_sound(record->drop_sound, nullptr, 0, 0, 0); + diablo2::d2_common::inv_remove_item(pInventory, g_hoverItem); + diablo2::d2_common::inv_update_item(player->inventory, g_hoverItem, false); + } + + if (strncmp(normCode, "r09", 3) == 0) { + D2PropertyStrc itemProperty = {}; + itemProperty.nProperty = 385; + itemProperty.nLayer = 0; + itemProperty.nMin = 6561; + itemProperty.nMax = 6561; + diablo2::d2_common::add_property(gemBag, &itemProperty, 0); + diablo2::d2_client::play_sound(record->drop_sound, nullptr, 0, 0, 0); + diablo2::d2_common::inv_remove_item(pInventory, g_hoverItem); + diablo2::d2_common::inv_update_item(player->inventory, g_hoverItem, false); + } + + if (strncmp(normCode, "r10", 3) == 0) { + D2PropertyStrc itemProperty = {}; + itemProperty.nProperty = 385; + itemProperty.nLayer = 0; + itemProperty.nMin = 19683; + itemProperty.nMax = 19683; + diablo2::d2_common::add_property(gemBag, &itemProperty, 0); + diablo2::d2_client::play_sound(record->drop_sound, nullptr, 0, 0, 0); + diablo2::d2_common::inv_remove_item(pInventory, g_hoverItem); + diablo2::d2_common::inv_update_item(player->inventory, g_hoverItem, false); + } + + if (strncmp(normCode, "r11", 3) == 0) { + D2PropertyStrc itemProperty = {}; + itemProperty.nProperty = 385; + itemProperty.nLayer = 0; + itemProperty.nMin = 59049; + itemProperty.nMax = 59049; + diablo2::d2_common::add_property(gemBag, &itemProperty, 0); + diablo2::d2_client::play_sound(record->drop_sound, nullptr, 0, 0, 0); + diablo2::d2_common::inv_remove_item(pInventory, g_hoverItem); + diablo2::d2_common::inv_update_item(player->inventory, g_hoverItem, false); + } + + if (strncmp(normCode, "r12", 3) == 0) { + D2PropertyStrc itemProperty = {}; + itemProperty.nProperty = 386; + itemProperty.nLayer = 0; + itemProperty.nMin = 1; + itemProperty.nMax = 1; + diablo2::d2_common::add_property(gemBag, &itemProperty, 0); + diablo2::d2_client::play_sound(record->drop_sound, nullptr, 0, 0, 0); + diablo2::d2_common::inv_remove_item(pInventory, g_hoverItem); + diablo2::d2_common::inv_update_item(player->inventory, g_hoverItem, false); + } + + if (strncmp(normCode, "r13", 3) == 0) { + D2PropertyStrc itemProperty = {}; + itemProperty.nProperty = 386; + itemProperty.nLayer = 0; + itemProperty.nMin = 3; + itemProperty.nMax = 3; + diablo2::d2_common::add_property(gemBag, &itemProperty, 0); + diablo2::d2_client::play_sound(record->drop_sound, nullptr, 0, 0, 0); + diablo2::d2_common::inv_remove_item(pInventory, g_hoverItem); + diablo2::d2_common::inv_update_item(player->inventory, g_hoverItem, false); + } + + if (strncmp(normCode, "r14", 3) == 0) { + D2PropertyStrc itemProperty = {}; + itemProperty.nProperty = 386; + itemProperty.nLayer = 0; + itemProperty.nMin = 9; + itemProperty.nMax = 9; + diablo2::d2_common::add_property(gemBag, &itemProperty, 0); + diablo2::d2_client::play_sound(record->drop_sound, nullptr, 0, 0, 0); + diablo2::d2_common::inv_remove_item(pInventory, g_hoverItem); + diablo2::d2_common::inv_update_item(player->inventory, g_hoverItem, false); + } + + if (strncmp(normCode, "r15", 3) == 0) { + D2PropertyStrc itemProperty = {}; + itemProperty.nProperty = 386; + itemProperty.nLayer = 0; + itemProperty.nMin = 27; + itemProperty.nMax = 27; + diablo2::d2_common::add_property(gemBag, &itemProperty, 0); + diablo2::d2_client::play_sound(record->drop_sound, nullptr, 0, 0, 0); + diablo2::d2_common::inv_remove_item(pInventory, g_hoverItem); + diablo2::d2_common::inv_update_item(player->inventory, g_hoverItem, false); + } + + if (strncmp(normCode, "r16", 3) == 0) { + D2PropertyStrc itemProperty = {}; + itemProperty.nProperty = 386; + itemProperty.nLayer = 0; + itemProperty.nMin = 81; + itemProperty.nMax = 81; + diablo2::d2_common::add_property(gemBag, &itemProperty, 0); + diablo2::d2_client::play_sound(record->drop_sound, nullptr, 0, 0, 0); + diablo2::d2_common::inv_remove_item(pInventory, g_hoverItem); + diablo2::d2_common::inv_update_item(player->inventory, g_hoverItem, false); + } + + if (strncmp(normCode, "r17", 3) == 0) { + D2PropertyStrc itemProperty = {}; + itemProperty.nProperty = 386; + itemProperty.nLayer = 0; + itemProperty.nMin = 243; + itemProperty.nMax = 243; + diablo2::d2_common::add_property(gemBag, &itemProperty, 0); + diablo2::d2_client::play_sound(record->drop_sound, nullptr, 0, 0, 0); + diablo2::d2_common::inv_remove_item(pInventory, g_hoverItem); + diablo2::d2_common::inv_update_item(player->inventory, g_hoverItem, false); + } + + if (strncmp(normCode, "r18", 3) == 0) { + D2PropertyStrc itemProperty = {}; + itemProperty.nProperty = 386; + itemProperty.nLayer = 0; + itemProperty.nMin = 729; + itemProperty.nMax = 729; + diablo2::d2_common::add_property(gemBag, &itemProperty, 0); + diablo2::d2_client::play_sound(record->drop_sound, nullptr, 0, 0, 0); + diablo2::d2_common::inv_remove_item(pInventory, g_hoverItem); + diablo2::d2_common::inv_update_item(player->inventory, g_hoverItem, false); + } + + if (strncmp(normCode, "r19", 3) == 0) { + D2PropertyStrc itemProperty = {}; + itemProperty.nProperty = 386; + itemProperty.nLayer = 0; + itemProperty.nMin = 2187; + itemProperty.nMax = 2187; + diablo2::d2_common::add_property(gemBag, &itemProperty, 0); + diablo2::d2_client::play_sound(record->drop_sound, nullptr, 0, 0, 0); + diablo2::d2_common::inv_remove_item(pInventory, g_hoverItem); + diablo2::d2_common::inv_update_item(player->inventory, g_hoverItem, false); + } + + if (strncmp(normCode, "r20", 3) == 0) { + D2PropertyStrc itemProperty = {}; + itemProperty.nProperty = 386; + itemProperty.nLayer = 0; + itemProperty.nMin = 6561; + itemProperty.nMax = 6561; + diablo2::d2_common::add_property(gemBag, &itemProperty, 0); + diablo2::d2_client::play_sound(record->drop_sound, nullptr, 0, 0, 0); + diablo2::d2_common::inv_remove_item(pInventory, g_hoverItem); + diablo2::d2_common::inv_update_item(player->inventory, g_hoverItem, false); + } + + if (strncmp(normCode, "r21", 3) == 0) { + D2PropertyStrc itemProperty = {}; + itemProperty.nProperty = 386; + itemProperty.nLayer = 0; + itemProperty.nMin = 19683; + itemProperty.nMax = 19683; + diablo2::d2_common::add_property(gemBag, &itemProperty, 0); + diablo2::d2_client::play_sound(record->drop_sound, nullptr, 0, 0, 0); + diablo2::d2_common::inv_remove_item(pInventory, g_hoverItem); + diablo2::d2_common::inv_update_item(player->inventory, g_hoverItem, false); + } + + if (strncmp(normCode, "r22", 3) == 0) { + D2PropertyStrc itemProperty = {}; + itemProperty.nProperty = 386; + itemProperty.nLayer = 0; + itemProperty.nMin = 59049; + itemProperty.nMax = 59049; + diablo2::d2_common::add_property(gemBag, &itemProperty, 0); + diablo2::d2_client::play_sound(record->drop_sound, nullptr, 0, 0, 0); + diablo2::d2_common::inv_remove_item(pInventory, g_hoverItem); + diablo2::d2_common::inv_update_item(player->inventory, g_hoverItem, false); + } + + if (strncmp(normCode, "r23", 3) == 0) { + D2PropertyStrc itemProperty = {}; + itemProperty.nProperty = 387; + itemProperty.nLayer = 0; + itemProperty.nMin = 1; + itemProperty.nMax = 1; + diablo2::d2_common::add_property(gemBag, &itemProperty, 0); + diablo2::d2_client::play_sound(record->drop_sound, nullptr, 0, 0, 0); + diablo2::d2_common::inv_remove_item(pInventory, g_hoverItem); + diablo2::d2_common::inv_update_item(player->inventory, g_hoverItem, false); + } + + if (strncmp(normCode, "r24", 3) == 0) { + D2PropertyStrc itemProperty = {}; + itemProperty.nProperty = 387; + itemProperty.nLayer = 0; + itemProperty.nMin = 4; + itemProperty.nMax = 4; + diablo2::d2_common::add_property(gemBag, &itemProperty, 0); + diablo2::d2_client::play_sound(record->drop_sound, nullptr, 0, 0, 0); + diablo2::d2_common::inv_remove_item(pInventory, g_hoverItem); + diablo2::d2_common::inv_update_item(player->inventory, g_hoverItem, false); + } + + if (strncmp(normCode, "r25", 3) == 0) { + D2PropertyStrc itemProperty = {}; + itemProperty.nProperty = 387; + itemProperty.nLayer = 0; + itemProperty.nMin = 8; + itemProperty.nMax = 8; + diablo2::d2_common::add_property(gemBag, &itemProperty, 0); + diablo2::d2_client::play_sound(record->drop_sound, nullptr, 0, 0, 0); + diablo2::d2_common::inv_remove_item(pInventory, g_hoverItem); + diablo2::d2_common::inv_update_item(player->inventory, g_hoverItem, false); + } + + if (strncmp(normCode, "r26", 3) == 0) { + D2PropertyStrc itemProperty = {}; + itemProperty.nProperty = 387; + itemProperty.nLayer = 0; + itemProperty.nMin = 16; + itemProperty.nMax = 16; + diablo2::d2_common::add_property(gemBag, &itemProperty, 0); + diablo2::d2_client::play_sound(record->drop_sound, nullptr, 0, 0, 0); + diablo2::d2_common::inv_remove_item(pInventory, g_hoverItem); + diablo2::d2_common::inv_update_item(player->inventory, g_hoverItem, false); + } + + if (strncmp(normCode, "r27", 3) == 0) { + D2PropertyStrc itemProperty = {}; + itemProperty.nProperty = 387; + itemProperty.nLayer = 0; + itemProperty.nMin = 32; + itemProperty.nMax = 32; + diablo2::d2_common::add_property(gemBag, &itemProperty, 0); + diablo2::d2_client::play_sound(record->drop_sound, nullptr, 0, 0, 0); + diablo2::d2_common::inv_remove_item(pInventory, g_hoverItem); + diablo2::d2_common::inv_update_item(player->inventory, g_hoverItem, false); + } + + if (strncmp(normCode, "r28", 3) == 0) { + D2PropertyStrc itemProperty = {}; + itemProperty.nProperty = 387; + itemProperty.nLayer = 0; + itemProperty.nMin = 64; + itemProperty.nMax = 64; + diablo2::d2_common::add_property(gemBag, &itemProperty, 0); + diablo2::d2_client::play_sound(record->drop_sound, nullptr, 0, 0, 0); + diablo2::d2_common::inv_remove_item(pInventory, g_hoverItem); + diablo2::d2_common::inv_update_item(player->inventory, g_hoverItem, false); + } + + if (strncmp(normCode, "r29", 3) == 0) { + D2PropertyStrc itemProperty = {}; + itemProperty.nProperty = 387; + itemProperty.nLayer = 0; + itemProperty.nMin = 128; + itemProperty.nMax = 128; + diablo2::d2_common::add_property(gemBag, &itemProperty, 0); + diablo2::d2_client::play_sound(record->drop_sound, nullptr, 0, 0, 0); + diablo2::d2_common::inv_remove_item(pInventory, g_hoverItem); + diablo2::d2_common::inv_update_item(player->inventory, g_hoverItem, false); + } + + if (strncmp(normCode, "r30", 3) == 0) { + D2PropertyStrc itemProperty = {}; + itemProperty.nProperty = 387; + itemProperty.nLayer = 0; + itemProperty.nMin = 256; + itemProperty.nMax = 256; + diablo2::d2_common::add_property(gemBag, &itemProperty, 0); + diablo2::d2_client::play_sound(record->drop_sound, nullptr, 0, 0, 0); + diablo2::d2_common::inv_remove_item(pInventory, g_hoverItem); + diablo2::d2_common::inv_update_item(player->inventory, g_hoverItem, false); + } + + if (strncmp(normCode, "r31", 3) == 0) { + D2PropertyStrc itemProperty = {}; + itemProperty.nProperty = 387; + itemProperty.nLayer = 0; + itemProperty.nMin = 512; + itemProperty.nMax = 512; + diablo2::d2_common::add_property(gemBag, &itemProperty, 0); + diablo2::d2_client::play_sound(record->drop_sound, nullptr, 0, 0, 0); + diablo2::d2_common::inv_remove_item(pInventory, g_hoverItem); + diablo2::d2_common::inv_update_item(player->inventory, g_hoverItem, false); + } + + if (strncmp(normCode, "r32", 3) == 0) { + D2PropertyStrc itemProperty = {}; + itemProperty.nProperty = 387; + itemProperty.nLayer = 0; + itemProperty.nMin = 1024; + itemProperty.nMax = 1024; + diablo2::d2_common::add_property(gemBag, &itemProperty, 0); + diablo2::d2_client::play_sound(record->drop_sound, nullptr, 0, 0, 0); + diablo2::d2_common::inv_remove_item(pInventory, g_hoverItem); + diablo2::d2_common::inv_update_item(player->inventory, g_hoverItem, false); + } + + if (strncmp(normCode, "r33", 3) == 0) { + D2PropertyStrc itemProperty = {}; + itemProperty.nProperty = 390; + itemProperty.nLayer = 0; + itemProperty.nMin = 4; + itemProperty.nMax = 4; + diablo2::d2_common::add_property(gemBag, &itemProperty, 0); + diablo2::d2_client::play_sound(record->drop_sound, nullptr, 0, 0, 0); + + + static d2_tweaks::common::item_move_cs packet; + packet.item_guid = g_hoverItem->guid; + + + + packet.bag_guid = gemBagGuid; + packet.updateBag = 1; + packet.prop = itemProperty.nProperty; + packet.val = itemProperty.nMin; + packet.target_page = 99; + diablo2::d2_client::send_to_server(&packet, sizeof packet); + + + } diff --git a/src/diablo2/d2common.cpp b/src/diablo2/d2common.cpp index b6d1078..0769f21 100644 --- a/src/diablo2/d2common.cpp +++ b/src/diablo2/d2common.cpp @@ -255,4 +255,9 @@ void diablo2::d2_common::update_trade(structures::inventory* inventory, structur void diablo2::d2_common::add_property(structures::unit* item, D2PropertyStrc* prop, int nUnused) { static wrap_func_std_import add_property(10868, get_base()); add_property(item, prop, nUnused); +} + +void diablo2::d2_common::ITEMS_SetItemFlag(structures::unit* item, uint32_t dwFlag, BOOL bSet) { + static wrap_func_std_import ITEMS_SetItemFlag(10708, get_base()); + ITEMS_SetItemFlag(item, dwFlag, bSet); } \ No newline at end of file