mirror of
https://github.com/EQEmu/Server.git
synced 2026-06-13 06:48:20 +00:00
Validated up to OP_MemorizeSpell (still needs testing in client)
This commit is contained in:
@@ -957,6 +957,23 @@ namespace TOB
|
|||||||
FINISH_ENCODE();
|
FINISH_ENCODE();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ENCODE(OP_MemorizeSpell) {
|
||||||
|
ENCODE_LENGTH_EXACT(MemorizeSpell_Struct);
|
||||||
|
SETUP_DIRECT_ENCODE(MemorizeSpell_Struct, structs::MemorizeSpell_Struct);
|
||||||
|
|
||||||
|
// TODO: TOB has a "finish memming" value (2) here, might be needed to keep client spell gems in sync
|
||||||
|
if (emu->scribing == 2)
|
||||||
|
eq->scribing = 3;
|
||||||
|
else
|
||||||
|
OUT(scribing);
|
||||||
|
|
||||||
|
OUT(slot);
|
||||||
|
OUT(spell_id);
|
||||||
|
OUT(reduction);
|
||||||
|
|
||||||
|
FINISH_ENCODE();
|
||||||
|
}
|
||||||
|
|
||||||
ENCODE(OP_MobHealth) {
|
ENCODE(OP_MobHealth) {
|
||||||
ENCODE_LENGTH_EXACT(SpawnHPUpdate_Struct2);
|
ENCODE_LENGTH_EXACT(SpawnHPUpdate_Struct2);
|
||||||
SETUP_DIRECT_ENCODE(SpawnHPUpdate_Struct2, structs::MobHealth_Struct);
|
SETUP_DIRECT_ENCODE(SpawnHPUpdate_Struct2, structs::MobHealth_Struct);
|
||||||
@@ -3821,6 +3838,23 @@ namespace TOB
|
|||||||
DECODE_FORWARD(OP_GroupInvite);
|
DECODE_FORWARD(OP_GroupInvite);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DECODE(OP_MemorizeSpell) {
|
||||||
|
DECODE_LENGTH_EXACT(structs::MemorizeSpell_Struct);
|
||||||
|
SETUP_DIRECT_DECODE(MemorizeSpell_Struct, structs::MemorizeSpell_Struct);
|
||||||
|
|
||||||
|
// TODO: TOB has a "finish memming" value (2) here, might be needed to keep client spell gems in sync
|
||||||
|
if (emu->scribing == 3)
|
||||||
|
eq->scribing = 2;
|
||||||
|
else
|
||||||
|
IN(scribing);
|
||||||
|
|
||||||
|
IN(slot);
|
||||||
|
IN(spell_id);
|
||||||
|
IN(reduction);
|
||||||
|
|
||||||
|
FINISH_DIRECT_DECODE();
|
||||||
|
}
|
||||||
|
|
||||||
DECODE(OP_MoveItem)
|
DECODE(OP_MoveItem)
|
||||||
{
|
{
|
||||||
DECODE_LENGTH_EXACT(structs::MoveItem_Struct);
|
DECODE_LENGTH_EXACT(structs::MoveItem_Struct);
|
||||||
|
|||||||
@@ -33,6 +33,7 @@ E(OP_Illusion)
|
|||||||
E(OP_ItemPacket)
|
E(OP_ItemPacket)
|
||||||
E(OP_LogServer)
|
E(OP_LogServer)
|
||||||
E(OP_ManaChange)
|
E(OP_ManaChange)
|
||||||
|
E(OP_MemorizeSpell)
|
||||||
E(OP_MobHealth)
|
E(OP_MobHealth)
|
||||||
E(OP_MoneyOnCorpse)
|
E(OP_MoneyOnCorpse)
|
||||||
E(OP_MoveItem)
|
E(OP_MoveItem)
|
||||||
@@ -84,6 +85,7 @@ D(OP_GMTraining)
|
|||||||
D(OP_GroupDisband)
|
D(OP_GroupDisband)
|
||||||
D(OP_GroupInvite)
|
D(OP_GroupInvite)
|
||||||
D(OP_GroupInvite2)
|
D(OP_GroupInvite2)
|
||||||
|
D(OP_MemorizeSpell)
|
||||||
D(OP_MoveItem)
|
D(OP_MoveItem)
|
||||||
D(OP_RemoveBlockedBuffs)
|
D(OP_RemoveBlockedBuffs)
|
||||||
D(OP_SetServerFilter)
|
D(OP_SetServerFilter)
|
||||||
|
|||||||
@@ -675,11 +675,18 @@ namespace TOB {
|
|||||||
/*000*/ uint32 spell_id;
|
/*000*/ uint32 spell_id;
|
||||||
/*004*/ uint16 caster_id;
|
/*004*/ uint16 caster_id;
|
||||||
/*006*/ uint32 cast_time; // in miliseconds
|
/*006*/ uint32 cast_time; // in miliseconds
|
||||||
/*010*/ uint32 unknown0a; // I think this is caster effective level but im not sure. live always sends 0
|
/*010*/ uint32 unknown0a; // I think this is caster effective level but im not sure. live always sends 0. The client uses this for the spell link
|
||||||
/*014*/ uint8 unknown0e; // 0 will short circuit the cast, seen 1 from live usually, maybe related to interrupts or particles or something
|
/*014*/ uint8 unknown0e; // 0 will short circuit the cast, seen 1 from live usually, maybe related to interrupts or particles or something
|
||||||
/*015*/
|
/*015*/
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct MemorizeSpell_Struct {
|
||||||
|
uint32 slot; // Spot in the spell book/memorized slot
|
||||||
|
uint32 spell_id; // Spell id (200 or c8 is minor healing, etc)
|
||||||
|
uint32 scribing; // -1 refreshes book, 0 scribe to book, 2 end mem, 1 start mem, 3 unmem, 4 set activated item keyring -- client will send back 2 if a 0 operation updated a memorized spell of the same group + subgroup
|
||||||
|
uint32 reduction; // lower reuse (only used if scribing is 4)
|
||||||
|
};
|
||||||
|
|
||||||
//I've observed 5 s16 that are all -1.
|
//I've observed 5 s16 that are all -1.
|
||||||
//Clicky items don't even trigger this as far as i can tell so not sure what this is for now.
|
//Clicky items don't even trigger this as far as i can tell so not sure what this is for now.
|
||||||
//One of these could have changed to a s32 but im not sure.
|
//One of these could have changed to a s32 but im not sure.
|
||||||
|
|||||||
+5
-5
@@ -63,7 +63,7 @@ Below is a status list for the 450 opcodes we currently use on the server for th
|
|||||||
| `OP_BecomeCorpse` | 🔴 Not-Set | | |
|
| `OP_BecomeCorpse` | 🔴 Not-Set | | |
|
||||||
| `OP_BecomeTrader` | 🔴 Not-Set | | |
|
| `OP_BecomeTrader` | 🔴 Not-Set | | |
|
||||||
| `OP_Begging` | 🟡 Unverified | | |
|
| `OP_Begging` | 🟡 Unverified | | |
|
||||||
| `OP_BeginCast` | 🟡 Unverified | | |
|
| `OP_BeginCast` | 🟢 Verified | | |
|
||||||
| `OP_Bind_Wound` | 🟡 Unverified | | |
|
| `OP_Bind_Wound` | 🟡 Unverified | | |
|
||||||
| `OP_BlockedBuffs` | 🟢 Verified | | |
|
| `OP_BlockedBuffs` | 🟢 Verified | | |
|
||||||
| `OP_BoardBoat` | 🟡 Unverified | | |
|
| `OP_BoardBoat` | 🟡 Unverified | | |
|
||||||
@@ -103,14 +103,14 @@ Below is a status list for the 450 opcodes we currently use on the server for th
|
|||||||
| `OP_ClientUpdate` | 🟢 Verified | | |
|
| `OP_ClientUpdate` | 🟢 Verified | | |
|
||||||
| `OP_CloseContainer` | 🔴 Not-Set | | |
|
| `OP_CloseContainer` | 🔴 Not-Set | | |
|
||||||
| `OP_CloseTributeMaster` | 🔴 Not-Set | | |
|
| `OP_CloseTributeMaster` | 🔴 Not-Set | | |
|
||||||
| `OP_ColoredText` | 🟡 Unverified | | |
|
| `OP_ColoredText` | 🟢 Verified | | |
|
||||||
| `OP_CombatAbility` | 🟡 Unverified | | |
|
| `OP_CombatAbility` | 🟡 Unverified | | |
|
||||||
| `OP_Command` | 🔴 Not-Set | | |
|
| `OP_Command` | 🔴 Not-Set | | |
|
||||||
| `OP_CompletedTasks` | 🔴 Not-Set | | |
|
| `OP_CompletedTasks` | 🔴 Not-Set | | |
|
||||||
| `OP_ConfirmDelete` | 🟡 Unverified | | |
|
| `OP_ConfirmDelete` | 🟡 Unverified | | |
|
||||||
| `OP_Consent` | 🟡 Unverified | | |
|
| `OP_Consent` | 🟡 Unverified | | |
|
||||||
| `OP_ConsentDeny` | 🟡 Unverified | | |
|
| `OP_ConsentDeny` | 🟡 Unverified | | |
|
||||||
| `OP_ConsentResponse` | 🟡 Unverified | | |
|
| `OP_ConsentResponse` | 🟢 Verified | | |
|
||||||
| `OP_Consider` | 🟡 Unverified | | |
|
| `OP_Consider` | 🟡 Unverified | | |
|
||||||
| `OP_ConsiderCorpse` | 🟡 Unverified | | |
|
| `OP_ConsiderCorpse` | 🟡 Unverified | | |
|
||||||
| `OP_Consume` | 🟡 Unverified | | |
|
| `OP_Consume` | 🟡 Unverified | | |
|
||||||
@@ -351,7 +351,7 @@ Below is a status list for the 450 opcodes we currently use on the server for th
|
|||||||
| `OP_MarkNPC` | 🔴 Not-Set | | |
|
| `OP_MarkNPC` | 🔴 Not-Set | | |
|
||||||
| `OP_MarkRaidNPC` | 🔴 Not-Set | | |
|
| `OP_MarkRaidNPC` | 🔴 Not-Set | | |
|
||||||
| `OP_Marquee` | 🟡 Unverified | | |
|
| `OP_Marquee` | 🟡 Unverified | | |
|
||||||
| `OP_MemorizeSpell` | 🟡 Unverified | | |
|
| `OP_MemorizeSpell` | 🟢 Verified | | |
|
||||||
| `OP_Mend` | 🟡 Unverified | | |
|
| `OP_Mend` | 🟡 Unverified | | |
|
||||||
| `OP_MendHPUpdate` | 🔴 Not-Set | | |
|
| `OP_MendHPUpdate` | 🔴 Not-Set | | |
|
||||||
| `OP_MercenaryAssign` | 🔴 Not-Set | | |
|
| `OP_MercenaryAssign` | 🔴 Not-Set | | |
|
||||||
@@ -435,7 +435,7 @@ Below is a status list for the 450 opcodes we currently use on the server for th
|
|||||||
| `OP_PVPLeaderBoardRequest` | 🔴 Not-Set | | |
|
| `OP_PVPLeaderBoardRequest` | 🔴 Not-Set | | |
|
||||||
| `OP_PVPStats` | 🔴 Not-Set | | |
|
| `OP_PVPStats` | 🔴 Not-Set | | |
|
||||||
| `OP_QueryResponseThing` | 🔴 Not-Set | | |
|
| `OP_QueryResponseThing` | 🔴 Not-Set | | |
|
||||||
| `OP_QueryUCSServerStatus` | 🟡 Unverified | | |
|
| `OP_QueryUCSServerStatus` | 🟢 Verified | | |
|
||||||
| `OP_RaidDelegateAbility` | 🔴 Not-Set | | |
|
| `OP_RaidDelegateAbility` | 🔴 Not-Set | | |
|
||||||
| `OP_RaidClearNPCMarks` | 🔴 Not-Set | | |
|
| `OP_RaidClearNPCMarks` | 🔴 Not-Set | | |
|
||||||
| `OP_RaidInvite` | 🔴 Not-Set | | |
|
| `OP_RaidInvite` | 🔴 Not-Set | | |
|
||||||
|
|||||||
@@ -12239,6 +12239,9 @@ void Client::Handle_OP_QueryUCSServerStatus(const EQApplicationPacket *app)
|
|||||||
case EQ::versions::ClientVersion::RoF2:
|
case EQ::versions::ClientVersion::RoF2:
|
||||||
ConnectionType = EQ::versions::ucsRoF2Combined;
|
ConnectionType = EQ::versions::ucsRoF2Combined;
|
||||||
break;
|
break;
|
||||||
|
case EQ::versions::ClientVersion::TOB:
|
||||||
|
ConnectionType = EQ::versions::ucsTOBCombined;
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
ConnectionType = EQ::versions::ucsUnknown;
|
ConnectionType = EQ::versions::ucsUnknown;
|
||||||
break;
|
break;
|
||||||
|
|||||||
Reference in New Issue
Block a user