|
|
|
@@ -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);
|
|
|
|
|