mirror of
https://github.com/EQEmu/Server.git
synced 2026-06-24 01:08:21 +00:00
Fix for UF and older clients' experiment combine failure
This commit is contained in:
+15
-9
@@ -5002,11 +5002,7 @@ namespace RoF
|
||||
DECODE_LENGTH_EXACT(structs::NewCombine_Struct);
|
||||
SETUP_DIRECT_DECODE(NewCombine_Struct, structs::NewCombine_Struct);
|
||||
|
||||
int16 slot_id = RoFToServerSlot(eq->container_slot);
|
||||
if (slot_id == 4000) {
|
||||
slot_id = EQEmu::legacy::SLOT_TRADESKILL; // 1000
|
||||
}
|
||||
emu->container_slot = slot_id;
|
||||
emu->container_slot = RoFToServerSlot(eq->container_slot);
|
||||
emu->guildtribute_slot = RoFToServerSlot(eq->guildtribute_slot); // this should only return INVALID_INDEX until implemented
|
||||
|
||||
FINISH_DIRECT_DECODE();
|
||||
@@ -5581,6 +5577,10 @@ namespace RoF
|
||||
RoFSlot.Slot = server_slot - EQEmu::invslot::GUILD_TRIBUTE_BEGIN;
|
||||
}
|
||||
|
||||
else if (server_slot == EQEmu::invslot::SLOT_TRADESKILL_EXPERIMENT_COMBINE) {
|
||||
RoFSlot.Type = invtype::typeWorld;
|
||||
}
|
||||
|
||||
else if (server_slot <= EQEmu::invslot::BANK_END && server_slot >= EQEmu::invslot::BANK_BEGIN) {
|
||||
RoFSlot.Type = invtype::typeBank;
|
||||
RoFSlot.Slot = server_slot - EQEmu::invslot::BANK_BEGIN;
|
||||
@@ -5781,9 +5781,12 @@ namespace RoF
|
||||
break;
|
||||
}
|
||||
case invtype::typeWorld: {
|
||||
server_slot = EQEmu::invslot::WORLD_BEGIN; // evidently, [4,-1,-1,-1] is sent when world object is in experimental mode and combine is clicked
|
||||
if (rof_slot.Slot >= invslot::SLOT_BEGIN && rof_slot.Slot < invtype::WORLD_SIZE) {
|
||||
server_slot += rof_slot.Slot;
|
||||
server_slot = EQEmu::invslot::WORLD_BEGIN + rof_slot.Slot;
|
||||
}
|
||||
|
||||
else if (rof_slot.Slot == invslot::SLOT_INVALID) {
|
||||
server_slot = EQEmu::invslot::SLOT_TRADESKILL_EXPERIMENT_COMBINE;
|
||||
}
|
||||
|
||||
break;
|
||||
@@ -5950,9 +5953,12 @@ namespace RoF
|
||||
break;
|
||||
}
|
||||
case invtype::typeWorld: {
|
||||
server_slot = EQEmu::invslot::WORLD_BEGIN; // evidently, [4,-1,-1,-1] is sent when world object is in experimental mode and combine is clicked
|
||||
if (rof_slot.Slot >= invslot::SLOT_BEGIN && rof_slot.Slot < invtype::WORLD_SIZE) {
|
||||
server_slot += rof_slot.Slot;
|
||||
server_slot = EQEmu::invslot::WORLD_BEGIN + rof_slot.Slot;
|
||||
}
|
||||
|
||||
else if (rof_slot.Slot == invslot::SLOT_INVALID) {
|
||||
server_slot = EQEmu::invslot::SLOT_TRADESKILL_EXPERIMENT_COMBINE;
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
+15
-9
@@ -5299,11 +5299,7 @@ namespace RoF2
|
||||
DECODE_LENGTH_EXACT(structs::NewCombine_Struct);
|
||||
SETUP_DIRECT_DECODE(NewCombine_Struct, structs::NewCombine_Struct);
|
||||
|
||||
int16 slot_id = RoF2ToServerSlot(eq->container_slot);
|
||||
if (slot_id == 4000) {
|
||||
slot_id = EQEmu::legacy::SLOT_TRADESKILL; // 1000
|
||||
}
|
||||
emu->container_slot = slot_id;
|
||||
emu->container_slot = RoF2ToServerSlot(eq->container_slot);
|
||||
emu->guildtribute_slot = RoF2ToServerSlot(eq->guildtribute_slot); // this should only return INVALID_INDEX until implemented
|
||||
|
||||
FINISH_DIRECT_DECODE();
|
||||
@@ -5887,6 +5883,10 @@ namespace RoF2
|
||||
RoF2Slot.Slot = server_slot - EQEmu::invslot::GUILD_TRIBUTE_BEGIN;
|
||||
}
|
||||
|
||||
else if (server_slot == EQEmu::invslot::SLOT_TRADESKILL_EXPERIMENT_COMBINE) {
|
||||
RoF2Slot.Type = invtype::typeWorld;
|
||||
}
|
||||
|
||||
else if (server_slot <= EQEmu::invslot::BANK_END && server_slot >= EQEmu::invslot::BANK_BEGIN) {
|
||||
RoF2Slot.Type = invtype::typeBank;
|
||||
RoF2Slot.Slot = server_slot - EQEmu::invslot::BANK_BEGIN;
|
||||
@@ -6071,9 +6071,12 @@ namespace RoF2
|
||||
break;
|
||||
}
|
||||
case invtype::typeWorld: {
|
||||
server_slot = EQEmu::invslot::WORLD_BEGIN; // evidently, [4,-1,-1,-1] is sent when world object is in experimental mode and combine is clicked
|
||||
if (rof2_slot.Slot >= invslot::SLOT_BEGIN && rof2_slot.Slot < invtype::WORLD_SIZE) {
|
||||
server_slot += rof2_slot.Slot;
|
||||
server_slot = EQEmu::invslot::WORLD_BEGIN + rof2_slot.Slot;
|
||||
}
|
||||
|
||||
else if (rof2_slot.Slot == invslot::SLOT_INVALID) {
|
||||
server_slot = EQEmu::invslot::SLOT_TRADESKILL_EXPERIMENT_COMBINE;
|
||||
}
|
||||
|
||||
break;
|
||||
@@ -6222,9 +6225,12 @@ namespace RoF2
|
||||
break;
|
||||
}
|
||||
case invtype::typeWorld: {
|
||||
ServerSlot = EQEmu::invslot::WORLD_BEGIN; // evidently, [4,-1,-1,-1] is sent when world object is in experimental mode and combine is clicked
|
||||
if (rof2_slot.Slot >= invslot::SLOT_BEGIN && rof2_slot.Slot < invtype::WORLD_SIZE) {
|
||||
ServerSlot += rof2_slot.Slot;
|
||||
ServerSlot = EQEmu::invslot::WORLD_BEGIN + rof2_slot.Slot;
|
||||
}
|
||||
|
||||
else if (rof2_slot.Slot == invslot::SLOT_INVALID) {
|
||||
ServerSlot = EQEmu::invslot::SLOT_TRADESKILL_EXPERIMENT_COMBINE;
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
@@ -3809,6 +3809,10 @@ namespace SoD
|
||||
SoDSlot = serverSlot;
|
||||
}
|
||||
|
||||
else if (serverSlot == EQEmu::invslot::SLOT_TRADESKILL_EXPERIMENT_COMBINE) {
|
||||
SoDSlot = serverSlot;
|
||||
}
|
||||
|
||||
else if (serverSlot <= EQEmu::invslot::BANK_END && serverSlot >= EQEmu::invslot::BANK_BEGIN) {
|
||||
SoDSlot = serverSlot;
|
||||
}
|
||||
@@ -3887,6 +3891,10 @@ namespace SoD
|
||||
server_slot = sod_slot;
|
||||
}
|
||||
|
||||
else if (sod_slot == invslot::SLOT_TRADESKILL_EXPERIMENT_COMBINE) {
|
||||
server_slot = sod_slot;
|
||||
}
|
||||
|
||||
else if (sod_slot <= invslot::BANK_END && sod_slot >= invslot::BANK_BEGIN) {
|
||||
server_slot = sod_slot;
|
||||
}
|
||||
|
||||
@@ -150,6 +150,8 @@ namespace SoD
|
||||
const int16 SLOT_INVALID = IINVALID;
|
||||
const int16 SLOT_BEGIN = INULL;
|
||||
|
||||
const int16 SLOT_TRADESKILL_EXPERIMENT_COMBINE = 1000;
|
||||
|
||||
const int16 POSSESSIONS_BEGIN = slotCharm;
|
||||
const int16 POSSESSIONS_END = slotCursor;
|
||||
const int16 POSSESSIONS_COUNT = (POSSESSIONS_END - POSSESSIONS_BEGIN) + 1;
|
||||
|
||||
@@ -3199,6 +3199,10 @@ namespace SoF
|
||||
sof_slot = server_slot;
|
||||
}
|
||||
|
||||
else if (server_slot == EQEmu::invslot::SLOT_TRADESKILL_EXPERIMENT_COMBINE) {
|
||||
sof_slot = server_slot;
|
||||
}
|
||||
|
||||
else if (server_slot <= EQEmu::invslot::BANK_END && server_slot >= EQEmu::invslot::BANK_BEGIN) {
|
||||
sof_slot = server_slot;
|
||||
}
|
||||
@@ -3281,6 +3285,10 @@ namespace SoF
|
||||
server_slot = sof_slot;
|
||||
}
|
||||
|
||||
else if (sof_slot == invslot::SLOT_TRADESKILL_EXPERIMENT_COMBINE) {
|
||||
server_slot = sof_slot;
|
||||
}
|
||||
|
||||
else if (sof_slot <= invslot::BANK_END && sof_slot >= invslot::BANK_BEGIN) {
|
||||
server_slot = sof_slot;
|
||||
}
|
||||
@@ -3505,4 +3513,4 @@ namespace SoF
|
||||
// we're a normal buff
|
||||
return index; // as long as we guard against bad slots server side, we should be fine
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -150,6 +150,8 @@ namespace SoF
|
||||
const int16 SLOT_INVALID = IINVALID;
|
||||
const int16 SLOT_BEGIN = INULL;
|
||||
|
||||
const int16 SLOT_TRADESKILL_EXPERIMENT_COMBINE = 1000;
|
||||
|
||||
const int16 POSSESSIONS_BEGIN = slotCharm;
|
||||
const int16 POSSESSIONS_END = slotCursor;
|
||||
const int16 POSSESSIONS_COUNT = (POSSESSIONS_END - POSSESSIONS_BEGIN) + 1;
|
||||
|
||||
@@ -2504,6 +2504,9 @@ namespace Titanium
|
||||
server_slot >= EQEmu::invslot::GUILD_TRIBUTE_BEGIN) {
|
||||
titanium_slot = server_slot;
|
||||
}
|
||||
else if (server_slot == EQEmu::invslot::SLOT_TRADESKILL_EXPERIMENT_COMBINE) {
|
||||
titanium_slot = server_slot;
|
||||
}
|
||||
else if (server_slot <= EQEmu::invslot::BANK_END && server_slot >= EQEmu::invslot::BANK_BEGIN) {
|
||||
titanium_slot = server_slot;
|
||||
}
|
||||
@@ -2586,6 +2589,9 @@ namespace Titanium
|
||||
else if (titanium_slot <= invslot::TRIBUTE_END && titanium_slot >= invslot::TRIBUTE_BEGIN) {
|
||||
server_slot = titanium_slot;
|
||||
}
|
||||
else if (titanium_slot == invslot::SLOT_TRADESKILL_EXPERIMENT_COMBINE) {
|
||||
server_slot = titanium_slot;
|
||||
}
|
||||
else if (titanium_slot <= invslot::GUILD_TRIBUTE_END && titanium_slot >= invslot::GUILD_TRIBUTE_BEGIN) {
|
||||
server_slot = titanium_slot;
|
||||
}
|
||||
|
||||
@@ -149,6 +149,8 @@ namespace Titanium
|
||||
const int16 SLOT_INVALID = IINVALID;
|
||||
const int16 SLOT_BEGIN = INULL;
|
||||
|
||||
const int16 SLOT_TRADESKILL_EXPERIMENT_COMBINE = 1000;
|
||||
|
||||
const int16 POSSESSIONS_BEGIN = slotCharm;
|
||||
const int16 POSSESSIONS_END = slotCursor;
|
||||
const int16 POSSESSIONS_COUNT = (POSSESSIONS_END - POSSESSIONS_BEGIN) + 1;
|
||||
|
||||
@@ -4168,6 +4168,10 @@ namespace UF
|
||||
UFSlot = serverSlot;
|
||||
}
|
||||
|
||||
else if (serverSlot == EQEmu::invslot::SLOT_TRADESKILL_EXPERIMENT_COMBINE) {
|
||||
UFSlot = serverSlot;
|
||||
}
|
||||
|
||||
else if (serverSlot <= EQEmu::invslot::BANK_END && serverSlot >= EQEmu::invslot::BANK_BEGIN) {
|
||||
UFSlot = serverSlot;
|
||||
}
|
||||
@@ -4246,6 +4250,10 @@ namespace UF
|
||||
ServerSlot = ufSlot;
|
||||
}
|
||||
|
||||
else if (ufSlot == invslot::SLOT_TRADESKILL_EXPERIMENT_COMBINE) {
|
||||
ServerSlot = ufSlot;
|
||||
}
|
||||
|
||||
else if (ufSlot <= invslot::BANK_END && ufSlot >= invslot::BANK_BEGIN) {
|
||||
ServerSlot = ufSlot;
|
||||
}
|
||||
|
||||
@@ -150,6 +150,8 @@ namespace UF
|
||||
const int16 SLOT_INVALID = IINVALID;
|
||||
const int16 SLOT_BEGIN = INULL;
|
||||
|
||||
const int16 SLOT_TRADESKILL_EXPERIMENT_COMBINE = 1000;
|
||||
|
||||
const int16 POSSESSIONS_BEGIN = slotCharm;
|
||||
const int16 POSSESSIONS_END = slotCursor;
|
||||
const int16 POSSESSIONS_COUNT = (POSSESSIONS_END - POSSESSIONS_BEGIN) + 1;
|
||||
|
||||
Reference in New Issue
Block a user