enforce min stack sizes for quest opcodes too

This commit is contained in:
Martin Michelsen
2023-12-17 18:15:07 -08:00
parent d64c9621af
commit af06741788
4 changed files with 16 additions and 3 deletions
+8
View File
@@ -2082,6 +2082,7 @@ void on_item_reward_request_bb(shared_ptr<Client> c, uint8_t, uint8_t, const voi
ItemData item;
item = cmd.item_data;
item.enforce_min_stack_size();
item.id = l->generate_item_id(c->lobby_client_id);
c->character()->add_item(item);
send_create_inventory_item_to_lobby(c, c->lobby_client_id, item);
@@ -2433,6 +2434,7 @@ static void on_quest_exchange_item_bb(shared_ptr<Client> c, uint8_t, uint8_t, co
// TODO: We probably should use an allow-list here to prevent the client
// from creating arbitrary items if cheat mode is disabled.
ItemData new_item = cmd.replace_item;
new_item.enforce_min_stack_size();
new_item.id = l->generate_item_id(c->lobby_client_id);
p->add_item(new_item);
send_create_inventory_item_to_lobby(c, c->lobby_client_id, new_item);
@@ -2475,6 +2477,7 @@ static void on_photon_drop_exchange_for_item_bb(shared_ptr<Client> c, uint8_t, u
// TODO: We probably should use an allow-list here to prevent the client
// from creating arbitrary items if cheat mode is disabled.
ItemData new_item = cmd.new_item;
new_item.enforce_min_stack_size();
new_item.id = l->generate_item_id(c->lobby_client_id);
p->add_item(new_item);
send_create_inventory_item_to_lobby(c, c->lobby_client_id, new_item);
@@ -2556,6 +2559,7 @@ static void on_secret_lottery_ticket_exchange_bb(shared_ptr<Client> c, uint8_t,
ItemData item = (s->secret_lottery_results.size() == 1)
? s->secret_lottery_results[0]
: s->secret_lottery_results[random_object<uint32_t>() % s->secret_lottery_results.size()];
item.enforce_min_stack_size();
item.id = l->generate_item_id(c->lobby_client_id);
p->add_item(item);
send_create_inventory_item_to_lobby(c, c->lobby_client_id, item);
@@ -2608,6 +2612,8 @@ static void on_quest_F95E_result_bb(shared_ptr<Client> c, uint8_t, uint8_t, cons
item.data2d = 100;
} else if (item.data1[0] == 0x00) {
item.data1[4] |= 0x80; // Unidentified
} else {
item.enforce_min_stack_size();
}
item.id = l->generate_item_id(0xFF);
@@ -2643,6 +2649,7 @@ static void on_quest_F95F_result_bb(shared_ptr<Client> c, uint8_t, uint8_t, cons
send_command_t(c, 0x60, 0x00, cmd_6xDB);
ItemData new_item = result.second;
new_item.enforce_min_stack_size();
new_item.id = l->generate_item_id(c->lobby_client_id);
p->add_item(new_item);
send_create_inventory_item_to_lobby(c, c->lobby_client_id, new_item);
@@ -2674,6 +2681,7 @@ static void on_momoka_item_exchange_bb(shared_ptr<Client> c, uint8_t, uint8_t, c
// TODO: We probably should use an allow-list here to prevent the client
// from creating arbitrary items if cheat mode is disabled.
ItemData new_item = cmd.replace_item;
new_item.enforce_min_stack_size();
new_item.id = l->generate_item_id(c->lobby_client_id);
p->add_item(new_item);
send_create_inventory_item_to_lobby(c, c->lobby_client_id, new_item);