Skip to content

AGENT_CHARACTER_EXP_UPDATE

DummkopfOfHachtenduden edited this page Oct 10, 2021 · 3 revisions

0x3056 - SERVER_AGENT_CHARACTER_EXP_UPDATE

4   uint    dwGID   // where particles come from
8   ulong   gainedExpPoint
8   ulong   gainedSExpPoint

// (MSB)                       (LSB)
// | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
// |  Accumulated  |   Cumulated   |
1   byte    tcBuffUpdateFlag
if((tcBuffUpdateFlag & TCBuffUpdateMask.Cumulated) == 1)
{
    4   uint    CumulatedSize
}
if((tcBuffUpdateFlag & TCBuffUpdateMask.Accumulated) == 1 << 4)
// or if(((tcBuffUpdateFlag & TCBuffUpdateMask.Accumulated) >> 4) == 1)
{
    4   uint    Source.CharID // Acquire name from TrainingCampInfo
    4   uint    AccumulatedSize
}
if(Character.CurrentExp + gainedExpPoint > requiredExpForCurrentLevel) // requires leveldata.txt
{
    // Calculate the new current level & experience here.
    2   ushort  STP // stat points
}

[Flags]
public enum TCBuffUpdateMask : byte
{
    Cumulated = 0x0F,   // 0000 1111
    Accumulated = 0xF0, // 1111 0000
}
Clone this wiki locally