@Override
protected final void writeImpl()
{
if (!can_writeImpl)
return;
writeC(ServerPacket.NpcInfo);
writeD(_npcObjId);
writeD(_npcId + 1000000); // npctype id c4
writeD(_isAttackable ? 1 : 0);
writeD(_loc.x);
writeD(_loc.y);
writeD(_loc.z + Config.CLIENT_Z_SHIFT);
writeD(_loc.h);
writeD(0x00);
writeD(_mAtkSpd);
writeD(_pAtkSpd);
writeD(_runSpd);
writeD(_walkSpd);
writeD(_runSpd /* _swimRunSpd *//* 0x32 */); // swimspeed
writeD(_walkSpd/* _swimWalkSpd *//* 0x32 */); // swimspeed
writeD(_runSpd/* _flRunSpd */);
writeD(_walkSpd/* _flWalkSpd */);
writeD(_runSpd/* _flyRunSpd */);
writeD(_walkSpd/* _flyWalkSpd */);
writeF(speed_move);
writeF(speed_atack);
writeF(colRadius);
writeF(colHeight);
writeD(_rhand); // right hand weapon
writeD(0); // TODO chest
writeD(_lhand); // left hand weapon
writeC(_isNameAbove ? 1 : 0); // 2.2: name above char 1=true ... ??;
// 2.3: 1 - normal, 2 - dead
writeC(running);
writeC(incombat);
writeC(dead);
writeC(_showSpawnAnimation); // invisible ?? 0=false 1=true 2=summoned
// (only works if model has a summon
// animation)
writeD(_nameNpcString.getId());
writeS(_name);
writeD(_titleNpcString.getId());
writeS(_title);
writeD(_titleColor);
writeD(pvp_flag);
writeD(karma); // hmm karma ??
writeD(clan_id);
writeD(clan_crest_id);
writeD(ally_id);
writeD(ally_crest_id);
writeD(0x00);//што это?
writeC(isFlying ? 2 : 0); // C2
writeC(_team.ordinal()); // team aura 1-blue, 2-red
writeF(currentColRadius);
writeF(currentColHeight);
writeD(_enchantEffect); // C4
writeD(flyState); //у окто тут 3
writeD(_clone);//objectId призывателя если является клоном
writeD(_formId);
writeC(_canTarget ? 0x01 : 0x00); // show name
writeC(_showName ? 0x01 : 0x00); // show title
writeD(_state);
writeD(_transformId);
writeD(_HP);
writeD(_maxHP);
writeD(_MP);
writeD(_maxMP);
writeC(_isClone);//тип клона 1 == приманка, 2 = клон у ножа
writeD(followTargetScriptObjId);//TODO на октависе привязывается так
writeD(followTargetScriptRange);//TODO рендж до нее
writeD(0);//TODO пока неизвестно
writeF(model_size);//размер модели
if (_aveList != null)
{
writeD(_aveList.size());
for (int i : _aveList)
{
writeD(i);
}
}
else
{
writeD(0x00);
}
}