add from and to for item splits

as well as some minor refactoring
This commit is contained in:
Kent Rasmussen
2024-02-24 09:11:02 +09:00
parent 1e43904aee
commit d4f409e12d
+19 -15
View File
@@ -6724,23 +6724,17 @@ function init_io() {
socket.emit("lostandfound", cfound); socket.emit("lostandfound", cfound);
}); });
socket.on("split", function (data) { socket.on("split", function (data) {
var player = players[socket.id]; const player = players[socket.id];
var num = data.num; const item = player.items[data.num];
var item = player.items[data.num];
var quantity = min(max(parseInt(data.quantity) || 0, 1), (item && item.q) || 1);
if (!item) { if (!item) {
return fail_response("no_item"); return fail_response("no_item");
} }
if (!G.items[item.name].s) { if (!G.items[item.name].s) {
return fail_response("invalid"); return fail_response("invalid");
} }
quantity = min(quantity, G.items[item.name].s || 1);
if (!player.esize) { if (!player.esize) {
return fail_response("cant_space"); return fail_response("cant_space");
} }
if (item.q == quantity) {
return success_response();
}
if (item.name == "placeholder") { if (item.name == "placeholder") {
return fail_response("item_placeholder"); return fail_response("item_placeholder");
} }
@@ -6751,22 +6745,32 @@ function init_io() {
return fail_response("item_blocked"); return fail_response("item_blocked");
} }
let quantity = min(max(parseInt(data.quantity) || 0, 1), (item && item.q) || 1);
quantity = min(quantity, G.items[item.name].s);
if (quantity >= item.q) {
// They requested to split the whole stack...
return success_response({ from: data.num, to: data.num, q: quantity });
}
consume(player, data.num, quantity); consume(player, data.num, quantity);
var new_item = cache_item(item); const new_item = cache_item(item);
if (item.q) { if (item.q) {
new_item.q = quantity; new_item.q = quantity;
} }
for (var i = 0; i < player.isize; i++) { let num;
if (!player.items[i]) { for (let i = 0; i < player.isize; i++) {
player.items[i] = new_item; if (player.items[i]) {
player.citems[i] = cache_item(new_item); continue;
break;
} }
player.items[i] = new_item;
player.citems[i] = cache_item(new_item);
num = i;
break;
} }
resend(player, "reopen"); resend(player, "reopen");
success_response(); success_response({ from: data.num, to: num, q: quantity });
}); });
socket.on("sell", function (data) { socket.on("sell", function (data) {
var player = players[socket.id]; var player = players[socket.id];