Thanks
The place I am working has to do with combat damage.
OP_Damage=0x5c78
Code:
struct CombatDamage_Struct
{
/* 00 */ int16 target;
/* 02 */ int16 source;
/* 04 */ int8 type; //slashing, etc. 231 (0xE7) for spells
/* 05 */ int16 spellid;
/* 07 */ int32 damage;
/* 11 */ int32 unknown11;
/* 15 */ int32 sequence;
/* 19 */ int32 unknown19;
/* 23 */
};
It turns out for combat damage when this packet is not paired with an action packet, the push due to melee is embedded in the sequence. That is what I am working on decoding. I just need to get more data from live. I made some test code, with known values for the sequence taken from live and could just push a client all over the place. But as this value varies, so does the direction of the push. I just have not got any time in the last week to play with it and get more data.
The cool place to play with on live, is in the water like in kedge keep. Because every hit contains the parts that cause push. On land, it is random when the push packet part is sent. But the magnitudes are same as in the water. But it will send the push, even on misses. But on a miss, when the code is sent, it does not cause push. Because the push is only 0.1 distance about, the client does not send updates until it has moved you a distance of 1 or somewhere there about. So you can do your own /loc after each hit, to see it move you.
Thats what I hope to get time to mess with in next few days. I will have one of the fishies in kedge push me in a circle. I think it is heading embedded in there. I tried nulling x movement and pushing +/- y directions, then vice versa, and the bit structures did not indicate it was sending x and y values. One attempt failed, but still working on it.
If you use hex-rays to make pseudocode, you can find
Code:
int8 type; //slashing, etc. 231 (0xE7) for spells
some places where there are checks for the type to be less than 0xE7, which would indicate combat based types. And I have been following the handling of those through the code. Or attempting that is.
Haynar